Projet s5 - sensors lib

Dependencies:   XBeeLib mbed-rtos mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers RTD.cpp Source File

RTD.cpp

00001 #include "RTD.h"
00002 
00003 static I2C RTD(p28,p27); // SDA / SCL
00004 static Serial pc(USBTX,USBRX);
00005 
00006 static DigitalOut led1(LED1);
00007 static DigitalOut led2(LED2);
00008 static DigitalOut led3(LED3);
00009 static DigitalOut led4(LED4);
00010 
00011 static char buf[DEFAULT_BUFFER_SIZE];
00012 static char fBuf[DEFAULT_BUFFER_SIZE];
00013 
00014 void init_RTD(){
00015     RTD.frequency(MAX_I2C_CLOCK);
00016 }
00017 
00018 void setAdresse_RTD(uint8_t addresse ){
00019     RTD.start();
00020     RTD.write(RTD_ADRESSE<<1);
00021     RTD.write('I');
00022     RTD.write('2');
00023     RTD.write('C');
00024     RTD.write(',');
00025     RTD.write(addresse);
00026     RTD.stop();
00027 }
00028 
00029 void calibrate_RTD(){ // Calibrate the RTD AC converter at 100°C
00030 
00031     RTD.start();
00032     RTD.write(RTD_ADRESSE<<1);
00033     RTD.write('C');
00034     RTD.write('a');
00035     RTD.write('l');
00036     RTD.write(',');
00037     RTD.write('c');
00038     RTD.write('l');
00039     RTD.write('e');
00040     RTD.write('a');
00041     RTD.write('r');
00042     RTD.stop();
00043     
00044     wait_ms(300);
00045     
00046     RTD.start();
00047     RTD.write(RTD_ADRESSE<<1);
00048     RTD.write('C');
00049     RTD.write('a');
00050     RTD.write('l');
00051     RTD.write(',');
00052     RTD.write('2');
00053     RTD.write('1');
00054     RTD.write('.');
00055     RTD.write('8');
00056     RTD.stop();
00057     
00058     wait_ms(1000);
00059     
00060     getCalibrationStatus_RTD();
00061 }
00062 
00063 void getCalibrationStatus_RTD(){
00064     RTD.start();
00065     RTD.write(RTD_ADRESSE<<1);
00066     RTD.write('C');
00067     RTD.write('a');
00068     RTD.write('l');
00069     RTD.write(',');
00070     RTD.write('?');
00071     RTD.stop();
00072     
00073     wait_ms(300);
00074     RTD.write(0x00);
00075     RTD.read(RTD_ADRESSE<<1,buf,DEFAULT_BUFFER_SIZE);
00076     
00077     for(int i=0;i<DEFAULT_BUFFER_SIZE;i++){
00078         fBuf[i]=buf[i];
00079     }
00080     for(int i=0;i<DEFAULT_BUFFER_SIZE;i++){
00081         pc.putc(buf[i]);
00082     }
00083     pc.putc('\n');
00084 }
00085 
00086 void find_RTD(){
00087     RTD.start();
00088     RTD.write(RTD_ADRESSE<<1);
00089     RTD.write('F');
00090     RTD.write('i');
00091     RTD.write('n');
00092     RTD.write('d');
00093     RTD.stop();
00094 }
00095 
00096 void status_RTD(){
00097     
00098     RTD.start();
00099     RTD.write(RTD_ADRESSE<<1);
00100     RTD.write('S');
00101     RTD.write('t');
00102     RTD.write('a');
00103     RTD.write('t');
00104     RTD.write('u');
00105     RTD.write('s');
00106     RTD.stop();
00107     
00108     wait_ms(300);
00109     RTD.write(0x00);
00110     RTD.read(RTD_ADRESSE<<1,buf,DEFAULT_BUFFER_SIZE);
00111     
00112     for(int i=0;i<DEFAULT_BUFFER_SIZE;i++){
00113         pc.putc(buf[i]);
00114     }
00115     pc.putc('\n');
00116 }
00117 
00118 void sleep_RTD(){
00119     
00120     RTD.start();
00121     RTD.write(RTD_ADRESSE<<1);
00122     RTD.write('S');
00123     RTD.write('l');
00124     RTD.write('e');
00125     RTD.write('e');
00126     RTD.write('p');    
00127     RTD.stop();
00128 }
00129 
00130 void getInfo_RTD(){
00131     RTD.start();
00132     RTD.write(RTD_ADRESSE<<1);
00133     RTD.write('I');
00134     RTD.stop();
00135     
00136     wait_ms(300);
00137     RTD.write(0x00);
00138     RTD.read(RTD_ADRESSE<<1,buf,DEFAULT_BUFFER_SIZE);
00139     
00140     int i=0;
00141     while(buf[i]!=0){
00142         pc.putc(buf[i]);
00143         i++;
00144     }
00145     pc.putc('\n');
00146 }
00147 
00148 void read_RTD(){
00149     
00150     RTD.start();
00151     RTD.write(RTD_ADRESSE<<1);
00152     RTD.write('R');
00153     RTD.stop();
00154     
00155     wait_ms(600);
00156     RTD.write(0x00);
00157     RTD.read(RTD_ADRESSE<<1,buf,DEFAULT_BUFFER_SIZE);
00158     
00159     int i=0;
00160     while(buf[i]!=0){
00161         pc.putc(buf[i]);
00162         i++;
00163     }
00164     pc.putc('\n');
00165     clearBuffer_RTD();
00166 }
00167 
00168 float getRTD(){
00169     
00170     char bufTmp[DEFAULT_BUFFER_SIZE];
00171     
00172     RTD.start();
00173     RTD.write(RTD_ADRESSE<<1);
00174     RTD.write('R');
00175     RTD.stop();
00176     
00177     wait_ms(600);
00178     RTD.write(0x00);
00179     RTD.read(RTD_ADRESSE<<1,bufTmp,DEFAULT_BUFFER_SIZE);
00180     
00181     return atof(bufTmp+1);
00182 }
00183 
00184 void read_RTD(char * buffer){
00185     
00186     RTD.start();
00187     RTD.write(RTD_ADRESSE<<1);
00188     RTD.write('R'); 
00189     RTD.stop();
00190     
00191     wait_ms(600);
00192     RTD.write(0x00);
00193     RTD.read(RTD_ADRESSE<<1,buffer,DEFAULT_BUFFER_SIZE);
00194 }
00195 
00196 
00197 void clearBuffer_RTD(){
00198     for(int i=0;i<DEFAULT_BUFFER_SIZE;i++){
00199         buf[i]=0;
00200     }
00201 }