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 репозитории
 
Изменено:

MendeleevMaks

✩✩✩✩✩✩✩
23 Дек 2020
34
6
Всем привет!
Хотелось бы поделиться своим небольшим опытом (неудачами) в сборке наливашек (до этого никакого отношения к электронике не было). За два последних месяца собрал два, уже работающих, экспоната и один прикроватный с кальяном сейчас в стадии сборки.
1. От сервопривода отказался в пользу шагового практически сразу. Не понравилась шум при работе и отсутствие плавности
2. Постепенно отказался и от датчиков ttp229. Все работает хорошо, пока не появляется эта "ужасная" жидкость. Вообщем везде переделал на обычные концевики
3 Были проблемы с драйверами для шаговых. Почему то никак не удавалось и до сих пор не удалось настроить их на работу при подаче >5В. В одну сторону крутятся без проблем, в обратную ни в какую (tmc 2208 v 3.0 c aliexpress) Может проблема в них, может во мне, не знаю:( Но работают хорошо и от 5, так что пока к ним не лезу
4 Много мучился с загибом трубочек для краника из латуни. Пробовал и с нагревом и с заполнением их солью и запайкой по краям, но идеально все равно не получается. Сейчас вот для последнего думаю купить диспенсер для воды и его как то использовать. либо целиком, либо только трубку
Со всем остальным все хорошо и прошивка отличная! Лучшая, на мой взгляд:)
Спасибо VICLER!!!
И пожелание: Если это не очень сложно, то возможно ли в прошивку добавить режим русской рулетки?! По-моему интересная задумка!
Вот мои
 

Вложения

kostyaskv

★✩✩✩✩✩✩
18 Ноя 2019
68
25
Всем привет!
Хотелось бы поделиться своим небольшим опытом (неудачами) в сборке наливашек (до этого никакого отношения к электронике не было). За два последних месяца собрал два, уже работающих, экспоната и один прикроватный с кальяном сейчас в стадии сборки.
1. От сервопривода отказался в пользу шагового практически сразу. Не понравилась шум при работе и отсутствие плавности
2. Постепенно отказался и от датчиков ttp229. Все работает хорошо, пока не появляется эта "ужасная" жидкость. Вообщем везде переделал на обычные концевики
3 Были проблемы с драйверами для шаговых. Почему то никак не удавалось и до сих пор не удалось настроить их на работу при подаче >5В. В одну сторону крутятся без проблем, в обратную ни в какую (tmc 2208 v 3.0 c aliexpress) Может проблема в них, может во мне, не знаю:( Но работают хорошо и от 5, так что пока к ним не лезу
4 Много мучился с загибом трубочек для краника из латуни. Пробовал и с нагревом и с заполнением их солью и запайкой по краям, но идеально все равно не получается. Сейчас вот для последнего думаю купить диспенсер для воды и его как то использовать. либо целиком, либо только трубку
Со всем остальным все хорошо и прошивка отличная! Лучшая, на мой взгляд:)
Спасибо VICLER!!!
И пожелание: Если это не очень сложно, то возможно ли в прошивку добавить режим русской рулетки?! По-моему интересная задумка!
Вот мои
Очень круто получается.(y).А концевики на таких площадках как установленны?
 

khseal

✩✩✩✩✩✩✩
3 Фев 2021
76
6
Как это должно выглядеть? Наливать только в одну рюмку из поставленных?
тут это хорошо реализовано

Правда название мушкетеры как-то на любителя =) Да и сам код посмотрел, как-то он мне не очень понравился...
 

MendeleevMaks

✩✩✩✩✩✩✩
23 Дек 2020
34
6
Очень круто получается.(y).А концевики на таких площадках как установленны?
Ну у меня практически все как у всех, за исключением отсутствия желания выводить полностью всю лапку на показ! Пока вот такие штыречки торчат, а снизу жмякают по лапке. Все это пока временно и я в поиске хорошего решения. Сейчас нахожусь в поиске прозрачных кнопок внутрь которых думаю поместить диод. Так, наверное, более гармонично смотреться будет!
Как это должно выглядеть? Наливать только в одну рюмку из поставленных?
Да. Любопытная штука. Лишней точно не будет:)
 

Вложения

Изменено:

Roman-RV

★✩✩✩✩✩✩
21 Июн 2019
51
13
45
Да и сам код посмотрел, как-то он мне не очень понравился...
Покажите Ваш код , я тоже посмотрю на него, а то написать чего хочешь можно. Название мушкетёры правится в коде на раз, как душе угодно.
 

MendeleevMaks

✩✩✩✩✩✩✩
23 Дек 2020
34
6
тут это хорошо реализовано

Правда название мушкетеры как-то на любителя =) Да и сам код посмотрел, как-то он мне не очень понравился...
Да, с названием явно промах, но все-равно здорово получилось
 

VICLER

★★★★★★✩
9 Дек 2019
801
656
Hamburg
ну даже не знаю насчёт мушкетёров. Хорошо, что авторы этой идеи прошивку не для стиральной машины придумали, было бы ещё веселее :D
я всё же за прямое назначение - наливать во все поставленные рюмки, иначе не наливатор, а обламатор какой-то😕
если бы ещё памяти было достаточно, можно было бы опционально добавить, это не сложно
 
  • Лойс +1
Реакции: vova223 и mps2

MendeleevMaks

✩✩✩✩✩✩✩
23 Дек 2020
34
6
ну даже не знаю насчёт мушкетёров. Хорошо, что авторы этой идеи прошивку не для стиральной машины придумали, было бы ещё веселее :D
я всё же за прямое назначение - наливать во все поставленные рюмки, иначе не наливатор, а обламатор какой-то😕
если бы ещё памяти было достаточно, можно было бы опционально добавить, это не сложно
Например для начала лютой драки за налитую стопку! очень хорошая функция под конец пьянки, когда уже все без сил и не знают чем себя занять:)
Предлагайте название. Русскую и Американскую не предлагать, т.к. это забито в другом проекте, а даже в двух)))
Ща, буду думать:)
 

khseal

✩✩✩✩✩✩✩
3 Фев 2021
76
6
Покажите Ваш код , я тоже посмотрю на него, а то написать чего хочешь можно. Название мушкетёры правится в коде на раз, как душе угодно.
Я свой говнокод сам боюсь смотреть, особенно который писал много лет назад. Если так интересно, на гитхабе есть какие-то ошметки, но я свой код не защищаю.

Предлагайте название. Русскую и Американскую не предлагать, т.к. это забито в другом проекте, а даже в двух)))
На досуге подумаю. Я с трудом для своего наливатора придумывал фразы вместо тостов, а то тосты из других проектов попахивают нафталином =)

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

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

Animnex

★✩✩✩✩✩✩
6 Дек 2019
25
11
Прочитал форум и прямых ответов не нашел почему нельзя использовать TTP223 и ttp226.Проблема заключалась в том что датчик отключался примерно через 10 секунд если его зажать. Надеюсь кому нить помогу этим криком души, что бы не наступить на те же грабли.
-Фото двух разных вариантов исполнения и построены на микросхеме TTP223-BA6.
1619129350097.png1619129360613.png
-Фото ttp226 хотя он построен не на ttp226 а на ttp226-809sn (это китайская версия с 28 ногами вместо 48 как у нормальной (у нормальной отключается режим энергосбережения))
1619128633717.png
Так вот, перелопатив все даташипы этих сенсоров я нашел долбанную функцию энергосбережения. Она была внедрена в каком то году да бы угодить гренписовцам. И по всем законам подлости именно в этих сенсорах эта функция встроенная и отключить ее нельзя!
Звучит это так:
"3. Low power mode The TTP223-BA6 is Low Power mode. It will be saving power. When detecting key touch, it will switch to Fast mode. Until the key touch is released and will keep a time about 12sec. Then it returns to Low Power mode. The states and timing please see below figure."
На русском (Гугл):
"3. Режим низкой мощности
TTP223-BA6-это режим низкой мощности. Это будет экономия энергии. При обнаружении касания клавиши он
переключится в быстрый режим. До тех пор, пока клавиша не будет отпущена и будет держать время около 12 секунд. Затем он
возвращается в режим низкого энергопотребления.
Состояния и сроки, пожалуйста, смотрите на рисунке ниже."
В ttp226 такая же песня. Нет ни одной инструкции в даташипе как отключить режим энергосбережения в этих моделях микросхем и на блоксхеме показано что управление таймера не регулируется ни одним выводом. Прошу внесите в шапку что такие сенсоры не подходят. Прям красными буквами, что у них стоит режим энергосбережение и через 12 секунд они отключатся и наливатор не увидит вашу рюмку.
 
Изменено:

Sher

★★✩✩✩✩✩
27 Окт 2019
190
58
Russia
ttp 224 c 4-я сенсорными площадками подойдет , там нет отключения через 12 сек ?
 

VICLER

★★★★★★✩
9 Дек 2019
801
656
Hamburg
Я где-то писал в изначальной ветке обсуждения наливатора, что TTP224 и TTP226 не подходят. Функция энергосбережения отключается на TTP224 и TTP226.Эти сенсоры подойдут для проекта, о чём и написанно в первом сообщении этой ветки. Так же подойдут некоторые TTP223, но с ними всё сложнее, так как даже при покупке нескольких штук у одного продавца некоторые могут попасться со встроенной функцией энергосбережения.
 

Animnex

★✩✩✩✩✩✩
6 Дек 2019
25
11
ttp 224 c 4-я сенсорными площадками подойдет , там нет отключения через 12 сек ?
Есть несколько вариантов исполнения этой микросхемы.
- для TTP224-ASD
на английском:
5. Fast and Low power mode selection (By LPMB pad option) The TTP224-ASD has Fast mode and Low Power mode to be selected. It depends on the state of LPMB pad. When the LPMB pin is connected to VDD, the TTP224-ASD runs in Fast mode. When the LPMB pin is opened or connected to VSS, the TTP224-ASD runs in Low Power mode. In the Fast mode response time is faster, but the current consumption will be increased. In the Low Power mode it will be saving power, but will be slowing response time for first touch. When it awaked in fast mode, the response time is the same the fast mode. In this mode when detecting key touch, it will switch to Fast mode. Until the key touch is released and will keep a time about 8sec. Then it returns to Low Power mode. The states and timing of two modes please see below figure.
на русском:
5. Быстрый и маломощный выбор режима (по опции LPMB pad) TTP224-ASD имеет быстрый режим и режим низкой мощности, который нужно выбрать. Это зависит от состояния LPMB pad. Когда вывод LPMB подключен к VDD, TTP224-ASD работает в быстром режиме. Когда контакт LPMB открыт или подключен к VSS, TTP224-ASD работает в режиме низкой мощности. В быстром режиме время отклика будет быстрее, но потребление тока будет увеличено. В режиме низкой мощности он будет экономить энергию, но будет замедлять время отклика при первом прикосновении. Когда он просыпается в быстром режиме, время отклика такое же, как и в быстром режиме. В этом режиме при обнаружении касания клавиши он переключится в быстрый режим. До тех пор, пока клавиша не будет отпущена и не будет держать время около 8 секунд. Затем он возвращается в режим низкого энергопотребления. Состояния и хронометраж двух режимов см. на рисунке ниже.

-для TTP224/TTP224N TonTouchTM
на английском:
"Have the maximum on time 120sec/64sec/16sec/ infinite by pad option (MOT1, MOT0 pin)"
на русском:
Иметь максимальное время включения 120sec/64sec/16sec/ бесконечный вариант (MOT1, MOT0 pin)
 

MendeleevMaks

✩✩✩✩✩✩✩
23 Дек 2020
34
6
Привет!
Есть проблемка с насосом. Достал его из диспенсера для воды. При подключении просто к 5В работает хорошо, но при включении в схему происходит кратковременный писк и все, воду не качает. Попробовал другой насос, так с ним все прекрасно работает! Что не так и как поправить?
 

VICLER

★★★★★★✩
9 Дек 2019
801
656
Hamburg
при включении в схему происходит кратковременный писк и все, воду не качает.
Всё остальное при этом продолжает работать? (т.е. рюмки светятся, дисплей работает, на энкодер система откликается)
 

MendeleevMaks

✩✩✩✩✩✩✩
23 Дек 2020
34
6
Всё остальное при этом продолжает работать? (т.е. рюмки светятся, дисплей работает, на энкодер система откликается)
Ну в перезагрузку не уходит, но скажем так недоливает. То есть пару цифр на дисплее меняется и переходит к следующей стопке, при этом насос не включается. Диоды светятся, дисплей работает
 
Изменено:

Sher

★★✩✩✩✩✩
27 Окт 2019
190
58
Russia
Избыточное цитирование
Привет!
Есть проблемка с насосом. Достал его из диспенсера для воды. При подключении просто к 5В работает хорошо, но при включении в схему происходит кратковременный писк и все, воду не качает. Попробовал другой насос, так с ним все прекрасно работает! Что не так и как поправить?
Напряжение при включении насоса на нем измеряли? Попробуйте вместо мосфета для проверки комутировать насос через реле.
 

Sher

★★✩✩✩✩✩
27 Окт 2019
190
58
Russia
Как добиться плавного хода сервы, можно в коде что-то с параметрами поиграться?
Сейчас стоит серва которую тут рекомендовали EMAX ES08MDII, подключил библиотеку Adafruit TicoServo, но все равно нет плавности хода, дёргает. Серву смазал, трубка тонкая и мягкая усилие не создаёт.
 

Вложения

MendeleevMaks

✩✩✩✩✩✩✩
23 Дек 2020
34
6
Напряжение при включении насоса на нем измеряли? Попробуйте вместо мосфета для проверки комутировать насос через реле.
Напряжение почему-то проседает при подключении. Если к примеру без него выставить повышайку на 5В, то при наличии насоса выходит примерно 2-3В, а реле для пробы у меня нет:( Любопытно, что с другими насосами все нормально, но хотелось бы именно с этим - вход и выход у него как раз под протянутые уже шланги силиконовые
 

Sher

★★✩✩✩✩✩
27 Окт 2019
190
58
Russia
сколько потребляет насос от 5в ? возможно брак мотора, второе не тянет повышающий модуль, тогда собирать бп из двух акб 2S делать, выше выкладывал схему. Эксперементы с повышайками я уже закончил ))
 

Эдуард_Н

✩✩✩✩✩✩✩
14 Апр 2021
22
4
А где в программе настройки цветов светодиодов подсветки рюмок?
 
Изменено:

VICLER

★★★★★★✩
9 Дек 2019
801
656
Hamburg
@Эдуард_Н, в файле Config.h в секции "дополнительные настройки". Там есть ссылка на конвертер цветов. Выбираете понравившийся и вставляете значение H из HSV в параметр LEDS_COLOR.

Или на олед дисплее в меню настроек.
 

Эдуард_Н

✩✩✩✩✩✩✩
14 Апр 2021
22
4
Избыточное цитирование
@Эдуард_Н, в файле Config.h в секции "дополнительные настройки". Там есть ссылка на конвертер цветов. Выбираете понравившийся и вставляете значение H из HSV в параметр LEDS_COLOR.

Или на олед дисплее в меню настроек.
Эти настройки для подсветки рюмок?