Styre lysdioder med Arduino

Innleding

I dette kapittelet skal vi endelig begynne Ä styre lysdioder med Arduino. Vi skal ogsÄ gÄ gjennom hva PWM-styring innebÊrer, og hva det kan brukes til.

Lysdiodestyring

I fÞlgende eksempel skal vi fÄ fire lysdioder (LED) til Ä bli tent etter hverandre og deretter slukket etter hverandre. Ved Ä koble dem til hver sin GPIO-pinne pÄ utviklingskortet blir det enkelt Ä adressere dem individuelt.

IfÞlge utregningen vÄr bÞr vi koble lysdiodene i serie med hver sin motstand pÄ 300 Ω.

html_image

Siden vi ikke har tilgang til slike motstander, bruker vi motstander pÄ 330 Ω i stedet. Vi kan konstatere at de klarer Ä hÄndtere varmeutviklingen uten problemer.

html_image

Ved Ä koble sammen strÞmforsyningen med utviklingskortet slik som bildet viser, kan vi velge om vi vil strÞmforsyne den ferdige lÞsningen via USB-porten pÄ utviklingskortet eller DC-kontakten pÄ strÞmforsyningen.

html_image

 Illustrasjon laget med komponenter fra Fritzing (fritzing.org). CC BY-SA 3.0

 

Selve skissen for Ä styre lysdiodene kan gjÞres kort takket vÊre for-lÞkker. Vi begynner med Ä lagre hvilken GPIO-pinne vi vil bruke, i et byte-array. Deretter gÄr vi gjennom arrayet for Ä angi GPIO-pinnene som utganger. Til slutt skriver vi en lÞkke for Ä tenne lysdiodene og en for Ä slukke dem. Vi legger inn en liten forsinkelse i begge lÞkkene. Ellers hadde tenningen og slukkingen skjedd sÄ raskt at det knapt hadde vÊrt synlig.

FourLed.ino

PWM-styring

Det hadde vÊrt enda mer elegant hvis de fire lysdiodene ble dimmet opp og ned. Det kan vi ikke gjÞre med digitalWrite, siden den funksjonen i praksis bare slÄr spenningen pÄ eller av (HIGH eller LOW). Det finnes imidlertid en annen funksjon som kan dimme lysdiodene for oss: analogWrite.

Med analogWrite kan vi angi en verdi (mellom 0 og 255) for hvor sterkt lysdiodene skal lyse. Ved hjelp av lÞkker kan vi suksessivt Þke lysstyrken (Þke verdien) og senke lysstyrken (senke verdien). Vi kan fÄ til dette ved Ä legge inn en for-lÞkke i de eksisterende for-lÞkkene.

Vi bruker variabelen i til Ă„ hoppe mellom lysdiodene og variabelen til Ă„ endre lysstyrken.

PwmLed.ino

AnalogWrite er egentlig et misvisende navn fordi funksjonen ikke stiller inn noe analogt. AnalogWrite er i bunn og grunn en teknologi som kalles pulsbreddemodulering (PWM, Pulse-Width Modulation). Pulsbreddemodulering innebÊrer i dette tilfellet at spenningen slÄs pÄ og av sÄ raskt at vi ikke kan merke det. Ved Ä bestemme hvor stor andel av tiden spenningen er slÄtt pÄ, kan Arduinoen fÄ lysdiodene til Ä lyse med forskjellig styrke.

AnalogWrite(0) innebÊrer at spenningen er slÄtt pÄ 0 % av tiden. AnalogWrite(255) innebÊrer at spenningen er slÄtt pÄ 100 % av tiden.

html_image

PWM-styring som slukker lysdiodene.

html_image

PWM-styring som fÄr lysdiodene til Ä lyse svakt.

html_image

PWM-styring som fÄr lysdiodene til Ä lyse sterkt.

 

html_image

PWM-styring som fÄr lysdiodene til Ä lyse med full styrke.

 

Det er en grunn til at vi koblet lysdiodene til nettopp GPIO-pinne 6, 9, 10, 11. Sammen med GPIO-pinne 3 og 5 er det nemlig disse GPIO-pinnene som har stÞtte for PWM-styring. Det indikeres av tildesymbolet ved siden av de fysiske pinnene (~). 

html_image

GPIO-pinnene med tildesymbol har PWM-stĂžtte.

 

Styring av RGB-lysdiode

Prinsippet for Ă„ koble til RGB-lysdioder er det samme som for vanlige lysdioder. Den eneste forskjellen er at fire ben skal kobles til (i stedet for to ben). I fĂžlgende eksempel bruker vi en av RGB-lysdiodene som er inkludert i bokens medfĂžlgende komponentpakke. Den er av typen common cathode (felles jord/minus).

Vi trenger tre motstander for tilkoblingen (én for hver farge pÄ lysdioden). Hvilken resistans motstandene skal ha regnes ut pÄ samme mÄte som for vanlige lysdioder. Den eneste forskjellen er at RGB-lysdioden skal drives med 20 mA per farge (i stedet for 10 mA).

html_image

IfÞlge utregningen skal motstanden ha en resistans pÄ 150 Ω. Den verdien finnes i E24-serien, og vi burde derfor kunne velge den. Vi har imidlertid ikke en slik motstand, sÄ vi tar en motstand pÄ 220 Ω i stedet. Konsekvensen av Ä bruke en motstand med hÞyere resistans er at lysdioden ikke lyser like sterkt.

Vi mÄ ogsÄ kontrollere at vi ikke overstiger motstandens nominelle effekt. Det gjÞr vi med effektberegningsformelen.

html_image

Siden 60 mW er langt under motstandens nominelle effekt pÄ 250 mW, kan vi bruke den uten risiko for overoppheting. Selve koblingen ser derfor ut som fÞlger. Husk at RGB-lysdiodens lengste ben alltid skal kobles til minus.

html_image

Illustrasjon laget med komponenter fra Fritzing (fritzing.org). CC BY-SA 3.0

 

Med de fysiske koblingene pÄ plass kan vi enkelt styre hvilken eller hvilke farger lysdioden skal lyse med. FÞlgende skisse dimmer opp lysdioden i rÞd farge og gÄr deretter over til grÞnt og blÄtt fÞr den slukkes igjen.

PwmRgbLed.ino

Sist endret: 23.01.2017