PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : L293D Problem



m1ch15inner
11.07.2009, 11:50
Ich habe ein konkretes Problem beim Anschluss meines L293D.
Ich bekomme es zwar hin dass alles läuft aber ich darf die 5V der einen Seite nicht mit den 5V der anderen Seite verbinden, sonst laufen die zwei Motoren nur noch in eine Richtung und stehen in der anderen, außer einer der beiden Motoren ist abgeklemmt. genau das selbe passiert auch wenn ich im bild rot markierten teil ein Kondensator anschließe. (100µF)
vllt findet jemand meinen Fehler oder kann mir besser erklären was wo hingehört, da ich schon viele verschiedene zum teil falsche schaltplane im internet gefunden habe. danke
http://www.freewebs.com/sikspack1/DSC00638.JPG

Che Guevara
11.07.2009, 12:29
Hallo m1ch15inner,

es wäre sicherlich von Vorteil, wenn du den Schaltplan hier reinstellen würdest! Den nur von deinem Bild kann man nicht viel schließen.

Gruß
Chris

m1ch15inner
11.07.2009, 12:40
Schaltplan wie Anleitung hab ich von Letsmakerobots.com
http://letsmakerobots.com/node/2074?page=2

ich habe erst den einfachen schaltplan nachgebaut. dieser funktioniert nur wenn ich die obere verbindung weg lasse (zwischen pin1 und pin16).

und bei der erweiterten schaltung ist das selbe problem + das problem mit den kondesatoren.

dazu auch noch ne frage.. schadet es eigentlich irgend wem (microcontroller oder l293 oder gar motor) wenn ich die einfache schaltung beibehalte oder hat das nur auswirkung auf die zuverlässigkeit?

und noch ne frage: ich weiß nicht wie weit ihr euch hier im forum mit der platform arduino auseinander gesetzt habt. hab hier noch nicht viel gelesen darüber. aber muss ich denn VCC2 bzw. pin8 mit einer externen stromversorgung bedienen und GND verbinden mit dem des microcontlr oder reicht wenn ich alle (pin1,8,9,16) mit +5V verbinde?

vllt zur info: ich habe vor den gm9 getriebe motor von solarbotics zu verwenden. das sollte doch funktionieren!?

Hubert.G
11.07.2009, 12:57
Auf dem Bild sieht es so aus als hättest du + und - vertauscht, das heisst GND auf + an deinem Steckbrett? So etwas erleichtert die Fehlersuche nicht sehr.

021aet04
11.07.2009, 13:40
Könnte es sein, das wenn du eine Brücke bei der roten Markierung hineingibst die Versorgung Kurzschließt? Der Blaue geht auf -, der grüne auf +

m1ch15inner
11.07.2009, 13:59
@ hubert.g: ich weiß. habe es auch schon umgesteckt. ich habe kein fehler von der verkabelung gemacht. ich glaube eher das generell was schief läuft. es funktioniert ja alles nur wenn ich diese verbindung eben machen laufen die motoren wenn sie beide angeschlossen sind nur in eine richtung aber sie laufen.

@ roboter-spezialist: da soll keine brücke rein. laut anleitung kommt da ein 100µF kondensator rein. den hab ich jetzt aber durch einen 0,1µF ersetzt.. ist mir nach dem schaltplan schlüssiger.

hm

oberallgeier
11.07.2009, 14:20
Hi m1ch15inner,

Die Eingänge 1 und 9 am L293D sollten PWM-Eingänge sein, es sei denn, Du willst Deine Motoren NICHT mit variabler Geschwindigkeit laufen lassen.

Wenn Du 2 high und 7 low hast, läuft der Motor (an 3 und 6) in die eine und umgekehrt in die andere Richtung. Steht alles im Datenblatt. Ähnlich ist es bei der anderen Anschlussleiste des L293D. Das funktioniert auch - zumindest bei meinen Antrieben.

In Deiner "Anleitung" ist auch ein Link aufs Datenblatt - das ist meist der erste und auch der beste Weg etwas zum Laufen zu bringen. Datenblätter nicht lesen, verkehrt verdrahtete Steckbretter im Forum als Erklärungsbilder einklinken und so - das macht nicht wirklich Laune.


Ich bekomme es zwar hin dass alles läuft aber ich darf die 5V der einen Seite nicht mit den 5V der anderen Seite verbinden ...Überlege doch bitte, ob Du so einen Satz verstehst. Ich versteh diese Aussage nicht.

m1ch15inner
11.07.2009, 15:05
vllt is das mein fehler. ich habe 1 und 9 einfach an +5V vom arduino board angschlossen für "motor an" und dann das high signal auf 2 bzw 7 (eben das, das high sein soll) als pwm ausgegeben. es funktioniert nur dann wenn ich pin 1 und pin8 NICHT anschließe. was für mich seltsam ist. ich kenn mich nicht so sehr mit elektronik aus. ich bin gerade dabei mich einzuarbeiten in die materie, hätt ich vllt am anfang dazu sagen sollen^^. ich versuch jetzt die pins 2,7,10,15 mal an nicht pwm ausgänge anzuschließen und 1 und 9 an pwm ausgänge dann über 1 und 9 ein high signal senden und 2,7,10,15 eben die steuerung. und dann meld ich mich wieder.

jetzt geht nichts mehr. die motoren knacken nur noch.

Hubert.G
11.07.2009, 15:30
Auf 1 gehört PWM oder high für dauerlauf, 2 auf high, 7 auf low, dann dreht der Motor in eine Richtung, wenn du 2 und 7 umdrehst läuft er in die andere Richtung. Dafür brauchst du erst mal keinen Kontroller.

m1ch15inner
11.07.2009, 15:41
ja. ich habe jetzt alles genauso angesteckt wie auf der "anleitung"^^. so stehte es ja auch auf RN-Wissen.
pin1,8,9,16 an +5V
pin4,5,12,13 an GND
pin2,7,10,15 jeweils an digitale ausgänge von arduino
pin3,6,11,14 an die 2 DC-Motoren

Beobachten kann ich bei folgendem Programm:

// Use this code to test your motor with the Arduino board:

// if you need PWM, just use the PWM outputs on the Arduino
// and instead of digitalWrite, you should use the analogWrite command

// --------------------------------------------------------------------------- Motors
int motor_left[] = {5, 6};
int motor_right[] = {9, 10};

// --------------------------------------------------------------------------- Setup
void setup() {
Serial.begin(9600);

// Setup motors
int i;
for(i = 0; i < 2; i++){
pinMode(motor_left[i], OUTPUT);
pinMode(motor_right[i], OUTPUT);
}

}

// --------------------------------------------------------------------------- Loop
void loop() {

drive_forward();
delay(1000);
motor_stop();
Serial.println("1");

drive_backward();
delay(1000);
motor_stop();
Serial.println("2");

turn_left();
delay(1000);
motor_stop();
Serial.println("3");

turn_right();
delay(1000);
motor_stop();
Serial.println("4");

motor_stop();
delay(1000);
motor_stop();
Serial.println("5");
}

// --------------------------------------------------------------------------- Drive

void motor_stop(){
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], LOW);

digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], LOW);
delay(25);
}

void drive_forward(){
digitalWrite(motor_left[0], HIGH);
digitalWrite(motor_left[1], LOW);

digitalWrite(motor_right[0], HIGH);
digitalWrite(motor_right[1], LOW);
}

void drive_backward(){
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], HIGH);

digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], HIGH);
}

void turn_left(){
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], HIGH);

digitalWrite(motor_right[0], HIGH);
digitalWrite(motor_right[1], LOW);
}

void turn_right(){
digitalWrite(motor_left[0], HIGH);
digitalWrite(motor_left[1], LOW);

digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], HIGH);
}

Beide Motoren drehen Vorwärts, Stoppen und drehen wieder Vorwärts.
Eigentlich sollten sie Vorwärts Rückwärts Verschieden Verschieden und dann Stoppen.
Wenn ich einen Motor dann abstecke macht der andere dann genau das was er machen sollte.