मेरे कार्यक्रम के बारे में, यह एक ऐसा कार्यक्रम है जो कुछ गणना करता है और फिर analogWrite फ़ंक्शन का उपयोग करके परिणाम के आधार पर एक वोल्टेज को आउटपुट करता है। हालाँकि मेरी समस्या यह है कि मैंने अपनी प्रोग्रामिंग एक गलत धारणा के आधार पर की थी कि PWM के माध्यम से एनालॉगवर्ट फंक्शन एक एनालॉग वोल्टेज का उत्पादन करता है, जहाँ वास्तव में यह एनालॉग वोल्टेज के बजाय केवल "अनुकरण" करता है।
यहाँ मेरे कोड के प्रासंगिक भाग हैं:
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 आउटपुट वोल्टेज नहीं देता है। क्या बोर्ड को बदले बिना, आउटपुट वोल्टेज का एक तरीका है?