Как стать автором
Обновить

Шнековый дозатор малых порций. Часть вторая

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 4.1K
Блок управления дозатором
Блок управления дозатором

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

Часть вторая. Электронная

Пока Евгений разбирался с железками, я приступил к электронике. Из описанного ТЗ было понятно, что необходимо обрабатывать сигналы с нескольких тензометрических датчиков. Реализовать управление шаговым двигателем, а также коллекторным мотором ворошителя. Весь интерфейс с пользователем должен быть реализован на сенсорном дисплее размером не менее 7 дюймов для комфортной работы. Так же для ускорения сушки после чистки дозатора мы решили внедрить в металическую часть корпуса электрический нагреватель от 3D принтера с датчиком температуры. Для обновления микропрограмм планировалось использовать USB, что в свою очередь ограничивало свободу в выборе дешевых микроконтроллеров, но т.к. устройство было не серийным это особо не меняло итоговую стоимость изделия.

Основываясь на требованиях, я разработал следующую структурную схему всего дозатора:

Структурная схема блока управления
Структурная схема блока управления
Структурная схема блока питания
Структурная схема блока питания

В качестве сердца конструкции был выбран МК компании STM STM32F407, это было излишне для такого функционала, но нам нужна была поддержка USB Host и это был самый доступный МК с такими возможностями.

В предыдущих конструкциях собственной разработку в качестве дисплея я использовал TFT дисплеи с резистивным сенсором и подключал их через FSMC интерфейс, очень удобная штука, но требует уйму соединений и все работа с графикой перекладывается на плечи ядра МК. В целом это не проблема при грамотно спроектированном ПО, но кода приходится писать сильно больше, да и ресурсы с изображениями куда то тоже нужно сохранить. И вот тут мне Женя предложил попробовать дисплеи от компании Nextion. Методом коммуникации и разработки интерфейса для них они чем то мне напоминали промышленные панели оператора. Т.е. вы разрабатываете все экраны и элементы в специальном редакторе, а потом загружаете этот проект в панель, с МК она общается через UART. Вся забота по хранению картинок, логике переключения экранов, и т.д. мы перекладываем на контроллер панели, а наш МК получает уведомления об изменениях произведенных пользователем на том или ином экране в конкретном элементе. Например пользователь нажал кнопку для которой мы назначили отправку уведомления в качестве реакции на нажатие, МК получит уведомление по UART. Очень удобно. Для тестов Женя даже дал мне один из таких экранов, только маленький. Я попробовал и решил его использовать в данном проекте, тем более обновлять проект в панели также можно было через тот же UART, да еще и протокол открыт. В таком случае обновление проекта можно было делать с того же носителя подключенного по USB через программу загрузчик в МК, что не противоречило ТЗ.

Самой сложной задачей оказался выбор АЦП для считывания и обработки сигналов с тензодатчиков.

Поиск решения я начал с изучения литературы и application notes от AD, у них много годных документов хорошо описывающих готовые решения и весы не являются исключением. Вот перечень того что мне в целом пригодилось при анализе, выборе и работе в программе с АЦП:

Ознакомившись с литературой, а также с некоторыми готовыми решениями я пришел к выводу что для достижения заданной точности необходимо использование АЦП с разрядностью 28 бит и определил несколько моделей АЦП в качестве кандидатов.
В моей практике я довольно много работал с АЦП, но не с таким большим количеством разрядов. Я осознавал что при такой разрядности требования к схеме, трассировке печатной платы и дальнейшей математической обработке являются не самой простой задачей с которой мне придется совладать.

Прежде чем окончательно выбрать конкретную модель АЦП я решил провести ряд экспериментов с теми моделями, которые у меня были под рукой, среди них был и дешевый вариант HX711. Также была быстро спроектирована и изготовлена плата для тестов с использованием AD7710.

Для дальнейших тестов я использовал тензодатчик на 5 кг, который я нагружал при помощи лабораторных грузов. Для оценки качества работы АЦП я сделал небольшие программы, которые считывали сырые данные из АЦП с фиксированной частотой и отправляли их в UART, в дальнейшем я сохранял полученные данные и обрабатывал их в Excel. Я выполнял замеры для 2х случаев: при подключенном датчике и статически нагруженном на 50 граммовую гирю, чтобы оценить комплексный шум АЦП + датчик. А также измерения с заземленным входом, чтобы понять как шумит сам АЦП.

В качестве метода оценки качества измерений я выбрал банальный расчет плотности распределения значений отсчетов. Критерием качества по сути выступает «кучность» множества значений в окрестностях правильной точки и при использовании качественного АЦП в сочетании с корректной схемотехникой дает в результате график очень близкий к Гаусcовскому распределению. Такие значения хорошо фильтруются при помощи скользящего среднего или медианного фильтра. Этот метод описан в одном из документов в списке выше.

Исследования я начал с дешевого HX711. Вот некоторые результаты мои расчетов, как можно увидеть сигнал имеет абсолютно случайную величину, даже без использования датчика, т.е. это выдает сам АЦП. Я проводил эксперименты с разными значениями коэффициента усиления, в целом картина только усугублялась при увеличении коэффициента усиления.

HX711
HX711

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

AD7710
AD7710

Если бы не нужно было производить динамическое измерение в короткие промежутки времени, то с большим размером выборки и помощи математики можно было использовать и дешевый АЦП, но это было бы очень медленно и меня такой результат не устраивал. Поэтому я продолжил работы с микросхемами от AD и попробовал еще один вариант более специализированный под работу в весоизмерительных комплексах - AD7730. К тому же, у меня было где подсмотреть для нее разводку платы, что внушало дополнительный оптимизм на успех.

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

Вот несколько сохраненных фоток процесса тестирования:

Тесты с AD7730
Тесты с AD7730
Тесты с AD7710 и HX711
Тесты с AD7710 и HX711

После анализа и окончательного утверждения выбора АЦП, я разработал отдельно структурную схему данного узла, т.к. необходимо было разобраться с питанием АЦП, а также полностью гальванически отвязать цифровую часть МК от блока АЦП.

Структурная схема АЦП
Структурная схема АЦП

Завершив все тесты и эксперименты над сложными для меня узлами я был готов к проектированию полной схемы. Для этого был использован бесплатный сервис EasyEDA. По функционалу он сильно уступал Altium Designer, но при этом его функций было больше чем достаточно для решения моих задач сквозного проектирования, к тому же по интерфейсу и горячим клавишам он сильно повторяет Altium.

Для удобства работы со схемой, она была разделена на логические участки и вычерчена на 8 листах.

Обвязка микроконтроллера стандартная, схема сброса и запуска загрузчика не представляет из себя ничего особо интересного. Для управления питанием и защиты USB была применена специализированная микросхема. Для хранения настроек была установлена микросхема EEPROM.

Схема МК
Схема МК
Схема USB
Схема USB

Для управления шаговым двигателем я установил стандартный модуль на DRV8825, он меня устраивал по всем характеристикам, к тому же у него есть сигнал ошибки по которому я мог оценивать состояние работы мотора.

Коллекторный двигатель ворошителя управлялся через полевой транзистор и защищен предохранителем. При выходе из строя предохранителя, МК получал сигнал об этом при помощи схемы на оптопаре. Это так же позволяло делать мониторинг работы двигателя и сообщать пользователю о том что пошло не так, толи мотор заклинило или сильно возросла нагрузка на валу. Самовосстанавливающиеся предохранители позволяли возобновлять работу устройства после устранения механических неисправностей без вмешательства в корпус контроллера дозатора.

Схема управления двигателями
Схема управления двигателями

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

Дискретные входы\выходы
Дискретные входы\выходы

Блок АЦП состоит из отдельных источников для раздельного питания цифровой части, аналоговой части АЦП, а также третий источник используется как опорный, от него же осуществляются питание датчиков для уменьшения шума в сигнале. Сигналы с датчиков подаются на входы АЦП через RC фильтры, смена полярности для питания датчика не применялась, хотя много написано о том, что это сильно увеличивает стабильность и качество измерения.

Схема блока АЦП
Схема блока АЦП

Для питания устройства был использован готовый БП от компании MeanWell EPS-65-12 - 12В, 5.42А, 72Вт. Остальные необходимые напряжения были сформированы уже на плате. Для питания АЦП был использован DC/DC преобразователь с гальванической развязкой AM1DE-0505DZ с двух полярным выходом, это позволило сформировать 10 вольт, смотрите схему ниже:

БП часть 1
БП часть 1
БП часть 2
БП часть 2

После завершения разработки схемы я приступил к разводке платы, но для начала мне пришлось определиться с ее габаритами. В качестве корпуса была выбрана готовая модель от Gainta - G3127, Женя помог мне с 3D моделью для нее и я начал проектировать будущий блок управления для дозатора. Сначала сделал плату размером в половину площади дна коробки, а во второй половине разместил пару БП ( один только для питания нагревателя сушилки, а второй для питания всех остальных узлов).

Первая версия компонновки
Первая версия компонновки

Но после первых попыток расставить все компоненты на плате я понял, что они все на нее не влезут и мне пришлось изменить компоновку расширив плату на все дно корпуса, а блоки питания перенести на «второй этаж», установив их на стойках:

Вторая версия компоновки
Вторая версия компоновки
Внешний вид в 3D
Внешний вид в 3D

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

PCB
PCB

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

Изготовленные платы
Изготовленные платы

После нескольких часов сборки, первая плата приобрела вот такой вид:

Первые тесты после сборки
Первые тесты после сборки

К этому моменту мы поняли, что нагреватель для сушки нам таки не нужен, поэтому компоненты для этого узла я не устанавливал. После сборки платы и полного тестирования всех ее узлов, приступил с изготовлению корпуса блока управления дозатора, точнее установки всех необходимых разъемов и органов управления в готовую коробку. Процесс не сложный, но когда хочется сделать хорошо, то делать нужно не торопясь и использовать хороший инструмент. Отверстия под круглые разъемы я сверлил на станке при помощи ступенчатых сверл. Маленькие прямоугольные отверстия для выключателя и разъема питания доводил при помощи напильников и надфилей, так как в наш ЧПУ в таком положении коробка не входила, не хватало высоты портала, а вот отверстие под дисплей мы уже вырезали на ЧПУ, чтобы все было совсем ровно.

Врезка дисплея
Врезка дисплея

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

Итоговая конструкция
Итоговая конструкция
Итоговая конструкция
Итоговая конструкция
Итоговая конструкция
Итоговая конструкция
Собранные блок на испытаниях
Собранные блок на испытаниях
Теги:
Хабы:
+23
Комментарии 12
Комментарии Комментарии 12

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн