Innehållsförteckning:
- Steg 1: Pulsbreddsmodulering i programvara
- Steg 2: Hårdvaran och nödvändiga komponenter
- Steg 3: Återstående programvara och resultat
Video: Flera elektroniska ljus: 3 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:41
Elektroniska ljus har lagts ut många gånger på Instructables så varför det här?
Hemma har jag dessa små halvtransparenta julhus som har en LED-insikt och ett litet batteri. Vissa hus har lysdioder med ljuseffekt och vissa har lysdioder som bara är på. De små batterierna är tomma ganska snabbt och eftersom jag ville ha en ljuseffekt i alla hus bestämde jag mig för att göra det till ett PIC -projekt. Naturligtvis kan du också göra det till ett Arduino -projekt.
Så vad gör detta elektroniska ljus speciellt? PIC och Arduino har alla pulsbreddsmodulering (PWM) hårdvara ombord som kan användas för att skapa en ljuseffekt med hjälp av en LED men i mitt fall ville jag ha 5 oberoende elektroniska ljus med en styrenhet och det finns inte, åtminstone inte som jag vet. Lösningen jag använde är att göra dessa fem oberoende PWM -signaler helt i programvara.
Steg 1: Pulsbreddsmodulering i programvara
Pulsbreddsmodulering har beskrivits flera gånger, t.ex. i denna Arduino -artikel:
PIC och Arduino har speciell PWM -hårdvara ombord som gör det enkelt att generera denna PWM -signal. Om vi vill skapa en eller flera PWM -signaler i programvara behöver vi två timers:
- En timer som används för att generera PWM -frekvensen
- En timer som används för att generera PWM -driftscykeln
Båda tidtagarna genererar och avbryter när de är klara och så hanteras PWM -signalen helt och hållet med avbrott. För PWM -frekvensen använder jag timer 0 i PIC och låter den flyta över. Med en intern oscillatorklocka på 8 MHz och en förskala på 64 är formeln: Fosc / 4 /256 /64 = 2.000.000 / 256 /64 = 122 Hz eller 8, 2 ms. Frekvensen måste vara tillräckligt hög så att det mänskliga ögat inte kan upptäcka det. En frekvens på 122 Hz är alldeles tillräcklig för det. Det enda denna timeravbrottsrutin gör är att kopiera arbetscykeln för en ny PWM -cykel och slå på alla lysdioder. Det gör detta för alla 5 lysdioder oberoende.
Värdet på timern för att hantera PWM -driftscykeln beror på hur vi gör ljuseffekten. I mitt tillvägagångssätt simulerar jag denna effekt genom att öka arbetscykeln med värdet 3 för att öka LED: s ljusstyrka och minska den med ett värde på 25 för att minska LED: s ljusstyrka. På så sätt får du en ljusliknande effekt. Eftersom jag använder ett minimivärde på 3 är antalet steg för att styra hela arbetscykeln med en byte 255/3 = 85. Det betyder att PWM -drifttidstimern måste köras med en frekvens på 85 gånger frekvensen för PWM -frekvensur som är 85 * 122 = 10.370 Hz.
För PWM -driftscykeln använder jag timer 2 i PIC. Detta är en timer med automatisk omladdning och den använder följande formel: Period = (Reload + 1) * 4 * Tosc * Timer2 förskalningsvärde. Med en omladdning av 191 och en förskala på 1 får vi en period på (191 + 1) * 4 * 1/8.000.000 * 1 = 96 us eller 10.416 Hz. PWM -driftscykeln avbryter rutinen om driftcykeln har passerat och stänger av lysdioden för vilken arbetscykeln är klar. Om arbetscykeln inte klaras minskar den en arbetscykelräknare med 3 och avslutar rutinen. Det gör detta för alla lysdioder oberoende. I mitt fall tar denna avbrottsrutin cirka 25 oss och eftersom det kallas var 96: e används redan 26% av CPU: n för att hantera PWM -driftscykeln i programvara.
Steg 2: Hårdvaran och nödvändiga komponenter
Det schematiska diagrammet visar det slutliga resultatet. Även om jag bara styr 5 lysdioder oberoende, lade jag till en sjätte lysdiod som går tillsammans med en av de fem andra lysdioderna. Eftersom PIC inte kan driva två lysdioder på en portstift har jag lagt till en transistor. Elektroniken matas av en 6 volt / 100 mA DC -adapter och använder en lågspänningsregulator för att göra en stabil 5 Volt.
Du behöver följande komponenter för detta projekt:
- 1 PIC -mikrokontroller 12F615
- 2 keramiska kondensatorer: 2 * 100nF
- Motstånd: 1 * 33k, 6 * 120 Ohm, 1 * 4k7
- 6 orange eller gula lysdioder, hög ljusstyrka
- 1 BC557 -transistor eller motsvarande
- 1 Elektrolytkondensator 100 uF / 16 V
- 1 lågspänningsregulator LP2950Z
Du kan bygga kretsen på en brödbräda och kräver inte mycket utrymme, som kan ses på bilden.
Steg 3: Återstående programvara och resultat
Den återstående delen av programvaran är huvudslingan. Huvudslingan ökar eller minskar ljusstyrkan på lysdioderna genom att slumpmässigt justera arbetscykeln. Eftersom vi bara ökar med värdet 3 och minskar med värdet 25 måste vi se till att minskningarna inte sker lika ofta som ökningarna.
Eftersom jag inte använde några bibliotek var jag tvungen att skapa en slumpgenerator med hjälp av ett linjärt feedback -skiftregister, se:
en.wikipedia.org/wiki/Linear-feedback_shif…
Ljuseffekten påverkas av hur snabbt PWM -driftscykeln ändras så att huvudslingan använder en fördröjning på cirka 10 ms. Du kan justera den här tiden för att ändra ljuseffekten till dina behov.
Den bifogade videon visar slutresultatet där jag använde en keps över lysdioden för att förbättra effekten.
Jag använde JAL som programmeringsspråk för detta projekt och bifogade källfilen.
Ha kul att göra detta instruerbart och ser fram emot dina reaktioner och resultat.
Rekommenderad:
Ta bort bakgrunden för flera bilder med Photoshop 2020: 5 steg
Ta bort bakgrunden för flera bilder med Photoshop 2020: Att ta bort bakgrunden på en bild är superenkelt nu! Så här använder du Adobe Photoshop 2020 för att ta bort bakgrunden till flera (batch) bilder med ett enkelt skript
Arduino Connect flera I2C -enheter: 6 steg
Arduino Connect flera I2C -enheter: I den här självstudien lär vi oss hur du ansluter flera moduler med en I2C -anslutning till arduino. Titta på videon! I vårt fall kommer vi att använda 4 OLED -skärmar som exempel, men du kan använda alla andra I2C -moduler/ sensorer om du vill. Obs: 4 OLED -skärmar visar
Arduino Hur man ansluter flera servomotorer - PCA9685 Handledning: 6 steg
Arduino Hur man ansluter flera servomotorer - PCA9685 Handledning: I denna handledning lär vi oss hur du ansluter flera servomotorer med PCA9685 -modul och arduino.PCA9685 -modul är mycket bra när du behöver ansluta flera motorer, du kan läsa mer om det här https : //www.adafruit.com/product/815Titta på Vi
Lär dig att rita ett ljus - steg för steg: 6 steg
Lär dig att rita ett ljus - Steg för steg: Det tar 10 minuter att rita detta ljus om du följer mina steg noggrant
Musikreaktivt ljus -- Hur man gör superenkelt musikreaktivt ljus för att göra skrivbordet fantastiskt. 5 steg (med bilder)
Musikreaktivt ljus || Hur man gör superenkelt musikreaktivt ljus för att göra skrivbordet Awsome .: Hej vad händer, killar, idag kommer vi att bygga ett mycket intressant projekt. Idag ska vi bygga musik reaktivt ljus. LED: n kommer att ändra dess ljusstyrka enligt basen som faktiskt är lågfrekvent ljudsignal. Det är väldigt enkelt att bygga. Vi kommer