Arduino
Due, ein erster Test
Elektronik-Labor
Projekte
AVR
Schon länger schiele ich auf 32-Bit-Controller, speziell einen
ARM-Controller wie den ATSAM3. Was mich daran besonders interessiert
ist das große RAM zusammen mit dem 12-Bit-AD-Wandler und dem echten
12-Bit-DA-Wandler. Wenn man auch noch die hohe Taktfrequenz bedenkt
ergibt sich damit die Chance solche Aufgaben zu lösen, die sonst einem
DSP zugeordnet werden, also Signalverarbeitung, Filter usw. Das
Abschreckende daran waren aber bisher die verwendeten C-Compiler, die
eine erhebliche Einarbeitungszeit erfordern. Und da kommt der Arduino
Due gerade recht, denn er verspricht mit seiner vereinfachten
Programmierumgebung einen Zugang ohne viel Stress.
Jetzt hat mein Sohn Fabian den Arduino Due in die Hände bekommen.
Schreib mir mal ein Programm, das die beiden Analogwandler ausprobiert,
habe ich ihn gebeten. Was dabei herauskam war eine ganz einfache
Schleife: Immer wieder A0 messen und das Ergebnis an DAC1
ausgeben. Damit sollte sich alles testen lassen.
int adcValue;
void setup() {
Serial.begin(9600);
analogReadResolution(12);
analogWriteResolution(12);
}
void loop() {
adcValue = analogRead(A0);
analogWrite(DAC1,adcValue);
}
Erste Beobachtung: Wenn man den analogen Eingang an GND legt kommt am
analogen Ausgang nicht Null Volt heraus sondern ca. 0,5 V. Umgekehrt
bringt eine Eingangsspannung von 3,3 V nur etwa 2,8 V am Ausgang. Der
DA-Wandler arbeitet also nicht Rail to Rail, sondern mit einem Abstand
von 0,5 V von beiden Seiten. Das erinnert mich an PC-Soundkarten. Auch
da wird nicht eine definierte Spannung ausgegeben sondern es geht um
eine Variation um einen Mittelwert.
Die zweite wichtige Frage ist: Wie schnell ist denn nun diese Schleife?
Also einen Sinusgenerator über einen Schutzwiderstand von 47 kOhm
angeschlossen (Strombegrenzung, weil auch negative Spannungen
rauskommen) und den Oszi an den Ausgang gelegt. Der Sinusgenerator
wurde auf 1 kHz eingestellt, das Oszi auf 50 µs/Skt. Und damit kann man
die Geschwindigkeit erkennen: Etwa 50 µs pro Schleifendurchlauf,
Abtastrate 20 kHz. Laut Datenblatt sollte der AD-Wandler im Extremfall
mit einer Mikrosekunde auskommen. Dass es im ersten Versuch sehr viel
langsamer geht, könnte an der Arduino-Umgebung und einem erheblichen
Programm-Überhang liegen. Vielleicht findet man aber auch noch passende
Einstellungen um die Sache etwas zu beschleunigen.
Elektronik-Labor
Projekte
AVR