Projet s5 - sensors lib
Dependencies: XBeeLib mbed-rtos mbed
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 }
Generated on Wed Jul 20 2022 22:26:41 by
1.7.2
