Оглавление:

Цифровые часы Arduino, синхронизируемые линией электропередачи 60 Гц: 8 шагов (с изображениями)
Цифровые часы Arduino, синхронизируемые линией электропередачи 60 Гц: 8 шагов (с изображениями)

Видео: Цифровые часы Arduino, синхронизируемые линией электропередачи 60 Гц: 8 шагов (с изображениями)

Видео: Цифровые часы Arduino, синхронизируемые линией электропередачи 60 Гц: 8 шагов (с изображениями)
Видео: Часы DS1307 RTC на Ардуино + LCD16x2 2024, Ноябрь
Anonim
Цифровые часы Arduino, синхронизируемые линией электропередачи 60 Гц
Цифровые часы Arduino, синхронизируемые линией электропередачи 60 Гц

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

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

Шаг 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: макет вашей схемы

Макет вашей схемы
Макет вашей схемы
Макет вашей схемы
Макет вашей схемы

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

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

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

Шаг 3: Построение схемы на Protoboard

Построение схем на Protoboard
Построение схем на Protoboard
Построение схем на Protoboard
Построение схем на Protoboard

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

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

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

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

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

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

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

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

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

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

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

Калибровка контура
Калибровка контура
Калибровка контура
Калибровка контура

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

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

2. С помощью частотомера или цифрового мультиметра в режиме частоты измерьте частоту на выводе 1 U5 и отрегулируйте RV1 точно на 60 Гц.

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

Шаг 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: Список деталей

1 - Трансформатор от 120 В переменного тока до 12 В переменного тока, примерно 100 мА или более 1 - Прототип платы примерно 3,5 дюйма x 3,5 дюйма 1 - 4-значный 7-сегментный дисплей YSD-439K2B-35 или аналогичный (Sparkfun) 2 - Небольшие кнопки для монтажа на печатной плате НЕТ (любые) 4 - 2N3904 Транзисторы NPN 8 - резисторы 330 Ом2 - Инверторы 74LS04 Hex1 - 74HC595 8-битный регистр сдвига последовательно в параллельный 1 - LM358 OP-AMP (компаратор) 1 - Микроконтроллер ATMEGA328P (Creatron) 4 - резисторы 4,7 кОм7 - резисторы 10 кОм1 - 1N400147 или 1N4001 диод 1N4001 диоды1 - резистор 120 Ом, 1/2 Вт или 1 Вт1 - Потенциометр 10K для монтажа на печатной плате 1 - Конденсатор на 470 мкФ 25 В1 - Регулятор напряжения в корпусе 7805 TO2201 - Конденсатор 10 мкФ 10 В2 - Конденсаторы 0,1 мкФ 10 В1 - Кристалл 16 МГц (Sparkfun) 2 - Конденсаторы 22 пФ1 - Гнездо питания (Дополнительно можно установить вилку, если таковая имеется на вашем настенном трансформаторе) 2 - 16-контактные разъемы IC 2 - 14-контактные разъемы IC 1 - 8-контактные разъемы IC 1 - 28-контактные разъемы IC 2 - болты № 4 или 6 длиной 1 дюйм и соответствующие гайки2 - 1 / 4-дюймовые длинные болты № 4-40 и подходящие гайки 1 - кусок плоской алюминиевой полосы шириной 1/2 дюйма, нарезанный по индивидуальному заказу и просверлен до нужного размера

Проволока # 30 AWG для намотки # Проволока 22 AWG Припой

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