Pages: [1]   Go Down
Print
Author Topic: เรียนถามพี่พี่หน่อยครับเรื่อง SHT15 ครับ  (Read 8058 times)
0 Members and 2 Guests are viewing this topic.
TOPBBOY2006
Jr. Member
**
Offline Offline

Posts: 14


« on: September 03, 2009, 03:57:44 PM »

คือว่า ตอนนี้ผมทำโปรเจทเรื่อง SHT15 ครับ โดยวงจร มีการอ่านค่าจาก SHT15 จำนวน 6 ช่องครับ ผมใช้ขา SCK ของ SHT15 ทั้ง 6 ขา
ต่อรวมกันเข้าที่ขา E0 ของ MCU เบอร์ 18F45K20 แล้วให้ขา SDA แต่ละขา ต่อเข้า A0 - A5 ครับ ส่วน LCD ต่อเข้า portD ครับ และมี
ส่วนที่เชื่อมต่อกับ Hyper ผ่านทางขา RC6-RC7 ครับ

ตอนนี้สามารถอ่านอุณหภูมิ ทั้ง 6 ช่องไปแสดงที่ Hyper ได้แล้วครับ 

ปัญหาที่เกิดขึ้น คือว่า เมื่อผม ต้องการแสดง อุณหภูมิ ที่ LCD ครับ ปรากฏว่า อาการมันเหมือน SHT15 ไม่ทำงาน จากปกติที่เคยแสดงอุณภูมิ
ที่ Hyper เป็น 31.66 องศา มันกลับแสดง อุณหภูมิ เป็น 615.12 องศา และSHT15 มันไม่ตอบสนองต่ออุณหภูมิครับ
ลักษณะเหมือนกับว่า ถ้ามีการแสดงอุณภูมิที่ LCD เมื่อรัย SHT15 จะไม่ทำงานทันที่ ไม่ว่าจะเอาฟังก์ชั่น LCD ไปวางส่วนไหนของโปรแกรม
มันก้อไม่ทำงานแล้ว ผมเลยงง ว่า มันเป็น bug ของเจ้าตัว CCs หรือป่าว

พี่ๆ คนไหนพอรู้วิธี แก้มั้งครับครับ


โค้ดโปรแกรมค่อนข้างยาวครับเป็นพันบรรทัด ผมเลยเอาบางส่วนที่สำคัญให้ดูครับ เป็นฟังก์ชั่นที่ใช้อานค่าครับ

//============================================================================//
// Function : read_Temp_Humdity()                                             //
//============================================================================//
void read_Temp_Humdity(void)
{

      ///////////////////////////////////
      // delay >11ms before next command
      ///////////////////////////////////
      delay_ms(12);
     

      ////////////////////////////////////////////////////////////////////
      // Read Temperature && relative Humidity for channel 0            //
      ////////////////////////////////////////////////////////////////////
      SHTStart_CH0();                                                   //@1 start transmission
      SHTWrite_CH0(MEASURE_TEMP);                                       //@2 measure temperature   
      lValue_temp = SHTRead_CH0();                                      //
      fTemp_Averange[0] = (D1+(D2*lValue_temp));                        // temperature calculation
      delay_ms(12);                                                     // delay 11ms before next command
      SHTSoftReset_CH0();                                               //
                                                                        //
      SHTStart_CH0();                                                   // start transmission   
      SHTWrite_CH0(MEASURE_HUMI);                                       // measure relative humidity
      lValue_rh = SHTRead_CH0();                                        //
      fRh_lin = (C1+(C2*lValue_rh)+(C3*lValue_rh*lValue_rh));           // relative humidity calculation
      fRh_Averang[0] = (((fTemp_true-25)*(T1+(T2*lValue_rh)))+fRh_lin); //                   
      ////////////////////////////////////////////////////////////////////
     
     
      ////////////////////////////////////////////////////////////////////
      // Read Temperature && relative Humidity for channel 1            //
      ////////////////////////////////////////////////////////////////////
      SHTStart_CH1();                                                   //@1 start transmission
      SHTWrite_CH1(MEASURE_TEMP);                                       //@2 measure temperature   
      lValue_temp = SHTRead_CH1();                                      //
      fTemp_Averange[1] = (D1+(D2*lValue_temp));                        // temperature calculation
      delay_ms(12);                                                     // delay 11ms before next command
      SHTSoftReset_CH1();                                               //
                                                                        //
      SHTStart_CH1();                                                   // start transmission   
      SHTWrite_CH1(MEASURE_HUMI);                                       // measure relative humidity
      lValue_rh = SHTRead_CH1();                                        //
      fRh_lin = (C1+(C2*lValue_rh)+(C3*lValue_rh*lValue_rh));           // relative humidity calculation
      fRh_Averang[1] = (((fTemp_true-25)*(T1+(T2*lValue_rh)))+fRh_lin); //                                                                                                                               
      ////////////////////////////////////////////////////////////////////
     
     
      ////////////////////////////////////////////////////////////////////
      // Read Temperature && relative Humidity for channel 2            //
      ////////////////////////////////////////////////////////////////////
      SHTStart_CH2();                                                   //@1 start transmission
      SHTWrite_CH2(MEASURE_TEMP);                                       //@2 measure temperature   
      lValue_temp = SHTRead_CH2();                                      //
      fTemp_Averange[2] = (D1+(D2*lValue_temp));                        // temperature calculation
      delay_ms(12);                                                     // delay 11ms before next command
      SHTSoftReset_CH2();                                               //
                                                                        //
      SHTStart_CH2();                                                   // start transmission   
      SHTWrite_CH2(MEASURE_HUMI);                                       // measure relative humidity
      lValue_rh = SHTRead_CH2();                                        //
      fRh_lin = (C1+(C2*lValue_rh)+(C3*lValue_rh*lValue_rh));           // relative humidity calculation
      fRh_Averang[2] = (((fTemp_true-25)*(T1+(T2*lValue_rh)))+fRh_lin); //                                                                                                                     
      ////////////////////////////////////////////////////////////////////
     
     
      ////////////////////////////////////////////////////////////////////
      // Read Temperature && relative Humidity for channel 3            //
      ////////////////////////////////////////////////////////////////////
      SHTStart_CH3();                                                   //@1 start transmission
      SHTWrite_CH3(MEASURE_TEMP);                                       //@2 measure temperature   
      lValue_temp = SHTRead_CH3();                                      //
      fTemp_Averange[3] = (D1+(D2*lValue_temp));                        // temperature calculation
      delay_ms(12);                                                     // delay 11ms before next command
      SHTSoftReset_CH3();                                               //
                                                                        //
      SHTStart_CH3();                                                   // start transmission   
      SHTWrite_CH3(MEASURE_HUMI);                                       // measure relative humidity
      lValue_rh = SHTRead_CH3();                                        //
      fRh_lin = (C1+(C2*lValue_rh)+(C3*lValue_rh*lValue_rh));           // relative humidity calculation
      fRh_Averang[3] = (((fTemp_true-25)*(T1+(T2*lValue_rh)))+fRh_lin); //                                                                                                                                                                             //
      ////////////////////////////////////////////////////////////////////
     
 
      ////////////////////////////////////////////////////////////////////
      // Read Temperature && relative Humidity for channel 4            //
      ////////////////////////////////////////////////////////////////////
      SHTStart_CH4();                                                   //@1 start transmission
      SHTWrite_CH4(MEASURE_TEMP);                                       //@2 measure temperature   
      lValue_temp = SHTRead_CH4();                                      //
      fTemp_Averange[4] = (D1+(D2*lValue_temp));                        // temperature calculation
      delay_ms(12);                                                     // delay 11ms before next command
      SHTSoftReset_CH4();                                               //
                                                                        //
      SHTStart_CH4();                                                   // start transmission   
      SHTWrite_CH4(MEASURE_HUMI);                                       // measure relative humidity
      lValue_rh = SHTRead_CH4();                                        //
      fRh_lin = (C1+(C2*lValue_rh)+(C3*lValue_rh*lValue_rh));           // relative humidity calculation
      fRh_Averang[4] = (((fTemp_true-25)*(T1+(T2*lValue_rh)))+fRh_lin); //                                                                                                         
      ////////////////////////////////////////////////////////////////////
     
     
      ////////////////////////////////////////////////////////////////////
      // Read Temperature && relative Humidity for channel 5            //
      ////////////////////////////////////////////////////////////////////                                                         
      SHTStart_CH5();                                                   //@1 start transmission
      SHTWrite_CH5(MEASURE_TEMP);                                       //@2 measure temperature   
      lValue_temp = SHTRead_CH5();                                      //
      fTemp_Averange[5] = (D1+(D2*lValue_temp));                        // temperature calculation
      delay_ms(12);                                                     // delay 11ms before next command
      SHTSoftReset_CH5();                                               //
                                                                        //
      SHTStart_CH5();                                                   // start transmission   
      SHTWrite_CH5(MEASURE_HUMI);                                       // measure relative humidity
      lValue_rh = SHTRead_CH5();                                        //
      fRh_lin = (C1+(C2*lValue_rh)+(C3*lValue_rh*lValue_rh));           // relative humidity calculation
      fRh_Averang[5] = (((fTemp_true-25)*(T1+(T2*lValue_rh)))+fRh_lin); //                                                                                                                       
      ////////////////////////////////////////////////////////////////////
     
      num_Sensor = 6;
     
      for(i=0;i<6;i++)
         {
         if(SHT15 == Disable)
            {
            num_sensor --;
            fTemp_Averange = 0;
            fRh_Averang    = 0;
            }
         }
         
      //////////////////////////////////////////////////////////////////////////
      //       Averange Temperatur && Averange Humidity Calculation           //
      //    fTemp_true : Averange Temperatur                                  //
      //    fRh_true   : Averange Humidity                                    //
      //////////////////////////////////////////////////////////////////////////
      fTemp_true = (fTemp_Averange[0]+fTemp_Averange[1]+fTemp_Averange[2]+fTemp_Averange[3]+fTemp_Averange[4]+fTemp_Averange[5])/num_Sensor;
      fRh_true   = (fRh_Averang[0]+fRh_Averang[1]+fRh_Averang[2]+fRh_Averang[3]+fRh_Averang[4]+fRh_Averang[5])/num_Sensor;
     
      //lcd_putc('o');
      // printf(lcd_putc,"\f T = %d",num);
     
      printf("\f***********************************************\r\n");
      printf("*      Temperature && Relative Humidity       *\r\n");
      printf("***********************************************\r\n");
      printf("*  CH   *  Temperature  *  Relative Humidity  *\r\n");
      printf("***********************************************\r\n");
     
      if(SHT15[0] == Enable)
      printf("*   0   *     %3.2f C   *       %3.2f%%       *\r\n",fTemp_Averange[0],fRh_Averang[0]);
      else
      printf("*   0   *        -      *          -          *\r\n");
     
           
      if(SHT15[1] == Enable)
      printf("*   1   *     %3.2f C   *       %3.2f%%       *\r\n",fTemp_Averange[1],fRh_Averang[1]);
      else
      printf("*   1   *        -      *          -          *\r\n");
     
     
      if(SHT15[2] == Enable)
      printf("*   2   *     %3.2f C   *       %3.2f%%       *\r\n",fTemp_Averange[2],fRh_Averang[2]);
      else
      printf("*   2   *        -      *          -          *\r\n");
     
     
      if(SHT15[3] == Enable)
      printf("*   3   *     %3.2f C   *       %3.2f%%       *\r\n",fTemp_Averange[3],fRh_Averang[3]);
      else
      printf("*   3   *        -      *          -          *\r\n");
     
     
      if(SHT15[4] == Enable)
      printf("*   4   *     %3.2f C   *       %3.2f%%       *\r\n",fTemp_Averange[4],fRh_Averang[4]);
      else
      printf("*   4   *        -      *          -          *\r\n");
     
     
      if(SHT15[5] == Enable)
      printf("*   5   *     %3.2f C   *       %3.2f%%       *\r\n",fTemp_Averange[5],fRh_Averang[5]);
      else
      printf("*   5   *        -      *          -          *\r\n");
     
      printf("***********************************************\r\n");
      printf("* Average *   %3.2f C   *       %3.2f%%       *\r\n",fTemp_true,fRh_true);
      printf("***********************************************\r\n");   
}
Logged
ToToNGe
มาใหม่
*
Offline Offline

Posts: 3


Email
« Reply #1 on: September 08, 2010, 02:07:59 AM »

ขอโค้ด
Logged
Pages: [1]   Go Up
Print
 
Jump to: