X-Git-Url: http://git.smho.de/?a=blobdiff_plain;f=DS18B20_VOC_DS2438_SHT%2FDS18B20_DS2438.c;h=f097198149734ba3d3f2f175ea263f83e4df914f;hb=22b81b6c288ca56f58d064627c310e437f9453a4;hp=3e1aafc465797ac7af501bde4b1798aaa47570bb;hpb=a6a04f58e4afd20f206fdf4a8a7b3ce4062f1b67;p=owSlave2.git diff --git a/DS18B20_VOC_DS2438_SHT/DS18B20_DS2438.c b/DS18B20_VOC_DS2438_SHT/DS18B20_DS2438.c index 3e1aafc..f097198 100644 --- a/DS18B20_VOC_DS2438_SHT/DS18B20_DS2438.c +++ b/DS18B20_VOC_DS2438_SHT/DS18B20_DS2438.c @@ -1,5 +1,4 @@ - -// Copyright (c) 2015, Tobias Mueller tm(at)tm3d.de +// Copyright (c) 2017, Tobias Mueller tm(at)tm3d.de // All rights reserved. // // Redistribution and use in source and binary forms, with or without @@ -31,6 +30,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +//!!!!!Max Program size 7551 Byte + #define F_CPU 8000000UL #include #include @@ -50,8 +51,8 @@ extern void EXTERN_SLEEP(void); volatile uint8_t owid1[8]={0x28, 0xA3, 0xD9, 0x84, 0x00, 0x16, 0x05, 0x18};/**/ volatile uint8_t owid2[8]={0x26, 0xA3, 0xD9, 0x84, 0x00, 0x16, 0x05, 0x67};/**/ -volatile uint8_t config_info1[16]={0x08,0x01, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; -volatile uint8_t config_info2[16]={0x01,0x06, 0x05,0x08, 0x04,0x07, 0x07,0x08, 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; +volatile uint8_t config_info1[26]={0x08,0x01, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x02,17,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; +volatile uint8_t config_info2[26]={0x01,0x06, 0x05,0x08, 0x04,0x07, 11,0x08, 0x02,0x07,0x00,0x07,17,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; #if (owid>128) #error "Variable not correct" @@ -132,7 +133,7 @@ typedef union { uint8_t page5[8]; //41 uint8_t page6[8]; //49 uint8_t page7[8]; //57 - //uint8_t crc; //65 + #endif }; } pack2_t; @@ -158,6 +159,7 @@ uint8_t max_adr=0; uint16_t weekmaxarr[8]; +//Kompensieren der Abhänigkeit von RS/RO von Temperatur und Luftfeuchte inline double interp(double t, double h) { double h2; double t2; @@ -171,6 +173,27 @@ uint16_t mr; uint8_t startup=10; double ip; + +int testSW(void) { + uint8_t r; + DDRB&=~(1<pack2.r_week_max) pack2.r_week_max=weekmaxarr[i]; } if (pack2.tol_d>7) { @@ -297,7 +324,8 @@ int main(void){ } else { pack2.R0=pack2.r_day_max; } - R0=pack2.R0/100.0-0.5*(pack2.R0/100-R0); + //R0=//R0-0.5*(pack2.R0/100-R0); + R0=R0-(R0-pack2.R0/100.0)*0.5 ; pack2.R0=R0*100; writeEEPROM(EEPROM_R0,pack2.R0); writeEEPROM(EEPROM_R0d,pack2.r_day_max); //Maximum des Tages @@ -314,21 +342,31 @@ int main(void){ humidityRH = SHT2x_CalcRH(sRH); ip=interp(temperatureC,humidityRH); pack2.ip=ip*1000; - humidityRH=calibr_hum(temperatureC,-0.45,humidityRH)*10.0; + humidityRH=calibr_hum(temperatureC,-0.2,humidityRH)*10.0; //humidityRH=humidityRH*10.0; - temperatureC =temperatureC *10.0-4.5; - hhum=(1.0546-0.000216*temperatureC)*(humidityRH); - am2302_hum=0.318*hhum +76.0; - am2302_temp=temperatureC*25.6; + temperatureC =temperatureC *10.0-2; + + + if (testSW()) { + am2302_hum= humidityRH*10.0; + am2302_temp=temperatureC*25.6; + //am2302_temp=am2302_temp-45; + config_info2[5]=8; + }else{ + hhum=(1.0546-0.000216*temperatureC)*(humidityRH); + //am2302_hum=0.318*hhum +76.0; + am2302_hum=0.31*hhum +80; + am2302_temp=temperatureC*25.6; + config_info2[5]=7; + } //PORTB&=~(1<pack2.r_day_max) { pack2.r_day_max=l*100; } - } - l=l/R0; - l=log(1/l); + } else if (l500) { - // l=100; - // } wdcounter=0; }