Inhaltsverzeichnis:

Wort-Uhr: 5 Schritte
Wort-Uhr: 5 Schritte

Video: Wort-Uhr: 5 Schritte

Video: Wort-Uhr: 5 Schritte
Video: WortUhr erster Test 2024, November
Anonim
Wort-Uhr
Wort-Uhr

Hallo zusammen!

Dies wird mein erstes instructable sein und wenn Sie irgendwelche Ideen haben, wie man es verbessern oder leichter verständlich machen kann, zögern Sie bitte nicht, mich zu kontaktieren!

Nun, diese Art von "Uhr" ist zunächst nicht meine Idee! Ich habe viel im Internet gesehen und sie können für nur ein paar Dollar in verschiedenen Webshops bestellt werden. Aber ich wollte keinen kaufen, sondern einen eigenen machen, um zu lernen und zu verstehen, wie es funktioniert.

Ein Wort an "nicht-deutsche" Mitglieder… Sorry, dass dies nur eine "Deutsche Wort Uhr" ist. Es könnte leicht in Englisch oder jede andere Sprache konvertiert werden, aber da ich Deutscher bin, habe ich es in meiner Sprache gemacht. Wenn Sie Unterstützung für Ihre Sprache benötigen, kontaktieren Sie mich und ich werde versuchen, Ihnen zu helfen.

So lass uns anfangen…

Schritt 1: Der Schaltplan

Der Schaltplan
Der Schaltplan

Der Schaltplan ist einfach und wenn das Bild zu schlecht zu lesen ist, gibt es auch eine PDF-Datei.

Beginnen wir in der unteren linken Ecke. Es gibt eine einfache Stromversorgung mit einem LM7805, um einen stabilen 5-V-Ausgang für den PIC, die Schieberegister (74HC164) und den Echtzeitchip DS3231 zu erzeugen. Alle LEDs werden auch von diesem Teil versorgt. D22 am rechten Ende dient nur zur Anzeige der Stromversorgung und kann bei Bedarf einfach auseinander gelassen werden.

Sie können für die Uhr ein beliebiges DC-Netzteil mit weniger als 40V verwenden, aber Sie sollten dann den entsprechenden Wert für C7 wählen. Es sollte eine Nennspannung von mindestens der doppelten Eingangsspannung haben und denken Sie daran, dass Sie im LM7805 Wärme erzeugen. Versuchen Sie daher, die Eingangsspannung so niedrig wie möglich zu halten, da alles andere nur Energieverschwendung ist. Die beste Passform ist etwas zwischen 9V und 12V DC.

Kümmern Sie sich nicht um die Polarität Ihres Netzteils… Der p-Kanal MOSFET (Q1) fungiert als Verpolungsschutz und die Uhr wird einfach nicht funktionieren und keinen Schaden nehmen. Dies können Sie an der "Power"-LED D22 überprüfen, falls diese montiert ist.

Auf der rechten Seite des Schaltplans befinden sich die Serial-In-Parallel-Out-Schieberegister. Ich habe mich dafür entschieden, sie zu verwenden, weil ich keinen riesigen PIC mit vielen I/O-Ports verwenden wollte. Ich wollte einen kleineren verwenden und hatte noch einige 16F1829 zu Hause, sodass die Wahl schon klar war. Die Daten (IN_1, IN_2 und IN_3) werden vom PIC (siehe Codeabschnitt unten) und auch vom REGISTER_CLK bereitgestellt. Der Einfachheit halber in meinem Code- und PCB-Layout habe ich zwei der 74HC164 für die Stunden und den letzten für die "Logik" verwendet.

In der oberen linken Ecke befindet sich der PIC und alle notwendigen Teile. Ich habe die interne Uhr verwendet, damit kein Oszillator benötigt wird. Nur drei Widerstände für SCL, SDA und MCLR. Für die Tatsache, dass ich die 32kHz als Angabe für "genaue Sekunden" verwendet habe, ist keine ziemlich stabile und genaue Frequenz für den PIC erforderlich.

In der Mitte befindet sich der DS3231 mit einem Minimum an Außenteilen. Tatsächlich habe ich nur die SDA- und SCL-Eingänge für die Kommunikation über I²C und den 32kHZ-Ausgang als externe Taktreferenz für Timer1 des PIC16F1829 verwendet. Für diesen Ausgang steht im Datenblatt, dass ein externer Pull-Up-Widerstand benötigt wird. Die anderen Ausgänge habe ich in diesem Projekt nicht verwendet und sie unverbunden gelassen.

Auch in der Mitte die LEDs… Wie man im Schaltplan lesen kann, habe ich blaue LEDs (die mit klarem Gehäuse) und einen Widerstandswert von 1k Ohm verwendet. Wenn Sie beabsichtigen, dieses Projekt selbst zu machen, sollten Sie die Werte dieser Widerstände entsprechend der Farbe und des Typs der von Ihnen gewählten LEDs wählen. Denken Sie auch daran, wo die Uhr aufgestellt werden soll. Meine steht in meinem Schlafzimmer, deshalb wollte ich die LEDs nicht zu hell haben und habe einen größeren Wert für die Widerstände gewählt. Machen Sie einige Versuche auf einem Steckbrett mit LEDs und Widerstandswerten, bevor Sie sie auf der Platine montieren.

Schritt 2: Layout

Layout
Layout
Layout
Layout
Layout
Layout

Nach Fertigstellung des Schaltplans ist es an der Zeit, die Leiterplatte zu verlegen. Dafür habe ich KiCAD verwendet (auch für Schaltpläne). Es gibt nicht viel zu sagen, einfach die Linien verlegen.

Für die Tatsache, dass ich das Gehäuse der Uhr selbst bedruckt habe, war es ganz wichtig, wo sich die LEDs auf der obersten Schicht befinden. Ich habe die LEDs und Widerstände nur auf die oberste Schicht gelegt, weil ich meine Platine teilmontiert bestellt habe (alle SMD-Teile) und weil die Firma, die ich dafür gewählt habe, nur Teile auf einer Seite und nicht doppelseitig platziert.

Sie können die Platzierung in den beiden 3-dimensionalen Bildern sehen, die ich aus KiCAD gemacht habe.

Wenn Sie interessiert sind… Es ist möglich, die KiCAD-Platine nach Eagle zu exportieren und dann ist es recht einfach, das Gehäuse zu konstruieren, da Sie eine Referenz von der Platine haben.

Schritt 3: „Logik“der „Wort-Uhr“

Der größte Teil für dieses Projekt war der Code für den PIC…

Zuerst die "Logik" der gesprochenen Zeit im Deutschen finden und in Code übersetzen.

Leider war es nicht möglich, die Excel-Datei direkt hochzuladen, aber ich hoffe, der PDF-Export ist für Sie lesbar genug. Wenn nicht, kontaktieren Sie mich bitte und ich schicke Ihnen die Original-Excel-Datei. Im PDF seht ihr, wie ich die Logik für meine Uhr eingerichtet habe. Sie können sehen, wie ich die verschiedenen Zeitschritte durchlaufen habe und wie die Schreibweise ist. Die Berechnung innerhalb des Codes (hauptsächlich if-else-Anweisungen) kann aus den Informationen auf der rechten Seite der Tabelle abgeleitet werden. Ein Teil ist für Minuten und ein Teil für die Stunden.

Wie Sie sehen, ist dies keine Zauberei und kann leicht in C codiert werden. Der "kniffligste" Punkt in der Logik ist der Umgang mit der Stunde, da Sie in der Datei sehen können, dass nur zu Beginn einer Stunde die tatsächliche Stunde angezeigt wird. Im Deutschen (vielleicht ist das nur eine bayrische Besonderheit) wird die "nächste Stunde" recht früh verwendet.

Zum Codieren habe ich MPLABX als IDE meiner Wahl verwendet.

Schritt 4: Code-Schnipsel

Code Ausschnitte
Code Ausschnitte
Code Ausschnitte
Code Ausschnitte

Ich werde meinen Code hier nicht posten, aber wenn Sie beabsichtigen, Ihren eigenen Code zu schreiben, gebe ich Ihnen einige Hinweise, worüber ich während der Entwicklung "gestolpert" bin…

Zuerst das "Registrieren"-Ausfüllen:

Wenn zu oft und in zu kurzen Zyklen neue Daten in die Register übertragen wurden, machte ich die Erfahrung, dass die LEDs anfingen zu flackern. Also habe ich einige "Blockierungsflags" gemacht, die nur jede Minute eine neue "Berechnung" der gesprochenen Zeit machen und eine Registeraktualisierung machen.

Der Code zum Füllen der Register ist im Bild oben. Wie Sie sehen können, fülle ich alle 3 Register parallel, sodass ich 3 Pins des PIC für Daten und 1 Pin für CLK benötige. Der 74HC164 übernimmt neue Daten bei einem Übergang an der CLK-Leitung von 0 auf 1.

Der Rest des Codes ist hauptsächlich PIC-abhängiges Zeug, die "Gesprochene Zeit"-Logik und die Handhabung von Kommunikation und Schaltflächen. Die Kommunikation wird hauptsächlich von Microchip MPLABX bereitgestellt, da ich das MSSP-Modul verwendet habe.

Eine gute Idee ist es, das Datenblatt von DS3231 zu lesen, da die Daten darin als BCD gespeichert sind, sodass Sie dies möglicherweise in Ihrem Code "transformieren" müssen. Also ich bin ein "learning by doing" Typ und habe natürlich das Datenblatt nicht gelesen… Hat mich jede Menge Nerven und Stunden gekostet.

Wie Sie vielleicht bemerkt haben, gibt es bei dieser Implementierung zwei Möglichkeiten, die Zeit im Auge zu behalten.

  1. Sie können die aktuelle Uhrzeit aus dem DS3231 auslesen
  2. Sie können im PIC selbst "Sekunden zählen" und die Zeit einfach von Zeit zu Zeit mit DS3231 synchronisieren

Es liegt an Ihnen und beide Wege sind praktisch und unkompliziert. Ich habe die erste Option und nur synchronisierte Zeit beim Einstellen der Zeit über die Tasten (Schreibzeit auf DS3231) oder alle 24 Stunden (Lesezeit von DS3231) verwendet, weil ich mehr Logik selbst implementieren wollte. Ich drehe meine Uhr auch nachts (23:00 bis 05:00) aus, was meiner Meinung nach etwas einfacher war.

Schritt 5: Das Gehäuse

Zu guter Letzt ist es an der Zeit, einen kurzen Blick auf das Gehäuse zu werfen.

Wie oben erwähnt, habe ich das Gehäuse selbst hergestellt (mit Eagle) und mit meinem 3D-Drucker gedruckt, damit ich die Positionen der verschiedenen LEDs im Auge behalten musste.

Im Anhang finden Sie die STL-Dateien, wenn Sie sie verwenden möchten.

Hoffe, dieses anweisbare hilft Ihnen beim Bau Ihrer eigenen "Wort-Uhr". Sollten noch "offene Fragen" bestehen, zögern Sie nicht, mich zu kontaktieren. Kommentieren Sie am besten unten, da Sie möglicherweise nicht der einzige sind, der eine bestimmte Frage hat.

Empfohlen: