LOW wird zu 0,9 Volt wenn anderer Pin am Port auf HIGH geht

Hallo,

ich versuche mit einem Arduino Mega einen Motor mittels H-Bridge L293D zu steuern. Die Motorspannung an der Bridge sind 10 Volt.

Den Enable der H-Bridge habe ich fix auf 5V gelegt. Die beiden Inputs hängen an Pin 8 und 9 um die Geschwindigkeit des Motors mittels PWM steuern zu können.

Für erste Tests beschreibe ich die Pins 8 und 9 mit digitalWrite und habe den Motor nicht an der H-Bridge angeschlossen. Sind beide Pins auf LOW liegen an beiden Pins 0 Volt an. Schalte ich einen der Pins auf HIGH liegt an diesem Pin 5 Volt und am anderen Pin plötzlich 0,9 Volt an. Am Ouput der H-Bridge habe ich eine Spannung von ca. 8 Volt für den Motor, was korrekt ist.

Sobald ich den Motor an die Bridge anschließe wird aus den LOW 0,9 Volt eine annähernd sinusförmige Spannung zwischen 0 und 1,5 Volt. Aus der Bridge kommt folglich auch kein sauberes Signal, wodurch der Motor nicht läuft. Lege ich den Input der Bridge an dem LOW anliegen soll manuell auf GND so läuft der Motor.

Kann mir jemand sagen, warum bei einem digitalWrite(..., LOW) eine Spannung ungleich 0 Volt wird, sobald ein anderer Pin auf HIGH geschaltet wird?

Viele Grüße
Mister-O

... Wenn die Kristallkugel summt ...

Wie in deinem geheimen Code offensichtlich zu erkennen ist, hast du vergessen den Pin mit pinMode() auf OUTPUT zu setzen.

Der Code ist kein Geheimnis. Der pinMode(..., OUTPUT) fehlt nicht.

bool InitPorts()
{
pinMode(SLIDER_ENDSCHALTER_LINKS, INPUT);
pinMode(SLIDER_ENDSCHALTER_RECHTS, INPUT);

pinMode(FOTO_ENDSCHALTER_LINKS, INPUT);
pinMode(FOTO_ENDSCHALTER_RECHTS, INPUT);

pinMode(SLIDER_MOTOR_LINKS, OUTPUT);
digitalWrite(SLIDER_MOTOR_LINKS, LOW);
pinMode(SLIDER_MOTOR_RECHTS, OUTPUT);
digitalWrite(SLIDER_MOTOR_RECHTS, LOW);

pinMode(FOTO_AUSLOESER, OUTPUT);
}


bool IsSliderEndschalterRechts()
{
return digitalRead(SLIDER_ENDSCHALTER_LINKS) == LOW;
}


bool IsSliderEndschalterLinks()
{
return digitalRead(SLIDER_ENDSCHALTER_RECHTS) == LOW;
}


bool StartSliderMotor(int geschwindigkeitI, Fahrtrichtung richtungI)
{
bool isMotorGestartet = false;

if (richtungI == RECHTS && !IsSliderEndschalterRechts())
{
digitalWrite(SLIDER_MOTOR_LINKS, LOW);
digitalWrite(SLIDER_MOTOR_RECHTS, HIGH);
isMotorGestartet = true;
}

if (richtungI == LINKS && !IsSliderEndschalterLinks())
{
digitalWrite(SLIDER_MOTOR_RECHTS, LOW);
digitalWrite(SLIDER_MOTOR_LINKS, HIGH);
isMotorGestartet = true;
}

return isMotorGestartet;
}

Du solltest schon den kompletten Sketch posten.
Es fehlt das Setup und die Definitionen.
Ohne die erkennen wir nicht welche Pins 8 und 9 sind.

Verwende bitte Code-Tags für den Sketch.

Tipp:
Da du den Fehler noch nicht gefunden hast, ist es recht wahrscheinlich, dass der Fehler dort steckt, wo du ihn nicht vermutest.

Mein Code besteht aus 12 CPPs. Zur Verdeutlichung habe ich nun ein kleines Testprogramm geschrieben, das genau das gleiche seltsame Verhalten zeigt:

void setup()
{
  pinMode(8, OUTPUT);
  digitalWrite(8, LOW);
  pinMode(9, OUTPUT);
  digitalWrite(9, LOW);
}

void loop()
{
  digitalWrite(8, LOW); // -> 0,9 V
  digitalWrite(9, HIGH);  // -> 5 V
  delay(3000);

  digitalWrite(8, LOW); // -> 0 V
  digitalWrite(9, LOW); // -> 0 V
  delay(3000);

  digitalWrite(8, HIGH);  // -> 5 V
  digitalWrite(9, LOW); // -> 0,9 V
  delay(3000);

}

Stromversorgung alles korrekt? Masse verbunden?

Zur Verdeutlichung habe ich nun ein kleines Testprogramm geschrieben, das genau das gleiche seltsame Verhalten zeigt

Großes Lob.

Mal andere Pins ausprobiert?

Anderen Arduino ausprobiert? (Habe gehört, man kann in so einem Controller auch einzelne Ports kaputt machen (Überlasten mit zu großen Strömen) und der Rest läuft noch einigermaßen.

michael_x:
Habe gehört, man kann in so einem Controller auch einzelne Ports kaputt machen (Überlasten mit zu großen Strömen) und der Rest läuft noch einigermaßen.

Weil jeder Port (also 8 Pins) für sich ein Modul mit seiner eigenen Elektronik ist.

Auf anderen µCs habe ich auch schon einzelne Pins geschrottet weil ich mit einer Oszi-Spitze abgerutscht bin.

Ist also möglich. Probiere mal einen andere Pin aus und teste vielleicht ob die anderen Pins auf dem Port noch gehen.

Ja, habe auch schon andere Pins, allerdings am gleichen Port ausprobiert (wegen PWM).

Einen zweiten Arduino habe ich heute bestellt, da ich mit meinem Latein am Ende bin. Bin mal gespannt, wie der sich verhält.

Zum Probieren brauchst Du kein PWM. Also versuch mal andere Pins.
Grüße Uwe

Heute kam der neue Arduino. Leider zeigt er exakt das gleiche Verhalten. Somit bin ich im Moment ratlos.

Habt Ihr noch eine Idee?

Gleicher Lieferant? Evtl. gleiche Charge?

Macht der Mega das auch, wenn gar nichts dranhängt, außer dem Multimeter?

Ich denke es hat was mit der Versorgungsspannung zu tun. Es hört sich wir eine driftende Masse an evtl. wegen zu hohem Strom an zu kleinen Querschnitten oder unsaubere bzw bei Belastung unsaubere Versorgungsspannung.
Mal Versucht alles nur an Akkus zu hängen?
Gruß
DerDani

Sorry, dass ich Euch genervt habe und Schande über mein Haupt.

Ich habe die 4 Masse-Pins der H-Bridge zwar verbunden, aber vergessen sie auf Masse zu legen.

Serenifly in post #6 mit

Serenifly:
Stromversorgung alles korrekt? Masse verbunden?

hat gewonnen. :wink: :wink: :wink: :wink: :wink: :wink:

Mister-O, mach Dir keine Sorgen, Hauptsache der Fehler ist gefunden und Du hast dazugelernt.
Viele Grüße Uwe

ElEspanol:
Macht der Mega das auch, wenn gar nichts dranhängt, außer dem Multimeter?

Bingo