سلام خدمت دوستان عزیز ...
من توی برنامه نویسی با یه مشکل رو به رو هستم ... که شرحش یکم طولانیه . اگه می تونید کمکم کنید خیلی ضروریه
من توی برنامه نویسی با یه مشکل رو به رو هستم ... که شرحش یکم طولانیه . اگه می تونید کمکم کنید خیلی ضروریه


من در حال ساخت یه کنترل کننده pid هستم . و میخوام دمای یک لامپ رو باهاش کنترل کنم . و روی یک lcd کارکتری نشون بدم. دما رو از طریق سنسور lm35 می خونم که به ازای هر درجه سانتی گراد یک میلی ولت خروجی داره . از طریق یک پتانسیومتر هم ست پوینت رو به آردوینو می دم .
پس من با آردوینو دوتا ولتاژ می خونم یکی خروجی lm35 و یکی هم خروجی پتانسیومتر.خب حالا این دو عدد خونده شده با توجه به دقت adc آردوینو ، مقداری بین 0 تا 1023 دارن . من میخوام این مقدار رو به دما تبدیل کنم ... از رابطه های زیر استفاده می کنم :
(5/1023)*100*عدد خوانده شده توسط آردوینو از lm35
(5/1023)*20*عدد خوانده شده توسط آردوینو از پتانسیومتر
حالا این دو عدد دمای خوانده شده و دمای مطلوب(ست پوینت) من هستن.
من حالا این دو عدد رو از هم کم می کنم تا خطا به دست بیاد و بعد هم یکسری اعمال ریاضی برای به دست آوردن مشتق و انتگرال و در نهایت ساخته شدن فرمان کنترلی pid . حالا باید این فرمان رو به سیستمی که می خوام کنترلش کنم بفرستم ...
مشکل اساسی این جاست :
چون می خوام از دستور analogWrite استفاده کنم مقدار سیگنال pid من باید بین 0 تا 255 باشه . اما اولا مقدار pid معلوم نیست که چه قدر هستش و ثانیا اصلا مقدار صحیحی نیست و مقداری اعشاری داره . چون سیگنال pid ما حاصل کلی ضرب و تقسیم و انتگرال و مشتق هستش که روی خطا انجام شده. به نظر شما برای اینکه از دستور analogWrite استفاده کنم باید چی کار کنم که موج pwm من درست ایجاد بشه ؟
پس من با آردوینو دوتا ولتاژ می خونم یکی خروجی lm35 و یکی هم خروجی پتانسیومتر.خب حالا این دو عدد خونده شده با توجه به دقت adc آردوینو ، مقداری بین 0 تا 1023 دارن . من میخوام این مقدار رو به دما تبدیل کنم ... از رابطه های زیر استفاده می کنم :
(5/1023)*100*عدد خوانده شده توسط آردوینو از lm35
(5/1023)*20*عدد خوانده شده توسط آردوینو از پتانسیومتر
حالا این دو عدد دمای خوانده شده و دمای مطلوب(ست پوینت) من هستن.
من حالا این دو عدد رو از هم کم می کنم تا خطا به دست بیاد و بعد هم یکسری اعمال ریاضی برای به دست آوردن مشتق و انتگرال و در نهایت ساخته شدن فرمان کنترلی pid . حالا باید این فرمان رو به سیستمی که می خوام کنترلش کنم بفرستم ...
مشکل اساسی این جاست :
چون می خوام از دستور analogWrite استفاده کنم مقدار سیگنال pid من باید بین 0 تا 255 باشه . اما اولا مقدار pid معلوم نیست که چه قدر هستش و ثانیا اصلا مقدار صحیحی نیست و مقداری اعشاری داره . چون سیگنال pid ما حاصل کلی ضرب و تقسیم و انتگرال و مشتق هستش که روی خطا انجام شده. به نظر شما برای اینکه از دستور analogWrite استفاده کنم باید چی کار کنم که موج pwm من درست ایجاد بشه ؟
دیدگاه