Inhoudsopgave:
- Stap 1: Pulsbreedtemodulatie in software
- Stap 2: De hardware en vereiste componenten
- Stap 3: De resterende software en resultaat
Video: Meerdere elektronische kaarsen: 3 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Elektronische kaarsen zijn vaak op Instructables geplaatst, dus waarom deze?
Thuis heb ik deze kleine semi-transparante kersthuisjes die een LED-inzicht hebben en een kleine batterij. Sommige huizen hebben LED's met een kaarseffect en sommige hebben LED's die gewoon aan zijn. De kleine batterijen zijn relatief snel leeg en omdat ik in alle huizen een kaarseffect wilde hebben, besloot ik er een PIC-project van te maken. Natuurlijk kun je er ook een Arduino-project van maken.
Dus wat maakt deze elektronische kaars speciaal? PIC en Arduino hebben allemaal Pulse Width Modulation (PWM) hardware aan boord die kan worden gebruikt om een kaarseffect te creëren met behulp van een LED, maar in mijn geval wilde ik 5 onafhankelijke elektronische kaarsen hebben met één controller en die is niet aanwezig, althans niet dat ik weet. De oplossing die ik gebruikte is om deze vijf onafhankelijke PWM-signalen volledig in software te maken.
Stap 1: Pulsbreedtemodulatie in software
Pulsbreedtemodulatie is verschillende keren beschreven, b.v. in dit Arduino-artikel:
PIC en Arduino hebben speciale PWM-hardware aan boord die het eenvoudig maakt om dit PWM-signaal te genereren. Als we één of meerdere PWM-signalen in software willen maken, hebben we twee timers nodig:
- Eén timer die wordt gebruikt om de PWM-frequentie te genereren
- Eén timer die wordt gebruikt om de PWM-duty cycle te genereren
Beide timers genereren en onderbreken wanneer ze zijn voltooid en dus wordt de verwerking van het PWM-signaal volledig interruptgestuurd uitgevoerd. Voor de PWM frequentie gebruik ik timer 0 van de PIC en laat deze overlopen. Met een interne oscillatorklok van 8 MHz en een prescale van 64 is de formule: Fosc/4 / 256 / 64 = 2.000.000 / 256 / 64 = 122 Hz of 8, 2 ms. De frequentie moet hoog genoeg zijn zodat het menselijk oog het niet kan detecteren. Daarvoor is een frequentie van 122 Hz ruim voldoende. Het enige dat deze timer-interrupt-routine doet, is de duty-cycle kopiëren voor een nieuwe PWM-cyclus en alle LED's inschakelen. Het doet dit voor alle 5 LED's onafhankelijk van elkaar.
De waarde van de timer om de PWM-taakcyclus af te handelen, hangt af van hoe we het kaarseffect maken. In mijn benadering simuleer ik dit effect door de duty cycle te verhogen met een waarde van 3 om de helderheid van de LED te verhogen en deze te verlagen met een waarde van 25 om de helderheid van de LED te verlagen. Zo krijg je een kaarsachtig effect. Aangezien ik een minimale waarde van 3 gebruik, is het aantal stappen om de volledige duty cycle met één byte te regelen 255 / 3 = 85. Dit betekent dat de PWM duty cycle timer moet lopen met een frequentie van 85 keer de frequentie van de PWM-frequentietimer die 85 * 122 = 10.370 Hz is.
Voor de PWM duty cycle gebruik ik timer 2 van de PIC. Dit is een timer met automatisch herladen en gebruikt de volgende formule: Periode = (Herladen + 1) * 4 * Tosc * Timer2 prescale-waarde. Bij een herlaadbeurt van 191 en een voorschaal van 1 krijgen we een periode van (191 + 1) * 4 * 1/8.000.000 * 1 = 96 us of 10.416 Hz. De PWM duty cycle interrupt routine controleert of de duty cycle is verstreken en schakelt de LED uit waarvoor de duty cycle is voltooid. Als de duty-cycle niet wordt gehaald, wordt een duty-cycle-teller met 3 verlaagd en wordt de routine beëindigd. Het doet dit voor alle LED's onafhankelijk van elkaar. In mijn geval duurt deze interrupt-routine ongeveer 25 us en aangezien deze elke 96 us wordt genoemd, wordt al 26% van de CPU gebruikt voor het beheer van de PWM-duty cycle in software.
Stap 2: De hardware en vereiste componenten
Het schematische diagram toont het eindresultaat. Hoewel ik slechts 5 LED's onafhankelijk bestuur, heb ik een 6e LED toegevoegd die samen met een van de 5 andere LED's loopt. Omdat de PIC geen twee LED's op één poortpin kan aansturen, heb ik een transistor toegevoegd. De elektronica wordt gevoed door een 6 volt / 100 mA DC adapter en maakt gebruik van een low drop spanningsregelaar om een stabiele 5 Volt te maken.
Voor dit project heb je de volgende onderdelen nodig:
- 1 PIC-microcontroller 12F615
- 2 Keramische condensatoren: 2 * 100nF
- Weerstanden: 1 * 33k, 6 * 120 Ohm, 1 * 4k7
- 6 oranje of gele LED's, hoge helderheid
- 1 BC557-transistor of equivalent
- 1 Elektrolytische condensator 100 uF / 16 V
- 1 laagspanningsregelaar LP2950Z
Je kunt de schakeling bouwen op een breadboard en heeft niet veel ruimte nodig, zoals op de foto te zien is.
Stap 3: De resterende software en resultaat
Het resterende deel van de software is de hoofdlus. De hoofdlus verhoogt of verlaagt de helderheid van de LED's door de duty cycle willekeurig aan te passen. Aangezien we alleen verhogen met een waarde van 3 en verlagen met een waarde van 25, moeten we ervoor zorgen dat de verlagingen niet zo vaak voorkomen als de verhogingen.
Omdat ik geen bibliotheken gebruikte, moest ik een willekeurige generator maken met behulp van een lineair feedback-schuifregister, zie:
en.wikipedia.org/wiki/Linear-feedback_shif…
Het kaarseffect wordt beïnvloed door hoe snel de PWM-werkcyclus wordt gewijzigd, dus de hoofdlus gebruikt een vertraging van ongeveer 10 ms. U kunt deze tijd aanpassen om het kaarseffect aan uw behoeften aan te passen.
De bijgevoegde video toont het eindresultaat waarbij ik een dop over de LED heb gebruikt om het effect te verbeteren.
Ik heb JAL als programmeertaal voor dit project gebruikt en het bronbestand bijgevoegd.
Veel plezier met het maken van deze Instructable en kijk uit naar uw reacties en resultaten.
Aanbevolen:
Arduino Meerdere I2C-apparaten aansluiten: 6 stappen
Arduino Verbind meerdere I2C-apparaten: in deze tutorial leren we hoe je verschillende modules met een I2C-verbinding op arduino kunt aansluiten. Bekijk de video! In ons geval gebruiken we 4 OLED-schermen als voorbeeld, maar je kunt elke andere I2C-module gebruiken sensoren indien gewenst.Opmerking: 4 OLED-displays co
Meerdere USB-poorten zonder PCB: 4 stappen
Meerdere USB-poorten zonder PCB: dit is mijn tweede instructable en hier ga ik een project met je delen waar je meerdere USB-poorten kunt maken om op je pc te gebruiken, want als je vanuit huis werkt, heb je een groot probleem om veel te gebruiken apparaten zoals de meeste apparaten nu h
Meerdere ESP-gesprekken voeren via ESP-NOW met ESP32 en ESP8266: 8 stappen
Meerdere ESP-gesprekken maken via ESP-NOW ESP32 en ESP8266 gebruiken: voor mijn lopende project heb ik meerdere ESP nodig om met elkaar te praten zonder een router. Om dit te doen, zal ik de ESP-NOW gebruiken om draadloos met elkaar te communiceren zonder een router op de ESP
Oplichtende Chanoeka-trui met individuele "kaarsen" - Ajarnpa
Oplichtende Chanoeka-trui met individuele "kaarsen": het is feestseizoen en dit jaar kunt u de stralende ster van het feest zijn met een oplichtende menora-trui! Dit is een genaaid circuitproject met relatief goedkope materialen die gemakkelijk online en in de ambachtswinkel te vinden zijn. Nog beter
Hoe de Wiimote als computermuis te gebruiken Kaarsen als sensor gebruiken!! - Ajarnpa
De Wiimote als computermuis gebruiken Kaarsen als sensor gebruiken!!: Deze gids laat je zien hoe je je Wii-afstandsbediening (Wiimote) op je pc aansluit en als muis gebruikt