Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: Konzept
- Schritt 2: Die Schaltung
- Schritt 3: Implementierung
- Schritt 4: Der Code
Video: Wandmesseranzeige - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:16
Ich kaufte ein billiges Taschenuhrenmessgerät bei eBay und dachte, dass es ein interessantes Neuheitsprodukt wäre. Es stellte sich heraus, dass das von mir gekaufte Messgerät nicht geeignet war, aber bis dahin hatte ich mich dazu verpflichtet, etwas zu produzieren, das an einer Wand hängt und für Gesprächsstoff sorgt.
Das Zentrum der Anzeige ist ein analoges Amperemeter, das von einem geladenen Kondensator gespeist wird, der sich durch das Messgerät entlädt und dabei die Zeigernadel animiert.
Eine LED-Anzeige spiegelt die Bewegung des Zeigers wider und sorgt für eine auffällige Anzeige.
Das Ganze wird von einem Atmel 328-Mikroprozessor gesteuert, der direkt auf einem Arduino Uno entwickelt wurde, der die aktuellen Lichtverhältnisse im Raum misst und das Display zufällig auslöst, alles mit drei AA-Batterien.
Lieferungen
Arduino Uno mit Atmel 328 Prozessor…siehe Rest des Textes
Auswahl an LEDs, Rot, Grün und Gelb mit einem Weiß
7 x 330R Widerstände
1 x LDR
1 x 220uF Kondensator
1 x 220R Widerstand
2 x 10k Widerstände
1 x Gleichrichterdiode
Ein entsprechend altes Amperemeter, typischerweise 100uA Skalenendwert
Schritt 1: Konzept
Die Bilder erzählen eine kurze Geschichte, das Originalmeter wurde für den Einsatz an Röhrenradios entwickelt und benötigte über 100mA und konnte von einem Arduino einfach nicht betrieben werden. Dies sind frühe Ideen für das Display-Layout. Am Ende habe ich das Messgerät zerlegt, um den Mechanismus zu ersetzen, nicht sehr erfolgreich.
Irgendwann habe ich ein altes Voltmeter mit einem 100uA-Mechanismus in die Hand genommen, perfekt.
Schritt 2: Die Schaltung
Der ursprüngliche Build verwendete einen Arduino, um die Bits in einem ziemlich einfachen System zu verbinden. Sechs digitale Pins treiben die farbigen LEDs über 330R-Widerstände an.
Ein digitaler Pin wird verwendet, um den LDR-Spannungsteiler zu erregen, die Spannung wird an einem der ADC-Pins gemessen und verwendet, um die aktuelle Lichtstärke und die Tageszeit zu schätzen.
Ein digitaler Pin wird verwendet, um den Kondensator über eine Diode und einen 220R-Widerstand aufzuladen.
Das Messgerät ist über einen 10k-Widerstand am Kondensator angeschlossen. Dieser Wert muss je nach Messbereichsendwert des verwendeten Amperemeters möglicherweise geändert werden.
Ich habe auch einen Reset-Knopf verdrahtet, der an der Seite der Vitrine montiert werden soll.
Schließlich wird eine weitere Verbindung von der Anode einer der LEDs hergestellt, um eine Spannungsreferenz zur Überprüfung des Batteriespannungspegels bereitzustellen. Diese Schaltung war noch nie sehr erfolgreich und ich werde sie das nächste Mal, wenn die Batterien leer sind und das Display von der Wand hängt, auf einen einfachen Spannungsteiler umstellen.
Schritt 3: Implementierung
Das Display mit Batterien mit einem Arduino Uno zu betreiben, war nicht praktikabel, der Stromverbrauch wäre zu hoch, da ein Großteil der Platine die ganze Zeit aktiv ist, und ich wollte, dass das Display mindestens sechs Monate lang unangetastet an einer Wand steht Zeit.
Um den Stromverbrauch zu senken, wurden die Anzeigeschaltungen mit einem Arduino und einem Steckbrett entwickelt, die Schaltungen auf die Matrixplatine übertragen und dann der fertig programmierte Prozessor aus dem Arduino entfernt und zusammen mit dem xtal in einen Sockel auf einem kleinen Stück Matrixplatine gesteckt. und mit Flachbandkabel verbunden.
Am Ende läuft das Display volle 12 Monate mit einem Satz Batterien.
Ein nützlicher Trick besteht darin, den Atmel-Prozessor in einem Arduino Uno durch einen ZIF-Sockel zu ersetzen, dieser passt gut, und dann den Prozessor wieder einzusetzen. Sobald das Projekt fertig ist, ist der Prozessor bereits programmiert und muss nur noch entfernt und in einen Sockel auf der endgültigen Platine gesteckt werden. Wenn ich leere Prozessoren kaufe, verbringe ich eine Stunde damit, Bootloader auf alle zu setzen, damit sie jederzeit einsatzbereit sind.
Schritt 4: Der Code
Wie man sich vorstellen kann, ist der Code zum Ausführen der Grundanzeige nicht sehr kompliziert, aber der Schlüsselbereich ist die Reduzierung des Stromverbrauchs. Dafür gibt es zwei Ansätze, zum einen das Display nur laufen zu lassen, wenn es wahrscheinlich jemand sieht, und zum anderen den Stromverbrauch der Schaltkreise auf ein Minimum zu reduzieren.
Das Programm muss die Narcoleptic-Bibliotheken vor der Kompilierung installiert haben.
Alle Verzögerungen im System werden unter Verwendung der narkoleptischen Bibliothek für den vollen Energiesparmodus des Prozessors implementiert, mit einem Stromverbrauch, der in einigen Nanoampere gemessen wird.
Der Prozessor schläft jeweils vier Sekunden lang und führt beim Aufwachen eine zufällige Routine aus, um festzustellen, ob das System aufwacht oder nicht. Wenn nicht, schläft das System für weitere vier Sekunden.
Wenn die Zufallsroutine wahr ist, wird die LDR-Schaltung aktiviert und eine Lichtpegelmessung durchgeführt. Unmittelbar danach wird die LDR-Schaltung deaktiviert, um Strom zu sparen.
Das System arbeitet in vier geschätzten Zeiträumen.
- Nacht - es ist sehr dunkel und wahrscheinlich sieht niemand zu - tu nichts und schlafe wieder ein
- Früher Morgen - im ersten Teil ist es unwahrscheinlich, dass es Beobachter gibt, aber behalten Sie die Statistiken bei, als ob es tagsüber wäre
- Tagsüber - es mag Beobachter geben, aber aktiviere nur den analogen Zähler, nicht die LEDs
- Abend - es ist wahrscheinlich, dass es Beobachter gibt, also aktiviere die volle Anzeige
Das System schätzt, dass sich die Tageslänge mit den Jahreszeiten ändert, sodass der Abend in die sonst Nacht hinein verlängert wird, da die Tageslänge kürzer ist, aber wahrscheinlich immer noch Beobachter anwesend sind.
Bei passender Tageszeit wird ein digitaler Ausgang zum Laden des Kondensators verwendet und dann abgeschaltet. Bei einer reinen Analoganzeige geht das System mit allen Ausgängen in den Ruhezustand zurück und der Kondensator entlädt sich über das Messgerät, dessen Zeiger, der auf den Skalenendwert umgekippt war, auf Null zurückkehrt.
Bei aktiver LED-Anzeige misst das System die Spannung am Kondensator und zeigt basierend auf der gemessenen Spannung eine Lauflichtanzeige an, bis diese im Ruhezustand unter einen Schwellenwert fällt.
Gegen Ende der Anzeige findet eine zweite zufällige Auswahl statt, um zu bestimmen, ob die Anzeige wiederholt wird oder nicht, was dem Betrachter mehr Interesse bietet.
Eine weiße LED wird aktiviert, um die Anzeige des Messgeräts zu beleuchten, wenn die LED-Anzeige aktiv ist.
Die narkoleptische Bibliothek von Peter Knight versetzt den Prozessor in einen vollständigen Schlafmodus, in dem die Ausgänge in dem Zustand verbleiben, in dem sie in den Schlafmodus übergegangen sind, aber alle internen Uhren stoppen, mit Ausnahme des auf vier Sekunden begrenzten Schlaftimers. Dies kann in einem Arduino getestet werden, aber aufgrund der Arduino-Power-LED und der USB-Schaltungen werden nicht die gleichen Energieeinsparungen erzielt.
Das System enthält immer noch Code, der die abnehmende Kapazität der Batterien berücksichtigen sollte, aber dies hat sich nicht als nützlich erwiesen. Beim nächsten Mal werde ich das Programm ändern, um eine Art Batteriestatus über die LEDs oder das Amperemeter anzuzeigen.
Die letzte Version verfügt über einen Reset-Knopf an der Seite der Vitrine. Der Hauptgrund dafür ist, den Besuchern Demonstrationen zu ermöglichen, damit das System nach dem Zurücksetzen seine Grundroutine 10 Mal durchläuft, bevor es zu seiner normalen Zufallsroutine zurückkehrt.