Ви не увійшли.
Сторінки 1
Оце надумався зробити в теплиці автоматику, щоб вікно само відкривалось і закривалось. Готовий потужний привід коштує як пів теплиці, тому вирішив спробувати запиляти замостійно.
Ні токарного верстата ні 3Д прінтера немає, є шуруповерт, болгарка, зварювальний апарат і Епіцентр з безкоштовною доставкою
В Епіку замовив трубу 25х1.5 мм - в неї ідеально стає підшипник, 20х1.5 мм, підшипник 608 ZZ, шпильку М8 (здогадуюсь, що різьба трохи не така, але що маємо те маємо), вварні гайки. Стопорні кільця для підшипника вирізав з тієї ж труби 25 мм - відрізав сегмент 10 мм і вирівняв. Одне кільце вварив, інше - фіксується гвинтами М3. Квадратну втулку зварив з квадратної труби 16 мм, магніт зафіксував термоусадкою. Щоб шпилька не прокручувалась у втулці - зробив лиску. Гайки на шпильці зафіксував фіксатором різьби.
Мотор-редуктор склопідіймача ВАЗ - з ОЛХ.
Неодимовий магніт, мікрик, датчик Холла (аналоговий) - arduino.ua.
Чутливості датчика досить, незважаючи на метал кругом - напруга міняється від 1.5 до 2.5 В.
Можна писати код. Too bee contiiinue..
Неактивний
Продовження
Для управління моторчиком планував використати модуль MC33886, але, на жаль, трапився бракований. Тому довелось придумувати свою реалізацію Н-мосту з того, що знайшлось у коробці. У коробці знайшлись малопотужні релюшки HK4100F. Китайці обіцяють струм 3А, але, мені здається, що з індуктивним навантаженням вони довго не протягнуть. Тому придумав такий лайфхак - комутацію релюшками робити з відключеною напругою, а напругу подавати окремим ключем з невеликою затримкою. Тим же ключем можна робити плавний старт. Так, можна накрафтити і H-міст повністю на mosfet'ах.. Але це буде трохи складніше, а для моєї саморобки не має особливого смислу.
Замість контроллера взяв ESP32-C3. Цікава штука, хто не пробував - рекомендую. Після цього Arduino Nano - якийсь артефакт із минулого . Дофіга пам"яті, дофіга флешки, WiFi, можна обновляти прошивку без проводів, дебаг прямо з IDE.. Але є і деякі неочевидні речі. По перше, антена. Вона припаяна з порушенням всіх норм міжнародного права і здорового глузду
Щоб радіо працювало більш стабільно, треба припаяти до антени кусок проводу довжиною 31 мм (гуглиться). Інші методи у мене не спрацювали. Окремого конвертора USB-UART, як на Arduino, тут немає. Якщо хочеться бачити логи - підключаємо свій. Наче є спосіб задіяти вбудований в чіп USB-CDC, але можливо це зламає on chip debug.. не пробував.
Була ідея ловити пропадання напруги живлення, і, поки є енергія в конденсаторах, зберігати налаштування програми на флешку.. Але завади від мотора досить інтенсивні, багато false positive.. Поки не придумав рішення.
Неактивний
Тому придумав такий лайфхак - комутацію релюшками робити з відключеною напругою, а напругу подавати окремим ключем з невеликою затримкою.
Це стандартна практика при механічній комутації силових ліній. Ніяких розмикань під струмом, ніяких замикань під напругою. Розмикання під струмом тільки в разі аварійного відключення.
В критичних застосуваннях ще й тест на залипання контактів. Але для вашого проекту це, мабуть, зайве
Була ідея ловити пропадання напруги живлення, і, поки є енергія в конденсаторах, зберігати налаштування програми на флешку.. Але завади від мотора досить інтенсивні, багато false positive.. Поки не придумав рішення.
Дуже приблизна оцінка порядку величин: ESP32 в активному режимі споживає біля 20 мА (а вона скоріш за все буде в активному, бо потрібно читати ADC і писати на флешку). Ємності 3000 мкФ після діода при падінні напруги з 5 В (не з 12, бо LM7805 зʼїдає 7 вольт) до 3 В (берем як мінімум для ESP32) має вистачити десь на 300 мс. Теоретично можна встигнути. Але це дуже оптимістична оцінка. Якщо працює вайфай, споживання ESP32 може бути в 3-4 рази більше. Якщо замкенене реле, це ще +30 мА.
12 вольт іде з мережевого БЖ? Я б запропонував детектити наявність напруги AC мережі. Баластний конденсатор + 814 оптопара (або 817 паралельно з діодом). Тоді в запасі вся ємність БЖ, в тому числі й високовольтна.
А взагалі, моя особиста думка, автоматичне збереження налаштувань - це зайве. Кнопка чи пункт меню "зберегти" - простіше, надійніше та зрозуміліше. Звісно, в деяких випадках аварійне збереження поточного стану системи необхідне, але не для користувацьких налаштувань.
Активний
Зберігати положення приводу непогано було б. Є ще дивна ідея зберігання в retain message в mqtt
Зберігати положення приводу непогано було б.
Це, мабуть, потрібно краще розуміти логіку роботи системи. Бо як розумію на даний момент, є два положення: вікно відчинене, вікно зачинене. Відчиняється або зачиняється в залежності від поточної температури? Яке тут положення приводу?
Якщо на старті алгоритм потребує, щоб система була в детермінованому стані, то можна привести її в початковий стан безумовно, наприклад, вікно закрите. А далі нехай працює алгоритм.
Є ще дивна ідея зберігання в retain message в mqtt
Ще ідеї, щоб зберігати при кожній зміні, а не тільки при зникненні живлення: якщо раптом надумаєте ставити RTC з батарейкою, то зазвичай там є кілька десятків байтів CMOS-памʼяті. Або зберігати в зовнішню FRAM
PS: соррі, не розумію, jokeR та jokeer (Гість) - це одна і та ж особа, чи ні.
Активний
Та сама, але з телефону
Чому бажано знати положення приводу? Кінцевик один (не хочеться жмута проводів), і якщо не знаєш, в якому положенні воно ввімкнулось, є шанс відкрити більше ніж потрібно. В принципі, світло зникає не так часто, можна дійсно починати з закривання і не паритись
Зберігати кожний оберт якось параноїдально, і флешку не хочеться деградувати
А RTC то явно лишнє
Кінцевик один (не хочеться жмута проводів)
А, тепер зрозумів.
Як варіант - сам датчик на рухомій частині, а магніти в крайніх стаціонарних положеннях.
Ще варіант без кінцевика - моніторити струм двигуна. Але може знадобитись фрікцион. Бо якщо момент у двигуна великий, та ще й червʼячна передача, то поки система зреагує на зростання струму, може встигнути щось поламати.
Активний
>> датчик на рухомій частині, а магніти в крайніх стаціонарних положеннях
прикольна ідея але трохи не зрозуміло як це зробити в цій конструкції.
>>моніторити струм двигуна.
Робив таке з двигуном від приводу Старлінка, нормально вийшло. Але тут 2 черв'ячні редуктори. Дуже мале передаточне число і дуже велике зусилля.
>> фрікцион
я зварювальник ненастоящий
має вистачити десь на 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 мс ESP32 капєц швидка штука
Нраіцца.
А зберігати в MQTT дійсно можна. Це працює, але без гарантій. Якщо wifi відвалиться - упсь.
Неактивний
Встигає за 1 мс
ESP32 капєц швидка штука
Та справа ж не у швидкодії процесора. Записати кілька байтів у регістри - це і на atmega займає мікросекунди. А фактичний запис байта в EEPROM - 3.4 мс (1.8 мс, якщо без стирання).
Тут же важливий проміжок часу між виникненням зовнішньої події (падіння напруги нижче заданного рівня) і завершенням запису на фізичному рівні. А він залежить від купи різних факторів.
Якщо для моніторингу використовується компаратор, який генерує переривання - це одне (я не в курсі, чи є такий в ESP32). Якщо періодично читається АЦП - це інше. Впливатиме, з якою частотою йде опитування, чи задіяно паралельно інші канали, чи виконуються інші задачі, які пріорітети у задач (якщо це RTOS).
ESP32 пише на зовнішню флешку, підʼєднану по SPI. Впливатиме, чи будуть в черзі інші SPI транзакції, чи встигла флешка закінчити попередню операцію. У типової XM25QH32C запис сторінки - 0.5 мс, але якщо для запису потрібно стерти сектор - це вже 50 мс.
Активний
Сторінки 1