Arduino Nano ADC Abtastrate erhöhen

OP #5366470
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
#5366474
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.
#5366489
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.
Gast #5366517
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren