/*************************************************************************** 3 Temp inlezing 2 Druk inlezing formule druk -> temp freon = (-0.0012*Druk^2) + (0.6198*Druk) -18.915 ***************************************************************************/ #include "C:\MentorProjects\Nico_3xTemp_2xDruk\PIC_CODE\USB versie\Nico_USB_Druk_Temp.h" #include // Includes all USB code and interrupts, as well as the CDC API #include #include #include #include int16 adc_value_temp; float temptemp1, temptemp2, temptemp3, tempfreon,tempfreonold , tempfreon1, tempfreon2, tempbackup1, tempbackup2, tempbackup3; int16 adc_value_pressure; float temp, temptemp; float pressure, pressureold, pressure1, pressure2; float voltage; int i = 0, string_ready =0; #define BUFFER_SIZE 25 BYTE string[BUFFER_SIZE]; BYTE next_in = 0; BYTE next_out = 0; float lees_adc_temperatuur(int channel) { adc_value_temp = 0; temp = 0; temptemp = 0; for(i=0;i<50;i++) { set_adc_channel(channel);// Channel for the next read. delay_us(100); adc_value_temp = read_adc(); voltage = (((adc_value_temp * 5.0 ) / 1023.0)); temp= ((voltage - 1.375) / 0.0225)-2; temptemp = temptemp + temp; } return(temptemp); } float lees_adc_pressure(int channel) { adc_value_pressure = 0; pressure = 0; tempfreon = 0; pressureold = 0; tempfreonold = 0; for(i=0;i<10;i++) { set_adc_channel(channel);// Channel for the next read. delay_us(100); adc_value_pressure = read_adc(); if(adc_value_pressure < 49) { pressure = 0; tempfreon = -27; }else { pressure = (((0.0448 * adc_value_pressure) - 2.18673) * 14.5); // druk in PSI tempfreon =(7E-06*(pressure*pressure*pressure)) - (0.0037*(pressure*pressure)) + (0.848*pressure) - 22.45; } tempfreonold = tempfreonold + tempfreon; pressureold = pressureold + pressure; } } void main() { setup_adc_ports(ALL_ANALOG); setup_adc(ADC_CLOCK_DIV_32); setup_spi(FALSE); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); input(PIN_C2); input(PIN_C3); usb_cdc_init(); usb_init(); lcd_init(); delay_ms(50); lcd_init(); delay_ms(50); lcd_putc("*****Kriss_Tall*****"); delay_ms(255); delay_ms(255); delay_ms(255); delay_ms(255); delay_ms(255); delay_ms(255); delay_ms(255); delay_ms(255); lcd_init(); delay_ms(50); lcd_init(); delay_ms(50); while(1) { while(!usb_cdc_connected()) { temptemp1 = lees_adc_temperatuur(0); temptemp2 = lees_adc_temperatuur(1); temptemp3 = lees_adc_temperatuur(4); tempfreon1 = lees_adc_pressure(3); tempfreonold = (tempfreonold / 10.0); tempfreon1 = tempfreonold; pressureold = (pressure / 10.0); pressure1 = pressureold; tempfreon2= lees_adc_pressure(2); tempfreonold = (tempfreonold / 10.0); tempfreon2 = tempfreonold; pressureold = (pressure / 10.0); pressure2 = pressureold; lcd_gotoxy(1,1); printf(lcd_putc, "T1=%3.0f",(temptemp1/50)); temptemp1 = 0; DELAY_MS(255); lcd_gotoxy(8,1); printf(lcd_putc, "T2=%3.0f",(temptemp3/50)); temptemp3 = 0; DELAY_MS(255); lcd_gotoxy(15,1); printf(lcd_putc, "T3=%3.0f",(temptemp2/50)); temptemp2 = 0; DELAY_MS(255); lcd_gotoxy(1,2); printf(lcd_putc, "P1=%3.1fPsi",pressure2); lcd_gotoxy(12,2); printf(lcd_putc, "P2=%3.1fPsi",pressure1); DELAY_MS(255); DELAY_MS(255); DELAY_MS(255); DELAY_MS(255); lcd_gotoxy(1,2); printf(lcd_putc, "P1=%3.1fC ",tempfreon2); lcd_gotoxy(12,2); printf(lcd_putc, "P2=%3.1fC ",tempfreon1); DELAY_MS(255); DELAY_MS(255); } usb_task(); if (usb_enumerated()) { string[next_in]=usb_cdc_getc(); next_in=(next_in+1); if(string[0] == 'Q') { printf(usb_cdc_putc,"%3.2f\n", tempbackup1); } if(string[0] == 'W') { printf(usb_cdc_putc,"%3.2f\n", tempbackup2); } if(string[0] == 'E') { printf(usb_cdc_putc,"%3.2f\n", tempbackup3); } if(string[0] == 'R') { printf(usb_cdc_putc,"%3.2f\n" pressure1); } if(string[0] == 'T') { printf(usb_cdc_putc,"%3.2f\n", pressure2); } if(string[0] == 'Y') { printf(usb_cdc_putc,"%3.2f\n", tempfreon1); } if(string[0] == 'U') { printf(usb_cdc_putc,"%3.2f\n", tempfreon2); } next_in = 0; if(next_in > 10)next_in = 0; } } }