اطلاعیه

Collapse
No announcement yet.

راه اندازی sht10

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

    راه اندازی sht10

    سلام دویستان
    همین الان داستم سنسور دما و رطوبت sht10 رو راه اندازی میکردم.جواب گرفتم....اومدم دوباره میکرو رو پروگرم کردم دیگه جواب نمیده !
    قبل از این که این سنسور رو به مدارم وصل کنم رگلاتورم دماش عادی بود ولی سنسور که وصل کردم یکم داغ کرد .واسه چی ؟ :cry2:
    حالا که کار نمیکنه هم داغ نمیکنه...ولی چنبار روشنش کردم قشنگ دما و رطوبت رو نشون داد...تو اتاق ، زیر کولر ... درس هم کار کرد ...
    سوخته ؟!! :angry: :cry2: :cry:

    #2
    پاسخ : راه اندازی sht10

    الانم که روشن میکنی داغ میکنه؟ :cry2:

    دیدگاه


      #3
      پاسخ : راه اندازی sht10

      خوب با مولتی متر جریان این سنسور رو بگیرین ببینید طبیعیه؟
      من SHT11 رو یه دفعه وصل کردم ولی حواسم نبود که یکی از پایه ها وصل نیست. وقتی درستش کردم دیگه کار نکرد این سنسور. خیلی برام عجیب بود.

      دیدگاه


        #4
        پاسخ : راه اندازی sht10

        نوشته اصلی توسط amirna3r
        خوب با مولتی متر جریان این سنسور رو بگیرین ببینید طبیعیه؟
        من SHT11 رو یه دفعه وصل کردم ولی حواسم نبود که یکی از پایه ها وصل نیست. وقتی درستش کردم دیگه کار نکرد این سنسور. خیلی برام عجیب بود.
        ملتی مترم خرابه :angry:

        وای الان زدم دود کرد سنسور!!!!!!!!!!!!
        برنامه sht10 با 11 فرق داره ؟
        آخه من اصلا کاری نکردم....فقط میکرو دوباره پروگرم کردم !!!!
        مگه چی شد ؟! 100درصد الان سوخت :cry2:
        رگلاتور داغ میشد وقتی سنسور رو وارد مدار کردم...الان که دیگه داغ نمیشه ...بله... سوخته دگ ! :angry:

        دیدگاه


          #5
          پاسخ : راه اندازی sht10

          الان یکی دیگه بخرم؟!
          نکه یکی دیگه بگیرم بسوزه...میخوام از این سنسور تو یه پروژه استفاده کنم.این تست بود اینجوری شد!

          نکنه باید جتما توی کاور باشه این سنسور؟ انقد حساسه؟

          دیدگاه


            #6
            پاسخ : راه اندازی sht10

            چند خریدی :cry2: :cry2: خدا بیامرزه :cry: شاید ولتاژزیادی دادی احتمالا 3.3 ولته

            دیدگاه


              #7
              پاسخ : راه اندازی sht10

              نوشته اصلی توسط reza javahery
              چند خریدی :cry2: :cry2: خدا بیامرزه :cry: شاید ولتاژزیادی دادی احتمالا 3.3 ولته
              50 تومن ناقابل ...
              2.4 تا 5.5 ولته ...
              داشت کار میکرد ! چند بارم روشن خاموش کردم... یه دفعه اینجوری شد ...
              کسی تجربه مار با این سنسورو نداره ؟
              به چیزی حساسه؟

              دیدگاه


                #8
                پاسخ : راه اندازی sht10

                نوشته اصلی توسط کیوان قاسمی
                50 تومن ناقابل ...
                2.4 تا 5.5 ولته ...
                داشت کار میکرد ! چند بارم روشن خاموش کردم... یه دفعه اینجوری شد ...
                کسی تجربه مار با این سنسورو نداره ؟
                به چیزی حساسه؟
                سلام کیوان جان،
                اینجوری متصلش کردی دیگه:



                نوشته اصلی توسط کیوان قاسمی
                برنامه sht10 با 11 فرق داره ؟
                آخه من اصلا کاری نکردم....فقط میکرو دوباره پروگرم کردم !!!!
                مگه چی شد ؟! 100درصد الان سوخت :cry2:
                رگلاتور داغ میشد وقتی سنسور رو وارد مدار کردم...الان که دیگه داغ نمیشه ...بله... سوخته دگ ! :angry:
                بعید می دونم فرقی بکنه.
                رگولاتورت چیه؟

                دیدگاه


                  #9
                  پاسخ : راه اندازی sht10

                  نوشته اصلی توسط rozeh
                  سلام کیوان جان،
                  اینجوری متصلش کردی دیگه:


                  بعید می دونم فرقی بکنه.
                  رگولاتورت چیه؟
                  سلام مهندس
                  آره همینجوری...
                  باز درس شد ولی الان دوباره کار نمیکنه ...بازی در آوردیه...وایه احتیاط lf33 وصل کردم الان.اون موقع 7805 بود...تو بعضی مواقع رگلاتورم داغ میکنه...نمیدونم چرا...
                  البته من دارم رو برد بورد تست میکنم...روش یه rs485 با دوتا اسلو بستم....الانم sht رو بهش وصل کردم.شما میدونی چرا اینجوری میشه؟sht رو هم به یه 4تا سیم به طول 20 سانت وصل کردم که از مدار هم دور باشه.تو pdf اش گفته بود که باید دور باشه.
                  تعجبم ازش بخار بلند شد اون موقع ! بو کرد...ولی دوباره کر کرد چند بار ....الان نمیکنه باز :angry:

                  دیدگاه


                    #10
                    پاسخ : راه اندازی sht10

                    نه 3.3 نیست. باید با 5 ولت کار کنه. شاید سیم اتصال نداره با برد بورد. اینکه دود کرده رو نمیدونم. تا حالا همچین موردی رو ندیدم. سنسورش که حساسه. وقتی میخواستیم لحیم کنیم بعضیا میگفتن با پنس بگیرین که دست نزنین بهش.
                    ولی شما سیم ها رو روی برد چک کنید. شاید اتصال نداره. وقتی سیم ها رو برعکس میزدیم داغ میکرد نه همینجوری.

                    دیدگاه


                      #11
                      پاسخ : راه اندازی sht10

                      نوشته اصلی توسط amirna3r
                      نه 3.3 نیست. باید با 5 ولت کار کنه. شاید سیم اتصال نداره با برد بورد. اینکه دود کرده رو نمیدونم. تا حالا همچین موردی رو ندیدم. سنسورش که حساسه. وقتی میخواستیم لحیم کنیم بعضیا میگفتن با پنس بگیرین که دست نزنین بهش.
                      ولی شما سیم ها رو روی برد چک کنید. شاید اتصال نداره. وقتی سیم ها رو برعکس میزدیم داغ میکرد نه همینجوری.
                      مرسی
                      مهندس سنسور داغ نمیکنه،رگلاتور داغ میکنه گاهی اوقات...نمیدونم چرا.توی موارد دیگه هم پیش اومده واسم که گاهی داغ میکرده...
                      تو دیتاشیت نوشته 2.4 - 5.5 ... پس دودش چی بود ؟ من به 5 وصل کنم ؟
                      شما از قاب واسه این سنسور استفاده میکردین ؟
                      میشه از تجربیاتت با این سنسور بگی ، و چطور استفاده میکردین ؟

                      دیدگاه


                        #12
                        پاسخ : راه اندازی sht10

                        یه برد طراحی شده بود که سنسور روی اون قرار میگرفت و توسط سیم حدود 30 سانتی متر به برد اصلی وصل میشد. راستش من این مورد دود رو تا حالا ندیدم.
                        اینکه رگولاتور داغ میکنه دلیلش احتمالا جریان کشی بیش از حد معمول سنسور هست. شما یک مولتی متر رو برای تغذیه سنسور بذارین ببینید جریان عبوری چقدر هست؟ چرا بعضی مواقع جریان عبوری بالا میره؟! و احتمالا وقتی جریان بالا میره شما افت ولتاژ دارین؟!

                        دیدگاه


                          #13
                          پاسخ : راه اندازی sht10

                          نوشته اصلی توسط amirna3r
                          یه برد طراحی شده بود که سنسور روی اون قرار میگرفت و توسط سیم حدود 30 سانتی متر به برد اصلی وصل میشد. راستش من این مورد دود رو تا حالا ندیدم.
                          اینکه رگولاتور داغ میکنه دلیلش احتمالا جریان کشی بیش از حد معمول سنسور هست. شما یک مولتی متر رو برای تغذیه سنسور بذارین ببینید جریان عبوری چقدر هست؟ چرا بعضی مواقع جریان عبوری بالا میره؟! و احتمالا وقتی جریان بالا میره شما افت ولتاژ دارین؟!
                          الان که ملتی متر دم دسم نیس...ولی سنسورم باز جواب نمیداد...این سنسورو باید داخل یه پوشش بزارم ؟

                          دیدگاه


                            #14
                            پاسخ : راه اندازی sht10

                            احتمال داره از برنامه باشه ؟
                            برنامه من اینه :
                            کد:
                            #include <stdio.h>
                            #include <delay.h>
                            #include <math.h>
                            #include <stdlib.h>
                            #include <lcd.h>
                            
                            typedef union
                            { unsigned int i; float f;} value;
                            
                            
                            enum {TEMP,HUMI};
                            
                            
                            #define SHT_DATA_OUT DDRC.0
                            #define SHT_DATA_IN PINC.0
                            #define SHT_SCK PORTC.1
                            #define noACK 0
                            #define ACK 1
                            //adr command r/w
                            #define STATUS_REG_W 0x06 //000 0011 0
                            #define STATUS_REG_R 0x07 //000 0011 1
                            #define MEASURE_TEMP 0x03 //000 0001 1
                            #define MEASURE_HUMI 0x05 //000 0010 1
                            #define RESET 0x1e //000 1111 0
                            
                            const float C1=-4.0; // for 12 Bit
                            const float C2=+0.0405; // for 12 Bit
                            const float C3=-0.0000028; // for 12 Bit
                            const float T1=+0.01; // for 14 Bit @ 5V
                            const float T2=+0.00008; // for 14 Bit @ 5V
                            
                            //SHT Functions
                            char SHT_WriteByte(unsigned char valuep);
                            char SHT_ReadByte(unsigned char ack);
                            void s_transstart(void);
                            void s_connectionreset(void);
                            char s_softreset(void);
                            char s_measure(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode);
                            void calc_sth11(float *p_humidity ,float *p_temperature);
                            float calc_dewpoint(float h,float t);
                            
                            unsigned char key=16,uch_TempTime_Number=0;
                            int intTemp1=0,intTime1=0,intTemp2=0,intTime2=0,intTemp3=0,intTime3=0;
                            int intTemp4=0,intTime4=0,intTemp5=0,intTime5=0,intTemp6=0,intTime6=0;
                            
                            char *sht11_temp(void);
                            char *sht11_humy(void);
                            void Sht11_Init(void);
                            
                            char *sht11_temp()
                            {
                            char str_hum_temp[10];
                            
                            value humi_val, temp_val;
                            unsigned char error, checksum, status;
                            float dew_point;
                            error=0;
                            error+=s_measure((unsigned char*) &humi_val.i,&checksum,HUMI);
                            error+=s_measure((unsigned char*) &temp_val.i,&checksum,TEMP);
                            if(error!=0) s_connectionreset();
                            else{
                            humi_val.f=(float)humi_val.i; //converts integer to float
                            temp_val.f=(float)temp_val.i; //converts integer to float
                            calc_sth11(&humi_val.f,&temp_val.f); //calculate humidity, temperature
                            dew_point=calc_dewpoint(humi_val.f,temp_val.f); //calculate dew point
                            }  
                            
                            
                            //temp_val.f+=10;
                            ftoa(temp_val.f,2,str_hum_temp);
                            return   str_hum_temp ;
                            }  
                            
                            char *sht11_humy()
                            { 
                            char str_hum_temp[10];
                            
                            value humi_val, temp_val;
                            unsigned char error, checksum, status;
                            float dew_point;
                            error=0;
                            error+=s_measure((unsigned char*) &humi_val.i,&checksum,HUMI);
                            error+=s_measure((unsigned char*) &temp_val.i,&checksum,TEMP);
                            if(error!=0) s_connectionreset();
                            else{
                            humi_val.f=(float)humi_val.i; //converts integer to float
                            temp_val.f=(float)temp_val.i; //converts integer to float
                            calc_sth11(&humi_val.f,&temp_val.f); //calculate humidity, temperature
                            dew_point=calc_dewpoint(humi_val.f,temp_val.f); //calculate dew point
                            }  
                            
                            
                            ftoa(humi_val.f,2,str_hum_temp);
                            return   str_hum_temp;
                            }
                            
                            
                            
                            void Sht11_Init()
                            {
                            // Setup Sensibus Pins
                            PORTC.1 = 0; // ClockLow
                            DDRC.1 = 1; // SCK is an output
                            PORTC.0 = 0; // Always Zero
                            s_softreset();
                            
                            }
                            
                            
                            //----------------------------------------------------------------------------------
                            // tulis byte ke SHT
                            //----------------------------------------------------------------------------------
                            char SHT_WriteByte(unsigned char valuep)
                            {
                            
                            // Declare your global variables here
                            unsigned char i,error=0;
                            for (i=0x80;i>0;i/=2)
                            {
                            if (i & valuep) SHT_DATA_OUT=0;
                            else SHT_DATA_OUT=1;
                            
                            SHT_SCK=1;
                            delay_us(5); //pulswith approx. 5 us
                            SHT_SCK=0;
                            
                            }
                            SHT_DATA_OUT=0; //release DATA-line
                            SHT_SCK=1; //clk #9 for ack
                            error=SHT_DATA_IN; //check ack (DATA will be pulled down by SHT11)
                            SHT_SCK=0;
                            
                            return error; //error=1 in case of no acknowledge
                            }
                            
                            //----------------------------------------------------------------------------------
                            // baca byte dari SHT, dan berikan ACK
                            //----------------------------------------------------------------------------------
                            char SHT_ReadByte(unsigned char ack)
                            {
                            unsigned char i,val=0;
                            
                            SHT_DATA_OUT=0; //release DATA-line
                            for (i=0x80;i>0;i/=2)
                            {
                            SHT_SCK=1;
                            if (SHT_DATA_IN) val=(val | i); //read bit
                            SHT_SCK=0;
                            }
                            SHT_DATA_OUT=ack; //in case of "ack==1" pull down DATA-Line
                            
                            SHT_SCK=1; //clk #9 for ack
                            delay_us(5); //pulswith approx. 5 us
                            SHT_SCK=0;
                            
                            SHT_DATA_OUT=0; //release DATA-line
                            return val;
                            }
                            
                            //----------------------------------------------------------------------------------
                            // kondisi start
                            // _____ ________
                            // DATA: |_______|
                            // ___ ___
                            // SCK : ___| |___| |______
                            //----------------------------------------------------------------------------------
                            void s_transstart(void)
                            {
                            SHT_DATA_OUT=0;
                            SHT_SCK=0; //Initial state
                            delay_us(1);
                            SHT_SCK=1;
                            delay_us(1);
                            SHT_DATA_OUT=1;
                            delay_us(1);
                            SHT_SCK=0;
                            delay_us(5);
                            SHT_SCK=1;
                            delay_us(1);
                            SHT_DATA_OUT=0;
                            delay_us(1);
                            SHT_SCK=0;
                            }
                            
                            //----------------------------------------------------------------------------------
                            // reset koneksi, 9 clock diikuti dengan kondisi start
                            // _____________________________________________________ ________
                            // DATA: |_______|
                            // _ _ _ _ _ _ _ _ _ ___ ___
                            // SCK : __| |__| |__| |__| |__| |__| |__| |__| |__| |______| |___| |______
                            //----------------------------------------------------------------------------------
                            
                            void s_connectionreset(void)
                            {
                            unsigned char i;
                            SHT_DATA_OUT=0; SHT_SCK=0; //Initial state
                            for(i=0;i<9;i++) //9 SCK cycles
                            {
                            SHT_SCK=1;
                            delay_us(1);
                            SHT_SCK=0;
                            }
                            s_transstart(); //transmission start
                            }
                            
                            //----------------------------------------------------------------------------------
                            // reset SHT-nya !!
                            //----------------------------------------------------------------------------------
                            
                            char s_softreset(void)
                            {
                            unsigned char error=0;
                            s_connectionreset(); //reset communication
                            error+=SHT_WriteByte(RESET); //send RESET-command to sensor
                            return error; //error=1 in case of no response form the sensor
                            }
                            
                            //----------------------------------------------------------------------------------
                            // pengukuran data
                            //----------------------------------------------------------------------------------
                            char s_measure(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode)
                            {
                            unsigned error=0;
                            long int i;
                            
                            s_transstart(); //transmission start
                            switch(mode){ //send command to sensor
                            case TEMP : error+=SHT_WriteByte(MEASURE_TEMP); break;
                            case HUMI : error+=SHT_WriteByte(MEASURE_HUMI); break;
                            default : break;
                            }
                            for (i=0;i<131070;i++) if(SHT_DATA_IN==0) break; //wait until sensor has finished the measurement
                            if(SHT_DATA_IN) error+=1; // or timeout (~2 sec.) is reached
                            *(p_value+1) =SHT_ReadByte(ACK); //read the first byte (MSB)
                            *(p_value) =SHT_ReadByte(ACK); //read the second byte (LSB)
                            *p_checksum =SHT_ReadByte(noACK); //read checksum
                            return error;
                            }
                            
                            //----------------------------------------------------------------------------------------
                            // hitung temperature [°C] and humidity [%RH]
                            // input : humi [Ticks] (12 bit)
                            // temp [Ticks] (14 bit)
                            // output: humi [%RH]
                            // temp [°C]
                            //----------------------------------------------------------------------------------------
                            
                            void calc_sth11(float *p_humidity ,float *p_temperature)
                            {
                            
                            //float rh=*p_humidity; // rh: Humidity [Ticks] 12 Bit
                            //float t=*p_temperature; // t: Temperature [Ticks] 14 Bit
                            float rh_lin; // rh_lin: Humidity linear
                            float rh_true; // rh_true: Temperature compensated humidity
                            float t_C; // t_C : Temperature [°C]
                            
                            t_C=*p_temperature*0.01 - 40; //calc. temperature from ticks to [°C]
                            rh_lin=C3*(*p_humidity)*(*p_humidity) + C2*(*p_humidity) + C1; //calc. humidity from ticks to [%RH]
                            rh_true=(t_C-25)*(T1+T2*(*p_humidity))+rh_lin; //calc. temperature compensated humidity [%RH]
                            if(rh_true>100)rh_true=100; //cut if the value is outside of
                            if(rh_true<0.1)rh_true=0.1; //the physical possible range
                            
                            *p_temperature=t_C; //return temperature [°C]
                            *p_humidity=rh_true; //return humidity[%RH]
                            }
                            
                            //--------------------------------------------------------------------
                            // calculates dew point
                            // input: humidity [%RH], temperature [°C]
                            // output: dew point [°C]
                            //--------------------------------------------------------------------
                            
                            float calc_dewpoint(float h,float t)
                            {
                            float logEx,dew_point;
                            logEx=0.66077+7.5*t/(237.3+t)+(log10(h)-2);
                            dew_point = (logEx - 0.66077)*237.3/(0.66077+7.5-logEx);
                            return dew_point;
                            }
                            با sht11_humy() و sht11_temp() دما و رطوبت رو میگیرم

                            دیدگاه


                              #15
                              پاسخ : راه اندازی sht10

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

                              دیدگاه

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