C,,PIC,,Nem ?

Başlatan Cetinal, 02 Ocak 2007, 13:14:27

Cetinal

pic c ile nem inasıl kontrol edicem hangi sensörü kullanarak
yapacağım bilen varsa yardım edebilirmi

Analyzer

Selam,

SHT11 diye aratırsan bir çok sonuç çıkacaktır. Ayrıca kütüphanesi www.ccsinfo.com adresindeki forumda mevcut.

Analyzer
Üşeniyorum, öyleyse yarın!

Cetinal

arkadaşlar sht11 hakkında bilgi sahibi oldum ama
kusura bakmayın driver dosyasını bulamadım
yardım ediniz litfen
teşekkürler

XX_CİHAN_XX

Alıntı yapılan: "Analyzer"Selam,

SHT11 diye aratırsan bir çok sonuç çıkacaktır. Ayrıca kütüphanesi www.ccsinfo.com adresindeki forumda mevcut.

Analyzer
Hocam sht11 i bi ara cok aradım ama istanbulda bulamamıştım.Nerden bulabilirim?
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

Analyzer

Selam,

Ben zannedersem Farnell'den almıştım hatırlamıyorum 4-5 sene önceydi. Hatta fazla olanları bir ara forum vasıtası ile satmıştım. İstanbul'da olacağını zannetmiyorum.
SHTxx serisi için driver : (CCS forumlarından alıntıdır)

/////////////////////////////////////////////////////////////////////////////// 
//                                                                           // 
// Driver file for SHT75 Temperature & Humidity Sensor                       // 
//                                                                           // 
// ***** To initialise SHT75 sensor upon power up *****                      // 
//                                                                           // 
// Function : sht_init()                                                     // 
// Return   : none                                                           // 
//                                                                           // 
//                                                                           // 
// ***** To measure and caluculate SHT75 temp & real RH *****                // 
//                                                                           // 
// Function : sht_rd (temp, truehumid)                                       // 
// Return   : temperature & true humidity in float values                    // 
//                                                                           // 
/////////////////////////////////////////////////////////////////////////////// 

#define sht_data_pin   PIN_D3 
#define sht_clk_pin    PIN_C4 


//***** Function to alert SHT75 ***** 

void comstart (void) 
{ 
 output_float(sht_data_pin);  //data high 
 output_bit(sht_clk_pin, 0);  //clk low 
 delay_us(1); 
 output_bit(sht_clk_pin, 1);  //clk high 
 delay_us(1); 
 output_bit(sht_data_pin, 0); //data low 
 delay_us(1); 
 output_bit(sht_clk_pin, 0);  //clk low 
 delay_us(2); 
 output_bit(sht_clk_pin, 1);  //clk high 
 delay_us(1); 
 output_float(sht_data_pin);  //data high 
 delay_us(1); 
 output_bit(sht_clk_pin, 0);  //clk low 
} 


//***** Function to write data to SHT75 ***** 

int1 comwrite (int8 iobyte) 
{ 
 int8 i, mask = 0x80; 
 int1 ack; 

 //Shift out command 
 delay_us(4); 
 for(i=0; i<8; i++) 
  { 
   output_bit(sht_clk_pin, 0);                          //clk low 
   if((iobyte & mask) > 0) output_float(sht_data_pin);  //data high if MSB high 
   else output_bit(sht_data_pin, 0);                    //data low if MSB low 
   delay_us(1); 
   output_bit(sht_clk_pin, 1);                          //clk high 
   delay_us(1); 
   mask = mask >> 1;                                    //shift to next bit 
  } 

 //Shift in ack 
 output_bit(sht_clk_pin, 0);  //clk low 
 delay_us(1); 
 ack = input(sht_data_pin);   //get ack bit 
 output_bit(sht_clk_pin, 1);  //clk high 
 delay_us(1); 
 output_bit(sht_clk_pin, 0);  //clk low 
 return(ack); 
} 


//***** Function to read data from SHT75 ***** 

int16 comread (void) 
{ 
 int8 i; 
 int16 iobyte = 0; 
 const int16 mask0 = 0x0000; 
 const int16 mask1 = 0x0001; 

 //shift in MSB data 
 for(i=0; i<8; i++) 
  { 
   iobyte = iobyte << 1; 
   output_bit(sht_clk_pin, 1);                //clk high 
   delay_us(1); 
   if (input(sht_data_pin)) iobyte |= mask1;  //shift in data bit 
   else iobyte |= mask0; 
   output_bit(sht_clk_pin, 0);                //clk low 
   delay_us(1); 
  } 

 //send ack 0 bit 
 output_bit(sht_data_pin, 0); //data low 
 delay_us(1); 
 output_bit(sht_clk_pin, 1);  //clk high 
 delay_us(2); 
 output_bit(sht_clk_pin, 0);  //clk low 
 delay_us(1); 
 output_float(sht_data_pin);  //data high 

 //shift in LSB data 
 for(i=0; i<8; i++) 
  { 
   iobyte = iobyte << 1; 
   output_bit(sht_clk_pin, 1);                //clk high 
   delay_us(1); 
   if (input(sht_data_pin)) iobyte |= mask1;  //shift in data bit 
   else iobyte |= mask0; 
   output_bit(sht_clk_pin, 0);                //clk low 
   delay_us(1); 
  } 

 //send ack 1 bit 
 output_float(sht_data_pin);  //data high 
 delay_us(1); 
 output_bit(sht_clk_pin, 1);  //clk high 
 delay_us(2); 
 output_bit(sht_clk_pin, 0);  //clk low 

 return(iobyte); 
} 


//***** Function to wait for SHT75 reading ***** 

void comwait (void) 
{ 
 int16 sht_delay; 

 output_float(sht_data_pin);                     //data high 
 output_bit(sht_clk_pin, 0);                     //clk low 
 delay_us(1); 
 for(sht_delay=0; sht_delay<30000; sht_delay++)  // wait for max 300ms 
  { 
   if (!input(sht_data_pin)) break;              //if sht_data_pin low, SHT75 ready 
   delay_us(10); 
  } 
} 


//***** Function to reset SHT75 communication ***** 

void comreset (void) 
{ 
 int8 i; 

 output_float(sht_data_pin);    //data high 
 output_bit(sht_clk_pin, 0);    //clk low 
 delay_us(2); 
 for(i=0; i<9; i++) 
  { 
   output_bit(sht_clk_pin, 1);  //toggle clk 9 times 
   delay_us(2); 
   output_bit(sht_clk_pin, 0); 
   delay_us(2); 
 } 
 comstart(); 
} 


//***** Function to soft reset SHT75 ***** 

void sht_soft_reset (void) 
{ 
 comreset();           //SHT75 communication reset 
 comwrite(0x1e);       //send SHT75 reset command 
 delay_ms(15);         //pause 15 ms 
} 


//***** Function to measure SHT75 temperature ***** 

int16 measuretemp (void) 
{ 
 int1 ack; 
 int16 iobyte; 

 comstart();             //alert SHT75 
 ack = comwrite(0x03);   //send measure temp command and read ack status 
 if(ack == 1) return; 
 comwait();              //wait for SHT75 measurement to complete 
 iobyte = comread();     //read SHT75 temp data 
 return(iobyte); 
} 


//***** Function to measure SHT75 RH ***** 

int16 measurehumid (void) 
{ 
 int1 ack; 
 int16 iobyte; 

 comstart();            //alert SHT75 
 ack = comwrite(0x05);  //send measure RH command and read ack status 
 if(ack == 1) return; 
 comwait();             //wait for SHT75 measurement to complete 
 iobyte = comread();    //read SHT75 temp data 
 return(iobyte); 
} 


//***** Function to calculate SHT75 temp & RH ***** 

void calculate_data (int16 temp, int16 humid, float & tc, float & rhlin, float & rhtrue) 
{ 
 float truehumid1, rh; 

 //calculate temperature reading 
 tc = ((float) temp * 0.01) - 40.0; 

 //calculate Real RH reading 
 rh = (float) humid; 

 rhlin = (rh * 0.0405) - (rh * rh * 0.0000028) - 4.0; 

 //calculate True RH reading 
 rhtrue = ((tc - 25.0) * (0.01 + (0.00008 * rh))) + rhlin; 
} 


//***** Function to measure & calculate SHT75 temp & RH ***** 

void sht_rd (float & temp, float & truehumid) 
{ 
 int16 restemp, reshumid; 
 float realhumid; 
 restemp = 0; truehumid = 0; 

 restemp = measuretemp();    //measure temp 
 reshumid = measurehumid();  //measure RH 
calculate_data (restemp, reshumid, temp, realhumid, truehumid);  //calculate temp & RH 
} 


//***** Function to initialise SHT75 on power-up ***** 

void sht_init (void) 
{ 
 comreset();    //reset SHT75 
 delay_ms(20);  //delay for power-up 
} 



The Main Program 
Code: 
#include <16F877A.h> 
#fuses HS,NOWDT,PUT,NOPROTECT,NOLVP 
#use delay(clock=20000000) 

#include<lcd.c> 
#include<sht75.c> 

void main() 
{ 
 float restemp, truehumid; 
 lcd_init(); 
 sht_init(); 

 while(1) 
 { 
  sht_rd (restemp, truehumid); 
  lcd_gotoxy(1,1); 
  printf(lcd_putc, "Temp : %3.1f %cC   ", restemp, 223); 
  printf(lcd_putc, "\nRH   : %3.1f %%   ", truehumid); 
  delay_ms(500);        //delay 500 ms between reading to prevent self heating of sensor 
 } 
}
Üşeniyorum, öyleyse yarın!

shy

İstanbul Kadıköy de Yazıcılar İşhanında deniz elektronik var...
Zemin katta bulunuyor...
Size ardımcı olacaklardır...
30ytl fiyatı var...