Перейти к содержимому

Open

Фотография
* * * * * 2 Голосов

ReefRhythm - Продвинутый контроллер шаговых моторов

diy stepper doser reef-pi reefpi

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 187

#41 yury88

yury88

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 14 560
  • Меня зовут:Юра
  • Откуда:Филиппины

Отправлено 30 Март 2024 - 14:16

Таки, не удержался (несмотря на риск попасть в очередной бесконечнострой), заказал на ТаоБао две платки с причиндалами. Платку на моторы 42мм взял версии SERVO42D, с поддержкой RS485. Не то, чтобы мне это нужно, но в этом варианте можно было взять с красивым заказным алюминиевым радиатором-кожухом, а разница в цене копеечная. Вообще, у китайцев цены смешые - за платы 42 и 57мм, вместе с причиндалами, заплатил 17.5 долларов, еще 4.8 за плату ESP32-S3 с удобным адаптером на винтовые разъемы.

Screenshot 2024-03-30 at 11.07.36.png

Юра, я в питоне никогда ничего не делал (был интерес, но как-то повода/времени не было). Как ты думаешь, насколько сложно будет допилить твою прошивку, чтобы она меняла скорость работы помпы по таблично заданным точкам в течение суток? С возможностью перемножать на коэффициент масштабирования, дабы плавно увеличить или уменьшить все значения (изменять дневную дозу). Структура программы допускает такие модификации, так, чтобы он превратился в standalone дозвтор? Возможно, еще с аварийным остановом по сигналу от того же профилюкса, в случае превышения заданного значения рН. Пока такие мысли в голову приходят.

Эх... Вот вы сами себе буратины.
Ну зачем брать предыдущие поколение драйвера? Там другая система с силовыми ключами. В версии C не просто так радиатора нет- он просто не нужен...

По поводу того что ты хочешь- после 0-10V я добавлю работу по графику. Т.е standalone режим.
Будет то что ты хочешь.
Тут драйвер такой что ему можно сказать "крути 55минут со скоростью 0.5мл/мин"
  • vahegan это нравится

#42 vahegan

vahegan

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 2 043
  • Меня зовут:Վահե
  • Откуда:Ереван

Отправлено 30 Март 2024 - 14:57

Эх... Вот вы сами себе буратины.
Ну зачем брать предыдущие поколение драйвера? Там другая система с силовыми ключами. В версии C не просто так радиатора нет- он просто не нужен...

Ох ты. Мне и в голову не приходило, что у платы с номером "D" будет более старая силовая часть, чем с номером "C". Тем более, что, по идее, они должны были отличаться только наличием RS485 на борту (что, в принципе, хорошо, ибо можно поставить на UART адаптер, и длинными проводами равести дозатор от контроллера, но это только в принципе, ибо ESP32 стоит копейки, а WiFi всяко лучше, чем провода), и очень уж мне приглянулся этот радиатор. Я заметил, что в той версии транзисторы рядом с разъемом побольше были, но не придал этому значения. А радиатор 40мм числился в твоем списке необходимых материалов, я и подумал, мол вот есть заводской, зачем колхозить другой. Ничего, дозаказал еще одну платку, это всего 8.5 долларов, если что, у меня разных помп камоэровских несколько штук разных, можно будет использовать в другом проекте, где не нужна круглосуточная работа. Ты, вроде, упоминал, что есть в планах измеритель КН. Я, в свое время, тоже начал было его строить, даже тема была про Alkatester, сделал механическую часть, но потом дело заглохло из-за того же отсутствия времени, где-то валяется это добро, пыль собирает. Если будешь двигать эту тему в прграммной части, может подниму
 

По поводу того что ты хочешь- после 0-10V я добавлю работу по графику. Т.е standalone режим.
Будет то что ты хочешь.
Тут драйвер такой что ему можно сказать "крути 55минут со скоростью 0.5мл/мин"

О, это просто отлично. Буду очень благодарен. Пока эти платы приедут, недели две пройдет, как раз, наверное, к тому времени что-то будет. Надеюсь, аварийный останов по внешнему сигналу тоже можно будет приделать (скажем, если KH или pH превысили максимальное значение). Если не предусмотрено, тоже не страшно, можно релюшку поставить и просто вырубить питание помпы.



#43 yury88

yury88

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 14 560
  • Меня зовут:Юра
  • Откуда:Филиппины

Отправлено 30 Март 2024 - 16:08

Триггеры сделать по откл сделать можно, у меня есть мысли как это сделать универсально что бы не хардкодить.
Но потом, всё поэтапно.

#44 yury88

yury88

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 14 560
  • Меня зовут:Юра
  • Откуда:Филиппины

Отправлено 08 Апрель 2024 - 09:07

Интерфейс для контроля помпы аналоговым сигналом готов почти.

А дальше уже самая простейшая часть - крутить саму помпу.

Я ещё думаю туда добавить логику что если пришла команда на дозирование -  аналоговый контроль на пару минут отключался.
Это что бы можно было из интерфейса доливать нужное кол-во реагентов(скореектировать или трубки там промыть) когда аналоговый контроль работает.

Прикрепленные изображения

  • Screenshot 2024-04-08 133959.png
  • Screenshot 2024-04-08 134013.png
  • Screenshot 2024-04-08 134027.png
  • Screenshot 2024-04-08 134042.png
  • Screenshot 2024-04-08 134058.png

  • vahegan и Danchik это нравится

#45 yury88

yury88

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 14 560
  • Меня зовут:Юра
  • Откуда:Филиппины

Отправлено 08 Апрель 2024 - 12:54

По поводу работы по рассписанию.  Я как бы уже на самом деле затянул библиотеку как в UI так и в back-end по работе "Cron" расписания.
И я как бы большой фанат Linux, но по мне так оно максимально недружелюбно к пользователю, я сам то как бы pro и то хожу переепроверять настройки этом reef-pi используя разные сервисы по типу cron guru.

И вот я думаю что это дозер, а не научная машина -всё должно быть просто и понятно.
Как расчёт того что бы сменить вектор и сделать рассписание тупо по точкам <время> <дни недели>?
Мне кажется не нужно усложнять UI в этом месте.

К примеру:

1)6:30 пнд-пятн 30мл за 300сек

2)18:30 суббота 100мл за 1800сек

etc.



#46 vahegan

vahegan

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 2 043
  • Меня зовут:Վահե
  • Откуда:Ереван

Отправлено 08 Апрель 2024 - 20:29

По поводу работы по рассписанию.  Я как бы уже на самом деле затянул библиотеку как в UI так и в back-end по работе "Cron" расписания.
И я как бы большой фанат Linux, но по мне так оно максимально недружелюбно к пользователю, я сам то как бы pro и то хожу переепроверять настройки этом reef-pi используя разные сервисы по типу cron guru.

И вот я думаю что это дозер, а не научная машина -всё должно быть просто и понятно.
Как расчёт того что бы сменить вектор и сделать рассписание тупо по точкам <время> <дни недели>?
Мне кажется не нужно усложнять UI в этом месте.

К примеру:

1)6:30 пнд-пятн 30мл за 300сек

2)18:30 суббота 100мл за 1800сек

Это ты про standalonе режим? Непонятно, при чем тут Cron. Или это про reef-pi?



#47 yury88

yury88

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 14 560
  • Меня зовут:Юра
  • Откуда:Филиппины

Отправлено 08 Апрель 2024 - 23:10

Это ты про standalonе режим? Непонятно, при чем тут Cron. Или это про reef-pi?

В reef-pi используется Cron для расписания.
Т.е одной строчкой настраиваешь расписание на весь год для дозера.
Я сделал по аналогии, но что бы было понятно пользователю как это работает сделал UI с выбором дней и т.д.

Так вот это дело на самом деле имеет очень сложную логику как в реализации, так и пользовании.
Думаю оставить эту идею и упростить до просто <время><дни недели>
Это значит что нельзя будет настроить работу дозера для "первого понедельника октября каждый второй час" и т.д
  • vahegan это нравится

#48 Danchik

Danchik

    Пользователь

  • Пользователи
  • PipPip
  • Cообщений: 88

Отправлено 09 Апрель 2024 - 14:23

Думаю оставить эту идею и упростить до просто <время><дни недели>

Может будет проще для пользователя ещё такой вариант, если будет автоматически распределяться дневная доза дозирования, с указанием:

  • Дни недели
  • Количество дозирований в день
  • Начало и конец дня (время)
  • Дневная доза

Но, тут минус в том, что можно попасть в одно время дозирования разных реагентов..( т.е. одновременное включения моторов


С уважением, Артем


#49 yury88

yury88

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 14 560
  • Меня зовут:Юра
  • Откуда:Филиппины

Отправлено 09 Апрель 2024 - 14:41

Может будет проще для пользователя ещё такой вариант, если будет автоматически распределяться дневная доза дозирования, с указанием:

  • Дни недели
  • Количество дозирований в день
  • Начало и конец дня (время)
  • Дневная доза
Но, тут минус в том, что можно попасть в одно время дозирования разных реагентов..( т.е. одновременное включения моторов
На самом деле эта проблема с этим типом дозеров мало актуальна.
Тут дозер может капельно лить, осадка не образуется

#50 yury88

yury88

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 14 560
  • Меня зовут:Юра
  • Откуда:Филиппины

Отправлено 11 Апрель 2024 - 09:33

Небольшой анекдот про трудности программирования:

Маркетолог спрашивает программиста: в чём сложность поддержки большого проекта?

Программист: ну представь, что ты писатель и поддерживаешь проект “Война и мир”. У тебя ТЗ — написать главу как Наташа Ростова гуляла под дождём по парку.
Ты пишешь “шёл дождь”, сохраняешь, вылетает сообщение об ошибке “Наташа Ростова умерла, продолжение невозможно”. Почему умерла?
Начинаешь разбираться. Выясняется, что у Пьера Безухова скользкие туфли, он упал, его пистолет ударился о землю и выстрелил в столб, а пуля от столба срикошетила в Наташу.
Что делать? Зарядить пистолет холостыми? Поменять туфли? Решили убрать столб. Получаем сообщение “Поручик Ржевский умер.”
Выясняется, что он в следующей главе облокачивается о столб, которого уже нет...

Вот и казалось бы чего стоит добавить фоновый процесс что будет чекать АЦП и будет крутить помпу по некоторому алгоритму... :)
А на деле 99% времени крутил всё вокруг - начал прикручивать web UI - вспомнил что пора сделать норм интерфейс что не будет криво смотреться на разных телефонах.
Затянул для этого bootstrap, а оно тяжёлое, под 500kB, для esp32 такой вебсайт отдавать не тривиальная задача... Но все браузеры сейчас поддерживают компрессию- теперь всё будет работать со сжатием и файлы весят 10%.

Далее объём данным что передается между UI и esp вырос в 2-3 раза, там же все эти динамически обновляемые графики... А оно в Cookie больше не лезет.
Переделал всё на SSE, cookie теперь полегчало.

А ещё, раз мы хотим крутить резистором(или внешним сигналом через провод) помпу- значит кому то захочется помпу использовать для тех же КР и просто вкл/выкл её из розетки PH контроллера...
А это значит что надо грузить прошивку побыстрее, желательно за секунду или меньше, а там серьёзная логика из-за OTA обновлений. Прикрутил оптимизацию что бы файлы не трогало если хэш прошивки не менялся)

И т.д. На самом деле так можно сидеть ещё месяц оптимизировать , но так дело не пойдёт- надо фичи пропихивать вопреки трудностям :crazy:

В общем думаю не позже чем в выходные будет релиз.
У текущей версии есть ограничение из-за чего как раз я собирался поставить цикл смены скорости помпы аля раз в 30сек.

Это потому что АЦП шумит, а для помпы 4.8 и 4.9 оборота/мин -это разные скорости. А у этих скоростей разный режим микрошага- помпу надо остановить.
Отсюда задержка между циклами
Это дело ещё предстоит оптимизировать
https://youtube.com/...HN_YnzDKfJezMKj


  • vahegan и Danchik это нравится

#51 vahegan

vahegan

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 2 043
  • Меня зовут:Վահե
  • Откуда:Ереван

Отправлено 11 Апрель 2024 - 22:28

Это потому что АЦП шумит, а для помпы 4.8 и 4.9 оборота/мин -это разные скорости. А у этих скоростей разный режим микрошага- помпу надо остановить.
Отсюда задержка между циклами

А нельзя АЦП все время усреднять по плавающему окну, скажем, в одну секунду? Тогда он не будет так дергаться. Ну и, при максимальном аналоговом сигнале в 3.3 вольта, шумы будут играть более значимую роль. Ну и сам по себе, их АЦП весьма шумный. Сколько ты там разрядов используешь, все 12? Может, имеет смысл понизить разрядность, скажем, до 10 бит как у ATMega? В идеале, конечно, надо внешний АЦП использовать, но в контексте этого устройства это ненужный оверкилл. Мне кажется, программная фильтрация должна быть наиболее эффективна - врядли кому-то понадобится каждую секунду дергать скорость туда-сюда на доли процента...



#52 yury88

yury88

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 14 560
  • Меня зовут:Юра
  • Откуда:Филиппины

Отправлено 12 Апрель 2024 - 03:35

А нельзя АЦП все время усреднять по плавающему окну, скажем, в одну секунду? Тогда он не будет так дергаться. Ну и, при максимальном аналоговом сигнале в 3.3 вольта, шумы будут играть более значимую роль. Ну и сам по себе, их АЦП весьма шумный. Сколько ты там разрядов используешь, все 12? Может, имеет смысл понизить разрядность, скажем, до 10 бит как у ATMega? В идеале, конечно, надо внешний АЦП использовать, но в контексте этого устройства это ненужный оверкилл. Мне кажется, программная фильтрация должна быть наиболее эффективна - врядли кому-то понадобится каждую секунду дергать скорость туда-сюда на доли процента...

Да всё можно и будет сделано. Памяти на девайсе море под буферы и есть супербыстрая либа под математику(раз в 15-30 быстрее чем ардуино и python)
Просто всё будет поэтапно.


  • vahegan это нравится

#53 yury88

yury88

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 14 560
  • Меня зовут:Юра
  • Откуда:Филиппины

Отправлено 12 Апрель 2024 - 10:39

У меня руки дошли наконец до автоматического дозирования трейсов, вот уже печатают мне дозер на 3 головы.
Под моторы Nema17 30мм, + стенд под стандартные аквариумные чудо бутылки, заодно будет на чём тестировать параллельную работу помп.

 

Дозы йода/железо(там много чего ещё в комплексе) у меня 2мл/7дней= 0.28мл в день.

 

https://www.thingive...m/thing:6575638

Прикрепленные изображения

  • Screenshot 2024-04-12 150621.png
  • Screenshot 2024-04-12 150449.png


#54 vahegan

vahegan

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 2 043
  • Меня зовут:Վահե
  • Откуда:Ереван

Отправлено 13 Апрель 2024 - 19:47

Пришли сегодня заказанные в Китае платки, думал, соберу сейчас на Камоэровскую помпу. Ага, как бы не так.

 

Первые грабли - шайбы, которые идут в комплекте с платой, имеют диаметр 7 мм и толщину 3 мм. А вот посадочное отверстие в торце Камоэровской помпы было под 6 мм. Что можно сделать в субботу вечером? Порарзмыслив, надел пластиковые шайбы на винт М3, затянул гайкой, законтрил второй гайкой, и затянув в патрон дрели, обточил на точиле до 6 мм. Проверил на штангенциркуле, радостный пришел, мол, сейчас хоть соберу. Ну да, конечно.

 

Грабли номер два. Глубина посадочных отверстий у Камоэра, видимо, больше, чем у "стандартных" шаговых двигателей на 42 мм. Потому что шайбы, вставленные в отверстия двигателя, выступают примерно на миллиметр. Не знаю, какое расстояние предусмотрено между платкой и корпусом двигателя в оригинале, но когда я ставлю платку, пайки с нижней стороны разъемов упираются в корпус двигателя, и будут закорачивать. Придется заказать лазерной резкой новые шайбы из ПВХ или оргстекла толщиной 5 мм и диаметром 6 мм.

 

Грабли номер три. Винты, которые прислали в комплекте с платой, имеют длину 40 мм - ровно столько же, сколько родные винты, которые я открутил с Камоэра. Естественно, что после установки платы они не дотягиваются до нижней пластины двигателя. Померил, выходит, что мне нужны будут винты длиной 50 мм. Придется искать длинные винты на М3, что в моем городе не так легко будет найти. В крайнем случае, закажу из Китая, но это значит, еще 2 недели ждать.

 

В общем, сборка пока откладывается...



#55 yury88

yury88

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 14 560
  • Меня зовут:Юра
  • Откуда:Филиппины

Отправлено 13 Апрель 2024 - 20:08

Расстояние от платы до двигателя возможно не сильно критично, я пробовал ставить без шайб-работало.
По поводу коротких винтов- да, я вот только вчера получил 40мм мотор для мешалки кальквассера, они чуть короче чем надо. Выходит с этими винтами самый оптимальный размер мотора 33мм.
Но это конечно зависит от того какая голова перильстатики, для самых производиьельных может иметь смысл брать мотор крупнее т. к у него крутящий момент выше.
В моём случае мне удалось собрать мотор с этими винтами + короткими м3*10мм для закрепления на корпус, но собралрсь всё прямо впритык и скорее повезло с зазорами

#56 yury88

yury88

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 14 560
  • Меня зовут:Юра
  • Откуда:Филиппины

Отправлено 15 Апрель 2024 - 14:35

Релиз v0.6 - Аналоговый интерфес для контроля помп через 0-3.3V сигнал

И попутно тонна улучшений. В том числе теперь можно настраивать кол-во помп на контроллере, что бы ему мозги лишними вычислениями не грузить.

https://github.com/t...ases/tag/latest

 

 

 

Screenshot 2024-04-15 190641.png Screenshot 2024-04-15 190658.png

 

 

 

Анонс релизов:
v0.7 - Standalone режим и поддержка работы по расписанию. Настройка рабочих токов и акселлирации в интерфейсе.
 


  • Danchik и KIR.ill это нравится

#57 yury88

yury88

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 14 560
  • Меня зовут:Юра
  • Откуда:Филиппины

Отправлено 15 Апрель 2024 - 14:51

Кстати, если кому хочется просто потыкать интерфейс, без собирания железа -можно просто скачать исходники, перейти в "src" папку и запустить web.py в Python 3.
Зависимостей тут нет кроме того что нужно установить сам Python что делается за пару минут.

 

В Windows:
1)В "command line" приложении ввести:
cd <путь до исходников>/src
Можно из проводника папку прямо мышкой кинуть

2)python web.py
3)Открыть http://127.0.0.1 в браузере.

 

Прямая ссылка на скачивание исходников в zip архиве.


  • Danchik и KIR.ill это нравится

#58 Danchik

Danchik

    Пользователь

  • Пользователи
  • PipPip
  • Cообщений: 88

Отправлено 15 Апрель 2024 - 18:21

Кстати, если кому хочется просто потыкать интерфейс, без собирания железа -можно просто скачать исходники, перейти в "src" папку и запустить web.py в Python 3.
Зависимостей тут нет кроме того что нужно установить сам Python что делается за пару минут.

 

В Windows:
1)В "command line" приложении ввести:
cd <путь до исходников>/src
Можно из проводника папку прямо мышкой кинуть

2)python web.py
3)Открыть http://127.0.0.1 в браузере.

 

Прямая ссылка на скачивание исходников в zip архиве.

Пробую запустить, но чего то не выходит...
Python установлен. То ли каких то модулей нет....

Прикрепленные изображения

  • Скриншот 15-04-2024 181630.jpg

С уважением, Артем


#59 yury88

yury88

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 14 560
  • Меня зовут:Юра
  • Откуда:Филиппины

Отправлено 15 Апрель 2024 - 19:12

Пробую запустить, но чего то не выходит...
Python установлен. То ли каких то модулей нет....


Да, есть косяк)
1)Скачать на всякий случай ещё раз исходники, я там на горячую правил косяк с запуском на PC
https://github.com/t...eads/master.zip

2)Потом положить wifi.json в src/config
https://drive.google...ew?usp=drivesdk
3)в консоли
python3 -m pip install numpy requests
4)python3 web.py
  • Danchik это нравится

#60 vahegan

vahegan

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 2 043
  • Меня зовут:Վահե
  • Откуда:Ереван

Отправлено 15 Апрель 2024 - 22:20

Юра, привет. Давай на пальцах, как установить твой проект на ESP32? Мне кажется, большинству людей, пытающихся повторить устройство, нужна будет пошаговая инструкция.

Я сделал следующее:

  1. Скачал Питон 3.12.3 по ссылке, и установил на комп
  2. Установил esptool, запустив с командной строки pip3 install esptool
  3. Подключил ESP32-S3 N16R8 к USB порту на компьютере, и перевел его в режим прошивки (пришлось погуглить: нажимается кнопка BOOT, не отпуская ее, коротко нажимается и отпускается кнопка RST, а потом уже отпускается BOOT)
  4. Скачиваем все файлы с гита в какую-нибудь директорию
  5. С командной строки переходим в директорию, где лежат файлы, и выполняем команду прошивки: python3 -m esptool -b 460800 --before default_reset --chip esp32s3  write_flash --erase-all --flash_mode dio --flash_size 16MB --flash_freq 80m 0x0 bootloader.bin 0x8000 partition-table.bin 0x10000 micropython.bin
  6. Наблюдаем, как фирмвейр закружается в контроллер. В конце получаем сообщение: "Leaving... Hard resetting via RTS pin..."

И все. С этого места у меня затык. Нигде не нашел инструкций, как после этого подключиться к контроллеру, как задать ему IP адрес для подключения к веб интерфейсу, как делать OTA обновления, и т.д.

 

Кстати, в пошаговых инструкциях, которые я привел выше, надо использовать именно pip3 и pyton3, а не pip и python. Последняя версия питона у меня заработала только в этом варианте, и пришлось поковыряться, пока нашел, в чем дело.


  • Danchik это нравится





Темы с аналогичными тегами: diy, stepper, doser, reef-pi, reefpi

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Ветка управляется: