Оглавление:

Часы Arduino 60 Гц: 8 шагов
Часы Arduino 60 Гц: 8 шагов

Видео: Часы Arduino 60 Гц: 8 шагов

Видео: Часы Arduino 60 Гц: 8 шагов
Видео: Часы реального времени. Уроки Arduino 2024, Ноябрь
Anonim
Часы Arduino 60 Гц
Часы Arduino 60 Гц

Эти цифровые часы на базе Arduino синхронизируются линией питания 60 Гц. Он имеет простой и недорогой анодный 4-значный 7-сегментный дисплей, который показывает часы и минуты. Он использует перекрестный детектор, чтобы обнаружить, когда входящая синусоида с частотой 60 Гц пересекает точку нулевого напряжения и выдает прямоугольную волну с частотой 60 Гц.

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

Шаг 1: Шаг 1: Схемы

Шаг 1: схемы
Шаг 1: схемы

Существует две версии схемы, в зависимости от того, хотите ли вы использовать трансформатор с центральным отводом или один без, в обоих случаях работа схемы практически идентична. Для этой сборки я использовал сетевой адаптер (без центрального ответвителя), который выдает 12 В переменного тока. Я буду использовать этот дизайн (схему Digital Clock1) для описания схемы. Обратите внимание, что важно использовать сетевой адаптер, который выдает 12 В переменного тока, а не 12 В постоянного тока, чтобы мы могли использовать синусоидальную волну переменного тока для синхронизации. Вы, вероятно, также можете использовать трансформатор, который выводит 9 В переменного тока, удалить R19 и заставить его работать, но 12 В очень широко доступны. Вот как работает схема:

120 В переменного тока при 60 Гц преобразуется в 12 В переменного тока трансформатором TR1. Он подается на диод D4 и выпрямляется, так что только положительное напряжение подается на конденсатор C3 и сглаживается примерно до постоянного тока с пульсациями. Напряжение на C3 подается на регулятор напряжения 7805 (U6) через резистор R19. R19 используется для снижения напряжения на C3, которое в моем случае было измерено примерно на 15 В постоянного тока. Это можно регулировать с помощью 7805, но при таком уровне входного сигнала 7805 должен упасть примерно на 10 В постоянного тока и в результате сильно нагревается. Используя R19 для снижения напряжения примерно до 10 В постоянного тока, мы предотвращаем чрезмерный нагрев U6. Так что это не эффективный метод преобразования энергии, но он работает для наших целей. ПРИМЕЧАНИЕ: используйте здесь резистор не менее 1/2 Вт. Схема потребляет около 55 мА, поэтому рассеиваемая мощность в R19 составляет около 1/3 Вт, исходя из P = I ** 2 * R или P = 55 мА x 55 мА x 120 Ом = 0,363 Вт. Далее U6 выдает чистые 5 В постоянного тока с C4 и C5 на выходе для фильтрации любых шумов в линии питания 5 В. Эти 5 В постоянного тока питают все микросхемы на плате. Из TR1 мы также берем образец нефильтрованного сигнала переменного тока и подаем его в потенциометр RV1, который используется для регулировки уровня, подаваемого на перекрестный детектор. R18 и R17 образуют делитель напряжения, чтобы еще больше снизить уровень входящего переменного напряжения. Помните, что он поступает при 12 В переменного тока, и нам нужно уменьшить его до менее 5 В, чтобы он работал с нашим перекрестным детектором, который только питание от 5VDC. R15 и R16 обеспечивают ограничение тока, в то время как D1 и D2 предназначены для предотвращения перегрузки операционного усилителя U5. В показанной конфигурации выход U5 на контакте 1 будет чередоваться между + 5В и 0В каждый раз, когда входящая синусоида меняется с положительной на отрицательную. Это генерирует прямоугольный сигнал частотой 60 Гц, который подается на микроконтроллер U4. Программа, загруженная в U4, затем использует этот прямоугольный сигнал с частотой 60 Гц для приращения часов каждую минуту и час. Как это делается, будет обсуждаться в разделе, посвященном программе, и в комментариях к программе. U7 используется сдвиговый регистр 74HC595, потому что у нас ограниченное количество цифровых выводов на микропроцессоре, поэтому он используется для увеличения количества выходов. Мы используем 4 цифровых контакта на микропроцессоре, но можем управлять 7 сегментами дисплея через 74HC595. Это достигается путем сдвига заранее определенных комбинаций битов, хранящихся в микроконтроллере и представляющих каждую отображаемую цифру, в регистр сдвига. Используемый здесь дисплей является общим анодом, поэтому нам нужно инвертировать уровни сигнала, выходящие из 74HC595, чтобы включить сегмент. Когда сегмент должен быть включен, сигнал, выходящий из выходного контакта 74HC595, будет на уровне + 5В, но нам нужно, чтобы контакт, который он передает на дисплей, был на 0В, чтобы включить этот сегмент дисплея. Для этого нам понадобятся шестигранные инверторы U2 и U3. К сожалению, одна ИС инвертора может обрабатывать только 6 инверсий, поэтому нам нужно два из них, хотя на втором мы используем только один из 6 вентилей. К сожалению, расточительно. Вы можете спросить, почему бы не использовать здесь обычный дисплей катодного типа и исключить U2 и U3? Что ж, ответ - вы можете, просто у меня в запасе деталей есть анод обычного типа. Если у вас есть или вы хотите использовать дисплей с обычным катодом, просто удалите U2 и U3 и перемонтируйте Q1 - Q4 так, чтобы коллекторы транзистора были подключены к выводам дисплея, а эмиттеры транзисторов были подключены к земле. Q1 - Q4 определяют, какой из четырех 7-сегментных дисплеев активен. Это контролируется микроконтроллером через контакты, подключенные к базе транзисторов Q1 - Q4. Кнопки увеличения и установки будут использоваться для ручной установки правильного времени, когда дело доходит до фактического использования часов. При однократном нажатии кнопки Set можно использовать кнопку увеличения для пошагового переключения часов, отображаемых на дисплее. При повторном нажатии кнопки Set можно использовать кнопку приращения для переключения минут, отображаемых на дисплее. При третьем нажатии кнопки Set время устанавливается. R13 и R14 подтягивают контакты микроконтроллера, связанные с этими кнопками, когда они не используются. Обратите внимание, что здесь мы взяли U4 (Atmega328p) с типичной прототипной платы Arduino UNO и поместили его на прототипную плату вместе с остальной частью нашей схемы. Для этого мы должны как минимум предоставить кристалл X1 и конденсаторы C1 и C2, чтобы обеспечить источник тактовой частоты для микроконтроллера, связать контакт 1, контакт сброса, высокий и обеспечить питание 5 В постоянного тока.

Шаг 2: Шаг 2: прототип макета

Шаг 2: прототип макета
Шаг 2: прототип макета
Шаг 2: прототип макета
Шаг 2: прототип макета

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

На изображениях вы можете видеть, что для всего этого требовалось пара плат, а также плата Arduino Uno. Таким образом, чтобы запрограммировать микроконтроллер, поэкспериментировать или внести изменения в программное обеспечение, вам сначала понадобится микросхема микроконтроллера на плате UNO, чтобы вы могли подключить к ней USB-кабель и свой компьютер для загрузки программы или внесения изменений в программное обеспечение. После того, как вы заставите часы работать на макетной плате и запрограммируете свой микроконтроллер, вы можете отключить его и подключить к разъему на постоянных часах окончательной сборки на макетной плате. При этом обязательно соблюдайте антистатические меры предосторожности. При работе с микропроцессором используйте антистатический браслет.

Шаг 3: Шаг 3: Окончательная конструкция

Шаг 3: Окончательная конструкция
Шаг 3: Окончательная конструкция
Шаг 3: Окончательная конструкция
Шаг 3: Окончательная конструкция

Схема построена на куске прототипа платы и подключена точка-точка с использованием проволочной обмотки # 30 AWG. Обеспечивает жесткий и надежный результат. Поскольку трансформатор, который у меня есть, имеет 5-миллиметровый штекер на конце кабеля, я установил соответствующую розетку на задней части платы, вырезав, согнув и просверлив кусок плоской алюминиевой полосы шириной 1/2 дюйма, чтобы сделать индивидуальный кронштейн, а затем прикрутил его к плате маленькими 4-40 гайками и болтами. Вы могли просто отрезать разъем и припаять оставшиеся провода питания к плате и сэкономить около 20 минут работы, но я не хотел, чтобы трансформатор был постоянно прикреплен к доске.

Шаг 4: Шаг 4: Создание гнезда для дисплея и придание ему ножек

Шаг 4: Создание гнезда для дисплея и придание ему ножек
Шаг 4: Создание гнезда для дисплея и придание ему ножек
Шаг 4: Создание гнезда для дисплея и придание ему ножек
Шаг 4: Создание гнезда для дисплея и придание ему ножек
Шаг 4: Создание гнезда для дисплея и придание ему ножек
Шаг 4: Создание гнезда для дисплея и придание ему ножек

Поскольку дисплей имеет 16 контактов, по 8 с каждой стороны, с расстоянием между контактами, которое шире, чем у стандартного 16-контактного разъема IC, нам необходимо отрегулировать размер разъема, чтобы он соответствовал дисплею. Вы можете сделать это, просто используя пару кусачков, чтобы отрезать пластик, соединяющий две стороны гнезда, разделить их и припаять их отдельно к плате с расстоянием, которое соответствует расстоянию между контактами на дисплее. Это выгодно сделать так, чтобы вам не приходилось припаивать непосредственно к выводам дисплея и подвергать дисплей чрезмерному нагреву. Вы можете увидеть сокет, для которого я это сделал, в верхней части платы на картинке выше.

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

Шаг 5: Шаг 5: Проверка проводки печатной платы и подготовка к калибровке

Шаг 5: Проверка проводки печатной платы и подготовка к калибровке
Шаг 5: Проверка проводки печатной платы и подготовка к калибровке

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

Затем подключите трансформатор к цепи и включите его. Убедитесь, что у вас есть ровно 5 В постоянного тока на шине питания 5 В с помощью осциллографа или цифрового вольтметра, прежде чем подключать какие-либо микросхемы или дисплей. Затем подключите ТОЛЬКО микросхему операционного усилителя U5 для подготовки к следующему шагу. Здесь мы проверим, что наша схема кроссовера генерирует прямоугольную волну, и настроим потенциометр RV1 на чистый сигнал 60 Гц.

Шаг 6: Шаг 6: Калибровка контура

Шаг 6: Калибровка контура
Шаг 6: Калибровка контура
Шаг 6: Калибровка контура
Шаг 6: Калибровка контура

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

1. Поместите щуп осциллографа на контакт 1 U5 и убедитесь, что заземляющий провод щупа осциллографа подключен к заземлению цепи. Затем отрегулируйте RV1, пока не получите чистую прямоугольную волну, как показано на рисунке выше. Если вы слишком сильно отрегулируете RV1 в одну или другую сторону, у вас либо не будет прямоугольной волны, либо будет искаженная прямоугольная волна. Убедитесь, что частота прямоугольной волны составляет 60 Гц. Если у вас есть современный прицел, он, вероятно, покажет вам частоту. Если у вас есть старый прицел, как у меня, убедитесь, что период прямоугольной волны составляет приблизительно 16,66 мс или 1/60 секунды. 2. С помощью частотомера или цифрового мультиметра в режиме частоты измерьте частоту на выводе 1 U5 и отрегулируйте RV1 точно на 60 Гц. После завершения калибровки выключите схему и подключите все микросхемы и дисплей, чтобы завершить построение схемы.

Шаг 7: Шаг 7: программа Arduino

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

Микропроцессор принимает входящий прямоугольный сигнал 60 Гц и считает 60 циклов и увеличивает счетчик секунд после каждых 60 циклов. Когда счетчик секунд достигает 60 секунд или 3600 циклов, счетчик минут увеличивается, а счетчик секунд сбрасывается до нуля. Когда счетчик минут достигает 60 минут, счетчик часов увеличивается, а счетчик минут сбрасывается на ноль. счетчик часов сбрасывается до 1 через 13 часов, так что это 12-часовые часы. Если вы хотите, чтобы часы отображались в 24-часовом формате, просто измените программу, чтобы часы обнулялись через 24 часа. Это экспериментальный проект, поэтому я попытался использовать цикл Do-While для подавления дребезга переключателя на кнопках Set и Increment. Работает достаточно хорошо. При однократном нажатии кнопки «Установить» кнопку «Приращение» можно использовать для переключения часов, отображаемых на дисплее. При повторном нажатии кнопки Set можно использовать кнопку приращения для переключения минут, отображаемых на дисплее. При третьем нажатии кнопки «Установить» время устанавливается и часы начинают идти. Шаблоны 0 и 1, которые используются для отображения каждого числа на 7-сегментных дисплеях, хранятся в массиве под названием Seven_Seg. В зависимости от текущего времени на часах эти шаблоны подаются на микросхему 74HC595 и отправляются на дисплей. Какая из 4 цифр дисплея включается в любой момент для приема этих данных, управляется микропроцессором через контакты дисплея Dig 1, 2, 3, 4. Когда на схему подается питание, программа сначала запускает процедуру тестирования под названием Test_Clock, которая отправляет правильные цифры, чтобы загореться каждый дисплей со счетом от 0 до 9. Итак, если вы видите это при включении, значит, вы все построили правильно..

Шаг 8: Шаг 8: Предложение PCBWay

На этом статья завершается, но спонсором этого проекта является PCBWay, которая в то время отмечает свое 5-летие. Проверьте это на https://www.pcbway.com/anniversary5sales.html и не забывайте, что их услуги по сборке теперь стоят всего 30 долларов.

Рекомендуемые: