Archiv verlassen und diese Seite im Standarddesign anzeigen : Linienfolgeeinheit --> Werte zu niedrig?!?!
Hi!
Ich hab ehrlich im Forum gesucht, aber dazu nichts gefunden. [-(
Und zwar folgendes:
Der Wertebereich der Fototransistoren zum Linienverfolgen liegen ja zwischen 0(dunkel) und 1023 (hell).
Nun macht mein Asuro aber (bei angeschalteter FrontLED) nur so Werte von ca. 120. Schieb ich weißes Papier darunter, hat jeder Transistor einen Wert von ca. 250. :-k
Viel höher komm ich auch nicht, außer ich halte den Asuro umgedreht direkt in meine Schreibtischlampe. Dann komm ich schon so auf die 1000.
Habt ihr auch solche niedrigen Werte?
Mir ist schon klar, dass das stark vom Untergrund abhängt, wie stark der reflektiert usw., aber ich habe normalen Boden ( irgendson Laminat, kein Teppich!) und das die Werte so weit unten sind, irrtiert mich doch.
Ich habe auch die LED ohne Abstand zur Platine eingelötet, die Transistoren sind ca. 2-3mm von der Platine entfernt.
Habt ihr das auch, oder soll die rote LED auch näher an den Boden?
Wie weit sind denn eure Transistoren bzw. Platine vom Boden entfernt?
Bei mir sind das ca.8mm, die Platine ist ca. 2 cm über dem Boden.
Vielleicht muss die auch die gesamte Einheit oder den Asuro tieferlegen...
Oder habt ihr sonst die Linienverfolgung irgendwie verbessert/modifiziert?
Wäre es nciht auch möglich, vielleicht auch sinnvoll, eine ultrahelle weiße LED statt der roten einzubauen, um Kontraste vielleicht besser sichtbar zu machen? Ich weiß nicht, ob die vllt zu viel Leistung schlucken...
Würd mich über eure Erfahrungen freuen,
grüße
Norki
Sind die Werte bei Hell/Dunkel denn stabil genug, dass du sie sauber auseinanderhalten kannst? Dann würd ich mir da keine großen Gedanken machen...
Bei der Messschaltung teilt sich die Akkuspannung auf den Fototransistor und dessen Vorwiderstand auf. Das Teilungsverhältnis ändert sich je nach Lichteinfall. Der Widerstand des FT wird jedoch nicht unendlich klein, sodass der maximal von ADC messbare Wert von 1023 nie erreicht werden kann.
Tja gute Frage. Stimmt schon, wenn das niedrige Werte sind, aber zuverlässig, ist das egal, hab ich noch nicht probiert.
Wär natürlich schöner einen großen Wertebereich zu haben, da man so auch Schwankungen besser abfangen kann.
Wisst ihr denn, was ihr so an Werten habt?
Ich hab mal ein Messprogramm geschrieben, dass 10000 Messwerte für den rechten und den linken sensor aufnimmt und dann die Häufigkeit der gemessenen Helligkeiten zählt. Bei meinem Laminatboden liegen die Messwerte zwischen 168 und 568. Schwarzer Fotokarton liegt bei gleichen Bedingungen zwischen 8 und 56.
Mit dem Fotokarton habe ich dann mal meine "Linie" gebastelt, der ASURO jetzt auch nachfahren kann. Werden aber noch weiter experimentieren und die Fototransistoren tiefer setzen
Bei meinem hab ich das Problem gelöst, indem ich den ARURO ansich langsamer gemacht habe. Auch wenn bei dem auslesen der Sensor-Werte in der Regel der Linke größer war, funktioniert es jetzt (beinahe) einwandfrei.
Ok hab glaub auch des Problem. Hab erstmal des Programm zur Linien verfolgung genommen was in der anleitung ist,. OK der Asuro lenkt nicht ein wenn er die linie verlässt. Dann hab ich ihn auch langsamer gemacht, aber das problem das er die linie nicht erkennt beseht immer noch. Hab jetz von dunkelbraun auf schwarze linie gewechselt, aber immernoch keine reaktion. Wie kann man denn die daten im HxperTerminal einlesen um zu testen an was es liegen könnte. Oder hatte vielleicht jemand das selbe problem
Ok . hab jetzt einfach eingegeben, dass wenn ne veränderung der linensensoren , die jeweilige BackLED leutchten soll und es funktioniert , nur der linie folgt er immer no net
XProgrammer
01.11.2006, 17:23
hi ich hab auch solche niedriegen werte denn ich hab meine frontleds und frontfotodioden mit pappe eingemantel damit erhalte ich zwar niedriege werte aber die sin übelst sabil das glaubt ihr gar nicht müsst ihr auch mal ausbrobieren!!!
außerdem hängt der wertebereich auch davon ab wie weit du die leds an der platine angelötet hast ....
mfg XProgrammer
#include "asuro.h"
int main(void)
{
unsigned int data[2];
Init();
FrontLED(ON);
MotorDir(FWD,FWD);
MotorSpeed(150,150);
while(1){
LineData(data);
if(data[0]>data[1])
{MotorSpeed(250,100);
BackLED(OFF,ON);}
else
{MotorSpeed(100,250);
BackLED(ON,OFF);}
}
return 0;
}
also wie gesagt an den BackLeds seh ich das die sensoren reagiern und das das programm abläuft, aber der asuro fährt weiter immer mit der selben geschwindigkeit , auch wenn er den helligkeitsunterschied bemerkt, weiss jetzt net was dadran falsch sein könnte.
und wenn man programiert, das ein rad stehn bleiben soll, wenn ein wert hellerit, dann bleibt keins stehn sondern werden beide langsamer
also, wenn er den helligkeitsunterschied bemerkt aber die motoren nicht reagieren, dann hast du vielleicht einen bug in deinem programm, oder die motorsteuerung ist kaputt. sonst weiß ich dazu keine erklärung
gast1234
01.11.2006, 21:14
Das ist in der Tat sehr merkwürdig, das Programm sieht ok aus, auch wenn 250 wohl bischen schnell ist. Hast du etwas in der ausro.c verändert?
Nein, überhaupt nichts, sitzte jetzt 2 tage an dem problem und komme nicht weiter
#include "asuro.h"
int main(void)
{
unsigned int data[2];
Init();
FrontLED(ON);
MotorDir(FWD,FWD);
while(1)
{
LineData(data);
if(data[0]>data[1])
{
MotorSpeed(250,70);
BackLED(ON,OFF);
}
else
{
MotorSpeed(70,250);
BackLED(OFF,ON);
}
}
}
Also bei diesem code leuchten, je nach helligkeit die backLEDs aber der Asuro fährt konstant 250 und zeigt sont keine Regung.
Also dieser code ist inordnung so viel steht ja wohl fest.
Gesucht sind andere mögliche fehlerquellen
lass mal das programm hier laufen
#include "asuro.h"
int main(void) {
Init();
// Drehrichtung vorwärts
PORTD = (PORTD &~ ((1 << PD4) | (1 << PD5))) | (1 << PB5);
PORTB = (PORTB &~ ((1 << PB4) | (1 << PB5))) | (1 << PB5);
//Volle Pulle vorwärts
OCR1A = 255;
OCR1B = 255;
int i;
for(i=0;i<1000;i++)
Sleep(72);
//Linkskurve
OCR1A= 100
for(i=0;i<1000;i++)
Sleep(72);
//Langsam geradeaus
OCR1B=100;
return 0;
}
Asuro sollte jetzt erst volle pulle fahren, dann eine linkskurve, und dann langsamer geradeaus.
Wenn, das Positiv verläuft, solltest du den fehler in der asuro.c suchen. Wenn das jetzt nicht geht, musst du den fehler in der hardware suchen.
damaltor
02.11.2006, 09:20
versuch mal von anfang an nur mit 150 zu fahren... gib ihm ne chance zu reagieren =)
JA auf die idee bin ich auch scho gekommen von 70 bis 250 hatte ich alle geschwindigkeiten ausprobiert, habsogar die sensoren abgeklebt um bessere , oder staielere ergebnisse zu kriergen, aber wie gesagt es reagiet nur dann, wenn ich z,b 250,70 hab und 100,70 dann stockt das eine rad kurz, aber anders herum passiert nichts. Das mit dem 250 hab ich halt auch als extrem gennommen um zu sehn ob er reagiert.
damaltor
02.11.2006, 09:30
hmm... linie zu schmal..?? such mal im forum, es gibt irgendwo eine linientest-arena zum linienverfolgen... die sollte eigentlich gehn...
Also das die linie zu schaml ist, schliese ich aus. sonst würde er ja den helligkeitsunterschied gar nicth bemerken (backleds)
ko also hab verschiedene dicken der linie schon ausprobiert, aber funktioniert nicht.
damaltor
02.11.2006, 11:15
hmm... such mal im forum nach einem linienverfolgungsthread in dem ein fertiges programm drin ist und dann versuch dieses exakt abzuschreiben bzw zu kopieren... dann siehst du wenigstens ob es an deinen programm liegt oder ob es daran liegt dass die transistoren nicht richtig gehen... oder versuch mal die LED vorne durch eine hellere zu ersetzen bzw irgendwie die linie von aussen stärker zu beleuchten (mit der schreibtischlampe vor dem asuro herfahren oder so)... ansonsten hab ich im moment auch keine idee... evtl kleinere widerstände vor die transistoren setzen, könnte aber auch schiefgehen...
JO also des mit dem fertigen programm hab ich scho brpbiert, geht auch net. bei diesem
#include "asuro.h"
int main(void)
{
unsigned int data[2];
Init();
FrontLED(ON);
MotorDir(FWD,FWD);
while(1)
{
LineData(data);
if(data[0]>data[1])
{
MotorSpeed(70,0);
BackLED(ON,OFF);
}
else
{
MotorSpeed(250,0);
BackLED(OFF,ON);
}
}
}
Laufen die motoren halt mal 70 oder 250. aber beide, der andere kommt nict zum sehn.
Hab die vorne die sensoren auch schon weiter runter , also näher an den boden gelötet, aber da die back leds ja ne reaktion zeigen , müssten die ja in ordung sein
Aber kann die motoren schon unterschiedlich steuern, z.b mit FWD,RWD
Aber wenn ich nur eingebe
#include "asuro.h"
int main(void)
{
unsigned int data[2];
Init();
FrontLED(ON);
MotorDir(FWD,FWD);
MotorSpeed(200,80);
while(1)
return 0 ;
}
dann drehen sich beide mit 200
damaltor
02.11.2006, 13:27
dann vermute ich mal ganz spontan dass ein lötfehler vorliegt...
check nochmal die ganze platine nacch ungewollten verbindungen (speziell bei den transistoren) oder kalten lötstellen. offensichtlich liegt das problem nicht an den sensoren, da die backleds ja funktionieren. das problem ist die motoransteuerung.
da kannst du nur nochmal ganz exakt nachschauen, ob du nicht evtl etwas falsch gelötet hast (modellnummern der transistoren nach bestückungsliste prüfen) oder ob nicht doch irgendwo ein tropfen lötzinn an der falschen stelle ist.
mattes77
22.11.2006, 22:18
hallo!
mein A tat es auch nicht mit der Linienführung - habe das obige Programm (volle pulle kurve langsam) ausprobiert und gemerkt das meiner RÜCKWÄRTS fährt.......motoren umgepolt -----> läuft =D>
hat mich ca. 5h testen und löten gekostet und dann so ein banaler Fehler (obwohl nach schaltplan aufgebaut wurde)
gruß
damaltor
23.11.2006, 11:41
Bei sehr Vielen Asuros ist das Problem, dass die Motoren falsch gepolt sind bzw falschruum laufen, obwohl richtig gelötet wurde. Ich glaue da kann man einfach nix machen... Ich habe 2 Asuros gebaut, bei beiden liefen die Motoren rückwärts.
Also weiss im moment nicht weiter, hab alle , die in der Anleitung dafür verantwortlichen wiederstände erstet, und des problem liegt immer noch vor, hab mir jetzt mal nen neuen bestellt und hoffe mal das es da klappt
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.