اطلاعیه

Collapse
No announcement yet.

چجوری میشه فهمید sht10سالمه؟

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

    چجوری میشه فهمید sht10سالمه؟

    سلام

    من یک هفته پیش یک دونه sht10 گرفتم و براش مدار ساختم و لحیم کردم.امشب که زدم به میکرو کار نکرد. 2تا میکروهم انتخاب کردم ولی باز نشد. ممکنه سوخته باشه؟یانه؟

    #2
    پاسخ : چجوری میشه فهمید sht10سالمه؟

    اگه از سخت افزار خیالت جمه که پایه هاش درسته وصل کردی مقاومتاش گذاشتی. پس شاید برنامت مشکل داره.
    نمونه سخت افزار و برنامش تو انجمن هست
    شمر ۱۴۰۰سال پیش مُرد؛شمر زمانت بشناس.
    [img width=400 height=100]http:///uploads/140623781981451.png[/img]
    [glow=green,2,100]یاحسین تشنه لب[/glow]

    دیدگاه


      #3
      پاسخ : چجوری میشه فهمید sht10سالمه؟

      بی زحمت یه دونه از اون نمونه هارو لینکشو میذاری
      راستی من مقاومتی نذاشتم.اجباریه؟ یعنی سوخته؟برای چیه؟

      دیدگاه


        #4
        پاسخ : چجوری میشه فهمید sht10سالمه؟

        کسی نبود؟

        دیدگاه


          #5
          پاسخ : چجوری میشه فهمید sht10سالمه؟



          کد:
          #include <mega8.h>
          // Alphanumeric LCD Module functions
          #include <alcd.h>
          #include <stdio.h>
          #include <delay.h>
          
          #define DATA PINB.0
          #define SCK PORTB.1
          #define DATAO PORTB.0
          #define DATAD DDRB.0
          #define MEASURE_TEMP 0x03 
          #define MEASURE_HUMI 0x05 
          #define RESET    0x1e 
          void sht_start(void)
          {
          DATAD = 1; // DATA is output
          
          DATAO = 1;
          SCK = 0;
          SCK = 1;
          DATAO = 0;
          SCK = 0;
          SCK = 1;
          DATAO = 1;
          SCK = 0; 
          //DATAO = 0;
          }
          //##########################################################################
          
          char sht_write(unsigned char Byte)
          { 
          unsigned char i, error = 0;
          
          DATAD = 1; // Data is an output 
          delay_us(5);
          for(i = 0x80; i > 0; i /= 2)
           {
           SCK = 0;
           if(i & Byte)
           {
            DATAO = 1;
           }
           else
           {
           DATAO = 0;
           } 
           SCK = 1;
           } 
          SCK = 0;
          DATAD = 0; // DATA is input
          SCK = 1;
          error = DATA;
          SCK = 0;
          
          return(error);
          } 
          //###################################################
          unsigned char sht_read(unsigned char ack)
          {
          unsigned char i, val = 0;
          
          DATAD = 0; // DATA is INPUT
          
          for(i = 0x80; i > 0; i /= 2)
          {
          SCK = 1;
          if(DATA)
          {
          val = val | i;
          }
          SCK = 0;
          } 
          DATAD = 1; // DATA is output
          DATAO = ! ack;
          SCK = 1;
          SCK = 0;
          
          return(val);
          }
          //########################################################
          void connection_reset(void)
          {
          unsigned char i;
          DATAD=1;
          DATAO=1;
          for (i=0;i<9;i++)
           {
           SCK=1;
           delay_us(2);
           SCK=0;
           delay_us(2);
           }
           DATAO=1;
           sht_start();
           delay_ms(100);
          }
          //####################################################
          void sht_reset()
          {
          sht_start();
          sht_write(RESET);
          
          delay_ms(100);
          }
          //#####################################################
          // Read the sensor value. Reg is register to read from
          unsigned int ReadSensor(int Reg)
          {
          unsigned char msb, lsb, crc;
          
          sht_start();
          sht_write(Reg);
          
          while(DATA);
          
          msb = sht_read(1);
          lsb = sht_read(1);
          crc = sht_read(0);
          
          return(((unsigned short) msb << 8) | (unsigned short) lsb); 
          }
          //######################################################
          float read_sensor(char humidity0temperture1)
          {
          long int income,temp;
          float out,out0,t;
          switch(humidity0temperture1)
           {
           case 0:
           income = ReadSensor(MEASURE_HUMI);
           out0=(-2.0468+(0.0367*income)+(-1.5955E-6*(income*income))); 
           temp=income;
           delay_ms(500);
           ReadSensor(MEASURE_TEMP);
           t = -40.1 + 0.01*income;
           out=(t-25)*(0.01+0.00008*temp)+out0;
           break;
           case 1:
           income = ReadSensor(MEASURE_TEMP);
           out = -40.1 + 0.01*income;
           break; 
           }
          return(out);
          }
          
          
          void main(void)
          {
          float temp=0,hum=0;
          unsigned char str[16];
          
          DDRB.1=1;
          
          lcd_init(16);
          delay_ms(100);
          sht_start();
          
          while (1)
             { 
             temp=read_sensor(1);
             hum=read_sensor(0); 
             lcd_clear();
             
             lcd_gotoxy(0,0);
              sprintf(str,"temp=%2.2f",temp);
              lcd_puts(str);
              lcd_gotoxy(0,1);
              sprintf(str,"hum=%2.2f",hum);
              lcd_puts(str);  
              sht_reset();
              delay_ms(1000);  
          
             }
          }
          شمر ۱۴۰۰سال پیش مُرد؛شمر زمانت بشناس.
          [img width=400 height=100]http:///uploads/140623781981451.png[/img]
          [glow=green,2,100]یاحسین تشنه لب[/glow]

          دیدگاه


            #6
            پاسخ : چجوری میشه فهمید sht10سالمه؟

            خیلی لطف کردی
            ولی من اصلا سی هیچی حالیم نیست

            دیدگاه


              #7
              پاسخ : چجوری میشه فهمید sht10سالمه؟

              سلام سیم که گذاشته بودم بلند بود برای همین کوتاه کردم و درست شد
              حالا رطوبت را اندازه گیری میکنه ولی دما را نه
              اینم برنامم
              کد:
              '************************************************************************
              '*  www.M32.ir                            *
              '************************************************************************                                      *
              '*  Title        : Humidity and Temperature with SMT10    *
              '*  Last Updated     : 2013/08/06                 *
              '*  Micro Contoroler   : ATMEGA32                  *
              '*  Clock frequency   : 1.000000 MHz                *
              '*  Compiler       : Bascom AVR v1.11.9.0            *
              '*  Author        : Alireza Joodi               *
              '*  Mobile        : 09112204314                *
              '*  Email        : info@M32.ir                *
              '************************************************************************
              
              $regfile = "m8def.dat"
              $crystal = 1000000
              
              Config Lcd = 16 * 2
              Config Lcdpin = Pin , Db4 = Portc.1 , Db5 = Portc.2 , Db6 = Portc.3 , Db7 = Portc.4 , E = Portb.5 , Rs = Portb.3
              Cursor Off
              Cls
              
              Dim I As Byte
              Dim Z As Single
              
              Dim Data_byte As Byte
              Dim Data_msb As Byte
              Dim Data_lsb As Byte
              Dim Data_word As Word
              Dim Crc As Byte
              
              Dim Temp As Single
              Dim Rh_liner As Single
              Dim Command As Byte
              
              Sck Alias Portb.0
              Dataout Alias Portb.1
              Datain Alias Pinb.1
              
              Config Portb.0 = Output
              Config Portb.1 = Output
              
              Config Portd.2 = Output                   'hiter
              Config Portd.4 = Output                   'fan
              Config Portd.6 = Output                   'buzzer
              
              Gosub Display_lcd_start_text
              Gosub Signal_reset : Waitms 10
              
              Do
                Command = &B00000101 : Gosub Get_sht10
                Gosub Calcula_rh_liner_12bit
              
                Command = &B00000011 : Gosub Get_sht10
                Gosub Calcula_temp_14bit
              
                Gosub Display_lcd
              
                If Temp < 37 Then
              Set Portd.2
              End If
              
              If Rh_liner < 66 Then
              Set Portd.4
              End If
              
                If Temp > 39 Then
                Reset Portd.2
                End If
              
                If Temp > 41 Then
                Set Portd.6
                End If
              
                If Rh_liner > 70 Then
                Reset Portd.4
                End If
              
                Wait 5
              Loop
              
              End
              
              '**********************************************
              Display_lcd_start_text:
                Cls :
                Locate 1 , 1 : Lcd "  Jooje Keshi"
                Locate 2 , 1 : Lcd " 0919 621 620 8"
                Wait 2 : Cls
              Return
              
              '*******************************************
              Status_register_write:
                Gosub Signal_start
                Command = &B00000110 : Shiftout Dataout , Sck , Command , 1
                Gosub Signal_ack
                Command = &B00000000 : Shiftout Dataout , Sck , Command , 1
                Gosub Signal_ack
              Return
              
              '*******************************************
              Status_register_read:
                Gosub Signal_start
                Command = &B00000111
                Shiftout Dataout , Sck , Command , 1
                Gosub Signal_ack
                Gosub Read_byte : Data_msb = Data_byte
                Gosub Signal_ack
                Gosub Read_byte : Crc = Data_byte
                Print "Status Register=" ; Data_msb
                Print "Checksum=" ; Crc
                Print
              Return
              
              '*******************************************
              Setting_default:
                Gosub Signal_start
                Command = &B00011110 : Shiftout Dataout , Sck , Command , 1
                Gosub Signal_ack
                Waitms 100
              Return
              
              '*******************************************
              Get_sht10:
                Gosub Signal_start
                Gosub Send_command
                Gosub Signal_ack
                Gosub Wait_for_data_ready
                Gosub Read_byte : Data_msb = Data_byte
                Gosub Signal_ack
                Gosub Read_byte : Data_lsb = Data_byte
                Gosub Signal_ack
                Gosub Read_byte : Crc = Data_byte
                Gosub Signal_end
                Data_msb = Data_msb And &B00111111
                Data_word = Makeint(data_lsb , Data_msb)
              Return
              
              '*******************************************
              Signal_reset:
                Config Portb.0 = Output                 ': Portc.1 = 1
                Config Portb.1 = Output                 ': Portc.0 = 1
                Reset Sck : Set Dataout : Waitus 1
                For I = 1 To 9
                 Set Sck : : Waitus 1 :
                 Reset Dataout : Waitus 1
                Next I
              Return
              
              '*******************************************
              Signal_start:
                Config Portb.0 = Output                 ': Portc.1 = 1
                Config Portb.1 = Output                 ': Portc.0 = 1
                Reset Sck : Set Dataout : Waitus 1
                Set Sck : : Waitus 1 :
                Reset Dataout : Waitus 1
                Reset Sck : Waitus 1
                Set Sck : Waitus 1
                Set Dataout : : Waitus 1
                Reset Sck : Waitus 1
                Crc = 0
              Return
              
              '*******************************************
              Send_command:
                Config Portb.0 = Output : Portb.0 = 0
                Config Portb.1 = Output : Portb.1 = 0
                Shiftout Dataout , Sck , Command , 1
              Return
              
              '*******************************************
              Wait_for_data_ready:
                Config Portb.0 = Output                 ': Portc.1 = 0
                Config Portb.1 = Input                  ': Portc.0 = 0
                Set Dataout
                For I = 1 To 255
                 If Dataout = 0 Then Exit For
                 Waitms 1
                Next
              Return
              
              '*******************************************
              Read_byte:
                Config Portb.0 = Output : Portb.0 = 0
                Config Portb.1 = Input : Portb.1 = 1
                Shiftin Datain , Sck , Data_byte , 1
              Return
              
              '*******************************************
              Signal_ack:
                Config Portb.0 = Output                 ': Portc.1 = 0
                Config Portb.1 = Output                 ': Portc.0 = 0
                Reset Dataout : Reset Sck
                Set Sck : Waitus 1
                Reset Sck
              Return
              
              '*******************************************
              Signal_end:
                Config Portb.0 = Output                 ': Portc.1 = 1
                Config Portb.1 = Output                 ': Portc.0 = 1
                Set Dataout : Waitus 1
                Set Sck : Waitus 1
                Reset Sck : Waitus 1
              Return
              
              '*******************************************
              Calcula_rh_liner_12bit:
                Rh_liner = Data_word * Data_word
                Rh_liner = Rh_liner * -0.0000015955
                Z = 0.0367 * Data_word
                Rh_liner = Rh_liner + Z
                Rh_liner = Rh_liner - 2.0468
              Return
              
              '*******************************************
              Calcula_temp_14bit:
                Temp = 0.01 * Data_word
                Temp = Temp - 40.1
              Return
              
              '*******************************************
              Display_lcd:
                Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32
                Locate 1 , 1 : Lcd "RH: " ; Fusing(rh_liner , "#.#") ; "% "
                Locate 2 , 1 : Lcd "Temp: " ; Fusing(temp , "#.#") ; Chr(0) ; "C "
              
              
              Return

              دیدگاه


                #8
                پاسخ : چجوری میشه فهمید sht10سالمه؟

                1میلیون عضو نمیتونه به من حقیر کمک کنه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ :cry2:

                دیدگاه

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