PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ultraschalldistanzmessgerät



Inkoknito
24.10.2009, 18:07
Hallo Leute,

wie der Name scon sagt geht es um Ultraschalldistanzmessung. Bei der ich eine kleine Frage habe. Ich habe habe auch schon gegooglt und gemacht aber bin leider nicht auf eine Antwort gekommen.
Wie das Prinzip funktioniert ist mir klar, aber wie genau ich es mit dem µC verbinde noch nicht ganz.

Vieleicht könnt ihr mir helfen und sagen wie ich das ganz mit dem µC auswerte, also nur im Groben den restlichen Weg find ich schon : )
Also welches Signal ich vom Start und welches ich vom Ende der Laufzeit benutze habe auch etwas gelesen das nur ein kurzer Impuls ausgesendet wird und nicht die ganze Zeit die 40khz.

danke danke : )

021aet04
24.10.2009, 18:38
Ich würde mit einem Ausgang den Sender einschalten wenn du kurz messen willst. Wenn der Sender den ersten Impuls sendet würde ich das mit dem µC detektieren und einen Zähler starten. Wenn der Empfänger den ersten Impuls bekommt giebst du ihn auf den µC und stoppst den Zähler. Je höher jetzt der Zählerstand ist, desto länger ist der Impuls "unterwegs". Du nimmst dan die halbe Laufzeit x die Schallgeschwindigkeit und du hast die Distanz.

KingTobi
24.10.2009, 18:52
Ich kann den empfehlen http://www.rn-wissen.de/index.php/Ultraschall_SRF10_an_RN-Control
Braucht nur einen Pin am µC. Erzeugung des Pulses macht das Modul selbst, brauchst nur noch auf die Antwort warten, im Prinzip so wie 021aet04 das beschrieben hat.

Herkulase
25.10.2009, 11:25
kann mich dem nur anschließen, habe ein "Objekt" gebaut mit acht SRF02 über i2C. Funktioniert wunderbar, ohne jeglichen Aufwand. Und teuer sind die auch nicht wirklich, ich denke, billiger bekommstes im Selbstbau nicht hin. Es sei denn, du willst was dabei lernen, dann ist ein SB sicher spannend.

Inkoknito
22.11.2009, 11:44
hallo,

bin bei meinem Bau mit dem Ultraschllsensor schon weiter gekommen. Ich habe Sender und Empfänger schon getestet funktioniert prima, allerdings nur am Oszi und mit Funktionsgenerator. Da sieht man Prima die Phasenverschiebung bzw die Laufzeit des Schalls.

Nun geht es ans Programmieren.

ich möchte mit dem Mega8 40khz erzeugen, klappt leider nicht ganz so wie ich mir das vorstelle, die Pwm bekomme ich nicht auf eine so hohe Frequenz, ich nehme mal an das es daran liegt das der mega8 nur mit 1Mhz internen Takt läft und den bekomme ich leider auch nicht höher da ich mit meinem myavrusb und Bascom die Fusebits irgendwie nicht verändern kann.
Vieleicht hat jemand noch eine Idee wie ich die 40Khz erzeugen könnte.

So nun habe ich noch eine Verständnis Frage. Nach einigen I-net Seiten die gelesen habe, sollte ich einen Burst erzeugen d.h. ein Serie von Schingungen. Z.B. 8 Perioden der 40khz diese werden dann ausgesendet und gewartet bis sie wieder auf den Empfänger treffen und dieser auf High geht.
Jetzt das eigentliche Problem, ich weiß nicht ganz wie ich das anstellen soll in der Progammierung?
Ich komme auf keinen Ansatz wie ich den Burst starte oder ihn erstmal erzeuge. Ganz davon zu schweige wie ich ihn wieder erkenne und dann verarbeite...

Vieleicht habt ihr für mich einen kleinen Ansatz... : )

Es geht mir hier darum etwas so lernen, ich weiß es gibt die Sensoren ja auch schon fertig. Daher hab ich mir auch schon mal den SRF05 zugelegt und war begeistert wie genau dieser funktioniert :)

merci

Besserwessi
22.11.2009, 16:09
Auch bei 1 MHz takt kann man per PWM ein 40 kHz Signal erzeugen. Das geht mit Fast-PWM und wenn man den TOP wert auf 24 oder 25 setzt. Das signal hat dann zwar nicht genau 50% Tastverhältnis, aber das sollte nicht so stören.

Thomas$
22.11.2009, 16:25
du brauchst da noch bissel mehr hab ich feststellen müssen (40khz recht eck ganz easy doch sinus kannste vergessen) du brauchst dann eine elektrischen bandpass denn bei 40khz wirds auf atmel selbst bei 16mhz enge.
und noch was zum senden du kannst einen bürst senden da hörst du aber den ersten impuls als klack das nervt also brauchst du irgendwas in der zusatz elektronik das das langsam ansteigen läst.

Thomas$
22.11.2009, 16:42
du brauchst da noch bissel mehr hab ich feststellen müssen (40khz recht eck ganz easy doch sinus kannste vergessen) du brauchst dann eine elektrischen bandpass denn bei 40khz wirds auf atmel selbst bei 16mhz enge.
und noch was zum senden du kannst einen bürst senden da hörst du aber den ersten impuls als klack das nervt also brauchst du irgendwas in der zusatz elektronik das das langsam ansteigen läst.

Richard
22.11.2009, 18:31
Auch bei 1 MHz takt kann man per PWM ein 40 kHz Signal erzeugen. Das geht mit Fast-PWM und wenn man den TOP wert auf 24 oder 25 setzt. Das signal hat dann zwar nicht genau 50% Tastverhältnis, aber das sollte nicht so stören.

Was ist mit dem "Sound" Befehl? Ich habe den noch nicht gebraucht
vermute (Weil in keiner dafür verwendet) das der so hohe Frequenzen
nicht erzeugen kann?

Gruß´Richard

rockin_santa
22.11.2009, 19:56
Ich weiß nicht, wie es mit BASCOM geht, aber in Assembler oder C ist ein Burst sehr einfach zu realisieren. Zähler via CTC den Pin wechseln lassen. Den Überlaufwert vorher auf die Frequenz abstimmen. Dann via IRQ Überläufe zählen und nach z.b. 16 Überläufen Zähler stoppen. Dann hast Du einen Burst erzeugt, ohne wirklich Rechenkapazität zu verbrauchen.
Eine Rechteckspannung ist für den Sender besser, weil er einen höheren Schalldruck hat, als bei einem Sinussignal.
Wenn Du Englisch kannst, habe ich hier ein paar gute Links, die auch mir geholfen haben:

http://freenet-homepage.de/uffmann/Ultrasonic.html
http://www.micro-examples.com/public/microex-navig/doc/090-ultrasonic-ranger.html

Thomas$
22.11.2009, 21:55
rechtck hat leider die eigenschaft das man die erste flanke allen frequensen zu ordnen kann und damit als KLACK hört

Besserwessi
22.11.2009, 22:12
Der Hörbare Klack kommt eher von den niedriegen Frequenzen, und die sind vor allem drin wenn man den Verstärker vorher nicht auf mittlerer Spannung hat, sondern halt auf einem Extemwert. Da kann ein einfacher RC hochpaß schon reichen und das Klacken sollte weg sein.
Mit Rechteck kreigt man vor allem zusätzliche Oberwellen, also höhere Frequenzen.

Wenn man unbedingt will, kriegt man mit 16 MHz Takt und eine DA Wandler auch ein 40 KHz sinus per Software DDS (allerdings wohl nur in ASM). Das ist hier aber wirklich übertrieben.

wkrug
23.11.2009, 08:27
Ich hab auch das Problem, das ich eine Frequenz mit dem ATMEGA 16 erzeugen muß.
Meine Lösung wäre, den Timer 1 im CTC Mode zu betreiben und den OC1A Pin damit zu toggeln.
Dabei sollte am OC1A Pin eine symmetrische Rechteckspannung mit einstellbarer ( OCR1A Register ) möglich sein.

Die Frequenzerzeugung würde dabei komplett in Hardware laufen.
Die Ein und Ausschalterei der Frequenz müsste dabei über die Konfigurationsregister des Timers 1 erfolgen.

Die Formel im Datenblatt lautet (F-TAKT)/(2*N*(1+OCR1A))=F-OUT.
Bitte selber im Datenblatt nachschauen, hab das jetzt aus dem Kopf gemacht.

Durch eine geeigneten Vorteiler Faktor- es sollten möglichst hohe OCR1A Werte entstehen - sollten sich die 40kHz ziemlich genau einstellen lassen.

Das mit dem Hochpaß vor dem Ultraschallsensor würde ich so unterschreiben.
Eine weitere Möglichkeit wäre, die Toggle Routine per Software zu machen und dabei 2 Ports gegenphasig anzusteuern.
Ich kenn jetzt die Impedanz der Ultraschallkapseln nicht, aber wenn die 10...20mA des Controllers reichen, wär das eine gute Methode zur Leistungssteigerung.
Die Abschaltung des Tones wär dann auch ganz einfach, man setzt einfach beide Ports nach 0 und lässt die Routine diese auch nicht mehr ohne Nutzereingriff einschalten ( Ein Flag, das in der Toggle Routine abgefragt wird ).