Về chương trình của tôi, nó là một chương trình thực hiện một số tính toán và sau đó đưa ra một điện áp dựa trên kết quả bằng cách sử dụng chức năng analogWrite. Tuy nhiên, vấn đề của tôi là tôi đã thực hiện chương trình của mình dựa trên một quan niệm sai lầm rằng chức năng analogWrite thông qua PWM không tạo ra điện áp tương tự, trong thực tế, nó chỉ "mô phỏng" điện áp tương tự.
Đây là những phần có liên quan trong mã của tôi:
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");
}
Đối với mạch điện, chân đầu ra 11 đang được kết nối với điện trở 1 ohm và sau đó đến GND. (Nơi tôi đo điện áp) Tôi đang sử dụng bo mạch Arduino Uno.
CẬP NHẬT :
Như đã nói trong các bình luận của @DatHa, pwm không xuất điện áp. Có cách nào để điện áp đầu ra như đã nói, mà không thay đổi bảng?