Forum: Mikrocontroller und Digitale Elektronik Arduino Nano ADC Abtastrate erhöhen


von Herr V. (azniq)


Lesenswert?

Moin,

ich möchte ein analoges Signal aus einem selbstgebauten Audioverstärker 
mit dem Arduino Nano empfangen. Beim Test mit 100 Hz ist mir 
aufgefallen, dass die Werte nicht kontinuierlich angezeigt werden, 
sondern eher sprunghaft.
Auf der Arduinowebsite steht, dass der ADC-Pin nur alle 100 us das 
Signal abliest. Das wäre doch eine Frequenz von max 10 Hz..

Die Signale, die ich empfangen möchte, liegen aber alle so im Bereich 
von 10 Hz - 20 kHz. Gibt es eine Möglichkeit die Abtastrate des Arduino 
ADC-Eingangs zu erhöhen?

Grüße

von Gerhard O. (gerhard_)


Lesenswert?

Herr V. schrieb:
> Moin,
>
> ich möchte ein analoges Signal aus einem selbstgebauten Audioverstärker
> mit dem Arduino Nano empfangen. Beim Test mit 100 Hz ist mir
> aufgefallen, dass die Werte nicht kontinuierlich angezeigt werden,
> sondern eher sprunghaft.
> Auf der Arduinowebsite steht, dass der ADC-Pin nur alle 100 us das
> Signal abliest. Das wäre doch eine Frequenz von max 10 Hz..
>
> Die Signale, die ich empfangen möchte, liegen aber alle so im Bereich
> von 10 Hz - 20 kHz. Gibt es eine Möglichkeit die Abtastrate des Arduino
> ADC-Eingangs zu erhöhen?
>
> Grüße

Die Sample Rate muß nach Niquist muß mindestens das doppelte der 
höchsten Frequenz betragen. Als geht das beim 328 nicht mehr.
Abgesehen davon müssen die Daten ja irgendwo hin.
Die Stm32 können da bis 1Ms oder mehr. Vielleicht steige auf Maple 
Arduino um wenn Du Arduino verwenden möchtest. Der STM32 hat auch den 
Vorteil der DMA was das Programmieren sehr erleichtert. Der ADC mit 
Hilfe vom DMA kann die Daten per Hatdware direkt in zwei Ping Pong 
Puffer verfrachten ohne dass der CPU einen Finger rühren muß. Das geht 
dann vollautomatisch. Jedesmal wenn ein Puffer voll ist, gibts einen 
Interrupt der dann die weitere Verarbeitung in die Wege leitet. Mit 
alternativen Puffern kannst Du dann ohne Unterbrechungen den Datenstrom 
vom ADC verarbeiten und zum B. Einem DAC zuführen.

von Thorsten S. (thosch)


Lesenswert?

Herr V. schrieb:
> Auf der Arduinowebsite steht, dass der ADC-Pin nur alle 100 us das
> Signal abliest. Das wäre doch eine Frequenz von max 10 Hz..

Nein. 100 us Periode sind 10 kHz.

von Gerhard O. (gerhard_)


Lesenswert?

Thorsten S. schrieb:
> Herr V. schrieb:
>> Auf der Arduinowebsite steht, dass der ADC-Pin nur alle 100 us das
>> Signal abliest. Das wäre doch eine Frequenz von max 10 Hz..
>
> Nein. 100 us Periode sind 10 kHz.

Er hat doch nur das "k" beim Hz übersehen...
Er hat schon 10KHz gemeint.

: Bearbeitet durch User
von Herr V. (azniq)


Lesenswert?

Ich sollte schlafen gehen und vermeiden nachts noch fragen zu stellen! 
Du hast natürlich Recht!

von Thorsten S. (thosch)


Lesenswert?

Das Datenblatt der Atmega328P gibt übrigens 15 kSPS als maximale 
Samplerate für volle 10 Bit Auflösung an. Mit geringerer Auflösung gehen 
bis zu 76,9 kSPS.

Ob die Arduino-Umgebung das irgendwie unterstützt? k.A., ich hab meine 
Atmel uCs immer nur im Atmel-Studio in C programmiert.

von Einer K. (Gast)


Lesenswert?

Thorsten S. schrieb:
> Ob die Arduino-Umgebung das irgendwie unterstützt? k.A.,
Aber ich weiß das: Von Hause aus nicht.
Klarer: analogRead() kann das nicht.

Aber man kann ja die Register genauso manipulieren, wie man es im Atmel 
Studio tut.
Da gibts keinen Unterschied.

Also Datenblatt lesen und men los legen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.