Jump to content
Ultimaker Community of 3D Printing Experts
Stan-D

Servo an J26 Ultimainboard Marlin 1.1.9

Recommended Posts

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
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

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
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

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Our picks

    • Introducing Ultimaker Cura 3.6 | Beta
      Ultimaker Cura 3.6 | Beta is available. It comes with new features, bug fixes, and UX improvements. We would really like to have your feedback on it to make our stable release as good as it can be. As always, you can download the beta for free from our website, for Windows, MacOS, and Linux.
        • Like
      • 92 replies
    • Print Core CC | Red for Ruby
      Q: For some users, abrasive materials may be a new subject matter. Can you explain what it is that makes a material abrasive when you are not sure which print core to use?
      A: Materials which are hard in a solid piece (like metals, ceramics and carbon fibers) will generally also wear down the nozzle. In general one should assume...
        • Like
      • 30 replies
    • "Back To The Future" using Generative Design & Investment Casting
      Designing for light-weight parts is becoming more important, and I’m a firm believer in the need to produce lighter weight, less over-engineered parts for the future. This is for sustainability reasons because we need to be using less raw materials and, in things like transportation, it impacts the energy usage of the product during it’s service life.
        • Like
      • 12 replies
×

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!