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

Open

Фотография
- - - - -

Дозатор из STM32 Nucleo


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

#1 avfv

avfv

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

  • Пользователи
  • PipPipPip
  • Cообщений: 507
  • Меня зовут:Андрей
  • Откуда:Санкт-Петербург

Отправлено 22 Август 2020 - 20:31

Завалялась у меня отладка Nucleo-F767zi, ну и сделал из нее дозатор для шаговых помп с web интерфейсом. Различных драйверов в формате stepstick у меня от 3D-принтера накопилось много, собираем все вместе:

 

p1.jpg

Не очень красиво, но работает.

 

s2.png

s1.png

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

 

Драйвера шаговиков показали себя по-разному. LV8729 - приемлемо, TMC2209 - идеально плавно. DRV8825 настолько ужасен, что я его даже не пробовал :)

 

В ближайших планах - перевод проекта на современный процессор H743.

 

 

 


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

#2 Abelavin

Abelavin

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

  • Пользователи
  • PipPipPip
  • Cообщений: 2 717
  • Меня зовут:Антон
  • Откуда:Moscow

Отправлено 23 Август 2020 - 08:16

А сам веб сервер крутится на stm или отдельно? Если на stm то должна js машина там стоять как минимум для angular и слой абстракции к железу. Расскажите поподробнее. Интересно. Можно в личку если хотите.

#3 avfv

avfv

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

  • Пользователи
  • PipPipPip
  • Cообщений: 507
  • Меня зовут:Андрей
  • Откуда:Санкт-Петербург

Отправлено 23 Август 2020 - 12:03

Веб сервер конечно на stm, написан на C++11 с использованием STL и исключений, без особых скидок на то что это контроллер. Из библиотек стандартный набор lwIP + FreeRTOS + HAL от CubeMX (да, внутри него код ужасен, но времени переписывать все нет...). nlohmann::json - не самый эффективный выбор для embedded, зато работает и код в контроллерах приятный. Портировать куда-нибудь где есть достаточно памяти, скажем ESP32 в принципе можно, но как-то смысла пока не вижу.

 

Для Angular наличие nodejs на сервере вовсе не обязательно; это нужно для реализации некоторых поздних фич типа SSR. Мне такое не нужно, поэтому у меня фронт компилируется в набор статических html/js/css файлов, минифицируется, файлы сжимаются gzip, все это пакуется в формат romfs, и этот blob линкуется в прошивку. В итоге он весит почти 500 Кб.

 

Почему Angular, а не, скажем, модный для таких применений Vue? Вот пусть туда сначала typescript завезут, а пока мне на Angular удобнее.



#4 Abelavin

Abelavin

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

  • Пользователи
  • PipPipPip
  • Cообщений: 2 717
  • Меня зовут:Антон
  • Откуда:Moscow

Отправлено 23 Август 2020 - 16:20

В итоге какой размер прошивки получился? По моим прикидкам в районе 1 мб.

#5 avfv

avfv

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

  • Пользователи
  • PipPipPip
  • Cообщений: 507
  • Меня зовут:Андрей
  • Откуда:Санкт-Петербург

Отправлено 23 Август 2020 - 16:43

Да, почти 850 Кб.



#6 avfv

avfv

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

  • Пользователи
  • PipPipPip
  • Cообщений: 507
  • Меня зовут:Андрей
  • Откуда:Санкт-Петербург

Отправлено 05 Сентябрь 2020 - 20:03

Закончил портировать прошивку на самый современный и жирный ARM от ST - H7. Заодно опробовал новый st-link v3 и новую IDE от ST - STM32CubeIDE - они скрестили куб и бывшую у них IDE на основне Eclipse. Очень меня удивило, что все практически идеально работает из коробки - настал конец мучениям, ничего не отваливается, внутрисхемная отладка летает. Дожали таки.

 

Чтобы попробовать, нужна плата Nucleo-H743ZI2, вот такая: https://www.chipdip..../nucleo-h743zi2

Для заливки прошивки нужно скачать утилиту от ST: https://www.st.com/e...sw-link004.html

Ну и сама прошивка: https://github.com/A...omeev/spskeeper

 

Сеть сейчас сконфигурирована в режиме DHCP-клиента, втыкать нужно в роутер и искать назначенный IP в его админке.

Из изменений в прошивке - теперь можно подключать драйвер ШД только по 3 сигналам EN, STEP, DIR. В принципе, так обычно и делают, сигналы RESET и SLEEP не нужны, а выбор микрошага делают джамперами.

Еще можно проверить работу watchdog'а - обработчик 404 not found специально вешает прошивку, через 30 секунд происходит автоматический перезапуск.


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

#7 avfv

avfv

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

  • Пользователи
  • PipPipPip
  • Cообщений: 507
  • Меня зовут:Андрей
  • Откуда:Санкт-Петербург

Отправлено 06 Октябрь 2020 - 21:31

Сегодня начал собирать прототип титратора на KH и кальций. Для драйверов шаговиков подцепил плату RAMPS:

 

kh1.jpg

 

Для титранта собрал головку повышенной точности, под шланг 4x1 - получается 0.0185 мл за 1/4 оборота.

 

Первая кривая титрования, индикатор бромкрезоловый зеленый + метиловый красный. По оси Y - светопоглощение в условных единицах. Титрант ЭДТА, он получается универсальный - на КН работает как кислота, на кальций - как комплексон :)

 

kh1_curve.png



#8 Krashn056

Krashn056

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

  • Пользователи
  • PipPipPip
  • Cообщений: 1 265
  • Меня зовут:Дмитрий
  • Откуда:Оренбург

Отправлено 06 Октябрь 2020 - 21:55

А почему не пошли по пути ghl kh director? Там вроде как все проще один реагент, измеряет ph.

#9 avfv

avfv

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

  • Пользователи
  • PipPipPip
  • Cообщений: 507
  • Меня зовут:Андрей
  • Откуда:Санкт-Петербург

Отправлено 06 Октябрь 2020 - 23:27

Фотометрический датчик значительно проще, ну и для кальция электродом не обойдешься.



#10 Abelavin

Abelavin

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

  • Пользователи
  • PipPipPip
  • Cообщений: 2 717
  • Меня зовут:Антон
  • Откуда:Moscow

Отправлено 07 Октябрь 2020 - 09:03

А перемешивание при тирировании как реализовано?

#11 avfv

avfv

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

  • Пользователи
  • PipPipPip
  • Cообщений: 507
  • Меня зовут:Андрей
  • Откуда:Санкт-Петербург

Отправлено 07 Октябрь 2020 - 10:59

Реверс помпы слива.


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

#12 VladBraz

VladBraz

    Новичок

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

Отправлено 20 Октябрь 2020 - 12:46

Здравствуйте Андрей,

у меня похожая задача, но не с дозатором, а с другим устройсвом.

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

Особенно интересует чать веб-сервера на стороне контроллера.

Клиенская часть, Ангуляр, тоже была бы полезна для ознакомления.

Буду очень признателен.

Влад



#13 avfv

avfv

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

  • Пользователи
  • PipPipPip
  • Cообщений: 507
  • Меня зовут:Андрей
  • Откуда:Санкт-Петербург

Отправлено 20 Октябрь 2020 - 23:17

День добрый и вам. К сожалению, на сегодняшний момент у меня нет планов публиковать исходники. Могу посоветовать использовать хорошо зарекомендовавший себя embedded web-server mongoose, к тому же он лучше поддерживает веб-стандарты, чем мой.



#14 VladBraz

VladBraz

    Новичок

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

Отправлено 21 Октябрь 2020 - 08:57

Спасибо за совет, удачи. :) 



#15 aquanavt

aquanavt

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

  • Пользователи
  • PipPipPip
  • Cообщений: 1 406
  • Меня зовут:Егор
  • Откуда:Берлин, Германия

Отправлено 09 Ноябрь 2020 - 16:07

Особенно интересует чать веб-сервера на стороне контроллера.

Для такого простого приложения достаточно любого http сервера, можно например из boost asio взять, boost.beast тоже неплохой, а так десятки их.



#16 aquanavt

aquanavt

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

  • Пользователи
  • PipPipPip
  • Cообщений: 1 406
  • Меня зовут:Егор
  • Откуда:Берлин, Германия

Отправлено 09 Ноябрь 2020 - 16:19

Веб сервер конечно на stm, написан на C++11 с использованием STL и исключений, без особых скидок на то что это контроллер.

Странно было бы в 2020 писать для современных контроллеров без исключений и stl. Когда исключения в стандарте появились, мой компьютер был слабее, чем ESP32, наверное.

 

А калибровки нет пока что?



#17 avfv

avfv

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

  • Пользователи
  • PipPipPip
  • Cообщений: 507
  • Меня зовут:Андрей
  • Откуда:Санкт-Петербург

Отправлено 09 Ноябрь 2020 - 18:57

Тем не менее, в большей части embedded разработки царит тру-C, какие уж там stl. Да и здесь, исключения используются парсером json, в веб контроллерах. Там это реально удобно.

Калибровка помп есть, правда пока не очень удобная... надо будет калькулятор в интерфейс встроить.

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



#18 aquanavt

aquanavt

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

  • Пользователи
  • PipPipPip
  • Cообщений: 1 406
  • Меня зовут:Егор
  • Откуда:Берлин, Германия

Отправлено 12 Ноябрь 2020 - 14:52

Реверс помпы слива.

А можно чуть подробнее для чайников, как именно это перемешивает?  :)



#19 avfv

avfv

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

  • Пользователи
  • PipPipPip
  • Cообщений: 507
  • Меня зовут:Андрей
  • Откуда:Санкт-Петербург

Отправлено 12 Ноябрь 2020 - 15:01

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






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

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