vir_paksh@yahoo.co.in
Newbie level 6

Can any body help me? both in software & hard ware changes
to read ac parameters like voltage & current. Now my program & hardware reads DC parameters fantastically but I need to read ac parameters. And I need modification to my program i.e. 1.port D have to switched to high(FF), when ADC_Read(0)>265 and ADC_Read(0)<215. 2.port D have to switched to high(FF) when ADC_Read(0) to ADC_Read(4) >265 and 3.port D must be 0 for 215<ADC_Read(0)<265. And port D must be 0 for ADC_Read(0) to ADC_Read(4) <265. Program & proteus attached.
My program is as below:
to read ac parameters like voltage & current. Now my program & hardware reads DC parameters fantastically but I need to read ac parameters. And I need modification to my program i.e. 1.port D have to switched to high(FF), when ADC_Read(0)>265 and ADC_Read(0)<215. 2.port D have to switched to high(FF) when ADC_Read(0) to ADC_Read(4) >265 and 3.port D must be 0 for 215<ADC_Read(0)<265. And port D must be 0 for ADC_Read(0) to ADC_Read(4) <265. Program & proteus attached.
My program is as below:
Code C - [expand] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 char message9[] = "VIRUPAKSHA SB"; char message10[] = "V"; char message11[] = "A"; char message12[] = "'C"; char message1[] = "IN PP:"; char message2[] = "OUT PP:"; char message3[] = "R-PH CNT:"; // char message4[] = "Y-PH CNT:"; char message5[] = "B-PH CNT:"; char message6[] = "DC VOLT:"; char message7[] = "BAT CH CNT:"; char message8[] = "HEAT:"; char *temp = "0000"; unsigned int ADC_Value; void main() { //ANSEL = 0b00000000; // RA2/AN2 is analog input ADCON0 = 0b00001000; // Analog channel select @ AN2 ADCON1 = 0b10000000; // CMCON0 = 0x07 ; // Disbale comparators TRISC = 0b00000000; // PORTC All Outputs TRISA = 0b11111111; // PORTA All Outputs, Except RA3 and RA2 UART1_Init(9600); // baud rate at 9600bps delay_ms(100); UART1_Write_Text(message9); UART1_Write('\r'); Delay_ms(2000); do { adc_value = ADC_Read(0); temp[0] = adc_value/1000 + 48; // Add 48 to get the ASCII character value temp[1] = (adc_value/100)%10 + 48; temp[2] = (adc_value/10)%10 + 48; temp[3] = adc_value%10 + 48; UART1_Write_Text(message1); UART1_Write_Text(temp); UART1_Write_Text(message10); UART1_Write('\r'); Delay_ms(2000); adc_value = ADC_Read(1); temp[0] = adc_value/1000 + 48; // Add 48 to get the ASCII character value temp[1] = (adc_value/100)%10 + 48; temp[2] = (adc_value/10)%10 + 48; temp[3] = adc_value%10 + 48; UART1_Write_Text(message2); UART1_Write_Text(temp); UART1_Write_Text(message10); UART1_Write('\r'); Delay_ms(2000); adc_value = ADC_Read(2); temp[0] = adc_value/1000 + 48; // Add 48 to get the ASCII character value temp[1] = (adc_value/100)%10 + 48; temp[2] = (adc_value/10)%10 + 48; temp[3] = adc_value%10 + 48; UART1_Write_Text(message3); UART1_Write_Text(temp); UART1_Write_Text(message11); UART1_Write('\r'); Delay_ms(2000); adc_value = ADC_Read(3); temp[0] = adc_value/1000 + 48; // Add 48 to get the ASCII character value temp[1] = (adc_value/100)%10 + 48; temp[2] = (adc_value/10)%10 + 48; temp[3] = adc_value%10 + 48; UART1_Write_Text(message4); UART1_Write_Text(temp); UART1_Write_Text(message11); UART1_Write('\r'); Delay_ms(2000); adc_value = ADC_Read(4); temp[0] = adc_value/1000 + 48; // Add 48 to get the ASCII character value temp[1] = (adc_value/100)%10 + 48; temp[2] = (adc_value/10)%10 + 48; temp[3] = adc_value%10 + 48; UART1_Write_Text(message5); UART1_Write_Text(temp); UART1_Write_Text(message11); UART1_Write('\r'); Delay_ms(2000); adc_value = ADC_Read(5); temp[0] = adc_value/1000 + 48; // Add 48 to get the ASCII character value temp[1] = (adc_value/100)%10 + 48; temp[2] = (adc_value/10)%10 + 48; temp[3] = adc_value%10 + 48; UART1_Write_Text(message6); UART1_Write_Text(temp); UART1_Write_Text(message10); UART1_Write('\r'); Delay_ms(2000); adc_value = ADC_Read(6); temp[0] = adc_value/1000 + 48; // Add 48 to get the ASCII character value temp[1] = (adc_value/100)%10 + 48; temp[2] = (adc_value/10)%10 + 48; temp[3] = adc_value%10 + 48; UART1_Write_Text(message7); UART1_Write_Text(temp); UART1_Write_Text(message11); UART1_Write('\r'); Delay_ms(2000); adc_value = ADC_Read(7); temp[0] = adc_value/1000 + 48; // Add 48 to get the ASCII character value temp[1] = (adc_value/100)%10 + 48; temp[2] = (adc_value/10)%10 + 48; temp[3] = adc_value%10 + 48; UART1_Write_Text(message8); UART1_Write_Text(temp); UART1_Write_Text(message12); UART1_Write('\r'); Delay_ms(2000); } while(1); }
Attachments
Last edited by a moderator: