Hello, I am building a sine inverter with Arduino nano, the code works perfectly like inverter , but I cannot find how to change the duty cycle to control the output voltage. I got in the transformer output 50 - 60 HZ but i can't control the output voltage, I need to control the duty cycle to have a desired output voltage.
This the Code :
#define PWM1_HIGH digitalWrite(2, HIGH)
#define PWM1_LOW digitalWrite(2, LOW)
#define PWM2_HIGH digitalWrite(3, HIGH)
#define PWM2_LOW digitalWrite(3, LOW)
#define SW_ENABLE 4
unsigned char i = 0;
char EN = 0;
unsigned char SPWM[48]={0,12,23,35,46,57,68,78,88,98,108,116,125,133,140,146,152,157,162,166,169,171,173,174,174,173,171,169,166,162,157,152,146,140,133,125,116,108,98,88,78,68,57,46,35,23,12,0};
void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, INPUT_PULLUP);
PWM1_LOW;
PWM2_LOW;
}
void loop() {
if(digitalRead(SW_ENABLE) == 0)
{
while(digitalRead(SW_ENABLE) == 0) delay(10);
EN = !EN;
}
if(EN)
{
for(i=0;i<44;i++)//48 para 50hz, 44 para 60hz
{
PWM2_LOW;
PWM1_HIGH;
delayMicroseconds(SPWM[i]);
PWM1_LOW;
delayMicroseconds(174-SPWM[i]);
}
for(i=0;i<44;i++)//48 para 50hz, 44 para 60hz
{
PWM1_LOW;
PWM2_HIGH;
delayMicroseconds(SPWM[i]);
PWM2_LOW;
delayMicroseconds(174-SPWM[i]);
}
}
else
{ PWM1_LOW;
PWM2_LOW;
}
Homemade102.ino (1.39 KB)