analog to digital conversion in avr microcontrollers
play

Analog to digital conversion in AVR Microcontrollers (Chapter 13 of - PowerPoint PPT Presentation

Microprocessors, Lecture 10: Analog to digital conversion in AVR Microcontrollers (Chapter 13 of the text book) Contents ADC units of ATmega32 ADC programming in C University of Tehran 2 ADC in AVR University of Tehran 3 ADC


  1. Microprocessors, Lecture 10: Analog to digital conversion in AVR Microcontrollers (Chapter 13 of the text book)

  2. Contents • ADC units of ATmega32 • ADC programming in C University of Tehran 2

  3. ADC in AVR University of Tehran 3

  4. ADC • Typical usage of ADC (analog to digital convertors) University of Tehran 4

  5. ADC • A typical ADC • Vref= the maximum allowable volatge University of Tehran 5

  6. ADC resolution • Step size: the difference between two consecutive output nembers • For a 8-bit output and Vref=5v, – step size= 5/246 University of Tehran 6

  7. ADC internal structure • Successive approximation method – See page 468 of the book for algorithm details • n steps for an n-bit output ADC • Requires n cycles to calculate digital output University of Tehran 7

  8. ADC in ATmega32 • 7 analog input channels – Just one ADC multiplexed by input channels • 10-bit output – Kept in ADCL and ADCH registers – 6 unused bits, can be set the upper or lower 6 bits University of Tehran 8

  9. AVR ADC Registers • ADCL and ADCH to keep digital data • ADCSRA to control ADCs • ADMux to select one input channel for conversion • SPIO, special function register University of Tehran 9

  10. ADMUX register University of Tehran 10

  11. ADMUX register • Select the reference voltage (the maximum acceptable input channel voltage) University of Tehran 11

  12. ADMUX register • Which bits of ADCH and ADCL are unused University of Tehran 12

  13. ADMUX register • Which channel is selected to the ADC – Can also work in differential mode University of Tehran 13

  14. ADCSRA register • ADC control and status register – Control and monitor the ADC University of Tehran 14

  15. ADCSRA register • ADATE bit • Sets the operation mode of ADC • 0= single conversion – Converts the input just one time every time ADSC becomes 1 • 1= free running – Continuously converts the input to digital values with some frequency – For ADATE=1 we have more ADC options, Take a look at AVR documents for more details if you are interested! University of Tehran 15

  16. ADCSRA register • Selecting the ADC clock University of Tehran 16

  17. ADC clock • Determines the speed of sampling the input data – Each conversion takes around 13 ADC clocks • Larger frequency has smaller accuracy • In AVR, frequency have to be less than 200 kHz • Set it to smaller frequency (ADPS[0..2]=111) if speed is not critical University of Tehran 17

  18. ADC programming in C University of Tehran 18

  19. ADC programming in C A program that coverts the analog voltage of ADC0 and copies it to portD and portB --polling method •The ADSC bit should be 1 for the ADC to start conversion •Returns to 0 automatically once the conversion is completed University of Tehran 19

  20. ADC programming in C A program that coverts the analog voltage of ADC0 and copies it to portD and portB --interrupt method University of Tehran 20

  21. Connecting sensors to AVR • Transducer (sensor): convert environment parameters (temperature, pressure, velocity,…) to electrical quantities (voltage, current, capacitance, resistance) • Signal conditioning: converting electrical quantities to voltage University of Tehran 21

  22. Connecting sensors to AVR- example University of Tehran 22

  23. Connecting LM35 to AVR • In AVR: – Vref=2.56v – 10 bit output, 1024 values � step size=2.56/1024= 2.5 mv • In LM34: – for 1 degree increase in temperature, we have 10mv increase in output voltage � If the temperature increases by one degree: – 10mv increase in sensor output – 10/2.5=4 increase in ADC output • Divide the ADC result by 4 to get actual temperature (shift right 2 times) University of Tehran 23

  24. Connecting LM35 to AVR • Example: temp= 20 degrees, sensor output= 200mv (10mv for every degree), this voltage is converted to 0x1010000=80 (200mv/2.5mv=80) by the ADC • Divide by 4 to get actual temperature by ADC University of Tehran 24

  25. ADC programming in C in CodeVision • Set different values in the project setup wizard University of Tehran 25

Recommend


More recommend