hi hans,
meine US-erweiterung liegt erstmal "in der ecke", weil sie überhaupt nicht funktioniert, ich vermute ein hardwareproblem...Habe es erstmal mit IR-ortung ersetzt...
Warum sollten die taster beim US-modul nicht zusätzlich funktionieren?
hi hans,
meine US-erweiterung liegt erstmal "in der ecke", weil sie überhaupt nicht funktioniert, ich vermute ein hardwareproblem...Habe es erstmal mit IR-ortung ersetzt...
Warum sollten die taster beim US-modul nicht zusätzlich funktionieren?
gruß inka
die taster funktionieren. warum denn nicht?
das problem ist, dass die us-kapseln keine eigenständien Sensoren sind welceh melden, dass sie ein echo empfangen haben, sondern prinzipiell wie mikrofone zu betrachten sind, welche ihren widerstand bei bestimmten schallfrequenzen verändern (...denke ich).
wenn beide parallel geschaltet werden, dann passiert nicht viel, weil dann strom durch beide kapseln fliesst. das signal der einen kapsel wird dann durch das signal der anderen kapsel verfälscht.
Hallo Inka,hallo damaltor.Dass die Taster bei US nicht funktionieren,hab`ich dem Buch S.103 so entnommen.Oder wie ist das zu verstehen? Bei meiner Überlegung mit zwei Empfängern könnte man die zweite Kapsel auch noch mit der gleichen Transistorstufe versehen,und über den Trennkondensator auf den OP gehen.Aber hier geht probieren über studieren.Ich hab`allerdings die grossen 16 mm.Kapseln von C. Ich müsste mal die Abstrahldiagramme der verschiedenen Kapseln vergleichen.---An Inka: Ist die IR-Ortung auch auf einer Zusatzplatine,und wie sind Deine Erfahrungen damit?
Gruss an euch Beide
Hans aus Bremen
hi hans,
für die IR-ortung verwende ich die original IR diode und transistor, sie sind halt nicht an der originalstelle, sondern nach vorne gerichtet und mit leitungen mit den originalanschluss-stellen verbunden (dien IR diode sitzt inzwischen nicht mehr auf den widerständen, sondern ist auf einem kleinen platinchen auf dem anderen großen kondensator mit heisskleber befestigt)...
https://www.roboternetz.de/phpBB2/vi...97eb82ac2ea6e7
als software habe ich folgendes ausprobiert:
es funktioniertCode://Programm zum Umfahren von Hindernissen mithilfe der Infrarot-Hinderniserkennung von waste //zusammengestellt und programmiert von julien #include "asuro.h" #include <stdlib.h> #include "inka.h" int main(void) { float puls; int hindernis=0; int richt=0, wegr=0, wegl=0, vorher=0, auswl=0, auswr=0, schritt=0; unsigned int Rmin = 1024, Rmax = 0, Lmin = 1024, Lmax = 0, Rmitte = 512, Lmitte = 512, lspeed=185, data[2]; unsigned char flagl=FALSE, flagr=FALSE; Init(); WaitforStart(); DDRD |= (1 << DDD1); // Port D1 als Ausgang PORTD &= ~(1 << PD1); // PD1 auf LOW puls = 1; while(1) { if (PIND & (1 << PD0)){ StatusLED(GREEN); // kein Hindernis } else { vorher=(int)(puls); hindernis=1; StatusLED(RED); // Hindernis erkannt } puls = 1.02 * puls; // Pulsbreite wird um 2% erhöht if (puls > 10){ if (PIND & (1 << PD0)) hindernis=0; puls = 1; } OCR2 = 255 - (int)(puls); if(hindernis==1){ //"gucken", wo noch ein freier Weg ist und diesen dann fahren if(schritt==0){ //nach rechts "gucken" MotorDir(FWD,RWD); Msleep(100); } if(schritt==1){ auswr=(int)(puls); } if(schritt==2){ //nach links gucken MotorDir(RWD,FWD); Msleep(100); } if(schritt==3){ auswl=(int)(puls); } if(schritt==4){ //richtigen weg fahren if(auswr>auswl) richt=1; if(auswr<auswl) richt=2; if(auswr==auswl) richt=3; } if(schritt<4) schritt++; } if(hindernis==0){ //kein Hindernis in Sicht - geradeaus fahren richt=0; schritt=0; OdometrieData(data); // 0. links, 1. rechts // max links if (data[0] > Lmax) Lmax += (data[0] - Lmax) / 2; // min links if (data[0] < Lmin) Lmin -= (Lmin - data[0]) / 2; // max rechts if (data[1] > Rmax) Rmax += (data[1] - Rmax) / 2; // min rechts if (data[1] < Rmin) Rmin -= (Rmin - data[1]) / 2; Rmitte=(Rmax+Rmin)/2; Lmitte=(Lmin+Lmax)/2; if ((data[0] < Lmitte) && (flagl == TRUE)) { flagl = FALSE; wegl++; } if ((data[0] > Lmitte) && (flagl == FALSE)) { flagl = TRUE; wegl++; } if ((data[1] < Rmitte) && (flagr == TRUE)) { flagr = FALSE; wegr++; } if ((data[1] > Rmitte) && (flagr == FALSE)) { flagr = TRUE; wegr++; } if(wegl<wegr) lspeed++; if(wegl>wegr) lspeed--; if(wegl>=1000){ wegl=0; wegr=wegr-1000; } //zurücksetzen, damit kein Überlauf nach if(wegr>=1000){ wegr=0; wegl=wegl-1000; } //längeren Fahrten passiert } if(richt==0) MotorDir(FWD,FWD); //geradeaus if(richt==1) MotorDir(RWD,FWD); //links if(richt==2) MotorDir(FWD,RWD); //rechts if(richt==3) MotorDir(RWD,RWD); //zurück MotorSpeed(lspeed,155); } return 0; }
gruß inka
Hi,Inka,stimmt,das hab`ich ja auch schon gesehen,und wie funktioniert`s ?
Die Abstrahlwinkel der US-Kapseln hab`ich auch schon herausgefunden. Die 40LT12 hat 85 Grad,und die 40LT16,die ich habe nur 55 Grad.Das macht ja nun schon etwas aus,denke ich.Ansonsten ist US ja eine feine Sache.Was fehlt denn Deinem US-Sensor,kann ich Dir helfen? Wie ihr wisst fällt mir die hardware leichter.Welche Messmittel hast Du zur Hand?
Hans
hi hans,
die IR hinderniserkennung funktioniert sehr gut, schwarze gegenstände sieht der asueo nicht, aber das liegt ja in natur der sache.
btw: den satz über die taster habe ich doch glatt überlesen!! Wäre die frage, ob das mit der neuen lib 2.7.1 auch noch so ist, oder nur bei der alten lib aus dem buch?
die hilfe beim us-sensor würde ich gerne annehmen: Es ist so, dass die erweiterung auf keinem meiner zwei asuros funktioniert. Weder mit der urspünglichen lib, noch mit der neuen. Messen? ja einen digitalen multimeter habe ich, aber ich bin von beruf her eigentlich eher ein mechaniker, zwar mit grundkenntnissen in elektronik, aber wenn es um die frage geht wo, an welcher stelle einer schlatung was zu messen ist, da muss ich passen. Ich habe zwar schon mal was vom Kirchhof gehört, aber...
sollten wir vielleicht per mail? inka@a-g-k.com...
würde mich freuen...
gruß inka
Hallo Inka,so machen wir das.Per e-mail kann man doch etwas mehr und schneller reagieren.
Ich melde mich.
Bis gleich Hans
ausriss:
ist zu beachten, dass die funktion LocalInit() den AD wandler des prozessors abschaltet, sodass eine kollisionsdetection über die taster oder ein bestimmen der geschwindigkeit über odometrie nicht möglich ist, ohne de wandler wieder in betrieb zu nehmen.
gruß inka
achso, na gut. weiss auch jemand warum der AD wandler deaktiviert wird? =)
Lesezeichen