Arduino hårdvara PWM för stepper motor enheter (1 / 4 steg)
Steg 1: Pulse bredd Modulation
- Amplitud - beloppet signalen ändras mellan på och av staterna
- Frekvens - hur många gånger signalen upprepas inom en viss tidsram
- Duty Cycle - andelen i tid till Off tid oftast uttryckt i procent
I dessa digitala system är amplituden fast mellan 0 och 1, mellan 0V och VCC. I mitt test var detta + 5V.
Det är enklast bildar en PWM fyrkantsvåg kan skapas med några rader kod. Följande kod skulle producera en signal med en 1 sekund frekvens och en 10% arbetscykel. Detta skulle vara funktionella men Arduino skulle vara tillägnad producerar denna signal hela tiden och skulle inte göra något annat. Det är därför exemplet blink utan dröjsmål är så viktigt att lära.
digitalWrite (IOPin, hög);
delayMicroseconds(100);
digitalWrite (IOPin, låg);
delayMicroseconds(900);
Med en programvara som genereras signal kan varje variation i den kod körningstiden orsaka variationer i produktionen. Villkorliga satser kan inte köra på varje slinga så det är svårt att garantera att varje slinga tar exakt det samma beloppet av tid. Modern mikrokontroller har ägnat hårdvarumoduler för att generera en kod oberoende fyrkantsvåg. Värden för Duty cycle och frekvens skrivs till register inom registeransvarige och hårdvara genererar lämplig signal på önskade ut PIN-koden.
Registren för hårdvara PWM modulen kan skrivas till direkt som beskrivs här, men glädjen i Arduino-miljö är att någon kommer sannolikt att ha skrivit ett bibliotek för att förenkla denna process. TimerOne bibliotek ger kontroll över den HardwarePWM modul (träffande) är ansluten till timer 1. Detta bibliotek har lätt funktioner för inställning av frekvens och tullen cykeln av den fyrkantsvåg som genereras
- pwm (pin, plikt, perioden) - genererar en PWM vågform på angivna PIN-koden.
Den minsta freqeuncy som stöds av biblioteket är 1ms och maximalt är 8.3s. Tullen har angetts som en 10 bitars värde, mellan 0 och 1023, och detta motsvarar värdet 0% och 100% respektive.