Приближается осень и зима, что в большинстве регионов нашей страны означает холодную погоду с долгими ночами. Идеальный способ бороться с зимним унынием и поднять настроение — зажечь несколько свечей, но горящие восковые свечи в закрытой комнате будут наполнят комнату углекислым газом, что может вызвать проблемы со здоровьем. Вот почему в этой статье мы решили рассмотреть проект электронной свечи с движущимся пламенем на основе ATtiny85 — микроконтроллере семейства AVR (кстати, именно на основе микроконтроллеров именно этого семейства построены полюбившиеся многим платы Arduino). Причина добавления микроконтроллера в наш проект состоит в том, чтобы добавить некоторые дополнительные функции, например, если вы зажжете спичку сверху нашей свечи, то свеча загорится, а если вы подуете на вершину свечи, то она погаснет. Подсвечник для нашей свечи мы изготовим с помощью 3D-печати.
Проектирование корпуса цифровой свечи и пламени с помощью Fusion360
После того, как мы определились с дизайном, мы решили использовать программу fusion 360 для разработки корпуса нашей электронной свечи.
С помощью данной программы мы разработали каркас свечи и напечатали его с помощью оборудования для 3D печати. Внешний вид пламени свечи показан на следующем рисунке.
Вы можете скачать STL-файлы как для свечи, так и для ее пламени по следующей ссылке .
Как работает искусственная свеча с движущимся пламенем?
Блок-схема проекта нашего проекта искусственной свечи показана на следующем рисунке.
Конструкция нашей электронной свечи с подвижным пламенем достаточно проста, в схеме у нас будет батарейка, которая будет питать микроконтроллер и электромагнит. Электромагнит сделан из 1” болта с медной проволокой, при этом когда микроконтроллер будет посылать триггерный импульс к MOSFET транзистору, катушка будет возбуждаться и болт будет превращаться в магнит.
Так как мы используем микроконтроллер в качестве управляющего устройства для нашего проекта, то мы решили добавить некоторые дополнительные функции к нашей свече. Например, если положить спичку на вершину свечи, то чтобы она зажглась, а если дунуть на нее, то чтобы она погасла. Это можно реализовать благодаря фоторезистору и модулю микрофона. Когда внутрь свечи будет проходит небольшой свет, то фоторезистор будет обнаруживать этот свет и зажигать свечу, а когда вы будете задувать свечу, то микрофон будет распознавать звук и выключать свет и электромагнит — именно так и будет работать наша свеча.
Необходимые компоненты
- Микроконтроллер ATtiny85 (купить на AliExpress).
- Перфорированная плата.
- MOSFET IRF540L.
- Медный провод.
- Винт с болтом.
- Янтарные или желтые светодиоды — 2 шт. (купить на AliExpress).
- Ползунковый переключатель.
- Микрофонный модуль.
- Фоторезистор (купить на AliExpress).
- Резисторы 1 Ом, 100 Ом, 1 кОм, 10 кОм (купить на AliExpress).
- Диод 1N4007 (купить на AliExpress).
- Конденсатор 680uF,16V (купить на AliExpress).
Реклама: ООО «АЛИБАБА.КОМ (РУ)» ИНН: 7703380158
Схема проекта
Схема электронной свечи на основе микроконтроллера ATtiny85 представлена на следующем рисунке.
В нашей схеме самодельный электромагнит (100 витков провода 22 SWG) управляется с помощью MOSFET, который, в свою очередь, управляется микроконтроллером ATtiny85. Когда мы включаем MOSFET, он подает питание на катушку, поэтому наш металлический болт превращается в электромагнит, и пламя свечи, изготовленное с помощью технологии 3D-печати, будет двигаться. Также мы использовали делитель напряжения с фоторезистором и резистором 1K для обнаружения света и использовали модуль микрофона для восприятия звука. Также на схеме у нас есть 2 желтых светодиода, управляемых микроконтроллером.
В представленной схеме BAT1 — это одноэлементная литиевая батарея на 3,7 В. Батарея питает всю цепь. Также мы использовали диод и конденсатор, это обязательно, потому что при включении MOSFET он создает короткое замыкание вдоль катушки, напряжение падает до 0 на долю секунды и микроконтроллер перезагружается. Из-за этого диод и конденсатор являются необходимыми в нашей схеме. Диод обеспечивает дополнительный уровень защиты микроконтроллера от ЭМП. Кроме этого, у нас есть светодиод и модуль микрофона, и если мы зажжем пламя на вершине свечи, то фоторезистор обнаружит этот свет и включит свечу, а если мы задуем свечу, модуль микрофона распознает звук и выключит свечу.
Объяснение кода программы
Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.
В коде программы мы первым делом объявим необходимые переменные: две переменные для хранения значений с выхода АЦП и переменную для включения/выключения свечи.
1 2 3 |
int sensorValue = 0; int sensorValue2 = 0; bool trig = 1; |
В функции setup мы зададим режимы работы двух наших используемых контактов: с одного из них мы будем управлять светодиодом, а с другого — электромагнитом.
1 2 3 4 5 |
void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(2, OUTPUT); pinMode(1, OUTPUT); } |
Далее, в функции loop мы будем проверять значение переменной trig. Если оно равно нулю, мы будем выключать светодиод и электромагнит, если оно равно 1, то мы будем зажигать свечу.
1 2 3 4 5 6 7 8 |
void loop() { if (trig == 0) { digitalWrite(2, HIGH); // turn the LED on (HIGH is the voltage level) delay(100); digitalWrite(2, LOW); digitalWrite(2, LOW); delay(800); } |
Также мы будем считывать значения с выходов АЦП и сохранять их в соответствующих переменных.
1 2 |
sensorValue = analogRead(A2); sensorValue2 = analogRead(A3); |
Если sensorValue2 больше заранее определенного значения, мы будем включать электромагнит и светодиод, а если меньше заранее определенного значения — то выключать.
1 2 3 4 5 6 7 8 9 |
if (sensorValue2 > 9) { digitalWrite(1, LOW); trig =0; } if (sensorValue < 400) { digitalWrite(1, HIGH); trig =1; } } |
Тестирование работы проекта
Внешний вид собранной конструкции схемы нашего проекта показан на следующем рисунке.
Тестирование работы нашей самодельной электронной свечи показано на следующем видео.
Возникшие проблемы при работе проекта, которые автор обещает исправить в следующей ее версии:
- первая проблема связана с зарядкой, в этом проекте нет зарядного порта, поэтому аккумулятор нужно заряжать вручную;
- в нижней части свечи нет держателя для платы; конструкцию желательно изменить так, чтобы ее можно было зафиксировать или прикрутить к нижней части свечи.
Исходный код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
int sensorValue = 0; int sensorValue2 = 0; int interval = 500; bool trig = 1; unsigned long previousMillis = 0; void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(2, OUTPUT); pinMode(1, OUTPUT); } void loop() { if (trig == 0) { digitalWrite(2, HIGH); // turn the LED on (HIGH is the voltage level) delay(100); digitalWrite(2, LOW); digitalWrite(2, LOW); delay(800); } sensorValue = analogRead(A2); sensorValue2 = analogRead(A3); if (sensorValue2 > 9) { digitalWrite(1, LOW); trig =0; } if (sensorValue < 400) { digitalWrite(1, HIGH); trig =1; } } |