私のプログラムに関しては、いくつかの計算を行い、analogWrite関数を使用して、結果に基づいて電圧を出力するプログラムです。しかし、私の問題は、PWMを介したanalogWrite関数がアナログ電圧を出力するという誤解に基づいてプログラミングを行ったということです。実際には、代わりにアナログ電圧を「シミュレート」するだけです。
ここに私のコードの関連部分があります:
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");
}
回路に関しては、出力ピン11は1オームの抵抗器に接続され、次にGNDに接続されています。(電圧を測定した場所)私はArduino Unoボードを使用しています。
更新:
@DatHaのコメントで述べたように、pwmは電圧を出力しません。ボードを変更せずに、前述のように電圧を出力する方法はありますか?