- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 25

Thema: Suche einfache Ultraschall Empfänger + Sender (halbe HC-SR04)

  1. #11
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    30
    Beiträge
    449
    Anzeige

    Praxistest und DIY Projekte
    Danke für deine Antwort Besserwessi!

    Zitat Zitat von Besserwessi Beitrag anzeigen
    Die Transducer sind halt Resonatoren im US-Bereich und haben eine relativ begrenzte Bandbreite. Dafür bekommt man mit relativ wenig Leistung eine brauchbare Amplitude und beim Empfänger gleich ein Filterung. Für die Laufzeitmessung ist das tatsächlich nicht ideal, aber so sind nun mal die üblichen Transducer. Das Problem ist halt mitzubekommen welche Periode man gerade empfängt. Die Datentransferrate ist halt durch die Bandbreite begrenzt: die dürfte so in der Größenordnung 1-5 kHz liegen - da sind 1 ms/Bit schon recht gut.
    Ja, die Filterung ist echt gut. Ich glaube den Bandpass kann ich mir sogar sparen. Von der Datenrate her bin ich inzwischen bei 0.5 ms/Bit angelangt

    Über eine etwas geänderte Signalform könnte man da noch einiges bei der Zeitmessung Verbessern:
    Eine Möglichkeit ist dabei als Signal erst etwa 10-20 Periode zu senden (so dass der transducher gut Ampltude erreicht) und dann die Phase um 180 Grad zu ändern - die Ampltude geht dann schnell zurück und auf die andere Phase. Der Empfänger wertet dann den Punkt aus, wo die Amplidude wieder annähernd Null wird. Mit einer Phasenstarren Auswertung (d.h schon etwas Aufwändiger als mit dem HC05 Modul), kann man den Zeitpunkt so recht genau Treffen und damit die Unsicherheit um ganze Perioden überbrücken.
    Genau so versuche ich es zu machen

    Der Code zum Senden benutzt schon so etwas wie eine Phasenmodulation: bei einem 1 Bit kommt die Extra Verzögerung dazu (sollte vermutlich besser etwa 12 µs sein, nicht nur 5 µs).
    Genau, dass es 12µs anstatt 5µs sein müssten (für 180° Phasenverschiebung) habe ich mir auch gedacht. Komischerweise schwingt der Empfänger aber komplett unbeeindruckt weiter. Ich habe vieles durchprobiert und 5µs scheinen am besten zu funktionieren. Warum das so ist weis ich noch nicht so recht..

    Das gibt dann beim Empfänger einen deutlichen Einbruch (einmal kurz durch Null) in der Amplitude und auch einen Sprung in der Phase - sofern der Empfänger das misst. Das ist schon ein recht robustes Protokoll. Vermutlich könnte man die Bits sogar noch etwas schneller senden. Bei mehr als etwa 16 Bits muss man sich ggf. noch Gedanken um die Syncronisation machen - wobei der Empfänger im Prinzip die US Periode zählen könnte. Schneller senden hätte den Vorteil, dass einem Echos nicht so dazwischen kommen.
    Insgesammt habe ich mir das so vergestellt / entwickelt sich es dahin:
    • Es gibt einen Master, Slaves dürfen nur auf Anfrage senden (Analog zu I2C)
    • 20 Perioden pro Bit
    • Ein Anfangsbit das einfach nur den Empfänger zum schwingen anregt
    • 2 Start-bits. Der richtige Abstand der beiden Bits weist darauf hin, dass es ein Paket ist (Und kein anderer Ultraschallsender). Ausserdem dienen die beiden Bits als Refferenzpunkt für die Zeitmessung
    • 16 Datenbits
    • 2 Parity bits
    • für high-bits gibt es eine steigende Flanke (siehe nachfolgenden Inhalt), damit die Snychronisation unterstützt (es zeigt sich nämlich, dass wenn sich Dinge in unmittelbarer Umgebung bewegen es (augenscheinlich) leichte zeitliche Verzerrungen geben kann)


    Zum Aktuellen Status. Das ist mein aktueller Versuchsaufbau:
    Klicke auf die Grafik für eine größere Ansicht

Name:	versuchsaufbau.jpg
Hits:	13
Größe:	78,8 KB
ID:	29033
    Rechts der Sender, der direkt an einen Atmega8 angeschlossen ist. Links der Empfänger.

    Klicke auf die Grafik für eine größere Ansicht

Name:	enconding_part1.jpg
Hits:	14
Größe:	42,3 KB
ID:	29034
    Die symmetrische durscheinende Fläche ist das empfangene Signal (Es sieht so zerhackt aus wegen der chopped-Darstellung). Dieses schwingt um ca. 1.3V und wird durch einen CA3140 als Impedanzwandler gejagt. Anschließend einfach gleichgerichtet und durch C mit R-Last gepuffert, dadurch bleibt nur noch die Amplituden-Kontur der oberen Hälfte bestehen.

    Klicke auf die Grafik für eine größere Ansicht

Name:	enconding_part2.jpg
Hits:	15
Größe:	32,6 KB
ID:	29035
    Von der Amplituden-Kontur wird ein zweites ganz leicht phasenverschobenes Signal erzeugt (R+C), dann werden beide in einen Komparator (CA3140) geführt. Dadurch zeigt der Komparator an ob die Kurve steigt oder fällt (Durch Hysterese werden ganz kleine Schwankungen ignoriert).

    Das Ganze funktioniert so gut, dass man bei guten Bedingungen (=obiger Versuchsaufbau) schon allein an der Ausgabe des Komparators die Daten rekonstruieren kann, ganz ohne den Spannungswert der Kontur-Kurve zu beachten.

  2. #12
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    72
    Beiträge
    11.077
    Das letzte Oszibild schaut wirklich sehr gut aus. Ich möchte bloss nahe Hindernisse detektieren und wegen ausreichender Selektivität und kleinsten Gewicht nur einen Transducer sowohl für Senden als auch Empfangen verwenden. Ich habe schon ein US Modul total zerlegt und gesehen dass die zwei Transducer mit unterschiedlichen Buchstaben ("R"eceiver und "T"ransmitter) markiert waren.

    Deshalb habe ich kleine bitte an den -schumi- : falls möglich, bitte die Transducer im Versuchsaufbau nur kurz zu vertauschen um festzustellen, ob sie sich wirklich bedeutend unterscheiden. Herzlichen Dank dafür im voraus.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  3. #13
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Ein Grund wieso es nur 5 µs für den Sprung sind, könnte sein, dass die Abfrage davor auch noch etwas Rechenzeit braucht. Das könnte noch etwas besser werden, wenn man die letzte Periode vor der Abfrage an die Rechenzeit anpasst und etwas kürzer macht. So hat man halt immer etwas Verzögerung dazu: Man sieht auch bei den folgen von 0 Bits noch ein bisschen Struktur. Eine zusätzliche Verzögerung von 5-7 µs allein durch die IF Abfrage kommt mir aber auch recht lang vor. Man könnte es ggf. am Sendesignal erkennen. Wie schnell läuft denn der µc ?
    Durch ein nicht ganz ideale Frequenz könnte es ggf. auch noch zu ein paar Verschiebungen kommen. Da müsste man ggf, wirklich auf ASN zurückgreifen, oder das Signal per Timer (PWM bzw. Waveform-Generator mode) erzeugen. Damit wäre man von der Programm-Laufzeit weg.

    So wie das Signal Aussieht könnte man vermutlich noch bis 0,25 - 0,3 ms je Bit runter gehen - das wäre dann etwa 10-12 Perioden statt 20. Es sollte ausreichen wenn die Amplitude bei einem 0 Bit (als ohne Störung) bis auf etwa 70% des Maximalwertes hoch geht. Länger warten bringt nicht mehr so viel. Nur die Synchrornisation braucht dann ggf. besser ein 101 statt zwei 1 Bits.

    Das Signal sieht so schon sehr gut aus, auch schon einfach nur mit dem Komparator. Im realen Fall muss man aber vermutlich das ganze noch an eine variabel Amplitude anpassen. Mit dem Direkten Signal, also ohne Reflexion wird das Signal ggf. sogar noch Stärker ! So ganz schnell ist das Amplituden-Signal auch nicht mehr - das könnte der µC ggf. auch per ADC auswerten. Für die Daten reicht es ja die Amplituden zu den passenden Zeiten Auszuwerten - die Komparatorschaltung wäre mehr etwas zur Synchronisation und für die Abstandsmessung.

    Der ADC im AVR ist leider relativ langsam, sonst könnt es ggf. auch klappen die Auswertung größtenteils in Software zu machen: Das Signal mit z.B. 160 kHz Abtasten und dann Rechnen - wegen des begrenzten Speichers, so dass man in Echtzeit damit fertig wird.

  4. #14
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    30
    Beiträge
    449
    Zitat Zitat von PICture Beitrag anzeigen
    falls möglich, bitte die Transducer im Versuchsaufbau nur kurz zu vertauschen um festzustellen, ob sie sich wirklich bedeutend unterscheiden. Herzlichen Dank dafür im voraus.
    Also die Amplitude bricht um ca. <edit> 2/3 </edit> ein und die Modulation funktioniert nicht mehr so (keine Nulldurchgänge der Amplitude mehr). Wenn du nur senkrechte Flächen und kleine Abstände hast könnte es wohl gehen

  5. #15
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    @Picture:
    Die Transducer sind schon etwas verschieden. Die Resonanzfrequenz und die Güte ist etwas unterschiedlich und der Empfänger ist etwas hochohmiger (weniger Kapazität). So dramatisch ist der Unterschied nicht - die Amplitude wird halt es etwas kleiner und es rauscht ggf. etwas mehr. Es gibt ja die Module mit nur einem Transducer. Bei kurzer Entfernung ist die Amplitude eher nicht das Problem. Eher hat man ein Problem das die Restamplitude von der Anregung abgefallen sein muss, bevor man vernünftig was empfangen kann. Ein bisschen kann man da am Anfang Tricksen mit der Phase, aber dann wird man ein paar ms Warten müssen das die Eigenschwingung abklingt. Entsprechend muss man mit einer Totzeit von vielleicht 2-5 ms oder 0,3-0,7 m Mindestabstand rechnen.

  6. #16
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    72
    Beiträge
    11.077
    Schönsten Dank an Ihr beide, dann werde ich sicher versuchen, weil ein Abstand vom Hindernis um 10 cm reicht fast sicher aus.

    Zitat Zitat von Besserwessi Beitrag anzeigen
    Die Resonanzfrequenz und die Güte ist etwas unterschiedlich und der Empfänger ist etwas hochohmiger (weniger Kapazität).
    Deshalb sollte es mit einem noch besser funktionieren.
    Geändert von PICture (09.09.2014 um 21:05 Uhr)
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  7. #17
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Der ein Transducer wird besser gehen als der andere, aber beide haben eine relativ hohe Güte und brauchen entsprechend relativ lange zum Abklingen. Nach den Typischen Kurven in den Datenblättern liegt man so bei etwa 2-5 kHz Bandbreite. Aus den Kurven oben kriegt man auch eine Zeitkonstante für da Abklingen von etwa 0,2-0,5 ms. Von den Zeiten wird man so etwa 0,2 ms Senden müssen, dann noch mal etwa 0,1 ms zum Aktiven reduzieren der Amplitude und dann halt noch einmal 2-3 Zeitkonstanten warten. Da wird man kaum unter 1 ms kommen, bevor man Empfangen kann. 10 cm wird also kaum drin sein - 20 cm vielleicht. Mit anderen stärker gedämpften Transducern, etwa den Wasserfesten könnte es gehen.

    Im Prinzip ist die Dämpfung von der äußeren Beschaltung abhängig - ganz ausgeschlossen ist es also nicht da auch Aktiv die Schwingung zu Dämpfen. Es dürfte aber einfacher sein 2 Transducer zu nutzen. Damit sollte es auch kürzer gehen - man kann dann auch gleichzeitig senden und Empfangen.

  8. #18
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    72
    Beiträge
    11.077
    Ich habe gerade aus 5 vorhandenen chinesischen US Modulen hc-sr04 die 10 Transducers ausgelötet und vermessen. Alle haben Kapazität im Bereich 2,00 bis 2,25 nF. Die Resonanzfrequenz brauche ich bei einem Transducer für Senden und Empfangen nicht messen.

    Beide ungekenzeichnete Transducer aus dem Kemo-Bausatz von Pollin: http://www.pollin.de/shop/dt/NTg5OTE...ndswarner.html haben gleiche Kapazitäten 1,4 nF.

    Übrigens, das Minimieren des Abklingens werde ich per Reduzieren der Amplitude versuchen, weil ich Hindernisse nicht weit suchen muß und es sollte sehr energiesparsam sein.
    Geändert von PICture (10.09.2014 um 10:06 Uhr)
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  9. #19
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Ein kleinere Amplitude reduziert das Problem mit dem Abklingen nicht wirklich. Es wird halt beides kleiner: die Störungen und das Signal. Was man machen kann, ist so ähnlich wie hier mit der Modulation, einen Phasensprung einzubauen und die Amplitude damit so gut es geht zurück zu fahren - ggf. könnte man dass sogar in einer Art Regelschleife Optimieren. Das geht halt schneller als der Exponentielle Abfall, geht aber nicht perfekt. Über die Beschaltung (Lastwiderstand passend zur Impedanz) kann man die Dämpfung ggf. auch noch etwas erhöhen. Es hängt dann stark davon ab, wie stark das Hindernis zurück streut, ob das Echo stärker ist als das unvermeidliche Nachklingen.
    Realistische Chancen hätte ggf. die Nachregelung der Anregung, so dass man mit fast 0 Amplitude aufhört. Also direkt nach der Anregung schon messen, und die Anregung automatisch so anpassen (Nachregeln der Phase bzw. Frequenz und der Stärke des Dämpfungspulses), dass man direkt nach der Anregung fast kein Signal bekommt. Um wirklich nahe 0 zu kommen wird man vermutlich nachregeln müssen, denn mit der Temperatur wird sich die Frequenz/Dämpfung etwas verschieben.

    Eine andere Möglichkeit wäre ggf. noch absichtlich nicht bei der Resonanzfrequenz zu senden und Empfangen, sondern ein paar kHz daneben, so dass man das Signal von der Resonanz unterscheiden kann. Das erfordert allerdings schon eine relativ Aufwendige Auswertung, etwa mit Phasenstarrer Detektion.

    Vom Aufwand ist aber der 2. Transducer wohl einfacher.

  10. #20
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    30
    Beiträge
    449
    Zitat Zitat von Besserwessi Beitrag anzeigen
    Ein Grund wieso es nur 5 µs für den Sprung sind, könnte sein, dass die Abfrage davor auch noch etwas Rechenzeit braucht. Das könnte noch etwas besser werden, wenn man die letzte Periode vor der Abfrage an die Rechenzeit anpasst und etwas kürzer macht. So hat man halt immer etwas Verzögerung dazu: Man sieht auch bei den folgen von 0 Bits noch ein bisschen Struktur. Eine zusätzliche Verzögerung von 5-7 µs allein durch die IF Abfrage kommt mir aber auch recht lang vor. Man könnte es ggf. am Sendesignal erkennen. Wie schnell läuft denn der µc ?
    Weil der interne Oszillator zu ungenau ist um eine Phasnverschiebung um 12µs hinzubekommen (anderer µC -> funzt nicht mehr) habe ich jetzt am Sender einen 12MHz quarz dran. Jetzt sieht das ganze auch schon viel besser aus: Die Wartezeit ist 10µs, die restlichen 2µs gehen vermutlich für das IF usw drauf.

    So wie das Signal Aussieht könnte man vermutlich noch bis 0,25 - 0,3 ms je Bit runter gehen - das wäre dann etwa 10-12 Perioden statt 20. Es sollte ausreichen wenn die Amplitude bei einem 0 Bit (als ohne Störung) bis auf etwa 70% des Maximalwertes hoch geht. Länger warten bringt nicht mehr so viel. Nur die Synchrornisation braucht dann ggf. besser ein 101 statt zwei 1 Bits.
    Leider musste ich sogar wieder auf 1ms/Bit rauf.. Das liegt daran, dass erst nach so langer Zeit die Amplitude des Empfängers nicht mehr weiter steigt. Ansonsten hat man wenn zwei mal 1 hintereinander gesendet wird eine kleinere Spitzenamplitude als bei 101, was die Zuverlässigkeit der Übertragung deutlich schmälert.

    Das Signal sieht so schon sehr gut aus, auch schon einfach nur mit dem Komparator. Im realen Fall muss man aber vermutlich das ganze noch an eine variabel Amplitude anpassen. Mit dem Direkten Signal, also ohne Reflexion wird das Signal ggf. sogar noch Stärker ! So ganz schnell ist das Amplituden-Signal auch nicht mehr - das könnte der µC ggf. auch per ADC auswerten. Für die Daten reicht es ja die Amplituden zu den passenden Zeiten Auszuwerten - die Komparatorschaltung wäre mehr etwas zur Synchronisation und für die Abstandsmessung.
    Also ich mache es im Moment mit zwei Komparatoren: Der eine Zeigt an ob das Signal steigt oder fällt (also die Flanken) und der andere ob das Signal über Spitze/2 ist oder nicht (also den Pegel). Wenn eine high-Flanke anfängt und der Pegel (noch) low ist (Nulldurchgang = 1) wird es als eine 1 gewertet. Falls keine Flanken kommen oder der Pegel high ist wird als 0 gewertet.

    Hier der Sender.
    Klicke auf die Grafik für eine größere Ansicht

Name:	Sender.jpg
Hits:	12
Größe:	109,6 KB
ID:	29039
    Atmega8 mit besagtem 12MHz Quarz. Die Leitung ist die Versorgungsspannung (4.3V, was vom USB noch so übrig bleibt )

    Der Empfänger:
    Klicke auf die Grafik für eine größere Ansicht

Name:	Empfänger.jpg
Hits:	12
Größe:	86,5 KB
ID:	29040
    Poti links ist für die Spannung um die das Empfängssignal schwingt. Der IC links ist ein CA3140 als Verstärker, das ist der einzige OP den ich da habe der schnell genug ist. Dummerweise kann der bei 5V single supply nur ca. 2.5V maximal ausgeben -> hier muss noch was anderes her. Das Zweite Poti ist die Last für den C, der die Spannung für die Kontur-Kurve puffert. Rechter IC sind 4x OPs, zwei davon als Komparator (Flanken + Pegel)

    Und so sieht das am Oszi aus:
    Klicke auf die Grafik für eine größere Ansicht

Name:	Signals.jpg
Hits:	15
Größe:	26,8 KB
ID:	29041


    Und es funktioniert erstaunlich gut! Über eine Strecke von 6m kann ich das Byte schon stabil übertragen!

    Nur bei Störungen hat man eine Chance von 25% dass die Checksumme stimmt (2bit), von daher können da manchmal Fehler passieren.. (-> längere Checksumme)

    Und dabei gibt es noch Verbesserungspotenzial:
    • CA3140-Alternative mit rail-to-rail
    • MAX232 für Sender

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Ähnliche Themen

  1. Ultraschall sender/empfänger verschiedene fragen
    Von pointhi im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 15.01.2012, 16:51
  2. Suche Sender / Empfänger für Katzenhalsband
    Von Moebius im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 7
    Letzter Beitrag: 02.08.2010, 13:24
  3. wie beschaltet man Ultraschall-Sender/-Empfänger ?
    Von Jango1987 im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 09.07.2009, 14:33
  4. Antworten: 3
    Letzter Beitrag: 17.02.2008, 18:02
  5. HILFE: Suche Sender/Empfänger
    Von bp1 im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 30.04.2007, 23:31

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test