اطلاعیه

Collapse
No announcement yet.

عملکرد نادرست دماسنج با AVR

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

    عملکرد نادرست دماسنج با AVR

    سلام
    من یه مداری که در زیر اومده را بستم ولی تو عمل اصلا جواب نمیده و دائما سون سگمنتها روشن و خاموش میشه. وهیچ دمایی را نشون نمیده.لازم به ذکر هست که این مدار و برنامه اش را تو پرتیوس بستم و جواب میده ولی تو عمل نه.میشه کمکم کنید

    عکس مدار مربوطه


    این هم از برنامه مورد نظر
    $regfile = "m8def.dat"
    $crystal = 8000000
    Config Adc = Single , Prescaler = Auto
    Config Portd = Output
    Config Portb = Output


    : Dim Temp As Word , A As Single , B As Word , C As Word , D As Word , E As Word
    : Dim F As Word , G As Byte , H As Byte , I As Byte , L As Byte , M As Byte
    Stop Adc : Start Adc
    Do
    Temp = Getadc(0)
    A = Temp / 204
    B = A * 1000
    C = B / 1000
    D = C * 1000
    E = B - D
    F = E / 100
    G = F * 100
    H = E - G
    I = H / 10
    L = I * 10
    M = H - L

    Portd = Lookup(c , Ebi)
    Portb.0 = 0 : Portb.1 = 1 : Portb.2 = 1 : Portb.3 = 1
    Waitms 10
    Portb.0 = 1



    Portd = Lookup(f , Ebi)
    Portb.0 = 1 : Portb.1 = 0 : Portb.2 = 1 : Portb.3 = 1
    Waitms 10
    Portb.1 = 1
    Portd = Lookup(i , Ebie)
    Portb.2 = 0
    Waitms 10
    Portb.2 = 1
    Portd = Lookup(m , Ebi)
    Portb.3 = 0
    Waitms 10
    Portb.3 = 1

    Loop
    Ebi:
    Data 63 , 6 , 91 , 79 , 102 , 109 , 125 , 7 , 127 , 111
    Ebie:
    Data 191 , 134 , 219 , 207 , 230 , 237 , 253 , 135 , 255 , 239

    #2
    پاسخ : عملکرد نادرست دماسنج با AVR

    من با بسکام کار نکردم.
    ولی در مورد سخت افزارت بگم که پایه های مشترک ر مستقیم به میکرو وصل نکن از ULN2003 استفاده کن.
    و اینکه پایه های داده ر هم با مقاومت وصل کن.

    دیدگاه


      #3
      پاسخ : عملکرد نادرست دماسنج با AVR

      نوشته اصلی توسط masoud85
      من با بسکام کار نکردم.
      ولی در مورد سخت افزارت بگم که پایه های مشترک ر مستقیم به میکرو وصل نکن از ULN2003 استفاده کن.
      و اینکه پایه های داده ر هم با مقاومت وصل کن.
      میشه توضیح بدین که این ULN2003چیه
      درضمن پایه های داده هم که میگی با مقاومت وصل کنم فقط برای محدود کردن جریان واسه سگمنتها و جلوگیری از اسیب رساندن به اونها میگی استفاده کنم یا دلیل دیگری داره

      دیدگاه


        #4
        پاسخ : عملکرد نادرست دماسنج با AVR

        ULN 2003 یک نوع بافره.و هدف از گذاشتن اون اینه اگه جریان خروجی از میکرو کم بود ما اول اونو راه بندازیم و بعد اون 7seg راه اندازی کنه که نور 7seg بیشتر شه.تقریبا مثل ترانزیستور کا میکنه.البته تو محیط واقعی مهمه وگرنه تو شبیه سازی زیاد مهم نیست چو شرایط ایده آله.
        استفاده از مقاومت بیشتر واسه اینه که شما از میکرو بیش از حد جریا نکشی،چو میکرو آسیب می بینه،اینم باز تو شرایط واقعی مهمه.یا حق

        دیدگاه


          #5
          پاسخ : عملکرد نادرست دماسنج با AVR

          سلام
          من اون کارهایی که گفته بودین را انجام دادم ولی باز مشکلم برطرف نشد

          دیدگاه


            #6
            پاسخ : عملکرد نادرست دماسنج با AVR

            من حتی این مدار هم که باز وظیفه اش اندازه گیری دما هستش بستم ولی باز جواب نداد
            تو شکل زیر اون تغییراتی که شما گفته بودین را لحاظ کردم ولی باز تو عمل مدار درست عمل نمیکنه
            تو این شکل از پین های pc0 و pc1 بعنوان ورودی انالوگ اسفاده کرده ام


            این هم از برنامه اش هستش

            $regfile = "m8def.dat"
            $crystal = 1000000
            Config Adc = Single , Prescaler = Auto , Reference = Internal

            Config Portb = Output
            Config Portd = Output
            P0 Alias Portd
            Dim A As Word , B As Word , C As Single , D As Word , F As Word , V As Bit

            Start Adc
            Do
            A = Getadc(0)
            B = Getadc(1)
            C = A - B
            C = C / 4

            If C > 0 Then
            V = 0
            F = C
            End If

            If C < 0 Then
            V = 1
            C = C * -1
            F = C * 1
            End If



            P0 = &B10 : D = F Mod 10 : Gosub Np
            Waitms 20
            P0 = &B01 : D = F / 10 : Gosub Np


            Loop
            End

            Np:
            Portb = Lookup(d , 7seg)
            Portb.7 = V
            Waitms 250
            Return


            7seg:
            Data &B1000000 , &B1111001 , &B0100100 , &B0110000 , &B0011001
            Data &B0010010 , &B0000010 , &B1111000 , &B0000000 , &B0010000

            دیدگاه

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