INHOUDSOPGAWE:

Veelvuldige elektroniese kerse: 3 stappe
Veelvuldige elektroniese kerse: 3 stappe

Video: Veelvuldige elektroniese kerse: 3 stappe

Video: Veelvuldige elektroniese kerse: 3 stappe
Video: 10 привычек, чтобы стать счастливым 2024, Julie
Anonim
Verskeie elektroniese kerse
Verskeie elektroniese kerse

Elektroniese kerse is al baie keer op Instructables geplaas, hoekom hierdie een?

By die huis het ek hierdie klein, deursigtige kershuisies met 'n LED-insig en 'n klein battery. Sommige huise het LED's met 'n kers -effek, en sommige het LED's wat net aan is. Die klein batterye is relatief vinnig leeg, en omdat ek 'n kerseffek in alle huise wou hê, het ek besluit om dit 'n PIC -projek te maak. U kan dit natuurlik ook omskep in 'n Arduino -projek.

So, wat maak hierdie elektroniese kers spesiaal? PIC en Arduino het almal Pulse Width Modulation (PWM) hardeware aan boord wat gebruik kan word om 'n kerseffek te skep met behulp van 'n LED, maar in my geval wou ek 5 onafhanklike elektroniese kerse met een kontroleerder hê, en dit is nie teenwoordig nie, ten minste nie waarvan ek weet. Die oplossing wat ek gebruik het, is om hierdie vyf onafhanklike PWM -seine volledig in sagteware te maak.

Stap 1: Pulse Width Modulation in Software

Pulse Width Modulation is verskeie kere beskryf, bv. in hierdie Arduino -artikel:

PIC en Arduino het spesiale PWM -hardeware aan boord wat dit maklik maak om hierdie PWM -sein te genereer. As ons een of meer PWM -seine in sagteware wil maak, benodig ons twee tydtellers:

  1. Een timer wat gebruik word om die PWM -frekwensie te genereer
  2. Een timer wat gebruik word om die PWM -dienssiklus te genereer

Beide timers genereer en onderbreek wanneer dit voltooi is, en dus word die hantering van die PWM -sein volledig onderbreek. Vir die PWM -frekwensie gebruik ek timer 0 van die PIC en laat dit oorloop. Met 'n interne ossillatorklok van 8 MHz en 'n voorskaal van 64 is die formule: Fosc / 4 /256 /64 = 2.000.000 / 256 /64 = 122 Hz of 8, 2 ms. Die frekwensie moet hoog genoeg wees sodat die menslike oog dit nie kan opspoor nie. Daarvoor is 'n frekwensie van 122 Hz voldoende. Die enigste ding wat hierdie timer -onderbrekingsroetine doen, is om die dienssiklus vir 'n nuwe PWM -siklus te kopieer en alle LED's aan te skakel. Dit doen dit vir al 5 LED's onafhanklik.

Die waarde van die timer om die PWM -dienssiklus te hanteer, hang af van hoe ons die kerseffek maak. In my benadering simuleer ek hierdie effek deur die werksiklus met 'n waarde van 3 te verhoog om die helderheid van die LED te verhoog en dit te verminder met 'n waarde van 25 om die helderheid van die LED te verminder. Op hierdie manier kry u 'n kersagtige effek. Aangesien ek 'n minimum waarde van 3 gebruik, is die aantal stappe om die volledige werksiklus met een byte te beheer 255/3 = 85. Dit beteken dat die PWM -tydsiklus -timer met 'n frekwensie van 85 keer die frekwensie van die PWM frekwensie timer wat 85 * 122 = 10.370 Hz is.

Vir die PWM -dienssiklus gebruik ek timer 2 van die PIC. Dit is 'n timer met outomatiese herlaai en gebruik die volgende formule: Periode = (Herlaai + 1) * 4 * Tosc * Timer2 voorafwaarde waarde. Met 'n herlaai van 191 en 'n voorskaal van 1 kry ons 'n periode van (191 + 1) * 4 * 1/8.000.000 * 1 = 96 us of 10.416 Hz. Die PWM -dienssiklus onderbreek die roetine en kyk of die dienssiklus verby is, en skakel die LED af waarvoor die dienssiklus voltooi is. As die dienssiklus nie geslaag word nie, verminder dit 'n dienssiklusteller met 3 en eindig die roetine. Dit doen dit onafhanklik vir alle LED's. In my geval neem hierdie onderbreekroetine ongeveer 25 ons, en aangesien dit elke 96 ons genoem word, word reeds 26% van die SVE gebruik vir die bestuur van die PWM -dienssiklus in sagteware.

Stap 2: Die hardeware en vereiste komponente

Die hardeware en vereiste komponente
Die hardeware en vereiste komponente

Die skematiese diagram toon die finale uitslag. Alhoewel ek slegs 5 LED's onafhanklik beheer, het ek 'n 6de LED bygevoeg wat saam met een van die 5 ander LED's werk. Aangesien die PIC nie twee LED's op een poortpen kan dryf nie, het ek 'n transistor bygevoeg. Die elektronika word gevoed deur 'n 6 volt / 100 mA gelykstroomadapter en gebruik 'n lae drukspanningsreguleerder om 'n stabiele 5 Volt te maak.

U benodig die volgende komponente vir hierdie projek:

  • 1 PIC -mikrobeheerder 12F615
  • 2 keramiek kapasitors: 2 * 100nF
  • Weerstande: 1 * 33k, 6 * 120 Ohm, 1 * 4k7
  • 6 oranje of geel LED's, hoë helderheid
  • 1 BC557 transistor of ekwivalent
  • 1 Elektrolitiese kondensator 100 uF / 16 V
  • 1 lae drukspanningsreguleerder LP2950Z

U kan die kring op 'n broodbord bou en benodig nie veel ruimte nie, soos op die foto gesien kan word.

Stap 3: Die oorblywende sagteware en resultaat

Die oorblywende deel van die sagteware is die hooflus. Die hooflus verhoog of verlaag die helderheid van die LED's deur die dienssiklus lukraak aan te pas. Aangesien ons slegs met 'n waarde van 3 en met 'n waarde van 25 toeneem, moet ons seker maak dat die afname nie so gereeld as die inkremente gebeur nie.

Aangesien ek geen biblioteke gebruik het nie, moes ek 'n ewekansige kragopwekker maak met behulp van 'n lineêre terugvoerverskuiwingsregister:

en.wikipedia.org/wiki/Linear-feedback_shif…

Die kers -effek word beïnvloed deur hoe vinnig die PWM -werksiklus verander word, sodat die hooflus 'n vertraging van ongeveer 10 ms gebruik. U kan hierdie tyd aanpas om die kerseffek na u behoeftes te verander.

Die aangehegte video toon die eindresultaat waar ek 'n dop oor die LED gebruik het om die effek te verbeter.

Ek het JAL as programmeertaal vir hierdie projek gebruik en die bronlêer aangeheg.

Geniet dit om hierdie instruksies te maak en sien uit na u reaksies en resultate.

Aanbeveel: