Hi, welches Modul/Wandler benötige ich, um 40khz zu erfassen. Ich will
die Wellen auslesen und weiter bearbeiten. Ich brauch 2 Kanäle.
Was ich bisher versucht habe:
Ich habe ein MCP3008 verwendet, mit der Hoffnung die 40khz auszulesen.
200ksps dachte ich, sollte ausreichen. Ich nutze den adafruit_mcp3008
library. https://github.com/adafruit/Adafruit_MCP3008
Dann habe ich bemerkt, dass 2 Kanäle sehr lange Zeit benötigt. Ich habe
bei einem 1khz nur 6 mal ein Hohen Pegel lesen können, bei einem
Rechteck Signal. Also habe ich nur ein Kanal ausgelesen, dann wurden 12
Werte gelesen. Das war für mich immer noch zu langsam. Also habe ich in
der library nachgeschaut und gesehen, dass es auf 1Mhz SPI Frequenz
läuft. Ich habe es Manuell geändert auf 3.6Mhz. Denn der Wandler läuft
mit 5V. Nun habe ich 24 Hohe Werte in 1khz. Aber wenn ich die 40 khz
auslesen möchte, dann ist das doch viel zu wenig.
Arduino Code:
Erik H. schrieb:> welches Modul/Wandler benötige ich, um 40khz zu erfassen. Ich will> die Wellen auslesen und weiter bearbeiten.
Das versteht kein Schwein. Erklär erst mal im Detail was du
unter "40khz erfassen" und unter "Wellen auslesen" verstehst.
Wastl schrieb:> Das versteht kein Schwein. Erklär erst mal im Detail was du> unter "40khz erfassen" und unter "Wellen auslesen" verstehst.
Er will offenbar ein Analogsignal bis 40kHz abtasten.
Dazu braucht er wenn es ordentlich werden soll ein Wandler mit 10 MSps.
Sein MCP3008 kann nur 200kSps, ist also unbrauchbar.
Björn W. schrieb:> Er will offenbar ein Analogsignal bis 40kHz abtasten.> Dazu braucht er wenn es ordentlich werden soll ein Wandler mit 10 MSps.
Wieso braucht er eine 25-fache Abtastfrequenz? OK, ich gehe jetzt mal
von einem irgend wie gearteten Audio-Signal aus? Aber vielleicht verrät
uns der TO, was für ein Signal er denn genau auswerten will.
Nicht dass er in Wirklichkeit ein Digitalsignal erfassen möchte. ;-)
ciao
Marci
Ja, es ist ein analoges Signal. Das wird von ein Ultraschallwandler
erfasst.
Also um nicht zu übertreiben, würde denn auch 1msps ausreichen?
welches Modul, oder ADC wandler würdet ihr mir empfehlen? Ich möchte das
mit ein esp32 benutzen. Wenn möglich, mit ein library für arduino.
Björn W. schrieb:> Sein MCP3008 kann nur 200kSps, ist also unbrauchbar.
Käse!
Laut Abtast-Theorem genügt die doppelte Abtastrate bezüglich
der maximal auftretenden Frequenz.
GAF (grösster anzunehmender Fehler) ist dass die Abtastung
nicht zeitlich äquidistant, also im festen Raster, erfolgt.
Das ergibt maximalen Mist.
Unabhängig von der optimalen Abtastrate kommt es mir komisch gor, dass
er unter 1000 Abtastungen nur 12 oder 24 mal einen HIGH Pegel erhält.
Ich würde erstmal messen, ob das Signal direkt am Eingang des ADC
wirklich ein 40 kHz Rechteck Signal ist.
Und ich würde den ADC mit einem Poti als Signalquelle testen, ob er
wenigstens bei DC plausible Werte ausgibt.
Erik H. schrieb:> Ich habe> bei einem 1khz nur 6 mal ein Hohen Pegel lesen können, bei einem> Rechteck Signal. Also habe ich nur ein Kanal ausgelesen, dann wurden 12> Werte gelesen. Das war für mich immer noch zu langsam. Also habe ich in> der library nachgeschaut und gesehen, dass es auf 1Mhz SPI Frequenz> läuft. Ich habe es Manuell geändert auf 3.6Mhz. Denn der Wandler läuft> mit 5V. Nun habe ich 24 Hohe Werte in 1khz. Aber wenn ich die 40 khz> auslesen möchte, dann ist das doch viel zu wenig.
Wenn Du nur Spitzenwerte messen willst, dann gibt es einfachere Methoden
die dann Dein MCP3008 auch besser umsetzen kann. Schau Dir die Schaltung
"Einfacher Diodendetektor" an.
https://de.wikipedia.org/wiki/H%C3%BCllkurvendemodulator
mfg Klaus
Klaus R. schrieb:> Wenn Du nur Spitzenwerte messen willst, dann gibt es einfachere Methoden> die dann Dein MCP3008 auch besser umsetzen kann.
Weder kann er formulieren was er genau will, noch hat er
Ahnung davon wie er das machen soll.
Danke Klaus, das gibt mir Hoffnung in eine andere Richtung die ich auch
ausprobieren werde. Evtl sogar die bessere Option.
Ich war erst im Gedanken die Frequenzen auszulesen mit Amplitude und da
eine Logik einzubauen. Aber umso höher die Geschwindigkeit vom ADC, umso
teurer und komplizierter werden die Dinger.
Erik H. schrieb:> Ich war erst im Gedanken die Frequenzen auszulesen mit Amplitude und da> eine Logik einzubauen. Aber umso höher die Geschwindigkeit vom ADC, umso> teurer und komplizierter werden die Dinger.
So ist es.
mfg klaus
Erik H. schrieb:> Aber umso höher die Geschwindigkeit vom ADC, umso> teurer und komplizierter werden die Dinger.
Je später der Freitag, um so skurriler werden die Ideen.
Die Leute mit den Scheuklappen (die einem daran hindern über
den Tellerrand hinauszusehen) eilen herbei und lassen den
Thread laufen, egal was der TO dazu oder nicht dazu beiträgt.
Vernünftige und konkrete Ideen kommen jedenfalls nicht.
Ich häng mich mal an den Thread ran, mit einer fast identischen
Fragestellung: Fledermausklassifizierer. Ultraschallwandler, Nutzsignale
im Bereich 20 bis 70 kHz, AD mit ca. 200ksps und mindestens 10bit
Auflösung. Mono reicht. Geht das mit einem ESP32? Welcher ADC?
Erik H. schrieb:> 40khzErik H. schrieb:> 1msps
Du solltest die richtigen Einheiten verwenden.
Man kann zwar erahnen, was du meinst, aber das schafft unnötige
Verwirrungen...
Uwe schrieb:> Ich häng mich mal an den Thread ran
Super, dann führen wir jetzt also zwei Diskussionen gleichzeitig im
selben Raum, und bei beiden weiß niemand, worum es geht. Aber hey, wird
schon.
Moin,
Wastl schrieb:> Käse!> Laut Abtast-Theorem genügt die doppelte Abtastrate bezüglich> der maximal auftretenden Frequenz.
Doppelkaese!
Es geht im Abtast-Theorem um die maximal auftetende Bandbreite, nicht
Frequenz.
Was evtl. hier, wenn man "nur" so um 40kHz herum was samplen moechte
ggf. die Sache vereinfachen koennte, wenn man wuesste was man tut.
scnr,
WK
Dergute W. schrieb:> wenn man wuesste was man tut
Das ist eine der entscheidenden Fragen, von der der TO ebenso
wenig Ahnung hat wie von vielen anderen. Bester Hinweis dafür
ist, dass er auf viele Nachfragen keine Antworten weiss. Denn
wenn Antworten kämen würde man merken wie wenig Ahnung er hat.
Uwe schrieb:> Ich häng mich mal an den Thread ran, mit einer fast identischen> Fragestellung: Fledermausklassifizierer. Ultraschallwandler, Nutzsignale> im Bereich 20 bis 70 kHz, AD mit ca. 200ksps und mindestens 10bit> Auflösung. Mono reicht. Geht das mit einem ESP32? Welcher ADC?
Wenn es um Fledermäuse geht, dann ist das schon der richtige Ansatz. Ich
hatte mir vor Wochen auf meinem Handy die App Spectroid installiert.
Oben sieht man die Amplituden des Frequenzbandes und unten sieht man den
zeitlichen Verlauf wie ein Teppich. Zunächst sieht man so gut wie rein
gar nichts. Dann fing ein Vogel anzutrellern. Und siehe da, man sah in
der Tat deutlich einen Verlauf der Melodie. Das hatte ich gar nicht so
erwartet, ist aber nur schlüssig.
Ich denke der TO will so etwas entwickeln.
mfg Klaus
Wastl schrieb:> Dergute W. schrieb:>> wenn man wuesste was man tut>> Das ist eine der entscheidenden Fragen, von der der TO ebenso> wenig Ahnung hat wie von vielen anderen. Bester Hinweis dafür> ist, dass er auf viele Nachfragen keine Antworten weiss. Denn> wenn Antworten kämen würde man merken wie wenig Ahnung er hat.
Er ist ja schon seit anderthalb Jahren am Thema:
Beitrag "Mosfet und Ultraschallsensor"
Da wird er wohl ein wenig Ahnung haben.
Richie schrieb:> Er ist ja schon seit anderthalb Jahren am Thema:
.... und de Facto nix passiert, Thread im Sande verlaufen.
Auch weil früh die Erkenntnis ausgesprochen wird:
Monk schrieb:> Dir fehlen Grundlagen.
Ihm fehlt so ziemlich alles, ausser der Fähigkeit Copy&Paste
auszuüben.
Wastl schrieb:> Bester Hinweis dafür> ist, dass er auf viele Nachfragen keine Antworten weiss. Denn> wenn Antworten kämen würde man merken wie wenig Ahnung er hat.
Ich würde sagen, am Anfang waren wir alle unwissend. Das ist ja keine
Schande. Es dauert eben Jahre um Handwerker zu werden und noch etwas
länger um Ingenieur zu werden. Im Laufe meiner Ausbildungen habe ich
immer gute Lehrer geschätzt. Die bringen einen auch wirklich weiter.
Wir haben doch gesehen das sich der TO bemüht. Das ist doch die
Hauptsache dabei. Immerhin hat er zumindest ein Oszi. Das hatte ich in
meiner Lehre noch nicht.
Also bitte seit etwas toleranter.
mfg Klaus
Alexander schrieb:> SPI geht bis 26 MHz da ist noch Luft nach oben. Kommt halt darauf was> sonst noch so läuft.
Es ist wenig hilfreich, wenn Du Unsinn schreibst.
SPI geht bis 80MHz bei diversen ESP32, selbst beim alten "ohne Zusätze".
Erik H. schrieb:> Das wird von ein Ultraschallwandler erfasst.
Welche Information soll aus dem Signal ausgelesen werden? Nicht, dass es
hier um das simple Vorhandensein, also die Hüllkurve des Signals geht
(Abstandsmesseng per US).
Gür alle am einfachsten ist es, wenn du beschreibst, was da von welchem
Wandler erfasst wird und wozu das gut sein soll. Und wenn du zudem noch
einen Schaltplan oder wenigstens eine Übersichtsskizze deines Systems
mit anfängst.
Richie schrieb:> Da wird er wohl ein wenig Ahnung haben.
Ist da nicht ein Wort zu viel im Satz?
Uwe schrieb:> Ich häng mich mal an den Thread ran
Mach für eine völlig neue Frage einen neuen Thread auf.
Erstmal sehr interessant wie ihr Meinungen über mich macht, nur weil ich
nicht sofort antworten konnte.
Ich kann auch nicht so sagen, wie ich es geschafft habe Verwirrungen zu
sorgen und weis grad nicht so genau wie ich als kleiner Hobby
Elektroniker das besser beschreiben kann.
Mein Vorhaben wollte ich erst nicht schreiben, weil ich einfach selber
etwas probieren wollte. Ich wollte halt nur wissen, was man da so an ADC
wandler verwendet. Oder evtl schon mein mit Code etwas falsch mache.
Ich hätte eher Sinuswelle sagen sollen. Naja, diese Kurven die am
Oszilloskop angezeigt werden.
Diese Höhen und Tiefen wollte ich auslesen/erfassen. Wieviel Volt eine
Welle ausgibt usw, die von ein Ultraschallsensor(Ein reiner Wandler, der
mit Operationsverstärker verstärkt wird) gelesen wird. Denn wenn eine
weitere Welle ein Objekt trifft, die etwas hinter dem ersten Objekt
steht, dann ist sie meistens noch hinter der ersten abgeprallten Welle.
Diese Wellen wollte ich auslesen, ob es auch 8 sind, die ich gesendet
habe. Dann wollte ich eine 35 khz Welle hinterher schicken, und die dann
erkennen und weiteres versuchen.
Da dachte ich, 200ksps würde für 40khz ausreichen. Zwar sehr Grob, aber
immerhin erkennbar. Das das Teil jetzt in dem Fall so langsam abfragt,
hat mir gezeigt, auch durch eure Kommentare, dass 200ksps viel zu wenig
ist. Denn anscheint habe ich bisher mit mein Code noch nix verkehrt
gemacht. 200ksps sind doch nix anderes wie 200khz, oder? Also, um eine
40khz Welle zu erkennen, bedarf es doch mehr Abtastungen, um auch mal
paar mal ins Tiefe zu messen und in den hohen Bereich. Sagen wir mal, 4
Tiefe Messungen und 4 Hohe Messungen, damit man sicher gehen kann, dass
es 40khz sind. Wenn ich nur 40ksps habe, dann wäre das nach mein Denken
sehr unlogisch ein vernünftigen Wert zu bekommen.
Klaus hat mir super ein anderen Weg gezeigt, den ich ausprobieren werde,
aber nicht gleich heißt, dass ich das hier so wollte, da einige deswegen
nochmal nachgefragt haben, was ich nun möchte.
Im anderen Thread habe ich ein Verstärker gebaut mit Filter usw. Den
habe ich so hoch aufgedreht, dass ich Rechteck Signale bekomme. Die habe
ich mit dem esp32 ausgelesen durch normale digital Eingänge, ohne ADC.
Das hat aber zu vielen Fehler geführt, da mein Verstärker einfach zu
hoch aufgedreht war und nicht die richtigen Operationsverstärker waren.
Hat nur bedingt geklappt. Aber so konnte ich durch die Schnelle Abfrage
des esp32 über 10 Hoch und über 10 Tief messen. Somit konnte ich die
Frequenz sehr gut erkennen, also die Wellenlänge und Anzahl usw. Beim
ADC habe ich nun mitbekommen, dass alles langsamer läuft.
Du hattest es irgendwo geschrieben (Spannung zu hoch?) aber warum nutzt
Du nicht einen der 12-Bit ADC Kanäle des ESP32 direkt? Mit
analogReadFast() kommst Du auf 40kHz.
Alexander schrieb:> Du hattest es irgendwo geschrieben (Spannung zu hoch?) aber warum nutzt> Du nicht einen der 12-Bit ADC Kanäle des ESP32 direkt? Mit> analogReadFast() kommst Du auf 40kHz.
ich probiere das nochmal. Ich weiß nicht mehr warum ich daran
gescheitert bin. Ist leider schon sehr lange her. Ich glaub
analogreadfast war nicht ausreichend. und dann wollte ich auch 2
Sensoren lesen, was ich jetzt vergessen habe zu erwähnen.
Aber ich probiere das nochmal. Meine alten Codes müsste ich ja noch
haben.