Inhaltsverzeichnis:

Arduino-Digitaluhr, synchronisiert durch die 60-Hz-Stromleitung - Gunook
Arduino-Digitaluhr, synchronisiert durch die 60-Hz-Stromleitung - Gunook

Video: Arduino-Digitaluhr, synchronisiert durch die 60-Hz-Stromleitung - Gunook

Video: Arduino-Digitaluhr, synchronisiert durch die 60-Hz-Stromleitung - Gunook
Video: Seltsame Signale im 230 V Stromnetz ! 2024, November
Anonim
Arduino-Digitaluhr, synchronisiert durch die 60-Hz-Stromleitung
Arduino-Digitaluhr, synchronisiert durch die 60-Hz-Stromleitung

Diese Arduino-basierte Digitaluhr wird über die 60-Hz-Stromleitung synchronisiert. Es verfügt über eine einfache und kostengünstige 4-stellige 7-Segment-Anzeige mit gemeinsamer Anode, die Stunden und Minuten anzeigt. Es verwendet einen Cross-Over-Detektor, um zu erkennen, wann die ankommende 60-Hz-Sinuswelle den Nullspannungspunkt kreuzt, und leitet eine 60-Hz-Rechteckwelle ab.

Über kurze Zeiträume kann die Frequenz der ankommenden Sinuswelle von der Stromleitung aufgrund der Last sehr leicht variieren, aber über lange Zeiträume mittelt sie sich sehr genau auf 60 Hz. Wir können dies nutzen, um eine Timing-Quelle abzuleiten, um unsere Uhr zu synchronisieren.

Schritt 1: Der Schaltplan

Der Schaltplan
Der Schaltplan

Es gibt zwei Schaltungsvarianten, je nachdem, ob Sie einen Transformator mit Mittelanzapfung oder einen ohne verwenden möchten, in beiden Fällen ist die Schaltungsfunktion nahezu identisch. Für diesen Build habe ich einen Wandadapter (kein Mittelhahn) verwendet, der 12 V AC ausgibt. Ich werde dieses Design (Digital Clock1 Circuit Diagram) für die Schaltungsbeschreibung verwenden. Beachten Sie, dass es wichtig ist, einen Wandadapter zu verwenden, der 12 V AC und nicht 12 V DC ausgibt, damit wir die AC-Sinuswelle für das Timing anzapfen können. Sie könnten wahrscheinlich auch einen Transformator verwenden, der 9 V AC ausgibt, R19 entfernen und auch zum Laufen bringen, aber 12 V sind sehr verbreitet. So funktioniert die Schaltung:

120V AC bei 60Hz wird vom Transformator TR1 in 12V AC umgewandelt. Diese wird der Diode D4 zugeführt und gleichgerichtet, so dass nur die +ve-Spannung dem Kondensator C3 zugeführt und auf ungefähr DC mit Welligkeit geglättet wird. Die Spannung an C3 wird über den Widerstand R19 dem Spannungsregler 7805 (U6) zugeführt. R19 wird verwendet, um die Spannung an C3 zu reduzieren, die in meinem Fall bei ungefähr 15 VDC gemessen wurde. Dies kann vom 7805 reguliert werden, aber bei diesem Eingangspegel muss der 7805 ungefähr 10 VDC abfallen und wird dadurch ziemlich heiß. Indem wir R19 verwenden, um die Spannung auf etwa 10 VDC abzusenken, verhindern wir, dass U6 zu stark aufheizt. Dies ist also keine effiziente Stromwandlungstechnik, aber sie funktioniert für unsere Zwecke. HINWEIS: Verwenden Sie hier mindestens einen 1/2W-Widerstand oder mehr. Die Schaltung zieht etwa 55 mA, sodass die Verlustleistung in R19 etwa 1/3 W beträgt, basierend auf P = I ** 2 * R oder P = 55 mA x 55 mA x 120 Ohm = 0,363 W. Als nächstes gibt U6 reine 5V DC mit C4 und C5 am Ausgang aus, um jegliches Rauschen auf der 5V-Stromleitung zu filtern. Diese 5V DC versorgt alle ICs auf der Platine.

Von TR1 nehmen wir auch eine Probe des ungefilterten AC-Signals und führen es in das Potentiometer RV1 ein, das verwendet wird, um den Pegel einzustellen, der dem Crossover-Detektor zugeführt wird. R18 und R17 bilden einen Spannungsteiler, um die eingehende Wechselspannung weiter zu reduzieren. Denken Sie daran, dass dies bei 12 V Wechselspannung ankommt und wir sie auf weniger als 5 V reduzieren müssen, damit sie mit unserem Crossover-Detektor funktioniert, der nur mit 5VDC betrieben. R15 und R16 bieten eine Strombegrenzung, während D1 und D2 eine Übersteuerung des Operationsverstärkers U5 verhindern sollen. In der gezeigten Konfiguration wechselt der Ausgang von U5 an Pin 1 jedes Mal zwischen +5 V und 0 V, wenn sich die eingehende Sinuswelle von positiv auf negativ ändert. Dadurch wird eine 60-Hz-Rechteckwelle erzeugt, die dem Mikrocontroller U4 zugeführt wird. Das auf U4 geladene Programm verwendet dann diese 60-Hz-Rechteckwelle, um die Uhr jede Minute und Stunde zu erhöhen. Wie dies geschieht, wird im Abschnitt zum Softwareprogramm und in den Softwarekommentaren erläutert.

U7 wird das Schieberegister 74HC595 verwendet, da der Mikroprozessor über eine begrenzte Anzahl digitaler Pins verfügt und daher zur Erweiterung der Anzahl der Ausgänge verwendet wird. Wir verwenden 4 digitale Pins am Mikroprozessor, können aber über den 74HC595 7 Segmente auf dem Display steuern. Dies wird erreicht, indem vorbestimmte Bitmuster, die im Mikrocontroller gespeichert sind und jede anzuzeigende Ziffer darstellen, in das Schieberegister geschoben werden.

Das hier verwendete Display ist eine gemeinsame Anode, daher müssen wir die Signalpegel des 74HC595 invertieren, um ein Segment einzuschalten. Wenn ein Segment eingeschaltet werden soll, liegt das vom 74HC595-Ausgangspin kommende Signal bei +5 V, aber wir benötigen den Pin, den es in das Display einspeist, um 0 V zu haben, um dieses Displaysegment einzuschalten. Dazu benötigen wir die Hex-Inverter U2 und U3. Leider kann ein Inverter-IC nur 6 Inversionen verarbeiten, daher benötigen wir zwei davon, obwohl wir beim zweiten nur eines der 6 Gates verwenden. Leider verschwenderisch. Sie könnten sich fragen, warum hier nicht eine gemeinsame Kathodenanzeige verwendet und U2 und U3 eliminiert werden. Nun, die Antwort ist, dass Sie das können, ich habe zufällig einen gemeinsamen Anodentyp in meinem Teilevorrat. Wenn Sie eine gemeinsame Kathodenanzeige haben oder verwenden möchten, eliminieren Sie einfach U2 und U3 und verdrahten Sie Q1 - Q4 neu, so dass die Transistorkollektoren mit den Anzeigestiften und die Transistoremitter mit Masse verbunden sind. Q1 - Q4 steuern, welche der vier 7-Segment-Anzeigen aktiv ist. Dies wird vom Mikrocontroller über die Pins gesteuert, die mit der Basis der Transistoren Q1 - Q4 verbunden sind.

Die Inkrement- und Set-Tasten werden verwendet, um die richtige Uhrzeit manuell einzustellen, wenn es darum geht, die Uhr tatsächlich zu verwenden. Wenn die Set-Taste einmal gedrückt wird, kann die Inkrement-Taste verwendet werden, um durch die auf dem Display angezeigten Stunden zu blättern. Wenn die Set-Taste erneut gedrückt wird, kann die Inkrement-Taste verwendet werden, um durch die auf dem Display angezeigten Minuten zu blättern. Wenn die Set-Taste ein drittes Mal gedrückt wird, ist die Uhrzeit eingestellt. R13 und R14 ziehen die mit diesen Tasten verbundenen Mikrocontroller-Pins nach unten, wenn sie nicht verwendet werden.

Beachten Sie, dass wir hier U4 (Atmega328p) von der typischen Arduino UNO-Prototypplatine genommen und mit dem Rest unserer Schaltung auf die Prototypplatine gelegt haben. Dazu müssen wir mindestens den Quarz X1 und die Kondensatoren C1 und C2 bereitstellen, um eine Taktquelle für den Mikrocontroller bereitzustellen, Pin 1, den Reset-Pin hoch zu binden und 5 V DC bereitzustellen.

Schritt 2: Steckbrett für Ihre Schaltung

Steckbrett für deine Schaltung
Steckbrett für deine Schaltung
Steckbrett für deine Schaltung
Steckbrett für deine Schaltung

Unabhängig davon, ob Sie die Schaltung genau so aufbauen, wie im Schaltplan gezeigt, oder vielleicht einen etwas anderen Transformator, Displaytyp oder andere Komponenten verwenden, sollten Sie die Schaltung zuerst mit einem Steckbrett versehen, um sicherzustellen, dass sie funktioniert und Sie verstehen, wie sie funktioniert.

In den Bildern können Sie sehen, dass das Breadboarden des Ganzen ein paar Boards sowie ein Arduino Uno-Board erfordert. Um den Mikrocontroller zu programmieren oder zu experimentieren oder Änderungen an der Software vorzunehmen, benötigen Sie also zunächst den Mikrocontroller-IC auf einem UNO-Board, damit Sie ein USB-Kabel daran und Ihren Computer anschließen können, um das Programm hochzuladen oder Software-Änderungen vorzunehmen.

Sobald Sie die Uhr auf dem Steckbrett zum Laufen gebracht und Ihren Mikrocontroller programmiert haben, können Sie ihn ausstecken und in den Sockel Ihrer endgültigen permanenten Uhr auf der Prototypenplatine stecken. Beachten Sie dabei unbedingt die Antistatik-Vorkehrungen. Verwenden Sie beim Umgang mit dem Mikroprozessor ein antistatisches Armband.

Schritt 3: Schaltungsaufbau auf Protoboard

Schaltungsaufbau auf Protoboard
Schaltungsaufbau auf Protoboard
Schaltungsaufbau auf Protoboard
Schaltungsaufbau auf Protoboard

Die Schaltung ist auf einem Stück Prototypenplatine aufgebaut und Punkt-zu-Punkt mit #30 AWG Wire Wrap-Draht verdrahtet. Es liefert ein robustes und zuverlässiges Ergebnis. Da der Transformator, den ich habe, am Ende des Kabels einen 5-mm-Stecker hat, habe ich die entsprechende Buchse auf der Rückseite der Platine durch Schneiden, Biegen und Bohren eines Stücks 1/2 breiten flachen Aluminiumstreifens montiert, um eine Maßanfertigung zu machen und dann mit kleinen 4-40 Schrauben und Muttern an die Platine geschraubt. Sie könnten einfach den Stecker abschneiden und die restlichen Stromkabel an die Platine löten und sich ungefähr 20 Minuten Arbeit sparen, aber ich wollte nicht, dass der Transformator dauerhaft befestigt ist zum Vorstand.

Schritt 4: Erstellen einer Steckdose für das Display und Verteilen von Beinen

Eine Steckdose für das Display erstellen und ihm Beine machen
Eine Steckdose für das Display erstellen und ihm Beine machen
Eine Steckdose für das Display erstellen und ihm Beine machen
Eine Steckdose für das Display erstellen und ihm Beine machen
Eine Steckdose für das Display erstellen und ihm Beine machen
Eine Steckdose für das Display erstellen und ihm Beine machen

Da das Display 16 Pins hat, 8 einen auf jeder Seite, mit einem Pinabstand, der breiter ist als bei einem standardmäßigen 16-Pin-IC-Sockel, müssen wir die Sockelgröße an das Display anpassen. Sie können dies tun, indem Sie einfach mit einem Drahtschneider den Kunststoff, der die beiden Seiten des Sockels verbindet, abschneiden, trennen und separat mit einem Abstand an die Platine löten, der dem Abstand der Pins auf dem Display entspricht. Dies ist von Vorteil, damit Sie nicht direkt an die Displaypins löten müssen und das Display übermäßiger Hitze aussetzen. Sie können die Buchse sehen, die ich oben auf der Platine im Bild oben gemacht habe.

Damit das Display richtig steht, habe ich zwei 1-Zoll-Schrauben an die unteren beiden Ecklöcher der Prototypenplatine geschraubt, wie auf den Fotos gezeigt, um einen einfachen Stand zu machen möchte etwas Schweres auf die Rückseite der Schrauben legen, um es zu stabilisieren.

Schritt 5: Überprüfen der Leiterplattenverkabelung und Vorbereiten der Kalibrierung

Überprüfen der Leiterplattenverkabelung und Vorbereiten der Kalibrierung
Überprüfen der Leiterplattenverkabelung und Vorbereiten der Kalibrierung

Sobald die Platine verdrahtet ist, aber bevor Sie die ICs oder das Display anschließen oder einschalten, ist es eine gute Idee, die Platinenverbindungen mit einem DVM zu überprüfen. Sie können die meisten DVMs so einstellen, dass sie bei Kontinuität piepsen. Stellen Sie Ihr DVM in diesen Modus ein und überprüfen Sie dann gemäß Ihrem Schaltplan so viele Schaltungsverbindungen wie möglich. Suchen Sie nach einem offenen Stromkreis oder in der Nähe davon zwischen den +5V- und Massepunkten. Überprüfen Sie visuell, ob alle Komponenten mit den richtigen Pins verbunden sind.

Als nächstes schließen Sie Ihren Transformator an den Stromkreis an und schalten ihn ein. Überprüfen Sie mit einem Oszilloskop oder DVM, ob genau 5 V DC an der 5 V-Stromschiene anliegen, bevor Sie ICs oder das Display anschließen.

Als nächstes schließen Sie NUR den Op-Amp U5 IC an, um den nächsten Schritt vorzubereiten. Hier überprüfen wir, ob unsere Frequenzweiche eine Rechteckwelle erzeugt und stellen das Potentiometer RV1 für ein sauberes 60-Hz-Signal ein.

Schritt 6: Stromkreiskalibrierung

Kreislaufkalibrierung
Kreislaufkalibrierung
Kreislaufkalibrierung
Kreislaufkalibrierung

Die einzige Kalibrierung, die durchgeführt werden muss, besteht darin, das Potentiometer RV1 auf den richtigen Pegel des Signals einzustellen, das den Crossover-Detektor speist. Dazu gibt es zwei Möglichkeiten:

1. Setzen Sie eine Oszilloskopsonde auf Pin 1 von U5 und stellen Sie sicher, dass das Erdungskabel der Oszilloskopsonde mit der Schaltungsmasse verbunden ist. Stellen Sie als nächstes RV1 ein, bis Sie eine saubere Rechteckwelle haben, wie im obigen Bild gezeigt. Wenn Sie RV1 in die eine oder andere Richtung zu weit einstellen, haben Sie entweder keine Rechteckwelle oder eine verzerrte Rechteckwelle. Stellen Sie sicher, dass die Frequenz der Rechteckwelle 60 Hz beträgt. Wenn Sie ein modernes Zielfernrohr haben, wird Ihnen wahrscheinlich die Frequenz angezeigt. Wenn Sie ein altes Zielfernrohr wie ich haben, stellen Sie sicher, dass die Rechteckwellenperiode ungefähr 16,66 ms oder 1/60 s beträgt.

2. Messen Sie mit einem Frequenzzähler oder DVM im Frequenzmodus die Frequenz an Pin 1 von U5 und stellen Sie RV1 auf genau 60 Hz ein.

Sobald diese Kalibrierung abgeschlossen ist, schalten Sie den Stromkreis aus und schließen Sie alle ICs und das Display an, um den Stromkreisaufbau abzuschließen.

Schritt 7: Das Arduino-Programm

Das Programm ist vollständig kommentiert, sodass Sie die Details jedes Schritts herausfinden können. Aufgrund der Komplexität des Programms ist es schwierig, jeden Schritt zu beschreiben, aber auf einem sehr hohen Niveau funktioniert es so:

Der Mikroprozessor empfängt die ankommende 60-Hz-Rechteckwelle und zählt 60 Zyklen und erhöht die Sekundenzählung nach jeweils 60 Zyklen. Sobald die Sekundenzählung 60 Sekunden oder 3600 Zyklen erreicht, wird die Minutenzählung erhöht und die Sekundenzählung auf Null zurückgesetzt. Sobald die Minutenzählung 60 Minuten erreicht, wird die Stundenzählung erhöht und die Minutenzählung auf Null zurückgesetzt. die Stundenzählung wird nach 13 Stunden auf 1 zurückgesetzt, dies ist also eine 12-Stunden-Uhr. Wenn Sie eine 24-Stunden-Uhr wünschen, ändern Sie einfach das Programm, um die Stunden nach 24 Stunden auf Null zurückzusetzen.

Dies ist ein experimentelles Projekt, daher habe ich versucht, eine Do-While-Schleife zu verwenden, um das Springen der Schalter auf den Set- und Increment-Buttons zu unterdrücken. Es funktioniert einigermaßen gut. Wenn die Set-Taste einmal gedrückt wird, kann die Inkrement-Taste verwendet werden, um durch die auf dem Display angezeigten Stunden zu blättern. Wenn die Set-Taste erneut gedrückt wird, kann die Inkrement-Taste verwendet werden, um durch die auf dem Display angezeigten Minuten zu blättern. Wenn die Set-Taste ein drittes Mal gedrückt wird, wird die Uhrzeit eingestellt und die Uhr beginnt zu laufen.

Muster von 0 und 1, die verwendet werden, um jede Zahl auf den 7-Segment-Anzeigen anzuzeigen, werden im Array namens Seven_Seg gespeichert. Abhängig von der aktuellen Uhrzeit werden diese Muster dem 74HC595 IC zugeführt und an das Display gesendet. Welche der 4 Ziffern des Displays zu irgendeinem Zeitpunkt eingeschaltet ist, um diese Daten zu empfangen, wird vom Mikroprozessor über das Display Dig 1, 2, 3, 4 Pins gesteuert. Wenn die Schaltung eingeschaltet wird, führt das Programm zuerst eine Testroutine namens Test_Clock aus, die die richtigen Ziffern sendet, um jedes Display mit einer Zählung von 0 bis 9 aufzuleuchten. Wenn Sie dies also beim Einschalten sehen, wissen Sie, dass Sie alles richtig gebaut haben.

Schritt 8: Teileliste

1 - Transformator 120VAC bis 12VAC ca. 100mA oder mehr1 - Prototypenplatine ca. 3,5" x 3,5"1 - 4-stellige 7-Segment-Anzeige YSD-439K2B-35 oder gleichwertig (Sparkfun)2 - Kleine Drucktasten für Leiterplattenmontage NO (beliebig)4 - 2N3904 NPN-Transistoren8 – 330-Ohm-Widerstände2 – 74LS04 Hex-Inverter1 – 74HC595 seriell zu parallel 8-Bit-Schieberegister 1 – LM358 OP-AMP (Komparator)1 – ATMEGA328P Mikrocontroller (Creatron)4 – 4,7K Widerstände7 – 10K Widerstände1 – 1N4007 oder 1N4001 Diode2 – 1N4148 Dioden1 - 120 Ohm, 1/2W oder 1W Widerstand1 - 10K Potentiometer für Leiterplattenmontage1 - 470uF 25V Kondensator1 - 7805 TO220 Gehäusespannungsregler1 - 10uF 10V Kondensator2 - 0.1uF 10V Kondensatoren1 - 16MHz Quarz (Sparkfun)2 - 22pF Kondensatoren1 - Steckdosenbuchse (Optional zum Anbringen eines Steckers, falls vorhanden, an Ihrem Wandtransformator)2 - 16-polige IC-Buchsen2 - 14-polige IC-Buchsen1 - 8-polige IC-Buchse1 - 28-polige IC-Buchse2 - 1" lang ca. 4 oder #6 Schrauben und passende Muttern2 - 1/ 4 "lange #4-40 Schrauben und passende Muttern1 - Stück 1/2" breiter flacher Aluminiumstreifen nach Maß und auf Maß gebohrt

#30 AWG Wire Wrap Draht#22 AWG DrahtLöt

Empfohlen: