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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.