Site Loader

Содержание

Nixie clock или теплый ламповый свет вам в дом / Хабр

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



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

Если вам кажется это ужасным, представьте что вы живете в 80х годах, у вас нет МК, нет стеклотекстолита, нет ЧПУ, нет точного инструмента и т.п. зато есть огромное желание и знания.

Итерация 1

От идеи до реализации времени прошло много, сначала были заказаны лампы на авито, я взял ИН12б, ИН1, ИНС-1, ИН-8-2, ИН-14. Далее я смотрел готовые решения по данной теме, в основном это касалось высоковольтной части (ВВ). Схемотехника всех часов элементарна, вот например популярная схема с одного из сайтов, в ней есть все необходимые части, изменяйте под имеющиеся элементы.

Читал на форумах что для высоковольтных DC-DC хорошо подходит микросхема мах1771, взял 5 штук, подготовил плату пока она ехала. Ох, и намучался я с ней, даташник знал наизусть. Очень капризная микросхема, не она крутая конечно, но очень требовательна к разводке платы, не срослось у меня с ней. Но часы на ней я таки сделал, с корпусом не стал заморачиваться, просто напечатал сегментный корпус на принтере. Лампы Ин-14, Arduino Nano, DC-DC на max1771, модуль времени на DS3231, индикация динамическая, подсветка светодиодная.

Во всех моих часах есть контроль температуры: если температура вырастет до порога, часы переходят в режим бездействия — отключаются индикаторы до того момента как не понизится температура. За время эксплуатации перегревы замечены не были. Также имеется функция противодействия катодному отравлению ламп, с периодичностью раз в час происходит прогон всех цифр на всех индикаторах. Недостаток в том, что корректировка времени производится только через UART порт.

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

Итерация 2

Далее я решил заморочится, и сделать эстетичный корпус, для этого были выбраны часы на лампах ИН-12, лучше бы я сделал их в печатном корпусе. Для уменьшения размеров платы я использовал Arduino ProMini, DC-DC сделал на популярной и старой MC34063 (вот это безотказная микруха, простая как угол дома и дешевая). Также в этой итерации я решил не использовать транзисторные ключи, и заменил их высоковольтными оптронами TLP627.

Корректировка времени происходит через UART либо кнопками на тыльной стороне часов. Готовых библиотек мне не удалось найти/приспособить для своих часов, поэтому «меню» для корректировки времени пришлось писать самому.

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

Поэтому пришлось засверлить 2 отверстия и далее при помощи рашпиля и напильника придать нужную форму, из-за этого имеется некоторые огрехи в точности подгонки.

В целом лампы не очень понравились, понятно, почему они такие дешевые и в таких количествах продаются. Из-за того что они предназначены для горизонтального исполнения угол зрения у них не очень впечатляющий, а также более заметно что катоды располагаются на разной «глубине» в сравнении с теми же ИН-14.

Итерация 3

Учитывая недостатки предыдущих итераций я сделал 3 вариант часов. Решения с ВВ частью и мозгами такие же, как и во 2 варианте: Arduino ProMini, MC34063, TLP627, к155ид1, лампы ИН-14. Корпус сделал каноничный из дерева, на этот раз ясень, который взял у товарища. Часы получились довольно миниатюрные.

На плате предусмотрена подсветка и обдув, однако не реализованы физически. Практика показала, что с подсветкой ночью цифры видно хуже, по крайней мере, моим не 100% зрением. Обдув также не понадобился, так как транзистор остается холодным. Настройка времени производится кнопками на тыльной стороне часов. Теперь у меня дома 3 часов на ГРИ, можно начинать раздавать.

Но на этом эксперименты и получение приятного опыта в проектировании и реализации не закончены. Я уже подготовил 4 итерацию часов, на этот раз хочу отказаться от кнопок в пользу настройки при помощи веб-сервера и смартфона. Для этого подготовил вот такую плату для следующих часов, пока не решил какие именно лампы будут использованы, но скорее всего ИН1.

Обзор всех моих часов я сделал в видео, с демонстрацией внутренностей и ошибок проектирования.

Ссылки на ресурсы

находится здесь

.

Конструктор «Часы на газоразрядных индикаторах IN-12», цена 830 грн

Часы в стиле « Ретро» с приятным свечением  газоразрядных индикаторов  можно самостоятельно собрать и получить удовольствие от процесса и результата.  А в создании корпуса для часов — проявить себя настоящим художником.

Мы предлагаем конструктор, который облегчит данную задачу.

Все компоненты – выводные,
Количество компонентов сведено к минимуму!

Наименование

Кол-во

Резистор 100 Ом – 130 Ом                       0,25 Вт

3

Резистор 150 Ом                                        0,25 Вт

1

Резистор 470 Ом                                        0,25 Вт

1

Резистор 10 кОм                                        0,25 Вт

1

Резистор подстр. 470 кОм

1

Емкость электролит. 4,7 мкФ х 350(400)В

1

Емкость электролит. 470 мкФ х 6,3В

1

Дроссель  220 мкГн

1

Диод  HER106(HER 207, FR 207)

1

Тр-р IRF 840PBF (IRF 740)

1

Модуль Arduino «NANO 328р»  

1

Модуль часов «DS3231 для Raspberry Pi»

1

М-ма  К155ИД1

1

Оптопара TLP627 (F)

4

Штыри на плату PLS-10 и PLS-7

2

Гнезда на плату PBS-10 и PBS-7

2

Индикатор IN12

4

Тактовые кнопки

3

Светодиод 3мм

5

Плата печатная  nixieClock_2 

1

Как сделать будильник на газоразрядных лампах

Нашел в закромах старый советский будильник, как на фото. Решил дать вторую жизнь будильнику и сделать из них nixie clock (часы на газоразрядных индикаторах). Не отходя далеко от первого проекта, решил так же сделать под управлением arduino nano, но внести некоторые изменения.


Найдя шесть штук индикаторов ИН-12 и ИН-17 (флешка для масштаба) начал разводить плату.



Первая плата с лампами получилась двух сторонняя, но я подготовил еще пару плат, с перемычками и с транзисторными отпорами TLP627(F) вместо транзисторных ключей на MPSA92 и MPSA42. Схему с TLP627 я не пробовал, возможно, надо будет поправить задержку между включением и выключением ламп.
В этом проекте я убрал RGB подцветку и их регулировку.

Добавил:
buzzer (пищалка) для воспроизведения мелодии будильника;
светодиод для обозначения включенного будильника и входа в его настройку;
стабилизатор напряжения L7805CV, родной стабилизатор arduino сильно нагревался.

Так же я заменил RTC модуль с DS1302 на DS3132, потому что DS1302 начинает отставать каждую неделю.
Я использовал светодиод для индикации будильника, подключен к 13му пину arduino, а в плате есть встроенный светодиод, который работает параллельно, поэтому его можно отковырять или перерезать дорожку.

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

Переделав плату, получилось намного лучше, сразу протестировал работоспособность ламп и остальные элементы на макетной плате. Важный момент: функция tone() накладывается на ШИМ сигнал на «3» и «11» выводах Arduino. Т.е., вызванная, например, для пина «5», функция tone() может мешать работе выводов «3» и «11». Имейте это в виду, когда будете проектировать свои устройства. Можно использовать пищалку и без tone(), при помощи analogWrite, но из-за TCCR1B пищалка не работает. Что бы она работала необходимо:
1) С шестого пина перекинуть на третий
2) Заменить в программе TCCR1B на TCCR2B
3) использовать функцию analogWrite вместо tone().

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

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

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

Часы питаются от блока питания 9в-1А.
Все необходимые компоненты купил на все известном китайском сайте и в радио деталях.

Источник

Жми на кнопку, чтобы подписаться на «Как это сделано»!

Если у вас есть производство или сервис, о котором вы хотите рассказать нашим читателям, пишите Аслану ([email protected]) и мы сделаем самый лучший репортаж, который увидят не только читатели сообщества, но и сайта Как это сделано

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

Жми на иконку и подписывайся!

— http://kak_eto_sdelano.livejournal.com/
— https://www.facebook.com/kaketosdelano/
— https://www.youtube.com/kaketosdelano
— https://vk.com/kaketosdelano
— https://ok.ru/kaketosdelano
— https://twitter.com/kaketosdelano
— https://www.instagram.com/kaketosdelano/

Официальный сайт — http://ikaketosdelano.ru/

Мой блог — http://aslan.livejournal.com
Инстаграм — https://www.instagram.com/aslanfoto/
Facebook — https://www.facebook.com/aslanfoto/
Вконтакте — https://vk.com/aslanfoto

Часы на газорозрядных индикаторах и Arduino » NGIN.pro

Часы на газорозрядных индикаторах и Arduino
  
Испытываете любовь к ретротехнике? У вас есть газорозрядные индикаторы и вы хотите сделать кое-что из них? Сейчас вы узнаете как можно это реализовать.Вам нужны будут следующие элементы:

    

1x Arduino Uno
    4x Arduino Compatible Nixie Tube Modules (здесь)
    Перемычки
    Провод 18 AWG
    Header Pins
    1x 5V 2A DC адаптер питания
    1x Клемная коробка
    1x RTC модуль ChronoDotДавай начнем!

Шаг 1: Питание

    Возьмите адаптер питания 5V 2A DC , и зачистите провода.
    Подключите их к клеммной колодке.
    На другой стороне клеммной колодки подключите 2 провода на отрицательный и 2 провода на положительный контакт.
    Подключите адаптер питания постоянного тока в розетку, и проверьте напряжение с помощью мультиметра. Вы должны иметь ~ 5V. Убедитесь, что полярность правильная.

Шаг 2: Подключение Arduino компонентов




    Присоедините провода от Arduino к ChronoDot.
        <span title=»A4 SDA        «>A4 <-> SDA
        <span title=»A5 SCL        «>A5 <-> SCL

        <span title=»5V VCC        «>5V <-> VCC
        <span title=»GND GND    «>GND <-> GND
    Присоедините провода от Arduino до крайнего правого модуля Nixie
        <span title=»13 SHCP        «>13 <-> SHCP
        <span title=»12 STCP        «>12 <-> STCP
        <span title=»11 DIN        «>11 <-> DIN
        <span title=»10 OE    «>10 <-> OE

    Приложить провода от клеммной колодки непосредственно в Arduino.
        <span title=»Positive wire from terminal strip VIN        «>Положительный провод от клеммной колодки <-> VIN

        <span title=»Negative wire from terminal strip GND»>Отрицательный провод от клеммной колодки <-> GND

Шаг 3: Код для Arduino

 
Скачать файл: nixietubeclock-master.zip [285,59 Kb] (cкачиваний: 20)
    Обязательно установить Arduino библиотеки из репозитория GitHub. Вам нужно будет установить NixieTube and RTClib библиотеки, так как они будут использованы в вашем коде.
    Открыть скетч RTC_Set_Time_ds1307.ino, а также скетч Nixie_Clock.ino в двух отдельных окнах.
    Подключить к Arduino ChronoDot, но не модули Nixie.
    Загрузить скетч RTC_Set_Time_ds1307.ino. После того, как она завершила без ошибок, немедленно вытащить VCC и GND пины из ChronoDot, и подключить их к контактам 5V и GND на крайнем правом модуле Nixie. Этого будет достаточно, чтобы он был запрограммирован правильно.
    Откройте скетч Nixie_Clock.ino, и загрузить его сразу же. Вы не увидите число, пока мы не подключем достаточно мощности). В идеале, вы должны сделать это в течение доли секунды загрузки скетча RTC.

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

Шаг 4: Подключение

    Отключите провода power and ground обратно из Nixie, и подключите их туда, где вы из вытянули из ChronoDot.
    На данный момент все готово к полноценной роботе. Настройте все соединения, а затем подключите адаптер постоянного тока.
    Подключите положительный .18 провод в контакт 5V на крайнем левом модуле Nixie (изображение).
    Подключите отрицательный провод в контакт GND на крайнем левом модуле Nixie.
    Подключите адаптер питания постоянного тока.

Если все прошло правильно, вы должны увидеть текущее время!

Шаг 5: Корпус

 
Деревообработка это не то, что естественно для большинства вундеркиндов электроники. Используется дешевая фанера для обычной коробки.

Источник


Часы Arduino на лампах ИН-18 Nixie NCS318 ДЛИТЕЛЬНЫЙ СРОК СЛУЖБЫ

Мы решили создать часы Nixie или просто информационный индикатор на самых больших бывших советских лампах ИН-18 в качестве платы Arduino, совместимой с платами Uno и Mega. .

После длительного чтения большого количества информации о лампах ИН-18 в Интернете, мы выяснили, что существуют проблемы с так называемым «продувкой» и «отравлением» ламп.

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

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

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

Ранее мы успешно имели дело с меньшими трубками Никси, такими как ИН-12 и ИН-14, и с ними таких проблем не было.

Итак, мы построили первый прототип на бывшей советской микросхеме К155ИД1 SN74141. Этот конкретный драйвер на самом деле создан специально для ламп Nixie, но, несмотря на это, сразу же возник ряд проблем. К числу таких проблем относится низкая яркость ламп, «голубое свечение» в виде точек, а самое главное и обидное — очень короткий срок службы ламп.

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

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

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

В процессе работы мы выяснили, что нет драйвера с двухтактными выходами, который подходил бы под наши нужды!

Для работы больших ламп Nixie, таких как IN-18, Z5660M, ZM1042, Z568, требуются драйверы с выходами с открытым коллектором (open-collector) или с открытым стоком.

То есть такие, у которых одно из выходных состояний — логический ноль, а второе — Z-состояние.

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

В процессе проб и ошибок мы остановились на микросхеме HV5122PJ в корпусе PLCC44, максимально отвечающей всем нашим требованиям. Он имеет 32 выхода, что позволяет собрать часы на 6 лампах Nixie с 4-мя разделяющими точками (т.грамм. Колонки) с использованием всего двух таких микросхем.

Для одной лампы требуется 10 контрольных выходных ветвей и 6 ламп Nixie, следовательно, требуется 60 выходных ветвей. Так как у двух драйверов по 32 ноги у каждого всего 64 терминала, то у нас остается 4 терминала для индивидуального управления для каждой из 4-х разделительных точек.

Часы, собранные по схеме с прямым управлением лампами на двух регистрах ИС HV5122PJ, не имели проблем с «голубым свечением» точек и низким уровнем яркости ламп.

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

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

Тем не менее, срок службы ламп оставался чрезвычайно коротким, намного меньше, чем заявлено производителями ламп. Затем возникла другая проблема. Примерно через 3-4 месяца непрерывного использования тюбиков стал проявляться так называемый эффект «отравления».

Происходит частичное или полное затухание отдельных символов Трубки.

Повышение напряжения питания ламп со 170 вольт до 195 вольт продлило срок службы ламп еще на несколько месяцев, но все равно это не удовлетворило и потребовало поиска решения этого вопроса. В Интернете мы нашли информацию о том, что «отравленные» лампы можно «восстановить», пропуская через них повышенный ток от 5 до 10 раз больше номинального.

Для ламп ИН-18 по разным паспортам номинальные токи указаны в диапазоне от 6 до 8 мА, поэтому мы реализовали кратковременное пропускание через трубки от 30 до 80 мА.

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

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

Поэтому мы решили реализовать кратковременное увеличение тока ламп по принципу ШИМ.

При этом яркость ламп при использовании этой схемы на яркость не влияла!

В итоге срок службы ламп ЗНАЧИТЕЛЬНО увеличился по сравнению с заявлениями производителей!!!

Руководство Arduino по проектированию с низким энергопотреблением | Документация Arduino

Изучите основы маломощного проектирования с использованием аппаратного и программного обеспечения Arduino.

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

Настоящее руководство по созданию системы с низким энергопотреблением применимо для всех плат Arduino.Например, платы Arduino на базе 32-разрядного процессора Arm Cortex-M0 на базе процессора SAMD21 могут использовать преимущества функций с низким энергопотреблением. Платы Arduino SAMD21 с беспроводным протоколом и сетевыми возможностями LoRaWAN® с модулем Murata CMWX1ZZABZ из MKR WAN 1310 могут сочетаться с функциями низкого энергопотребления для работы в течение длительного периода времени. Благодаря передовым технологиям, такие инструменты, как руководство по источнику питания и расчет скорости саморазряда, применяются к каждой плате Arduino для проектирования энергоэффективных систем. Вы можете посетить страницу Arduino Documentation Hardware, чтобы узнать о платах Arduino.

Библиотека с низким энергопотреблением

Чтобы включить функцию низкого энергопотребления на платах Arduino, мы можем загрузить библиотеку с низким энергопотреблением Arduino из диспетчера библиотек в Arduino IDE. Эта библиотека включает функции низкого энергопотребления для плат семейства MKR.

  • Библиотекой можно управлять, перейдя в Sketch -> Include Library -> Manage Libraries в Arduino IDE и выполнив поиск «Arduino Low Power» , выбрав последнюю версию.
  • Когда компоненты платы необходимо обновить, этим можно управлять, выбрав Инструменты -> Плата -> Диспетчер плат и выполнив поиск соответствующего семейства плат Arduino.

Вы можете загрузить другую версию Arduino IDE по ссылке ниже:

Low-Power Design Techniques

Существует несколько различных вариантов снижения энергопотребления микроконтроллеров:

  • Спящий режим
  • Внешние события
  • A
  • Режим ожидания

Техника сна

Лучший способ включить функции с низким энергопотреблением — перевести процессор в спящий режим. Режим глубокого сна позволяет устройству отключать различные внутренние модули для экономии большей части энергопотребления.Режим глубокого сна можно настроить с помощью таймера для пробуждения по истечении определенного промежутка времени. Кроме того, существует также режим Light Sleep , который позволяет включать некоторые внутренние модули для выполнения таких необходимых задач. Обычно режим глубокого сна применяется для экономии большей части энергопотребления, в то время как режим легкого сна помогает сохранить некоторые настройки для отслеживания состояния внешних модулей при их пробуждении.

В этих спящих режимах режимы Stand-By и Idle обеспечивают различные уровни конфигурации для перевода микроконтроллера в режим пониженного энергопотребления.В зависимости от требований к устройствам, некоторые компоненты или модули могут по-прежнему работать, когда устройство находится в спящем режиме. Режим ожидания — один из режимов с наименьшим энергопотреблением для плат на базе SAMD21. Это остановит все источники тактовых импульсов микроконтроллера и переведет регуляторы напряжения в состояние пониженного энергопотребления. Осцилляторы могут находиться в 3 разных состояниях, когда они останавливаются или работают, а также работают от имени периферийного запроса. Затем устройство будет находиться в глубоком спящем режиме, пока WFI (Wait For Interrupt) активен.Прерывание или WDT (сторожевой таймер) будут триггерами для вывода устройства из спящего режима.

То же самое относится к режиму ожидания и режиму ожидания. В режиме ожидания периферийные устройства по-прежнему будут работать, пока активен WFI (ожидание прерывания). Однако устройство не будет находиться в режиме глубокого сна, что означает более высокий уровень энергопотребления по сравнению с режимом ожидания. Источники синхронизации, с другой стороны, зависят от архитектора программного обеспечения, оставить его включенным или отключить, чтобы снизить энергопотребление.Прерывание или WDT (сторожевой таймер) будут триггерами для пробуждения устройства из спящего режима, как и для текущего режима.

Внешние события для выхода из спящего режима

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

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

АЦП (аналогово-цифровой преобразователь) Инициированный выход из спящего режима

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

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

Руководство по источникам питания и скорости саморазряда

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

Батареи будут указаны в качестве источника питания, так как они будут питать устройство.Существуют разные аккумуляторы с разной емкостью и скоростью саморазряда, которые не являются постоянными. Это означает, что он будет разряжаться быстрее в начале. На этот фактор обычно влияет температура, что заставляет его вести себя по-разному в зависимости от окружающей среды, в которой он находится. Таким образом, это следует рассматривать как руководство и учитывать его при разработке эффективного устройства с низким энергопотреблением.

Аккумуляторы типа CR2032 имеют емкость 210 мАч со скоростью разрядки 1% в месяц. Аккумуляторы NiMH AAA обладают большей емкостью на 900 мАч, чем CR2032, но скорость разрядки составляет 30% в месяц; в то время как версия размера AA имеет емкость 2400 мАч, но такую ​​же скорость разрядки. Литий-ионные аккумуляторы имеют емкость 4400 мАч, но скорость их разрядки составляет 10% в месяц.

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

Скорость саморазряда может быть выражена следующим уравнением:

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

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

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

Примеры приложений с низким энергопотреблением

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

Стандартный пример низкого энергопотребления

  • Необходимое оборудование: любые платы Arduino на базе SAMD21 (семейство MKR)

Это самый простой способ реализации режима низкого энергопотребления. Он будет использовать светодиод в качестве индикатора, чтобы сообщить, находится ли устройство в активном состоянии или в спящем состоянии. Устройство будет находиться в спящем режиме в течение 5 секунд.

 Копировать  

1#include "ArduinoLowPower.h"

2

3void setup () {

4 pinMode (LED_BUILTIN, OUTPUT);

5}

6

7void loop() {

8 digitalWrite(LED_BUILTIN, HIGH);

9 задержка(1000);

10 digitalWrite(LED_BUILTIN, LOW);

11 задержка(1000);

12 Низкая мощность.сон(5000);

13}

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

 Копия  

1

2LowPower.deepSleep(5000);

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

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

Внешние события на основе малой мощности Пример

  • Необходимое оборудование: любые платы Arduino на базе SAMD21 (семейство MKR)

В следующем примере показано, как плата выходит из спящего режима каждые 10 секунд, если она не обнаруживает внешнее событие на нужном контакте.

 Копировать  

1#include "ArduinoLowPower.ч"

2

3void setup () {

4 pinMode (LED_BUILTIN, OUTPUT);

5 pinMode(пин, режим);

6 LowPower.attachInterruptWakeup(контакт, обратный вызов, режим);

7}

8

9void loop () {

10 digitalWrite (LED_BUILTIN, HIGH);

11 задержка(1000);

12 digitalWrite(LED_BUILTIN, LOW);

13 задержка(1000);

14 LowPower.sleep(10000);

15}

16

17void callback() {

18

19

20

21}

Здесь требуется определить

 .9017 LowPowerattachInterruptWakeup(pin, callback, mode)  
функция с выводом устройства, которое нужно обработать, проектированием задачи внутри обратного вызова и режимом для определения перехода к чувствительному изменению на определенном выводе. Режим можно определить с помощью 3 различных настроек: ПАДЕНИЕ, ПОДЪЕМ и ИЗМЕНЕНИЕ.

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

  pinMode(pin, mode)  
используются следующие режимы:
  INPUT  
,
  OUTPUT  
или
  INPUT_PULLUP 
0 . Пример малой мощности, основанный на определенном внешнем событии, можно рассматривать следующим образом. Этот пример можно найти, перейдя к Examples -> Arduino Low Power -> ExternalWakeup .
 Копировать  

1#include "ArduinoLowPower.h"

2

3

4

5 volatile целое число повторений = 1;

6

7

8const int pin = 8;

9

10void setup () {

11 pinMode (LED_BUILTIN, OUTPUT);

12

13 pinMode(pin, INPUT_PULLUP);

14

15 Низкая мощность.прикрепить InterruptWakeup (булавка, увеличение повторений, изменение);

16}

17

18void loop() {

19 for (int i = 0; i < повторения; i++) {

20 digitalWrite(LED_BUILTIN, HIGH);

21 задержка(500);

22 digitalWrite(LED_BUILTIN, LOW);

23 задержка(500);

24 }

25

26

27 LowPower.sleep();

28}

29

30void RepeatsIncrease() {

31

32

33

34 повторения ++;

35}

АЦП (аналого-цифровой преобразователь) на основе примера с низким энергопотреблением

  • Необходимое оборудование: любые платы Arduino на базе SAMD21 (семейство MKR) можно настроить АЦП (аналого-цифровой преобразователь) в качестве источника пробуждения при заданном диапазоне показаний обнаружения напряжения.Этот пример можно найти, перейдя к Examples -> Arduino Low Power -> AdcWakeup .

     Копировать  

    1#include "ArduinoLowPower.h"

    2

    3

    4

    5 volatile целое число повторений = 1;

    6

    7

    8const int pin = A0;

    9

    10const int margin = 10;

    11

    12void setup () {

    13 pinMode (LED_BUILTIN, OUTPUT);

    14 pinMode(pin, INPUT);

    15}

    16

    17void loop() {

    18 for (int i = 0; i < повторения; i++) {

    19 digitalWrite(LED_BUILTIN, HIGH);

    20 задержка(500);

    21 цифровая запись (LED_BUILTIN, LOW);

    22 задержка(500);

    23 }

    24

    25

    26 целочисленное значение = AnalogRead(pin);

    27

    28

    29 uint16_t lo = max(значение - поле, 0);

    30 uint16_t hi = min(value + margin, UINT16_MAX);

    31

    32

    33

    34 Низкая мощность.прикрепитьAdcInterrupt(pin, RepeatsIncrease, ADC_INT_OUTSIDE, вот, привет);

    35

    36

    37

    38 LowPower.sleep();

    39

    40

    41 LowPower.detachAdcInterrupt();

    42}

    43

    44void RepeatsIncrease() {

    45

    46

    47

    48 повторений ++;

    49}

    Углубившись в предыдущий код, мы определим окно значений, в котором будет работать аналоговый вывод A0 устройства.

     Копировать  

    1uint16_t lo = max(value - margin, 0);

    2uint16_t привет = мин (значение + поле, UINT16_MAX);

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

     Копировать  

    1LowPower.attachAdcInterrupt(pin, RepeatsIncrease, ADC_INT_OUTSIDE, lo, hi);

    После того, как устройство пробудится в настроенном прерывании АЦП (аналого-цифровой преобразователь), оно отключит прерывание АЦП, чтобы восстановить свою конфигурацию АЦП.

     Копировать  

    1LowPower.detachAdcInterrupt();

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

    Передатчик LoRa с низким энергопотреблением Пример

    • Необходимое оборудование: MKR WAN 1300/1310 (бортовой модуль Murata)

    Подробная информация и пример LoRa® с использованием MKR WAN 1310 с модулем Murata, пожалуйста, проверьте Отправить Данные с использованием LoRa® с MKR WAN 1310

    В этом примере показано MKR WAN1300/1310 в качестве удаленного передающего устройства, которое периодически отправляет сообщение о состоянии активного маяка.Это необходимо для имитации устройства, передающего данные радиомаяка через определенные промежутки времени, и требует длительного срока службы. Приемное устройство будет стационарным, как приемная вышка. Устройство удаленного передатчика переводит SAMD21 в спящий режим, а также встроенный модуль Murata для устранения ненужного энергопотребления.

    Для получения дополнительной информации о библиотеке LoRa посетите репозиторий Arduino LoRa на GitHub.

     Копировать  

    1

    2#include "ArduinoLowPower.ч"

    3

    4

    5#include

    6#include

    7

    8

    9char* message = "Привет, LoRa!";

    10

    11void setup() {

    12 Serial.begin(9600);

    13 пока (!Serial);

    14

    15

    16 Serial.println(F("Отправитель LoRa"));

    17 if (!LoRa.begin(868E6)) {

    18 Serial.println(F("Запуск LoRa не удался!"));

    19 пока (1);

    20 } еще {

    21 Серийный номер.println(F("Запуск LoRa успешен!"));

    22 }

    23}

    24

    25void loop() {

    26 LoRa_Packet_Sender();

    27 Перейти в сон();

    28}

    29

    30

    31void LoRa_Packet_Sender() {

    32 Serial.print(F("Отправка пакета: "));

    33 Serial.println(сообщение);

    34

    35

    36 LoRa.beginPacket();

    37 LoRa.print(сообщение);

    38 Лора.конец пакета();

    39

    40

    41 Serial.println(F("LoRa уходит в сон"));

    42 LoRa.sleep();

    43}

    44

    45

    46void GoToSleep(){

    47 Serial.println(F("MKR WAN 1310 - переход в спящий режим"));

    48 LowPower.deepSleep(20000);

    49}

    Важно знать, что задача Low Power относится только к микроконтроллеру. Это означает, что внешние модули, такие как использованный нами здесь модуль Murata, установленный на плате MKR WAN 1310, должны быть закодированы в задаче отдельно, чтобы модуль перешел в спящее состояние.

    Если должны использоваться внешние модули, такие как модуль Murata (LoRa) и датчики, не забудьте перевести MCU в спящий режим, прежде чем переводить его в спящий режим. В противном случае устройство не перейдет в режим полного сна и максимальное энергосбережение будет невозможно. Это включает отключение, например, периферийных интерфейсов, таких как TWI и SPI.

    Простой пример обнаружения низкого напряжения

    • Необходимое оборудование: плата Arduino любого семейства

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

     Копия  

    1

    2

    3

    4

    5

    6#include "ArduinoLowPower.ч"

    7

    8float voltValue, battery_volt, battery_percentage;

    9float минимальное_напряжение = 1800;

    10float battery_voltage_ref = 3,3;

    11

    12void setup() {

    13 Serial.begin(57600);

    14 задержка(100);

    15

    16

    17 pinMode(LED_BUILTIN, OUTPUT);

    18

    19

    20 аналоговая ссылка (AR_DEFAULT);

    21

    22

    23 AnalogReadResolution(12);

    24}

    25

    26void loop() {

    27

    28 voltValue = AnalogRead(A0);

    29

    30

    31 battery_volt = ((voltValue*battery_voltage_ref)/4095)*1000;

    32

    33

    34 battery_percentage = 100*abs((battery_volt - минимальное_напряжение)/((battery_voltage_ref*1000) - минимальное_напряжение));

    35

    36 Серийный номер.print(F("Батарея: "));

    37 Serial.print(battery_percentage);

    38 Serial.println(F("% "));

    39

    40 if (battery_volt <= Minimum_voltage){

    41

    42 lowBatteryWarning();

    43 }

    44

    45 задержка(2000);

    46

    47

    48 LowPower.deepSleep(20000);

    49}

    50

    51

    52void lowBatteryWarning(){

    53 digitalWrite(LED_BUILTIN, HIGH);

    54 задержка (1);

    55 digitalWrite(LED_BUILTIN, LOW);

    56 задержка (999);

    57}

    Вот 4 важные конфигурации:

    • AnalogReference() используется для настройки опорного напряжения для аналогового входа.
    • AnalogReadResolution() используется для определения разрешения значения, возвращаемого AnalogRead() .
    • AnalogRead() используется для установки аналогового вывода для считывания значения.
    • И последнее, но не менее важное: соответствующее значение делителя разрешения. В данном примере используется 4095 для 12-битного разрешения, применимого для MKR WAN 1310. Если используется другое разрешение, например 10-битное, вам необходимо определить его как 1023 .

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

    * Для более продвинутого обнаружения низкого напряжения см. последний раздел настоящего руководства о Advanced Low Power Techniques in Arduino *

    Advanced Low Power Techniques in Arduino

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

    Низкая частота и низкое напряжение

    Для более продвинутых вариантов использования есть несколько способов дальнейшего снижения энергопотребления. Ставим процессор на низкую частоту и на низкое напряжение. Для низких частот это может зависеть от функциональности устройства, так как требуется минимальный уровень частоты для включения коммуникационных модулей в качестве WiFi. Также возможна работа устройства при низком напряжении 3.3 В, что помогает снизить общее энергопотребление. Эту настройку можно выполнить с помощью Arduino IDE перед загрузкой скетча на устройство.

    Конфигурация напряжения и частоты микроконтроллера

    Процессор обычно меняет частоту в зависимости от рабочих нагрузок. Эта частота процессора варьируется, чтобы ускорить процесс вычислений за минимальное время. Для некоторых модулей, таких как Wi-Fi и Bluetooth® Low Energy, требуется минимальный уровень частоты.В противном случае работа на еще более низких частотах приведет к тому, что модули будут работать неправильно или вообще не будут работать. В некоторых случаях для перехода на более низкие частоты требуется внешний кварцевый генератор, поскольку для этого потребуется согласующий генератор.

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

    Что касается напряжения, обычно платы могут быть определены при рабочем напряжении 5 В или 3,3 В. Это рабочее напряжение обычно зависит от внешних компонентов, которые будут сопряжены для работы с центральными платами, в которых это будут платы Arduino. Однако не всегда требования внешних компонентов или подобные случаи требуют высокого напряжения.Так что в таких случаях можно установить рабочее напряжение 3,3В. Обеспечивает гораздо больше шансов иметь энергоэффективное устройство. Потребляемая мощность, начинающаяся с этих двух факторов, может уменьшить или даже вдвое сократить общее энергопотребление.

    Управление питанием на уровне микроконтроллера

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

    Микроконтроллер SAMD21 — Режим снижения энергопотребления

    Для микроконтроллеров SAMD21, установленных на платах семейства MKR, используется Режим снижения энергопотребления .

    Режим энергосбережения привязан к контроллеру энергонезависимой памяти, и для управления его режимом используется регистр CTRLB. Бит режима снижения мощности устанавливается в регистре состояния (STATUS.PRM), когда контроллер энергонезависимой памяти и блок находятся в режиме снижения мощности. Команды Set и Clear Power Reduction Mode используются для включения и выключения контроллера и блока энергонезависимой памяти.Для визуализации таблицы регистров вы можете увидеть следующие ссылки и таблицу данных для более подробной информации.

    Микроконтроллер Atmega328P — регистр снижения энергопотребления

    Семейство Classic и Arduino Nano, использующие микроконтроллеры Atmega328P, обнаруживаются с Регистром снижения энергопотребления .

    Этот регистр снижения мощности может отключать некоторые функции внутри микроконтроллера. Он может отключать TWI, SPI, USART0, таймеры и счетчики, а также аналого-цифровой преобразователь.Если бит аналого-цифрового преобразователя должен быть отключен, то ADCRSA bus должен быть установлен на ноль, так как он останется замороженным в активном состоянии.

    Периферийные устройства и внутренние модули

    Отключение ненужных внутренних модулей в зависимости от разработанного приложения очень полезно для дальнейшего снижения энергопотребления. Эти модули могут быть SPI, I2C, Serial и ADC (аналого-цифровой преобразователь). Вдобавок к этим модулям есть Обнаружение отключения питания и Сторожевой таймер.

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

    АЦП (аналого-цифровой преобразователь) можно использовать в качестве источника пробуждения, как обсуждалось ранее. Но его также можно отключить для экономии энергопотребления, если он не будет использоваться в качестве источника пробуждения. Эти периферийные устройства иногда потребляют значительное количество энергии, поэтому отключение может помочь получить дополнительную мощность для увеличения срока службы батареи.

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

    Если микроконтроллер застревает и останавливается или выполняет недопустимый процесс, срабатывает сторожевой таймер для сброса и возврата микроконтроллера в нужное русло. С другой стороны, этот же сторожевой таймер можно временно отключить для экономии энергопотребления. Это всегда рекомендуется выполнять после того, как программное обеспечение будет проверено на предмет достаточной стабильности.В противном случае это не поможет снизить энергопотребление и сломает систему.

    Внешние устройства

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

    Регулятор с малым падением напряжения

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

    Составление бюджета мощности

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

    Метод измерения энергопотребления

    При всех методах и уловках для достижения низкого энергопотребления на плате Arduino вам также потребуется измерить энергопотребление его системы, чтобы убедиться в ее правильном функционировании.Вы можете использовать Multimeter Basics в разделе Reading Current для измерения тока и определения фактического энергопотребления системы.

    Обнаружение низкого напряжения

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

    Вы можете использовать следующий калькулятор срока службы батареи для расчета срока службы: https://www.omnicalculator.com/other/battery-life в котором Atmega328P основаны и встречаются, например, в семействе Arduino Nano и Classic.Метод обнаружения низкого напряжения, разработанный Ником Гэммоном, Retrolefty и Coding Badly, будет сочетаться с возможностью перехода в состояние низкого энергопотребления для экономии энергии.

     Копия  

    1

    2

    3

    4#include

    5#include

    6#include

    7

    8const long InternalReferenceVoltage = 1062;

    9

    10void setup() {

    11 Серийный номер.начало (57600);

    12 задержка(100);

    13

    14

    15 pinMode(LED_BUILTIN, OUTPUT);

    16

    17

    18 resetWatchdog();

    19}

    20

    21void loop() {

    22

    23 manual_periph_ctrl(1);

    24

    25

    26 Serial.println(getBandgap());

    27

    28 если (getBandgap() < 300){

    29

    30 lowBatteryWarning();

    31

    32

    33 manual_periph_ctrl(0);

    34 }

    35

    36

    37 i2c_switch_off();

    38 Manual_LowPower_Mode(1);

    39}

    40

    41

    42void Manual_LowPower_Mode(множитель uint8_t){

    43 задержка(70);

    44 for(int i = 0; i <= multiplier; i++){

    45 Deep_Sleep_Manual();

    46 }

    47}

    48

    49

    50

    50

    51

    52

    52

    53

    54

    55

    55

    56Int GetBandGap () {

    57

    58

    59 Admux = Bit (Refs0) | бит (MUX3) | бит (MUX2) | бит (MUX1);

    60 ADCSRA |= бит( ADSC );

    61 while (ADCSRA и бит (ADSC)){

    62 }

    63 int results = (((InternalReferenceVoltage * 1024) / ADC) + 5) / 10;

    64 результата возврата;

    65}

    66

    67

    68

    69

    70

    71void WatchdogEnable() {

    72

    73 MCUSR = 0;

    74

    75 WDTCSR = бит (WDCE) | бит (WDE);

    76

    77 WDTCSR = бит (WDIE) | бит (WDP3) | бит (WDP0);

    78 wdt_reset();

    79

    80

    81 АДКСРА = 0;

    82

    83

    84 set_sleep_mode (SLEEP_MODE_PWR_DOWN);

    85 noInterrupts();

    86 sleep_enable();

    87

    88

    89 MCUCR = бит (BODS) | бита (БОДСЕ);

    90 MCUCR = бит (BODS);

    91 прерывание();

    92 спящий_процессор ();

    93

    94

    95 sleep_disable();

    96}

    97

    98void resetWatchdog (){

    99

    100 MCUSR = 0;

    101

    102 WDTCSR = бит (WDCE) | бит (WDE) | бит (WDIF);

    103

    104 WDTCSR = бит (WDIE) | бит (WDP3) | бит (WDP0);

    105

    106 wdt_reset();

    107}

    108

    109void i2c_switch_off(){

    110

    111 TWCR &= ~(бит(TWEN) | бит(TWIE) | бит(TWEA));

    112

    113

    114 цифровая запись (A4, LOW);

    115 цифровая запись (A5, LOW);

    116}

    117

    118

    119void Deep_Sleep_Manual(){

    120

    121 set_sleep_mode (SLEEP_MODE_PWR_DOWN);

    122 АДКСРА = 0;

    123 power_all_disable ();

    124

    125

    126 нет прерываний ();

    127 сброс сторожевого таймера ();

    128 sleep_enable ();

    129 прерываний ();

    130 sleep_cpu();

    131 sleep_disable();

    132 power_all_enable ();

    133

    134}

    135

    136

    137void manual_periph_ctrl (селектор uint8_t){

    138 байтов old_ADCSRA = ADCSRA;

    139

    140 ADCSRA = 0;

    141

    142 если (селектор == 0){

    143 power_adc_disable();

    144 power_spi_disable();

    145 power_timer0_disable();

    146 power_timer1_disable();

    147 power_timer2_disable();

    148 power_twi_disable();

    149

    150 UCSR0B &= ~ бит (RXEN0);

    151 UCSR0B &= ~ бит (TXEN0);

    152 }

    153 если (селектор >= 1){

    154 power_adc_enable();

    155 power_spi_enable();

    156 power_timer0_enable();

    157 power_timer1_enable();

    158 power_timer2_enable();

    159 power_twi_enable();

    160

    161 UCSR0B |= бит (RXEN0);

    162 UCSR0B |= бит (TXEN0);

    163 }

    164

    165 ADCSRA = old_ADCSRA;

    166}

    167

    168

    169void lowBatteryWarning(){

    170 digitalWrite(LED_BUILTIN, HIGH);

    171 задержка (1);

    172 цифровая запись (LED_BUILTIN, LOW);

    173 задержка (999);

    174}

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

    • Использование регистра ADMUX для получения значения.
     Копия  

    1

    2void setup ()

    3{

    4 ADMUX = бит (REFS0) | бит (REFS1);

    5}

    6

    7void loop () { }

    • Использование функций AnalogReference и AnalogRead для получения значения.
     Копия  

    1

    2void setup ()

    3{

    4 аналоговая ссылка (ВНУТРЕННЯЯ);

    5 аналоговое чтение (A0);

    6}

    7

    8void loop () { }

    Чтобы узнать больше о системах с низким энергопотреблением, перейдите по следующей ссылке: https://www.gammon.com.au/power

    Nixie Clock Arduino Shield от Robin — Kickstarter

    Гистограммы

    IN-9 Nixie - это технология отображения 1960-х годов.До появления светодиодов индикаторы изготавливались из неоновых газоразрядных трубок. Трубка гистограммы — это особый тип трубки Никси: вместо того, чтобы подсвечивать число, букву или символ, она светится на разную высоту в зависимости от тока, проходящего через трубку. Эта функция означает, что ее можно использовать для указания любой переменной, такой как температура, время, скорость интернета или атмосферное давление. Если он меняется, вы можете отобразить его!

    К сожалению, лампами Nixie трудно управлять с помощью современной электроники, поскольку для их питания требуется высокое напряжение.Вот тут-то и пригодится Nixie Clock Shield! Shield включает в себя все необходимое для создания собственного гистограммы IN-9 Nixie. Shield генерирует необходимое высокое напряжение, и все, что вам нужно сделать, это обеспечить источник питания 12 В и ШИМ-сигналы от D9 и D10 для управления двумя лампами. Более того, на плате есть часы реального времени (DS1307). Это позволяет вам отслеживать время и создавать часы Nixie, используя только плату Arduino.

    Shield поставляется предварительно собранным и готовым к работе! Кроме того, вы можете выбрать, будут ли разъемы поставляться предварительно припаянными или отдельными.

    Конечно, несмотря на то, что Shield подключается к Arduino Uno, он совместим со многими контроллерами, такими как платы Raspberry Pi, Adafruit Feathers, BBC Micro:Bit, BeagleBone Black и STM32 Nucleo. Просто подключите к двум контактам PWM и заземлению.

    Комплектация Запущен и запущен Clock Sketch Доступны некоторые совместимые платы

    Чтобы помочь вам начать работу еще быстрее, я написал примеры эскизов Arduino, которые будут считывать время, управлять трубками и быстро запускать вас!

    Я предлагаю несколько разных наград.Один Nixie Clock Shield, включающий 2 протестированных гистограммы IN-9, стоит всего 30 фунтов стерлингов. Однако, если одного щита недостаточно, я также предлагаю награды с несколькими щитами по сниженной цене за единицу.

    Награда 1: 1x Nixie Clock Shield с трубками — 30 фунтов стерлингов
    Награда 2: «Удвоить» 2x Nixie Clock Shields с трубками — 55 фунтов стерлингов (£ 27,50 каждая)
    Награда 3: «Групповой набор» 4x Nixie Clock Shields с трубками - 100 фунтов стерлингов (25 фунтов стерлингов за штуку)
    Награда 4: "Образование" 10x Nixie Clock Shields с лампами - 225 фунтов стерлингов (22,50 фунта стерлингов каждая)

    Обратите внимание, что награды не включают блок питания 12 В, 1 А.Блоки питания с местной стенной розеткой можно дешево купить в Интернете на Amazon или в другом месте.

    Входное напряжение: 12 В
    Входной ток: макс. 250 мА (только Shield)
    Выходное напряжение: 150 В

    Часы реального времени: DS1307
    Батарея: литиевая таблетка типа CR1220 (не входит в комплект)

    Срок службы трубки IN-9 (очень консервативно) : 1000 часов

    Защитные экраны

    будут производиться компанией Elecrow с использованием их службы PCBA. Платы будут отправлены в Великобританию для тестирования, а затем упакованы и доставлены спонсорам.

    Все трубки IN-9 Nixie также будут протестированы, чтобы гарантировать, что каждый получит вознаграждение, которое работает прямо из коробки.

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

    Из-за ограничений на доставку резервный литиевый элемент питания типа «таблетка» CR1220 не может быть включен в комплект поставки и должен приобретаться отдельно ¯\_(ツ)_/¯ 

    50 лучших проектов Arduino для студентов-выпускников инженерных специальностей

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

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

    Взаимодействие датчика температуры и влажности DHTxx с Arduino

    влажности, обе функции встроены в один модуль.

    Интеллектуальный автоматический переключатель ВКЛ/ВЫКЛ с использованием Arduino

    В этом посте мы намерены разработать интеллектуальный автоматический выключатель ВКЛ/ВЫКЛ с использованием Arduino, который мог бы автоматически включать или выключать устройства, обнаруживая присутствие человека локально с помощью ультразвуковая стратегия.

    Схема ультразвукового дальномера с использованием Arduino и ЖК-дисплея 16×2

    В этой публикации мы разработаем схему ультразвукового дальномера с использованием Arduino и ЖК-дисплея 16×2. Мы также узнаем, что такое ультразвуковой модуль, как он работает и как его можно использовать для расчета расстояния.

    Схема домашней безопасности с использованием Arduino

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

    Схема цифровых часов с использованием Arduino и ЖК-дисплея 16x2

    Здесь мы узнаем, как сделать простые цифровые часы с использованием Arduino и ЖК-дисплея 16x2, коллег или даже для изображения научных выставок

    Сделать Arduino на макетной плате

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

    Надежная схема ИК-пульта дистанционного управления с использованием Arduino

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

    Цифровые часы Arduino с использованием модуля RTC

    В этом посте объясняется, как создать цифровые часы с использованием модуля RTC или часов реального времени.Мы постараемся понять, для чего предназначен модуль «RTC», и как можно связать модуль с Arduino и его функционирование.

    7-сегментная схема цифровых часов с использованием Arduino

    В этом посте мы собираемся построить цифровые часы, используя 7-сегментный светодиодный дисплей с конструкцией, управляемой Arduino. Предлагаемая 7-сегментная тактовая схема недорога, и даже новичок в Arduino может легко ее выполнить. Эти часы состоят из четырех 7-сегментных дисплеев, два для […]

    Схема светодиодного комнатного термометра с использованием Arduino

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

    Схема автоматического регулятора температуры с использованием Arduino

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

    Цифровой измеритель температуры и влажности с использованием Arduino

    В одной из наших предыдущих статей мы узнали о простом методе сопряжения датчика температуры и влажности с Arduino и считывания показаний, отображаемых на последовательном мониторе Arduino IDE. Здесь давайте разберемся, как вывести показания на ЖК-дисплей 16x2 для предлагаемого цифрового измерителя температуры/влажности.

    Схема SMS-оповещения о пожаре GSM с использованием Arduino

    В этом посте мы попробуем построить систему GSM-системы оповещения о пожаре с использованием Arduino и датчика DHT11, которая будет предупреждать владельца, отправляя текстовое сообщение (SMS) об опасности возгорания. в помещении, где он установлен.

    Как отправлять SMS с помощью GSM-модема и Arduino

    В этой статье студенты могут узнать, как мы можем отправлять SMS с помощью GSM-модема, управляемого с помощью схемы Arduino. Мы постараемся узнать, что такое GSM-модем, как он может быть связан с Arduino, как отправлять SMS с помощью этой настройки.

    Как получать SMS с помощью GSM-модема и Arduino

    В этом посте мы подробно узнаем, как получать SMS с помощью GSM-модема и Arduino. В одном из предыдущих постов мы разобрались, как отправить текстовое сообщение с помощью GSM-модема, а также обсудили основы GSM-модема.

    Схема защитного замка с паролем с использованием Arduino и клавиатуры 4×4

    В этом специальном инженерном проекте мы попытаемся построить схему защитного замка с паролем, которая будет принимать и открываться с помощью 6-значного пароля. Точнее говоря, это буквенно-цифровой пароль, для которого потребуется клавиатура 4×4, состоящая из десятичных значений от 0 до 9, двух специальных символов

    Как подключить клавиатуру 4×4 к Arduino

    В этой статье мы рассмотрим, как интерфейс клавиатуры 4×4 с Arduino.Мы узнаем, что такое клавиатура, как ее можно построить, и научимся программировать Arduino для приема нажатий клавиш через клавиатуру и вывода их на серийный монитор.

    Простая схема калькулятора с использованием Arduino

    В этом руководстве мы собираемся разработать калькулятор с использованием Arduino, который может выполнять значительно более сложные арифметические вычисления по сравнению с обычным калькулятором. Цель этой статьи не в том, чтобы создать калькулятор с использованием Arduino, а в том, чтобы подчеркнуть арифметическое удобство Arduino, которое выполняет множество сложных интерпретаций данных и вычислений. еще один замечательный инженерный проект, который мы собираемся рассмотреть в области технологии радиочастотной идентификации.Мы изучим, как работают RFID-метки и считыватели, как соединить RFID-модуль (RC522) с Arduino и извлечь много полезных данных из RFID-меток.

    Схема датчика барометрического давления с использованием Arduino

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

    Как сделать светодиодную схему измерителя загрязнения воздуха

    В этом конкретном задании мы собираемся построить измеритель загрязнения воздуха, используя датчик MQ-135 и Arduino. Степень загрязнения окружающей среды будет отображаться группой из 12 светодиодов. Количество горящих светодиодов дает пропорционально более высокий уровень загрязнения и наоборот схема, работающая с Arduino.Это устройство будет предупреждать бенефициара с помощью SMS и окружающих людей с помощью звукового сигнала зуммера, всякий раз, когда сжиженный газ имеет тенденцию к утечке из баллона со сжиженным газом или утечка в результате плохо закрытого клапана.

    Как сделать вольтметр постоянного тока с помощью Arduino

    На этой странице мы собираемся собрать вольтметр постоянного тока с помощью Arduino, показания которого отображаются на ЖК-дисплее 16×2. Рекомендуемая схема вольтметра предназначена для считывания напряжения до 30 В с допуском +/- 0,5 В. Мы намерены посмотреть, как работает эта конкретная установка, и проверить дополнительные опции

    Датчик качества воздуха MQ-135 с Arduino

    Здесь мы узнаем, как подключить датчик качества воздуха MQ-135 к Arduino.Мы изучим краткое описание датчика и разработаем небольшой симпатичный проект, специально предназначенный для инженеров, которые будут обнаруживать утечку сжиженного нефтяного газа и находить несколько соответствующих показаний в последовательном мониторе.

    Схема контроллера двигателя насоса GSM с использованием Arduino

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

    Схема лазерной безопасности на основе SMS с использованием Arduino

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

    Простая схема цифрового омметра Arduino

    В этом конкретном посте рассказывается о построении простой схемы цифрового омметра с использованием Arduino и ЖК-дисплея 16×2.Мы также собираемся изучить другие возможные схемы, используя ту же теорию.

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

    В этом посте мы обсудим, как настроить индикатор уровня заряда батареи с помощью Arduino, в котором группа из 6 светодиодов показывает уровень заряда батареи. Если вы планируете следить за ремонтом и обслуживанием вашей 12-вольтовой батареи, эта схема может оказаться полезной.

    Схема защиты от переразряда батареи с использованием Arduino

    Если вы инженер-электрик, то этот урок вам понравится.Здесь мы собираемся создать схему защиты от переразряда для 12-вольтовой батареи с использованием Arduino, которая может защитить 12-вольтовую батарею SLA от переразряда, а также защитить подключенную нагрузку от повышения напряжения в случае случайного подключения перезаряженной батареи.

    Схема защитного замка RFID с использованием Arduino

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

    Автоматический диммер уличного освещения с использованием Arduino

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

    Контроллер светодиодной ленты с использованием Arduino

    Из этого поста вы узнаете, как построить схему контроллера светодиодной ленты с использованием Arduino, которая может включать/выключать и уменьшать/увеличивать уровень освещенности светодиодов с помощью обычного ИК (инфракрасного) излучения. удаленный.Вы знаете, что такое светодиодная лента? Если вы не разбираетесь в светодиодных лентах, мы подробно разберемся, что это такое

    Как подключить серводвигатели к Arduino

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

    Простая схема модифицированного синусоидального инвертора Arduino

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

    Как связать акселерометр ADXL335 с Arduino

    В этой статье мы планируем выяснить, как использовать акселерометр с Arduino и получить ценные показания, которые, вероятно, будут распечатаны на последовательном мониторе IDE. Кроме того, мы кратко рассмотрим, как работает акселерометр и каковы его области применения.

    Инвертор IC 555 со схемой выключения батареи Arduino Hi/Low /Отключение при низком заряде батареи с сигнализацией.

    Схема частотомера с использованием Arduino и дисплея 16×2

    В рамках этой информативной статьи мы намерены построить цифровой частотомер с использованием Arduino, показания которого будут отображаться на ЖК-дисплее 16×2 и будут обладать вычислительным диапазоном от 35 Гц до 1 МГц.

    Схема инвертора чистой синусоидальной волны Arduino

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

    Схема генератора Arduino SPWM

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

    Как связать дисплей мобильного телефона с Arduino

    С помощью этого Arduino мы узнаем, как связать дисплей Nokia 5110 с микроконтроллером Arduino и как отображать текст, мы также научимся разрабатывать простые цифровые часы. и, наконец, мы будем проверять графические функции дисплея Nokia 5110.

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

    В этой статье мы создадим секундомер, который автоматически запускает таймер, как только бегун начинает бежать, и останавливает таймер, как только бегун достигает финишной точки.Прошедшее время между начальной и конечной точками отображается на ЖК-дисплее 16 x 2.

    Мини-метеостанция с использованием Arduino

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

alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован.