ايران ويج

نسخه‌ی کامل: ترموستات دیجیتال
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
درود بر اساتید محترم
چند وقتی من دارم روی پروژه ترموستات دیجیتال با سنسور LM35 و ds18b20 کار میکنم کدش نوشتم
ولی یه مشکل اساسی داره
مشکل اینه که مثلا اگه روی یک دمای بخصوص تنظیم کنیم (اگه دما از25 رفت بالا فن روشن شود و اگر از20 امد پایین گرم کننده روشن شود در غیر این صورت هیچی روشن نشود)
مشکل این این جاست که وقت دما بین 25 و26 گیر میکن یعنی بازی میکند هی پشت سر هم شروع به قطع وصل کردن رله میشود در مورد دمای پایین هم همین طوری است
اگه کسی از اساتی راهی برای این مشکل داره بگه؟؟؟؟؟؟
متشکرم
ويرايش
اولین راه که میانگین گیری هست.
اما به واقع ، سطح TTL و CMOS و ... رو که نگاه کنید، یه رنجی به عنوان 0 در نظر گرفته می شه و از یه سطح ولتاژی بالا تر 1 ، ما بقیه فضای بین این دو یک فاصله یا به اصطلاح Gap هست.
وجود این Gap + میانگین گیری می تونه راه حل شما باشه. زمانی هم که در Gap سر می کنه باید حفظ حالت قبل کنه.

روش دیگه اینه که از جبرانسازایی مثل الگوریتم PID استفاده کنید ، که در این صورت باید روی گرمایش و سرمایش تفکیک پذیریه خوبی داشته باشید و بتونید پله پله شدت رو کاهش یا افزایش بدید. که برای طراحی های حساس و پیشرفته هست ، ممکنه به کار شما نیاد.
شما خودتون داريد ب راه حل اشاره ميكنيد؛
راه حل ساده، همون تعيين هيسترزيسي هست ك عنوانش كردين (بازه 20 تا 25)


مثلا اگه دما رفت بالا و شد 26 (ديده ميشه ك به يكباره بروي مثلا 25 جهش ميكنهبدليل خاصيت لختي پارامتر دما) ك اينجا كار شما رو خراب ميكنه درسته؟؟؟!!!!!

يعني همين دمپ باعث قطع و وصل مرتب خروجي ميشه(مثلا فن،هيتر يا هر ديوايس ديگه)
اما با توجه به اون هيسترزيسي ك شما ازش صحبت كردين نبايد اين اتفاق بيافته،چون در غير اينصورت بيانگر ايرادي در الگوريتم يا برنامه شماست؛


جواب،دقت كنيد؛
دما اگر از 25 رفت 26 و خروجي چينج شد ؛تحت هيچ شرايطي خروجي نبايد چينج ش مگر اينكه دما ب 20 برسه؛؛؛؛؛
جواب همين بود؛برنامه تون رو مجددا چك كنيد و گفته تون رو بصورت برنامه بنويسيد
بله دقیقا مشکل من هم همینه که گفتید
اینم کد من همون که مشکل داره :
h:دمای بالا
L :دمای پایین
m: دمای سنسور

کد php:
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;} 
اگر امکانش هست اون قسمت که گفتید
دما اگر از 25 رفت 26 و خروجي چينج شد ؛تحت هيچ شرايطي خروجي نبايد چينج ش مگر اينكه دما ب 20 برسه
بصورت کد بهم بگید
متشکرم از پاسخ تون