Aller au contenu

GO Print

[TUTO] ServoMoteur & Marlin


hidius

Messages recommandés

Coucou. le but de ce tuto est de pourvoir interagir avec des servomoteurs via les scripts de démarrage ou autres.

Il s'agit ici de Marlin 1.1.8 sur une GT2560 Rev A+ mais ça reste facilement ajustable.

 

## Déclaration des Servomoteurss ##

De base, Servo0 est "réservé" pour le BLTouch. Il est possible de l'utiliser pour autre chose mais comme c'est une fonctionnalité très utilisée, nous n'y toucherons pas ici. Il va donc falloir déclarer au moins 2 Servo pour utiliser le second comme on le souhaite.

Dans Configuration.h

//On definie ici le nombre de servo. On oubli pas qu'on reserve le premier au bltouch
//Le 1er sera SERVO0, le 2eme SERVO1, le 3eme SERVO2, etc
#define NUM_SERVOS 2

//SERVO_DELAY est un tableau, il faut specifier autant de valeurs que de servo
#define SERVO_DELAY { 300, 300 }

// Avec cette option, les servos sont alimentés uniquement pendant le mouvement, puis éteints pour éviter les instabilités.
#define DEACTIVATE_SERVOS_AFTER_MOVE

 

## Déclaration des Pins ##

Ici je le branche en lieu et place de Y-Max, Il s'agit d'un SG90 alimenté en 5V, j'utilise le connecteur du bltouch pour récupérer l'alimentation.

Servos7.thumb.jpg.e2b3b36f7796261013d66459c89215e0.jpg

Pour trouver le fichier à modifier, dans configuration.h trouver "#define MOTHERBOARD":

  #define MOTHERBOARD BOARD_GT2560_REV_A_PLUS

Une petite particularité ici puisque le fichier pins_GT2560_REV_A_PLUS.h ne contient que le delta avec pins_GT2560_REV_A.h que nous devons modifier

Dans pins_GT2560_REV_A.h

//On commente la definition de Y_MAX_PIN et on definie SERVO1_PIN en lieu et place
//#define Y_MAX_PIN          28
#define SERVO1_PIN        28

 

 

Après Téléversement, nous pouvons utiliser le servo via le Gcode M280

M280 P1 S77       // P1 (SERVO1) / S77 (77°)

 

 

:banana:

  • J'aime 2
  • Merci ! 1
Lien vers le commentaire
Partager sur d’autres sites

Ce type ( @hidius ) est génial.....

Citation

j'avais monté sur ma Gitèque une tête de brosse à dents pour nettoyer la buse avant print via le code G12 (Nozzle Clean) Voir ici >>>>>

Sur ma nouvelle brêle, la tête ne va pas plus loin que le bord du plateau, donc impossible d'utiliser mon ancien système, il interfère avec l'Auto Bed Levelling

Hier je lui glisse une petite idée que j'ai eue :

Monter la brosse sur un bras qui pourrait l'amener en position de brossage avec un coup de servo et la garer une fois fini

L'idée est de moi mais comme je suis une bite en électronique(ta mère) je n'ai aucune idée de comment le faire et je lui pose la question...

Et ce matin, ce joli petit tuto, tout frais pondu.

Allez chiche ? Le premier qui a mis quelque-chose au point réveille les autres, OK ?

Non mais sans dec, ce foirium c'est pas un peu d'la balle @Motard Geek ?????

Modifié (le) par Jean-Claude Garnier
  • J'aime 2
Lien vers le commentaire
Partager sur d’autres sites

Beau travail pour la configuration de Marlin (le chanteur 😉 ) afin de piloter un cerveau servo...  👍

La retraite me permettant de flâner à droite, à gauche, de ci de là, j'avais vu ceci . Est-ce quelque chose de semblable à quoi pensait @Jean-Claude Garnier ?

Bon ride à tous ✌️

Lien vers le commentaire
Partager sur d’autres sites

Shit, zut et crotte de bique....

C'est pile poil à ça que je pensais, avec une brosse douce en bronze.

Moi qui croivais avoir eu une idée inédite, me oualà bien marri....

@hidius je profite de cette intervention de @fran6p pour te poser deux questions :

- Esque le servo s'initialise à un certain angle à la mise sous tension, ou reste t'il là où il s'est arrêté ?

- J'ai mis un step-down 5 volts dans ma box (pour le raspi) Je peux me piquer dessus ou faut-il absolument prendre le 5V de la prise Bl-touch ?

Si c'était possible, ça ouvrirait cette possibilité à ceux qui n'ont pas la même carte, et là je pense particulièrement à @Bosco2509

  • J'aime 2
Lien vers le commentaire
Partager sur d’autres sites

Le concepteur du modèle que je donne en lien plus haut, pilote son servo via un Arduino Nano car sa carte une Duet ne gère pas bien les servos nativement. Par contre il ne donne pas plus d'explications comment il lie le tout (en cuisine la liaison est la base de toute bonne sauce qui se respecte (et pas qu'en cuisine d'ailleurs 😉).

L'avantage des fichiers qu'il propose, c'est qu'il livre aussi ses fichiers sources (en .f3d) pour ceux qui voudraient les accommoder à leur sauce (ça commence à me donner faim de parler de sauce 😄 ).

Lien vers le commentaire
Partager sur d’autres sites

Jolie l'idée !
Bientôt des toilettes qui vous essuyeront le postérieur (et je reste poli en plus) après avoir coulé votre bronze.
Comme cela plus de risques de s'en mettre sur les mains ! 😄

  • J'aime 1
Lien vers le commentaire
Partager sur d’autres sites

Et les toilettes japonaises (à jet d'eau), c'est pas mal non plus, en plus pas besoin de servo (cerveau 😄 ).

Lien vers le commentaire
Partager sur d’autres sites

Le 27/07/2018 at 18:17, Jean-Claude Garnier a dit :

- Esque le servo s'initialise à un certain angle à la mise sous tension, ou reste t'il là où il s'est arrêté ?

Je n'ai pas fait attention quand j'ai fais les tests de ce tuto et je ne me souviens plus au moment ou j'avais pas mal joué avec. J'en utilise tjrs un pour l'autolevel mais c'est un cas particulier.

Conclusion, faut tester 😐

Citation

- J'ai mis un step-down 5 volts dans ma box (pour le raspi) Je peux me piquer dessus ou faut-il absolument prendre le 5V de la prise Bl-touch ?

Pas de soucis avec le Step Down

Modifié (le) par hidius
Lien vers le commentaire
Partager sur d’autres sites

  • 2 months later...

Bonsoir à tous, @hidius

Rentré de mon exil estival, je retrouve le plaisir de bricoler ma machine, avec d'autres idées derrière la tête.

Et je viens  (enfin) de mettre en pratique ce tuto que tu m'as dédié.

Et tu sais quoi ???? ÇA MARCHE !!!!!

Merci encore, je sens que je vais bien m'amuser.....

  • Merci ! 1
Lien vers le commentaire
Partager sur d’autres sites

Le 27/07/2018 at 18:17, Jean-Claude Garnier a dit :

Esque le servo s'initialise à un certain angle à la mise sous tension, ou reste t'il là où il s'est arrêté ?

As-tu essayé ? Ce type de servo sont contrôlés par un signal pwm de 20ms. Le temps à l'état haut donne la position consigne. Je pense que si la consigne est appliquée avant d'appliquer la puissance, le servo ne devrait pas bouger. Merlin doit sans doute s'en charger.

Édite :

Je viens de regarder dans le code, Marlin ne coupe pas la puissance du servo mais arrête d'envoyer le PWM :

void Servo::move(const int value) {
  constexpr uint16_t servo_delay[] = SERVO_DELAY;
  static_assert(COUNT(servo_delay) == NUM_SERVOS, "SERVO_DELAY must be an array NUM_SERVOS long.");
  if (this->attach(0) >= 0) {
    this->write(value);
    safe_delay(servo_delay[this->servoIndex]);
    #if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
      this->detach();
    #endif
  }
}
Modifié (le) par zPixel
Lien vers le commentaire
Partager sur d’autres sites

  • 2 years later...

Bonjour, 

Je déterre ce sujet car j'aimerai mettre un servo avec une brosse sur ma Dagoma Easy 200. Marlin 1.1.8 sans BLtouch. 

J'ai un probleme dans Marlin: 

Quand je décommente DEACTIVATE_SERVOS_AFTER_MOVE

// Avec cette option, les servos sont alimentés uniquement pendant le mouvement, puis éteints pour éviter les instabilités.
#define DEACTIVATE_SERVOS_AFTER_MOVE

La compilation me donne une erreur: (traduit avec google)

"Z_ENDSTOP_SERVO_NR, le changement de buse ou le changement d'extrudeuse est requis pour DEACTIVATE_SERVOS_AFTER_MOVE"

Si je décommente  #define Z_ENDSTOP_SERVO_NR 0   dans Configuration .h  -> autre erreur: 

"Veuillez n'activer qu'une seule option de sonde: PROBE_MANUALLY, FIX_MOUNTED_PROBE, BLTOUCH, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED ou Z Servo"

Si je commente "#define FIX_MOUNTED_PROBE" (Mon Palpeur inductif e va plus fonctionné?  )  J'ai une autre erreur que je ne comprend pas "expected unqualified-id before '.' token".

Je pense que le fait de ne pas avoir de BL touch pose problême mais je vois pas comment faire. Je tourne en rond dessus;

 

Si un bonne âme passe par ici??   Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...