Inhaltsverzeichnis:
- Schritt 1: Pulsweitenmodulation in der Software
- Schritt 2: Die Hardware und die erforderlichen Komponenten
- Schritt 3: Die verbleibende Software und das Ergebnis
Video: Mehrere elektronische Kerzen - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:17
Elektronische Kerzen wurden viele Male auf Instructables veröffentlicht, warum also diese?
Zu Hause habe ich diese kleinen halbtransparenten Weihnachtshäuser, die einen LED-Einblick und eine kleine Batterie haben. Einige Häuser haben LEDs mit Kerzeneffekt und andere haben LEDs, die nur leuchten. Die kleinen Batterien sind relativ schnell leer und da ich in allen Häusern einen Kerzeneffekt haben wollte, habe ich mich entschieden, daraus ein PIC-Projekt zu machen. Natürlich können Sie es auch in ein Arduino-Projekt verwandeln.
Was macht diese elektronische Kerze so besonders? PIC und Arduino haben alle eine Pulsweitenmodulation (PWM) -Hardware an Bord, die verwendet werden kann, um einen Kerzeneffekt mit einer LED zu erzeugen, aber in meinem Fall wollte ich 5 unabhängige elektronische Kerzen mit einem Controller haben, und das ist zumindest nicht vorhanden das kenne ich aus. Die von mir verwendete Lösung besteht darin, diese fünf unabhängigen PWM-Signale vollständig in Software zu erstellen.
Schritt 1: Pulsweitenmodulation in der Software
Pulsweitenmodulation wurde mehrfach beschrieben, z. B. in diesem Arduino-Artikel:
PIC und Arduino haben spezielle PWM-Hardware an Bord, die es einfach macht, dieses PWM-Signal zu erzeugen. Wenn wir ein oder mehrere PWM-Signale in Software erstellen möchten, benötigen wir zwei Timer:
- Ein Timer, der verwendet wird, um die PWM-Frequenz zu erzeugen
- Ein Timer, der verwendet wird, um das PWM-Tastverhältnis zu generieren
Beide Timer erzeugen und unterbrechen, wenn sie abgeschlossen sind, und so erfolgt die Verarbeitung des PWM-Signals vollständig unterbruchgesteuert. Für die PWM-Frequenz verwende ich den Timer 0 des PIC und lasse ihn überlaufen. Bei einem internen Oszillatortakt von 8 MHz und einer Vorskalierung von 64 lautet die Formel: Fosc/4 / 256 / 64 = 2.000.000 / 256 / 64 = 122 Hz oder 8, 2 ms. Die Frequenz muss hoch genug sein, damit das menschliche Auge sie nicht wahrnehmen kann. Dafür reicht eine Frequenz von 122 Hz völlig aus. Das einzige, was diese Timer-Interrupt-Routine tut, ist das Duty-Cycle für einen neuen PWM-Zyklus zu kopieren und alle LEDs einzuschalten. Dies geschieht für alle 5 LEDs unabhängig voneinander.
Der Wert des Timers zum Behandeln des PWM-Arbeitszyklus hängt davon ab, wie wir den Kerzeneffekt erzeugen. In meinem Ansatz simuliere ich diesen Effekt, indem ich das Tastverhältnis mit einem Wert von 3 inkrementiere, um die Helligkeit der LED zu erhöhen, und ihn mit einem Wert von 25 dekrementiere, um die Helligkeit der LED zu verringern. Auf diese Weise erhalten Sie einen kerzenähnlichen Effekt. Da ich einen minimalen Wert von 3 verwende, beträgt die Anzahl der Schritte zur Steuerung des kompletten Tastverhältnisses mit einem Byte 255 / 3 = 85. Dies bedeutet, dass der PWM-Tastverhältnis-Timer mit einer Frequenz von 85-mal der Frequenz des laufen muss PWM-Frequenztimer, der 85 * 122 = 10,370 Hz beträgt.
Für das PWM-Tastverhältnis verwende ich Timer 2 des PIC. Dies ist ein Timer mit automatischem Nachladen und verwendet die folgende Formel: Periode = (Nachladen + 1) * 4 * Tosc * Timer2-Vorskalierungswert. Bei einem Reload von 191 und einer Prescale von 1 erhalten wir eine Periode von (191 + 1) * 4 * 1/8.000.000 * 1 = 96 us oder 10.416 Hz. Die PWM-Duty-Cycle-Interrupt-Routine prüft, ob der Duty-Cycle abgelaufen ist und schaltet die LED aus, für die der Duty-Cycle abgeschlossen ist. Wenn der Arbeitszyklus nicht bestanden wird, dekrementiert er einen Arbeitszykluszähler um 3 und beendet die Routine. Dies geschieht für alle LEDs unabhängig. In meinem Fall dauert diese Interrupt-Routine etwa 25 us und da sie alle 96 us aufgerufen wird, werden bereits 26% der CPU für die Verwaltung des PWM-Tastverhältnisses in der Software verwendet.
Schritt 2: Die Hardware und die erforderlichen Komponenten
Das schematische Diagramm zeigt das Endergebnis. Obwohl ich nur 5 LEDs unabhängig steuere, habe ich eine 6. LED hinzugefügt, die zusammen mit einer der 5 anderen LEDs läuft. Da der PIC nicht zwei LEDs an einem Port-Pin ansteuern kann, habe ich einen Transistor hinzugefügt. Die Elektronik wird von einem 6 Volt / 100 mA DC-Adapter gespeist und verwendet einen Low-Drop-Spannungsregler, um stabile 5 Volt zu erzeugen.
Für dieses Projekt benötigen Sie folgende Komponenten:
- 1 PIC-Mikrocontroller 12F615
- 2 Keramikkondensatoren: 2 * 100nF
- Widerstände: 1 * 33k, 6 * 120 Ohm, 1 * 4k7
- 6 orange oder gelbe LEDs, hohe Helligkeit
- 1 BC557-Transistor oder gleichwertig
- 1 Elektrolytkondensator 100 uF / 16 V
- 1 Low-Drop-Spannungsregler LP2950Z
Sie können die Schaltung auf einem Steckbrett aufbauen und benötigen nicht viel Platz, wie auf dem Bild zu sehen ist.
Schritt 3: Die verbleibende Software und das Ergebnis
Der verbleibende Teil der Software ist die Hauptschleife. Die Hauptschleife erhöht oder verringert die Helligkeit der LEDs durch zufällige Anpassung des Tastverhältnisses. Da wir nur mit einem Wert von 3 inkrementieren und mit einem Wert von 25 dekrementieren, müssen wir darauf achten, dass die Dekremente nicht so oft erfolgen wie die Inkremente.
Da ich keine Bibliotheken verwendet habe, musste ich einen Zufallsgenerator mit einem linearen Feedback-Schieberegister erstellen, siehe:
en.wikipedia.org/wiki/Linear-feedback_shif…
Der Kerzeneffekt wird davon beeinflusst, wie schnell das PWM-Tastverhältnis geändert wird, sodass die Hauptschleife eine Verzögerung von etwa 10 ms verwendet. Sie können diese Zeit anpassen, um den Kerzeneffekt an Ihre Bedürfnisse anzupassen.
Das angehängte Video zeigt das Endergebnis, bei dem ich eine Kappe über der LED verwendet habe, um den Effekt zu verbessern.
Ich habe JAL als Programmiersprache für dieses Projekt verwendet und die Quelldatei angehängt.
Viel Spaß beim Erstellen dieses Instructable und freuen uns auf Ihre Reaktionen und Ergebnisse.
Empfohlen:
So richten Sie mehrere Monitore unter Linux ein – wikiHow
So richten Sie mehrere Monitore in Linux ein: Dieses Tutorial zeigt Ihnen, wie Sie ein Multi-Head-System in den meisten Linux-Distributionen, hauptsächlich Ubuntu, einrichten. Bitte beachte, dass dies noch weitgehend unvollendet ist
So erhalten Sie KOSTENLOSE elektronische Teile!: 7 Schritte (mit Bildern)
So erhalten Sie KOSTENLOSE elektronische Teile!: Die Kosten für den Kauf elektronischer Teile für unsere Projekte von Radio Shack oder Maplin sind heutzutage ziemlich hoch … Und die meisten von uns haben ein begrenztes Budget für den Kauf von Sachen. Aber … Wenn Sie das wissen Geheimnisse, wie Sie elektronische Teile kostenlos erhalten, könnten Sie