ARDUINO Der Наливатор. Модифицированная версия GyverDrink

Der Наливатор. Модифицированная версия GyverDrink
Эта тема для обсуждения проекта Der Наливатор, созданного на основе прошивки от Alex Gyver - GyverDrink.


С начала устранения пары багов до сегодняшнего момента, прошивка раздулась и обзавелась дополнительным функционалом. Из ключевых особенностей в сравнении с оригинальной версией:
  • Поддержка нескольких типов графических OLED дисплеев с диагоналями 0.96", 1.3", 1.54", 2.42" на контроллерах SSD1306, SSD1309, SH1106.
  • Поддержка (не замена!) шагового двигателя вместо сервопривода для более плавных и бесшумных движений на любой диапазон углов (от 0 до 360 градусов).
  • Автономность засчёт питания устройства от аккумулятора с мониторингом напряжения и заряда.
  • Возможность установки разного объёма жидкости для каждой рюмки отдельно.
  • Дополнительный статус-светодиод, сигнализирующий об актуальном режиме/статусе.
  • Ведение статистики
  • Все необходимые библиотеки для работы устройства "вшиты" в проект, ничего дополнительного искать и устанавливать не требуется.

scheme2.png
scheme3.png
НазваниеКорпусПроизводительUGS(th)/VUDS / VID / AP / WRDS,on / mΩПримечаниеЦена / €
IRLML6244SOT-23IRF0,5-1,1206,31,3210,13
SI2302DSSOT-23Vishay0,65-4,52061,25702,5V LL, очень дёшево0,01
IRFP4310ZTO-247ACirf2,0-4,01001202804,81,80
IRFP450TO-247irf2,0-4,0500141904001,20
IRF530TO-220irf2,91001694160LIN0,44
IRL3103TO-220ABirf1,0306494124,5V LL, Qg=33nC (!)0,95
IRF730ATO-220ABirf2,0-4,54005,5741000Qg=22nC (!)0,54
IRFP064TO-247ACirf2,060703009Qg=190 nC1,65
IRF3205TO-220ABirf2,05511020080,69
IRL3803TO-220ABirf1,03014020064,5V LL, Qg=140nC0,96
IRF540TO-220ABirf31002815077LIN0,52
IRF7401SO-8irf2,7208,72,0222,7V LL0,45
IRF7403SO-8irf4,85308,52,5224,5V LL0,42
IRF7413SO-8irf3,03013,02,5114,5V LL0,41
BUZ11TO-220ST4,05033,090,030LIN0,50
BSS83SOT143NXP2,0100,050,2345000не путать с BSS83P0,10
BS170TO-92gs2,0600,30,835000LIN0,13
BSN20SOT-23gs1,8500,180,3560004,5V LL, LIN0,092
BSS138SOT-23div0,8-1,6500,220,3620005V LL, LIN0,06
BSS123SOT-23div0,8-1,61000,170,3610000 @ 4,5V,4,5V LL, LIN0,06
IRFP2907TO-247ACirf4,0752094704,52,70
2N7000TO-92ON3,0600,20,3550004,5V LL, LIN0,13
BS107TO-92ON, Phi3,02000,250,356400/140002,6V LL; LIN0,18
BS108TO-92ON, Phi2,02000,250,3580002V LL; LIN0,14
BUK100TO-220Phi3,05013,540125Защита от перегрузки и ESD1,40
IRL3705NTO-220ABirf2,05589170104V LL, Qg=98nC1,20
BUZ72ATO-220Infineon4,01009,0402505V LL, LIN0,45
IRLZ34NTO-220irf2,5553068354V LL, LIN0,39
IRLZ44NTO-220irf25547110224V LL, LIN0,49
IRLML2502SOT-23irf1,2204,21452,5V LL0,17
IRF1404TO-220ABirf4,0402023334-1,10
IRL1004TO-220irf2,7401302006,5-1,25
IRL530TO220, D2Packirf210015,0881600,57
IRF830TO220ABirf2,0-4,55005,0741400LIN0,57
IRF840TO220ABirf2,0-4,05008,01258500,57
FDC645NSuperSOT-6Fairchild1,5305,50,8/1,630-0,7
BSP297SOT-223Siemens/Infineon0,8-2,42000,651,86000200V UDS, SMD и 4,5VLL, LIN (редкая комбинация)0,56
IRF7455SO-8irf4,530152,57,51,04
SI4442DYSO-8vis2,530222,55/4,5V1,64
IRLU2905TO251, DPackirf2,05542110274V LL0,54
IRFD014HEXDIP/DIP4irf2,0-4,0601,71,32000,52
IRFD024HEXDIP/DIP4irf2,0-4,0602,51,31000,54
IRLD024HEXDIP/DIP4irf1,0-2,0602,51,31004V LL0,47
IRLU3717I-Pakirf2,0201201,5/8944,5V LL, Qg=21nC,1,15
IRFP3703TO-247ACirf4,0302102302,85,08
IRF3710TO-220ABirf410057200230,83
IRLR7843D-Packirf2,3301641403,34,5V LL, Qg: 34nC0,70
IRF1010NTO-220ABirf45585180111,99
IRF1010ZTO-220ABirf455751407,51,99
IRLIZ44NTO-220-Fullpakirf1,0 - 2,0553045254V LL0,80
IRLU024NTO-251AAirf1,0 - 2,0551745804V LL, Qg=15 nC (!)0,40
IRFZ48NTO-220ABirf35564130140,60
IRL2505TO-220ABirf2,55510484V LL3,99
IRF7607Micro8irf1,2206,51,8302,5V LL1,89
IRF3708TO-220ABirf0,6 - 230628782,8V LL0,69
GF2304SOT-23gs1,0302,51,25135Qg=3,7nC0,05
IRLR8743I-Pak, D2PackIRF1,93050683,14,5V LL, Qg=39nC1,15
AOC2414MCSPAlpha&Omega0,5284,50,55191,2V LL, Qg=21,5nC
Ссылка на первоисточник
TTP229_configuration.png
StepMot_connection.png
  • Прокачка. Поставьте рюмку, нажмите и удерживайте кнопку энкодера.
    Прокачка проводится только в ручном режиме и только при наличии рюмки.
    Возврат крана в домашнее положение и сброс счётчика объёма жидкости происходит после снятия рюмки.
  • Режим изменяется удержанием основной кнопки в течении полусекунды.
    Ручной режим: разлив начинается только после однократного нажатия на основную кнопку.
    Авто режим: разлив начинается автоматически сразу после установки рюмки.
  • Целевой объём изменяется вращением энкодера. При одновременном нажатии и вращении энкодера, объём изменяется на 10 единиц, без нажатия на 1 единицу
  • Возможность настроить объём для каждой рюмки отдельно:
    Функция активна только если количество поставленных рюмок > 1
    При однократном нажатии на энкодер подсвечивается место рюмки, объём которой изменяется вращением энкодера. При повторном нажатии подсвечивается следующая установленная рюмка.
    Если же ни одна рюмка не подсвечивается белым, вращение энкодера изменяет объём для всех рюмок одновременно (как в обычном ручном режиме).
  • Разлив можно остановить в любое время нажатием на основную кнопку.
  • Последний выбранный объём сохраняется сразу после налива первой рюмки.
  • Дополнительный статус-светодиод подключается к светодиоду последней рюмки, активируется в STATUS_LED. Служит для индикации режимов работы.
  • Индикация заряда аккумулятора и слежение за напряжением.
    Активируется раскоментированием строки #define BATTERY_PIN ...
    При напряжении, меньшем чем BATTERY_LOW (по умолчанию 3.3В), устройство перестаёт реагировать на внешние воздействия и на дисплее мигает иконка батареи.
    Если при первом включении мигает иконка аккумулятора, но напряжение в порядке(больше, чем BATTERY_LOW) -> нажмите и удерживайте кнопку до появления меню калибровки аккумулятора.
    Для отслеживания статуса зарядки, IN+ с модуля заряда TP4056 нужно подключить к пину A6. При зарядке появится анимация заряда акб.
  • Стартовая анимация и динамическая подсветка рюмок во время и после налива.
Сервис режим:
Вход в сервис режим осуществляется удержанием основной кнопки выбора режима во время стартовой анимации до появления на дисплее надписи "SerViCE". После отпускания кнопки на дисплее появится номер этапа калибровки:
  • - 1 - На этом этапе производится настройка положений сервопривода над рюмками.
    • Уберите все рюмки. На дисплее отобразится положение парковочной позиции в градусах. При этом по краям дисплея будут отображенны штрихи (при градусе > 99, штрих только с правой стороны).
    • Вращением энкодера измените положение парковочной позиции
    • Поставьте рюмку. На дисплее отобразится номер рюмки и позиция в градусах. Вращением энкодера подстройте положение точно над рюмкой. Уберите рюмку.
    • Повторите предыдущий пункт для всех остальных рюмок.
    • После настройки позиций для всех рюмок нажмите основную кнопку изменения режима пока на дисплее не появится номер следующего этапа калибровки.
  • - 2 - На этом этапе производится калибровка таймера для налития 50мл.
    • Поставьте рюмку в любое положение. Кран встанет над этой рюмкой.
    • Нажатием на кнопку энкодера включится помпа. Удерживайте до тех пор, пока не польётся жидкость.
    • Снимите рюмку и поставьте пустую в любое положение.
    • Удерживайте кнопку энкодера, пока не нальётся ровно 50мл.
    • Снимите рюмку. Нажмите основную кнопку изменения режима. Если мониторинг АКБ активен, на дисплее отобразится следующий номер этапа калибровки. В обратном случае калибровка оконченна. На дисплее отобразится основной объём.
  • - 3 - На этом этапе производится калибровка напряжения аккумулятора.
    • На дисплее отобразится напряжение аккумулятора в [mV].
    • Вращением энкодера подстройте отображаемое напряжение до измеренного вольтметром.
    • Нажмите основную кнопку изменения режима. Калибровка оконченна. На дисплее отобразится основной объём.
  • При зажатии кнопки выбора режима более 5 секунд, происходит сброс настроек из памяти (TIME_50ML, SHOT_POSITIONS, PARKING_POS и BATTERY_CAL) до первоначальных, прописанных в Config.h
  • Наличие полноценного, графического меню. Вход/Выход зажатием основной кнопки более полусекунды. Выход из подменю в основное однократным нажатием.
  • Калибровка объёма за единицу времени, калибровка углов сервопривода для рюмок и калибровка напряжения аккумулятора осуществляется в сервисном меню. Вход в сервисное меню осуществляется зажатием основной кнопки во время стартовой анимации.
  • Возможность изменять настройки прошивки прямо в меню. Для этого нажмите на кнопку энкодера на параметре и вращением измените его значение.
  • Ведение статистики. Количество налитых рюмок, объём за сеанс (до выключения устройства) и общий объём, сохраняемый в памяти. При нажатии на кнопку энкодера, выбранное значение сбрасывается

Обязательно к прочтению
Очень часто проблемы возникают из-за некачественной пайки и остатков флюса на компонентах. Обязательно после пайки, до подачи питания, тщательно прочистить все места пайки спиртосодержащим средством и щёткой!
  • Зачастую проблемы с серводвигателем возникают из-за плохого качества самого привода. Дешёвые серво (хоть и цена это не первостепенный показатель качества, но всё же дешевле 6-7$ за серво микро размера брать не советую). Обратите внимание на фирму-производителя. На приводе должен быть лейбл с граматически правильным написанием фирмы (Например оригинальное название фирмы Tower Pro, не TowerPro и не Towerpro). Для данного проекта (и не только) рекомендую привод EMAX ES08MD II
  • Сенсоры TTP229 не стоит тестировать просто лежащими на столе и не зафиксированными (или приклееными абы как на коленку). Эти датчики, в отличии от обычных механических выключателей, очень капризные к окружающей среде и требуют особого подхода. При подаче питания, они анализируют ёмкость между входом (пластиной, площадкой) и окружающей её средой. Измеренная ёмкость является референсной (с которой будут сравниваться последующие изменения ёмкости) до отключения питания. Поэтому во время подачи питания не следует ставить вблизи сенсора какие-либо предметы. Если оставить рюмку на сенсоре до включения, то для того, чтобы сенсор среагировал, нужно уже будет поднести к нему что-то большего размера (например руку или большой стакан), так как срабатывание датчика происходит если измеренная ёмкость окружающей среды больше референсной. При фиксации в корпусе референсная ёмкость будет достаточно большой, чтобы не реагировать на каждую пылинку, пролетающую мимо, а только на предметы, находящиеся вблизи, ведь ёмкость зависит не только от площади (размеров) детектируемого предмета, но и от расстояния до него - чем ближе, тем больше. Следовательно, если датчик плохо реагирует на рюмку/стакан (сбрасывается или не реагирует вообще, однако на палец без проблем) то стоит либо уменьшить расстояние от рюмки до пластины сенсора, либо увеличить площадь самой пластины. Так же держите сигнальные и силовые провода подальше от площадок сенсоров либо экранируйте их во избежание помех.
  • Если планируется делать устройство на макс. 4 рюмки, то TTP224 Ваш выбор. К тому же, некоторые наливаторостроители говорят, что этот модуль менее капризен, чем TTP229.
  • Повышающий преобразователь. По результатам теста тут, модуль DD03AJTA предпочтительнее чем народный MT3608
  • При любой непонятной ситуации или странном поведении устройства рекомендуется сначала произвести сброс настроек (очистка EEPROM) в сервисном меню или любым другим способом.
  • Зависает или совсем не работает OLED дисплей? Добавьте подтягивающие резисторы (4.7к) на линии i2c. То есть один между VCC и A4, второй между VCC и A5. Если не работает с двумя резисторами, попробуйте оставить один только на A4 (sda).
  • Ошибка компиляции: #error "Not ATmega328P board!". На данный момент поддерживаются только платы на ATmega328P (Uno, Nano, Mini).
  • Параметры из Config.h не учитываются после прошивки - чтобы эти параметры вступили в силу - сбростьте настройки по умолчанию (коими и являются все из Config.h) в сервисном меню (вход зажатием основной кнопки до окончания стартовой анимации), либо удержанием основной кнопки в течении 5секунд до появления надписи "Сброс настроек" в любом рабочем режиме.
  • Серводвигатель постоянно вращается без остановки - это сервопривод постоянного вращения (без обратной связи по положению). Для данного проекта не подойдёт. Нужен такой, который имеет определённый диапазон установки положения (обычно 120 - 180 градусов).
  • Серводвигатель постоянно дёргается, моргает дисплей и/или светодиоды - Причин может быть много, но в большинстве случаев это проблемы с питанием (нехватка мощности, помехи, неисправный преобразователь напряжения(повышайка)). Рекомендую установить аккумулятор (18650 Li-Ion например, можно несколько штук параллельно для увеличения ёмкости). Желательно новый, не стоит на этом экономить.
  • Иногда дёргается сервопривод. В прошивке встроена дополнительная библиотека Adafruit TicoServo для управления серводвогателем. В некоторых случаях сервопривод работает с ней стабильнее. Для использования этой библиотеки нужно:
    • Поменять местами провода на пинах D5 и D10
    • В файле Config.h так же поменять эти пины: #define SERVO_PIN 10 и #define ENC_CLK 5
    • В файле GyverDrink_VICLER_MOD раскомментировать строку #define USE_TICOSERVO
  • Серводвигатель не поворачивается на 180 градусов. Увы и ах, не все сервоприводы способны поворачиваться на 180 градусов. Тут либо замена на другой, проверенный привод (читать предыдущий спойлер), либо конструкция устройства под имеющийся.
  • Как подключить TTP224/TTP229 к Arduino? На модулях TTP есть ножки, обозначенные как выходы (OUT1, OUT2 и т.д). Вот их и подключаем к пинам A0, A1, A2... (#define SW_PINS в Config.h).
  • Светодиоды не реагируют при срабатывании датчиков (все, либо после какого-то определённого светодиода). Если неисправен один светодиод в цепи, то все последующие (подключенные после него) работать не будут.
  • На краю OLED дисплея полоса на всю высоту из хаотично расставленных пикселей? Смените контроллер дисплея с SSD1306 на SH1106 или наоборот.
  • Проблемы с контроллером LGT8F328p (например китайский клон WavGat) ? Инструкция от @Fedor73
Настройка

В прошивке есть конфигурационный файл Config.h,(нажмите, чтобы ознакомиться) в котором производятся все натройки устройства, такие как тип дисплея (олед или семисегментный), тип привода (шаговик или серво), количество рюмок, назначение пинов и многих других. Назначение каждого параметра описанно в комментарии к нему. По умолчанию прошивка без изменений полностью совместима с оригинальным проектом Наливатора от Alex Gyver.
На версии с OLED дисплеем в файле Config.h достаточно выбрать тип дисплея и настроить первые 6 параметров (в секции основные настройки). Все остальные настройки устройства можно провести через меню дисплея. Для того, чтобы параметры из Config.h вступили в силу, нужно сбросить настройки в сервисном меню, либо удержанием основной кнопки в течении 5секунд до появления надписи "Сброс настроек"

Актуальная прошивка доступна для скачивания в GitHub репозитории
 
Изменено:

Комментарии

VICLER

★★★★★★✩
9 Дек 2019
801
656
Hamburg
Эта тема для обсуждения проекта Der Наливатор, созданного на основе прошивки от Alex Gyver - GyverDrink.


С начала устранения пары багов до сегодняшнего момента, прошивка раздулась и обзавелась дополнительным функционалом. Из ключевых особенностей в сравнении с оригинальной версией:
  • Поддержка нескольких типов графических OLED дисплеев с диагоналями 0.96", 1.3", 1.54", 2.42" на контроллерах SSD1306, SSD1309, SH1106.
  • Поддержка (не замена!) шагового двигателя вместо сервопривода для более плавных и бесшумных движений на любой диапазон углов (от 0 до 360 градусов).
  • Автономность засчёт питания устройства от аккумулятора с мониторингом напряжения и заряда.
  • Возможность установки разного объёма жидкости для каждой рюмки отдельно.
  • Дополнительный статус-светодиод, сигнализирующий об актуальном режиме/статусе.
  • Ведение статистики
  • Все необходимые библиотеки для работы устройства "вшиты" в проект, ничего дополнительного искать и устанавливать не требуется.

scheme2.png
scheme3.png
НазваниеКорпусПроизводительUGS(th)/VUDS / VID / AP / WRDS,on / mΩПримечаниеЦена / €
IRLML6244SOT-23IRF0,5-1,1206,31,3210,13
SI2302DSSOT-23Vishay0,65-4,52061,25702,5V LL, очень дёшево0,01
IRFP4310ZTO-247ACirf2,0-4,01001202804,81,80
IRFP450TO-247irf2,0-4,0500141904001,20
IRF530TO-220irf2,91001694160LIN0,44
IRL3103TO-220ABirf1,0306494124,5V LL, Qg=33nC (!)0,95
IRF730ATO-220ABirf2,0-4,54005,5741000Qg=22nC (!)0,54
IRFP064TO-247ACirf2,060703009Qg=190 nC1,65
IRF3205TO-220ABirf2,05511020080,69
IRL3803TO-220ABirf1,03014020064,5V LL, Qg=140nC0,96
IRF540TO-220ABirf31002815077LIN0,52
IRF7401SO-8irf2,7208,72,0222,7V LL0,45
IRF7403SO-8irf4,85308,52,5224,5V LL0,42
IRF7413SO-8irf3,03013,02,5114,5V LL0,41
BUZ11TO-220ST4,05033,090,030LIN0,50
BSS83SOT143NXP2,0100,050,2345000не путать с BSS83P0,10
BS170TO-92gs2,0600,30,835000LIN0,13
BSN20SOT-23gs1,8500,180,3560004,5V LL, LIN0,092
BSS138SOT-23div0,8-1,6500,220,3620005V LL, LIN0,06
BSS123SOT-23div0,8-1,61000,170,3610000 @ 4,5V,4,5V LL, LIN0,06
IRFP2907TO-247ACirf4,0752094704,52,70
2N7000TO-92ON3,0600,20,3550004,5V LL, LIN0,13
BS107TO-92ON, Phi3,02000,250,356400/140002,6V LL; LIN0,18
BS108TO-92ON, Phi2,02000,250,3580002V LL; LIN0,14
BUK100TO-220Phi3,05013,540125Защита от перегрузки и ESD1,40
IRL3705NTO-220ABirf2,05589170104V LL, Qg=98nC1,20
BUZ72ATO-220Infineon4,01009,0402505V LL, LIN0,45
IRLZ34NTO-220irf2,5553068354V LL, LIN0,39
IRLZ44NTO-220irf25547110224V LL, LIN0,49
IRLML2502SOT-23irf1,2204,21452,5V LL0,17
IRF1404TO-220ABirf4,0402023334-1,10
IRL1004TO-220irf2,7401302006,5-1,25
IRL530TO220, D2Packirf210015,0881600,57
IRF830TO220ABirf2,0-4,55005,0741400LIN0,57
IRF840TO220ABirf2,0-4,05008,01258500,57
FDC645NSuperSOT-6Fairchild1,5305,50,8/1,630-0,7
BSP297SOT-223Siemens/Infineon0,8-2,42000,651,86000200V UDS, SMD и 4,5VLL, LIN (редкая комбинация)0,56
IRF7455SO-8irf4,530152,57,51,04
SI4442DYSO-8vis2,530222,55/4,5V1,64
IRLU2905TO251, DPackirf2,05542110274V LL0,54
IRFD014HEXDIP/DIP4irf2,0-4,0601,71,32000,52
IRFD024HEXDIP/DIP4irf2,0-4,0602,51,31000,54
IRLD024HEXDIP/DIP4irf1,0-2,0602,51,31004V LL0,47
IRLU3717I-Pakirf2,0201201,5/8944,5V LL, Qg=21nC,1,15
IRFP3703TO-247ACirf4,0302102302,85,08
IRF3710TO-220ABirf410057200230,83
IRLR7843D-Packirf2,3301641403,34,5V LL, Qg: 34nC0,70
IRF1010NTO-220ABirf45585180111,99
IRF1010ZTO-220ABirf455751407,51,99
IRLIZ44NTO-220-Fullpakirf1,0 - 2,0553045254V LL0,80
IRLU024NTO-251AAirf1,0 - 2,0551745804V LL, Qg=15 nC (!)0,40
IRFZ48NTO-220ABirf35564130140,60
IRL2505TO-220ABirf2,55510484V LL3,99
IRF7607Micro8irf1,2206,51,8302,5V LL1,89
IRF3708TO-220ABirf0,6 - 230628782,8V LL0,69
GF2304SOT-23gs1,0302,51,25135Qg=3,7nC0,05
IRLR8743I-Pak, D2PackIRF1,93050683,14,5V LL, Qg=39nC1,15
AOC2414MCSPAlpha&Omega0,5284,50,55191,2V LL, Qg=21,5nC
Ссылка на первоисточник
TTP229_configuration.png
StepMot_connection.png
  • Прокачка. Поставьте рюмку, нажмите и удерживайте кнопку энкодера.
    Прокачка проводится только в ручном режиме и только при наличии рюмки.
    Возврат крана в домашнее положение и сброс счётчика объёма жидкости происходит после снятия рюмки.
  • Режим изменяется удержанием основной кнопки в течении полусекунды.
    Ручной режим: разлив начинается только после однократного нажатия на основную кнопку.
    Авто режим: разлив начинается автоматически сразу после установки рюмки.
  • Целевой объём изменяется вращением энкодера. При одновременном нажатии и вращении энкодера, объём изменяется на 10 единиц, без нажатия на 1 единицу
  • Возможность настроить объём для каждой рюмки отдельно:
    Функция активна только если количество поставленных рюмок > 1
    При однократном нажатии на энкодер подсвечивается место рюмки, объём которой изменяется вращением энкодера. При повторном нажатии подсвечивается следующая установленная рюмка.
    Если же ни одна рюмка не подсвечивается белым, вращение энкодера изменяет объём для всех рюмок одновременно (как в обычном ручном режиме).
  • Разлив можно остановить в любое время нажатием на основную кнопку.
  • Последний выбранный объём сохраняется сразу после налива первой рюмки.
  • Дополнительный статус-светодиод подключается к светодиоду последней рюмки, активируется в STATUS_LED. Служит для индикации режимов работы.
  • Индикация заряда аккумулятора и слежение за напряжением.
    Активируется раскоментированием строки #define BATTERY_PIN ...
    При напряжении, меньшем чем BATTERY_LOW (по умолчанию 3.3В), устройство перестаёт реагировать на внешние воздействия и на дисплее мигает иконка батареи.
    Если при первом включении мигает иконка аккумулятора, но напряжение в порядке(больше, чем BATTERY_LOW) -> нажмите и удерживайте кнопку до появления меню калибровки аккумулятора.
    Для отслеживания статуса зарядки, IN+ с модуля заряда TP4056 нужно подключить к пину A6. При зарядке появится анимация заряда акб.
  • Стартовая анимация и динамическая подсветка рюмок во время и после налива.
Сервис режим:
Вход в сервис режим осуществляется удержанием основной кнопки выбора режима во время стартовой анимации до появления на дисплее надписи "SerViCE". После отпускания кнопки на дисплее появится номер этапа калибровки:
  • - 1 - На этом этапе производится настройка положений сервопривода над рюмками.
    • Уберите все рюмки. На дисплее отобразится положение парковочной позиции в градусах. При этом по краям дисплея будут отображенны штрихи (при градусе > 99, штрих только с правой стороны).
    • Вращением энкодера измените положение парковочной позиции
    • Поставьте рюмку. На дисплее отобразится номер рюмки и позиция в градусах. Вращением энкодера подстройте положение точно над рюмкой. Уберите рюмку.
    • Повторите предыдущий пункт для всех остальных рюмок.
    • После настройки позиций для всех рюмок нажмите основную кнопку изменения режима пока на дисплее не появится номер следующего этапа калибровки.
  • - 2 - На этом этапе производится калибровка таймера для налития 50мл.
    • Поставьте рюмку в любое положение. Кран встанет над этой рюмкой.
    • Нажатием на кнопку энкодера включится помпа. Удерживайте до тех пор, пока не польётся жидкость.
    • Снимите рюмку и поставьте пустую в любое положение.
    • Удерживайте кнопку энкодера, пока не нальётся ровно 50мл.
    • Снимите рюмку. Нажмите основную кнопку изменения режима. Если мониторинг АКБ активен, на дисплее отобразится следующий номер этапа калибровки. В обратном случае калибровка оконченна. На дисплее отобразится основной объём.
  • - 3 - На этом этапе производится калибровка напряжения аккумулятора.
    • На дисплее отобразится напряжение аккумулятора в [mV].
    • Вращением энкодера подстройте отображаемое напряжение до измеренного вольтметром.
    • Нажмите основную кнопку изменения режима. Калибровка оконченна. На дисплее отобразится основной объём.
  • При зажатии кнопки выбора режима более 5 секунд, происходит сброс настроек из памяти (TIME_50ML, SHOT_POSITIONS, PARKING_POS и BATTERY_CAL) до первоначальных, прописанных в Config.h
  • Наличие полноценного, графического меню. Вход/Выход зажатием основной кнопки более полусекунды. Выход из подменю в основное однократным нажатием.
  • Калибровка объёма за единицу времени, калибровка углов сервопривода для рюмок и калибровка напряжения аккумулятора осуществляется в сервисном меню. Вход в сервисное меню осуществляется зажатием основной кнопки во время стартовой анимации.
  • Возможность изменять настройки прошивки прямо в меню. Для этого нажмите на кнопку энкодера на параметре и вращением измените его значение.
  • Ведение статистики. Количество налитых рюмок, объём за сеанс (до выключения устройства) и общий объём, сохраняемый в памяти. При нажатии на кнопку энкодера, выбранное значение сбрасывается

Обязательно к прочтению
Очень часто проблемы возникают из-за некачественной пайки и остатков флюса на компонентах. Обязательно после пайки, до подачи питания, тщательно прочистить все места пайки спиртосодержащим средством и щёткой!
  • Зачастую проблемы с серводвигателем возникают из-за плохого качества самого привода. Дешёвые серво (хоть и цена это не первостепенный показатель качества, но всё же дешевле 6-7$ за серво микро размера брать не советую). Обратите внимание на фирму-производителя. На приводе должен быть лейбл с граматически правильным написанием фирмы (Например оригинальное название фирмы Tower Pro, не TowerPro и не Towerpro). Для данного проекта (и не только) рекомендую привод EMAX ES08MD II
  • Сенсоры TTP229 не стоит тестировать просто лежащими на столе и не зафиксированными (или приклееными абы как на коленку). Эти датчики, в отличии от обычных механических выключателей, очень капризные к окружающей среде и требуют особого подхода. При подаче питания, они анализируют ёмкость между входом (пластиной, площадкой) и окружающей её средой. Измеренная ёмкость является референсной (с которой будут сравниваться последующие изменения ёмкости) до отключения питания. Поэтому во время подачи питания не следует ставить вблизи сенсора какие-либо предметы. Если оставить рюмку на сенсоре до включения, то для того, чтобы сенсор среагировал, нужно уже будет поднести к нему что-то большего размера (например руку или большой стакан), так как срабатывание датчика происходит если измеренная ёмкость окружающей среды больше референсной. При фиксации в корпусе референсная ёмкость будет достаточно большой, чтобы не реагировать на каждую пылинку, пролетающую мимо, а только на предметы, находящиеся вблизи, ведь ёмкость зависит не только от площади (размеров) детектируемого предмета, но и от расстояния до него - чем ближе, тем больше. Следовательно, если датчик плохо реагирует на рюмку/стакан (сбрасывается или не реагирует вообще, однако на палец без проблем) то стоит либо уменьшить расстояние от рюмки до пластины сенсора, либо увеличить площадь самой пластины. Так же держите сигнальные и силовые провода подальше от площадок сенсоров либо экранируйте их во избежание помех.
  • Если планируется делать устройство на макс. 4 рюмки, то TTP224 Ваш выбор. К тому же, некоторые наливаторостроители говорят, что этот модуль менее капризен, чем TTP229.
  • Повышающий преобразователь. По результатам теста тут, модуль DD03AJTA предпочтительнее чем народный MT3608
  • При любой непонятной ситуации или странном поведении устройства рекомендуется сначала произвести сброс настроек (очистка EEPROM) в сервисном меню или любым другим способом.
  • Зависает или совсем не работает OLED дисплей? Добавьте подтягивающие резисторы (4.7к) на линии i2c. То есть один между VCC и A4, второй между VCC и A5. Если не работает с двумя резисторами, попробуйте оставить один только на A4 (sda).
  • Ошибка компиляции: #error "Not ATmega328P board!". На данный момент поддерживаются только платы на ATmega328P (Uno, Nano, Mini).
  • Параметры из Config.h не учитываются после прошивки - чтобы эти параметры вступили в силу - сбростьте настройки по умолчанию (коими и являются все из Config.h) в сервисном меню (вход зажатием основной кнопки до окончания стартовой анимации), либо удержанием основной кнопки в течении 5секунд до появления надписи "Сброс настроек" в любом рабочем режиме.
  • Серводвигатель постоянно вращается без остановки - это сервопривод постоянного вращения (без обратной связи по положению). Для данного проекта не подойдёт. Нужен такой, который имеет определённый диапазон установки положения (обычно 120 - 180 градусов).
  • Серводвигатель постоянно дёргается, моргает дисплей и/или светодиоды - Причин может быть много, но в большинстве случаев это проблемы с питанием (нехватка мощности, помехи, неисправный преобразователь напряжения(повышайка)). Рекомендую установить аккумулятор (18650 Li-Ion например, можно несколько штук параллельно для увеличения ёмкости). Желательно новый, не стоит на этом экономить.
  • Иногда дёргается сервопривод. В прошивке встроена дополнительная библиотека Adafruit TicoServo для управления серводвогателем. В некоторых случаях сервопривод работает с ней стабильнее. Для использования этой библиотеки нужно:
    • Поменять местами провода на пинах D5 и D10
    • В файле Config.h так же поменять эти пины: #define SERVO_PIN 10 и #define ENC_CLK 5
    • В файле GyverDrink_VICLER_MOD раскомментировать строку #define USE_TICOSERVO
  • Серводвигатель не поворачивается на 180 градусов. Увы и ах, не все сервоприводы способны поворачиваться на 180 градусов. Тут либо замена на другой, проверенный привод (читать предыдущий спойлер), либо конструкция устройства под имеющийся.
  • Как подключить TTP224/TTP229 к Arduino? На модулях TTP есть ножки, обозначенные как выходы (OUT1, OUT2 и т.д). Вот их и подключаем к пинам A0, A1, A2... (#define SW_PINS в Config.h).
  • Светодиоды не реагируют при срабатывании датчиков (все, либо после какого-то определённого светодиода). Если неисправен один светодиод в цепи, то все последующие (подключенные после него) работать не будут.
  • На краю OLED дисплея полоса на всю высоту из хаотично расставленных пикселей? Смените контроллер дисплея с SSD1306 на SH1106 или наоборот.
  • Проблемы с контроллером LGT8F328p (например китайский клон WavGat) ? Инструкция от @Fedor73
Настройка

В прошивке есть конфигурационный файл Config.h,(нажмите, чтобы ознакомиться) в котором производятся все натройки устройства, такие как тип дисплея (олед или семисегментный), тип привода (шаговик или серво), количество рюмок, назначение пинов и многих других. Назначение каждого параметра описанно в комментарии к нему. По умолчанию прошивка без изменений полностью совместима с оригинальным проектом Наливатора от Alex Gyver.
На версии с OLED дисплеем в файле Config.h достаточно выбрать тип дисплея и настроить первые 6 параметров (в секции основные настройки). Все остальные настройки устройства можно провести через меню дисплея. Для того, чтобы параметры из Config.h вступили в силу, нужно сбросить настройки в сервисном меню, либо удержанием основной кнопки в течении 5секунд до появления надписи "Сброс настроек"

Актуальная прошивка доступна для скачивания в GitHub репозитории
 
Изменено:

Dipfer

✩✩✩✩✩✩✩
27 Янв 2021
7
0
Подскажите какие трубки берете для разлива и как их гнете
 

Vitals

✩✩✩✩✩✩✩
9 Мар 2023
23
4
...лично у меня всё из нержавейки, поэтому и трубка разлива из нее. Внешний диаметр 6мм, толщина стенки 1мм. .загнул носик, припаял отвод под 90град и крепление для качалки сервы.
 

shalim

★✩✩✩✩✩✩
12 Ноя 2022
84
26
@Dipfer,
Трубка - латунь. Полируешь и смотрится отлично.
Гибка: трубогиб механический
Два вечера убил на гибку вручную разными способами. Грел, морозил, трамбовал содой и солью.....результат не нравился. Купил трубогиб - с 1 й попытки все отлично получилось
 

Vik975

✩✩✩✩✩✩✩
18 Апр 2020
1
0
Пробовал залить прошивку в заменитель Nano, та которая LGT8F328P, лезут ошибки. Просьба к Vicler, если не сложно, сделать прошивку и для них. Очень интересные платы в плане цены, и многие проекты на них заливаются и работают без проблем.
 

shalim

★✩✩✩✩✩✩
12 Ноя 2022
84
26
Коллеги, нужна помощь.
IMG_20230521_141654.jpg
Config.h:
#define DISPLAY_TYPE 1
#define NUM_SHOTS 6
#define ENCODER_TYPE 1
#define ENCODER_DIR 0
#define STATUS_LED 80
#define BATTERY_PIN A7
#define CHARGER_PIN A6
#define MOTOR_TYPE 1
// ======================== Настройка шагового мотора ========================
#define SMOOTH_ALGORITHM

/■■■■■■■■■■■■■■■■■■■■■ Параметры, изменяемые в сервис режиме ■■■■■■■■■■■■■■■■■■■■■■/
#define TIME_50ML 7100
#define MAX_VOLUME 250
#define MOTOR_REVERSE 1
#define BATTERY_CAL 1.004 // фактор для калибровки напряжения акб
// позиции серводвигателя над рюмками. От первой к последней
#define SHOT_POSITIONS 0, 36, 72, 111, 143, 180
#define TIMEOUT_OFF 10
#define MOTOR_SPEED 75

/■■■■■■■■■■■■■■■■■■■■■■■■■■■ Настройки OLED дисплея ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■/
#define OLED_CONTRAST 40
#define WIRE_SPEED 400

Ну еще надпись поменял при загрузке.

При разливе рюмок наливатор бессистемно уменьшает выставленное значение на 1 мл.
Может недолить в единственную рюмку, а может налить нормально.
Может недолить в первую поставленную, а может не долить во вторую, а первую налить полной.
Может две первые налить полными, а третью недолить 1 мл.
Может наоборот: первые две недолить по 1 мл, а последнюю налить по выставленному значению.
За время употребления 330 мл - понять по какой системе он не доливает я так и не смог. Единственно понятно, что он всегда не доливает ровно 1 мл.
Произошло это после внесения вышеперечисленных изменений в прошивку. До этого все было нормально.

Подскажите, куда копать, что я мог случайно изменить?
 

shalim

★✩✩✩✩✩✩
12 Ноя 2022
84
26
@Гулинский,
Спасибо. Попробую. Был момент, при котором он зависал при включении. Попробовал уменьшить частоту экрана - вроде все прошло.
Завтра перепрошью со старым значением частоты.
P.S. Если не трудно - поясните в чем связь частоты передачи данных на экран и недолива? Где-то в голове есть мысль, что дело в прерываниях, но правильна ли она?
 

Гулинский

✩✩✩✩✩✩✩
27 Май 2022
9
5
@shalim, частоту підвищуй однозначно, проблема з зависанням в основному є на дисплеях sh1106 (1,3”). Допомагає підтягуючий резистор 4,7ком але в залежності від того що прийшло з Алі або на а4 і а5 (два) або лише на а4 (в описі є інформація). Інфа 100%
 
  • Лойс +1
Реакции: shalim

shalim

★✩✩✩✩✩✩
12 Ноя 2022
84
26
@Гулинский, За этот совет тоже спасибо. Вы о нем писали на прошлой странице. Держу его в голове как следующую доработку.
 

ren1313

✩✩✩✩✩✩✩
18 Мар 2020
3
0
Присоединяюсь к вопросу пост 2450. В процессе возвратного движения шаговик ПОСТОЯННО физически проскакивает парковку на 1-2 градуса. Из-за этого с каждым разом угол поворота гусака ФИЗИЧЕСКИ смещается относительно заданной позиции на 1-2 градуса. Как исправить
 

shalim

★✩✩✩✩✩✩
12 Ноя 2022
84
26
@ren1313, 1. Попробуйте установить значение параметра #define MOTOR_SPEED 75 в прошивке. Перед заливкой обязательно очистите EEPROM.
2. Вариант хуже - замена шаговика.
 

shalim

★✩✩✩✩✩✩
12 Ноя 2022
84
26
@ren1313, Перед покупкой нового шаговика проверь настройку драйвера. На более высокой силе тока греться шаговик точно не будет (просто не успеет), а работать будет стабильнее. Я к сожалению сначала поменял шаговик (на новом эта проблема частично отпала), а только потом перенастроил драйвер (изначально настраивал по рекомендованным значениям).

Под спойлером фото двух шаговиков. У них ПОЧТИ нет отличий, но тот который слева (с синей платой) работал с пропуском шагов. Тот который справа (с зеленой платой) работал на тех же настройках драйвера более стабильно. Оба китайцы, но левый я брал на Алике, а правый уже у нас в обычном магазине. Правый сделан несколько лучше и аккуратнее чем левый. Внутрь не заглядывал, оба работают от одного и того же драйвера.
Возможно эта информация чем-то поможет при выборе.
IMG_20230413_200733.jpg
IMG_20230413_200804.jpg
IMG_20230413_200813.jpg
IMG_20230413_200840.jpg
 

ВладимирЗА

✩✩✩✩✩✩✩
24 Май 2023
7
1
Всем, здравия и творческих побед! Не могу запустить шаговик. Мотор 28byj-48, др-р А4988, NANO 328. Дорожку в движке перерезал. Может что-то не так делаю. В скетче поставил 1, где выбор мотора или сервы (#define MOTOR_TYPE 1). Залил. Вроде все работает. Но шаговик молчит. Осциллографом смотрю на пинах Ардуинки: DIR (4 пин) включается, EN (2 пин) включается, STEP (5 пин) в нуле и ничего не проскакивает. Что я не доделал. Ветку форума копаю сначала, ...с конца. Нужного обсуждения пока не попалось.
 

felix666

✩✩✩✩✩✩✩
3 Май 2023
6
0
Подскажите, пжста, а этот мод работает только на процессоре ATmega328P? У меня 168 и при компиляции ругается

GyverDrink_VICLER_MOD:115:2: error: #error "Not ATmega328P board!"
Базовая версия наливатора работает отлично на моём проце.
 

ren1313

✩✩✩✩✩✩✩
18 Мар 2020
3
0
стр.45 пост 1104 внес такие изменения в код

#elif (MOTOR_TYPE == 1)
if (!stepper.getState() || ENDSTOP_STATUS) {
while (homing()); //DS continue till the switch
#endif
systemON = false; // выключили систему
parking = true; // на месте!

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

chip22

✩✩✩✩✩✩✩
29 Апр 2023
7
0
Здравствуйте.

Подскажите как подключать микропереключатель?

Контакты
COM , NO, NC

Один контакт к пину ардуино другой на минус, какой куда?
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,159
1,267
Москва
Я же тебе написал, это как кнопка, один из контактов COM , а из 2-х других выбираешь 1, в одном случае будет работать на замыкание, в другом на размыкание. Как в проекте я не помню. Т.е. в любом случае 1 контакт будет незанятый
 

viktor1703

★★★✩✩✩✩
9 Дек 2021
531
131
@ВладимирЗА, по поводу поста 2516. Питание мотора и питание драйвера это разные питания, их нужно подключать обязательно, так же обязательно нужно, чтобы "земля" Ардуино и драйвера были обязательно соединены.Закорочены Reset со Sleep? Еще А4988 очень не любят когда физически отключаешь мотор, предварительно не отключив питание. Сам угробил несколько штук.
 

Вложения

ВладимирЗА

✩✩✩✩✩✩✩
24 Май 2023
7
1
Убери BOLD
Спасибо, viktor1703. Все эти тонкости сделаны. Питание мотора и логики от одного "+". Но где сигнал STEP с ардуинки. Я его не вижу осциллографом в тот момент, когда должно быть позицианирование крантика. Сигналы DIR и EN вижу. Получается, драйвер не причем (STEP во время измерения откидывал). На этом пине (5) предполагаю увидеть меандр порядка 2mS. Но нетУ

Ребяты! Жду помощи. (изложил в посте 2516). Прошивку закачал VERSION 7.8. Где собака порылась?Моя схема..jpgДиаграмма.jpg