PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Infrarotnavigation zum Finden der Basisstation (Hilfe!)



MoeJoeHH
12.06.2007, 18:38
Hallo Leute!

Ich habe bei einem Projekt ein Problem und nachdem ich nun schon einige Tage daran verbraten habe, dachte ich, ich könnte hier vielleicht ein paar Hilfen/Anregungen bekommen.

Ein paar Bilder zu dem Projekt findet man hier:
http://www.tu-harburg.de/ti6/mitarbeiter/pst/Gallery/Gallery.html#Robot vor allem die oberen drei vier Bilder sollten einen Eindruck vermitteln.

Um das Problem zu beschreiben also zunächst mal eine grobe Übersicht worum es geht:

Meine Aufgabe an dem Projekt ist es, mittels dreier Infrarotdioden eine Navigation zu basteln, so dass der Roboter selbstständig in die Station findet. Das Programm läuft in der Simulation gut, nun muss überlegt werden, wie ich die drei baugleichen Dioden unterscheiden kann.

(In der Simulation haben die Dioden eine ID, das geht in der Wirklichkeit natürlich erstmal nicht so, die wird ja durch die Codierung erst realisiert).

Die Codierung sieht also (momentan) folgendermaßen aus: Ich lasse die Dioden zeitversetzt senden (jeweils nur eine) und zwar mit unterschiedlichen Längen, dadurch kann dann der Empfänger erkennen, welche Diode gerade sendet (z.B. 3ms, 4ms und 5ms mit jeweils Pause dazwischen).

Prinzipiell wird das Signal der Dioden mit 13,2kHz moduliert, damit Störungen unterdrückt werden. Eine Empfängerschaltung liegt auch vor, und bei der fangen die Probleme an. Nur für den Überblick, ich erwarte nicht, dass da jemand tief einsteigt, da ich die auch nicht selber entworfen habe, hier der Schaltplan der Empfängerschaltung:

http://www.StreetSkatingHH.de/RN/RN_EmpfDipl_small.jpg

Der Problemkondensator C15 ist deswegen ein Problemkondensator, weil er zwei gegensätzliche Anforderungen erfüllen muss: Zum einen muss er groß genug sein, damit das Signal am Ausgang der Schaltung bei größeren Entfernungen nicht total verhunzt ist, zum anderen muss er klein genug sein, damit die Zeitkonstante nicht zu groß wird und die Abtastung damit zu gering.

Zufridenstellende Signale bekomme ich nur mit nicht zufriedenstellenden Zeitkonstanten. Das Problem: Wenn die Zeitkonstante groß ist, entlädt sich der Kondensator noch, während der Puls der Sender-LED bereits beendet ist. Solange der Kondensator noch nicht sicher leer ist, darf die nächste LED nicht anfangen zu senden, da die Signalstärke dieser LED dann durch den vorgeladenen Kondensator verfälscht wird. Damit wird ein "Sendezyklus" zu lang, um eine brauchbare Wiederholrate hinzubekommen.

Einige Werte: Die Auf- und Abschwingzeit der Empfängerschaltung liegen zusammen bei ca. 8ms (im schlechtesten Fall) während ich Pulse von 3, 4 und 5ms habe....

So und nach dieser doch recht langen Vorrede kommen wir meinem eigentlichen Problem schon näher: Meine Idee ist nun eine "Entladeschaltung" zu basteln, die in Abwesenheit des Sendepulses den Kondensator C15 gegen GND schaltet, damit dieser sich rucki-zucki entlädt und ich mir damit 5ms Abschwingen erspare.

Nach einigem Probieren bin ich auf die folgende Schaltung gekommen, die an den Punkten A und B in der Empfängerschaltung eingehängt wird:

http://www.StreetSkatingHH.de/RN/RN_EntladeDipl.jpg

Punkt A hat einen Gleichanteil von 4,095V und draufgesetzt das 13,2kHz-Signal einer LED (sofern die gerade einstrahlt). Die Schwingungsamplitude liegt je nach Entfernung zwischen 30mV und geht bis hoch auf 4,095V. Punkt B soll durch die Entladeschaltung auf GND gezogen werden, wenn keine LED einstrahlt.

Mein Problem ist nun unter anderem, dass ich nicht weiß, wie ich die Brücke in der Entladeschaltung anklemmen soll, um ein (zunächst einmal pulsierendes) Gleichspannungssignal zu erhalten, da ich ja am Ausgang des OPV nur eine Strippe habe, so wie dargestellt funktioniert das nicht, ich erhalte nur eine Halbwelle der Sinusschwingung, die in meine Schaltung reinkommt.

Nun ist mir vorhin die Idee gekommen, einen Schmitt-Trigger zu verwenden und das Signal dann gleichzurichten, das sollte ja noch gleichmäßiger sein als ein gleichgerichtetes Sinussignal. Aber dazu habe ich noch keine weiteren Überlegungen angestellt.


Jetzt danke ich erstmal allen, die bis hierher durchgelesen haben und ob meiner Erklärungen wahrscheinlich nur Fragezeichen im Gesicht haben. Wenn was nicht klar ist oder ich was vergessen habe zu erwähnen, bitte nachfragen.

Ansonsten die Frage: Wie könnte ich die Brücke anklemmen um das einfallende Sinussignal in ein Gleichspannungssignal umzuwandeln? Habt ihr unter Umständen Ideen, wie ich das ganze auch komplett anders angehen kann?

Vielen Dank schonmal,

Moe

goara
12.06.2007, 19:42
wieso erhoehst du nicht einfach die zeit in der er sich entladen kann? ..
ein paar millisekunden mehr oder weniger dürften doch nicht so schlimm sein, wenn er langsam nachhausegerollt kommt ??

MoeJoeHH
12.06.2007, 20:02
also es sind ja vier IR-Sensoren (vorne, hinten, rechts und links) die alle teilen sich eine Empfängerschaltung, es muss also immer umgeschaltet werden. Wenn ich länger warte, geht das ja auch.

Der Roboter soll aber möglichst zügig in die Basis kommen. Momentan dauert ein Sendezyklus etwa 27ms. Bis also alle Sensoren einmal die aktuellen Daten haben (mal abgesehen davon, dass der Roboter dabei auch weiterfährt), sind

4*27ms = 108ms

vergangen. Die Updaterate liegt also bei

f=1/108ms = 9,25Hz.

Wenn man jetzt annimmt, das man so alle halbe Zentimeter einen neuen Wert haben will, ist man mit unter 5cm/s Fahrtgeschwindigkeit dabei. Dazu fährt man dann auch an der Grenze der Genauigkeit und irgendwie denke ich, dass es schöner wäre, wenn man noch ein wenig Luft nach oben hat.

Rein Abschätzungsmäßig hatte ich mir vorher überlegt, so in etwa bei 5cm/s zu liegen, oder ist das immernoch recht fix? Ich hab da leider nicht so die Vergleichswerte, hab nur mal mit nem Finger am Lineal langfahrend die Zeit genommen...


Und nochmal zu den Zeiten: Ich vergleiche zum Navigieren unter anderem die Signalstärken rechts mit links, um in die entsprechenden Richtungen zu fahren. Da sollten die Messwerte zeitlich eben auch möglichst nah beieinander liegen. Erschwerend kommt hinzu, dass die Abklingzeit mit der Entfernung abnimmt, so dass die detektierten Pulslängen auch varieren, was wiederum größere Unterschiede der einzelnen Pulslängen erfordert als sie momentan haben...


Moe

vohopri
13.06.2007, 16:11
Hallo Moe,

ich denk, du hast da das Problem schon vom Design her eingebaut. Die Pulsdauer ist unter schwierigen Übertragungsbedingungen ein denkbar ungeeignetes Merkmal. Das hat sich in der Technik Geschichte mehrfach gezeigt: Maschinen verwenden nicht Morse, sondern Baudot, Funkvernsteuerungen verwenden nicht pwm, sondern ppm.

Eine Bessere Variante ist sicher das Verwenden von Impuls Abständen als kritisches Merkmal.

Begonnen wird mit dem ersten Impuls, den alle Dioden abstrahlen. Gestaffelt senden die einzelnen Dioden ihren Impuls ab. Dann kommt die Synchronisationspause, wo niemand sendet.



Pulse 0.5 ms

D1 0.5 ms Pause
_| |_| |___________________| |_| |________

D2 1.5 ms Pause
_| |____| |________________| |____| |_____

D3 2.5 ms Pause
_| |________| |____________| |________| |_

Sync Lücke 4 ms


Ich hoffe, mein asci Kunstwerk kann richtig dargestell werden.

Bei dieser Methode kann so gefiltert werden, dass das Einschalten und das Ausschalten 0.25 ms dauern.

Übertragungsbedingte Verzögerungen wirken sich nun weniger aus, weil das Rauschen die Impulse gemeinsam verschiebt und die Differenz gleich bleibt. Ich denke Common Mode Rejection heisst das auf Deutsch. Wenn man per Software decodiert, dann kann man synchron zum Zeitraster dekodieren und Fehlsignale ausserhalb werden ignoriert.

Zusätzlich ist die Verwendung eines Schmitt Triggers sinnvoll.

Die Ausgänge der Grätz Brücke kommen an die beiden Eingänge des folgenden OPAmp. So wie gezeichnet, schliesst du eine Halbwelle kurz.

Auf Rückfragen antworte ich gern,
grüsse,
Hannes

MoeJoeHH
13.06.2007, 18:00
Hallo Hannes, danke schonmal für die Antwort.

Klingt ja schonmal ganz gut. Leider klappt das mit der Synchronisation durch senden aller drei Dioden gleichzeitig nicht, wenn ich mir das so richtig vorstelle. Grund: Ich kann ja gar nicht feststellen, dass alle drei Dioden gleichzeitig senden. Alle Dioden sind für den Empfänger gleich. Oder halt da fällt mir ein: Meinst Du das, damit (sollte eine LED nicht im Sichtbereich sein) auf jeden Fall irgendein Signal ankommt? Das ist natürlich gut. :-k

OK, also ich bekomme ein Signal (merke mir schonmal die Pegelhöhe) und messe dann nach der fallenden Flanke die Zeit bis zur nächsten steigenden Flanke. Anhand der Zeit sollte ich dann wissen, welchem Puls ich die vorher gemessene Höhe zuordnen muss, richtig? Wenn die Zeit ergibt, dass es das Synchronisier-Signal war, dann verwerfe ich die Pulshöhe.

Dann muss ich mir nur noch überlegen, wie alle Pausen eindeutig sind, auch dann noch, wenn eine oder zwei LEDs nicht empfangen werden.

Bestehen bleibt dann immernoch das Problem mit der fallenden Flanke am Ausgang der Empfängerschaltung. Die Dauer dieser richtet sich nämlich immernoch nach der Entfernung der einstrahlenden LED, so dass auch die Pausendauern variabel sind.

Ich hab die Pulse mal von der Oszi-Anzeige abfotografiert. Die Entfernung müsste so bei um die 10cm liegen, leider habe ich mir die nicht notiert. Wenn ich näher rangehe, ist die fallende Flanke auf jeden Fall länger da und auch der maximale Pegel steht noch eine Weile nach dem Ende des LED-Pulses an, kann man auf dem Foto auch schon ein wenig erkennen.

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1617

Vorteil wäre ja aber auf jeden Fall, dass die Pulslängen selber relativ kurz gehalten werden können. (Ein AD-Wandelzyklus dauert 100us, man könnte dann ja 10 Zyklen mitteln)

Auf jeden Fall lohnt es sich wohl, mal über Deine Version nachzudenken, also nochmals Danke. Heute habe ich mir eine andere Version der Entladeschaltung gebastelt (erstmal in PSpice), die Gleichrichtung erfolgt da über eine Schaltung mit drei Transistoren, ich habs nochnicht so ganz geblickt wie, funktioniert aber auf jeden Fall.

Die Schaltung selber scheint jedenfalls das zu machen, was sie soll, morgen teste ich dann mal, ob sie das auch im Verbund mit der Empfängerschaltung tut. Wenn ich die fallende Flanke noch verkürzt bekomme und dann mit der Pausenlänge arbeite, könnte das vielleicht ein sehr gutes Ergebnis bringen.

Gruß Moe

goara
13.06.2007, 19:51
kannst du nicht auch leds und empfänger mit verschidenen frequenzen benutzen ?? bzw weisse leds nehmen und dann einen filter davor der nur eine freq durchlässt.. dann musst du gar nix mehr mit pulsen machen... nur mal so ne idee...
und warum habt ihr alle so schoene oszilloskpoe.. auch haben will :) aber die sind doch verdammt teuer oder täusch ich mich da ??

vohopri
13.06.2007, 20:54
Ja Moe,

das ist schon richtig, dass der Empfänger nicht feststellen kann ob alle oder nur eine LED senden, AAABER der Empfänger richtet sich nach der Synchronisationspause. Eigentlich: SYNCHRONISATIONSABSTAND. Das habe ich zu wenig ausgeführt und auch ungenau beschrieben. Ein Abstand der länger ist als 3.5 ms und kleiner als 5.5 ms wird als Synchronisation gedeutet. Den Impuls nach dem grossen Sync Abstand haben alle gesendet. Synchronisation durch Pausen ist ein gängiges Verfahren. Das macht das Fernsehen so, das machen die Mehrkanal Spielzeugfernsteuerungen so. Das macht auch Baudot meistens.

Abstände länger als 5.5ms bedeuten, dass kein zuverlässiges Signal ausgewertet werden kann.

Bitte beachte, dass meine Zahlen nur Hausnummern sind. Das sind Beispiele zu Verdeutlichung. Die Grössenordnung kann aber passen, wenn ich meine Erfahrungen mit meiner IR Fernsteuerung in Betracht ziehe. Wenn bei dir die Verhältnisse anders liegen, dann sind die Zeiten leicht an zu passen.

Das Problem mit der Verfälschten Pausenlänge durch eine abweichende Impulsform hast du nicht. Du verghleichst schlauerweise Abstände zwischen den Steigenden Flanken. Nach deinem Oszigramm zu urteilen, geht das schon ausreichend genau.

Tolles Gerät, sowas werd ich mir auch zulegen, wenn ich mal mehr Elektronik betreibe. Zur Zeit beurteile ich Tastverhältnisse noch mit dem Kophörer. Ist zwar mühsam, aber es geht.

Die Variante mit dem Synchronisations Signal auf einer zweiten (Licht-) Wellenlänge ist auch machbar. Das ist aber aufwändiger und bringt in diesem Anwendungsfall nchts gegenüber der anderen Möglichkeit. Bei optischen Leuchttürmen und auch bei Funknavigationshilfen für den Flugverkehr wird etwas ähnliches angewandt. Der Leuchtturm hat einen umlaufenden Strahl und jedes Mal, wen der Strahl nach Norden weist, wird zusätzlich ein rundum sichtbarer Blitz abgegeben. Die Zeitdauer vom Blitz zum Aufleuchten des Scheinwerfers ist ein Mass für die Peilung meines Standortes vom Turm aus gesehen.

Ohne dass ich jetzt nochmal in die Schaltung sehe: Der Kondensator ist möglicherweise einfach in einer Richtung zu wenig belastet. Mit einer entsprechend gepolten Diode und einem Widerstand in Serie nach Masse oder nach Betriebsspannung kann man da meistens abhelfen. Vorsichtig testen, wenns raucht, wars zu niederohmig.

grüsse,
Hannes

MoeJoeHH
14.06.2007, 07:43
Aha! Manchmal is man ja wie vernagelt... Macht natürlich Sinn, nur auf die steigenden Flanken zu gucken, die sind ja steil genug.

Mit mehreren Frequenzen zu arbeiten, war natürlich auch gleich meine erste Idee, es bleibt aber immer bei dem alten Problem: Der Kondensator C15. Es ist nämlich so, dass in dem Roboter der hintere Teil der Schaltung (also ab Punt A) nur einmal vorhanden ist, der vordere Teil ist in jedem Connector einmal, die Teile sind dann mit einem Multiplexer auf den Logarithmierer (so geschrieben?!) an Punkt A verbunden.

Und da der hintere Tiel nur einmal vorhanden ist, muss ich auch am Empfänger den Bandpass umswitchen und trotzdem warten, bis der Kondensator leer ist, sonst liegt ja noch Spannung vom vorhergehenden Signal an... Naja, alles nicht so einfach und in Textform zu erklären noch schwerer.

Also: Ich werde heute erstmal versuchen meine Entladeschaltung zuende zu bringen, die Spice-Simulation sah zumindest brauchbar aus. Dann werde ich mich aber auf jeden Fall noch mit der Pausencodierung befassen, da sich das sehr vielversprechend (und nach Hannes' Ausführungen auch schon erprobt) anhört.

Ach ja da Oszi: Das ist ein Tektronix TDS2024 (schön kleines Teil) und kostet bei Conrad knapp 3000 Euronen:

http://www1.conrad.de/scripts/wgate/zcop_b2c/~flN0YXRlPTE3Njg2MjAyNTc=?~template=PCAT_AREA_S_BR OWSE&glb_user_js=Y&shop=B2C&zhmmh_lfo=&zhmmh_area_kz=&product_show_id=120939&p_init_ipc=X&p_page_to_display=fromoutside&~cookies=1&cookie_n[1]=b2c_insert&cookie_v[1]=U0&cookie_d[1]=&cookie_p[1]=%2f&cookie_e[1]=Mon%2c+16-Jul-2007+06%3a39%3a25+GMT&cookie_n[2]=b2c_hk_cookie&cookie_v[2]=WW1&cookie_d[2]=&cookie_p[2]=%2f&cookie_e[2]=Mon%2c+16-Jul-2007+06%3a39%3a25+GMT&scrwidth=1280

Leider ist das nicht meins. Aber haben würd ichs natürlich schon gerne. Es fehlt eigentlich nur der Disketten oder USB-Slot zum Datenexportieren, dann bräuchte man keine Fotos machen um die Plots weiterzuverarbeiten... O:)


Grüße, Moe.

---
edit: Das Bild bei Conrad ist übrigens das falsche... super.

sigo
14.06.2007, 10:35
Hi Moe,
schau dir mal den TSOP7000 voN Vishay an.
Der arbeitet mit einer Trägerfrequenz von 455kHz und kann eine Datenrate von ca. 20kBit/s damit empfangen..

Die ganze Verstärker und Demodulatormimik ist ja da schon drin...
Jetzt musst die Basisstation nur noch einen umlaufenden Strahl senden, der über die Zeit oder Pulsweite oder auch den Bitcode den Winkel sendet..

Auf der Robot-Seite würden 4 TSOP7000 eine Rundumsicht erlauben, da jeweils ca. 100° Blickwinkel.. Vor allem braucht auf der Bot-Seite sonst nichts zu sein, außeres eines einzigen Ports (oder auch 8-pin-Controllers, der die Auswertung übernimmt)..

Sigo

sigo
14.06.2007, 10:52
OK, die Messung der Signalstärke geht so nicht. Die Absolutposition des BOTs ließe sich hingegen mit Hilfe von 2 Sendern in einem gewissen Abstand schon peilen..

Sigo

vohopri
14.06.2007, 11:16
Hi,

der tsop7000 wäre hardwaremässig durchaus eine Alternative, Anscheinend ist aber die Entscheidung den Empfangsteil "diskret selber bauen" vs "integriert selber kaufen" schon gefallen.

Bei der Geschwindigkeit vom 7000-er wäre eine PCM Kennung der Sektoren, zeitlich versetzt, schon machbar. Aber PPM wie von mir oben beschrieben ist schneller und störsicherer als PCM. Das ist in diesem Fall so, weil es pro Sektor nur 1 bit zusätzlich zum gemeinsamen Startbit braucht. Bei gleicher Leistungsfähigkeit habe ich nur ein Achtel der Übertragungsrate.
Auch mit einem tsop ist PWM die denkbar schlechteste Variante. Es gelten die selben Gründe wie schon oben angeführt.

grüsse,
vohopri

MoeJoeHH
14.06.2007, 11:24
Aber wie soll das mit dem TSOP700 funktionieren, wenn ich die Signalstärke nicht habe? Ich habe ansonsten ja nur Signal/ kein Signal.... ?!? :-k

In den Daten könnte ich natürlich codieren, welche LED gerade gesehen wird, aber ohne Signalstärke, kann ich doch nicht anpeilen, oder bin ich schon wieder völlig vernagelt?

Moe

MoeJoeHH
14.06.2007, 11:32
Anscheinend ist aber die Entscheidung den Empfangsteil "diskret selber bauen" vs "integriert selber kaufen" schon gefallen.

ja, ich bin hier halt in dieses Projekt an der uni eingebunden, die Vorgabe ist halt 3 LEDs kann ich an der Basisstation anbringen und die Empfängerschaltung ist auch schon vorgeben. Evtl. kann man aber nochmal dadrüber reden, der Roboter ist bis jetzt ja noch nicht einmal selbstständig gefahren...

vohopri
14.06.2007, 13:20
Also wenn du drei leds an der Station anbringst, und die leuchten nur bestimmte Sektoren aus, dann hast du rein durch das Erkennen der Leds eine Peilung. Das ist nicht eine Eigenpeilung, sondern eine Fremdpeilung.

Wenn die 3 LED Sektoren überlappen, dann hast du 5 Peilsektoren.

weit links : LED 1
links: LED 1 und LED 2
auf dem richtigen Weg in der Mitte: LED 2
rechts: LED 2 und LED 3
weit rechts: LED §

Den mittleren Sektor sollte man dann so schmal machen dass die Docking Station ausreichend genau getroffen wird.

Das System mit 3 Dioden und 5 Sektoren liefert schon recht gute Information. Mit einem Intensitätsvergleich an den 4 Seiten wirst du zwar keine sehr genaue Information erhalten, aber es reicht, um das Hinfahren vom Wegfahren unterscheiden zu können, und es reicht, um zu wissen, nach welcher Seite reagiert werden muss, wenn eine Sektorengrenze erreicht wird.

Du hast bisher nur Fragen zur Dieodenerkennung gestellt. Vielleicht solltest du dir über das Geamtkonzept der Navigation Gedanken machen.

Was soll die Navi Können?
Geht es nur um das HeimFahren zum Aufladen, sollen Karten erstellt werden?
Geht es um eine exakte Navigation, oder reicht eine sehr vage Orientierung.
Soll das Gerät praktisch nie Anstossen, oder ist es in Ordnung, wenn es sich mit den Bumper Sensoren dahintastet?
Gibt es Kompass Information an Bord?
usw.

sigo
14.06.2007, 14:31
[quote="MoeJoeHH"]Aber wie soll das mit dem TSOP700 funktionieren, wenn ich die Signalstärke nicht habe? Ich habe ansonsten ja nur Signal/ kein Signal.... ?!? :-k

In den Daten könnte ich natürlich codieren, welche LED gerade gesehen wird, aber ohne Signalstärke, kann ich doch nicht anpeilen, oder bin ich schon wieder völlig vernagelt?

Moe[/quote

Entweder müsste ein Rundum-Flash (siehe "Flug- oder Seepeilung" in diesem Thread) einen Syncimpuls geben, wenn der rotierende IR-Strahl die Null - Richtung passiert, und dann misst man die Zeiten bis zu den anderen Peilsendern, oder jeder Sender müsste Kennung und Winkel senden. Was natürlifch längere Objekte erfordern würde.

Wenn beide (mind. 2) Sender z.B. synchron mit 50U/s rotieren würden (ein Spiegel rotiert) , würde eine Umdrehung also 20ms dauern.

Jetzt könnte im einfachsten Fall ein 360° IR-Sender ein Sychronisationsimpuls senden und dann würden irgendwann die beiden Richtstrahlen über den Bot streichen (1 IR-Empfänger in der Mittel, aber dieser hat Rundumsicht, eben 4xTSOP7000)

Da man die Drehrichtung der Strahlen kennt, ist in einem 180° Bereich (Station steht an einer Wand) klar, welcher zuerst kommt..
Das System würde bezogen auf die Wand zwischen ca. 10° und 170° funzen, da ja bei genau 0° oder 180° beide Strahlenübereinander stünden..
Da der Empfänger aber in der Mitte des Bot ist, ist das allein schon durch die Breite des Bot gewährleistet..

Jetzt kann der Empfänger aus 3 Impulse (genauer Impulspaketen)

Sych - 1. Sender - 2. Sender seine Position zu der Station peilen, incl. Entfernung.

Wenn die Strahler eine Kennung senden würden, wären auch mehrere Baken möglich und man könnte danach manövrieren.

Bei einem Öffnungswinkel von 10° würde der Empfänger für ca. 10°/360°*20ms = 555µs im Strahl der Liegen. Bei schlechterem Empfang ggf. kürzer. Da aber eine Bitzeit nur ca. 50µs beträgt, würde man von jeder Dioden eine Anzahl Impulse bekommen, je nach Entfernung ca.5-20 oder so. Davon kann davon könnte man noch die Mitte bilden und zur gemessenen Zeit des ersten Bits des Impulspaketes noch die entsprechende Korrektur hinzurechnen. So könnte man ziemlich genau die Winkelposition bekommen.

Ein Sender müsste mit 1 Bitzeit moduliert werden, der andere z.B. mit 2 oder 3 Bitzeitenmoduliert werden.
Wenn die Winkel ähnlich sind, zu den Rändern hin..
würde also z.B. ein Muster ala 101010011100111000 oder so auftreten, da sich die Strahlen dann überlagern würden.
Man könnte daraus auch den Zeitpunkt des 2. Senders ermitteln, da ja anfangs noch die Bitzeiten eingehaltne würden, später nicht muss dann also der 2. Sender dabei sein.

So könnte man bis hin zu wenigen Bitzeiten die Zeit auflösen.
In 20ms stehen 400 Bitzeiten zur Verfügung.
Man könnte also auf ca. 3-5° Winkelauflösung kommen.
Das System lässt sich skalieren, indem man z.B. 20ms nur für 180° nimmt (2 LEDS senden), oder halt die Sender langsamer rotiert.
So ließen sich leicht Winkelauflösungen von 1-2 ° erreichen..


Bisher noch ein Gedankenmodel. Ich habe mir ein paar TSOP 7000 besorgt und bereits einen Sender rotieren lassen, bisher wollte ich komplette Datenpakete mit den Winkeln senden, die wären aber etwas lang gewesen. Das funzt soweit auf dem labortisch. Aber dieser Thread hat mir die Anregung geliefert, es evtl. aber die Version "Flash" + Peilstrahl zu ändern und so viel schneller zu werden..

Sigo
Sigo

molleonair
14.06.2007, 15:29
Hallo also ich epfehle eine Bake nach diesem Prinzip hier
http://www.robotmaker.de/fernbed.html

moduliere selber den Sender der Ladestation mit verschiedenen codes und LEDs mit verschiedenen Abstrahlrichtungen

goara
14.06.2007, 17:44
du koenntest es doch auch so machen: aussen 2 leds mit bestimmten pulsen als "trichter" die ihn erst mal grob in die richtige richtung shcicken.... wenn er links an den trichter stösst fährt er nach rechts wenn er rechts dagegenfährt nach links.. sobald er die mittellinie gefunden hat folgt er dieser wie ein linienfolgebot wenn er links aus dem strahl fährt leicht nach rechts, wenn er links raudfährt leicht rechts.. ... dazu bräuchtest aber 2 empfängerdioden.. allerdings waere die intensität dann egal...
so ungefähr: http://www.dyyyh.de/robo/stationfinden.JPG
is so ähnlich wie shcon oben beschrieben.. aber einfacher behaupte ich mal...
die abstrahlwinkel der dioden, zumindest der in der mitte musst du dann noch begrenzen.. zb einfahc die diode in ein kleines aluröhrchen stecken..

btw? das is ja im prinzip nur fuer die anfahrt am ende.. wie soll der die station allgemien finden.. also wenn er ganz wo anders is ??

MoeJoeHH
14.06.2007, 20:44
hallo!

also danke nochmal für die vielen Antworten!

Das mit 5 Sektoren benutze ich in meinem Programm in der Simulation bereits. Das sieht ungefähr so aus, oben soll die Basisstation mit den drei LEDs sein, darunter die Sektoren mit den Anfahrtswegen.

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1639

Die Sektoren ergeben sich aus den Überscheidungen der LED-Signale. Wie gesagt Simulation, wo jede LED klar ist funktioniert sehr gut. Ich vergleiche dabei Signale an den beiden Seiten um zu lenken, nachdem ich den Roboter anhand der Sektorerkennung ausgerichtet habe. Wie gesagt in der Simulation nahezu 100% Erfolgsquote. -- Aber Simulation ist nicht gleich Wirklichkeit...

Das ganze ist ein Forschungsprojekt an meiner Uni und das Gesamtkonzept des Roboters steht schon und ist auch schon weitestgehend verwirklicht. Meine Aufgabe ist, den Roboter in die Basistation fahren zu lassen und als zweiten Teil sollen sich zwei Roboter finden und an ihren Connectoren mechanisch verbinden. Daher auch die relativ starre Festlegung... leider.

In der Praxis funktioniert die Erkennung der Dioden zumindest ansatzweise, leider ist die (nicht von mir entwickelte) Empfängerschaltung mit dieser Zeitkonstante behaftet, die das ganze etwas langsam macht.

Die Ideen mit dem Trichter von goara und mit der Pausencodierung von vohopri werd ich auf jeden Fall weiter verfolgen.

In anderen Teilprojekten wird auch an Kamera-Navigation und ähnlichem gebastelt. Hier werden dann (evtl.) auch Karten erstellt.

ach ja:

btw? das is ja im prinzip nur fuer die anfahrt am ende.. wie soll der die station allgemien finden.. also wenn er ganz wo anders is ??

Meine Aufgabe ist dass er von 50cm reinfindet, wie er in den 50cm-Umkreis kommt ist mir praktisch (für meine Arbeit) egal, das wird wohl dann über Kamera-Infos oder so ablaufen.

Hir nochmal für die interessierten der Link zur Projekt-Page von dem Wissenschaftlichen Mitarbeiter, der den Roboter entworfen hat:

http://www.tu-harburg.de/ti6/mitarbeiter/pst/Robot.html


Moe

vohopri
14.06.2007, 21:39
Hi,
da geht ja schon was weiter. Ist doch klar, dass nicht alles sofort perfekt ist, das wird schon nach und nach. Deine Grafik schaut gut aus. Man erkennt darauf, dass der Sektor III wahrscheinlich schmäler sein muss, wenn der Frontsensor in der Mitte des Fahrzeugs sitzt. Wenn je ein Sensor an den Ecken platziert ist, dann ist die Konfiguration schon ok.

Viel Erfolg und halte uns bitte informiert über dein interessantes Projekt

Hannes

MoeJoeHH
14.06.2007, 21:58
ach so, nicht dass es zu Missverständnissen kommt:

die Sektoren sind so durch Überlagerung der LEDs aufgeteilt:
I: nur die rechte LED der Basisstation
II: rechte und mittlere LED
III: ALLE drei LEDs
IV: linke und mittlere LED
V: nur die linke LED

in Sektor III kann ich dann so navigieren, dass ich am linken Sensor des Robis den Wert der linken LED mit dem Wert der rechten LED am rechten Sensor vergleiche und dann bei Unterschieden der Signalstärke eine entsprechende Drehung zur Vorwärtsbewegung hinzufüge (einen Bogen fahre)


und halte uns bitte informiert über dein interessantes Projekt

Kein Prolem, wenn die Simulationsumgebung soweit geschrieben ist (wurde auch im Rahmen des Projekts entwickelt), dass man ein Video exportieren kann, kann ich das ja mal posten. Und sollten die Robis mal fahrbereit sein, werde ich ein entsprechendes Video ebenfalls mal posten.

Außerdem werden noch genug Probleme auftauchen ;-)

Moe

MoeJoeHH
16.06.2007, 16:54
Juhuuu!

Rechtzeitig zum Wochenende endlich mal eine Erfolgsmeldung: Die ursprüngliche Frage, weswegen ich diesen Thread eröffnet habe ist schon mal (halbwegs) geklärt. Meine Entladeschaltung funktioniert, nachdem ich mich mit einem alten Elektronik-Fuchs zusammengesetzt und ein anderes Verfahren zur Gleichrichtung eingesetzt habe, der Schaltplan meiner Entladeschaltung sieht nun folgendermaßen aus:

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1652

Damit erreiche ich eine wirklich sehr schöne steile Flanke des zu messenden Pulses. Leider entsteht eine Totzeit von etwa 1ms am Anfang des Pulses, woran das liegt habe ich noch nicht herausgefunden (irgendwer ne schnelle idee?). Damit werde ich mich dann am Montag nochmal beschäftigen. Die Pulse sehen also folgendermaßen aus:

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1655

Und weil ich nu so gute Laune habe, hier noch zwei Bilder so fürn Spass... einmal mein etwas konfuser Arbeitsplatz und der Connector von einem unvollstängig montierten Roboter (Genaugenommen fehlt so ziemlich alles, bis auf Räder und den einen Connector), man erkennt den Sender (für späteres Andocken zweier Roboter untereinander) und den Empfänger, der sowohl beim Basisstation- als auch beim Roboter-Docking-Vorgang zum Einsatz kommt.

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1656https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1657


Moe

vohopri
17.06.2007, 09:37
@ moe: Gratuliere

@ sigo:

Hi Moe,
schau dir mal den TSOP7000 voN Vishay an.

anschauen ist ja gut, aber den scheints im Einzelhandel nicht zu geben. Vielleicht kennst du eine Bezugsquelle.

grüsse,
Hannes

Michael
17.06.2007, 10:38
Hallo vohopri,


anschauen ist ja gut, aber den scheints im Einzelhandel nicht zu geben. Vielleicht kennst du eine Bezugsquelle.
http://shop.embedit.de/product__508.php

Gruß, Michael

vohopri
17.06.2007, 12:14
Hi,

danke. Die scheinen auch an Privatkunden zu liefern. Hat wer Erfahrung mit denen? Leider sind die Lieferbedingungen ins Ausland - wie so oft - sehr ungünstig.

grüsse,
Hannes

sigo
17.06.2007, 21:19
@ moe: Gratuliere

@ sigo:

Hi Moe,
schau dir mal den TSOP7000 voN Vishay an.

anschauen ist ja gut, aber den scheints im Einzelhandel nicht zu geben. Vielleicht kennst du eine Bezugsquelle.

grüsse,
Hannes

Ich hab mir 3 Muster von Vishay schicken lassen :-)
Tja, eigentlich brauch ich 4...muss ich wohl nochmal Muster anfragen..

Sigo

sigo
17.06.2007, 21:20
@Frank: Wär das Teil nicht auch was für Robotikhardware?

vohopri
17.06.2007, 22:50
Nun, sigo, ich weiss nicht, ob du das verrätst, aber ich frage einmal:

Mit welcher Begründung hast du dort um Muster nachgefragt? Bist du für die dort Privatbastler, Unternehmer, angestellter Entwickler?

Grüsse,
Hannes

MoeJoeHH
21.06.2007, 19:05
Hallo Leute, ich hab keine Ahnung, ob hier noch jemand reinguckt, aber ich berichte noch mal vom aktuellen Stand:

Also ich hatte ja schon eine einigermaßen funktionierende "Entladeschaltung" entworfen. Leider hatte diese das Problem, dass die Pulse erst nach ca. 1ms Verzögerung begannen. Des Rätsels Lösung war: Meine Entladeschaltung hat den Kondensator C15 aus der Empfängerschaltung auf GND entladen. Leider hat der IC TDA1596T an seinem Ausgang einen Ruhepegel (wenn kein IR-Signal reinkommt) von 2,7V. Der nachfolgende Spannungsbereichswandler wird am nichtinvertierenden Eingang mit 2,7V versorgt und hat eine asymmetrische Betriebsspannung (12V/GND). Kommt nun am invertierenden Eingang 0V an, versucht er negative Spannungen rauszugeben, was er nicht kann und irgendwie verschluckt er sich dann so, dass diese 1ms zustande kommt.

Also ums kurz zu machen, hier die ursprünglichen Pulse aus einigen Entfernungen (Winkel 0°)
https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1664

man erkennt, dass die Pulslänge mit der Entfernung stark variiert, bis zu 4ms dauert das ganze. Dank meiner glorreichen Entladeschaltung sehen die Pulse nun folgendermaßen aus:

(Achtung der Puls ist gleich lang, Skalierung ist ne andere!)

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1665



D.h. ich habe eine schöne steile Flanke und auch die Pulslänge variiert nicht mehr so stark (max 300us). Nun muss ich mir nur noch Gedanken machen, wie ich die LED-Erkennung am besten programmiere (ich tendiere stark zur Pausen-Dauer-Methode) und dann kanns schon fst losgehen mit ersten Fahrversuchen... zumindest von meiner Seite aus.

Sollte weiterhin Intresse bestehen, würd ich auch weitere Schritte in dem Projekt einfach hier in diesem Thread weiter dokumentieren (die ursprüngliche Frage ist ja nun geklärt :D).

Grüße Moe


----
edit:

PS: in der angegebenen Entladeschaltung hatte sich der Fehlerteufel gleich zweimal eingeschlichen:
1. Parallel zum Kondensator C5 habe ich vergessen den 100k-Arbeitswiederstand einzuzeichnen, der aus dem Strom durch Q2 und Q3 überhaupt erst die Spannung macht...peinlich
2. und noch peinlicher: Der Mittelabgriff vom Poti (R10) muss natürlich an den nichtinverierenden Eingang des Komparators und das Ende, welches in dem Schaltplan da dran ist, muss an GND.

...kommt davon, wenn man erst die schaltung macht und dann den Schaltplan...

Michael
22.06.2007, 09:09
Hallo MoeJoeHH,


ich hab keine Ahnung, ob hier noch jemand reinguckt, aber ich berichte noch mal vom aktuellen Stand
Sollte weiterhin Intresse bestehen, würd ich auch weitere Schritte in dem Projekt einfach hier in diesem Thread weiter dokumentieren
na sicher doch, ich bin sehr interessiert an eurem Projekt, da ich z.Z. an etwas ähnlichem arbeite.

Mir ist aber leider auch nach mehrmaligem Lesen nicht 100% klar, wie die Bake nun gefunden wird.
Ich fasse mal zusammen:
Drei Sende-LEDs bilden einen "Leuchtturm" mit 3 Sektoren. Da sich je 2 Sektoren überschneiden, sind es am Ende 5 Sektoren.
Der Abstand Roboter-Bake soll über die Signalstärke ermittelt werden.
Die Richtung des Roboters zur Bake wird dann über die unterschiedlichen Signale der 4 Empfänger (vorne,hinten,rechts,links) ermittelt?

Gruß, Michael

MoeJoeHH
22.06.2007, 09:33
Drei Sende-LEDs bilden einen "Leuchtturm" mit 3 Sektoren. Da sich je 2 Sektoren überschneiden, sind es am Ende 5 Sektoren.

Das stimmt, allerdings war mein Gedanke bisher nicht bei drei Sektoren, sondern bei drei LEDs, deren Sendebereiche sich überlappen, durch unterschiedliche Überlappungen bilden sich dann die 5 Bereiche. In der Simualtion mögen die ungefähr so aussehen wie das von mir gepostete Bild, in echt muss ich das noch vermessen, ich denke, dass das nicht ganz so sein wird. Vermutlich werde ich da noch einiges umändern müssen...



Der Abstand Roboter-Bake soll über die Signalstärke ermittelt werden.

hmja also so ähnlich. Die Signalstärke hängt auch vom einstrahlenden Winkel ab, so dass man keine absolute Position bekommt. Man kann aber die aktuellen Signalstärken an den einzelnen Sensoren des Roboters miteinander vergleichen, um entsprechend zu lenken. Und auch hier wieder: In der Simulation klappts, dass das auch in der Realität funktioniert muss ich erst noch beweisen.



Die Richtung des Roboters zur Bake wird dann über die unterschiedlichen Signale der 4 Empfänger (vorne,hinten,rechts,links) ermittelt?

Genau. Wenn er dann ausgerichtet ist, sollte hinten eigentlich nicht mehr viel ankommen.

und ein letzter quote:



na sicher doch, ich bin sehr interessiert an eurem Projekt, da ich z.Z. an etwas ähnlichem arbeite.

wie sieht denn das ähnliche Projekt aus? Und ist es Privat oder Schlue/Uni oder beruflich?



Gruß Moe

_____
edit:
OK, hab grad das Alter gesehen und glaube Schule mit gutem Gewissen streichen zu können ;-)

Michael
22.06.2007, 16:51
Hallo MoeJoeHH,


In der Simulation klappts, dass das auch in der Realität funktioniert muss ich erst noch beweisen.
wie immer ;) Womit simulierst du?


Genau. Wenn er dann ausgerichtet ist, sollte hinten eigentlich nicht mehr viel ankommen.

Möglicherweise bekommst du durch Reflexionen an Wänden und anderen Robotern Fehlmessungen, die dein ganzes System durcheinanderbringen.
Nichts ist ärgerlicher, wenn ein ansonsten tadellos funktionierender Roboter seine Heimat nicht findet. Gerade mit Publikum.


wie sieht denn das ähnliche Projekt aus?
Im Prinzip eine Weiterentwicklung dieses Projekts, (http://www.team-iwan.de/technik/elektronik/drehbake.php) nur schneller, weiter und sicherer.
und rein privat O:)


OK, hab grad das Alter gesehen und glaube Schule mit gutem Gewissen streichen zu können
warum gibst du dein Alter nicht an?

Gruß, Michael

MoeJoeHH
24.06.2007, 11:22
Hi,


Womit simulierst du?

Der wissenschaftliche Mitarbeiter, der das Projekt betreut, hat in seiner Diplomarbeit die Simulationsumgebung geschrieben. Das ganze kann man sich bei Sourceforge runterladen. Aber ohne seine explizite Hilfe, nur mit der dort vorhandenen Doku hätte ich das wohl nicht so richtig zum laufen bekommen, naja, hier trotzdem mal der Link, sind auch screenshots da: http://simbob.sourceforge.net/



Gerade mit Publikum

hehe, ja das stimmt! Da werd ich vorher auch noch genügend rumtesten (in dem Raum, in dem auch die Demo stattfinden soll, sinnvollerweise...)


warum gibst du dein Alter nicht an?
...weils keine Pflichtangabe ist... aber für Dich schreib ich's mal hier rein: 25.


Grüße, Moe

MoeJoeHH
25.06.2007, 08:07
Ich hab mir 3 Muster von Vishay schicken lassen Freudig
Tja, eigentlich brauch ich 4...muss ich wohl nochmal Muster anfragen..

Sigo

wo kann man die da denn als samples bestellen? Hab ich für die TSOP1730er z.B. nicht gefunden... und auch sonst für die TSOP.... nicht?

Moe

MoeJoeHH
28.06.2007, 12:41
Moin Leute!

Ich bins mal wieder. Die Hardware läuft ja nun einigermaßen, da kommen dann halt die Probleme mit der Software.

Ich habe also versucht die LED-Pulse zu erkennen. Mit der Methode der "Pulslängen-Modulation" klappt das schon ganz gut, nun habe ich mal versucht, die "Pausenlängen-Modulation" hinzubekommen. Leider sind dort viele Pulse, die nicht zugeordnet werden können.

Momentan hätt ich mal nur eine Frage: Wie würdet ihr ein Signal auf fallende Flanken untersuchen?

Mein Ansatz ist, jeweils den letzten Messwert mit dem aktuellen Messwert zu vergleichen. Ist der neue Messwert um 100mV kleiner als der alte, wird dies als fallende Flanke interpretiert. Für mich der logischte Ansatz, aber vielleicht hat ja jemand noch eine Idee?

Mein Problem ist u.a., dass die gemessenen Pausenzeiten (bzw. die Zeit fallendeFlanke-fallendeFlanke) nicht den am Oszi dargestellten entsprechen... :-k

als kleines Beispiel der Teil der Flankenerkennung:



while( !bFallingEdgeDetected )
{
//TODO: TimeOut...
nCurrConvResult = DoADConversion(true, AdcChannel);
if( ((nLastConvResult1 - FALLING_EDGE_TOL) >= nCurrConvResult)
{
bFallingEdgeDetected = true;
}
else
{
//shift last result
nLastConvResult1 = nCurrConvResult;
}
}


Ich danke mal wieder für die (hoffentlich) zahlreichen Impulse.


Grüße
Moe

goara
28.06.2007, 13:22
ich habe mal nen programm geschriebn das die schaltvorgänge aus motordaten finden musst ( von lkw testfahrten) . da musst man auch ne stark fallende flanke bei der leistung bestimmen und dann noch n paar andere bedingungen zutreffen.
habe dazu die leistung permanent abgetastet und dann werte in einem bestimmten abstand verglichen.. wenn diese eine bestimmte differenz hatten wars ein treffer, ( also im prinzip die ableitung bestimmt so ungefähr) das hat prima funitoniert..

MoeJoeHH
28.06.2007, 13:46
...also das müsste ja in etwa dem entsprechen, was ich mache. Die AD-Wandlungen werden alle 100us vorgenommen.

Wenn sich zwei aufeinander folgende um die 100mV unterscheiden, dann solls die Flanke gewesen sein.

Wenns bei Dir einwandfrei funktioniert hat, muss ich bei mir wohl noch nach anderen Dingen suchen. Ich glaub ich geh mal eben auf die Toilette, da hat man ja bekanntlich die besten Ideen... :D

Moe

vohopri
28.06.2007, 22:29
nabend MoeJOe,

um das sinnvoll besprechen zu können musst du mal schreiben sie lange deine Pulse jetzt sind und wie oft du misst.

Der Vergleich von einzelnen Messungen ist sehr Störungsanfällig.

Besser ist der Vergleich von 2 Mittelwerten. Beispielsweise zwei Mittelswerte aus 3 Messungen:

Letzter+Vorletzter+Drittletzter gegenüber viertletzter+fünftletzter+sechstletzter.

Hab da jetzt keinen Formeleditor gesehen, aber ich denke du verstehst auch so, wie ich das meine.

grüsse,
Hannes

MoeJoeHH
02.07.2007, 08:13
ja, ich versteh was Du meinst, klingt ja auch sinnvoll...

Also, die (gesendeten) Pulse sind momentan etwa 1,5ms lang. Während der ersten ms steigt das Signal (beim Empfänger) und dann hält es sich noch etwas länger als 0,5ms. Die AD-Wandlung braucht 100us und wird immer fortlaufend durchgeführt, sprich ich habe eine Abtastung von 10kHz.

Also, ich wollte heute noch ein wenig zwei LED-Typen vermessen (SFH487 vs. SFH487P) und dann werd ich mal die MW-Bildung aus drei Werten versuchen. Eigentlich ne klare Sache, so als Fehlerquellenausschluss... :D


Naja, danke, dass Ihr immernoch dabei seid, mir Tipps zu geben. Ich werde mal die Resultate der MW-Bildung dann hier posten!

Gruß Moe

MoeJoeHH
02.07.2007, 15:34
Moin!

Also irgendwie läuft das nicht, es werden dubioserweise falsche Zeiten ermittelt. Eigentlich kann das auch nicht an der fallenden Flanke liegen, denn die Codierung über Pulslängen funktioniert einwandfrei. Solange ein Puls da ist (das Signal stark genug ist), kann ich mit der Pulslängencodierung auch bestimmen, welche LED den ausgesand hat.

Nunja, ich habe also die Pulslängencodierung genommen und jetzt zum ersten Mal die LEDs auch tatsächlich an der Basisstation angebracht. Den ganzen Empfängerkladeradatsch (Ein DSP-Board, ein ADC-Board, das Board mit der Empfängerschaltung und das Entladeschaltungsboard) habe ich irgendwie behelfsmäßig auf den unfertigen Robi geschnallt und mal gemessen, was der Robi denn so sieht...

Simulation nie gleich Wirklichkeit! ;-)

Tatsächlich sieht der Robi eher Signale wie goara sie in seinem Beitrag weiter oben aufgezeichnet hat, leider ist das Abstrahlverhalten der LEDs nicht so wie ichs aufgezeichnet hatte... Aber dann muss ich halt das Programm ein wenig anpassen. Schade nur, dass die seitlichen Sensoren keine Signale empfangen werden können.

Ich denke, ich werde den vorderen Sensor dann immer von rechts nach links und wieder zurück schwenken lassen, dann sehe ich ja an der Reihenfolge der auftauchenden Signale, wo ich in etwa relativ zur Basis bin.

Hier mal die Basis mit Isoband angeklebten Sender LEDs:
https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1712&sid=e4875e8b1246bd91611734073ba6f564

Und hier sieht man den Robi in Position vor der Basisstation:
https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1713&sid=e4875e8b1246bd91611734073ba6f564


Grüße
Moe

didock
08.08.2007, 15:01
Gibt es z.B. bei farnell.de

didock