JE9
Posts: 3
Joined: Tue Sep 11, 2018 7:36 am

HAT-Platine A/D-Wandler

Tue Sep 11, 2018 7:47 am

Hallo Zusammen,

für meine Bachelorarbeit soll ich eine HAT-Platine mit A/D-Wandler entwerfen. Das zu verarbeitende Signal ist ein Audiosignal, die maximale Frequenz des Signals liegt allerdings bei rund 1000 Hz.
Nun bin ich auf der Suche nach einem geeigneten A/D-Wandler und bisher mit dem MCP3008 fündig geworden. Ich werde allerdings nicht ganz schlau aus dem Datenblatt und den entsprechenden Kennzahlen. Wäre dieser A/D-Wandler für meine Anforderungen ausreichend? Dieser soll ja recht einfach in Python einzubinden sein. Muss ich sonst noch etwas beachten bei dem Aufbau?

Vielen Dank im Voraus!

User avatar
mline
Posts: 1155
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: HAT-Platine A/D-Wandler

Tue Sep 11, 2018 9:05 am

JE9 wrote:
Tue Sep 11, 2018 7:47 am
...
Ich werde allerdings nicht ganz schlau aus dem Datenblatt und den entsprechenden Kennzahlen. Wäre dieser A/D-Wandler für meine Anforderungen ausreichend?
...
Wo genau bist du unsicher?
<~~>

JE9
Posts: 3
Joined: Tue Sep 11, 2018 7:36 am

Re: HAT-Platine A/D-Wandler

Tue Sep 11, 2018 11:50 am

mline wrote:
JE9 wrote:
Tue Sep 11, 2018 7:47 am
...
Ich werde allerdings nicht ganz schlau aus dem Datenblatt und den entsprechenden Kennzahlen. Wäre dieser A/D-Wandler für meine Anforderungen ausreichend?
...
Wo genau bist du unsicher?
Entschuldige die ungenaue Formulierung.

Es geht mir um die Abtastfrequenz. Aus dem Datenblatt geht hervor, dass bei einer Versorgungsspannung von 5,5 V, die maximale Sampling Rate bei 200 ksps liegt, bei 2,7 V bei 75 ksps. Per Interpolation wären das bei einer Versorgungsspannung von 3,3 V etwa 100 ksps. Ist diese Sampling Rate auch als maximale Abtastfrequenz zu verstehen? In verschiedenen Foren wird davon gesprochen, dass dies nicht der Fall ist und die Bit-Rate noch mit einbezogen werden muss. Allerdings ist dies für mich nicht ganz eindeutig. Zudem habe ich auch gelesen, dass der MCP3008 nicht für Audio-Signale verwendet werden sollte.

Laut Nyquist-Theorem sollte ich mein Signal ja mindestens mit 2 kHz abtasten. Daher meine Frage, ob der angegebene A/D-Wandler mein Eingangssignal ausreichend abtasten kann.

Hoffe das hilft bei der Beantwortung der Frage weiter.

User avatar
mline
Posts: 1155
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: HAT-Platine A/D-Wandler

Tue Sep 11, 2018 12:07 pm

JE9 wrote:
Tue Sep 11, 2018 11:50 am
Ist diese Sampling Rate auch als maximale Abtastfrequenz zu verstehen?
Ja
JE9 wrote:
Tue Sep 11, 2018 11:50 am
In verschiedenen Foren wird davon gesprochen, dass dies nicht der Fall ist und die Bit-Rate noch mit einbezogen werden muss.
Ich kann nur vermuten was damit gemeint ist... ne Quelle wäre hilfreich. Eventuell ist damit der Datenfluss gemeint? Wenn Samplingrate und Auflösung so hoch sind, dass die Datenmenge die dabei entsteht so hoch ist, dass du sie nicht mehr verarbeiten kannst.

*edit
Wenn du einen 1kHz Sinus mit 2ksps abtastest bekommst ein Rechtecksignal raus. Die Angabe is nicht umsonst in ksps. Es geht eben darum, wie schön die Kurve deines Signals sein soll. Oder im Falle von Rechtecksignalen, wie zeitnah die Abtastung beim Flankenwechsel geschehen soll. Willst du nur irgendwas rausbekommen reichen 2ksps für ein 1kHz signal. Da hast du dann 2 Samples pro Periodendauer. Willst du nen Sinus sehen müsstest schon das zigfache an Samplerate einkalkulieren... du brauchst ja mehrere Punkte um ne Kurve sehen zu können
Image

*edit
Amplitude ist falsch. Periodendauer ist korrekt :D
<~~>

JE9
Posts: 3
Joined: Tue Sep 11, 2018 7:36 am

Re: HAT-Platine A/D-Wandler

Tue Sep 11, 2018 12:31 pm

mline wrote:
Tue Sep 11, 2018 12:07 pm
Da hast du dann 2 Samples pro Periodendauer. Willst du nen Sinus sehen müsstest schon das zigfache an Samplerate einkalkulieren... du brauchst ja mehrere Punkte um ne Kurve sehen zu können
Ah vielen Dank! Da lag mein Verständnisproblem in der Einheit "ksps". Das heißt bei einer Eingangsfrequenz von 1 kHz und einer Abtastfrequenz von 100 ksps hätte ich etwa 100 Punkte die pro Periode abgetastet werden?
Dann verstehe ich auch, warum die Eingangsfrequenz nicht viel höher sein darf.

User avatar
mline
Posts: 1155
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: HAT-Platine A/D-Wandler

Tue Sep 11, 2018 12:44 pm

Genau so ist es.

1Hz Sinus und 1sps und du hast exakt einen Zustand... Wenn zum Beispiel immer exakt in der Mitte des Sinus der Sample genommen wird kommt der Wert 0 raus. Egal wieviel Auflösung du hast... Da könnte der A/D Wandler 100 Bit haben... du hast dann immer eine Gleichspannung.

Bei 1Hz Sinus und 2sps hast dann ein Rechtecksignal oder ebenfalls 0. Weil wenn der Wert immer bei der Spitze der Amplitude genommen wird hast einmal positiv und einmal negativ. Bei 10 Bit also einmal 0x0 und einmal 0x3FF. Wird der Wert aber am Anfang genommen - das wäre ja 0x1F - wird der zweite Wert dann genau in der Mitte gemessen und da hast dann ebenfalls 0x1F. Also die doppelte Frequenz als Samplerate is auch nicht ideal.

Bei 1Hz Sinus und 4sps wird dann schon ein Sinus erkennbar...

100ksps sind schon ganz schön viel. Für sowas verwendet man glaub ich normal auch nen DSP und nicht ne CPU. Du kannst es ja mal versuchen. Siehst dann eh wie hoch die CPU-Last ist...

*edit
Fehler korrigiert :D
Dieses Thema is für mich mit sehr vielen Fehlern verbunden. Vielleicht sollt ich die Klappe halten hehe

*edit*
noch mehr Fehler :D
<~~>

smartifahrer
Posts: 649
Joined: Sat Feb 13, 2016 8:10 am

Re: HAT-Platine A/D-Wandler

Tue Sep 11, 2018 1:49 pm

Das der MCP3008 nicht für Audio-Signale verwendet werden sollte liegt vielleicht daran das er 8 Analogquellen gleichzeitig digitalisieren kann. Ich könnte mir vorstellen das die Signale sich gegenseitig stören könnten oder ganz plump einfach nicht mit negativen Signal Spannungen ungehen kann. Dies lässt sich aber sicher einfach mit einer Schaltung vor dem Eingang beheben die den Nullpunkt so weit anhebt das keinenegativen Signal Spannungen mehr am eingang ankommt. Der Eingangswiderstand könnte auch ein eine Audio-Signalquelle zu stark belasten.
Wie gesagt nur Vermutungen ohne ins Datenblatt zu sehen.

User avatar
mline
Posts: 1155
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: HAT-Platine A/D-Wandler

Tue Sep 11, 2018 4:07 pm

smartifahrer wrote:
Tue Sep 11, 2018 1:49 pm
Das der MCP3008 nicht für Audio-Signale verwendet werden sollte liegt vielleicht daran das er 8 Analogquellen gleichzeitig digitalisieren kann. Ich könnte mir vorstellen das die Signale sich gegenseitig stören könnten
...
Der Eingangswiderstand könnte auch ein eine Audio-Signalquelle zu stark belasten.
Image

Was für ein Unsinn...
Wenn du wie du sagst keine Ahnung hast, warum sparst du dir solche Kommentare nicht einfach statt sowas zu schreiben?!
<~~>

smartifahrer
Posts: 649
Joined: Sat Feb 13, 2016 8:10 am

Re: HAT-Platine A/D-Wandler

Tue Sep 11, 2018 7:01 pm

Was für ein Unsinn...
Wenn du wie du sagst keine Ahnung hast, warum sparst du dir solche Kommentare nicht einfach statt sowas zu schreiben?!
Damit du dich über mich aufregen kannst und mich mit deinem Fachwissen aufklärst warum das Unsinn ist.

NetSecond
Posts: 64
Joined: Wed Mar 13, 2013 12:14 am
Location: Germany

Re: HAT-Platine A/D-Wandler

Wed Sep 12, 2018 10:10 am

Hmmmmm, wenn man "Bachelor" werden will, sollte man das schon alleine hinbekommen, oder ?!?!
Gruß / Regards
NetSecond

smartifahrer
Posts: 649
Joined: Sat Feb 13, 2016 8:10 am

Re: HAT-Platine A/D-Wandler

Thu Sep 13, 2018 10:00 am

Ich habe mal Google befragt und eine ähnliche Anwendung gefunden. Ist zwar nicht für den Pi, erklärt aber wie es geht.
https://rheingoldheavy.com/mcp3008-tuto ... ignals-01/

Das größte Problem dürfte sein in immer gleichen Zeitabständen die Werte auszulesen. Wenn ich das Datenblatt richtig verstehe, wandelt der MCP3008 die Werte auch erst auf Aufforderung um was zu weiteren Verzögerungen führt.

User avatar
mline
Posts: 1155
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: HAT-Platine A/D-Wandler

Thu Sep 13, 2018 4:29 pm

smartifahrer wrote:
Thu Sep 13, 2018 10:00 am
Das größte Problem dürfte sein in immer gleichen Zeitabständen die Werte auszulesen.
Dafür nutzt man Timer.
smartifahrer wrote:
Thu Sep 13, 2018 10:00 am
Wenn ich das Datenblatt richtig verstehe, wandelt der MCP3008 die Werte auch erst auf Aufforderung um was zu weiteren Verzögerungen führt.
Die Samplerate berücksichtigt diese Verzögerungen bereits. Wenn du einen Request an SPI sendest bekommst du direkt die Daten zurück. Ist dein SPI schnell genug, kannst du die 200ksps erreichen. Hast ne lahme Krücke mit SCK von ein paar Kilohertz, dann wirst du diese Samplerate nicht schaffen

Seite 1 im Manual
The devices are capable of conversion rates of up to 200 ksps
<~~>

smartifahrer
Posts: 649
Joined: Sat Feb 13, 2016 8:10 am

Re: HAT-Platine A/D-Wandler

Fri Sep 14, 2018 5:48 am

Schon klar das man dafür Timer benutzt und der MCP3008 ist auch schnell genug. Aber sind die auf dem Raspi vorhandenen Timer (Hardware oder Software) genau genug um Audiosignale zu sampeln? Es können ja immer noch andere wichtigere System Aufgaben dazwischen kommen.

User avatar
mline
Posts: 1155
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: HAT-Platine A/D-Wandler

Sat Sep 15, 2018 7:58 am

Timer sind _immer_ Hardware da sie direkt mit dem Taktgeber der CPU verbunden sind.
Je nachdem welchen Timer der Pi man nutzen will geht die Auflösung bis in den Nanosekundenbereich... also genau genug würd ich mal sagen.

Genaueres dazu findet man aber sicher im Bare Metal Forum
<~~>

smartifahrer
Posts: 649
Joined: Sat Feb 13, 2016 8:10 am

Re: HAT-Platine A/D-Wandler

Sat Sep 15, 2018 9:04 am

Timer sind _immer_ Hardware
Es gibt duchaus auch Timer in Software, z.B. die Kernel-Timer des Betriebsystems das diese verwaltet. Diese basieren aber letztlich auf einem Hardware Zeitgeber.Viele der in Programmen eingesetzten Timer-Funktionen benutzen diese. Dabei dürfen aber kleine Schwankungen in der Genauigkeit keine Rolle spielen. Hinzu kommt das die durch den Timer aufgerufenen Routinen mitunter durch Interrupts unterbrochen werden können. Dies geschieht auch bei der direkten Verwendung der Hardware-Timer

User avatar
mline
Posts: 1155
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: HAT-Platine A/D-Wandler

Sat Sep 15, 2018 11:39 am

smartifahrer wrote:
Sat Sep 15, 2018 9:04 am
Es gibt duchaus auch Timer in Software, z.B. die Kernel-Timer des Betriebsystems das diese verwaltet. Diese basieren aber letztlich auf einem Hardware Zeitgeber.
Du widersprichst dir selbst...
Timer - bei welchem Framework auch immer - sind _immer_ Hardwaretimer weil diese eben einen Hardwaretimer benötigen. Alles andere würde niemals da hinkommen wo man es braucht. Wie genau diese Timer in der Software dann letztendlich sind hängt davon ab wieviele Bits der Timer hat (der größte bei der Pi hat 64Bit; atmega328 haben zum Beispiel 2 x 8Bit und einen 16Bit Timer) und ob die volle Auflösung im Framework übernommen wurde (bei Linux wurde das zum Beispiel nicht getan; wiringPi bietet soweit ich weiß Befehle dafür an).
smartifahrer wrote:
Sat Sep 15, 2018 9:04 am
...
Hinzu kommt das die durch den Timer aufgerufenen Routinen mitunter durch Interrupts unterbrochen werden können. Dies geschieht auch bei der direkten Verwendung der Hardware-Timer
Solange es kein Realtime-OS ist kann ein Interrupt immer das Programm unterbrechen. Je nachdem welche Priorität der Interrupt hat. Welche Priorität welcher Interrupt hat kann aus dem Handbuch des SoC entnommen werden. Und zum letzten Satz: siehe oben.
<~~>

Return to “Deutsch”