Копилка монет на arduino: оптическое распознавание, питание от 18650

Копилка монет на Arduino

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

---

Принцип работы: оптическое измерение монеты

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

Когда монета пролетает через щель, она частично закрывает поток ИК‑излучения. Фототранзистор фиксирует уменьшение света, а через него - падение напряжения. Важный момент:

- маленькая монета (1 рубль) закрывает луч минимально - падение напряжения небольшое;
- крупная монета (5 рублей) перекрывает свет сильнее - провал напряжения больше.

Микроконтроллер не ограничивается одной точкой измерения. Сигнал с фототранзистора записывается как функция времени: пока монета летит, контроллер с высокой частотой считывает напряжение на аналоговом входе. В итоге получается кривая: "падение напряжения - время пролета".

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

Такой подход позволяет:

- отличать похожие по размеру монеты по совокупности параметров;
- игнорировать случайные помехи и разовые всплески шума;
- учитывать различия в скорости пролета (монета может падать быстрее или медленнее).

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

---

Логика работы и прошивка

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

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

Исходный код написан для платформы Arduino, с использованием прерываний и таймеров, чтобы не пропустить ни одной монеты и одновременно снижать нагрузку на микроконтроллер в периоды простоя. Логика построена так, чтобы активно "просыпаться" только в момент пролета монеты и при выводе информации на экран.

---

Питание и зарядка: модуль на 18650

В качестве источника питания используется литий‑ионный аккумулятор формата 18650. Для него реализован классический модуль зарядки и защиты на трех специализированных микросхемах:

- TP4056 - контроллер зарядки, обеспечивает стабильный ток до 1 А и заряжает аккумулятор до напряжения 4,2 В.
- DW01A - микросхема защиты, контролирующая напряжение и ток. Она отключает аккумулятор при:
- переразряде (ниже ~2,4 В);
- перезаряде (выше ~4,3 В);
- токовой перегрузке или коротком замыкании.
- FS8205A - сдвоенный N‑канальный MOSFET, который физически разрывает цепь между аккумулятором и нагрузкой по сигналу контроллера защиты, блокируя дальнейший разряд или заряд до подключения зарядного устройства.

Индикация состояния реализована двумя светодиодами:
- красный светится во время зарядки;
- зеленый загорается при полном заряде.

Такая схема позволяет безопасно использовать обычные "голые" 18650 без встроенной защиты и не бояться глубокого разряда или аварийных ситуаций.

---

Повышающий преобразователь: питание Arduino и дисплея

Так как напряжение аккумулятора изменяется в широких пределах (примерно от 4,2 В до 3 В и ниже), для стабильного питания Arduino и дисплея используется повышающий DC‑DC преобразователь на микросхеме MC34063.

Параметры преобразователя:

- вход: 3-4,2 В (напряжение аккумулятора);
- выход: стабильные 5 В для питания логики и экрана.

Изначально была реализована схема, в которой:

- Arduino питалась напрямую от аккумулятора;
- MC34063 и дисплей включались отдельно, по сигналу с Arduino, через MOSFET.

У такой конфигурации обнаружился критичный минус: уже при падении напряжения аккумулятора до ~3,9 В микроконтроллер начинал работать нестабильно и фактически выключался, хотя реальный заряд еще был далеко от минимально допустимого. Это сильно сокращало реальное время автономной работы.

---

Итоговая рабочая схема питания

После доработки была выбрана другая концепция:

- Arduino получает питание от постоянно работающего повышающего преобразователя MC34063 (5 В стабильно);
- дисплей включается и выключается отдельно через транзисторный ключ по команде микроконтроллера.

В результате:

- напряжение на входе контроллера остается стабильным 5 В практически до тех пор, пока аккумулятор не разрядится до 3 В;
- логика не "сыпется" при просадках аккумулятора;
- копилка сохраняет полную работоспособность почти до предельного разряда, контролируемого DW01A.

Однако у этого решения есть обратная сторона - рост потребления энергии.

---

Энергопотребление и автономность

Измерения показали:

- активный режим (работает контроллер, оптика, дисплей): около 124 мА;
- режим сна: примерно 4 мА, из них:
- всего ~0,07 мА потребляет сама Arduino;
- примерно 3,93 мА - собственное потребление MC34063.

Получается, что в "спящем" режиме почти 97% тока тратится впустую на работу преобразователя и лишь 3% - на микроконтроллер. При аккумуляторе 2000-3000 мА·ч это даёт около 20 дней автономной работы при типичном режиме использования.

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

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

---

Понимание ошибок и возможная оптимизация

Перечень допущенных ошибок стал очевиден, когда началась разработка другого автономного устройства, ориентированного на сверхнизкое потребление. При оптимизации того проекта (уменьшение частоты микроконтроллера, снижение порога BOD) стало ясно, что те же приемы идеально подошли бы и для копилки.

Ключевая проблема исходной схемы:
Arduino во время сна продолжала питаться от постоянно включенного повышающего преобразователя. Фактически даже в глубоком сне система тащила на себе потери неэффективной микросхемы питания.

Более грамотный вариант:

- питать сам преобразователь через транзисторный ключ;
- подключить Arduino напрямую к аккумулятору без промежуточного DC‑DC в режиме сна;
- снизить порог срабатывания BOD (Brown-out Detector), чтобы микроконтроллер оставался работоспособным до напряжений ~2,7 В.

В такой схеме:

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

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

---

Борьба с помехами от MC34063

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

В копилке проявлялось следующее:

- на раннем этапе Arduino спорадически "видела" несуществующие монеты;
- система периодически засчитывала пролеты, которых физически не было.

Навесной монтаж

На прототипе, собранном навесным монтажом, ситуация решалась относительно просто:
достаточно было поставить электролитический конденсатор емкостью 470 мкФ на линию питания, и помехи заметно уменьшались. Небольшая длина проводов, свободная разводка "по воздуху" и расстояния между элементами позволяли конденсатору делать свое дело.

Переход на печатную плату

После перехода на печатную плату и более плотной компоновки одного конденсатора оказалось недостаточно. Шум от MC34063 по дорожкам проникал в аналоговую часть и вызывал ложные срабатывания.

Для надежного подавления помех потребовался комплексный подход:

1. LC‑фильтр на выходе преобразователя с частотой среза около 2,3 кГц.
Он сглаживает высокочастотные пульсации и снижает амплитуду шумов, текущих по линии питания Arduino и датчиков.

2. Оптимизация топологии платы:
- сам преобразователь был физически вынесен на максимально возможное расстояние от микроконтроллера;
- цепи, связанные с фототранзистором, уводились подальше от "шумных" узлов и мощных токов.

3. Разделение земель:
- аналоговая земля, к которой подключен фототранзистор и опорные элементы, отделена от цифровой и "силовой";
- соединение аналоговой и цифровой земли сделано в одной точке (звездой), что уменьшило протекание шумных токов через чувствительные участки.

При необходимости дополнительно можно применять:

- экранирование аналоговых линий (подведение их по внутренним слоям либо рядом с полигоном земли);
- добавление RC‑фильтров непосредственно в цепь сигнала с фототранзистора;
- программную фильтрацию (усреднение, подавление коротких импульсов).

---

Печатная плата и конструктивные особенности

Печатная плата была полностью спроектирована с нуля в профессиональной CAD‑системе. При проектировании учитывались:

- разделение аналоговой и цифровой частей;
- минимизация длины критичных линий (сигналы с фототранзистора, линии питания);
- грамотная прокладка "толстых" дорожек для цепей питания и зарядки;
- размещение крупных компонентов (аккумуляторный отсек, разъемы, преобразователь) так, чтобы упростить сборку и обслуживание.

Особое внимание уделено:

- удобному расположению разъема для зарядки;
- доступу к аккумулятору без полного разбора устройства;
- надежному креплению платы внутри корпуса, чтобы вибрации или падения не вызывали отлома компонентов.

---

Корпус на 3D‑принтере: не только эстетика

Корпус был создан с нуля под конкретную геометрию платы, монетоприемника и дисплея. Это позволило:

- точно выровнять оптическую пару (ИК‑светодиод и фототранзистор), обеспечив стабильное перекрытие луча каждой монетой;
- сделать направляющие для монет, чтобы они всегда проходили через зону измерения одинаковым образом;
- реализовать отдельный отсек под аккумулятор 18650 с возможностью его быстрой замены;
- вывести дисплей на лицевую панель с аккуратным окном и защитой от царапин.

Дополнительно в корпусе можно реализовать:

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

---

Калибровка и точность распознавания монет

Чтобы копилка уверенно различала монеты, требуется процедура калибровки:

1. Выбирается режим обучения.
2. Для каждого номинала последовательно несколько раз пропускаются монеты через монетоприемник.
3. Микроконтроллер записывает несколько эталонных кривых и усредняет их, формируя "паспорт" монеты:
- типичная глубина провала напряжения;
- средняя длительность пролета;
- характер изменения сигнала на входе.

При дальнейшем использовании каждая новая кривая сравнивается с этими эталонами. При необходимости можно:

- задать допуски по максимальному отклонению формы сигнала;
- отбрасывать сильно выбивающиеся измерения (например, если монета застряла или упала боком).

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

---

Возможные улучшения и развитие проекта

Проект умной копилки легко расширяется и модернизируется:

- Замена MC34063 на более эффективный преобразователь с малым током покоя. Это сразу увеличит автономность без радикальной перепайки остальной схемы.
- Переход на более экономичный микроконтроллер или использование "Pro Mini" с максимально ранним уходом в сон и отключением неиспользуемых модулей (АЦП, таймеры).
- Добавление беспроводной связи (например, простейший радиоканал или Bluetooth‑модуль) для передачи статистики на смартфон или компьютер.
- Ведение истории накоплений во внешней EEPROM или во внутренней памяти с сохранением между отключениями питания.
- Расширение интерфейса - добавление меню, настройки целей накопления, звуковой индикации достижения цели.

Также можно улучшить пользовательский опыт:

- добавить режим "быстрого просмотра" - кратковременное включение дисплея по нажатию кнопки или по срабатыванию датчика приближения;
- реализовать отображение не только общей суммы, но и графика накопления по дням/неделям (при наличии часов реального времени).

---

Итог

В результате переработки классической идеи получилась продвинутая копилка на Arduino, которая:

- автоматически распознает номиналы монет по оптическому "отпечатку";
- ведет детальную статистику по каждой монете и сумме;
- работает от аккумулятора 18650 с функцией безопасной зарядки и защиты;
- использует повышающий преобразователь для стабильного 5‑вольтового питания;
- демонстрирует, как важны правильная организация питания и борьба с помехами.

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

Прокрутить вверх