آی پی امداد
آی پی امداد
آریا الکترونیک parcham تکشو

مشکل: مشکل در برنامه چای ساز bascom

3r4n

کاربران vip(افتخاری)
کاربر
2015-08-11
305
209
25
گیلان/آستانه اشرفیه
سلام دوستان خدا قوت
من یه کتری دارم که ntc100k داره
اومدم واسش یه ترموستات بسازم با میکرو
اینم برنامش
کد:
$regfile = "m16def.dat"$crystal = 1000000


Enable Interrupts
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Config Portd.6 = Output : Reset Portd.6 : Relay Alias Portd.6




Dim ntc As Word
Dim ref As Word


Dim ref_max As Word
Dim ref_min As Word


Do
   Gosub Red_temp


   Gosub Termostat
   Waitms 300
Loop


End




Red_temp:
   ntc = Getadc(0)
   ref = 600


Return










Termostat:
  ref_max = ref
   ref_min = ref - 100
   If ntc < ref_max Then
      Reset Relay
   Elseif ntc > ref_min Then
      Set Relay
   End If
Return
حالا مشکل اینجاست موقعی ک دما به اندازه دلخواه میرسه تا ثابت شدن led چندبار چشمک میزنه
من فکرمیکنم بخاطراینه که از ntc100k استفاده شده میشه لطف کنید بگیدمشکل از کجاست؟
 
آخرین ویرایش:

gasemi.m100

VIP+ افتخاری
کاربر
2018-12-02
475
950
با سلام
من بیسیک کار نکردم . اما در این جور مواقع باید یه ددباند ایجاد کنید تا از روشن خاموش شدن جلو گیری بشه
برای مثال فرض کنید شما مقدار 100 درجه رو مد نظر قرار دادید در این زمان سیستم با رسیدن دما به 100.01 ولتاژ المنت رو قطع میکنه و پس از چند لحظه دما دوباره پایین میاد و به 99.99 میرسه بعد سیستم دوباره ولتاژ رو وصل میکنه و این کار دوباره تکرار میشه
در این جور موقع از ددباند استفاده کنید به صورتی که میگید هر زمان به 100 رسیدی قطع کن و تا زمانی که به 95 نرسیدی دوباره وصل نکن
(البته برنامه بهتر برنامه ای هست که تاثیر ارتفاع تو نقطه جوش هم درش ملاحظه شده باشه در ارتفاعات بالا اب ممکنه توی 96 درجه به جوش بیاد و المنت تا تموم نشدن اب خاموش نشه
البته در این مورد نمیخواد فشار سنج به کار بره از این قانون که تو فشار ثابت دمای جوش ثابته هم میشه استفاده کرد)

یه روش دیگه روش میانگین گیری هست که برنامه ش کمی پیچیدگی داره اما دقیق تر خواهد بود برای مثال میگید که میانگین دمای 15 ثانیه رو با هم جمع کن و اگر میانگین دما ثابت شد اونوقت قطع کن
 

3r4n

کاربران vip(افتخاری)
کاربر
2015-08-11
305
209
25
گیلان/آستانه اشرفیه
سلام ممنونم ک وقت گذاشتید
من اینکاروکردم مقدار روشن شدن دوباره و -100 کردم اما فرقی نکرد نمیدونم کجا اشتباه کردم یا چه چیزی باید اضافه کنم؟؟:disturbed::disturbed:
با سلام
من بیسیک کار نکردم . اما در این جور مواقع باید یه ددباند ایجاد کنید تا از روشن خاموش شدن جلو گیری بشه
برای مثال فرض کنید شما مقدار 100 درجه رو مد نظر قرار دادید در این زمان سیستم با رسیدن دما به 100.01 ولتاژ المنت رو قطع میکنه و پس از چند لحظه دما دوباره پایین میاد و به 99.99 میرسه بعد سیستم دوباره ولتاژ رو وصل میکنه و این کار دوباره تکرار میشه
در این جور موقع از ددباند استفاده کنید به صورتی که میگید هر زمان به 100 رسیدی قطع کن و تا زمانی که به 95 نرسیدی دوباره وصل نکن
(البته برنامه بهتر برنامه ای هست که تاثیر ارتفاع تو نقطه جوش هم درش ملاحظه شده باشه در ارتفاعات بالا اب ممکنه توی 96 درجه به جوش بیاد و المنت تا تموم نشدن اب خاموش نشه
البته در این مورد نمیخواد فشار سنج به کار بره از این قانون که تو فشار ثابت دمای جوش ثابته هم میشه استفاده کرد)

یه روش دیگه روش میانگین گیری هست که برنامه ش کمی پیچیدگی داره اما دقیق تر خواهد بود برای مثال میگید که میانگین دمای 15 ثانیه رو با هم جمع کن و اگر میانگین دما ثابت شد اونوقت قطع کن
 

m0hammd

کاربر
2022-04-01
35
19
سلام دوستان خدا قوت
من یه کتری دارم که ntc100k داره
اومدم واسش یه ترموستات بسازم با میکرو
اینم برنامش
کد:
$regfile = "m16def.dat"$crystal = 1000000


Enable Interrupts
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Config Portd.6 = Output : Reset Portd.6 : Relay Alias Portd.6




Dim ntc As Word
Dim ref As Word


Dim ref_max As Word
Dim ref_min As Word


Do
   Gosub Red_temp


   Gosub Termostat
   Waitms 300
Loop


End




Red_temp:
   ntc = Getadc(0)
   ref = 600


Return










Termostat:
  ref_max = ref
   ref_min = ref - 100
   If ntc < ref_max Then
      Reset Relay
   Elseif ntc > ref_min Then
      Set Relay
   End If
Return
حالا مشکل اینجاست موقعی ک دما به اندازه دلخواه میرسه تا ثابت شدن led چندبار چشمک میزنه
من فکرمیکنم بخاطراینه که از ntc100k استفاده شده میشه لطف کنید بگیدمشکل از کجاست؟


سلام
دوست عزیز میدونم یکم از تاریخ پست گذشته ولی این کد زیر رو امتحان کنید
در کد زیر صد بار در فاصله زمانی ده میلی ثانیه نمونه برداری شده و سپس میانگین حساب شده است
همیشه برای adc از روش نمونه برداری استفاده کنید
کد:
$regfile = "m16def.dat"
$crystal = 1000000
'Enable Interrupts
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Stop Adc
Config Portd.6 = Output : Reset Portd.6 : Relay Alias Portd.6
'///////////////////////////////////////////////////////////////////////////////
const time_val =15                 ' time_val 1~100
'///////////////////////////////////////////////////////////////////////////////


Dim ntc As word
Dim ref As Word
dim sum as single
dim sum2 as single
dim i as byte

Dim ref_max As Word
Dim ref_min As Word


Do
   Gosub Red_temp

   Gosub Termostat
   Waitms 100
Loop


End




Red_temp:
sum=0
start adc
for i=0 to 99
   ntc = Getadc(0)
sum=sum+ntc
waitms time_val
next
stop adc
sum2=sum/100
ntc=int(sum2)
ref = 600
Return







Termostat:
  ref_max = ref
   ref_min = ref - 100
   If ntc < ref_max Then
      Reset Relay
   Elseif ntc > ref_min Then
    Set Relay
   End If
Return
 
بالا