แนะนำวงจรที่ใช้วัดอุณหภูมิ และวงจรวัดควมชื้นในอากาศหน่อยครับ

กลุ่มวงจอีเล็กทรอนิกส์ทั่วๆไป

Moderator: gang

pj_monk

แนะนำวงจรที่ใช้วัดอุณหภูมิ และวงจรวัดควมชื้นในอากาศหน่อยครับ

โพสต์โดย pj_monk » 09/08/2007 9:30 pm

ช่วยแนะนำวงจรที่ใช้วัดอุณหภูมิ และวงจรวัดควมชื้นในอากาศ หน่อคราบบบบ :(

บุคคลทั่วไป

โพสต์โดย บุคคลทั่วไป » 12/08/2007 9:41 am

เคยเห็นแต่วงจรวัดอุปกรณ์ จ้า

ลองดูจ้า

Simple LM335 Thermometer
http://www.elecfree.com/electronic/simple-lm335-thermometer/

รูปภาพ

cc

ใช้หัววัด SHT15 ซิครับ

โพสต์โดย cc » 12/08/2007 6:54 pm

ใช้หัววัด SHT15 ซิครับ วัดได้ทั้งอุณหภูมิและความชื้นในตัวเดียว ส่วนถ้าอยากได้โค้ดทิ้งเมล์เอาไว้ครับแล้วผมจะส่งไปให้

pj_monk

โพสต์โดย pj_monk » 13/08/2007 11:43 pm

นี่เมวผม pj_monk@hotmail.com ช่วยแนะนำวงจรที่วัดอุณหภูมิและความชื้น หรือ ไอซีก้อได้ ย่านวัดค่อนข้างละเอียดนิดนึงอะครับ มีกี่เบอร์กี่วงจร เอาหมดเลย

ขอบคุณล่วงหน้าคราบบบบบบ

ภาพประจำตัวสมาชิก
Calman
Seinor
Seinor
โพสต์: 99
ลงทะเบียนเมื่อ: 01/01/1970 7:00 am
ที่อยู่: อยู่ในซอกลึกลับ....ที่ถูกลืม...หลังบริษัท
ติดต่อ:

โพสต์โดย Calman » 14/08/2007 12:24 pm

SHT-XX
โค๊ตของท่าน Hulahula
http://www.c51c51.com/index.php?lay=show&ac=article&Id=489803
หรือ
http://www.emesystems.com/OL2sht1x.htm

รูปภาพ รูปภาพ รูปภาพ

โค๊ตของท่าน Hulahula

โค้ด: เลือกทั้งหมด

#include <REG51F.H>
#include <intrins.h>   // Library for _nop_ function 
#define MEASURE_TEMP 0x03  // Macro of reading Temperature command
#define MEASURE_HUMI 0x05  // Macro of reading Humidity command

#define TEMP 0      // Macro to select Temperature reading
#define HUMI 1       // Macro to select Humidity reading 

#define C1 -4.0    // Constant C1 for Humidity calculation (12-bit resolution)
#define C2 0.0405    // Constant C2 for Humidity calculation (12-bit resolution)
#define C3 -0.0000028    // Constant C3 for Humidity calculation (12-bit resolution)

#define T1 -0.01    // Constant T1 for Temperature calculation (14-bit resolution)
#define T2 0.00008   // Constant T2 for Temperature calculation (14-bit resolution)

sbit  DATA =  P1^0;    // Configuration DATA pin
sbit  SCK  =  P1^1;   // Configuration SCK pin

/*********************** Function for delay a few time ***********************/
void wait()
{
 char x;       // Variable for counter
 for(x=0;x<8;x++)      // Loop for delay a few time
  _nop_();             // Delay 1 machine cycle
}

void delay(int tick)
{
 int i,j;   // For keep counter loop
 for(i=0;i<tick;i++)  // Loop delay
 for(j=0;j<250;j++);
}
/*********************** SHT11 writing command function *****************/
void sht11_write(unsigned char value)
{
  unsigned char i;    // Variable for counter
  for(i=0x80;i>0;i/=2)  // Loop to shift bit for compare data to sending
  {
    if(i & value)     // Data bit AND operation logic "1"? 
     DATA = 1;      // Send logic "1" to DATA pin     
     else
      DATA = 0;     // Send logic "0" to DATA pin                   
     SCK = 1;          // Generate clock to SCK pin                 
     wait();         // Wait a few time
     SCK = 0;
  }
  DATA = 1;             // Release DATA pin
  SCK = 1;              // Generate clock to SCK pin
  wait();       // Wait a few time             
  SCK = 0;
}

/*********************** SHT11 reading command function *******************/
char sht11_read()
{
  unsigned char i,value;
  DATA = 1;              // Release DATA pin
  for(i=0x80;i>0;i/=2)     // Loop to shift bit for compare data to sending
  {
    SCK = 1;               // Generate clock to SCK pin
    if(DATA)
     value = value | i;   // Store data bit 
    SCK = 0;       
  }
  SCK = 1;                 // Generate clock to SCK pin
  wait();           // Wait a few time
  SCK = 0;         
  DATA = 1;                // Release DATA pin
  return(value);           // Return data reading from SHT11
}

/*********************** SHT11 initial transmittion start function ***********/
void transmission_start(void)

   DATA = 1;      // Set DATA pin   
   SCK = 0;          // Clear SCK pin           
   wait();           // Wait a few time
   SCK = 1;      // Set SCK pin
   wait();           // Wait a few time
   DATA = 0;     // Clear DATA pin
   wait();      // Wait a few time
   SCK = 0;       // Clear SCK pin 
   wait();      // Wait a few time
   SCK = 1;      // Set SCK pin
   wait();      // Wait a few time
   DATA = 1;     // Set DATA pin   
   wait();      // Wait a few time
   SCK = 0;      // Clear SCK pin   
}

/*********************** SHT11 connection reset sequence function **************/
void connection_reset()

  unsigned char i;    // Variable for counter
  DATA = 1;      // First time for DATA pin 
  SCK = 0;             // First time for SCK pin
  for(i=0;i<9;i++)     // Loop for toggle SCK 9 times
  {
    SCK = 1;     // Generate clock to SCK pin
    wait();     // Wait a few time
     SCK = 0;
  }
  transmission_start();    // Transmission start
}

/************* SHT11 readout data function (2 byte) **************/
int sht11_read_measure(unsigned char measure_sel)
{
  int value;       // Variable for storing readout data
 
  transmission_start();      // Start connection
  if(measure_sel==TEMP)      // Read Temperature?
  {                     
     sht11_write(MEASURE_TEMP); // Send Read Temperature command to SHT11
     delay(270);      // Delay for Temperature reading (14-bit resolution)
  }
  else if(measure_sel==HUMI)  // Read Humidity?
  {                        // Send command to SHT11
     sht11_write(MEASURE_HUMI);
     delay(80);      // Delay for Humidity reading (12-bit resolution)
  }
  value  = sht11_read();      // Read MSB byte
  value<<=8;        // Shift bit 8 times before store next byte 
  value = value + sht11_read();  // Read LSB byte
  return(value);      // Return readout value from SHT11
}

/************* Function for convert data from sht11 to float value ***********/
float read_HT_float(unsigned char measure_sel)
{
  float  so_rh,  // Variable for storing Humidity readout value
     so_t,   // Variable for storing Temperature readout value
     rh_linear,  // Variable for RH linear(Calculate by equation of SHT11 datasheet)
     rh_true,  // Variable for Humidity(Calculate by equation of SHT11 datasheet)
     temp;   // Variable for Temperature(Calculate by equation of SHT11 datasheet) 
 
  so_rh = sht11_read_measure(HUMI);  // Store Humidity readout value to so_rh 
  so_t = sht11_read_measure(TEMP);     // Store Temperature readout value to so_t
   
  temp = so_t*0.01 - 40;                // Calculate temperature
  rh_linear = C1 + C2*so_rh + C3*so_rh*so_rh ; // Calculate RH linear
  rh_true = (temp-25)*(T1+T2*so_rh)+rh_linear;  // Calculate humidity

 if(measure_sel==TEMP)      // Read temperature?
  return(temp);           // Return temperature (float type)
 else if(measure_sel==HUMI)   // Read humidity?
  return(rh_true);    // Return humidity (float type)
}

/********************************* Main Program ******************************/
void main()
{
   int  h,     // Variable for storing Humidity (integer tyep)
     t,     // Variable for storing Temperature (integer tyep)
     old_h,   // Variable for storing previous Humidity 
     old_t; // Variable for storing previous Temperature 
// lcd_init();  // Initial module LCD
// lcd_puts(0x80,"Temp:     C");  // Show temperature value
  // lcd_puts(0xC0,"Humi:     %");  // Show humidity value
  while(1)   // Infinite loop
   {
     connection_reset();    // Start connection
     t = (int)read_HT_float(TEMP); // Read temperature (integer format) 
  h = (int)read_HT_float(HUMI); // Read humidity (integer format)
   
    if(old_t != t)        // Compare previous and new Temperature data equal?
    {
//   lcd_puts(0x86,"    ");   // Clear previous temperature display
//   inttolcd(0x86,t);      // Display new temperature value
      }
    if(old_h != h)      // Compare previous and new humidity data equal?
    {     
 //  lcd_puts(0xC6,"    ");  // Clear previous humidity display
 //  inttolcd(0xC6,h);      // Display new humidity value
    }
    old_t = t;  // Keep temperature value for next comparison
     old_h = h;  // Keep humidity value for next comparison
   }
.......................คิดค้น.....เพื่อค้นพบ......................
---------------------------------------------------------------------------
.....................Calibration Laboratory....................


ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 1 และ บุคคลทั่วไป 0 ท่าน

cron