3 kanal-Dimmer/fader för Arduino eller andra microcontroller (3 / 3 steg)
Steg 3: 3 dimmer/kanalfadern: tips för programvaran
även om det kan verka lite skrämmande att utveckla programvara för en 3-kanals dimmer, är det inte så svårt så länge du håller fokuserade på det väsentliga programvaran måste göra:
-Vänta tills zerocross avbrottet ska ske.
-Vänta en viss tid innan tiggering TRIAC
-Trigger TRIAC
För 3 kanaler som inte är mycket olika, du måste bara hålla koll på 3 tid variabler. Du kan göra det med "förseningar" men det är ganska komplicerat. Du kan göra det med "micros" och hålla kontroll på 3 tid variabler mot tiden gått sedan zerocross. Slutligen kan du göra det med en timer avbryta.
Hur timer avbrott används normalt om du mörkläggning en kanal, är att avbrottet för önskad tid och när avbrottet inträffar för att utlösa en TRIAC. Med 3 kanaler som är omöjligt eftersom du inte har 3 timer avbrott.
Ett bättre sätt är att ange timer avbrott uppstå för 78uS. Som delar av en 50Hz rutnät frekvens i 128 steg (kom ihåg re är 2 zerocrossings per 50 Hz period, så du har faktiskt en 100 Hz signal, således 10 MS att göra arbetet i innan den nästa zerocrossing avbrott. 10mS/128 = 78.125uS). För 60Hz vore ett värde av 65 bra.
Du då låta timer avbrottstjänstens rutin ställa en räknare som räknar faktiskt 78uS steg som har gått sedan zerocrossing avbrottet inträffade.
Din 3 tid variabler - varje för varje kanal - uttrycks i en nivå mellan 0 och 128. I huvudloop check de mot räknaren av din timer avbryta och när det är på önskad nivå... antända den motsvarande TRIAC.
Om du har ingen aning om hur du ställer in timer avbrott, kolla denna artikel.