Per quanto riguarda il mio programma, è un programma che esegue alcuni calcoli e quindi emette una tensione in base al risultato utilizzando la funzione analogWrite. Tuttavia, il mio problema è che avevo programmato sulla base di un'idea errata che la funzione analogWrite tramite PWM emettesse una tensione analogica, dove invece "simula" solo la tensione analogica.
Ecco le parti rilevanti del mio codice:
int pwmOutput = 11;
int pwm = 0;
void compareNewOldVoltageYes(void)
{
if(pv_Vnew > pv_Vold && pwm != 255)
{
++pwm; //increasing value
}
else if(pwm != 0)
{
--pwm; //decreasing
}
}
void compareNewOldVoltageNo(void)
{
if(pv_Vnew > pv_Vold && pwm != 0)
{
--pwm;
}
else if(pwm != 255)
{
++pwm;
}
}
void loop()
{
reading();
PowerCalculation();
if(pv_NewP > pv_OldP)
{
compareNewOldVoltageYes();
}
else
{
compareNewOldVoltageNo();
}
analogWrite(pwmOutput, pwm); //analogWrite
float displayPWMvolt = pwm * 0.0196;
Serial.print("Output Voltage: ");
Serial.print(displayPWMvolt);
Serial.println(" V");
pv_OldP = pv_NewP;
Serial.print("Previous Power: ");
Serial.print(pv_OldP);
Serial.println(" W");
}
Per quanto riguarda i circuiti, il pin di uscita 11 viene collegato a una resistenza da 1 ohm e quindi a GND. (Dove ho misurato la tensione) Sto usando la scheda Arduino Uno.
AGGIORNAMENTO :
Come detto nei commenti di @DatHa, pwm non genera tensione. C'è un modo per generare tensione come detto, senza cambiare la scheda?