PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Selbsttest hängt sich auf



hdwinkel
14.01.2012, 23:50
Hallo,

Nach Abschluß der Lötarbeiten habe ich einen Selbsttest durchgeführt. Dieser lief durch mit einem Fehler: Die rechte Reflexlichtschranke tat nicht. Die Linke leuchtete grün bei Test mit weißem Blatt, bei der rechten tat sich nichts.
Entsprechend Empfehlung habe ich R20 und T11 überprüft und neu gelötet. Der Effekt war leider eine Verschlimmbesserung:
Seitdem hängt der Selbsttest sich beim Test der Reflexlichtschranke auf. Dabei leuchtet die grüne LED ständig (bei absoluter Dunkelheit leuchtet sie nicht, der Test hängt sich aber trotzdem auf).
Mit Multimeter habe ich die Odometriefähigkeit gemessen (Pin 23 bzw. 24 gegen GND bei ausgebaute IC's). Beide zeigen 4,33 V. Die linke IR zeigt eine schwache Reaktion bei Test mit weißem Blatt auf 4,2 V, die rechte zeigt keine Reaktion.
Ein kleines merkwürdiges Detail: beim Tastentest mit K6 läuft der linke Motor, aber die beiden BackLED flackern.

Ich bin jetzt ein wenig am Ende meines Lateins.
Hat jemand eine Idee warum sich der Selbsttest aufhängt?
Muß ich die IR's IRL80A und/oder die rosa Phototransistoren LPT80A austauschen weil sie defekt sein könnten oder liegt das Problem womöglich ganz woanders?
Für ein paar Hinweise wäre ich sehr dankbar.

/HDWinkel

Kampi
15.01.2012, 00:16
Das die LEDs flackern wenn der Motor läuft ist meines Wissens nach normal. Wenn du ein Handy mit Fotokamera hast kannst du mal gucken ob die IR LEDs leuchten. Einfach den Selbsttest machen und dann die Handykamera aktivieren und aufs Display schauen. Wenn die IR LEDs leuchten siehst du es auf dem Handydisplay. Falls die LED leuchtet kann es sein das der Fototransistor einen weg hat und du den austauschen musst.

hdwinkel
15.01.2012, 01:05
Hallo Kampi,

das mit der Handy-Kamera werde ich morgen mal probieren. Unabhängig vom Erfolg verstehe ich trotzdem nicht, weshalb sich der gesamte Selbsttest aufhängt.
/HDWinkel

Kampi
15.01.2012, 09:00
Naja wenn der Selbsttest den Fototransistor abfragt und dieser kaputt ist (oder die Diode kaputt ist) und er deswegen nicht durchschalten kann, kann das Programm nicht weiter durchlaufen.

hdwinkel
15.01.2012, 10:21
Die Fototransistoren (die rosa Teile LPT80A) leuchten beide. Der linke etwas stärker wie mir scheint.
Ein Unterschied besteht beim Start, der linke leuchtet beim Start sofort schwach und wird dann kurzzeitig heller, der rechte bleibt anfangs dunkel und wird dann erst hell, allerdings nicht so stark.
Beide werden dann erst wieder beim Odometrietest hell und der Selbsttest bleibt hängen. Da haben beide das Dauerleuchten.

Kampi
15.01.2012, 10:34
Öh sind die Rosa Bauteile nicht die Dioden? Wenn die leuchten können es nur die Dioden sein. Hast du die vielleicht falsch eingebaut? Also Dioden mit Transistor vertauscht?

hdwinkel
15.01.2012, 10:52
Äh, habe grade noch mal nachgeschaut, das ist tatsächlich möglich:
In der Anleitung steht:
T11/T12: LPT80A Fototransistor (farblos)
D13/D14: IRL80A IR-LED (rosa)

In der Stückliste derselben Anleitung steht's aber grad andersherum:
IIL80A IR-LED (farblos)
LPT80A Fototransistor (rosa)

Echt bescheuert, was gilt denn nun?

Kampi
15.01.2012, 10:57
Die Rosa Bauteile sind die LEDs. Das siehst du auch daran das die leuchten wenn du den Trick mit der Handykamera machst :)
Ich hab auch den ein oder anderen Fehler in den Anleitungen des Asuros gefunden....u.a. der Schaltplan vom Snake Vision. Da muss man echt gut aufpassen ;)

hdwinkel
15.01.2012, 11:29
Ich habe noch mal alles überprüft. Die rosa Teile sind die IR-LED, das heißt die Anleitung stimmt, aber die Stückliste ist falsch.
Das bedeutet aber auch, daß ich die IR-LED IRL80A richtig auf D13/D14 plaziert habe und die farblosen Fototransistoren LPT80A auf T11/T12.
Leider bedeutet das aber auch, daß mein kurzer Hoffnungsschimmer grade abgeraucht ist und ich wieder am Anfang des Problems stehe.

Kampi
15.01.2012, 11:31
Da sich der Selbsttest bei den Reflexgebern aufhängt und du sagst das die Dioden leuchten würde ich mal bei den Transistoren ansetzen, also neue Einlöten bzw. die Strecke vom Transistor zum Controller überprüfen.

hdwinkel
15.01.2012, 11:37
Dann werde ich das wohl mal machen müssen.
Hast Du noch einen Tipp wo ich die Bauteile herbekomme? Ich habe einen Conrad direkt vor Ort, oder ist eine Bestellung besser, z.B. Reichelt?

Kampi
15.01.2012, 11:42
Wenn du einen Conrad direkt vor Ort hast schau erstmal da nach. Sind zwar etwas teurer dort als bei Reichelt aber bei Reichelt hast du noch 5,90€ Versand und das rechnet sich nicht für zwei Transistoren.
Die kosten bei Conrad 0,98€ pro Stück:

http://www.conrad.de/ce/de/product/153470/

hdwinkel
15.01.2012, 11:46
Danke für die Tipps, ich melde mich dann wieder wenn die neuen Bauteile eingelötet sind.

Valen
17.01.2012, 11:07
Naja wenn der Selbsttest den Fototransistor abfragt und dieser kaputt ist (oder die Diode kaputt ist) und er deswegen nicht durchschalten kann, kann das Programm nicht weiter durchlaufen.Doch, weiterlaufen wird es. Schau mal die SelbTest Code an:


SelfTest.c:

... // line 46

SerWrite("Odometrie Test\n\r",16);
FrontLED(ON);
for (i = 0; i < 0xFFF0; i++)
OdometrieTest();
StatusLED(OFF); FrontLED(OFF);
...


Test.c:

...
// line 104

/* ---------- Odometrie Sensor Test ------------- */
/* Left Sensor -> Status LED GREEN ON when Light on
Left Phototransistor bright enough */
/* Right Sensor -> Status LED RED ON when Light on
Right Phototransistor bright enough */
void OdometrieTest(void)
{
unsigned int data[2];

OdometrieData(data);
StatusLED(OFF);
if (data[0] < 512)
StatusLED(GREEN);
if (data[1] < 512)
StatusLED(RED);
}
/* END Odometrie Sensor Test ------------------- */

Es misst einfach nur die Spannungswerten 65520 mal und lasst den StatusLED leuchten. Aufhängen kann das Programm nur wann irgendwie ein Reset-situation detektiert wird. (Spannungseinbruch tiefer als Reset-pin Bedingung, und vielleicht blockiert den Bootloader wegen schwache Akku-spannung) Sonnst wird das Programm in einiger Sekunden weiter gehen mit den Motor Test.

hdwinkel
19.01.2012, 06:35
Das verstehe ich als Neuling ehrlicherweise nicht ganz. Die StatusLED leuchtet dauergrün. Bedeutet das nun, daß das Programm wegen dieses Reset als ganzes beendet wird? Müsste durch diesen Reset nicht auch die LED erlöschen?

Valen
19.01.2012, 10:33
Wann ein Reset eintrit, wird das laufende Programm beendet. Den Prozessor wird komplett neu eingestellt als wie bei anschalten. Und dann startet den Bootloader von anfang an. Also, wann diese Reset wirklich passiert wurdest du das dadurch erkennen. Nach dem Bootloader abgearbeitet ist geht er weiter mit das gespeicherte Programm. (nur nicht wann die Akku spannung nicht reicht) In deinem Fall sollte das dass SelbTest Programm sein. Aber das wird auch den Statusled Gelb oder Rot leuchten lassen. Ein Reset ist es dan vermutlich doch nicht.

Hat er zwischen den OdometrieTest und 'aufhängen' den MotorTest gemacht? Dann ist er vermutlich schön bei den sehr langweilige Serielle KommunikationsTest an gekommen. Diese Test wartet ganz lange wann es kein Zeichen empfangt. (Mit StatusLED grun! ;) ) Es wartet ein Timeout-dauer ab äquivalent zu 65534 Zeichen (timeout= FFFE hexadezimal), mal 10 bits pro Zeichen ist 655340 UART-bits, ist 273 Sekunden timeout (mit 2400 Baud). Und das versucht er 254 mal (FE hexadezimal etwas zu empfangen und dann dass nächste höher Zeichen zu senden. Also dauert den SerielTest total 69342 Sekunden, oder 19 Uhr bis den Selbtest wieder von Start mit "-- ASURO Testing --" widerholt. Wann die Empfang Baustein nichts bekommt! Das könnte sicher den Eindrück von 'aufhängen' geben. Aber dann musste erst den Motoren (versucht) gedreht (zu) haben.

[EDIT] Vielleicht irre ich mich mit den Timeout Sekunden dauer. Könnte auch nur 65534 mal testen des UCSRA Register sein ob etwas empfangen ist. Was sicher schneller passiert. Aber keine ahnung wieviel genau.


void SerialTest(void)
{
unsigned char data;
unsigned char i;
for (i = 0; i < 0xFE; i++) {
StatusLED(GREEN);
SerRead(&data,1,0xFFFE);
StatusLED(RED);
if (data != 'T') data += 1;
SerWrite(&data,1);
}