PWM op Arduino: Complete Gids & Belangrijkste Functies
Arduino PWM Programmeren en Functies
Wat is PWM?
PWM (Pulse Width Modulation / Pulsbreedtemodulatie) is een techniek om een gemiddelde spanning/stroom te regelen door een blokgolf met variabele pulsbreedte te genereren. De verhouding van de "AAN"-tijd tot de totale periode heet de duty cycle (cyclisch arbeidsverhouding).
Formule: Duty Cycle (%) = (Ton / T) × 100%
Gemiddelde spanning Vavg = Vmax × Duty Cycle
Waarom PWM en Niet Een Weerstand?
- Efficiëntie: Weerstanden verbranden overmaakt vermogen als warmte (P = I²R). PWM schakelt de stroom (via MOSFET/transistor) → minimale verliezen.
- Kosten bij hoog vermogen: High-power weerstanden zijn duurder dan een PWM-driver.
- Informatie-overdracht: Duty cycle kan informatie dragen (bijv. servo-positie, dimniveau).
Toepassingen van PWM
- Servomotoren: Hoek wordt bepaald door duty cycle (standaard 1–2 ms puls, 50 Hz).
- RGB LED's: Kleurmenging door R, G, B kanalen apart te dimmen.
- DC-DC Converters (Buck/Boost): Efficiënte spanningstransformatie.
- Motor snelheidsregeling: DC motoren, brushless (via ESC).
- Audio (Class-D versterkers), Zonnepaneel MPPT, Verwarmingsregeling.
PWM Frequentie: Belangrijk voor Soepel Gedrag
Te lage frequentie → motor trilt/jerkt (pulsen voelbaar). Te hoge frequentie → schakelverliezen in MOSFET, EMI. Kies frequentie afhankelijk van de mechanische tijdconstante van de belasting.
- Arduino UNO standaard: ~490 Hz (pinnen 3, 9, 10, 11) en ~980 Hz (pinnen 5, 6).
- Frequentie aanpasbaar via timer registers (geavanceerd).
PWM op Arduino UNO
PWM-pinnen: D3, D5, D6, D9, D10, D11 (gemarkeerd met ~).
Geen complexe code nodig: gebruik analogWrite(pin, waarde) met waarde 0–255 (8-bit resolutie).
Voorbeeld: LED Dimmen
const int LED_PIN = 9; // PWM pin
int brightness = 0;
int fadeAmount = 5;
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
analogWrite(LED_PIN, brightness);
brightness += fadeAmount;
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount; // Richting omkeren
}
delay(30); // Smoothness
}
Belangrijke Functies Samengevat
| Functie | Beschrijving |
|---|---|
analogWrite(pin, 0-255) | Genereert PWM signaal op PWM-pin (0=0%, 255=100%) |
pinMode(pin, OUTPUT) | Vereist voor analogWrite |
Let Op
- Alleen op pinnen met ~ symbool (D3,5,6,9,10,11 op UNO).
analogWritewerkt niet op analoge ingangen (A0–A5).- Voor echte analoge uitgang (0–5V continu) → DAC nodig (bijv. Due, ESP32, of extern DAC).
- Inductieve lasten (motoren, relais) → vrijloopdiode (flyback diode) over de last plaatsen!
Industriële technologie
- Bouw Boeiende LCD Animaties & Games met Arduino UNO
- Python 3 naar Arduino UNO: Eenvoudige Commando Besturing en LED Demo
- Bouw een compacte FM-radio met Arduino Nano en RDA5807M
- Bouw een Raspberry Pi 3 & Arduino Laptop: Stap-voor-Stap Handleiding
- Efficiënte Arduino PWM Lezer & RC Ontvanger Decoder met Ingebouwde Fail-Safe
- Manufacturing Day: Evolutie, Impact, En Industrie Showcase
- EAM vs CMMS: Belangrijke verschillen en kernfuncties begrijpen
- Slimme Productie: Definitie, Voordelen en Implementatie
- IoT in de productie: Kernconcepten, toepassingen en praktijkvoorbeelden
- Arduino Sensoren: Typen, Toepassingen en Real-World Projecten
- Vier bewaarde patronen voor gebruiksgedefinieerde functies in C