ADC is available at PORTA of Atmega16.
CLICK HERE FOR PIN DIAGRAM
Thus we have 8 pins available where we can apply analog voltage and get corresponding digital values. The ADC register is a 10 bit register, i.e., the digital value ranges from 0 to 1023. But we can also use only 8 bit out of it (0 to 255) as too much precision is not required.
Reference voltage is the voltage to which the ADC assigns the maximum value (255 in case of 8 bit and 1023 for 10 bit). Hence, the ADC of Atmega16 divides the input analog voltage range (0V to Reference Voltage) into 1024 or 256 equal parts, depending upon whether 10 bit or 8 bit ADC is used. For example, if the reference voltage is 5V and we use 10bit ADC, 0V has digital equivalent 0,
+5V is digitally 1023 and 2.5V is approximately equal to 512.
ADC =Vin x 255/Vref (8 bit)
ADC =Vin x 1023/Vref (10 bit)
Function:
read_adc()
This function returns the digital value of analog input at that pin of PORTA whose number is passed as parameter, e.g., if you want to know the digital value of voltage applied at PA3, and then just call the function as,
read_adc(3);
If the ADC is 8 bit, it will return a value from 0 to 255. Most probably you will need to print it on LCD. So, the code would be somewhat like
int a; char c[10]; // declare in the section of global variables
a=read_adc(3);
itoa(a,c);
lcd_puts(c);
SETTING UP ADC:
FOR OLDER VERSION OF CVAVR:
FOR NEWER VERSION OF CVAVR:
click here for projects on adc
No comments:
Post a Comment