اطلاعیه

Collapse
No announcement yet.

خطا در مدار رطوبت سنج

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

    خطا در مدار رطوبت سنج

    سلام
    من یک مدار رطوبت سنج ساختم که با استفاده از آیسی 555 تولید فرکانس میکنه و با همون فرمولی که داره تبدیل به درصد رطوبتش میکنم.
    حالا مشکلی که دارم خطای نسبتا زیاد مدارم هست.مثلا الان رطوبت 25% رو 54% نشون میده.
    تقریبا 25 30 درصد اختلاف داره.
    به نظر شما برای حل مشکلش چیکار کنم؟چون سنسور خطی عمل میکنه میخام با برنامه نویسی حلش کنم...
    میشه کسی کمکم کنه؟
    شماتیک:دانلود کنید
    اینم برنامه:
    کد:
    $regfile = "M8def.dat"
     $crystal = 8000000
    Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.3 , _
    Db7 = Portb.2 , E = Portc.1 , Rs = Portc.3
    Config Lcd = 16 * 2
    '*************************************************
    Cursor Off
    Config Portb.0 = Output
    Config Timer1 = Counter , Edge = Rising
    Config Timer0 = Timer , Prescale = 1024
    Enable Interrupts
    Enable Timer0
    Enable Timer1
    On Ovf1 Pulsecount
    On Ovf0 Lable
    
    
    
    Config Pinc.4 = Input
    Config Pinc.5 = Input
    '************************************************
    
    Dim R As Integer
    R = 60
    'Dim H1 As Single
    'Dim H As Integer
    'H = 35
    Dim A As Long , I As Long , B As Byte , M As Integer , U As Long
    B = 0
    Start Timer0
    Cls
    Lcd " Rotobat sanj"
    Wait 2
    '************************************************
    First:
    Do
    If Pinc.5 = 1 Then Goto Rkam
    If Pinc.4 = 1 Then Goto Rziad
    
    Loop
    End
    Lable:
    Incr I
    If I > 30 Then
    Stop Timer0
    Cls
    Home
    M = -7587.2
    A = B * 65536
    A = A + Counter1
     A = A - 110
    U = A - 7351
    U = U * M
    U = U / 100000
    
    'Lcd "freq is:" ; A ; "HZ"
    Home L : Lcd "humidity:" ; U ; "% "
    Locate 1 , 1
    Lcd "Range:" ; R ; "%"
    '***********************************
    If U < R Then
    'Locate 2 , 14
    'Lcd "<55"
    Waitms 500
    Set Portb.0
    End If
    If U > R Then
    'Locate 2 , 14
    'Lcd ">55"
    Waitms 500
    Reset Portb.0
    End If
    Wait 2
    '***********************************
    B = 0
    I = 0
    Counter1 = 0
    Start Timer0
    End If
    Return
    Pulsecount:
    Incr B : Counter1 = 0
    Return
    '***********************************
    Rziad:
    Waitms 100
    Incr R
    
    Goto First
    Rkam:
    Waitms 100
    Decr R
    
    Goto First



    #2
    پاسخ : خطا در مدار رطوبت سنج

    نوشته اصلی توسط tamjid
    سلام
    من یک مدار رطوبت سنج ساختم که با استفاده از آیسی 555 تولید فرکانس میکنه و با همون فرمولی که داره تبدیل به درصد رطوبتش میکنم.
    حالا مشکلی که دارم خطای نسبتا زیاد مدارم هست.مثلا الان رطوبت 27% رو 41% نشون میده.
    تقریبا 10 15 درصد اختلاف داره.
    به نظر شما برای حل مشکلش چیکار کنم؟چون سنسور خطی عمل میکنه میخام با برنامه نویسی حلش کنم...
    میشه کسی کمکم کنه؟
    شماتیک:دانلود کنید
    اینم برنامه:
    کد:
    $regfile = "M8def.dat"
     $crystal = 8000000
    Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.3 , _
    Db7 = Portb.2 , E = Portc.1 , Rs = Portc.3
    Config Lcd = 16 * 2
    '*************************************************
    Cursor Off
    Config Portb.0 = Output
    Config Timer1 = Counter , Edge = Rising
    Config Timer0 = Timer , Prescale = 1024
    Enable Interrupts
    Enable Timer0
    Enable Timer1
    On Ovf1 Pulsecount
    On Ovf0 Lable
    
    
    
    Config Pinc.4 = Input
    Config Pinc.5 = Input
    '************************************************
    
    Dim R As Integer
    R = 60
    'Dim H1 As Single
    'Dim H As Integer
    'H = 35
    Dim A As Long , I As Long , B As Byte , M As Integer , U As Long
    B = 0
    Start Timer0
    Cls
    Lcd " Rotobat sanj"
    Wait 2
    '************************************************
    First:
    Do
    If Pinc.5 = 1 Then Goto Rkam
    If Pinc.4 = 1 Then Goto Rziad
    
    Loop
    End
    Lable:
    Incr I
    If I > 30 Then
    Stop Timer0
    Cls
    Home
    M = -7587.2
    A = B * 65536
    A = A + Counter1
     A = A - 110
    U = A - 7351
    U = U * M
    U = U / 100000
    
    'Lcd "freq is:" ; A ; "HZ"
    Home L : Lcd "humidity:" ; U ; "% "
    Locate 1 , 1
    Lcd "Range:" ; R ; "%"
    '***********************************
    If U < R Then
    'Locate 2 , 14
    'Lcd "<55"
    Waitms 500
    Set Portb.0
    End If
    If U > R Then
    'Locate 2 , 14
    'Lcd ">55"
    Waitms 500
    Reset Portb.0
    End If
    Wait 2
    '***********************************
    B = 0
    I = 0
    Counter1 = 0
    Start Timer0
    End If
    Return
    Pulsecount:
    Incr B : Counter1 = 0
    Return
    '***********************************
    Rziad:
    Waitms 100
    Incr R
    
    Goto First
    Rkam:
    Waitms 100
    Decr R
    
    Goto First
    سلام دوست عزیز
    استفاده از خازن 104 در تغذیه برای من خیلی موثر بود.

    دیدگاه


      #3
      پاسخ : خطا در مدار رطوبت سنج

      خازن رو اضافه کردم....
      اما مشکلم همچنان وجود داره!
      اگر از توی برنامه بیام اون مقدار خطارو کم کنم از مقدار نهاییی به نظرتون کار درستیه؟

      دیدگاه


        #4
        پاسخ : خطا در مدار رطوبت سنج

        نوشته اصلی توسط tamjid
        خازن رو اضافه کردم....
        اما مشکلم همچنان وجود داره!
        اگر از توی برنامه بیام اون مقدار خطارو کم کنم از مقدار نهاییی به نظرتون کار درستیه؟
        اره
        مشکلی نداره،با اختلاف جمع کن بعد نمایش بده
        من برای smt160 که عموما یکی دو درجه اختلاف داره این کار رو کردم.ولی در دماهای بالاتر باز هم خطا مشخص میشد،البته این تجربه ی عملی بنده است اینو میگم شاید کمکی بهتون کنه
        در کل
        "اگه پروژه آموزشیه زیاد مهم نیست"

        دیدگاه

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