Spisu treści:

Zegar cyfrowy Arduino zsynchronizowany przez linię zasilania 60 Hz: 8 kroków (ze zdjęciami)
Zegar cyfrowy Arduino zsynchronizowany przez linię zasilania 60 Hz: 8 kroków (ze zdjęciami)

Wideo: Zegar cyfrowy Arduino zsynchronizowany przez linię zasilania 60 Hz: 8 kroków (ze zdjęciami)

Wideo: Zegar cyfrowy Arduino zsynchronizowany przez linię zasilania 60 Hz: 8 kroków (ze zdjęciami)
Wideo: Rozmowa z Jankiem - Elektroniczne zegary [RS Elektronika] #242 2024, Listopad
Anonim
Zegar cyfrowy Arduino zsynchronizowany przez linię zasilania 60 Hz
Zegar cyfrowy Arduino zsynchronizowany przez linię zasilania 60 Hz

Ten zegar cyfrowy oparty na Arduino jest synchronizowany przez linię zasilania 60 Hz. Posiada prosty i niedrogi 4-cyfrowy 7-segmentowy wyświetlacz ze wspólną anodą, który pokazuje godziny i minuty. Wykorzystuje detektor krzyżowy do wykrywania, kiedy przychodząca fala sinusoidalna 60 Hz przekracza punkt zerowego napięcia i uzyskuje falę prostokątną 60 Hz.

W krótkich okresach częstotliwość fali sinusoidalnej przychodzącej z linii energetycznej może się bardzo nieznacznie różnić ze względu na obciążenie, ale w dłuższych okresach bardzo precyzyjnie osiąga średnią 60 Hz. Możemy to wykorzystać do uzyskania źródła czasu do synchronizacji naszego zegara.

Krok 1: Schemat obwodu

Schemat obwodu
Schemat obwodu

Istnieją dwie wersje obwodu w zależności od tego, czy chcesz użyć transformatora z odczepem środkowym, czy bez, w obu przypadkach działanie obwodu jest prawie identyczne. Do tej budowy użyłem adaptera ściennego (bez środkowego kranu), który wyprowadza 12 V AC. Użyję tego projektu (Digital Clock1 Circuit Diagram) do opisu obwodu. Należy pamiętać, że ważne jest, aby użyć adaptera ściennego, który wyprowadza 12 V AC, a nie 12 V DC, abyśmy mogli podłączyć się do fali sinusoidalnej AC w celu synchronizacji. Prawdopodobnie możesz również użyć transformatora, który wyprowadza 9 V AC, usunąć R19 i sprawić, by działał, ale 12 V jest bardzo powszechnie dostępne. Oto jak działa obwód:

120V AC przy 60Hz jest konwertowane na 12V AC przez transformator TR1. Jest on podawany do diody D4 i prostowany tak, że tylko napięcie dodatnie jest podawane i wygładzane do około DC z tętnieniem przez kondensator C3. Napięcie na C3 jest podawane do regulatora napięcia 7805 (U6) przez rezystor R19. R19 służy do obniżenia napięcia na C3, które w moim przypadku było zmierzone na około 15VDC. Może to być regulowane przez 7805, ale przy takim poziomie sygnału wejściowego 7805 musi spaść o około 10 V DC i w rezultacie robi się dość gorący. Używając R19 do obniżenia napięcia do około 10VDC zapobiegamy nadmiernemu nagrzewaniu się U6. Nie jest to więc wydajna technika konwersji energii, ale działa dla naszych celów. UWAGA: użyj tutaj rezystora co najmniej 1/2W lub więcej. Obwód pobiera około 55 mA, więc rozpraszanie mocy w R19 wynosi około 1/3W w oparciu o P=I**2*R lub P=55ma x 55ma x 120 omów = 0,363W. Next U6 wyprowadza czyste napięcie 5 V DC z C4 i C5 na wyjściu, aby odfiltrować wszelkie zakłócenia na linii zasilającej 5 V. To napięcie 5 V DC zasila wszystkie układy scalone na płycie.

Z TR1 pobieramy również próbkę niefiltrowanego sygnału AC i wprowadzamy ją do potencjometru RV1, który służy do regulacji poziomu podawanego do detektora krzyżowego. R18 i R17 tworzą dzielnik napięcia, aby jeszcze bardziej obniżyć poziom napięcia AC. Pamiętaj, że jest to napięcie 12V AC i musimy zredukować go do mniej niż 5 V, aby działał z naszym detektorem zwrotnicy, który jest tylko zasilany napięciem 5VDC. R15 i R16 zapewniają ograniczenie prądu, podczas gdy D1 i D2 mają zapobiegać przesterowaniu wzmacniacza operacyjnego U5. W pokazanej konfiguracji wyjście U5 na pinie 1 będzie się przełączać między +5V i 0V za każdym razem, gdy przychodząca fala sinusoidalna zmieni się z dodatniej na ujemną. Generuje to falę prostokątną 60 Hz, która jest podawana do mikrokontrolera U4. Program załadowany na U4 wykorzystuje tę falę prostokątną 60 Hz do zwiększania zegara co minutę i godzinę. Sposób, w jaki to się robi, zostanie omówiony w sekcji dotyczącej programu oraz w komentarzach do oprogramowania.

U7 używany jest rejestr przesuwny 74HC595, ponieważ mamy ograniczoną liczbę pinów cyfrowych na mikroprocesorze, więc służy on do rozszerzenia liczby wyjść. Używamy 4 pinów cyfrowych na mikroprocesorze, ale możemy kontrolować 7 segmentów na wyświetlaczu za pomocą 74HC595. Odbywa się to poprzez przesunięcie z góry określonych wzorców bitów, przechowywanych w mikrokontrolerze i reprezentujących każdą wyświetlaną cyfrę, do rejestru przesuwnego.

Zastosowany tutaj wyświetlacz jest wspólną anodą, więc musimy odwrócić poziomy sygnałów wychodzących z 74HC595, aby włączyć segment. Gdy segment powinien być włączony, sygnał wychodzący z pinu wyjściowego 74HC595 będzie miał napięcie +5V, ale potrzebujemy, aby pin, który podaje na wyświetlaczu, miał 0V, aby włączyć ten segment wyświetlacza. Aby to zrobić, potrzebujemy inwerterów szesnastkowych U2 i U3. Niestety jeden układ scalony falownika może obsłużyć tylko 6 inwersji, więc potrzebujemy dwóch z nich, chociaż na drugim używamy tylko jednej z 6 bramek. Niestety marnotrawstwo. Możesz zapytać, dlaczego nie użyć tutaj zwykłego wyświetlacza typu katody i wyeliminować U2 i U3? Cóż, odpowiedź jest taka, że możesz, po prostu mam wspólny typ anody w moich dostawach części. Jeśli masz lub chcesz użyć wyświetlacza ze wspólną katodą, po prostu wyeliminuj U2 i U3 i zmień okablowanie Q1 - Q4, aby kolektory tranzystorów były podłączone do pinów wyświetlacza, a emitery tranzystorów były połączone z masą. Q1 - Q4 kontrolują, który z czterech 7-segmentowych wyświetlaczy jest aktywny. Jest to kontrolowane przez mikrokontroler za pomocą pinów podłączonych do bazy tranzystorów Q1 - Q4.

Przyciski zwiększania i ustawiania będą używane do ręcznego ustawiania prawidłowego czasu zegara, jeśli chodzi o faktyczne korzystanie z zegara. Po jednokrotnym wciśnięciu przycisku Set, przycisk Increment może być użyty do przechodzenia przez godziny pokazane na wyświetlaczu. Po ponownym naciśnięciu przycisku Set, przycisk zwiększania może być użyty do przechodzenia przez minuty pokazywane na wyświetlaczu. Gdy przycisk Set zostanie naciśnięty po raz trzeci, czas zostanie ustawiony. R13 i R14 obniżają piny mikrokontrolera związane z tymi przyciskami, gdy nie są używane.

Zauważ, że tutaj zdjęliśmy U4 (Atmega328p) z typowej płytki prototypowej Arduino UNO i umieściliśmy ją na płytce prototypowej z resztą naszego układu. W tym celu musimy zapewnić co najmniej kryształ X1 oraz kondensatory C1 i C2 zapewniające źródło zegara dla mikrokontrolera, pin tie 1, pin resetujący, wysoki i zapewniający zasilanie 5VDC.

Krok 2: Deska do krojenia chleba Twój obwód

Deska do krojenia chleba Twój obwód
Deska do krojenia chleba Twój obwód
Deska do krojenia chleba Twój obwód
Deska do krojenia chleba Twój obwód

Niezależnie od tego, czy budujesz obwód dokładnie tak, jak pokazano na schemacie, czy może używasz nieco innego transformatora, typu wyświetlacza lub innych komponentów, powinieneś najpierw obłożyć obwód, aby upewnić się, że działa i że rozumiesz, jak to działa.

Na zdjęciach widać, że do układania styków całość wymagała kilku płytek, a także płytki Arduino Uno. Aby więc zaprogramować mikrokontroler lub poeksperymentować lub dokonać zmian w oprogramowaniu, początkowo będziesz potrzebować układu scalonego mikrokontrolera na płycie UNO, aby można było podłączyć do niego kabel USB i komputer, aby wgrać program lub dokonać zmian w oprogramowaniu.

Po uruchomieniu zegara na płytce prototypowej i zaprogramowaniu mikrokontrolera można go odłączyć i podłączyć do gniazdka na ostatecznym zegarze stałym na płytce prototypowej. Pamiętaj o przestrzeganiu środków antystatycznych, gdy to robisz. Podczas obsługi mikroprocesora używaj antystatycznej opaski na nadgarstek.

Krok 3: Budowa obwodów na płycie prototypowej

Budowa obwodów na płycie prototypowej
Budowa obwodów na płycie prototypowej
Budowa obwodów na płycie prototypowej
Budowa obwodów na płycie prototypowej

Obwód jest zbudowany na kawałku płytki prototypowej i okablowany punkt do punktu za pomocą drutu owijanego #30 AWG. Zapewnia mocny i niezawodny wynik. Ponieważ posiadany przeze mnie transformator ma wtyk męski 5mm na końcu kabla, odpowiednie gniazdo żeńskie zamontowałem z tyłu płyty, wycinając, wyginając i wiercąc kawałek płaskiej aluminiowej listwy o szerokości 1/2 w celu wykonania niestandardowego wspornika a następnie przykręciłem go do płytki małymi 4-40 nakrętkami i śrubami. Można było po prostu odciąć złącze i przylutować pozostałe przewody zasilające do płytki i oszczędzić sobie około 20 min pracy, ale nie chciałem żeby transformator był wpięty na stałe do tablicy.

Krok 4: Tworzenie gniazda na wyświetlacz i dawanie mu nóg

Tworzenie gniazda na wyświetlacz i dawanie mu nóg
Tworzenie gniazda na wyświetlacz i dawanie mu nóg
Tworzenie gniazda na wyświetlacz i dawanie mu nóg
Tworzenie gniazda na wyświetlacz i dawanie mu nóg
Tworzenie gniazda na wyświetlacz i dawanie mu nóg
Tworzenie gniazda na wyświetlacz i dawanie mu nóg

Ponieważ wyświetlacz ma 16 pinów, po 8 z każdej strony, z rozstawem pinów szerszym niż standardowe 16 pinowe gniazdo IC, musimy dostosować rozmiar gniazda do wyświetlacza. Możesz to zrobić, po prostu używając pary przecinaków do drutu, aby odciąć plastik łączący dwie strony gniazda, oddzielić je i przylutować osobno do płytki z odstępem odpowiadającym odstępom pinów na wyświetlaczu. Jest to korzystne, aby nie trzeba było lutować bezpośrednio do pinów wyświetlacza i narażać wyświetlacza na nadmierne ciepło. Możesz zobaczyć gniazdo, do którego to zrobiłem, na górze płyty na powyższym obrazku.

Aby wyświetlacz był ustawiony prawidłowo, przykręciłem dwie 1-calowe śruby do dwóch dolnych narożnych otworów płytki prototypowej, jak pokazano na zdjęciach, aby zrobić prosty stojak. To było dość podłe, więc jeśli to zrobisz, możesz chcesz umieścić coś ciężkiego z tyłu śrub, aby go ustabilizować.

Krok 5: Sprawdzanie okablowania płytki drukowanej i przygotowanie do kalibracji

Sprawdzanie okablowania płytki drukowanej i przygotowywanie do kalibracji
Sprawdzanie okablowania płytki drukowanej i przygotowywanie do kalibracji

Po podłączeniu płytki drukowanej, ale przed podłączeniem układów scalonych lub wyświetlacza lub włączeniem zasilania, dobrym pomysłem jest sprawdzenie połączeń płytki za pomocą DVM. Większość DVM można ustawić tak, aby emitowały sygnał dźwiękowy, gdy występuje ciągłość. Ustaw DVM w tym trybie, a następnie postępując zgodnie ze schematem obwodu, sprawdź jak najwięcej połączeń obwodu. Sprawdź, czy obwód nie jest otwarty lub blisko niego, między punktami +5V i uziemienia. Sprawdź wzrokowo, czy wszystkie komponenty są podłączone do właściwych styków.

Następnie podłącz transformator do obwodu i włącz go. Sprawdź, czy masz dokładnie 5 V DC na szynie zasilającej 5 V za pomocą oscyloskopu lub DVM przed podłączeniem jakichkolwiek układów scalonych lub wyświetlacza.

Następnie podłącz TYLKO układ scalony Op-Amp U5 w ramach przygotowań do następnego kroku. Tutaj sprawdzimy, czy nasz obwód zwrotny generuje falę prostokątną i ustawimy potencjometrem RV1 na czysty sygnał 60 Hz.

Krok 6: Kalibracja obwodu

Kalibracja obwodu
Kalibracja obwodu
Kalibracja obwodu
Kalibracja obwodu

Jedyną kalibracją do wykonania jest ustawienie potencjometru RV1 na prawidłowy poziom sygnału zasilającego detektor krzyżowy. Można to zrobić na dwa sposoby:

1. Umieść sondę oscyloskopu na styku 1 U5 i upewnij się, że przewód uziemiający sondy oscyloskopu jest podłączony do masy obwodu. Następnie dostosuj RV1, aż uzyskasz czystą falę prostokątną, jak pokazano na powyższym obrazku. Jeśli ustawisz RV1 zbyt daleko w jedną lub w drugą stronę, albo nie będziesz mieć fali prostokątnej, albo fala prostokątna będzie zniekształcona. Upewnij się, że częstotliwość fali prostokątnej wynosi 60 Hz. Jeśli masz nowoczesny oscyloskop, prawdopodobnie poda Ci częstotliwość. Jeśli masz starożytny teleskop, tak jak ja, upewnij się, że okres fali prostokątnej wynosi około 16,66 ms lub 1/60 sekundy.

2. Używając licznika częstotliwości lub DVM w trybie Częstotliwość, zmierz częstotliwość na styku 1 U5 i ustaw RV1 na dokładnie 60 Hz.

Po wykonaniu tej kalibracji wyłącz obwód i podłącz wszystkie układy scalone i wyświetlacz, aby zakończyć budowę obwodu.

Krok 7: Program Arduino

Program jest w pełni skomentowany, dzięki czemu można poznać szczegóły każdego kroku. Ze względu na złożoność programu trudno opisać każdy krok, ale na bardzo wysokim poziomie tak to działa:

Mikroprocesor odbiera przychodzącą falę prostokątną 60 Hz i liczy 60 cykli oraz zwiększa liczbę sekund po każdych 60 cyklach. Gdy licznik sekund osiągnie 60 sekund lub 3600 cykli, licznik minut zostanie zwiększony, a licznik sekund zostanie zresetowany do zera. Gdy licznik minut osiągnie 60 minut, licznik godzin jest zwiększany, a licznik minut jest resetowany do zera. licznik godzin jest resetowany do 1 po 13 godzinach, więc jest to zegar 12-godzinny. Jeśli chcesz mieć zegar 24-godzinny, po prostu zmień program, aby zresetować godziny do zera po 24 godzinach.

Jest to projekt eksperymentalny, więc próbowałem użyć pętli Do-While, aby stłumić odbijanie się przełącznika na przyciskach Set i Increment. Działa dość dobrze. Po jednokrotnym wciśnięciu przycisku Set, przycisk Increment może być użyty do przechodzenia przez godziny pokazane na wyświetlaczu. Po ponownym naciśnięciu przycisku Set, przycisk zwiększania może być użyty do przechodzenia przez minuty pokazywane na wyświetlaczu. Gdy przycisk Set zostanie naciśnięty po raz trzeci, czas zostanie ustawiony i zegar zacznie działać.

Wzorce 0 i 1 używane do wyświetlania każdej liczby na wyświetlaczach 7-segmentowych są przechowywane w tablicy o nazwie Seven_Seg. W zależności od aktualnego czasu zegarowego, wzorce te są wprowadzane do układu 74HC595 i wysyłane do wyświetlacza. Która z 4 cyfr wyświetlacza jest włączana w dowolnym momencie, aby otrzymać te dane, jest sterowana przez mikroprocesor za pośrednictwem wyświetlacza Dig 1, 2, 3, 4 piny. Kiedy obwód jest włączony, program najpierw uruchamia procedurę testową o nazwie Test_Clock, która wysyła prawidłowe cyfry, aby podświetlić każdy wyświetlacz z liczbą od 0 do 9. Więc jeśli zobaczysz to po włączeniu, wiesz, że wszystko zbudowałeś poprawnie.

Krok 8: Lista części

1 - Transformator 120VAC do 12VAC ok. 100mA lub więcej1 - Płytka prototypowa ok. 3,5" x 3,5"1 - 4-cyfrowy 7-segmentowy wyświetlacz YSD-439K2B-35 lub odpowiednik (Sparkfun)2 - Małe przyciski do montażu na płytce drukowanej NIE (dowolne)4 - 2N3904 Tranzystory NPN8 - Rezystory 330 omów2 - 74LS04 Inwertery szesnastkowe1 - 74HC595 szeregowo-równoległy 8-bitowy rejestr przesuwny 1 - LM358 OP-AMP (Komparator)1 - ATMEGA328P Mikrokontroler (Creatron)4 - Rezystory 4,7K7 - Rezystory 10K1 - 1N4007 lub 1N4001 dioda2 - 1N41 diody1 - rezystor 120 omów, 1/2W lub 1W1 - potencjometr 10K do montażu na płytce drukowanej1 - kondensator 470uF 25V1 - regulator napięcia obudowy 7805 TO2201 - kondensator 10uF 10V2 - kondensatory 0,1uF 10V1 -kondensatory kryształowe 16MHz (Sparkfun)2 -kondensatory 22pF1 - gniazdo zasilania żeńskiego (Opcjonalnie, aby dopasować wtyk męski, jeśli jest na transformatorze ściennym) 2 - 16-pinowe gniazda IC2 - 14-pinowe gniazda IC1 - 8-pinowe gniazdo IC1 - 28-pinowe gniazdo IC2 - 1 "długość około 4 lub 6 śrub i pasujące nakrętki2 - 1/ Śruby o długości 4 "4-40 i pasujące nakrętki1 - kawałek płaskiej aluminiowej taśmy o szerokości 1/2" niestandardowego cięcia i wywiercone na wymiar

#30 AWG drut owijający drut #22 AWG wireSolder

Zalecana: