RUMBA + Marlin (1.1.9): 2 Servos benötigt, nur ein Servo ist ansteuerbar
22. March 2020 05:30
Hallo,

ich beschäftige mich gerade damit, wie man ein Rumbaboard + Marlin mit 3 Hotends und 2 Servos betreibt. Es gibt dazu einige Beiträge die aber alle widersprüchlich sind. Der Wiki Beitrag ist bekannt und ich habe den USB-Treiber schon aktualisiert, da ich zu Beginn Probleme hatte das Rumbaboard überhaupt mit dem Computer verbinden zu können. Ich habe versucht anhand der schematischen Zeichnung die richtigen Pins zu finden: RUMBA_Wiki_schematic da hier je nach Hersteller unterschiedliche Elektronische Bausteine verwendet wurden. Das verwendete Board (ich hab 3 hier, alle soweit gleich) sind von my-home-fab.

Ich kann aktuell 1 Servo ansteuern über den Mega2560 Pin 5 (Firmware) der auf dem EXP3 Adapter PWM2 Position 6 liegt. Dazu verwende ich den M280 P0 S50 Befehl über Pronterface. Es fehlt also noch die Möglichkeit für Servo2. In der Marlin (1.1.9) sind 2 Servos in der configuration.h mit 300ms delay eingestellt:
#define NUM_SERVOS 2 // Servo index starts with 0 for M280 command

// Delay (in milliseconds) before the next move will start, to give the servo time to reach its target angle.
// 300ms is a good value but you can try less delay.
// If the servo can't reach the requested position, increase it.
#define SERVO_DELAY { 300, 300 }

// Only power servos during movement, otherwise leave off to prevent jitter
//#define DEACTIVATE_SERVOS_AFTER_MOVE


Fridi schreibt hier von Pin 11, den er in Repetier verwendet hat:
Beitrag von Fridi

Ich habe versucht einige Pins auszuprobieren wie den Pin11 (Firmware) und auch die Position 11 auf dem EXP3 Adapter. Mein Problem ist, ich verstehe aktuell zu wenig, welche PINs am Mega überhaupt verwendet werden können? Muss es ein PWM sein? In einem Beitrag habe ich gelesen, dass auch ein Digital-Pin funktioniert

Wie geht man mit Doppelbelegungen in der pins_RUMBA.h um? So findet man folgende Zeile:
#if TEMP_SENSOR_1 == -1
  #define TEMP_1_PIN        5   // Analog Input (connector *K2* on RUMBA thermocouple ADD ON is used)
#else
  #define TEMP_1_PIN       14   // Analog Input (default connector for thermistor *T1* on rumba board is used)

Das heißt dann, der Temperatursensor 2 (wenn man bei 0 anfängt zu zählen) wird mit Pin14 angesteuert, und Pin 5 wird nur verwendet, wenn in der configuration.h TEMP_SENSOR-1 ==-1 ist. Das wäre dann nicht das Problem aber beim PIN11, den Fridi vorgeschlagen hat verstehe ich aber nicht, warum in der pins_RUMBA.h dieser Pin als Pin für den Bed-Temperatursensor und das LCD-Display verwendet wird? In der Schematischen Zeichnung wird angegeben, dass der PIN 11 ein GND ist, also gar nicht geschalten werden kann, oder verstehe ich hier etwas falsch?

#if TEMP_SENSOR_BED == -1
  #define TEMP_BED_PIN      7   // Analog Input (connector *K3* on RUMBA thermocouple ADD ON is used <-- this can't be used when TEMP_SENSOR_2 is defined as thermocouple)
#else
  #define TEMP_BED_PIN     11   // Analog Input (default connector for thermistor *THB* on rumba board is used)
#endif

// LCD / Controller
#define BTN_EN1            11


Ich versuche mich insgesamt mehr in die Elektronik und C einzulesen, verstehe aber noch nicht alle Zusammenhänge, die vorrausgesetzt werden. Leider sind weitere Forenbeiträge nicht immer hilfreich, da sie wie eingangsbeschrieben widersprüchlich sind. Vermutlich ist teilweise auch Wissen beim Erstellen der Boards verloren gegangen bzw. nicht dokumentiert worden.

Wie könnte ein weitere Vorgehen sein, um den zweiten Servo anzusteuern? Dumm rumprobieren scheidet aus, da ich schon gerne lernen würde wie man solche Probleme lösen kann.

viele Grüße
Re: RUMBA + Marlin (1.1.9): 2 Servos benötigt, nur ein Servo ist ansteuerbar
22. March 2020 15:48
Mit den Pinbezeichnungen ist es immer etwas blöd:

Firmware -> PinMapping -> Phys. Pin -> Rumba Schematic
Pin 11 wäre PB5 = Pin 24 = BTN EN2 = EXP2 Pin 3

Herzl. Grüße

[www.arduino.cc]
Anhänge:
Öffnen | Download - Rumba.png (191.7 KB)
Öffnen | Download - megapdf.jpg (533.8 KB)
Re: RUMBA + Marlin (1.1.9): 2 Servos benötigt, nur ein Servo ist ansteuerbar
23. March 2020 10:39
Hallo,

Ok, nun verstehe ich warum das ja auch nicht klappen konnte. Der PIN5 ist in Marlin, Ramps und Rumba der gleiche, daher hat es geklappt. Leider funktioniert PIN 11 nicht für den Servo nicht. Der Geräte-Manager erkennt den COM-Port, ich kann aber anschließend nicht die Firmware hochladen oder mit Printrun verbinden. Ich verwende da heute Abend nochmal einen anderen Computer, das hat bis jetzt immer geholfen, wenn die USB-Verbindung Probleme bereitet.

viele Grüße
Re: RUMBA + Marlin (1.1.9): 2 Servos benötigt, nur ein Servo ist ansteuerbar
24. March 2020 13:02
Hallo,

so ich habe mich da nun eingelesen und mehr zu verstehen. Der Vergleich vom Adrduino Mega, Rumba im Wiki und den pins.h im Marlin haben hier sehr geholfen.

In der pin_RAMPS.h werden für die Servos die PINs 11, 6, 5, 4 angegeben. Ich konnte 4,5 und 11 für die Servos ansteuern, PIN 6 wird als HE2 für den 3. Extruder verwendet. PIN 4 und 5 liegen als PWM PINs auf dem EXP3. Die PIN11 und PIN12 liegen dann auf EXP2, die für das LCD verwendet werden.

Mein Problem mit den 2 Servos ist daher mit PIN 4 und 5 auf dem EXP3 gelöst. Ich überlege nun noch den BLtouch für das ABLmit einzubinden, wenn ich doch mal größer werden will. Da nun alle PWM Pins (11,6,5,4) belegt sind mit den 2 Servos, HE2 und LCD, habe ich versucht zu verstehen welche PINs ich sonst als 3. Servo-Ausgang für den BLtouch verwenden kann.

Wenn ich von den PINs auf dem Arduino Mega ausgehe sind alle belegt für HE0, HE1, HE3, HB, FAN1, FAN2 und die PINs 11 und 12 für LCD und PIN 13 für eine LED.

PIN 10 also PB4 hingegen wird beim RUMBA Board nicht am Prozessor angeschlossen, was mich dann etwas gewundert hat. Gibt es dafür einen Grund?

Was mich auch sehr verrückt gemacht hat, warum werden in Marlin in den pins.h nicht unterschieden zwischen PWM und Analog PINS? Auf dem Arduino Mega wurde wenigstens noch A1 angegeben. Das war teilweise sehr konfus, wenn man dann 2 PIN-Nummern für unterschiedliche Funktionen findet, die aber auf dem MEGA unterschiedlich angesteuert werden. Wie wird das im Programm getrennt bzw. woher weiß Marlin welcher Pin analog und welcher digital ist?

Im Internet findet man recht viele Informationen dazu, dass über die servo.h auch Digitale und Analoge Pins funktionieren. Auf dem EXP3 wurden 2 digitale und 2 analoge Pins nicht verwendet. Wie kann ich diese verwenden? Gibt es hier einen Unterschied zwischen Marlin und den ganzen Bibliotheken für die Arduinos? Ich habe versucht die zwei Digitalen Pins zu verwendn, leider keine Reaktion vom Servo.

Alternativ, wenn das nicht geht, wie kann ich einen PWM Pin vom Fan2 für den 3. Servo verwenden? Der wird ja mit 12V oder der verwendeten Spannungsversorgung verwendet. Der Servo hat nur 5V. Ich verstehe da nicht ganz wie die Anschlüsse sein müssen. Beim Servo sind es Signal, GND und VCC. Signal und VCC sind ja dann normalerweise 5V bzw. der Signal wird als Puls eingestellt. Wenn die Leitung für Signal 12V und VCC 5V hat, dann funktioniert das doch nicht oder?

Viele Grüße
Re: RUMBA + Marlin (1.1.9): 2 Servos benötigt, nur ein Servo ist ansteuerbar
24. March 2020 15:38
Das Setzen des pinmode geschieht in der Marlin_main.cpp (Setup ab Zeile 15218 in 1.9).
Siehe auch pinsDebug.h, pinsDebug_plus_70.h und pinsDebug_list.h

Herzl. Grüße
In diesem Forum dürfen leider nur registrierte Teilnehmer schreiben.

Klicke hier, um Dich einzuloggen