اطلاعیه

Collapse
No announcement yet.

راه اندازی سنسور رطوبت DHT 11/22

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

    راه اندازی سنسور رطوبت DHT 11/22

    سلام دوستان .

    سنسورهای رطوبتی مختلفی تو بازار هست که یا مثل خانواده SHT گرون هستند و یا مثل HS1101 از دقت و کالیبره پائینی برخوردار هستند. یه نمونه سنسور در بازار هست بنام DHT 11 - DHT22 که به عبارتی میشه گفت یه چیزی تو مایه های SHT هستند.خاستم دوستانی که این نوع سنسور رو راه اندازی کردند تجربه و دانش خودشون رو در اختیار ما قرار بدند تا ما هم به نتیجه برسیم .

    سنور DHT 11 - DHT22



    کالبد شکافی شده







    DHT22 سنسور



    دیتاشیت DHT11

    http://upload.tehran98.com/img1/yhytp4kgwoz2d60ove.pdf
    دیتاشیت DHT22

    http://upload.tehran98.com/img1/1iq174g54n6het5u2x6f.pdf
    یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

    #2
    پاسخ : راه اندازی سنسور رطوبت DHT 11/22

    سلام
    اینجا نقشه به همراه کد هست تست کنید ببینید جواب میده
    http://www.pocketmagic.net/2012/11/t.../#.UR4_sWcbRCo
    متاسفانه از c زیاد سر در نمیارم ولی یه نگاه به کدش که انداختم به نظر خیلی ساده بود
    اینم واسه dht11:
    http://www.pocketmagic.net/2012/10/a...b20-and-dht11/
    اینم سورس بسکام برای dht 22 که باید یکم اضافات ال سی دی و ... بریده بشه
    http://www.riesens.ch/auktion/DHT22_01.bas
    اینم یه نمونه بسکام برای dht11 که سیگنال خروجی رو هم توضیح داده (غیر انگلیسی) و تو قسمت نظرات هم چیزای خوبی پیدا می شه:
    http://avrproject.ru/publ/kak_podklj...m_avr/2-1-0-72
    با این ها دیگه فکر کنم باید سنسور رو خرید و با کمی تغییر توی سورس اون رو تست کرد
    دعا کنید برای من

    چی شد پس لطفا همین حالا!

    دیدگاه


      #3
      پاسخ : راه اندازی سنسور رطوبت DHT 11/22

      اتفاقا منم این سایت ها و سورس کد ها رو دیدم ولی مشکل اینجاست که یه مسئله رو هرکاری میکنم متوجه نمیشم این سورس برای DHT22
      کد:
      Timings: Bit = 0 ~ 28 µs / Bit = 1 ~ 70 µs
      ' Min_time = 28 µs < TCNT0 Value (ticks) < 70 µs (in ticks)
      ' every time > Min_time >>> Bit = 1
      ' every time < Min_time >>> Bit = 0
      '
      ' Min_time ~ 20 (ticks) for 3.6864 MHz
      '
      ' ~ ticks for Bit = 0: 26 µs * $crystal (in MHz) / Prescale
      ' ~ ticks for Bit = 1: 70 µs * $crystal (in MHz) / Prescale'
      '######################## DHT-22 Humidity & Temperature Sensor##################
      
      
      $regfile = "m168def.dat"
      $crystal = 16000000
      $baud = 115200
      
      $hwstack = 64
      $swstack = 64
      $framesize = 64
      
      '#####################################
      
      Config Pind.4 = Input
      Config Timer0 = Timer , Prescale = 8
      
      '#####################################
      
       Const Min_time = 95
      من میخام از کریستال 8 یا 12مگ استفاده کنم ولی نمیدونم چطور Const Min_time رو بدست بیارم .خودش بالای برنامه توضیح داده ولی من نگرفتم که چی شده .این قسمت رو میگم:

      کد:
      ticks for Bit = 0: 26 µs * $crystal (in MHz) / Prescale
      ' ~ ticks for Bit = 1: 70 µs * $crystal (in MHz) / Prescale
      یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

      دیدگاه


        #4
        پاسخ : راه اندازی سنسور رطوبت DHT 11/22

        سلام من اینو از وبسایت زیر گرفتم و برای pina0 میکرو MEGA32 تغییر دادم و جواب هم گرفتم


        http://www.avr-praxis.de/forum/showthread.php?2224-DHT-22-Sensor-f%FCr-Luftfeuchtigkeit-und-Temperatur

        کد:
        '######################## DHT-22 Humidity & Temperature Sensor####################
        ' DHT-22
        '
        ' |-----o-- Vcc
        ' |   |
        ' |   -
        ' |   10k
        ' |   -
        ' |   |
        ' |-----o-- Data ~~~ PA0 (µC)
        ' |
        ' |-------- NC
        ' |
        ' |-------- GND
        '
        ' Timings: Bit = 0 ~ 28 µs / Bit = 1 ~ 70 µs
        ' Min_time = 28 µs < TCNT0 Value (ticks) < 70 µs (in ticks)
        ' every time > Min_time >>> Bit = 1
        ' every time < Min_time >>> Bit = 0
        '
        ' Min_time ~ 20 (ticks) for 3.6864 MHz
        '
        ' ~ ticks for Bit = 0: 26 µs * $crystal (in MHz) / Prescale
        ' ~ ticks for Bit = 1: 70 µs * $crystal (in MHz) / Prescale
        '
        '######################## DHT-22 Humidity & Temperature Sensor####################
        
        
        $regfile = "m32def.dat"
        $crystal = 16000000
        $baud = 9600
        
        $hwstack = 64
        $swstack = 64
        $framesize = 64
        
        '#####################################
        
        Config Pina.0 = Input
        Config Timer0 = Timer , Prescale = 8
        
        '#####################################
        
        Const Min_time = 70                     'this has to be changed according to your frequency settings in $crystal
        
        Dim Count As Byte
        dim timec as byte
        dim x as byte
        dim chksum as byte
        
        Dim Humidityw As Word
        Dim Temperaturew As word
        dim tneg as byte 'indicate if temperature<0
        Dim Humsens_chksum As Byte
        
        Dim Humiditys As String * 16
        Dim Temperatures As String * 16
        
        Do
        
        gosub Read_sensor 'takes 3 seconds
        
        Print Format(humiditys , "0.0") ; " "; Format(temperatures , "0.0")
        
        
        Loop
        
        End
        
        
        ' measure time (in ticks) for signal = high (Start / Stop TIMER0)
        ' 1st two measurements do not contain sensor values
        ' transform timings into bits (40 timings > 40 Bits)
        ' every time (in ticks) > Min_time >>> Bit = 1
        ' every time (in ticks) < Min_time >>> Bit = 0
        ' first word contains humidity
        ' second word contains temperature
        ' last byte contains checksum
        
        Read_sensor:
         Humidityw = 0
         Temperaturew = 0
         Humsens_chksum = 0
         Waitms 500
         Count = 1
        
        Config Pina.0 = Output : Porta.0 = 0           ' request data
        Waitms 20                        ' wait 20 ms
        Config Pina.0 = Input                  ' wait for data, receive data
        
          While Count < 43                     'collect 42 timings / signals
        
           Bitwait Pina.0 , Set                 'signal goes high > start timer
           Start Timer0
           Bitwait Pina.0 , Reset                'signal goes low > stop timer
           Stop Timer0
           timec=tcnt0
           Tcnt0 = 0
        
           Select Case Count
        
             Case 3 To 18
              X = 18 - Count
              If timec > Min_time Then Toggle Humidityw.x
        
             Case 19 To 34
              X = 34 - Count
              If timec > Min_time Then Toggle Temperaturew.x
        
             Case 34 To 42
              X = 42 - Count
              If timec > Min_time Then Toggle Humsens_chksum.x
        
           End Select
        
           Incr Count
        
         Wend
        
        
        '############################################################# Calculate Checksum and compare with trasnmitted value
        Chksum = Low(humidityw) + High(humidityw)
        Chksum = Chksum + Low(temperaturew)
        Chksum = Chksum + High(temperaturew)
        
        If chksum=Humsens_chksum Then
        
        'reset the temperature string
        temperatures=""
          if temperaturew.15=1 then 'if this bit is set, temperatur is negative
          temperaturew.15=0 'Reset the indicator bit for later conversion
          temperatures="-" 'Add a negative sign to the temperature string
          endif
        
          Humiditys = Str(humidityw)
          Temperatures = Temperatures+ Str(temperaturew)
        
        end if
        
        return
        «اگر واقعيات با نظريات هماهنگي ندارند، واقعيتآ‌ها را تغيير بده.»
        آلبرت انشتين

        دیدگاه


          #5
          پاسخ : راه اندازی سنسور رطوبت DHT 11/22

          سلام دوستان. من سورس کد این سنسور رو از لینک زیر دانلود کردم و یه مقداری دستکاریش کردم.
          http://www.pocketmagic.net/wp-conten...HT-22_8Mhz.zip
          تبدیلش کردم به یه فایل هدر برای کدویژن. :nerd: محتویات این هدر فایل به صورت زیره. کاملا تست شده و سالمه. :nice:
          دقت کنین که فرکانس کاریتون روی 8Meg یا بیشتر تنظیم باشه.
          کد:
          #define DHT22_PIN     PIND.5
          #define DHT22_DDR     DDRD.5
          #define DHT22_PORT     PORTD.5
          
          #define DHT22_INPUT_MODE  DHT22_DDR=0;
          #define DHT22_OUTPUT_MODE DHT22_DDR=1;
          #define DHT22_LOW     DHT22_PORT=0;
          #define DHT22_HIGH     DHT22_PORT=1;
          #define DHT22_READ     DHT22_PIN
          //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
          
          #define DHT_BUS_HUNG 0
          
          //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
          int dht22_read(float *temperature, float *humidity);
          //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
          // This should be 40, but the sensor is adding an extra bit at the start
          #define DHT22_DATA_BIT_COUNT 41
          //
          // Read the 40 bit data stream from the DHT 22
          // Store the results in private member data to be read by public member functions
          //
          int dht22_read(float *temperature, float *humidity)
          {
          // uint8_t bitmask = _bitmask;
          //volatile uint8_t *reg asm("r30") = _baseReg;
          int Count, i;
          unsigned char bitTimes[DHT22_DATA_BIT_COUNT];
          int Humidity;
          int Temperature;
          unsigned char checkSum, csPart1, csPart2, csPart3, csPart4;
          
          Humidity = 0;
          Temperature = 0;
          checkSum = 0;
            
          //return currentTime;
          for(i = 0; i < DHT22_DATA_BIT_COUNT; i++)
            {
            bitTimes[i] = 0;
            }
          
          // Pin needs to start HIGH, wait until it is HIGH with a timeout
          //cli();
          DHT22_INPUT_MODE
          //sei();
          Count = 0;
          
          do
           {
           if(Count > 125)
            {
            return DHT_BUS_HUNG;
            }
           Count++;
           delay_us(2);
           }while(!DHT22_READ);
            
          // Send the activate pulse
          //cli();
          DHT22_LOW
          DHT22_OUTPUT_MODE // Output Low
          //sei();
          delay_us(1100); // 1.1 ms
          //cli();
          DHT22_INPUT_MODE  // Switch back to input so pin can float
          //sei();
          // Find the start of the ACK Pulse
          Count = 0;
          
          do
           {
           if(Count > 25) //(Spec is 20 to 40 us, 25*2 == 50 us)
            {
            return DHT_BUS_HUNG;
            }
            Count++;
            delay_us(2);
           } while(!DHT22_READ);
           
          // Find the end of the ACK Pulse
            
          Count = 0;
          do
           {
           if(Count > 50) //(Spec is 80 us, 50*2 == 100 us)
            {
            return DHT_BUS_HUNG;
            }
            Count++;
            delay_us(2);
           }while(DHT22_READ);
           
          // Read the 40 bit data stream
          for(i = 0; i < DHT22_DATA_BIT_COUNT; i++)
            {
            // Find the start of the sync pulse
            Count = 0;
            do
            {
            if(Count > 35) //(Spec is 50 us, 35*2 == 70 us)
             {
             return DHT_BUS_HUNG;
             }
            Count++;
            delay_us(2);
            } while(!DHT22_READ);
          
            // Measure the width of the data pulse
            Count = 0;
            do
             {
             if(Count > 50) //(Spec is 80 us, 50*2 == 100 us)
              {
              return DHT_BUS_HUNG;
              }
              Count++;
              delay_us(2);
             }while(DHT22_READ);
            bitTimes[i] = Count;
            }
          
          // Now bitTimes have the number of retries (us *2)
          // that were needed to find the end of each data bit
          // Spec: 0 is 26 to 28 us
          // Spec: 1 is 70 us
          // bitTimes[x] <= 11 is a 0
          // bitTimes[x] > 11 is a 1
          // Note: the bits are offset by one from the data sheet, not sure why
          for(i = 0; i < 16; i++)
            {
            if(bitTimes[i + 1] > 11)
             {
             Humidity |= (1 << (15 - i));
             }
            }
          
          for(i = 0; i < 16; i++)
            {
            if(bitTimes[i + 17] > 11)
             {
             Temperature |= (1 << (15 - i));
             }
            }
            
          for(i = 0; i < 8; i++)
            {
            if(bitTimes[i + 33] > 11)
             {
             checkSum |= (1 << (7 - i));
             }
            }
          
          *humidity = ((float)(Humidity & 0x7FFF)) / 10.0;
            
          if(Temperature & 0x8000)
           {
           // Below zero, non standard way of encoding negative numbers!
           Temperature &= 0x7FFF;
           *temperature = ((float)Temperature / 10.0) * -1.0;
           }
           else
           {
           *temperature = (float)Temperature / 10.0;
           }
          
          csPart1 = Humidity >> 8;
          csPart2 = Humidity & 0xFF;
          csPart3 = Temperature >> 8;
          csPart4 = Temperature & 0xFF;
            
          if(checkSum == ((csPart1 + csPart2 + csPart3 + csPart4) & 0xFF) && status.humi>0)
           {
           //*humidity = 10;
           //return DHT_ERROR_NONE;
           return 1;
           }
          
          //*humidity = 20;
          //return DHT_ERROR_CHECKSUM;
          
          //*temperature = -100;
          //*humidity  = -100;
          return 0;
          }
          تو را دانش و دين نمايد درست در رستگاري ببايدت جست
          وگر دل نخواهي كه باشي نژند نخواهي كه دائم بوي مستمند
          به گفتار پيغمبرت راه جوي دل از تيرگي ها بدين آب شوي

          دیدگاه


            #6
            پاسخ : راه اندازی سنسور رطوبت DHT 11/22

            نوشته اصلی توسط ma.eca91
            سلام دوستان. من سورس کد این سنسور رو از لینک زیر دانلود کردم و یه مقداری دستکاریش کردم.
            http://www.pocketmagic.net/wp-conten...HT-22_8Mhz.zip
            تبدیلش کردم به یه فایل هدر برای کدویژن. :nerd: محتویات این هدر فایل به صورت زیره. کاملا تست شده و سالمه. :nice:
            دقت کنین که فرکانس کاریتون روی 8Meg یا بیشتر تنظیم باشه.
            سلام
            ببخشید من از کد برای DHT11 استفاده کردم نشد میخواستم بدونم اصلا شدنی هست یا نه؟
            در ضمن به عنوان هدر هم نه فقط به صورت تابع کپی پیس کردم
            اینم دیفاین و کد من

            کد:
            #define DHT22_INPUT_MODE  DHT22_DDR=0;
            #define DHT22_OUTPUT_MODE DHT22_DDR=1;
            #define DHT22_LOW     DHT22_PORT=0;
            #define DHT22_HIGH     DHT22_PORT=1;
            #define DHT22_READ     DHT22_PIN 
            //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
            #define DHT_BUS_HUNG 0
            
            // This should be 40, but the sensor is adding an extra bit at the start
            #define DHT22_DATA_BIT_COUNT 41
            کد:
            [left]
            		dht22_read(&t,&h); 
            		  
            		 LCD_Ftoa(t,2, 0,10,0, 5);
            
               
                 LCD_Ftoa(h,2,0,0,0, 5);[/left]

            تمام مقادیر را صفر نشان میدهد
            پایه سنسور به PB.3 متصل است
            فرکانس هم 16M
            لطفا کمک کنید

            دیدگاه


              #7
              راه اندازی سنسور رطوبت DHT 11/22

              من پس از بررسی برنامه خودم متوجیه شدم که در مرحله زیر از تابع بیرون می آید
              کد:
              // Find the end of the ACK Pulse
                
              Count = 0;
              do
               {
               if(Count > 50) //(Spec is 80 us, 50*2 == 100 us)
                {
                return DHT_BUS_HUNG;
                }
                Count++;
                delay_us(2);
                   
               }while(DHT22_READ);

              پس از صفر کردن دستی در مرحله زیر باز مشکل داشت
              کد:
               // Measure the width of the data pulse
                Count = 0;
                do
                 {
                 if(Count >50) //(Spec is 80 us, 50*2 == 100 us)
                  {
                  return DHT_BUS_HUNG+5;
                  }
                  Count++;
                  delay_us(2);
                 }while(DHT22_READ);
                bitTimes[i] = Count;

              ظاهرت خروجی سنسور هیج وقت صفر نمیشود ! چرا؟ :sad: :cry: :angry:
              کمممممممممممممک

              دیدگاه


                #8
                پاسخ : راه اندازی سنسور رطوبت DHT 11/22

                سلام.
                قبل از بخش define باید پایه ای که سنسور به اون وصل شده رو معرفی کنید، به صورت زیر:
                در ضمن نیازی به دستکاری define نیست، شما فقط باید پورت رو معرفی کنی.
                کد:
                #define DHT22_PIN     PINB.3
                #define DHT22_DDR     DDRB.3
                #define DHT22_PORT     PORTB.3
                
                #define DHT22_INPUT_MODE  DHT22_DDR=0;
                #define DHT22_OUTPUT_MODE DHT22_DDR=1;
                #define DHT22_LOW     DHT22_PORT=0;
                #define DHT22_HIGH     DHT22_PORT=1;
                #define DHT22_READ     DHT22_PIN
                بعدشم قبل از دستور
                کد:
                 #include <delay.h>
                دستور
                کد:
                 #define xtal 16000000
                رو بنویسید.
                حتما باید کار کنه. کاملا تست شدس.
                به صورت زیر:
                کد:
                #include <mega8.h>
                #define xtal 16000000
                #include <delay.h>
                #include "dht22.h"
                یک مورد دیگه اینکه این تابع علاوه بر اینکه متغییر های دما و رطوبت رو مقدار دهی میکنه، یک مقدار بازگشتی هم داره، اگه این مقدار 1 باشه یعنی به درستی با سنسور ارتباط برقرار کرده و جواب هم گرفته. اگر هم که صفر بود یعنی پاسخ دریافتی نشده.
                من یک برنامه برای تست این سنسور نوشتم که از آی سی Atmega8 استفاده می کنه و فرکانس کاریشم 8 مگا هست.
                کد:
                #include <mega8.h>
                #define xtal 8000000
                #include <delay.h>
                #include <stdlib.h>
                #include <alcd.h>
                
                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                #define DHT22_PIN     PINB.3
                #define DHT22_DDR     DDRB.3
                #define DHT22_PORT     PORTB.3
                
                #define DHT22_INPUT_MODE  DHT22_DDR=0;
                #define DHT22_OUTPUT_MODE DHT22_DDR=1;
                #define DHT22_LOW     DHT22_PORT=0;
                #define DHT22_HIGH     DHT22_PORT=1;
                #define DHT22_READ     DHT22_PIN
                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                #define DHT_BUS_HUNG 0
                #define DHT22_DATA_BIT_COUNT 41
                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                int dht22_read(float *temperature, float *humidity);
                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                void main(void)
                {
                float temperature,humidity;
                char word[5];
                lcd_init(16);
                lcd_putsf("  DHT22 TEST  ");
                delay_ms(3000);
                while (1)
                   {
                   temperature=0;
                   humidity=0;
                   
                   if(dht22_read(&temperature,&humidity) == 0)
                    {
                    lcd_clear();
                    lcd_putsf(" DHT22 ERROR ");
                    }
                   else
                    {
                    lcd_clear();
                    ftoa(temperature,1,word);
                    lcd_putsf("TEMP: ");
                    lcd_puts(word);
                    
                    ftoa(humidity,1,word);
                    lcd_putsf("HUMI: ");
                    lcd_puts(word);
                    }
                   
                   delay_ms(1000);
                   }
                }
                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                int dht22_read(float *temperature, float *humidity)
                {
                // uint8_t bitmask = _bitmask;
                //volatile uint8_t *reg asm("r30") = _baseReg;
                int Count, i;
                unsigned char bitTimes[DHT22_DATA_BIT_COUNT];
                int Humidity;
                int Temperature;
                unsigned char checkSum, csPart1, csPart2, csPart3, csPart4;
                
                Humidity = 0;
                Temperature = 0;
                checkSum = 0;
                  
                //return currentTime;
                for(i = 0; i < DHT22_DATA_BIT_COUNT; i++)
                  {
                  bitTimes[i] = 0;
                  }
                
                // Pin needs to start HIGH, wait until it is HIGH with a timeout
                //cli();
                DHT22_INPUT_MODE
                //sei();
                Count = 0;
                
                do
                 {
                 if(Count > 125)
                  {
                  return DHT_BUS_HUNG;
                  }
                 Count++;
                 delay_us(2);
                 }while(!DHT22_READ);
                  
                // Send the activate pulse
                //cli();
                DHT22_LOW
                DHT22_OUTPUT_MODE // Output Low
                //sei();
                delay_us(1100); // 1.1 ms
                //cli();
                DHT22_INPUT_MODE  // Switch back to input so pin can float
                //sei();
                // Find the start of the ACK Pulse
                Count = 0;
                
                do
                 {
                 if(Count > 25) //(Spec is 20 to 40 us, 25*2 == 50 us)
                  {
                  return DHT_BUS_HUNG;
                  }
                  Count++;
                  delay_us(2);
                 } while(!DHT22_READ);
                 
                // Find the end of the ACK Pulse
                  
                Count = 0;
                do
                 {
                 if(Count > 50) //(Spec is 80 us, 50*2 == 100 us)
                  {
                  return DHT_BUS_HUNG;
                  }
                  Count++;
                  delay_us(2);
                 }while(DHT22_READ);
                 
                // Read the 40 bit data stream
                for(i = 0; i < DHT22_DATA_BIT_COUNT; i++)
                  {
                  // Find the start of the sync pulse
                  Count = 0;
                  do
                  {
                  if(Count > 35) //(Spec is 50 us, 35*2 == 70 us)
                   {
                   return DHT_BUS_HUNG;
                   }
                  Count++;
                  delay_us(2);
                  } while(!DHT22_READ);
                
                  // Measure the width of the data pulse
                  Count = 0;
                  do
                   {
                   if(Count > 50) //(Spec is 80 us, 50*2 == 100 us)
                    {
                    return DHT_BUS_HUNG;
                    }
                    Count++;
                    delay_us(2);
                   }while(DHT22_READ);
                  bitTimes[i] = Count;
                  }
                
                // Now bitTimes have the number of retries (us *2)
                // that were needed to find the end of each data bit
                // Spec: 0 is 26 to 28 us
                // Spec: 1 is 70 us
                // bitTimes[x] <= 11 is a 0
                // bitTimes[x] > 11 is a 1
                // Note: the bits are offset by one from the data sheet, not sure why
                for(i = 0; i < 16; i++)
                  {
                  if(bitTimes[i + 1] > 11)
                   {
                   Humidity |= (1 << (15 - i));
                   }
                  }
                
                for(i = 0; i < 16; i++)
                  {
                  if(bitTimes[i + 17] > 11)
                   {
                   Temperature |= (1 << (15 - i));
                   }
                  }
                  
                for(i = 0; i < 8; i++)
                  {
                  if(bitTimes[i + 33] > 11)
                   {
                   checkSum |= (1 << (7 - i));
                   }
                  }
                
                *humidity = ((float)(Humidity & 0x7FFF)) / 10.0;
                  
                if(Temperature & 0x8000)
                 {
                 // Below zero, non standard way of encoding negative numbers!
                 Temperature &= 0x7FFF;
                 *temperature = ((float)Temperature / 10.0) * -1.0;
                 }
                 else
                 {
                 *temperature = (float)Temperature / 10.0;
                 }
                
                csPart1 = Humidity >> 8;
                csPart2 = Humidity & 0xFF;
                csPart3 = Temperature >> 8;
                csPart4 = Temperature & 0xFF;
                  
                if(checkSum == ((csPart1 + csPart2 + csPart3 + csPart4) & 0xFF))
                 {
                 //*humidity = 10;
                 //return DHT_ERROR_NONE;
                 return 1;
                 }
                
                //*humidity = 20;
                //return DHT_ERROR_CHECKSUM;
                
                return 0;
                }
                تو را دانش و دين نمايد درست در رستگاري ببايدت جست
                وگر دل نخواهي كه باشي نژند نخواهي كه دائم بوي مستمند
                به گفتار پيغمبرت راه جوي دل از تيرگي ها بدين آب شوي

                دیدگاه


                  #9
                  پاسخ : راه اندازی سنسور رطوبت DHT 11/22

                  سلام
                  دستون درد نکنه
                  من تو برنامه define ها رو گذاشته بودم فقط #define xtal 16000000 رو نذاشته بودم ببخشید میشه بگین حکمت چیه؟!

                  دیدگاه


                    #10
                    پاسخ : راه اندازی سنسور رطوبت DHT 11/22

                    نوشته اصلی توسط J.Esmaili92
                    سلام
                    دستون درد نکنه
                    من تو برنامه define ها رو گذاشته بودم فقط #define xtal 16000000 رو نذاشته بودم ببخشید میشه بگین حکمت چیه؟!
                    سلام.
                    خواهش میکنم. وظیفس.
                    حکمت اینه که نوشتن این دستور از خطاهای احتمالی دستور delay جلوگیری میکنه، و در واقع معیاری برای مشخص کردن طول حلقه در دستور delay هست.
                    میدونین که برای تغییر بعضی از قوانین تو زبان C ( مثل: فرکانس کاری، پورت های lcd، ارتباط یک سیمه یا ... ) باید یا فایل پروژه رو دوباره درست کنین یا از آیکن مربوط به این تنظیمات ( اسمش یادم نیست ) استفاده کنین. تو پروژه هایی که زیادی این قوانینو تغییر میدیم معمولا برای اینکه مطمئن بشیم که دستور delay به درستی کار میکنه از define xtal استفاده می کنیم. :read:
                    تو را دانش و دين نمايد درست در رستگاري ببايدت جست
                    وگر دل نخواهي كه باشي نژند نخواهي كه دائم بوي مستمند
                    به گفتار پيغمبرت راه جوي دل از تيرگي ها بدين آب شوي

                    دیدگاه


                      #11
                      پاسخ : راه اندازی سنسور رطوبت DHT 11/22

                      آقا فقط با بسکام نوشته میشه کدهاش؟
                      با c نمیشه راه اندازیش کرد؟؟

                      دیدگاه


                        #12
                        پاسخ : راه اندازی سنسور رطوبت DHT 11/22

                        نوشته اصلی توسط kamranmmf
                        آقا فقط با بسکام نوشته میشه کدهاش؟
                        با c نمیشه راه اندازیش کرد؟؟
                        بله با c هم هست .درنت سرچ کنید
                        یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

                        دیدگاه


                          #13
                          پاسخ : راه اندازی سنسور رطوبت DHT 11/22

                          نوشته اصلی توسط اقای دکتر
                          بله با c هم هست .درنت سرچ کنید
                          سلام
                          ممنون از راهنماییتون
                          ولی من چیزی پیدا نکردم!
                          میشه لطف کنین و بگین کدوم سایت میذاره؟واسه پروژه دانشگاه میخوام

                          دیدگاه


                            #14
                            پاسخ : راه اندازی سنسور رطوبت DHT 11/22

                            نوشته اصلی توسط kamranmmf
                            سلام
                            ممنون از راهنماییتون
                            ولی من چیزی پیدا نکردم!
                            میشه لطف کنین و بگین کدوم سایت میذاره؟واسه پروژه دانشگاه میخوام
                            سلام دوست عزیز
                            یه پروژه برات میذارم که با کدویژن هست. خودم تست کردم جواب میده.
                            میکروش مگا32 هست و پایه دیتای سنسور به پورت B0 وصل بشود (در فایل DHT22.h قابل تغییر هست)
                            موفق باشید
                            http://s5.picofile.com/file/81317861...vsion.rar.html

                            دیدگاه


                              #15
                              پاسخ : راه اندازی سنسور رطوبت DHT 11/22

                              باسلام
                              میشه لطفا یه هدر برا DHT11 بزارید؟
                              خیلی ممنون میشم... :redface:
                              1 در دنیا 100 در آخرت (درس و مشق فعالیتمو تو انجمن کم کرده)
                              من آنچه شرط بلاغست با تو میآ‌گویم. تو خواه از سخنم پند گیر و خواه ملال. سعدی
                              !Electronic On! Programming On
                              هوشمندانه سوال بپرسیم!
                              http://ir02x6.persiangig.com/logo/eca/tanks_01.png

                              دیدگاه

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