Innehållsförteckning:

Flera elektroniska ljus: 3 steg
Flera elektroniska ljus: 3 steg

Video: Flera elektroniska ljus: 3 steg

Video: Flera elektroniska ljus: 3 steg
Video: 3 способа утилизации мелких обрезков и лоскутков! Красота, порядок и польза без затрат!!! 2024, November
Anonim
Flera elektroniska ljus
Flera elektroniska ljus

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:

  1. En timer som används för att generera PWM -frekvensen
  2. 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

Hårdvaran och nödvändiga komponenter
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: