Blink-PWM
Met behulp van een potmeter (analoge input) regel je de duty-cycle van een knipperende LED. | Nodig:
|
Voorkennis:
| |
Een knipperende LED, zoals we deze gezien hebben bij Blink, is een voorbeeld van een periodiek verschijnsel: hetzelfde patroon herhaalt steeds. De LED is in dit geval een deel van de tijd aan (Ta) en een deel van de tijd uit. De verhouding tussen Ta en de totale periode noemen we de duty cycle. Deze wordt vaak uitgedrukt als een percentage. duty cycle = 100 * Ta / periode | Bij pulsbreedte modulatie (PWM) gebruiken we een periodiek signaal dat een deel van de tijd aan (1) is, en het andere deel uit (0). Door het aan-deel van de periode te veranderen regelen we het vermogen - wat je bijvoorbeeld ziet in de lichtopbrengst van een LED, of in de snelheid van een motor. De Arduino heeft geen echte analoge output, maar voor veel toepassingen kan een PWM-output daarvoor gebruikt worden. De functie analogWrite(pin) geeft een PWM-output. |
Schakeling
| Dit is dezelfde schakeling als bij Blink-freq |
Programma De duty cycle wordt bepaald door de waarde die we via de analoge input krijgen. Via de map-functie rekenen we de input-waarde, in het bereik 0..1023, om naar een waarde tussen 0 en 100. (input 0 geeft 0, input 1023 geeft 100). We laten de LED knipperen met deze duty cycle. Als periode gebruiken we 200 msec (5Hz). We gebruiken Serial.print om de ingevoerde periode te laten zien op de Serial Monitor. | int led = 13; int period = 200; int dutyCycle = 100; void setup() { pinMode(led, OUTPUT); Serial.begin(9600); } void loop() { dutyCycle = map(analogRead(A0), 0, 1023, 0, 100); Serial.println(dutyCycle); digitalWrite(led, HIGH); delay(period * dutyCycle / 100); digitalWrite(led, LOW); delay(period * (100 - dutyCycle) / 100); } |
Opdracht 1 Bouw deze schakeling, programmeer de Arduino, en controleer de werking. | |
Opdracht 2 Pas de periode aan zodat je de LED niet meer ziet knipperen. | Wat zie je nu (bij verschillende duty cycles)? Hoe verklaar je dat? |
Opdracht 3 Teken de golfvorm van het LED-signaal (uit = 0, aan = 1) voor een duty-cycle van 75%. | |
Opdracht 4 (Lastig) Wat zie je als de duty-cycle 0 is? Hoe verklaar je dit? Hoe kun je het programma aanpassen zodat zich dit voor duty cycle 0 "correct" gedraagt? |
Blink-PWM --