#1 2025-04-17 13:43:53

jokeR
Учасник
Зареєстрований: 2024-12-12
Повідомлень: 69

Лінійний сервопривід

Оце надумався зробити в теплиці автоматику, щоб вікно само відкривалось і закривалось. Готовий потужний привід коштує як пів теплиці, тому вирішив спробувати запиляти замостійно.
Ні токарного верстата ні 3Д прінтера немає, є шуруповерт, болгарка, зварювальний апарат і Епіцентр з безкоштовною доставкою wink
photo_2025-04-17_12-56-07.jpg

В Епіку замовив трубу 25х1.5 мм - в неї ідеально стає підшипник, 20х1.5 мм, підшипник 608 ZZ, шпильку М8 (здогадуюсь, що різьба трохи не така, але що маємо те маємо), вварні гайки. Стопорні кільця для підшипника вирізав з тієї ж труби 25 мм - відрізав сегмент 10 мм і вирівняв. Одне кільце вварив, інше - фіксується гвинтами М3. Квадратну втулку зварив з квадратної труби 16 мм, магніт зафіксував термоусадкою. Щоб шпилька не прокручувалась у втулці - зробив лиску. Гайки на шпильці зафіксував фіксатором різьби.

Мотор-редуктор склопідіймача ВАЗ - з ОЛХ.

Неодимовий магніт, мікрик, датчик Холла (аналоговий) - arduino.ua.

Чутливості датчика досить, незважаючи на метал кругом - напруга міняється від 1.5 до 2.5 В.

Можна писати код. Too bee contiiinue.. smile

Неактивний

#2 2025-05-07 10:37:12

jokeR
Учасник
Зареєстрований: 2024-12-12
Повідомлень: 69

Re: Лінійний сервопривід

Продовження wink
Для управління моторчиком планував використати модуль MC33886, але, на жаль, трапився бракований. Тому довелось придумувати свою реалізацію Н-мосту з того, що знайшлось у коробці. У коробці знайшлись малопотужні релюшки HK4100F. Китайці обіцяють струм 3А, але, мені здається, що з індуктивним навантаженням вони довго не протягнуть. Тому придумав такий лайфхак - комутацію релюшками робити з відключеною напругою, а напругу подавати окремим ключем з невеликою затримкою. Тим же ключем можна робити плавний старт. Так, можна накрафтити і H-міст повністю на mosfet'ах.. Але це буде трохи складніше, а для моєї саморобки не має особливого смислу.
Замість контроллера взяв ESP32-C3. Цікава штука, хто не пробував - рекомендую. Після цього Arduino Nano - якийсь артефакт із минулого wink. Дофіга пам"яті, дофіга флешки, WiFi, можна обновляти прошивку без проводів, дебаг прямо з IDE.. Але є і деякі неочевидні речі. По перше, антена. Вона припаяна з порушенням всіх норм міжнародного права і здорового глузду sad Щоб радіо працювало більш стабільно, треба припаяти до антени кусок проводу довжиною 31 мм (гуглиться). Інші методи у мене не спрацювали. Окремого конвертора USB-UART, як на Arduino, тут немає. Якщо хочеться бачити логи - підключаємо свій. Наче є спосіб задіяти вбудований в чіп USB-CDC, але можливо це зламає on chip debug.. не пробував.
Була ідея ловити пропадання напруги живлення, і, поки є енергія в конденсаторах, зберігати налаштування програми на флешку.. Але завади від мотора досить інтенсивні, багато false positive.. Поки не придумав рішення.

actuator.png

Неактивний

#3 2025-05-07 12:54:40

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 393

Re: Лінійний сервопривід

jokeR пише:

Тому придумав такий лайфхак - комутацію релюшками робити з відключеною напругою, а напругу подавати окремим ключем з невеликою затримкою.

Це стандартна практика при механічній комутації силових ліній. Ніяких розмикань під струмом, ніяких замикань під напругою. Розмикання під струмом тільки в разі аварійного відключення.
В критичних застосуваннях ще й тест на залипання контактів. Але для вашого проекту це, мабуть, зайве smile

jokeR пише:

Була ідея ловити пропадання напруги живлення, і, поки є енергія в конденсаторах, зберігати налаштування програми на флешку.. Але завади від мотора досить інтенсивні, багато false positive.. Поки не придумав рішення.

Дуже приблизна оцінка порядку величин: ESP32 в активному режимі споживає біля 20 мА (а вона скоріш за все буде в активному, бо потрібно читати ADC і писати на флешку). Ємності 3000 мкФ після діода при падінні напруги з 5 В (не з 12, бо LM7805 зʼїдає 7 вольт) до 3 В (берем як мінімум для ESP32) має вистачити десь на 300 мс. Теоретично можна встигнути. Але це дуже оптимістична оцінка. Якщо працює вайфай, споживання ESP32 може бути в 3-4 рази більше. Якщо замкенене реле, це ще +30 мА.

12 вольт іде з мережевого БЖ? Я б запропонував детектити наявність напруги AC мережі. Баластний конденсатор + 814 оптопара (або 817 паралельно з діодом). Тоді в запасі вся ємність БЖ, в тому числі й високовольтна.

А взагалі, моя особиста думка, автоматичне збереження налаштувань - це зайве. Кнопка чи пункт меню "зберегти" - простіше, надійніше та зрозуміліше. Звісно, в деяких випадках аварійне збереження поточного стану системи необхідне, але не для користувацьких налаштувань.

Неактивний

#4 2025-05-07 13:04:47

jokeer
Гість

Re: Лінійний сервопривід

Зберігати положення приводу непогано було б. Є ще дивна ідея зберігання в retain message в mqtt wink

#5 2025-05-07 13:40:43

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 393

Re: Лінійний сервопривід

jokeer пише:

Зберігати положення приводу непогано було б.

Це, мабуть, потрібно краще розуміти логіку роботи системи. Бо як розумію на даний момент, є два положення: вікно відчинене, вікно зачинене. Відчиняється або зачиняється в залежності від поточної температури? Яке тут положення приводу?
Якщо на старті алгоритм потребує, щоб система була в детермінованому стані, то можна привести її в початковий стан безумовно, наприклад, вікно закрите. А далі нехай працює алгоритм.

jokeer пише:

Є ще дивна ідея зберігання в retain message в mqtt wink

Ще ідеї, щоб зберігати при кожній зміні, а не тільки при зникненні живлення: якщо раптом надумаєте ставити RTC з батарейкою, то зазвичай там є кілька десятків байтів CMOS-памʼяті. Або зберігати в зовнішню FRAM smile

PS: соррі, не розумію, jokeR та jokeer (Гість) - це одна і та ж особа, чи ні.

Неактивний

#6 2025-05-07 14:08:01

jokeer
Гість

Re: Лінійний сервопривід

Та сама, але з телефону wink

Чому бажано знати положення приводу? Кінцевик один (не хочеться жмута проводів), і якщо не знаєш, в якому положенні воно ввімкнулось, є шанс відкрити більше ніж потрібно.  В принципі, світло зникає не так часто, можна дійсно починати з закривання і не паритись wink
Зберігати кожний оберт якось параноїдально, і флешку не хочеться деградувати
А RTC то явно лишнє wink

#7 2025-05-07 15:11:26

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 393

Re: Лінійний сервопривід

jokeer пише:

Кінцевик один (не хочеться жмута проводів)

А, тепер зрозумів.
Як варіант - сам датчик на рухомій частині, а магніти в крайніх стаціонарних положеннях.
Ще варіант без кінцевика - моніторити струм двигуна. Але може знадобитись фрікцион. Бо якщо момент у двигуна великий, та ще й червʼячна передача, то поки система зреагує на зростання струму, може встигнути щось поламати.

Неактивний

#8 2025-05-07 16:59:58

jokeer
Гість

Re: Лінійний сервопривід

>> датчик на рухомій частині, а магніти в крайніх стаціонарних положеннях

прикольна ідея wink але трохи не зрозуміло як це зробити в цій конструкції.

>>моніторити струм двигуна.

Робив таке з двигуном від приводу Старлінка, нормально вийшло. Але тут 2 черв'ячні редуктори. Дуже мале передаточне число і дуже велике зусилля.

>> фрікцион

я зварювальник  ненастоящий smile

#9 Вчора 20:16:02

jokeR
Учасник
Зареєстрований: 2024-12-12
Повідомлень: 69

Re: Лінійний сервопривід

має вистачити десь на 300 мс. Теоретично можна встигнути. Але це дуже оптимістична оцінка

    unsigned long start = millis();
    prefs.begin("actuator", false);
    prefs.putInt("position", position);
    prefs.end();
    ets_printf("actuator save time: %drn", millis() - start);
    position_changed = false;

Встигає за 1 мс wink ESP32 капєц швидка штука wink Нраіцца.

А зберігати в MQTT дійсно можна. Це працює, але без гарантій. Якщо wifi відвалиться - упсь.

Неактивний

#10 Вчора 22:01:11

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 393

Re: Лінійний сервопривід

jokeR пише:

Встигає за 1 мс wink ESP32 капєц швидка штука wink

Та справа ж не у швидкодії процесора. Записати кілька байтів у регістри - це і на atmega займає мікросекунди. А фактичний запис байта в EEPROM - 3.4 мс (1.8 мс, якщо без стирання).

Тут же важливий проміжок часу між виникненням зовнішньої події (падіння напруги нижче заданного рівня) і завершенням запису на фізичному рівні. А він залежить від купи різних факторів.

Якщо для моніторингу використовується компаратор, який генерує переривання - це одне (я не в курсі, чи є такий в ESP32). Якщо періодично читається АЦП - це інше. Впливатиме, з якою частотою йде опитування, чи задіяно паралельно інші канали, чи виконуються інші задачі, які пріорітети у задач (якщо це RTOS).

ESP32 пише на зовнішню флешку, підʼєднану по SPI. Впливатиме, чи будуть в черзі інші SPI транзакції, чи встигла флешка закінчити попередню операцію. У типової XM25QH32C запис сторінки - 0.5 мс, але якщо для запису потрібно стерти сектор - це вже 50 мс.

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму