PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Merkwürdige Odometrie Daten?!



Vin
05.06.2012, 10:38
Hallo,

ich heiße Vincent und bin neu hier im Forum. Ich hab mich angemeldet, da ich einen Asuro habe und somit auch einige Probleme, die ich nicht selbt lösen kann.

Mein aktuelles Problem sind die Odometrie-Daten. Ich habe mir ein Programm geschrieben, in welchem der Asuro mir die aktuellen Odo. Daten liefert. Diese sind aber sehr merkwürdig und ich weiß nicht warum. Liegt es vielleicht an meinem Programm?:


#include <asuro.h>

int main (void)
{
unsigned int data[2];

Init();

while(1)
{
OdometryData (data);
Msleep (1000);

SerWrite("\n\rLinks: ",10);
PrintInt(data[0]);

SerWrite("\n\rRechts: ",10);
PrintInt(data[1]);

Msleep(3000);
}
return(0);

}


Die Werte die mir mein Asuro liefert sind folgende:

Links: 1023
Rechts: 0
Links: 1023
Rechts: 0
usw...

Oder liegt das an der Elektronik? Ich weiß aber nicht genau wie, ich dies überprüfen kann. Habt ihr vielleicht eine Idee, wie ich weiter vorgehen kann?

Ich hoffe ihr hab Verständnis, dass ich noch ein Anfänger im Programmieren und in der Technik bin.

Mit freundliche Grüßen
Vincent

radbruch
05.06.2012, 14:16
Hallo

Bevor wir uns auf die Fehlersuche stürzen, warum schreibst du deine Odometrie-Funktion mit y und nicht mit ie wie es in der Library definiert ist?

Gruß

mic

Vin
05.06.2012, 14:59
Also bei mir steht das in der library mit y, aber ich hab es auch schon mit ie probiert... :

Nur zur Demonstration der Parameter/Returnwerte)

unsigned int data [2];
OdometryData (data);
if (data [0] > data [1]) // 0 linker Sensor; 1 ist rechter Sensor
fahre_links (); // Ein bisschen nach links fahren
if (data [0] < data [1])
fahre_rechts (); // Ein bisschen nach rechts fahren
BackLED (ON, OFF); // linke Back-LED mal wieder anschalten

markusj
05.06.2012, 18:07
Die Werte sind sehr untypisch, das entspräche genau GND bzw. VCC. Solche Spannungen kommen aber eigentlich nicht an den Odometriesensoren zustande. Sind beim Löten irgendwo eine Brücke nach VCC/GND entstanden?

Dein zweites Codebeispiel macht mit den Messwerten des Linienfolgers Sinn, nicht aber mit den Odometriesensoren ...

mfG
Markus

Vin
05.06.2012, 18:40
Schon mal danke für die Hilfe,
aber ich kann keine Lötbrücken erkennen und die Lötstllen von T11/12 und D13/14 sind ja auch ziemlich alleinstehend. Die Messwerte gibt mir der Asuro aber leider bei meinem Programm mit OdometrieData zurück :-(. Meine Linienverfolgungssensoren sind aber in Ordnung und geben auch vernünftige Werte.
Hat noch jemand eine Idee was das Problem sein könnte? Kann ich die OdometrieDaten überhaupt mit meinem Programm einlesen oder hab ich einen Denkfehler in meinem Programm?

radbruch
05.06.2012, 19:10
Fototransistoren und LEDs verwechselt?

Beim probot sind die selben Bauteile im Einsatz, bebilderte Beschreibung auf Seite 20/21:

http://www.produktinfo.conrad.com/datenblaetter/175000-199999/191919-an-01-de-ROBOTERSYSTEM_PRO_BOT128_BAUSATZ.pdf

Vin
05.06.2012, 19:30
Nein die sind auch richtig eingebaut. Weiße sind Fototransistoren also bei T11/12 und rosane sind IR-Dioden bei D13/14.

Vincent

radbruch
05.06.2012, 19:55
Vielleicht muss data[] global sein?


#include <asuro.h>

unsigned int data[2]; // als globale Variable?

int main (void)
{
Init();

while(1)
{
OdometryData (data);
Msleep (1000);

SerWrite("\n\rLinks: ",10);
PrintInt(data[0]);

SerWrite("\n\rRechts: ",10);
PrintInt(data[1]);

Msleep(3000);
}
return(0);
}

#include <asuro.h>

Welche Version der Library verwendest du?

Vin
05.06.2012, 20:01
/*!
* \file version.c
* \brief Versions Kommentare und Versions String
*
* $Revision: 2.70 $
* $Date: 07. Januar 2007 $
* $Author: Jan Grewe, Robotrixer, Waste, Stochri, Andun, m.a.r.v.i.n $
[...]
#include "asuro.h"

const char version[5] = "2.80";

sind das die Informationen die du brauchst oder stehen die wo anderes?^^
Ich versuch es mal mit deineme Quellcode...
Vielen Dank
Vincent

Vin
05.06.2012, 20:05
Nein, geht auch nicht wenn ich data[] als globale Variable benütze. Die Werte, die mir der Asuro gibt,sind wieder dieselben: Links 1023 und Rechts 0.

Vincent

radbruch
05.06.2012, 21:08
Aha, das sollte die aktuelle Library v2.80 sein. Die verwende ich ja nicht...

Wie Markus schon geschrieben hat sind die ermittelten Werte recht extrem. Um Fehler der Software auszuschliesen könntest du im Betrieb die Spannung an den Pins 23 und 24 gegen GND messen. An 23 wird der rechte Wert eingelesen, an 24 der Linke.

Für die 0 auf der rechten Seite müsste T12 kurzgeschlossen sein oder beim Löten so verbrutzeln, dass er keinen Spannungsabfall mehr hat. 0 bedeutet hier 0V Eingangsspannung an Pin 23.

Die 1023 auf der linken Seite könnte man mit einer schlechten, weil nicht leitenden, Lötverbindung an T11 erklären. Oder eben auch mit einem Defekt durchs Löten bei dem er nicht leitend geworden ist. In beiden Fällen würde die Batteriespannung über R18 an Pin 24 anliegen und der ermittelte Wert wäre 1023.

Wenn man T11 überbrückt sollte auch für Links der Wert 0 ermittelt werden. Dann wären wenigstens beide Seiten gleich...

Vin
05.06.2012, 21:42
Beim Nachmesse habe ich folgende Werte bekommen:

An Pin 24 sind 5V und an Pin 23 sind 0V. D.h. deine Vermutung müsste stimmen. Doch überbrücke ich T11 wird der rechte Wert umd die 800, der linke bliebt bei seinen 1023. Überbrücke ich aber T12 wird der rechte Wert wie auch der linke 1023.
Sind meine Transistoren kaputt?
Die Lötstellen löte ich gleich nochmal vorsichtig nach. Mal sehn was dabei herauskommt.
Aber genau solch eine Hilfe habe ich mir erhofft. Vielen Dank!

Vincent

Vin
05.06.2012, 22:07
Ok der linke Wert liegt nun, nach dem erneuten löten, zwischen 650 und 900. Der rechte Wert jedoch liegt immer noch bei 0. Aber ich habe bedenken, dass die Lötstelle, des rechten Transistors, an der rechten Lötstelle mit der Achse verbunden ist. Der Test mit dem DMM ist auch positiv (es fließt Strom). Ist das normal oder ein Problem?

radbruch
05.06.2012, 22:23
Prima. Und danke fürs Lob.


Ok der linke Wert liegt nun, nach dem erneuten löten, zwischen 650 und 900.Sind die Werte ohne Codescheibenzahnrad gemessen? Bei einer schlechten Lötstelle hätte auch eine Brücke zwischen den Pins des Transistors nichts gebracht.


Der rechte Wert jedoch liegt immer noch bei 0. Aber ich habe bedenken, dass die Lötstelle, des rechten Transistors, an der rechten Lötstelle mit der Achse verbunden istDie rechte Seite des rechten Transistors sagt mir nicht viel. Aber die Achse ist mit GND verbunden und GND scheinbar auch mit Pin 23. Wenn "rechte Seite des rechten Transistors" der Verbindungspunkt zwischen R20, D16 und T12 ist, dann hast du den Fehler gefunden. Eine Verbindung, so wie du sie gemessen hast, würde den Pin 23 über die Achse mit GND verbinden, der Messwert wäre dann 0.

Ach, das würde dann auch passen:

Doch überbrücke ich T11 wird der rechte Wert umd die 800, der linke bliebt bei seinen 1023.Die Brücke zwischen den Pins von T11 wirkt sich auf den linken Wert nicht aus, weil die Pins keine Verbindung zur Platine haben. Und beim Halten des Asuro an den Achsen öffnet sich die Verbindung zwischen dem rechen Transistorpin und der Achse. Pin 23 ist deshalb nicht mehr mit GND verbunden.

Vin
05.06.2012, 22:33
Nein ich hab mich veschaut...die rechte Diode (der rechte Lötpin der rechte Diode ;D) ist mit der Achse verbunden, was glaub nicht weiter schlimm ist. Der rechte Transistor aber nicht! Doch die Spannung zw. GND und Pin23 ist immer noch 0V.
Die Werte sind mit Codescheibe gemessen und der linke Wert ändert sich dementsprechend auch.

radbruch
05.06.2012, 22:38
Radachse oder Codescheibenzahnradachse?

Vin
05.06.2012, 22:43
Mit der Radachse.

radbruch
05.06.2012, 22:47
Schade, das hätte so gut gepasst. Jetzt gehen mir langsam die Ideen aus, wir sollten für heute abbrechen.

radbruch
05.06.2012, 23:21
22500
(Aus der Anleitung (http://www.arexx.com/downloads/asuro/asuro_manual_de.pdf) Seite 16)

Bist du sicher, dass zwischen dem quadratischen Lötpad von T12 und der Achse keine Lötbrücke ist? Oder zwischen dem weiteren Verlauf der dünnen Leiterbahn und GND?

Vin
05.06.2012, 23:33
An dieser Stelle ist zu 100% keine Lötbrücke.
Ich mach für heute schluss bin aber morgen früh gleich wieder dran.

Gute nacht :D

radbruch
05.06.2012, 23:45
Dann ist wohl der Fototransistor kaputt und verursacht den Kurzschluss zwischen Pin 23 und GND. Wenn du ihn auslötest, und er defekt ist, sollte der Wert 1023 sein.

Gute Nacht ;)

Vin
06.06.2012, 10:30
Also ich hab den rechten Transistor jetzt ausgelötet. Der Wert ist jetzt aber nicht 1023 sondern 993. Aber ich denke dieser Wert ist dementsprechend vertretbar. Jetzt baue ich einen neuen Fototransistor ein. Bin gespannt, ob es funktioniert...

Vincent

Vin
06.06.2012, 11:17
Auch mit neuem Transistor bekomm ich rechts den Wert 0. Bin ich zu schlecht im löten, dass der Transistor schon wieder kaputt ist? :-(

markusj
06.06.2012, 13:58
Irgendwas stimmt da nicht. Ohne Transistor ziehen R18 respektive R20 die Leitung auf VCC, über die Back-LEDs kann kein Strom abfließen da ihre gemeinsame Steuerleitung von der ASURO-Lib ebenfalls auf High gezogen wird, ergo dürfte da nichts geringeres als 1023 anstehen.

Hast du Mal am anderen Ende der Leitung (beim AVR) nach möglichen Lötfehlern gesucht? Andererseits: Da sich der Wert nach dem Auslöten verändert hat, muss die Ursache wohl irgendwo in dem Bereich liegen ...

mfG
Markus

Vin
06.06.2012, 14:25
Oh yeaaahhh. Funktioniert jetzt, vielen Dank an alle. Ist mir fast schon peinlich, dass es wieder ein Lötfehler war. Tut mir leid, dass ich euch wegen solchen Fehlern aufhalte..

Vincent

Vin
06.06.2012, 14:33
* Lötkurs wäre eine gute Idee für mich :-)