PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ultraschallsensor an Atmega anschliessen?



MarkusH
17.12.2004, 23:28
Hallo!
Ich bin relativ neu hier und probier seit einiger Zeit mit meinem Atmega rum. Hab jetzt aus ner alten Polaroid das US-Modul ausgebaut. Das modul scheint soweit zu funktionieren aber ich hab keine ahnung wie ich es an meinen Atmega8 anschließen soll. Reicht es wenn ich die echo leitung des Moduls an einen eingang anschließe und einfach die zeit bis zum ersten high auf diesem port messe? Danke für eure Hilfe. Gruß, Markus

MarkusH
18.12.2004, 12:06
Weiß jemand was an dem echo pin überhaupt ankommt? Brauch ich vielleicht noch irgendwelche anderen Pins? Laut einer Anleitung die ich gefunden habe gibt es noch pins wie OSC, Filter, BLNK und BINH. Ich hab keine ahnung was das sein soll. Ich hab grad versucht mit nem Oszilloskop was rauszukriegen... kommt es vielleicht nicht auf die Voltzahl am ECHO-Pin an sondern auf die Frequenz des Signals? Haben Gleichströme überhaupt irgendwelche frequenzen? Das gibts doch blos bei wechselstrom oder??? Ich glaube mir fehlt hierzu das Grundwissen. Hat jemand vielleicht nen guten link? Hab bisher nur seiten gefunden wo steht wie man das US-Modul ausbaut und beschaltet. Aber nirgends wie man es verwenden soll.

voidpointer
21.12.2004, 08:47
Markus,

ich habe zwei solche US-Module von Polaroid daheim. Hatte vor, diese mit einem ATMega anzusteuern. Die Beschreibung liegt dabei - wenn man es mehrmals durchliest, kommt man drauf, wie es geht ;-)

Die Ansteuerung war relativ einfach. Das Timing ist wichtig. In definierten Zeitabständen muss ein Signal an einen Pin gegeben werden, dann sendet das Modul 16 Schwinungen aus und wenn das Echo eintrifft, kannst Du es am Echo-Pin abfragen. Aus der Laufzeit wird die Entfernung berechnet. Je nach Anwendungsfall können auch Mehrfachechos empfangen werden.

Hier spontan ein Link. Falls Du mehr Info möchtest, kann ich nochmal nachschauen.
http://www.uoxray.uoregon.edu/polamod/
Ausserdem gibt es noch eine Diplomarbeit von Oliver Dahlmann (Hochschule für angewandte Wissenschaften Hamburg), welche verschiedene Module und Methoden beschreibt. Leider funktioniert der Link gerade nicht, aber Google findet ihn.

Gruß, Achim.

P.S. Versucht es doch mal mit Rechtschreibung - die Beiträge sind dann echt besser lesbar...

voidpointer
21.12.2004, 23:03
Mann pebisoft, war das Kirgisisch, oder was? 8-[

@Markus:
Also ich habe jetzt nochmal nachgeschaut. Es geht um das Modul 6500. Das hat einen INIT-Eingang, der mit 4 nummeriert ist. Dieser ist wichtig. BINH oder BLNK kann man erstmal ignorieren. INIT muss solange auf HIGH gesetzt werden, bis an Echo ein HIGH ankommt. Das ist der gesamte Ablauf für einen sog. "Single-Echo-Mode cycle without blanking input".

Man kann das Modul wie gesagt auch für mehrfache Echos verwenden ("Multiple-Echo-Mode cycle with blanking input"). Dazu müssen BLNK und BINH in bestimmter Weise angesteuert werden. Aber die einfache Variante genügt erstmal.

Falls Du es hinkriegst, würde ich mich über Info von Dir freuen (Schaltplan , Assembler-Code usw.). Bin leider noch nicht dazugekommen, es selbst auszuprobieren.

Achim.

MarkusH
22.12.2004, 17:09
Also, ich habs jetzt mal ausprobiert und es hat auf anhieb funktioniert, sowas ist mir ja noch nie passiert.
@voidpointer
Hattest recht, ich hab einfach die init-leitung über nen transistor an den Atmega angeschlossen. Und die echo leitung. Jetzt einfach nur noch mit dem Atmega den init-pin auf high setzen und gleichzeitig nen timer starten der per interrupt am echo pin gestoppt wird. fertig. Hab jetzt nen schaltplan und Bascom-code falls du was davon haben willst.

Ich denke ich werde das modul einfach über den Atmega aus und wieder einschalten um erneut pingen zu können da das mit dem BLNK und BINH wohl noch keiner so richtig hinbekommen hat. Ausserdem ist es eigentlich auch überflüssig.
Danke für eure hilfe!

Ach ja, die messwerte für verschiedene entfernungen scheinen nicht gerade linear zu sein. Gibts da irgend ne ultimative formel zum entfernungen berechnen?

voidpointer
23.02.2005, 14:16
Hallo Markus,

ich weiss nicht, ob Du noch an dem Thema dran bist. Habe gestern eine fliegende Verdrahtung von meinem ATMega8 zum Polaroid-Modul gebaut. Nach ein paar Schwierigkeiten mit der Software habe ich das Ding zum Senden gebracht. Allerdings habe ich aus Vorsicht das ECHO-Signal noch nicht mit dem ATMega verbunden.

Auf dem Oszi sah das ECHO sehr dürftig aus - hatte nur wenige Millivolt. Aber ich habe gelesen, dass man es mit 4.7 kOhm gegen Vcc pullen soll. Das werde ich heute abend probieren. Auf ein paar interessanten Webseiten habe ich auch Info gefunden, wie man das Modul noch störsicherer machen kann.

Was ich noch nicht gefunden habe, sind Aussagen zum Timing. In welchem zeitlichen Abstand kann ich denn Impulse senden? Sind 40 ms zu knapp? Theoretisch müsste doch bei einer maximalen Reichweite von 10 Metern eine Laufzeit von 30 ms ausreichen, oder?

Hast Du das Problem mit der Nichtlinearität gefunden? Ich habe gelesen, dass das Modul in den ersten 2.38 ms die Impulse sendet und währenddessen ein internes "Blanking" steuert. Diese Zeit zählt jedoch mit zur gemessenen Zeit und könnte somit das Ergebnis verfälschen. Es kommt noch dazu, dass ECHO nicht gleich beim ersten empfangenen Impuls gesetzt wird, sondern erst, wenn das Signal sicher als Echo identifiziert wurde. Auch diese Zeitspanne kann das Ergebnis ungenau machen.

Ich möchte später das Polaroid-Modul mit 6V versorgen, den ATMega aber nur mit 3.3V. Der ATMega soll das Modul direkt triggern, ohne Transistor. Das sollte laut Handbuch auch funktionieren. Die Frage ist, ob ich auch das Echo ohne Schutzmaßnahmen direkt an ATMega hängen kann...

Gruß, Achim.

23.02.2005, 16:15
Hi, ich bins, Markus, bin grad im geschäft und weiß mein Passwort nicht :-)
Habe erst gestern wieder mit dem verfluchten ding rumprobiert. Irgendwie funzt es nicht mehr. Bzw erst ab 1m abstand zum objekt und dann kommen jedes mal werte raus die höllisch schwanken. Jetzt wo du das sagst... ich muss auch mal mein oszi an den echo-pin klemmen. Das Blanking ist doch kein Problem, ist doch immer die gleiche zeit. Warum willst du das Modul mit 6V ansteuern? Das braucht doch nur 5?! Wenn du das echo gegen die Vcc mit 3,3V vom Atmega pullst, könnte es doch gehn oder? Zum Thema Störsicherheit hab ich noch nen Elko zwischen GND und Vcc geschaltet weil das Modul während dem Ping so viel schluckt das es mir machnmal zusammengebrochen ist und kein echo registriert hat. Da hab ich auch ewig rumgesucht. Ich meld mich später nochmal wenn ich mein oszi drangeklemmt hab. Grüßle

voidpointer
23.02.2005, 16:46
Warum willst du das Modul mit 6V ansteuern? Das braucht doch nur 5?!
Du hast recht. Ich hatte vor einiger Zeit die Info, dass es zwischen 6 und 8 Volt braucht. Mittlerweile bin ich auch schlauer. Aber die Anwendung, wo es mal rein soll, hat zwei geregelte Spannungen, eben 5V und 3.3V. Zur Regelung nehme ich je einen Low-Drop-Regler, der 250mV Differenz braucht. Da bot sich ein 5-Zellen-Akku (nominal 6V) als Spannungsquelle an. Weil das Sonar soviel Strom zieht, soll es eben direkt an den Akku dran. Bin zwar kein Experte in Sachen Analogelektronik, aber sollte prinzipiell gehen.

Wegen der Störungen empfehle ich den Link http://www.acroname.com/robotics/info/articles/sonar/sonar.html . unter "Noise Issues" steht, dass man BINH am besten noch auf dem Modul gegen GND legen soll, falls es nicht benötigt wird. Der von Dir genannte Elko wird auch empfohlen.

Ich bin gespannt auf Deine Timing-Info.

Spaß, Achim.

MarkusH
23.02.2005, 17:39
Also, ich hab mir meine schaltung nochmal angeguckt. Ich hab den Echo-Pin über nen 12KOhm Widerstand auf +5V gelegt und greife das signal über nen 100Ohm Widerstand ab. Die 100Ohm einfach nur so zur sicherheit damit das signal halt nicht voll in den AVR reingebollert wird. Mein Oszi sagt das wenn das Modul eingeschaltet ist, die echo leitung auf 0V gezogen wird, sobald ein echo empfangen wurde geht er aber auf volle 5V hoch. Also bei deinen paar mV läuft wohl irgendwas falsch. Wegen dem timing hab ich mir noch nie gedanken gemacht weil ich bisher daran dachte das modul nur einzusetzen wenn ichs brauche um mal schnell nen ping abzugeben. Zumal ich es per AVR nach jedem ping koplett abschalte (sonst fuzt der ping nicht mehr) was ja auch ein bissel zeit benötigt. Aber ständig zu pingen wär auch ne sinnvolle idee... wenn es nur etwas genauer wäre.

voidpointer
24.02.2005, 08:23
Jo, mit dem Pull-Up funktioniert es besser. Ich glaube, es ist egal, ob man 4.7k oder 12k nimmt. Irgendetwas in diesem Bereich wird passen.

Über Fast-PWM lege ich alle 40 ms den OCR1B - der an INIT hängt - für 36 ms auf High. Das ECHO-Signal erfasse ich über ICP1 mit einer entsprechenden Interruptroutine. Dort wird der Zählerstand von ICR1 ausgelesen und in Millimeter umgerechnet. Dieser Wert wird über die serielle ausgegeben. Ich habe nur noch ein kleines Softwareproblem: die Interruptroutine wird pro Zyklus zweimal aufgerufen, einmal beim Timer-Overflow und das zweite mal beim eigentlichen Input-Capture. Weiss nicht, was da falsch läuft, aber habe es abgefangen. Die Messergebnisse erscheinen plausibel. Es kann nur sein, dass schräge Wände und sonstige Hindernisse manchmal falsche Messungen verursachen. Da müsste ich aber nochmal exakte Tests durchführen.

Achim.

MarkusH
24.02.2005, 12:04
Du schaltest das Modul nicht aus? Wie bekommst du das hin das du mehrmals pingen kannst? Was ist denn bei dir der mindestabstand zu einem objekt? Also wenn ich was vor dem ding stehen hab das weniger als einen meter entfernt ist krieg ich immer den gleichen wert raus. Ich nehm mal an das das an dem internen blanking liegt. Ist das bei dir auch? Und die schwankungen hab ich auch durch den BINH-GND Trick nicht wegbekommen :-(

Gruß, Markus

voidpointer
24.02.2005, 13:13
Nein, das Modul hängt (im Versuchsaufbau) zusammen mit dem ATMega an einem 5V-Akku. Läuft solange wie die gesamte Schaltung.

Das mehrmalige Ping ist kein Trick. (Ich nehme immer noch an, dass wir über das gleiche Modul sprechen.) Einfach 36 ms INIT auf HIGH, dann 4 ms auf LOW und den Vorgang wiederholen. Geht ohne Probleme. Bei jedem Ping klickt der Transducer ziemlich laut. Mit dem genannten Timing also 25 mal pro Sekunde. Mir tun jetzt noch die Ohren weh ;-) Und die Finger kribbeln von den 400 Volt [-X

Vielleicht sollte ich das Assembler-Programm mal posten (heute abend?). Wenn ich ein ECHO empfange, ziehe ich von der Timer-Zeit erstmal 2ms ab. Quarz und Prescaler sind so abgestimmt, dass im Timer-Register immer die Zeit in Mikrosekunden (us) abgelesen werden kann. Danach konvertiere ich die Zeit in Abstand (mm), dabei gehen die unteren 8 Bit verloren, weshalb die Messung nicht stetig ist, sondern Stufen hat. Wenn ich die Hand dann davor halte, messe ich einen Abstand von 150 mm, nehme ich sie weg, beträgt der Abstand zwischen 2000 und 4000 mm. Ich muss aber zugeben, dass dies kein exakter Versuchsaufbau ist. Auch die 2 ms sind spontan gewählt. Beim Messen mit dem Oszi habe ich aber auch schonmal Schwankungen gesehen, obwohl sich im Raum nichts bewegt hat. Die Werte schwankten schätzungsweise zwischen 4 und 6 Metern. Das habe ich aber auf die Dachschräge geschoben.

Vielleicht hast Du aber auch in der Software noch ein Problem oder das Modul braucht ein, zwei Impulse zum einschwingen :-s

Gruß, Achim.

MarkusH
02.03.2005, 12:04
Einschwingen? Sind diese US-Module gar nicht für solche einzel-messungen wie ich sie vorhatte ausgelegt? Wenn das ding um mehrere meter schwankt bei ner messung kannst du es ja gleich wegwerfen. Das bringts ja dann nicht. Leider kann ich kein assembler :-) nur Bascom. Ich muss das US-Modul nochmal an meinen mega8 hängen, ich glaub da dran hat er mal funktioniert...

voidpointer
02.03.2005, 20:16
Ich will nicht behaupten, dass die Module für Einzelmessungen nicht geeignet sind. Wahrscheinlich geht das. Ich benutze sie aber zyklisch.

Und die Schwankungen sollten auch erklärbar sein. Bei einem guten Versuchsaufbau (im Freien?) müssten normal keine vorkommen.

Ich hänge trotzdem mal den Code und ein paar Bilder an.

Gruß, Achim.

Chris
25.04.2005, 06:00
Hallo ich habe ein Frage zum Polaroid das US-Modul 6500.
In den Anleitungen im Internet sagen sie man muß den 2. IC gegen einen tl 851cn tauschen ?Was ist an den IC anders und muß manden tauschen wenn man das Modul an den Atmega anschließt?
Könntet ihr mir einen Schaltplan schicken von euren Versuchsaufbau?
Danke schon mal im Voraus!!!

MarkusH
26.04.2005, 16:16
Also ich hab den sensor von einer 660er Polaroid wenn mich nicht alles täuscht (hab das Gehäuse nicht mehr). Jedenfalls hab ich nichts auf dem board ausgetauscht. Habe nur den V+/GND/INIT/ECHO Pin angeschlossen. Nach dem schaltplan schau ich nochmal, bin grade nicht zu Hause.
Gruß

Chris
27.04.2005, 05:24
Danke für die Antwort
Ich habe mir die Anleitung im Internet nochmals durchgelesen und festgestellt das man den Ic nur braucht wenn man die Funktionen Blnk u BIHN benutzt.

voidpointer
27.04.2005, 16:37
Hallo,

auf meinem Board ist links oben ein TL851 und rechts oben ein SN28784. Zumindest steht das so im Manual.

Was den Versuchsaufbau mit dem ATMega betrifft, so habe ich INIT an OC1B und ECHO an ICP angeschlossen. Echo ist noch mit einem 10k-Pullup mit VCC verbunden.

Achim.

Elektro
22.02.2006, 20:39
Hallo,

Habe mir ebenfalls nen Polaroid-Ultraschall Sensor, mit Servo drehbar, zusammengebastelt, funktionieren tut soweit alles (ATMega8515/8Mhz), verzweifle aber an der Programmierung mit Bascom. Pings kann ich erzeugen aber das wars dann schon.
Hat jemand mal ein beispiel für mich?

Stephan.