Schaltkreis Motortreiber mit TLE206-2S

Hallo liebe Arduino Community.

Ich habe mir ein Motorschaltkreis mit zwei Motoren gebaut. Dieser sieht wie folgt aus:

Die Pins 5,6,10,11 sind alle im PinMode PWM. Passend dazu habe ich eine App programmiert um die Motoren mit Sliders zu steuern. Soweit so gut der Test kann gestartet werden.

Motor1
Pin5: hochregeln von 0-255 => Motor dreht und wird schneller => Super alles OK
Pin6: ist ebenfalls OK => Motor dreht in andere Richtung und wird schneller

Motor2
Pin10: hochregeln 0-255 => Nichts passiert, erst bei 255 kommt dann plötzlich Vollgas
Pin11: Ist wiederum OK => Motor dreht und wird schneller

Ich habe schon etliches geprüft, ob die Kontakte Ok sind, statt Pin10 Pin auch schon Pin9 verwendet. Nichts hat geholfen. Ich stehe auf dem Schlauch und könnte ein paar Tipps gebrauchen woran es denn noch liegen könnte dass der Pin10 erst ab 255 mit Vollgas reagiert. Ist da was im Schaltkreis nicht in Ordnung? Übersehe ich etwas?

(deleted)

Hallo Peter.

Die Programmierung ist nicht in der Arduino-IDE erstellt somit sieht mein Sketch etwas anders aus. Auf dem Arduino selber läuft der Standard Firmata Sketch und ich verbinde mich mit meiner eigenen App wo auch das Pin Setup abläuft. Aber Du hast Recht ich kann mal prüfen was passiert wenn ich ganz normal über die Arduino-IDE mit einem simplen Sketch arbeite. Dass ich selbst noch nicht daran gedacht hab :drooling_face: Ich kann es aber erst später testen, bin noch auf Arbeit. Hoffen wir mal das dies die Erleuchtung bringt die ich suche.

Setup Teil:

App.myArduino.pinMode(PinRX, PinMode.INPUT); //RX Pin = INPUT
App.myArduino.pinMode(PinTX, PinMode.OUTPUT); //TX Pin = OUTPUT
App.myArduino.pinMode(2, PinMode.OUTPUT);
App.myArduino.pinMode(3, PinMode.SERVO);
App.myArduino.pinMode(4, PinMode.OUTPUT);
App.myArduino.pinMode(5, PinMode.PWM);
App.myArduino.pinMode(6, PinMode.PWM);
App.myArduino.pinMode(7, PinMode.OUTPUT);
App.myArduino.pinMode(8, PinMode.OUTPUT);
App.myArduino.pinMode(9, PinMode.OUTPUT);
App.myArduino.pinMode(10, PinMode.PWM);
App.myArduino.pinMode(11, PinMode.PWM);
App.myArduino.pinMode(12, PinMode.OUTPUT);
App.myArduino.pinMode(Licht_Pin, PinMode.OUTPUT);
App.myArduino.pinMode(14, PinMode.ANALOG); //A0
App.myArduino.pinMode(15, PinMode.ANALOG); //A1
App.myArduino.pinMode(16, PinMode.ANALOG); //A2
App.myArduino.pinMode(17, PinMode.ANALOG); //A3
App.myArduino.pinMode(18, PinMode.ANALOG); //A4
App.myArduino.pinMode(19, PinMode.ANALOG); //A5

Loop Teil:

App.myArduino.analogWrite(pin, (ushort)value); //Entsprechender Pin und Wert wird ausgelesen

Hi

Wenn Du die Motren tauscht, bleibt das Problem am Motor, oder am Ausgang des Treiber?
Wenn Du die Ansteuerung zum Treiber tauscht, bleibt das Problem, oder wandert Es?

Ggf. könnte Servo und PWM kollidieren - prüfe, ob der Motor funktioniert, wenn der SERVO nicht eingerichtet wird.

MfG

Die Fehlerbeschreibung läßt denken pin 10 wäre kein PWM fähiger Ausgang, was beim Arduino UNO nicht stimmt.

Haben wir eine Interferenz mit Doppelnutzung des Timers 1 durch PWM und eine Bibliothek?

Versuch statt Pin 10 das Pin 3 zu nehmen Dann müßte es funktionieren.
Grgenkontrolle auch Pin 9 wie Pin 10 müßte nicht funktionieren.
Grüße Uwe

postmaster-ino:
Ggf. könnte Servo und PWM kollidieren - prüfe, ob der Motor funktioniert, wenn der SERVO nicht eingerichtet

Das ist es tatsächlich, damit hätte ich niemals gerechnet. Ohne Servo Einrichtung es klappt es ohne Probleme. Immerhin ein Anhaltspunkt. Auch wenn ich es noch nicht ganz verstehe warum das so ist. Denn das Ding ist, dass ich später da noch 6 Servos anhängen will. Muss ich wohl noch bisschen probieren und recherchieren.

Vielen Dank!

Hi

Dazu suchst Du am Besten nach 'PCA9685' - ist ein PWM-Treiber, Dem man auch beibringen kann, alle 20ms ein Impuls von 1...2ms zu schicken.
Mit diesen Baustein kannst Du 16 Servos befehligen. (I2C)

Oder Du schaust Dir die MoBaTools an - Da werden die Servo-Impulse per Timer-Interrupt (intern) auf beliebige Pins erzeugt.

MfG

Wenn man die Pins 3,5,6,11 als PWM verwendet, gibt es keine Probleme. Dann geht es auch mit 8 Servos wie das untenen stehende Setup zeigt. Zumindest beim Arduino Uno, andere reagieren evtl anders. Damit kann ich leben und kann weiter machen. Vielen Dank Euch

App.myArduino.pinMode(2, PinMode.SERVO);
App.myArduino.pinMode(3, PinMode.PWM); //Motordriver 1
App.myArduino.pinMode(4, PinMode.SERVO);
App.myArduino.pinMode(5, PinMode.PWM); // Motordriver 1
App.myArduino.pinMode(6, PinMode.PWM); // Motordriver 2
App.myArduino.pinMode(7, PinMode.SERVO);
App.myArduino.pinMode(8, PinMode.SERVO);
App.myArduino.pinMode(9, PinMode.SERVO);
App.myArduino.pinMode(10, PinMode.SERVO);
App.myArduino.pinMode(11, PinMode.PWM); // Motordriver 2
App.myArduino.pinMode(12, PinMode.SERVO);

Wenn man die 4 PWM Ausgänge 3,5,6,11 verwendet, dürfte die servo.h Bibliothek gleichzeitig funktionieren. Das ganz ohne Zusatzhardware. servo.h kann auf dem Arduino UNO 12 Servos bedienen.
Grüße Uwe