Inhaltsverzeichnis:

Multi-Timer mit externer Steuerung - Gunook
Multi-Timer mit externer Steuerung - Gunook

Video: Multi-Timer mit externer Steuerung - Gunook

Video: Multi-Timer mit externer Steuerung - Gunook
Video: Multi-function DC/AC 5V - 24V Forward Reverse Motor Controller Timer I053A02 2024, November
Anonim
Multi-Timer mit externer Steuerung
Multi-Timer mit externer Steuerung

Dieses Projekt Instructable ist ein Aufbau eines Multifunktions-Timers

Dieser Timer kann funktionieren als:

  1. Ein Allzweckalarm mit wählbaren Zeiten zwischen 1 Sekunde und +90 Stunden. Nach einem Countdown mit akustischem Alarm und/oder Steuerung des externen Geräts bis zum Ende wird die Zeit seit dem Alarm hochgezählt.
  2. Ein Nickerchen-Timer mit 7 wählbaren Zeiten, Countdown und Alarm bei Beendigung.
  3. Ein Meditationstimer mit 4 wählbaren Zeiten, mit Countdown und einem kurzen Piepsen bei Beendigung, Countup mit einem weiteren Piepsen 5 Minuten danach.

Dieses Projekt kann wie hier beschrieben aufgebaut oder angepasst werden. Ich habe zuvor einen Timer mit dieser Funktionalität gebaut und ihn in meinem ersten Instructable verwendet, um die UV-Belichtungsbox zu steuern.

Ich dachte, ich könnte einfach das Originalprogramm und die Boarddesigns veröffentlichen. Aus irgendeinem Grund konnte ich den Code jedoch nicht finden. Ich wollte auch die Hardware verbessern, um die Steuerkreise flexibler zu machen und den Batterieverbrauch zu reduzieren. Das daraus resultierende Neudesign der Hauptplatine und das Neuschreiben des Codes bieten eine Gelegenheit, den Programmier- und Hardwaredesign-Ansatz zu diskutieren.

Immer wenn ich eine Platine erstelle, stelle ich oft fest, dass es Fehler im Design oder der Platzierung von Komponenten gibt. Die Platinen, die ich baue, sind auch einer von zwei Fehlern. Außerdem mag ich es einfach, an allen Aspekten eines Projekts von Anfang bis Ende beteiligt zu sein. Dies sind einige der Gründe, warum ich meine eigenen Leiterplatten herstelle, anstatt die Gerber-Dateien zur Herstellung ins Ausland zu schicken. Vielleicht bin ich einfach alt und festgefahren. Dieses Projekt spiegelt diese Voreingenommenheit wider. Da ich meine eigenen Leiterplatten herstelle, meine Designs und meine Gerber-Dateien nicht den Fertigungsstandards entsprechen, habe ich diese Dateien nicht beigefügt. Wer die Platten nicht ätzen und veredeln möchte, kann gerne eigene Designs vorbereiten und die Gerber-Dateien in den Kommentarbereich posten. Bitte lassen Sie Ihre Boards vor der Veröffentlichung fertigen und testen.

Schritt 1: Übersicht über die Hardware-Elemente

Das Gerät wird mit 4 AAA-Batterien betrieben und von einem Arduino Pro Mini 5V gesteuert.

Ein kleiner Summer/Lautsprecher sorgt für einen akustischen Alarm.

Ein Miniatur-5-V-Relais liefert Steuerspannungen an externe Geräte. Die Quelle dieses Steuerspannungsausgangs bietet Flexibilität.

Ein Drehgeber mit Druckknopf ermöglicht die Menüauswahl.

Ein OLED-Display und ein kurzzeitiger Start/Stopp-Schalter vervollständigen die Benutzeroberfläche.

Zusätzliche elektronische Hardware besteht aus einem SPDT-Netzschalter und einer Miniatur-Klinkenbuchse zum Anschluss externer Geräte.

Darüber hinaus werden Dateien bereitgestellt, die Sie bei diesem Projekt unterstützen:

STL-Dateien für einen 3D-gedruckten Projektfall.

Kupfer- und Lötstopplackbilder zum Ätzen und Finishen der Steuerplatine und des Drehgebers.

Schaltplan und Boardbilder als Referenz für diejenigen, die mein Design ändern möchten.

Vielleicht möchten Sie mein Instructable zum Erstellen doppelseitiger Leiterplatten als Beispiel für die Herstellung von Leiterplatten überprüfen.

Schritt 2: Softwareübersicht

Zusammen mit den Arduino-Quelldateien einige zusätzliche Informationen, die hilfreich sein können.

Hardware-Steuerungsbibliotheken werden verwendet, wenn verfügbar (Tasten-Entprellung, OLED-Steuerung, Lesen von Drehgebern).

Das Programm implementiert eine einfache Finite State Machine (FSM), um die Codeausführung als switch-Anweisung in der Schleifenfunktion zu steuern.

Eine Menüklasse ist definiert, um die Auswahl der angezeigten Optionen auf dem OLED und die Auswahl mit dem Drehgeber zu ermöglichen.

Die Eingabe erfolgt durch direktes Polling (ohne Unterbrechungen getrieben), da sie nicht zeitkritisch ist und den Code klarer macht.

Print-Anweisungen an Serial werden verwendet, um die Codeausführung und das Debugging zu verfolgen

Verschiedene Arten von Programmstrukturelementen, einschließlich:

  • Mehrere Code-Registerkarten, um einige der Hardware-Steuerfunktionen und -Variablen zu isolieren.
  • Wechseln Sie Anweisungen, um den Zustandswert (FSM) und die Steuervariablen zu setzen.
  • Strukturdefinition
  • Aufzählungen, um die Zuweisung von Zustandswerten als Text zu ermöglichen.
  • #define Präprozessordefinitionen für Hardware-Pin und Standardwerte.

Schritt 3: Teileliste

Erstellen Sie das Gehäuse
Erstellen Sie das Gehäuse

Ich war mir nicht sicher, wo ich diesen Schritt setzen sollte, da er fast jederzeit durchgeführt werden kann. Ich habe eine 3D-gedruckte Gehäusebox verwendet. Möglicherweise haben Sie keinen Zugang zu einem 3D-Drucker oder bevorzugen eine andere Art von Gehäuse wie Aluminiumbox, lasergeschnittener Kunststoff, handgeschnitztes Holz oder eine andere Art, die Sie für Ihre elektronischen Projekte verwenden. Ich habe die STL-Dateien für oben, unten, Drehgeberknopf und OLED-Blende beigefügt. Verwenden Sie diese Dateien und den Slicer Ihrer Wahl, um gcode-Dateien für Ihren Drucker zu erstellen.

Ich drucke alle Teile mit PLA-Filament aus, eine Farbe für die Gehäuseober- und -unterseite, eine andere kontrastierende für den Knopf und die Blende (die oben geklebt ist). Ich werde nicht alle meine Slicer-Einstellungen angeben, sondern ein Tri. verwenden -Sechskant-Füllung mindestens 35%, um das Gewindeschneiden der Eckschrauben zu ermöglichen und eine "no support"-Einstellung zum Lesen der eingeschnittenen Beschriftung. Ich habe die Box mit meiner "normalen" Schichthöhe meines Druckers gedruckt.

Schritt 9: Code entwerfen und schreiben

Dieser Schritt ist optional, wird aber zum besseren Verständnis empfohlen.

Der Großteil des Aufwands in Stunden ist das Schreiben des Codes. Sie können diesen Schritt überspringen, wenn Sie das angehängte Programm unverändert verwenden. Es wird jedoch empfohlen, dass Sie sich die Zeit nehmen, den Code zu überprüfen, um ein besseres Verständnis zu erzielen oder ihn an Ihre Anforderungen anzupassen.

Die folgenden Kommentare können zum Verständnis dieses Prozesses hilfreich sein.

  • Kommentare – Kommentieren Sie ausgiebig, während Sie gehen – Ich schreibe oft die Kommentare, bevor ich den Code schreibe.
  • Teile & herrsche - verwende Funktionen, Klassen und Module (Tabs.) Verwende häufige Kompilierungen (Verify), um die Syntax zu überprüfen. Debug - Verwenden Sie print-Anweisungen, um Fluss- und Testwerte und Hardwareschnittstellen zu überprüfen. Scheuen Sie sich nicht, die Probleme nach und nach zu lösen, denn niemand schreibt fehlerfreien Code!
  • Konstanten - #define Pre-Compiler-Anweisungen weisen Pin-Nummern Namen zu. Const-Variablendefinitionen mit Kommentaren reduzieren oder eliminieren "magische" Zahlen. Die Verwendung von Konstanten, die sich am Anfang eines Programms oder einer Funktion befinden, ermöglichen das Ändern der Parameter, ohne Code neu schreiben zu müssen
  • Vordefinierte Bibliotheken - Die Verwendung vordefinierter Bibliotheken reduziert den Programmieraufwand und die Debug-Zeit.
  • Designblöcke - Erstellt mit Funktionen, Isolieren von Code in separaten Registerkarten (zugehörige Programme &.hfiles), Aufzählungen, Klassen und Strukturen. Konzentrieren Sie Ihre Aufmerksamkeit auf jeden einzelnen, um zu verstehen, wie er in Bezug auf den Rest des Codes funktioniert.
  • State Machine(s) - Dies ist ein Programmiermuster, das hervorragend mit Arduinos oder anderen Programmen funktioniert, die verwendet werden, um Ausgänge zu steuern oder auf Eingänge zu reagieren. Es gibt verschiedene Varianten von Zustandsautomaten. Dieser Code verwendet eine Zustandsmaschine, die auf der switch-Anweisung in der Schleifenfunktion basiert. Dieses Formular ist leicht zu verstehen und zu debuggen.
  • Display & Menüs - Die OLED-Ausgabe ist knapp, bietet aber ausreichend Feedback für Gelegenheitsbenutzer und unterstützt die Optionsauswahl. Es lässt sich gut in die Zustandsmaschine integrieren (fast alle Zustände haben einen zugehörigen OLED-Bildschirm). Die Menu-Klasse war hilfreich beim Isolieren von Code zum Anzeigen und Auswählen von Menüoptionen

Bitte lesen Sie das Programm mehrmals. Es hilft, jeweils eine Funktion oder einen Abschnitt zu nehmen. Ich verstehe Code, den ich geschrieben habe, oft nicht, es sei denn, ich habe ihn mindestens zweimal gelesen!

Schritt 10: Installieren Sie das Programm

Kopieren Sie die angehängte Datei auf Ihren Computer und entpacken Sie sie in Ihr Sketches-Verzeichnis

Verbinden Sie den Arduino mit Ihrem Computer und laden Sie den Programmcode wie gewohnt herunter. Öffnen Sie den seriellen Monitor der Arduino IDE, um zu überprüfen, ob das Programm ausgeführt wird, und helfen Sie beim Debuggen.

Schritt 11: Montieren Sie den Timer

Den Timer zusammenbauen
Den Timer zusammenbauen
Den Timer zusammenbauen
Den Timer zusammenbauen
Den Timer zusammenbauen
Den Timer zusammenbauen
Den Timer zusammenbauen
Den Timer zusammenbauen

Sind Ober- und Unterteil des Gehäuses bedruckt und gereinigt, können die Komponenten mit kleinen selbstschneidenden Kunststoffschrauben befestigt werden. Zuerst wird der Batteriehalter in die Rückseite eingerastet. Die restlichen Teile werden in der folgenden Reihenfolge an der Gehäuseoberseite befestigt:

  1. OLED und Kabel
  2. Start/Stop-Schalter & Verkabelung
  3. Drehgeber und Kabel
  4. Lautsprecher / Summer & Verkabelung
  5. Externe Steuerbuchse und Verkabelung
  6. Ein/Aus-Schiebeschalter und Verkabelung (überprüfen Sie die Ausrichtung, damit das Ein in die gewünschte Richtung ist

Wenn Sie die Kabel direkt an Ihre Platine löten, tun Sie dies, nachdem alle Teile an Ihrem Gehäuse befestigt sind, um Drahtbrüche zu vermeiden. Sie müssen warten, bis die Kabel mit der Hauptplatine verdrahtet sind, bevor Sie diese Platine auf die Rückseite schrauben.

Wenn Sie Stiftleisten und Dupont-Stecker verwenden, befestigen Sie zuerst das Mainboard mit Schrauben auf der Rückseite und stecken Sie dann die Komponenten ein. Achten Sie beim Anschließen des Akkus an das Mainboard auf die richtige Polarität. Sie sollten zu diesem Zeitpunkt auch die Jumper oder die Verdrahtung der Relaissteuerung einrichten.

Die Unterseite des Gehäuses wird mit 4-40 Rundkopf-Maschinenschrauben, eine in jeder Ecke, mit der Oberseite verbunden. Die vier Löcher in der Oberseite sollten entweder mit einem 4/40-Gewindebohrer gebohrt werden oder wenn Sie 4-40-Gewindeeinsätze verwenden, müssen Sie die Löcher bohren, um sie aufzunehmen. Die 4 Löcher für die Hauptplatinenbefestigung an der Unterseite müssen ebenfalls gebohrt werden. Schließen Sie diese Platine an die Einrast-Akkuhalterung an und markieren Sie die Positionen der Löcher. Bohren Sie entsprechend Ihren Befestigungsschrauben.

Schritt 12: Integrationstest

Integrationstests
Integrationstests
Integrationstests
Integrationstests
Integrationstests
Integrationstests

Abschließende (Integrations-)Tests werden durchgeführt, indem alle Menüoptionen ausprobiert und überprüft werden, ob sie wie vorgesehen mit der Hardware funktionieren. Für den von mir bereitgestellten Code sollte das ausreichen. Wenn Sie Ihren eigenen Code geschrieben oder meinen modifiziert haben, müssen Ihre Tests umfangreicher sein. Ich glaube nicht, dass alle Timing-Auswahlen durchgeführt werden müssen, aber Sie müssen alle Standardalarmoptionen ausprobieren und überprüfen, ob die Nickerchen- und Meditationsalarme wie vorgesehen funktionieren.

Schritt 13: Abschließende Gedanken

Herzlichen Glückwunsch zu Ihrem erfolgreichen, ich hoffe, Projekt. Ich bin sicher, dass Sie auf dem Weg auf Probleme gestoßen sind, die Sie lösen mussten. Ich bin mir auch sicher, dass einige meiner Anweisungen vollständiger oder klarer hätten sein können. Bitte teilen Sie mir im Kommentarbereich Ihre Ergebnisse mit und machen Sie Vorschläge, wie diese Anweisungen verbessert werden können.

Vielen Dank für Ihre Zeit, dieses Projekt anzusehen und/oder zu erstellen.

Empfohlen: