আমার প্রোগ্রাম সম্পর্কে, এটি এমন একটি প্রোগ্রাম যা কিছু গণনা করে এবং তারপরে অ্যানালগ রাইট ফাংশন ব্যবহার করে ফলাফলের ভিত্তিতে একটি ভোল্টেজ আউটপুট দেয়। তবে আমার সমস্যাটি হ'ল আমি আমার প্রোগ্রামিংটি একটি ভুল ধারণার উপর ভিত্তি করে করেছি যে পিডাব্লুএম এর মাধ্যমে অ্যানালগ রাইট ফাংশন একটি এনালগ ভোল্টেজ আউটপুট দেয়, যেখানে বাস্তবে এটি পরিবর্তে অ্যানালগ ভোল্টেজকে "সিমুলেটেড" করে।
এখানে আমার কোড সম্পর্কিত অংশ রয়েছে:
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 ওহম প্রতিরোধকের এবং তারপরে জিএনডিতে সংযুক্ত হচ্ছে। (আমি যেখানে ভোল্টেজ পরিমাপ করেছি) আমি আরডুইনো ইউনো বোর্ড ব্যবহার করছি।
আপডেট :
@ ড্যাটাএ-র মন্তব্যে যেমন বলা হয়েছে, পিডব্লিউএম ভোল্টেজ আউটপুট দেয় না। বোর্ড পরিবর্তন না করে আউটপুট ভোল্টেজের কোনও উপায় আছে কি?