اطلاعیه

Collapse
No announcement yet.

ترموستات دیجیتال

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

    ترموستات دیجیتال

    درود بر اساتید محترم
    چند وقتی من دارم روی پروژه ترموستات دیجیتال با سنسور LM35 و ds18b20 کار میکنم کدش نوشتم
    ولی یه مشکل اساسی داره
    مشکل اینه که مثلا اگه روی یک دمای بخصوص تنظیم کنیم (اگه دما از25 رفت بالا فن روشن شود و اگر از20 امد پایین گرم کننده روشن شود در غیر این صورت هیچی روشن نشود)
    مشکل این این جاست که وقت دما بین 25 و26 گیر میکن یعنی بازی میکند هی پشت سر هم شروع به قطع وصل کردن رله میشود در مورد دمای پایین هم همین طوری است
    اگه کسی از اساتی راهی برای این مشکل داره بگه؟؟؟؟؟؟
    متشکرم

    #2
    پاسخ : ترموستات دیجیتال

    شما چند تا راه کار داری.
    1- اگه از دید کنترلی به قضیه نگاه کنیم، چون داده های سنسور lm35 در طولانی مدت معتبره، خروجی سنسور رو قبل از این که بدی به میکرو از یه فیلتر پایین گذر عبور بده تا نوسانات کوتاه مدت مدار گرفته بشه.
    2- راه حل دوم اینه که شرط راه اندازی فن یا گرم کن رو اینطوری بنویسی که بعد از این که برای چند ثانیه متوالی دما بالای 25 بود، فن روشن بشه و اگه بیشتر از چند ثانیه متوالی کمتر از 20 بود گرم کن روشن بشه، اینم تقریبا همون دید کنترلی هست اما به صورت نرم افزاری حل میشه، که یعنی یاز هم نوسانات کوتاه مدت نادیده گرفته میشه.
    3- روش سوم که پیشنهادهم نمی کنم اینه که، بعد از هر تغییری در برنامه یه تاخیر یک دقیقه ای بزار، به این صورت که مثلا وقتی دما رفت بالای 25 فن روشن بشه و تا یک دقیقه بعد هر اتفاقی افتاد فن روشن بمونه و بعد از اون یک دقیقه دوباره دما رو بخونی و شرط رو چک کنی.

    دیدگاه


      #3
      پاسخ : ترموستات دیجیتال

      شما باید تو برنامه یه بازه تعیین کنید. یعنی اگر از 26 بیشتر شد روشن و اگر از 24 کمتر شد خاموش شود. برای دمای پایین هم همین طور.

      دیدگاه


        #4
        پاسخ : ترموستات دیجیتال

        اینم کد من همون که مشکل داره :
        h:دمای بالا
        L :دمای پایین
        m: دمای سنسو
        کد:
        if(m>h){
           PORTD.0=1;
           PORTD.2=0;}
           
           if((m>l) && (m<h)){
           PORTD.0=0;
           PORTD.2=0;}
           
        
           if(m<l){
           PORTD.0=0;
           PORTD.2=1;}

        دیدگاه


          #5
          پاسخ : ترموستات دیجیتال

          من با چند نفر دیگه صحبت کرم این راه پیشنهاد کردن
          دما اگر از 25 رفت 26 و خروجی چینج شد ؛تحت هیچ شرایطی خروجی نباید چینج ش مگر اینکه دما ب 20 برسه؛؛؛؛؛
          اگر امکانش هست بصورت کد بهم بگین خیلی به c مسلط نیستم
          متشکرم از پاسخ

          دیدگاه

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