اطلاعیه

Collapse
No announcement yet.

مشکل در برنامه نویسی آردوینو مگا

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل در برنامه نویسی آردوینو مگا

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

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

    مشکل اساسی این جاست :
    چون می خوام از دستور analogWrite استفاده کنم مقدار سیگنال pid من باید بین 0 تا 255 باشه . اما اولا مقدار pid معلوم نیست که چه قدر هستش و ثانیا اصلا مقدار صحیحی نیست و مقداری اعشاری داره . چون سیگنال pid ما حاصل کلی ضرب و تقسیم و انتگرال و مشتق هستش که روی خطا انجام شده. به نظر شما برای اینکه از دستور analogWrite استفاده کنم باید چی کار کنم که موج pwm من درست ایجاد بشه ؟

    #2
    پاسخ : مشکل در برنامه نویسی آردوینو مگا

    خب اگر اطلاع داشته باشید اعداد بین 0 تا 255 یعنی 8 بیت بودن سیگنال PWM خروجی. اگر به صورت دستی و با تنظیمات رجیستری اقدام به کانفیگ ماژول های تراشه بکنید میشه همونطور که ADC 10 بیت هست، رزولوشن PWM رو با استفاده از تایمر 16 بیتی(حالا با توجه به میکروکنترلرهای مختلف فرق داره و باید به دیتاشیت رجوع کنید) در مد 10 بیت قرار بدین. با این کار و بعد از گرد کردن منطقی دیتای نهاییتون می تونید دقت رو بالا ببرید.
    البته با همون 8 بیت هم میشه ولی دقت قطعا با الان خیلی تفاوت خواهد داشت.
    اینا قسمت های تئوری بود و باید در عمل تست کنید تا ببینید نتیجه نهایی چطور میشه.
    چرا ناراحتی پاتریک!
    + امروز ی بچه دیدم سرچهارراه گل میفروخت
    - از دیدنش ناراحت شدی؟
    + نه
    پس چی ناراحتت کرده
    + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
    ------------------------------------------------------------------------------------------------------
    تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
    ------------------------------------------------------------------------------------------------------
    محصولات

    دیدگاه

    لطفا صبر کنید...
    X