اطلاعیه

Collapse
No announcement yet.

نحوهء پردازش ورودی آنالوگ با AVR

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

    نحوهء پردازش ورودی آنالوگ با AVR

    سلام به همهء دوستان.
    من چند وقت بیشتر نیست که شروع کردم به باد گرفتن avr . به کمک مظالبی که توی این سایت بود, تونستم چیزهای خوبی یاد بگیرم. از همهء دوستانی که مطالب و دانش خودشون رو در سایت قرار دادن ممنون و سپاسگذارم.
    من میخوام بدونم که چطور میتونم ورودی آنالوگ رو با avr پردازش کنم.
    آیا مبحث adc, مربوط به پردازش ورودی های آنالوگ میشه؟
    از همهء دوستانی که پاسخ میدن, ممنونم.

    #2
    پاسخ : نحوهء پردازش ورودی آنالوگ با AVR

    نوشته اصلی توسط saeid61323
    سلام به همهء دوستان.
    من چند وقت بیشتر نیست که شروع کردم به باد گرفتن avr . به کمک مظالبی که توی این سایت بود, تونستم چیزهای خوبی یاد بگیرم. از همهء دوستانی که مطالب و دانش خودشون رو در سایت قرار دادن ممنون و سپاسگذارم.
    من میخوام بدونم که چطور میتونم ورودی آنالوگ رو با avr پردازش کنم.
    آیا مبحث adc, مربوط به پردازش ورودی های آنالوگ میشه؟
    از همهء دوستانی که پاسخ میدن, ممنونم.
    سلام

    adc یا همون مبدل انالوگ به دیجیتال دقیقا برای همین مورد هست...چون میکرو نمیتونه دیتای انالوگ رو پردازش کنه ابتدا بوسیله adc دیتا دیجیتال شده و بعد پردازش میشه.

    موفق باشید
    فقر ، شب را " بی غذا " سر کردن نیست ................ فقر ، روز را " بی اندیشه" سر کردن است

    دیدگاه


      #3
      پاسخ : نحوهء پردازش ورودی آنالوگ با AVR

      حالا اینََ ADC چی هست؟ بک قابلیت هست که در داخل میکرو قرار داره؟ و باید برنامه ریزی شه؟ با کدوم برنامه ( codevision یا basecom ) میشه راحت تر ورودی آنالوگ رو پردازش کرد؟

      دیدگاه


        #4
        پاسخ : نحوهء پردازش ورودی آنالوگ با AVR

        فرقی نمیکنه با بسکام یا کدویژن .هم میتونی از adc داخلی استفاده کنی هم از adc خارجی.دقت داخلی فکر کنم تا 8 بیت بیشتر نیست
        تو این جهان 7 میلیاردی من معنی ندارد و اگه تو این دنیا فقط 1 نفر وجود داشت باز هم من معنی نداشت

        دیدگاه


          #5
          پاسخ : نحوهء پردازش ورودی آنالوگ با AVR

          نوشته اصلی توسط sey22
          فرقی نمیکنه با بسکام یا کدویژن .هم میتونی از adc داخلی استفاده کنی هم از adc خارجی.دقت داخلی فکر کنم تا 8 بیت بیشتر نیست
          AVR رو دست کم گرفتید. ADC 10 بیت رو روی خودش داره. :agree:
          [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

          دیدگاه


            #6
            پاسخ : نحوهء پردازش ورودی آنالوگ با AVR

            من میخوام به عنوان مثال سنسور رطوبت-دما رو به عنوان ورودی آنالوگ انتخواب کنم.مثلا سنسور SHT75 . به نطر شما می تونم از نمونه برنامه هایی که توی سابت هست استفاده کنم؟ جواب میده؟ من این مدار رو برای دستگاه جوجه کشی می خوام.
            البته برنامه باید طوری تغییر کنه که میکرو بتونه دما و رطوبت رو در یک رنج مشخص نگه داره.کمک کنید.

            دیدگاه


              #7
              پاسخ : نحوهء پردازش ورودی آنالوگ با AVR

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

              دیدگاه


                #8
                پاسخ : نحوهء پردازش ورودی آنالوگ با AVR

                ببخشید من اینجا یه سوال از هزارتا سوالم در مورد میکرو یادم افتاد که از دوستان میپرسم:
                بیت در میکرو به چه معنیه ؟
                مثلا" شما گفتین میکرو تا 10 بیت هم داره ؟؟؟ :eek:

                ممنون
                تخیل مهمتر از دانش است
                علم محدود است اما تخیل دنیا را دربر میآ‌گیرد
                آلبرت انیشتین

                دیدگاه


                  #9
                  پاسخ : نحوهء پردازش ورودی آنالوگ با AVR

                  من این برنامه رو از سایت گرفتم.این برنامه برای سنسور SHT11 نوشته شده؟ میشه این برنامه رو واسه سنسور ُSHT75 هم استفاده کرد؟



                  'Routine to read the SHT11 Humidity sensor chip
                  'By Stuart Leslie
                  'Contact stu@4sightinc.com with any questions
                  'Uses BascomAVR
                  'a .01 uf capacitor across VCC and Ground on the SHT11 really cleans up the data
                  'a pullup is required on "data" pin as shown in the data sheet
                  $regfile = "m32def.dat"
                  $crystal = 2000000

                  Dim Ctr As Byte
                  Dim Dataword As Word
                  Dim Command As Byte
                  Dim Dis As String * 20

                  Dim Calc As Single
                  Dim Calc2 As Single
                  Dim Rhlinear As Single
                  Dim Rhlintemp As Single
                  Dim Tempc As Single
                  Dim Tempf As Single

                  Const C1 = -4
                  Const C2 = 0.0405
                  Const C3 = -0.0000028
                  Const T1c = .01
                  Const T2 = .00008
                  Const T1f = .018

                  Config Lcd = 20 * 4
                  Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.2 , Rs = Portd.0
                  Cursor Off

                  Sck Alias Portb.0
                  Dataout Alias Portb.1
                  Datain Alias Pinb.1
                  Redled Alias Portb.2

                  Declare Sub Getit()

                  Ddrb = &B11111111 'all port b are output
                  Config Pinb.0 = Output 'sck
                  Config Pinb.1 = Output 'datain

                  'reset the serial communications first, it is easily confused!
                  Set Dataout
                  For Ctr = 1 To 12
                  Set Sck
                  Waitus 2
                  Reset Sck
                  Waitus 2
                  Next Ctr


                  Do 'continually read the tempfature and humidity

                  Command = &B00000011
                  Call Getit 'Get the temperature, puts result in "dataword" for us
                  '
                  Tempf = T1f * Dataword
                  Tempf = Tempf - 40

                  Tempc = T1c * Dataword 'get celcius for later calculations and for "the rest of the world"
                  Tempc = Tempc - 40

                  Dis = Fusing(tempc , "###.##&quot
                  Cls
                  Lcd "Temperature = " ; Dis

                  Command = &B00000101
                  Call Getit 'get the humidity
                  Calc = C2 * Dataword
                  Calc2 = Dataword * Dataword 'that "2" in the datasheet sure looked like a footnote for a couple days, nope it means "squared"!
                  Calc2 = C3 * Calc2
                  Calc = Calc + C1
                  Rhlinear = Calc + Calc2

                  'Dis = Fusing(rhlinear , "##.##&quot
                  'Print "Humidity adjusted for linear = " ; Dis


                  Calc = T2 * Dataword
                  Calc = Calc + T1c
                  Calc2 = Tempc - 25
                  Calc = Calc2 * Calc
                  Rhlintemp = Calc + Rhlinear

                  Dis = Fusing(rhlintemp , "##.##&quot
                  'Lcd "Humidity adjusted for temperature = " ;
                  Lowerline
                  Lcd "Humidity = " ; Dis
                  'Wait 2
                  'Print

                  Wait 1
                  Loop


                  Sub Getit()

                  Local Datavalue As Word
                  Local Databyte As Byte

                  'start with "transmission start"
                  Set Sck
                  Reset Dataout
                  Reset Sck
                  Set Sck
                  Set Dataout
                  Reset Sck


                  'now send the command
                  Shiftout Dataout , Sck , Command , 1

                  Ddrb = &B11111101 'datain is now input
                  Config Pinb.1 = Input 'datain
                  Set Sck 'click one more off
                  Reset Sck
                  Waitus 10 'no idea why, but it doesn't work without it!
                  Bitwait Pinb.1 , Reset 'wait for the chip to have data ready

                  Shiftin Datain , Sck , Databyte , 1 'get the MSB
                  Datavalue = Databyte

                  Ddrb = &B11111111
                  Config Pinb.1 = Output

                  Reset Dataout 'this is the tricky part- Lot's of hair pulling- have to tick the ack!
                  Set Sck
                  Reset Sck

                  Ddrb = &B11111101 'datain is now input
                  Config Pinb.1 = Input

                  Shiftin Datain , Sck , Databyte , 1 'get the LSB
                  Shift Datavalue , Left , 8
                  Datavalue = Datavalue Or Databyte
                  'don't tick the clock or ack since we don't need the CRC value, leave it hanging!
                  Dataword = Datavalue

                  Ddrb = &B11111111
                  Config Pinb.1 = Output

                  Reset Dataout
                  Set Sck
                  Reset Sck

                  Ddrb = &B11111101 'datain is now input
                  Config Pinb.1 = Input

                  Shiftin Datain , Sck , Databyte , 1 'not using the CRC value for now- can't figure it out! Anybody know how to impliment?
                  'Print "CRC value was - " ; Databyte

                  Ddrb = &B11111111
                  Config Pinb.1 = Output

                  Set Dataout
                  Set Sck
                  Reset Sck
                  End Sub

                  End

                  دیدگاه


                    #10
                    پاسخ : نحوهء پردازش ورودی آنالوگ با AVR

                    نوشته اصلی توسط محسن امیری
                    ببخشید من اینجا یه سوال از هزارتا سوالم در مورد میکرو یادم افتاد که از دوستان میپرسم:
                    بیت در میکرو به چه معنیه ؟
                    مثلا" شما گفتین میکرو تا 10 بیت هم داره ؟؟؟ :eek:

                    ممنون
                    تعداد بیت یعنی دقت adc یعنی اینکه شما مثلا adc با دقت 10 بیت داشته باشید نتیجه اندازه گیری عددی بین 0 تا 1-10^2 خواهد بود و هر چی دقت adc بیشتر باشد شما دقیق تر متوجه میشید که ولتاژ ورودی چی بوده

                    دیدگاه

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