Kostenlose technische Bibliothek ENZYKLOPÄDIE DER FUNKELEKTRONIK UND ELEKTROTECHNIK Einfacher Wecker auf PIC16F84. Enzyklopädie der Funkelektronik und Elektrotechnik Lexikon der Funkelektronik und Elektrotechnik / Uhren, Timer, Relais, Lastschalter Vor nicht allzu langer Zeit wurden elektronische Uhren auf den sogenannten Uhrenchips der K176-Serie und Spezialchips der Serien K145 (K145IK1901) und KR1016 (KR1016VI1) gebaut. Ihr größter Nachteil sind die begrenzten Verbesserungsmöglichkeiten (jede Änderung erfordert eine Hardware-Verfeinerung). Uhren, die auf Basis eines Mikrocontrollers aufgebaut sind, stechen positiv hervor. Die Schaltung wird stark vereinfacht und das „Upgrade“ kann ohne Änderungen an der Hardware durchgeführt werden. Sogar die Einstellung der Taktrate kann rein per Software erfolgen. Es sind diese Uhren, die im unten veröffentlichten Artikel beschrieben werden. Der vorgeschlagene Wecker mit einer vierstelligen LED-Anzeige basiert auf einem Mikrocontroller (MC) und zeigt die Uhrzeit im 24-Stunden-Format mit einer unbedeutenden Nullausblendung in der Zehner-Stunden-Entladung an. Es gibt einen Anzeigemodus für Minuten und Sekunden, einen kurzen (1 s dauernden) Piepton zu Beginn jeder Stunde (bei Bedarf kann diese Funktion ausgeschaltet werden), zwei Alarme, die ausgeschaltet werden können, und eine Softwareeinstellung der Zeitkorrekturfaktor, von dem die Ganggenauigkeit der Uhr abhängt. Der Wert des Koeffizienten und die Alarmeinstellungen werden im nichtflüchtigen Speicher (EEPROM) des MK aufgezeichnet. Der Status der Wecker und das Signal „Stündlich“ wird durch LEDs angezeigt. Das schematische Diagramm des Geräts ist in Abb. dargestellt. 1. Seine Basis ist der Mikrocontroller PIC16F84 (DD1), dessen Betriebsfrequenz durch einen Oszillator mit externem Resonator ZQ1 auf 4 MHz eingestellt wird. Der MC-Reset-Eingang (MCLR) ist direkt mit der +5-V-Stromschiene verbunden. Der Fünf-Bit-Port A, dessen Leitungen alle für die Ausgabe konfiguriert sind, steuert die HL1-LED und schaltet die Ziffern der HG1-Anzeige um. Die vier höchstwertigen Bits von Port B (RB4-RB7) sind für die Eingabe und den Empfang von Steuersignalen von den SB1-SB4-Tasten konfiguriert, die mit Pins ohne „Pull-up“-Widerstände verbunden sind, da es solche im MK gibt. Die Bits RB0 und RB1 von Port B werden verwendet, um einen sieben Elemente umfassenden Code, der der angezeigten Ziffer entspricht, in das Register DD2 zu laden. Die RB2-Entladung ist die Ausgabe eines 3H-Signals oder eines Alarms (je nach Programmversion), die direkt an einen Piezo-Emitter (ZP-1, ZP-3 und dergleichen) an den Eingang eines angeschlossen werden kann 3H-Verstärker oder an einen Aktor, zum Beispiel ein Relais, das zum Zeitpunkt des Alarms das Radio, den Fernseher oder ein anderes Gerät einschaltet. Die LEDs HL1 und HL2 zeigen den Status des Signals „Jede Stunde“ bzw. der Wecker an: HL1 leuchtet, wenn das Signal „Jede Stunde“ eingeschaltet ist, und HL2 – wenn mindestens einer der Wecker eingeschaltet ist oder wenn beide sind eingeschaltet. Das Gerät verwendet eine spezielle Uhr-LED-Anzeige von Kingbright, die vier Ziffern mit sieben Elementen mit einer gemeinsamen Anode und zwei Punkten enthält, die die Sekunden zwischen den mittleren Ziffern anzeigen. Da die Schlussfolgerungen der AG-Elemente allen Ziffern gemeinsam sind, kann der Indikator nur im dynamischen Modus gesteuert werden. Für dieses Design passt der Indikator perfekt: Die Anzahl der Allzweck-I/O-Leitungen am P1C16F84 MK lässt keine statische Anzeige zu, und bei einer dynamischen Anzeige mit einem anderen Indikator wäre es notwendig, die Ausgänge von zu kombinieren die gleichen Elemente mit unterschiedlichen Ziffern auf der Tafel. Die Widerstände R3-R10 begrenzen den Strom durch die Anzeige-LEDs. Das Schieberegister DD2 wurde eingeführt, um MK-Ausgänge zu sparen – es wandelt den seriellen Code bei der dynamischen Anzeige in einen parallelen um. Der Kondensator C4 filtert die Welligkeit im MK-Stromkreis. Auf der Platine ist dafür kein Platz, es wird von der Seite der Leiterbahnen her direkt an die Anschlüsse der MK-Buchse angelötet. Das Steuerprogramm für den MK wird im Standard-MPASM-Assembler von Microchip geschrieben und in der MPLAB-Umgebung derselben Firma kompiliert. Von den 1024 MK-Programmspeichern wurden etwa achthundert genutzt, es gibt also Ressourcen für Verbesserungen. Unmittelbar nach dem Einschalten wird das Steuerprogramm initialisiert: Die Portbits werden für Ein- und Ausgang konfiguriert, der Timer-Betriebsmodus wird auf 0 gesetzt, die Alarmeinstellungen und der Zeitkorrekturfaktor werden aus dem nichtflüchtigen Speicher gelesen. Die Hauptaufgabe des Programms – die Bildung genauer Zeitintervalle mit einer Dauer von 1 s – wird durch Interrupts von Timer 0 gelöst. Sein Vorheiler ist mit dem MK-Quarzoszillator verbunden und auf einen Teilungsfaktor von 16 eingestellt. Eine Zahl von 0h bis OFh wird bei jeder Interrupt-Verarbeitung in das Timer-00-Register geschrieben (dies und es gibt einen Zeitkorrekturfaktor, im Quellcode des Programms heißt er TIME_SET), sodass der Timer nicht für 256 überläuft, sondern zum Beispiel für 250 Taktzyklen (mit TIME_SET=5). In diesem Fall treten bei Verwendung eines 4-MHz-Quarzes Timer-0-Interrupts mit einer Frequenz von 1 Hz / 000/000 = 250 Hz auf. Nach der Initialisierung geht das Programm in eine Schleife, wartet auf diese Interrupts und zählt sie. Wenn die Anzahl der Interrupts 16 erreicht, wird die aktuelle Zeit um eine Sekunde erhöht. Timer-0-Interrupts bieten auch eine dynamische Anzeige. Während ihrer Verarbeitung setzt der MK den Nullpegel an den Pins RA0-RA3 und löscht dadurch die Anzeige. Darüber hinaus wird ein sieben Elemente bestehender Code, der dem anzuzeigenden Zeichen entspricht, über die MK-Pins RB2 und RB0 in das DD1-Register geladen. Dann wird an einem der RAO-RA3-Pins ein hoher Logikpegel eingestellt, wodurch einer der bekannten Räume leuchtet. All dies geschieht 250 Mal pro Sekunde, und aufgrund der Trägheit des Sehvermögens sieht der Benutzer alle eingeschalteten Entladungen gleichzeitig. Das hohe Bit des in das DD2-Register geladenen Codes wird zur Steuerung der zweiten Punkte des Indikators verwendet, die mit einer Frequenz von 1 Hz blinken. Somit werden mit Hilfe von Interrupts ab Timer 0 zwei Aufgaben gleichzeitig gelöst. Darüber hinaus prüft der MK in der Interrupt-Handling-Routine, ob die Ausgabeziffer eine nicht signifikante Null in der linken Ziffer ist, und wenn ja, dann lädt der MK anstelle des Sieben-Elemente-Codes der O-Ziffer die Binärzahl 11111111 in das Register ein (ein Indikator mit einer gemeinsamen Anode, also entspricht einer einem ausgeblendeten Segment). Die Tastatur wird etwa 10 Mal pro Sekunde abgefragt, aber nach dem ersten Drücken einiger Tasten und ihrer Kombinationen reagiert das Programm 1 Sekunde lang nicht auf wiederholtes Drücken (z. B. wenn die Tasten gedrückt gehalten werden). Dies ist für die bequeme Verwaltung der Uhr erforderlich. Wenn der Alarm ausgelöst wird, erscheint am RB2-Ausgang für 1 Minute ein intermittierendes 3H-Signal oder je nach Programmversion ein hoher Pegel (genauer gesagt Impulse mit einer Wiederholungsrate von 1 Hz). Die LEDs HL1 und HL2 blinken. Nach einer Minute wird ein spezielles Unterprogramm aufgerufen, das das korrekte Leuchten der LEDs wiederherstellt. Die Steuerung des Geräts erfolgt über die Tasten SB1-SB4, die jeweils mehrere Funktionen vereinen (siehe mnemonisches Diagramm in Abb. 2). Die Uhr arbeitet in drei Modi: Basismodus (Anzeige der aktuellen Uhrzeit), mit Zeitkorrekturfaktor und Modus zum Einstellen von Alarmen. Im Hauptmodus zeigt die HG1-Anzeige Stunden und Minuten an, während die Sekundenpunkte mit einer Frequenz von 1 Hz blinken. Die aktuelle Uhrzeit wird mit den Tasten SB1 (Stunden) und SB2 (Minuten) eingestellt: Bei jedem Tastendruck erhöht sich der Messwert um eins, bei gleichzeitigem Drücken von SB4 verringert er sich. Wenn die Minutenziffern Nullwerte erreichen, findet keine Übertragung auf die Stundenziffer statt. Wenn Sie die Taste SB4 drei Sekunden lang gedrückt halten, zeigt die Anzeige Minuten und Sekunden der aktuellen Uhrzeit anstelle von Stunden und Minuten an. Das Signal „Jede Stunde“ wird mit der SB3-Taste bei gedrückter SB4 ein- und ausgeschaltet (die HL1-LED leuchtet bzw. erlischt). Um in den Alarmeinstellungsmodus zu wechseln, drücken Sie die Taste SB3. Die Anzeigen des ersten Alarms erscheinen auf der Anzeige, die zweiten Punkte leuchten kontinuierlich. Stunden und Minuten werden mit den gleichen Tasten SB1 und SB2 eingestellt (in diesem Fall nur eine Erhöhung der Messwerte). Durch Drücken der Taste SB4 wird der Alarm ausgeschaltet und auf der Anzeige bleiben nur Striche übrig (G-Elemente leuchten). Beim nächsten Einschalten des Alarms erscheint dieselbe Schaltfläche auf der Anzeige und Nullen (und nicht die vorherigen Werte) werden in die Alarmregister geschrieben. Wenn Sie die Taste SB3 erneut drücken, erscheinen die Anzeigen des zweiten Alarms auf der Anzeige, die zweiten Punkte erlöschen jedoch. Beide Alarme sind auf die gleiche Weise eingerichtet. Das dritte Drücken der Taste SB3 versetzt die Uhr in den Betriebsmodus mit einem Zeitkorrekturkoeffizienten: Auf dem Indikator werden die Symbole „EE X“ angezeigt, wobei EE EEPROM bedeutet und X der aktuelle Wert des Koeffizienten in hexadezimaler Form ist; Die zweiten Punkte blinken weiter. Mit der Taste SB1 können Sie den Wert des Koeffizienten im Bereich von Oh bis Fh erhöhen und mit der Taste SB2 verringern. Die eingestellte Nummer wird in der Timer-Überlaufroutine auf Timer 0 geschrieben. Wenn die Taste SB3 zum vierten Mal gedrückt wird, werden die Alarmeinstellungen und der Koeffizientenwert in das EEPROM geschrieben: der erste Wecker – an den Adressen 02h-05h (Minuten, Zehnerminuten, Stunden bzw. Zehnerstunden), der Sekunde - an den Adressen 06h-09h (in der gleichen Reihenfolge), Koeffizient - bei 01 Uhr. Das Gerät ist auf einer Leiterplatte montiert, die gemäß der Zeichnung in Abb. hergestellt wurde. 3 (gestrichelte Linien zeigen Überbrückungsdrähte, die gedruckte Leiter auf der gegenüberliegenden Seite der Platine verbinden). Ohne Änderungen an der Schaltung und dem MK-Programm können Sie PIC16C84 verwenden – ein einmalig programmierbares Analogon von PIC16F84. Der im Diagramm angegebene Indikator kann durch jeden anderen vierstelligen mit einer gemeinsamen Anode ersetzt werden (es ist wünschenswert, dass die Schlussfolgerungen der gleichnamigen Elemente der Entladungen innerhalb des Indikators verbunden werden). Es ist zulässig, vier einstellige Anzeigen zu verwenden. In diesem Fall können zwei separate LEDs als zweite Punkte verwendet werden, die über Kathoden mit dem rechten (gemäß Diagramm) Anschluss des Widerstands R10 verbunden sind (ggf. über einen Schlüssel). der Transistor). Widerstände, Kondensatoren, LEDs, Tasten – alle kleinen. Für die Uhr wurden drei Versionen des Steuerprogramms entwickelt. Version 1.10 ist die Hauptversion (die HEX-Datei ist in der Tabelle angegeben). Bei Alarmen erscheint am RB2-Ausgang ein Signal (Mäander) mit einer Frequenz von 1 Hz. Mit ihm lassen sich verschiedene Aktoren und 3H-Signalgeneratoren ansteuern: vom einfachsten über zwei oder drei Logikelemente bis hin zu komplexen digitalen Klangsynthesesystemen [1, 2]. Die dynamische Anzeige funktioniert in dieser Version immer. In Version 1.11 funktioniert die Anzeige auch kontinuierlich, aber wenn die Alarme ausgelöst werden und das Signal „Jede Stunde“ erzeugt wird, erscheinen am RB2-Ausgang Impulsstöße mit einer Wiederholungsrate von 1 Hz (die Frequenz der Schwingungsfüllung). die Bursts entsprechen der Interrupt-Frequenz vom Timer 0 - 250 Hz). Dieses Signal kann direkt am Emitter oder am Eingang des 3H-Verstärkers angelegt werden. Version 1.20 unterscheidet sich von 1.11 nur dadurch, dass die dynamische Anzeige standardmäßig ausgeschaltet ist (während alle anderen Uhrfunktionen im Normalmodus funktionieren). Es beginnt zu funktionieren, wenn Sie die SB4-Taste drücken, und schaltet sich nach 10 Sekunden automatisch aus. Wenn Sie die Tasten drücken und der Alarm ertönt, beginnt der Countdown dieses Intervalls erneut. Wenn der Alarm bei ausgeschalteter Anzeige ausgelöst wurde, schaltet er sich nicht ein: Sie müssen die Taste SB4 zweimal drücken, um den Alarm auszuschalten und die Anzeige einzuschalten. Es empfiehlt sich, dieses Programm zu verwenden, wenn die Uhr mit einer Batterie aus galvanischen Zellen oder Akkus betrieben wird: Durch Ausschalten des Displays wird Batteriestrom gespart. Bei der Programmierung des MK wird im Konfigurationswort der Typ des Generators angegeben – XT, Einschalttimer – ein, Watchdog-Timer und Codeschutz – aus. Zusätzlich muss in der Zelle 01 h des nichtflüchtigen Datenspeichers eine Zahl von Oh bis Fh (Zeitkorrekturfaktor) und unter den Adressen 02h-09h Alarmeinstellungen eingetragen werden. Sollte sich herausstellen, dass die Software-Einstellung der Taktgenauigkeit grob ist (was durchaus wahrscheinlich ist), sollten Sie den im Diagramm gestrichelt dargestellten Abstimmkondensator C3 einbauen (auf der Leiterplatte ist dafür Platz). HEX-Dateien der Programmversionen 1.11 und 1.20, sowie die Quelltexte aller Versionen Literatur
Autor: A. Vakulenko, Tjumen Siehe andere Artikel Abschnitt Uhren, Timer, Relais, Lastschalter. Lesen und Schreiben nützlich Kommentare zu diesem Artikel. Neueste Nachrichten aus Wissenschaft und Technik, neue Elektronik: Kunstleder zur Touch-Emulation
15.04.2024 Petgugu Global Katzenstreu
15.04.2024 Die Attraktivität fürsorglicher Männer
14.04.2024
Weitere interessante Neuigkeiten: ▪ Niedrige Temperaturen können die Lebensdauer verlängern ▪ Die Straße wird von Sonne und Wind beleuchtet ▪ Konkaver Monitor Samsung S34E790CN ▪ WD hat die dünnste Festplatte entwickelt ▪ Spray, das die Wirkung von Genen abschaltet News-Feed von Wissenschaft und Technologie, neue Elektronik
Interessante Materialien der Freien Technischen Bibliothek: ▪ Abschnitt der Website Für diejenigen, die gerne reisen - Tipps für Touristen. Artikelauswahl ▪ Artikel Welcher von Lucas und warum wurde mit einem Oscar ausgezeichnet? Ausführliche Antwort ▪ Artikel Derbennik. Legenden, Kultivierung, Anwendungsmethoden ▪ Artikel Fernschallsonde. Enzyklopädie der Funkelektronik und Elektrotechnik
Hinterlasse deinen Kommentar zu diesem Artikel: Alle Sprachen dieser Seite Startseite | Bibliothek | Artikel | Sitemap | Site-Überprüfungen www.diagramm.com.ua |