Съдържание:

Arduino цифров часовник, синхронизиран от 60Hz захранваща линия: 8 стъпки (със снимки)
Arduino цифров часовник, синхронизиран от 60Hz захранваща линия: 8 стъпки (със снимки)

Видео: Arduino цифров часовник, синхронизиран от 60Hz захранваща линия: 8 стъпки (със снимки)

Видео: Arduino цифров часовник, синхронизиран от 60Hz захранваща линия: 8 стъпки (със снимки)
Видео: Самые простые часы на Arduino Nano 2024, Ноември
Anonim
Arduino цифров часовник, синхронизиран от 60Hz захранваща линия
Arduino цифров часовник, синхронизиран от 60Hz захранваща линия

Този базиран на Arduino цифров часовник е синхронизиран от 60Hz захранваща линия. Той има прост и евтин общ аноден 4 -цифрен 7 -сегментен дисплей, който показва часове и минути. Той използва детектор за пресичане, за да открие, когато входящата 60Hz синусоида пресича нулевата точка на напрежение и извежда квадратна вълна от 60 Hz.

За кратки периоди от време честотата на входящата синусова вълна от електропровода може да варира много леко поради натоварването, но за дълги периоди от време тя е средно до 60Hz много точно. Можем да се възползваме от това, за да извлечем източник на време за синхронизиране на нашия часовник.

Стъпка 1: Електрическа схема

Електрическата схема
Електрическата схема

Има две версии на веригата в зависимост от това дали искате да използвате трансформатор с централен кран или такъв без, и в двата случая работата на веригата е почти идентична. За тази конструкция използвах адаптер за стена (без централен кран), който извежда 12V AC. Ще използвам този дизайн (Digital Clock1 Circuit Diagram) за описанието на веригата. Имайте предвид, че е важно да използвате адаптер за стена, който извежда 12V AC, а не 12V DC, за да можем да се включим в AC синусоидалната вълна за синхронизиране. Вероятно бихте могли да използвате и трансформатор, който извежда 9V AC, премахва R19 и също така да работи, но 12V е много често наличен. Ето как работи веригата:

120V AC при 60Hz се преобразува в 12V AC чрез трансформатор TR1. Това се подава към диод D4 и се коригира, така че само +ve напрежението се подава към кондензатора C3 и се изглажда до приблизително DC с пулсация. Напрежението на C3 се подава към регулатора на напрежението 7805 (U6) чрез резистор R19. R19 се използва за намаляване на напрежението на C3, което в моя случай беше измерено при приблизително 15VDC. Това може да се регулира от 7805, но с това ниво на вход 7805 трябва да спадне приблизително 10VDC и в резултат на това да стане доста горещо. Използвайки R19 за понижаване на напрежението до около 10VDC, ние предотвратяваме прегряването на U6 твърде много. Така че това не е ефективна техника за преобразуване на енергия, но работи за нашите цели. ЗАБЕЛЕЖКА: използвайте поне 1/2W резистор или повече тук. Схемата извлича около 55 ma, така че разсейването на мощността в R19 е около 1/3 W въз основа на P = I ** 2*R или P = 55ma x 55ma x 120 ома = 0,363 W. След това U6 извежда чисто 5V DC с C4 и C5 на изхода, за да филтрира всеки шум по 5V захранващата линия. Този 5V DC захранва всички интегрални схеми на платката.

От TR1 също вземаме проба от нефилтрирания AC сигнал и го подаваме в потенциометър RV1, който се използва за регулиране на нивото, подадено към детектора за кръстоска. R18 и R17 образуват разделител на напрежение, за да намалят допълнително нивото на променливотоково напрежение. Не забравяйте, че това идва при 12V AC и трябва да го намалим до по -малко от 5 V, така че да работи с нашия кръстосан детектор, който е само захранва се от 5VDC. R15 и R16 осигуряват ограничаване на тока, докато D1 и D2 са предназначени да предотвратят претоварване на оп-усилвател U5. В показаната конфигурация изходът на U5 на пин 1 ще се редува между +5V и 0V всеки път, когато входящата синусова вълна се промени от положителна към отрицателна. Това генерира квадратна вълна от 60 Hz, която се подава към микроконтролера, U4. Програмата, заредена на U4, след това използва тази 60Hz квадратна вълна за увеличаване на часовника всяка минута и час. Как се прави това ще бъде обсъдено в раздела за софтуерната програма и в коментарите към софтуера.

U7 се използва регистърът на смяна 74HC595, тъй като имаме ограничен брой цифрови пинове на микропроцесора, така че той се използва за разширяване на броя на изходите. Използваме 4 цифрови пина на микропроцесора, но можем да контролираме 7 сегмента на дисплея чрез 74HC595. Това се постига чрез преместване на предварително определени шаблони на битове, съхранявани в микроконтролера и представляващи всяка цифра, която трябва да се покаже, в регистъра за смяна.

Използваният тук дисплей е общ анод, така че трябва да обърнем нивата на сигнала, излизащи от 74HC595, за да включим сегмент. Когато сегментът трябва да бъде включен, сигналът, излизащ от изходния извод 74HC595, ще бъде на +5V, но ние се нуждаем от щифта, който подава на дисплея, да бъде на 0V, за да включим този сегмент на дисплея. За да направим това, се нуждаем от шестнадесетични инвертори U2 и U3. За съжаление една инверторна интегрална схема може да се справи само с 6 инверсии, така че имаме нужда от две от тях, въпреки че на втората използваме само една от 6 -те врати. Разточително за съжаление. Може да попитате защо да не използвате обикновен катоден дисплей тук и да премахнете U2 и U3? Е, отговорът е, че можете, просто имам общ тип анод в доставката на части. Ако имате или искате да използвате общ дисплей с катоден тип, просто премахнете U2 и U3 и пренасочете Q1 - Q4, така че транзисторните колектори да са свързани към изводите на дисплея, а емитерите на транзисторите да са свързани към земята. Q1 - Q4 контролира кой от четирите 7 -сегментни дисплея е активен. Това се контролира от микроконтролера, чрез щифтовете, свързани към основата на транзисторите Q1 - Q4.

Бутоните за увеличаване и задаване ще се използват за ръчно задаване на правилното време на часовника, когато става въпрос за действително използване на часовника. Когато бутонът Set е натиснат веднъж, бутонът Increment може да се използва за преминаване през часовете, показани на дисплея. Когато бутонът Set е натиснат отново, бутонът за увеличаване може да се използва за преминаване през минутите, показани на дисплея. Когато бутонът Set е натиснат за трети път, часът е зададен. R13 и R14 издърпват щифтовете на микроконтролера, свързани с тези бутони, когато не се използват.

Обърнете внимание, че тук сме премахнали U4 (Atmega328p) от типичната прототипна платка на Arduino UNO и я поставихме върху прототипната платка с останалата част от нашата схема. За да направим това, ние трябва да осигурим най -малко кристал X1 и кондензатори C1 и C2, за да осигурим източник на часовник за микроконтролера, щифт за свързване 1, щифт за нулиране, висок и да осигурим 5VDC мощност.

Стъпка 2: Макет на вашата схема

Макет на вашата схема
Макет на вашата схема
Макет на вашата схема
Макет на вашата схема

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

На снимките можете да видите, че макетът на цялото нещо изисква няколко дъски, както и дъска Arduino Uno. Така че, за да програмирате микроконтролера или да експериментирате или да направите промени в софтуера, първоначално ще имате нужда от микроконтролера IC на UNO платка, така че да можете да свържете USB кабел към него и вашия компютър, за да качите програмата или да направите промени в софтуера.

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

Стъпка 3: Конструкция на верига на Protoboard

Конструкция на верига на Protoboard
Конструкция на верига на Protoboard
Конструкция на верига на Protoboard
Конструкция на верига на Protoboard

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

Стъпка 4: Създаване на гнездо за дисплея и придаване на крака

Създаване на гнездо за дисплея и придаване на крака
Създаване на гнездо за дисплея и придаване на крака
Създаване на гнездо за дисплея и придаване на крака
Създаване на гнездо за дисплея и придаване на крака
Създаване на гнездо за дисплея и придаване на крака
Създаване на гнездо за дисплея и придаване на крака

Тъй като дисплеят има 16 пина, по 8 от всяка страна, с разстояние между щифтовете, което е по -широко от стандартен 16 -пинов IC гнездо, трябва да регулираме размера на гнездото, така че да пасне на дисплея. Можете да направите това, като просто използвате чифт резачки за тел, за да отрежете пластмасата, свързваща двете страни на гнездото, да ги разделите и да ги запоите отделно към дъската с разстояние, което съответства на разстоянието между щифтовете на дисплея. Изгодно е да направите това, така че да не се налага да запоявате директно към щифтовете на дисплея и да излагате дисплея на прекомерна топлина. Можете да видите гнездото, към което направих това, в горната част на дъската на снимката по -горе.

За да накарам дисплея да се изправи надясно, закрепих два 1 -инчови болта към долните два ъглови отвора на прототипната платка, както е показано на снимките, за да направя проста стойка. Това беше доста леко, така че ако направите това, може да искате да поставите нещо тежко на гърба на болтовете, за да го стабилизирате.

Стъпка 5: Проверка на окабеляването на платката и подготовка за калибриране

Проверка на окабеляването на платката и подготовка за калибриране
Проверка на окабеляването на платката и подготовка за калибриране

След като платката е свързана, но преди да включите интегралните схеми или дисплея или да я включите, добра идея е да проверите връзките на платката с DVM. Можете да настроите повечето DVM, така че да издават звуков сигнал, когато има непрекъснатост. Настройте вашия DVM в този режим и след това следвайки вашата схема, проверете възможно най -много от връзките на веригата. Проверете за отворена верига или близо до нея, между точките +5V и земята. Визуално проверете дали всички компоненти са свързани към правилните щифтове.

След това свържете вашия трансформатор към веригата и го включете. Проверете дали имате точно 5V DC на 5V захранващата шина с обхват или DVM, преди да включите интегрални схеми или дисплей.

След това включете САМО Op-Amp U5 IC в подготовка за следващата стъпка. Тук ще проверим дали нашата кръстосана верига генерира квадратна вълна и ще регулираме потенциометъра RV1 за чист 60 Hz сигнал.

Стъпка 6: Калибриране на веригата

Калибриране на веригата
Калибриране на веригата
Калибриране на веригата
Калибриране на веригата

Единственото калибриране, което трябва да се направи, е да се настрои потенциометърът RV1 за правилното ниво на сигнала, подаващ кръстосания детектор. Има два начина да направите това:

1. Поставете сонда за обхват на щифт 1 на U5 и не забравяйте да свържете заземяващия проводник на сондата за обхват към масата на веригата. След това регулирайте RV1, докато имате чиста квадратна вълна, както е показано на горната снимка. Ако регулирате RV1 твърде далеч по един или друг начин, или няма да имате квадратна вълна, или изкривена квадратна вълна. Уверете се, че честотата на квадратната вълна е 60 Hz. Ако имате модерен обхват, той вероятно ще ви каже честотата. Ако имате древен обхват като мен, уверете се, че периодът на квадратната вълна е приблизително 16,66 ms или 1/60 секунди.

2. Използвайки честотен брояч или DVM в режим Честота, измерете честотата на пин 1 на U5 и регулирайте RV1 точно за 60 Hz.

След като това калибриране приключи, изключете веригата и включете всички интегрални схеми и дисплея, за да завършите изграждането на веригата.

Стъпка 7: Програмата Arduino

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

Микропроцесорът приема входящата квадратна вълна от 60 Hz и брои 60 цикъла и увеличава броя на секундите след всеки 60 цикъла. След като броят на секундите достигне 60 секунди или 3600 цикъла, броят на минутите се увеличава и броят на секундите се нулира. След като броят на минутите достигне 60 минути, броят на часовете се увеличава и броят на минутите се нулира. броят на часовете се нулира на 1 след 13 часа, така че това е 12 часовник. Ако искате 24 часов часовник, просто сменете програмата, за да нулирате часовете до нула след 24 часа.

Това е експериментален проект, затова се опитах да използвам цикъл Do-While за потискане на превключването на бутоните Set и Increment. Работи сравнително добре. Когато бутонът Set е натиснат веднъж, бутонът Increment може да се използва за преминаване през часовете, показани на дисплея. Когато бутонът Set е натиснат отново, бутонът за увеличаване може да се използва за преминаване през минутите, показани на дисплея. Когато бутонът Set е натиснат за трети път, часът се настройва и часовникът започва да работи.

Модели от 0 и 1, които се използват за показване на всяко число на 7-сегментните дисплеи, се съхраняват в масива, наречен Seven_Seg. В зависимост от текущия часовник, тези модели се подават към IC 74HC595 и се изпращат на дисплея. Коя от 4 -те цифри на дисплея е включена по всяко време за получаване на тези данни, се контролира от микропроцесора чрез дисплея Dig 1, 2, 3, 4 пина. Когато веригата се включи, програмата първо стартира тестова рутина, наречена Test_Clock, която изпраща правилните цифри, за да осветява всеки дисплей с брой от 0 до 9. Така че, ако видите това, когато се включите, знаете, че сте изградили всичко правилно.

Стъпка 8: Списък на частите

1 - Трансформатор 120VAC до 12VAC приблизително 100 mA или повече NPN транзистори 8 - 330 ома резистори 2 - 74LS04 Шестнадесетични инвертори 1 - 74HC595 сериен към паралелен 8 битов регистър за смяна 1 - LM358 OP -AMP (компаратор) 1 - ATMEGA328P микроконтролер (Creatron) 4 - 4.7K резистори 7 - 10K резистори 1 - 1N4007 или 1N4004 диод диоди 1 - 120 ома, 1/2W или 1W резистор 1 - PCB монтаж 10K потенциометър 1 - 470uF 25V кондензатор 1 - 7805 TO220 регулатор на напрежението на пакета 1 - 10uF 10V кондензатор 2 - 0,1 uF 10V кондензатори 1 - 16MHz кристал (Sparkfun) 2 - 22pF кондензатори По избор за монтиране на мъжки щепсел, ако има такъв на вашия стенен трансформатор) 2 - 16 пинови IC гнезда 2 - 14 пинови IC гнезда 1 - 8 пинов IC гнездо 1-28 пинов IC гнездо 2 - 1 "дълъг приблизително #4 или #6 болтове и съответстващи гайки2 - 1/ 4 "дълги #4-40 болтове и съответстващи гайки 1 - парче от 1/2" широка плоска алуминиева лента по поръчка и пробити по размер

#30 AWG тел за опаковане на тел#22 AWG тел Припой

Препоръчано: