Programımla ilgili olarak, bazı hesaplamalar yapan ve daha sonra analogWrite işlevini kullanarak sonuca göre bir voltaj veren bir programdır. Ancak benim sorunum programlama benim PWM üzerinden analogWrite işlevi analog voltaj çıktı aslında aslında bunun yerine analog voltaj "taklit" yanlış bir anlayışa dayalı yapmıştı.
İşte kodumun ilgili bölümleri:
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");
}
Devreye gelince, çıkış pimi 11 1 ohm'luk bir dirence ve daha sonra GND'ye bağlanmaktadır. (Gerilimi ölçtüğüm yerde) Arduino Uno kartını kullanıyorum.
GÜNCELLEME :
@DatHa tarafından yapılan yorumlarda belirtildiği gibi, pwm voltaj çıkışı yapmaz. Dediğimiz gibi, kartı değiştirmeden voltaj çıkışı için bir yol var mı?