Forum: Mikrocontroller und Digitale Elektronik Raspberry Pi 3 - 9 Ultraschallsensoren gleichzeitig Auslesen


von Sebastian S. (ziggu)


Lesenswert?

Hallo zusammen. Ich hoffe ich bin mit meiner Anfrage im richtigen Thread 
gelandet.

Ich stehe vor folgendem Problem:
Ich möchte mit meinem Raspberrry PI 3-b ca. 9 Ultraschallsensoren 
(40kHz) gleichzeitig auslesen, mit einer Genauigkeit von min 8bit und 
einer Abtastrate von ca. 1mHz. (Pro Pin sind ja 20mHz möglich, bei 8bit 
sollten also theoretisch sogar ~2.4mHz drin sein)

Nun hat der Raspberry aber keine Analog-GPIO Pins, also müssen 
AD-Wandler her.
Ich bin mir nicht sicher, welcher ADC dafür am besten geeignet ist.
Meine Idee ist einen/mehrere I²C-Wandler zu nutzen. Allerdings will ich 
die Sensoren nicht alle über einen Bus verbinden, sondern einen Treiber 
für Pins schreiben.
Könnt ihr einen bestimmten ADC empfehlen? Oder bin ich mit meinem Ansatz 
völlig auf dem Holzweg?

Ich freue mich über jegliche Anregung, und wünsche noch einen schönen 
Sonntag.

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Sebastian S. schrieb:
> (Pro Pin sind ja 20mHz möglich, bei 8bit
> sollten also theoretisch sogar ~2.4mHz drin sein)

So 2.4 mHz sind ja kein Problem, daß kann man noch mit dem Bleistift von 
Hand digitalisieren.

von Toni Tester (Gast)


Lesenswert?

Sebastian S. schrieb:
> Genauigkeit von min 8bit

Spannungs-Amplitude? Effektivwert?
Welche Auflösung strebst du an, wie sieht die Beschaltung aus?

Sebastian S. schrieb:
> Abtastrate von ca. 1mHz

Hm, 16 Minuten Periodendauer sind nun nicht gerade schnell. Welche 
"Abtastrate" soll das sein - das Sende- und Empfangsintervall der 
Ultraschall-Impulse?

Sebastian S. schrieb:
> (Pro Pin sind ja 20mHz möglich, bei 8bit
> sollten also theoretisch sogar ~2.4mHz drin sein)

Verstehe ich nicht.

Sebastian S. schrieb:
> Könnt ihr einen bestimmten ADC empfehlen?

Abhängig von der Spezifikation; wie oben schon erwähnt fehlen jedoch 
viele dazu notwendigen Angaben:
- Spannungshub (ADC single ended oder symmetrischer Eingang?)
- Auflösung, max. Fehler etc.
- Eingangsimpedanz etc. (abhängig von deiner Beschaltung, die wir bisher 
nicht kennen)
- Zeitliche Anforderungen (Delays, Jitter) - bei Abtastungen im 
Minutenbereich ist das jedoch vollkommen unkritisch
- Elektrische Schnittstellen

Sebastian S. schrieb:
> Meine Idee ist einen/mehrere I²C-Wandler zu nutzen.

Ja, wieso nicht.

> Allerdings will ich
> die Sensoren nicht alle über einen Bus verbinden, sondern einen Treiber
> für Pins schreiben.

D. h. I²C-Software-Emulation? - Ja, klar, kannst du machen. Hängt eben 
ab von deinen sonstigen Anforderungen, da dies im Vergleich zum 
Hardware-Interface logischerweise Rechenzeit bzw. -kapazität kostet.

von Sebastian S. (ziggu)


Lesenswert?

Hallo Toni Tester,
vielen Dank für deine schnelle Antwort.

also die Sensoren die ich habe, sind folgende:

http://www.produktinfo.conrad.com/datenblaetter/500000-524999/507764-da-01-en-ULTRASCHALL_EMPFAENGER_KPUS_40T_16R_K769.pdf

Toni Tester schrieb:
> wie sieht die Beschaltung aus?

Ja. Wie man warscheinlich schon feststellen konnte, bin ich eher 
Softwareseitig bewandert, als Hardwareseitig. Dementsprechend bin ich 
eben durch das "neue" Problem AD-Wandlung mit der Schaltung überfordert,
ich war davon ausgegangen mit dem Raspberry wie auch bei meinem Arduino 
analoge Pins zur Verfügung zu haben.
Im Prinzip suche ich nach einer Möglichkeit, dass Signal des Empfängers 
mit mindestends 8 bit Auflösung der Amplitude und ~25 Messungen "pro 
Welle" aufzuzeichnen.

Toni Tester schrieb:
> Hm, 16 Minuten Periodendauer sind nun nicht gerade schnell. Welche
> "Abtastrate" soll das sein - das Sende- und Empfangsintervall der
> Ultraschall-Impulse?

Ich hätte gerne pro Wellenlänge des Signals ca 25 Messwerte, um später 
u.a. die Phasenverschiebung der Signale an den einzelnen Empfängern 
vergleichen zu können. Also 40kHz*25 = 1mHz
Senden möchte ich mit einem seperaten Sender.

Toni Tester schrieb:
> Sebastian S. schrieb:
>> (Pro Pin sind ja 20mHz möglich, bei 8bit
>> sollten also theoretisch sogar ~2.4mHz drin sein)
>
> Verstehe ich nicht.

Gemeint war: Bei 1mHz "Abtastrate" (s.o.) und 8bit, sind bei möglichen 
20mHz pro Pin: 20mHz/(1mHz*8bit) = 2,5*10^6 Messungen/s möglich.

von H. K. (spearfish)


Lesenswert?

Wie sieht denn das Signal aus? Solche Signal sind ja meist relativ 
sinusförmig, oder nicht? Musst du denn das Signal vollständig aufnehmen? 
Wenn du nur den zeitlichen Versatz willst, kannst du über einen 
Schmitttrigger das Signal in ein Rechtecksignal umwandeln, welches du 
dann (evlt. brauchst du noch einen Pegelwandler) direkt an einem 
Digital-IO-Pin auslesen kannst. Mit Timer kannst du dann die 
Phasenverschiebung berechnen.

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Sebastian S. schrieb:
> Ich möchte mit meinem Raspberrry PI 3-b ca. 9 Ultraschallsensoren
> (40kHz) gleichzeitig auslesen, mit einer Genauigkeit von min 8bit und
> einer Abtastrate von ca. 1mHz. (Pro Pin sind ja 20mHz möglich, bei 8bit
> sollten also theoretisch sogar ~2.4mHz drin sein)

Bevor du dich an solche Dinge machst, wäre es förderlich, wenn du 
vernünftige Einheiten verwendest. Andernfalls wird keiner verstehen, was 
dein Problem ist.

Wenn du einen Raspberry PI für Echtzeitanwendungen einsetzen möchtest, 
solltest du wenigstens das Betriebssystem nennen.

von Fpgakuechle K. (Gast)


Lesenswert?

> Ich hätte gerne pro Wellenlänge des Signals ca 25 Messwerte, um später
> u.a. die Phasenverschiebung der Signale an den einzelnen Empfängern
> vergleichen zu können. Also 40kHz*25 = 1mHz

1 mHz -> 1 Milli Hertz; 1 MHz -> 1 Mega Hertz

Du verwendest hier permanent das kleine m statt das Große.


Mit einem AD-Wandler alleine wirst nicht klappen, die GPIO sind einfach 
zu langsam und dazu ist Raspian nicht für Echtzeit geeignet.


MfG,

von Sebastian S. (ziggu)


Lesenswert?

Wolfgang schrieb:
> Bevor du dich an solche Dinge machst, wäre es förderlich, wenn du
> vernünftige Einheiten verwendest. Andernfalls wird keiner verstehen, was
> dein Problem ist.

Fpga K. schrieb:
> 1 mHz -> 1 Milli Hertz; 1 MHz -> 1 Mega Hertz
>
> Du verwendest hier permanent das kleine m statt das Große.

Gut, da lief mein Hirn wohl nicht in Echtzeit. Gemeint waren natürlich 
M(ega)Hz.

Wolfgang schrieb:
> Wenn du einen Raspberry PI für Echtzeitanwendungen einsetzen möchtest,
> solltest du wenigstens das Betriebssystem nennen

Fpga K. schrieb:
> Mit einem AD-Wandler alleine wirst nicht klappen, die GPIO sind einfach
> zu langsam und dazu ist Raspian nicht für Echtzeit geeignet.

Im Moment ist Windows IoT aufgespielt.

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Gehts am Ende um Phasenverschiebung von 9 Sensoren ?

von Sebastian S. (ziggu)


Lesenswert?

Dennis H. schrieb:
> Gehts am Ende um Phasenverschiebung von 9 Sensoren ?

Heinz K. schrieb:
> Wie sieht denn das Signal aus? Solche Signal sind ja meist relativ
> sinusförmig, oder nicht? Musst du denn das Signal vollständig aufnehmen?
> Wenn du nur den zeitlichen Versatz willst, kannst du über einen
> Schmitttrigger das Signal in ein Rechtecksignal umwandeln, welches du
> dann (evlt. brauchst du noch einen Pegelwandler) direkt an einem
> Digital-IO-Pin auslesen kannst. Mit Timer kannst du dann die
> Phasenverschiebung berechnen.

Vielen Dank für den Hinweis, die Schmitttrigger werde ich mir mal 
genauer anschauen. Die Amplitude benötige ich allerdings auch. (s.u.)
Das zu erwartende Signal ist im Prinzip schon Sinusförmig, allerdings 
mit an/abschwellzeit und je nach Aufnahmesituation auch mit stark 
unterschiedlicher maximaler Amplitude.

Im Prinzip brauche ich die Phasenverschiebung (bei 9 Sensoren), für 
einen der Sensoren die Zeit zwischen Senden/Empfangen, leider aber auch 
die Amplitude, da ich nicht nur das Erste empfangene Signal pro Messung 
verwerten möchte. Hier ist dann natürlich meine Chance der 
Signaltrennung größer, je mehr Informationen ich in den Rechner bekomme.

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.