//En enfas drivkrets för inverter.
// anslutningar.
int driv1 = 2; // drivutgång 1
int driv2 = 3; // drivutgång 2
int off = 4; // ingång för att stänga av förloppet.(ej använd än)
int tid1 = 100; // olika tider för dom olika tillstånden vid pulsgenering
int tid2 = 200;
int tid3 = 250;
int tid4 = 350;
int tid5 = 500;
int tid6 = 1000;
int tid7 = 3700; // denna tid kan behöva finjusteras för exakt 50 hz
// Sä här hör dom olika on och offtiderna ihop för en halv period (10 mS vid 50 hz)
// on 250, 0ff 250, on 350, off 250, on 500, off 200, on 1000, off 100, on 3700, off 100, on 1000, off 200, on 500, off 250, on 350, off 250, on 250, off 250->->
// tid 3 tid 3 tid 4 tid 3 tid 5 tid 2 tid 6 tid 1 tid 7 tid 1 tid 6 tid 2 tid 5 tid 3 tid 4 tid 3 tid 3 tid 3 ->->
void setup()
{
pinMode(driv1, OUTPUT); // driv 1 sätts här som utgång
digitalWrite(driv1, LOW); // och säkerställer att den startar i läge låg
pinMode(driv2, OUTPUT); // driv 2 sätts här som utgång
digitalWrite(driv2, LOW); // och säkerställer att den startar i läge låg
pinMode(off, INPUT); // off sätts här som en ingång (ej använd än)
delay(1500); // en liten fördröjning på 1,5 sek för att inspänningen skall hinna stbilisera sig lite.
}
void loop()
{
digitalWrite(driv1, HIGH); // Första raden, här börjar förloppet med att driv 1 går hög
delayMicroseconds(tid3); // sedan är den hög i x microsekunder (i detta fall 250 microsek)
digitalWrite(driv1, LOW); // sedan går driv 1 låg
delayMicroseconds(tid3); // i x microsek
digitalWrite(driv1, HIGH); // sedan går driv 1 hög igen
delayMicroseconds(tid4); // i x microsek
digitalWrite(driv1, LOW); // osv
delayMicroseconds(tid3);
digitalWrite(driv1, HIGH);
delayMicroseconds(tid5);
digitalWrite(driv1, LOW);
delayMicroseconds(tid2);
digitalWrite(driv1, HIGH);
delayMicroseconds(tid6);
digitalWrite(driv1, LOW);
delayMicroseconds(tid1);
digitalWrite(driv1, HIGH);
delayMicroseconds(tid7);
digitalWrite(driv1, LOW);
delayMicroseconds(tid1);
digitalWrite(driv1, HIGH);
delayMicroseconds(tid6);
digitalWrite(driv1, LOW);
delayMicroseconds(tid2);
digitalWrite(driv1, HIGH);
delayMicroseconds(tid5);
digitalWrite(driv1, LOW);
delayMicroseconds(tid3);
digitalWrite(driv1, HIGH);
delayMicroseconds(tid4);
digitalWrite(driv1, LOW);
delayMicroseconds(tid3);
digitalWrite(driv1, HIGH);
delayMicroseconds(tid3);
digitalWrite(driv1, LOW);
delayMicroseconds(tid3); // här är sista delen i period ett
// Sä här hör dom olika on och offtiderna ihop för en halv period (10 mS vid 50 hz)
// on 250, 0ff 250, on 350, off 250, on 500, off 200, on 1000, off 100, on 3700, off 100, on 1000, off 200, on 500, off 250, on 350, off 250, on 250, off 250->->
// tid 3 tid 3 tid 4 tid 3 tid 5 tid 2 tid 6 tid 1 tid 7 tid 1 tid 6 tid 2 tid 5 tid 3 tid 4 tid 3 tid 3 tid 3 ->->
digitalWrite(driv2, HIGH); // sedan startar förloppet om fast det är driv 2 som körs i samma mönster
delayMicroseconds(tid3);
digitalWrite(driv2, LOW);
delayMicroseconds(tid3);
digitalWrite(driv2, HIGH);
delayMicroseconds(tid4);
digitalWrite(driv2, LOW);
delayMicroseconds(tid3);
digitalWrite(driv2, HIGH);
delayMicroseconds(tid5);
digitalWrite(driv2, LOW);
delayMicroseconds(tid2);
digitalWrite(driv2, HIGH);
delayMicroseconds(tid6);
digitalWrite(driv2, LOW);
delayMicroseconds(tid1);
digitalWrite(driv2, HIGH);
delayMicroseconds(tid7);
digitalWrite(driv2, LOW);
delayMicroseconds(tid1);
digitalWrite(driv2, HIGH);
delayMicroseconds(tid6);
digitalWrite(driv2, LOW);
delayMicroseconds(tid2);
digitalWrite(driv2, HIGH);
delayMicroseconds(tid5);
digitalWrite(driv2, LOW);
delayMicroseconds(tid3);
digitalWrite(driv2, HIGH);
delayMicroseconds(tid4);
digitalWrite(driv2, LOW);
delayMicroseconds(tid3);
digitalWrite(driv2, HIGH);
delayMicroseconds(tid3);
digitalWrite(driv2, LOW);
delayMicroseconds(tid3); // här är driv 2 färdig och förloppet börjar om igen med driv 1 osv.
} // sista raden
Återgå till Energi och uppvärmning
Användare som besöker denna kategori: uppland2 och 3 gäster