Beschreibung
Im Folgenden findet sich eine C-Funktion zur Nutzung des A/D-Konverters, wie er in ATmega-Microcontrollern wie zum Beispiel dem ATmega16 oder ATmega32 zur Verfügung steht. Realisiert ist die Erfassung eines Messwerts als Einzelmessung (wobei diese Einzelmessung durchaus aus mehreren gemittelten Messwerten bestehen kann).
Quellen
- adc.c - C-Funktionen
- adc.h - Festlegung von Parametern (z. B. Definition von Rückgabewerten usw.)
- port_definitions.h - Konfiguration der Pinbelegung
Beispiel
Der Aufruf der Funktion
single_adc_read() unter Nutzung der internen Spannungsreferenz
VREF (2,56 V), bei einer minimalen Abtastfrequenz von 100 kHz und der Erfassung und Mittelung von 5 Messwerten sieht dann folgendermaßen aus:
ad_value = single_adc_read(ADC_REF_VREF, 2560, 5, 100);
Der Rückgabewert ist ein 32 Bit unsigned Integer und enthält die gemessene Spannung in
mV. Die Höhe der Referenzspannung ist in
mV anzugeben. Die Definitionen für die Einstellung der Spannungsreferenz (zum Beispiel
ADC_REF_VREF) sind in der Datei
adc.h zu finden.
Fehlerquellen
Folgende Punkte sind bei der A/D-Wandlung zu beachten:
- Der verwendete Pin muss als Eingang mit deaktiviertem pull-up-Widerstand konfiguriert sein.
- Während der Messwerterfassung sollten am selben Port an anderen Pins keine Signale umgeschaltet werden, um das Messergebnis nicht zu verfälschen.
- Schaltung eines Kondensators (100 nF) vom Pin AREF zu GND zur Entkopplung der Spannungsreferenz.
- Schaltung eines Kondensators (100 nF) vom Pin Avcc zu GND und einer Induktivität (10 µH) vom Pin Avcc zu Vcc zur Entkopplung der A/D-Wandler-Spannungsversorgung (siehe Datenblatt des jeweiligen Controllers).
Lizenz
Alle hier veröffentlichten Quellen stehen unter der
LGPLv3.
Versionsinfo
- Version 0.1, 27.09.2009: erste Version
- Version 0.2, 01.11.2009: Funktion zur Initialisierung der uC-Ports/Pins hinzugefügt
- Version 0.3, 19.11.2009: Fehlerbeseitigung (Berechnung des Prescaler-Werts)
- Version 0.3, 06.02.2010: Lizenzumstellung auf LGPLv3
Anregungen oder weitere Informationen
Hier kann ein Kommentar hinterlassen werden: