Jump to content
Stan-D

Servo an J26 Ultimainboard Marlin 1.1.9

Recommended Posts

Posted · Servo an J26 Ultimainboard Marlin 1.1.9

Hallo an alle,

ich bin aktuell mit Marlin 1.1.9 am experimentieren und würde gerne einen Servo über den Anschluss J26 ansteuern, der eine "Switching Nozzle" betätigt.

Komme aber mit der Konfiguration nicht weiter. Hat hier jemand mit der Servoansteuerung und Pinbelegung Erfahrung?

Mit der Programmiersprache bin ich nicht so sehr vertraut, versuche mir jetzt etwas anzueignen...

 

Folgender Fehlermeldung bekomme ich in der ArduinoIDE:

Arduino: 1.8.7 (Mac OS X), Board: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

sketch/Marlin_main.cpp: In function 'void move_nozzle_servo(uint8_t)':
Marlin_main.cpp:12132:53: error: 'MOVE_SERVO' was not declared in this scope
     MOVE_SERVO(SWITCHING_NOZZLE_SERVO_NR, angles[90]);
                                                     ^
exit status 1
'MOVE_SERVO' was not declared in this scope

 

In Configuration.h

// A dual-nozzle that uses a servomotor to raise/lower one of the nozzles
#define SWITCHING_NOZZLE
#if ENABLED(SWITCHING_NOZZLE)
  #define SWITCHING_NOZZLE_SERVO_NR 0
  #define SWITCHING_NOZZLE_SERVO_ANGLES { 0, 90 }   // Angles for E0, E1
  #define HOTEND_OFFSET_Z { 0.0, 0.0 }
#endif

 

#define NUM_SERVOS 1 // 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 }

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

 

---------------------------

pins_ULTIMAIN_2.h

 

#define SERVO0_PWM_PIN    13

Share this post


Link to post
Share on other sites
Posted · Servo an J26 Ultimainboard Marlin 1.1.9
15 hours ago, Stan-D said:

'MOVE_SERVO' was not declared in this scope

 

Die Fehlermeldung ist ja ziemlich eindeutig. Irgendwo in der Funktion "void move_nozzle_servo(uint8_t)" wird etwas mit dem Namen "MOVE_SERVO" verwendet, das wurde aber nicht gefunden.

 

Du musst nur herausfinden, was "MOVE_SERVO" ist (vermutlich ein weiteres Makro), und wo das deklariert bzw. definiert ist....

 

Die aktuelle Marlin-Firmware ist zu großen Teilen aus Makros zusammengesetzt, das ist keine leichte Kost für den Anfang...

 

Ich hab keine Ahnung, was man für den Servo noch so alles braucht.

Soweit ich das auf die Schnelle sehen kann, wird "MOVE_SERVO" nur definiert, wenn das Makro "HAS_SERVO" "true" ergibt. Und letzteres prüft u.a., ob mindestens ein Servo-Pin definiert ist.

Dabei wird allerdings "SERVO0_PIN" geprüft, nicht "SERVO0_PWM_PIN".

Also vielleicht solltest Du "SERVO0_PIN" (auch) noch definieren, zu "SERVO0_PWM_PIN" hab ich überhaupt nichts gefunden, wird das überhaupt irgendwo benutzt?

 

Share this post


Link to post
Share on other sites
Posted · Servo an J26 Ultimainboard Marlin 1.1.9

Danke für die Antwort!

Hatte heute Morgen das Problem bereits gefunden. SERVO0_PIN 13 ist richtig, zumindest läuft die Arduino IDE dann durch.

Ob die Ansteuerung damit geht, habe ich noch nicht ausprobiert...

Wie bereits erwähnt, habe ich gerade mal ca. 15 Stunden Berührungszeit mit der Programmierung. Überwiegende Zeit war mit den fehlenden Librarys in der IDE verschwendet.

Wenn ich es richtig verstanden habe, dann sind nur die Winkel über Werkzeug- bzw. Extruderwechsel definiert. PWM-Range entsprechend der Servorichtung bereits als Beispiel vorgelegt. Und schließlich die Ansteuerungszeit in ms für die Dauer der Bewegung.

Marlin 1.1.9 habe ich auf den Drucker geladen. Originale Menüführung ist gegenüber deinen Versionen ein reinster Krampf!

Momentan läuft der kleine Lüfter aber nicht mehr beim Aufheizen über 50°C .

Share this post


Link to post
Share on other sites
Posted · Servo an J26 Ultimainboard Marlin 1.1.9
3 hours ago, Stan-D said:

Momentan läuft der kleine Lüfter aber nicht mehr beim Aufheizen über 50°C

 

Das hier ist der relevante Teil in der Ultimaker-Firmware, der Kommentar erklärt, warum es so umständlich ist:

https://github.com/Ultimaker/UM2.1-Firmware/blob/UM2.1_JarJar/Marlin/temperature.cpp#L552

 

Wenn Du die Ansteuerung vom Servo hinbekommen hast, kannst Du ja mal berichten, wie es funktioniert. Man kann nie wissen, wo man das mal braucht... ?

 

Share this post


Link to post
Share on other sites
Posted · Servo an J26 Ultimainboard Marlin 1.1.9

Hab da endlich eine Anleitung für die Einstellung der Firmware gefunden:

https://www.thingiverse.com/thing:2777682

Mal schauen ob die Platine des UM das mitmacht, bzw. die Pinbelegung bei Github richtig hinterlegt sind.

 

Ich hab mir diese Variante des Druckkopfes anfertigen lassen, nur mit einem Alu-Nocken

http://www.khwelling.nl/3d.um2_corexy.php

Umschaltung soll mit dem Servo erfolgen, um möglichst keine unnütze Belastung auf die Riemen zu geben. Und anschließend mit dem Z-Offset beider Düsen die Längendifferenz der einzelnen Düsen aus der Produktion ausgleichen zu können.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Our picks

    • Ultimaker Cura 4.0 | Stable available!
      Ultimaker Cura 4.0 is mainly focused on the improved user interface and cloud integration.
      As always, we want to collect your user feedback for this release. If there are any improvements you can think of, feel free to mention it here and help us to shape the next release.
      • 96 replies
×
×
  • Create New...

Important Information

Welcome to the Ultimaker Community of 3D printing experts. Visit the following links to read more about our Terms of Use or our Privacy Policy. Thank you!