سلام من یه مدار طراحی کردم که ورودی 4 تا 20 میلی امپری داره و یه ورودی 0 تا 10 ولتی داره
4 الی 20 میلی امپر رو میخونه و تبدیل به 0 تا 1023 میکنه
0 تا 10 ولت رو میخونه و تبدیل به 0 تا 1023 میکنه
در قسمت بعدی طراحی یه خروجی 0 تا 10 ولت با OCR1A درست کردم که با مقدار 0 به من صفر ولت میده و با مقدار 1023 به من 10 ولت میده
تا اینجا همه چی اوکی و بدون مشکله
ورودی 4 الی 20 میلی امپر وصله به سنسور فشار
ورودی 0 تا 10 ولت وصله به یه ولوم
رفرنس من ولوم هست که روی یه مقدار تنظیم میشه و من مقدار سنسور رو میخونم و میخام با محاسبه PID یه خروجی 0 الی 10 ولت بدم به یک الکتروموتور که فشار رو به حد مطلوبی که با ولوم تنظیم شده برسونه تا حالا PID کار نکردم برنامه یه چیزایی برای بخش PID نوشتم اما درست جواب نمیگیرم میشه راهنماییم کنین؟
دلیل: ادغام دو پست برای جلوگیری از اسپم
تکه کد مربوط به PID
4 الی 20 میلی امپر رو میخونه و تبدیل به 0 تا 1023 میکنه
0 تا 10 ولت رو میخونه و تبدیل به 0 تا 1023 میکنه
در قسمت بعدی طراحی یه خروجی 0 تا 10 ولت با OCR1A درست کردم که با مقدار 0 به من صفر ولت میده و با مقدار 1023 به من 10 ولت میده
تا اینجا همه چی اوکی و بدون مشکله
ورودی 4 الی 20 میلی امپر وصله به سنسور فشار
ورودی 0 تا 10 ولت وصله به یه ولوم
رفرنس من ولوم هست که روی یه مقدار تنظیم میشه و من مقدار سنسور رو میخونم و میخام با محاسبه PID یه خروجی 0 الی 10 ولت بدم به یک الکتروموتور که فشار رو به حد مطلوبی که با ولوم تنظیم شده برسونه تا حالا PID کار نکردم برنامه یه چیزایی برای بخش PID نوشتم اما درست جواب نمیگیرم میشه راهنماییم کنین؟
دلیل: ادغام دو پست برای جلوگیری از اسپم
تکه کد مربوط به PID
#define Tsample 100
#define TP 1
#define TI 1
#define TD 1
if( Sec >= Tsample)
{
Error = SP - Sens ;
Pterm = TP * Error;
Iterm = (TP/TI)* Last_Error;
Dterm = TD * (Last_Process - Processvalue);
Processvalue = ( Pterm + Iterm + Dterm );
Last_Error = Last_Error + Error;
Last_Process = Processvalue;
if (Processvalue >= 1023)
Processvalue= 1023;
else
if (Processvalue <=0)
Processvalue= 0;
Sec=0;
}
دیدگاه