Archiv verlassen und diese Seite im Standarddesign anzeigen : Linker motor läuft immer...Hilfe!!!
Hallo Comunity,
Ich habe endlich meinen asuro aufgebaut. Beim Selbsttest ging alles reibungslos aber wo ich ihn das erste mal programmiert habe ( habe nur programmiert dass StatusLed rot leuchten soll ) war die enttäuschung groß, weil sich der linke motor gedreht hat (vorwäts).
Bitte helft mir wäre sehr dankbar!!!
Gruß Chris
radbruch
09.11.2009, 18:34
Init() vergessen? Zeige uns dein Programm, wenn du Glaskugelsprüche vermeiden willst.
aber wo ich ihn
aber als... (sorry;)
Wenn der Selbsttest geht scheint's ja nicht an der Hardware zu liegen. Du müsstest uns also schon Deinen Code zeigen, damit wir Dir helfen können...
Hubert.G
09.11.2009, 18:36
Und wie soll man dir helfen?
Wenn ich dir schreibe das der Fehler in Zeile 34 ist, wirst du es mir nicht glauben.
Wenn es mit dem Selbsttest funktioniert, dann musst du den Fehler im Code selbst suchen oder ihn hier hereinstellen.
Das ist ein neues programm:
#include "asuro.h"
int main(void)
{
unsigned char tasterzustand;
Init();
tasterzustand=PollSwitch();
while (1)
StatusLED(RED);
sleep(255);
BackLED(ON,ON);
Sleep(255);
FrontLED(ON);
sleep(255);
return 0;
if (tasterzustand > 7) // Hier macht er es nur wenn Taster K1 bis K3 gedrückt werden und zwar in beliebiger Kombination, d.h. auch alle zusammen. (Siehe Tabelle in deinem letzten Thread. einfach addieren)
{
MotorDir(RWD,BREAK);
MotorSpeed(120,0);
}
else if (tasterzustand > 0 && tasterzustand <= 7) // analog zu oben nur hier K4 bis K6
{
MotorDir(BREAK,RWD);
MotorSpeed(0,120);
}
else // Hier ist keiner gedrückt (tasterzustand == 0)
{
MotorDir(RWD,RWD);
MotorSpeed(120,120);
{
}
return 0;
}
sry hab ich vergessen...
Edit: Ich habs rübergeflasht und da hat er noch das selbe gemacht wie vorher.
Die while schleife funktioniert nicht denke ich. Jedenfall fehlt dort einer "{" klammern. Wie du das compiliert gekriegen hat ohne warnung ist mich einer rädsel.
Die erste "return 0;" gehört dort im mitten auch nicht. Die "return 0;" am ende deines program reichtst.
KingTobi
09.11.2009, 22:50
Die while schleife funktioniert nicht denke ich. Jedenfall fehlt dort einer "{" klammern. Wie du das compiliert gekriegen hat ohne warnung ist mich einer rädsel.
Klar geht sowas! Er führt dann in einer unendlichen Schleife den nächsten Befehl nach while aus. "while(1) 1+1;" ist z.B. auch gültig, aber sinnlos.
Die erste "return 0;" gehört dort im mitten auch nicht. Die "return 0;" am ende deines program reichtst.
Stimmt, aber in seinem Fall kommt er da eh erst garnicht hin.
Du hast recht. Es wurde immer beim
while (1) StatusLED(RED);
stecken bleiben. Das obene gepostete program kan aber nicht richtig compiliert sein weil es nicht das gleichen anzahl von "{" und "}" klammern hat. Und irgendwie muss sein Asuro an die Motorspeed befehl ran gekommen sein. Sonnst geht das linken rad nicht forwärts. Oder NXTman hat seiner Linkern Rad beöbachtung gemacht auf basis einer altere version seines Program. (vieleicht ohne das zu wissen)
Hi NXTman,
wie meine Vorredner schon sagten, der Kode stimmt so nicht.
Hab deinen Kode überarbeitet, syntaktisch und indent, aber nicht die Funktion an sich. Habe drei Stellen auskommentiert, da das semantich/syntaktisch falsch war.
#include "asuro.h"
int main(void) {
uint8_t tasterzustand;
Init();
tasterzustand = PollSwitch();
while (1) {
StatusLED(RED);
sleep(255);
BackLED(ON,ON);
Sleep(255);
FrontLED(ON);
sleep(255);
//return 0; // OM> das darf hier nicht stehen!!
if (tasterzustand > 7) {
// Hier macht er es nur wenn Taster K1 bis K3 gedrückt werden und
// zwar in beliebiger Kombination, d.h. auch alle zusammen. (Siehe
// Tabelle in deinem letzten Thread. einfach addieren)
MotorDir(RWD,BREAK);
MotorSpeed(120,0);
} else if (tasterzustand > 0 && tasterzustand <= 7) {
// analog zu oben nur hier K4 bis K6
MotorDir(BREAK,RWD);
MotorSpeed(0,120);
} else {
// Hier ist keiner gedrückt (tasterzustand == 0)
MotorDir(RWD,RWD);
MotorSpeed(120,120);
// { // OM> das darf hier nicht stehen!
}
}//while(1)... // OM> das hat gefehlt
return 0;
}
Gruss,
O.
Hab den selbsttest nochmal draufgeladen und da ist mir aufgefallen dass sich der linke Motor auch immer vorwärts drehen will aber wennich ihn ne sekunde festhalt(das Rad)bleibt er stehen. Woran könnte das liegen vlt ein falscher wiederstand?
Ich bin froh über die vielen antworten aber es hat mir bis jetzt leider noch nichts gebracht.
Gruß Chris
Hi NXTman,
bau den ATMEGA8 mal aus, also aus dem Sockel mit einem Schraubenzieher vorsichtig raushebeln, schalt den Asuro an und schau ob der Motor dann auch dreht.
Wenn ja, dann hast Du beim Löten irgentwo einen Fehler in der H-Brücke gemacht (der Teil mit den vier 3-Beinigen Transistoren T5, T7, T6, T8 ) .
Vielleicht sind die Transistoren vertaucht eingelötet, da T6 und T8 NPN-Transistoren und T5, T7 PNP-Transistoren sind. Bei falschem Einbau kann passieren was Du beschreibst.
Gruss,
O.
Hab den Atmega8 Ausgebaut und der motor dreht sich nicht...
was ist nur das problem?
Edit: Ich hab mal mit dem multimeter die pinns von dem IC sockel den durchgang geprüft und da is mir aufgefallen das bei denen die ich mit den Strichen verbunden habe durchgang ist. ist das normal?
Gruß Chris
Hi NXTman,
da is mir aufgefallen das bei denen die ich mit den Strichen verbunden habe durchgang ist.
Welche Striche meinst Du?
O.
Hi NXTman,
war gerade nicht eingeloggt und hab das Bild nicht gesehen, deshalb wusste ich nicht was Du mit "Strichen" meinst.
Man lade das DataSheet vom ATMEGA8 und siehe da....
1 - 7 Reset auf VCC
8 - 22 GND auf GND
Reset wird aktiv auf VCC gezogen; VCC o--o VCC ==> Durchgang
GND ist mit GND verbunden; GND o--o GND ==> Durchgang
Ich glaube das hättest Du selbst auch sehen können, oder? ;)
Test:
1) Leg mal PB1(PIN 15) auf VCC(PIN 7), das gibt die H-Brücke frei
2) Leg jetzt auf PD4(PIN 6) oder PD5(PIN 11) VCC, dann sollte der Motor in die eine oder in die andere Richtung loslaufen.
Geht das?
Gruss,
O.
@ Osser: Meinst du mit dem multimeter? Wenn ja, dann muss ich leider sagen es gehn nicht.
Solte ich mich eher mit Arexx oder mit Conrad (wo ich den Asuro gekauft habe) in Verbindung setzen? Weil ich nämlich kurz vor'm verzweifeln binn weil das s.....Ding nicht geht.
Gruß Christof
Hubert.G
13.11.2009, 20:59
"Osser" Meinte du sollst Drahtbrücken machen.
ich hab jetzt ne mail an arexx geschrieben das der asuro nicht funktionieren will! :frown:
Hi NXTman,
gib nicht gleich auf, Du findest den Fehler schon.
Dran bleiben...
Chin Up!
Gruss,
O.
ja man!!!!!!!!!!!!!!! Ich habs :lol: :lol: :lol: :lol: :lol: :oops: :oops: :oops: :D :D :D :D
Die transistoren waren das problem....
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.