Publié le

Imprimante 3D – Améliorations

Comme je l’ai dit dans l’article précédent, j’ai fait quelques améliorations à mon imprimante 3D.

1. Le tapis chauffant :

Pour avoir une meilleure accroche et éviter que les pièces ce décollent, j’ai ajouté un plateau chauffant de type MK2a.

Le seul point est son alimentation, il a besoin d’un peu plus de 11A en 12V pour fonctionner, donc il faut ajouter une alimentation style pc assez puissante pour le faire fonctionner.

kit-de-cama-caliente-mk2a_800x800

Voici je kit que j’ai pris. Il vient se placer sous le plateau en verre et chauffe assez rapidement.

Suite à l’installation du plateau chauffant, il faut aller modifier le firmware de l’imprimante pour pouvoir l’utiliser :

il suffit juste de modifier dans le fichier configuration.h la valeur

#define TEMP_SENSOR_BED 0

En

#define TEMP_SENSOR_BED 1

On charge le firmware et c’est bon.

2. Octoprint (serveur d’impression réseau) :

Ah j’ai ressorti mon RaspberryPi pour l’occasion !

Pourquoi ne pas s’en faire un petit serveur d’impression qui va aussi nous permettre d’éteindre et d’allumer l’imprimante 3D ?

Chose pratique, on peut télécharger une image pour le Rasp avec octoprint préinstallé (pour éviter de devoir tout configurer à la main) c’est OctoPi.

Ca permet de surveiller l’impression (avec une caméra, voir ou on en est …) très pratique et extrêmement simple à utiliser !

Je prépare mon fichier .gcode sous Cura, et je l’upload directement via l’interface Octoprint.

La je suis en train d’implémenter un ajout pour pouvoir allumer/éteindre l’alimentation de l’imprimante 3D directement via Octoprint :

Sur les alimentations ATX, si on connecte le fil vert avec le fil noir, l’alimentation se met en marche. Il y a aussi le fil violet qui est un +5V continu (indépendant de la marche ou l’arrêt par le fil vert de l’alimentation).

Je place donc un relais qui va contacter ma masse avec le fil vert pour alimenter l’imprimante 3D.

Un petit tour en ssh sur le Rasp pour préparer tout ça :

On commence par installer WiringPi :

sudo apt-get install git-core

sudo apt-get update
sudo apt-get upgrade

git clone git://git.drogon.net/wiringPi

cd wiringPi
./build

On fait un petit test en lançant

gpio readall

et on observe quelque chose comme ça :

+-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 |   IN | 1 |  3 || 4  |   |      | 5V      |     |     |
 |   3 |   9 |   SCL.1 |   IN | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 0 | OUT  | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | ALT0 | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |   IN | 0 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI |   IN | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO |   IN | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK |   IN | 0 | 23 || 24 | 1 | IN   | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
 |   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
 |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
 |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
 |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
 |     |     |      0v |      |   | 39 || 40 | 0 | IN   | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+

On voit ici que mon GPIO15 est configuré en OUT (ce qui m’intéresse pour contrôler mon relais !)

un petit coup pour qu’il soit toujours actif en OUT :

sudo nano /etc/rc.local

Et on ajoute juste avant « exit 0 » la ligne :

/usr/local/bin/gpio mode 15 out

Ctrl+X et on valide par Y pour enregistrer la configuration.

Maintenant on va aller ajouter ça à l’interface d’octoprint :

sudo nano ~/.octoprint/config.yaml

iDans la partie « action » on va aller rajouter :

- action: Printer on
command: gpio write 15 1
name: Printer On
- action: Printer off
command: gpio write 15 0
name: Printer Off

Soit :

 actions:
  - action: shutdown
    async: true
    command: sudo shutdown -h now
    confirm: You are about to shutdown the system.
    ignore: true
    name: Shutdown
  - action: reboot
    async: true
    command: sudo shutdown -r now
    confirm: You are about to reboot the system
    ignore: true
    name: Reboot
  - action: restart
    async: true
    command: sudo service octoprint restart
    confirm: You are about to restart OctoPrint
    ignore: true
    name: Restart OctoPrint
  - action: Printer on
    command: gpio write 15 1
    name: Printer On
  - action: Printer off
    command: gpio write 15 0
    name: Printer Off

Et du coup on a ces deux entrées dans le menu :

5697edde807b8_OctoPrint-GoogleChrome.jpg.43028aa36a7cb5ed227261b6a7514b52

Petit rajout : Octoprint possède de nombreux plugins dont « email notifier » qui envoi un mail quand l’impression est finie.

Pour l’utiliser il faut refaire un peu de ssh :

sudo pip install keyrings.alt
sudo pip install yagmail

On lance ensuite python avec :

~/oprint/bin/python

Puis :

>> import yagmail
>> yagmail.register('mygmailusername', 'mygmailpassword')

Ajout du wifi :

Bon j’ai un CPL qui m’a lâché, donc j’ai voulu connecter le Rasp en Wifi.

Une petit manipulation à faire :

sudo nano /etc/network/interfaces

Le fichier se présente de cette façon :

auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet manual

auto wlan0
allow-hotplug wlan0
#iface wlan0 inet manual
#wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf


auto wlan1
allow-hotplug wlan1
# iface wlan1 inet manual
# wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

on va aller rajouter ces deux lignes dans « auto wlan0 » juste après « allow-hotplug wlan0 » :

 wpa-ssid "nom du réseau"
 wpa-psk "Mot de passe"

on ferme, on reboot et voilà on est en wifi !

3. Le capteur inductif :

Bon là on complique un peu (beaucoup en fait).

J’ai pris cette sonde sur eBay et je me suis imprimé son support.

J’ai monté ma sonde et j’ai attaqué les réglages.

La sonde est une sonde 12V donc on doit réduire la sortie de la sonde pour ne pas endommager la carte ramps !

Raccordement sonde

Une fois fait on déconnecte le capteur de fin de course Zmin et on vient y brancher notre sonde.

Il est temps d’étalonner notre capteur !

Je me suis servit d’Octoprint pour commander l’imprimante pendant les manipulations, c’est très pratique !

  1. Première étape, on va aller placer l’extrudeuse au centre du plateau (icône home quand on est dans l’onglet control).
  2. Avec un marqueur on fait une petit croix juste en dessous de la buse d’impression.
  3. On coupe l’alimentation de l’imprimante (alors on coupe juste la partie sur le 12V, le cable USB doit rester branché sur le Rasp).
  4. On descend la tête manuellement (oui oui, en pesant tourner les moteurs à la main) pour ajuster notre zéro (on doit pouvoir passer une feuille sous la buse, même manipulation que quand on règle le niveau en manuel).
  5. Dans octoprint on va dans terminal et on envoie la commande : G92 X0 Y0 Z0
  6. On remet l’alimentation 12V de l’imprimante
  7. On va dans Control et on va aller déplacer la sonde de telle manière à ce qu’elle soit positionnée et centrée sur la croix (ainsi on va connaitre le décalage entre notre sonde et la buse).
  8. En jouant avec les moteur on fait varier la hauteur de l’axe Z pour trouver la position à laquelle le capteur s’enclenche (la led éclaire faiblement / fortement).
  9. Une fois cette étape faite, on lance dans l’onglet terminal la commande M114 (qui va nous donner la position de l’extruder par rapport à la position qu’on a définie comme le zéro à l’étape 5).
  10. Et on relève les valeurs obtenues en résultat (chez moi ça donne X 23 Y 28 Z 4.7) (on les notes sur un papier).
  11. Maintenant on va aller préparer le firmware pour que le niveau devienne automatique :
  • Dans configuration.h :

On commente la ligne (avec // en début de ligne) :

#define ENDSTOPPULLUP_ZMIN

On dé-commente la ligne (on vire les //) :

#define ENABLE_AUTO_BED_LEVELING

On règle ensuite le rectangle de palpage (que je vais surement modifier, mais je ne dis pas pourquoi) :

 // set the rectangle in which to probe
    #define LEFT_PROBE_BED_POSITION 15
    #define RIGHT_PROBE_BED_POSITION 160
    #define BACK_PROBE_BED_POSITION 160
    #define FRONT_PROBE_BED_POSITION 20

Le nombre de alpages, j’en veux 4 donc je met deux (mais je vais tester avec 9, donc 3, normalement à cette étape rien à faire c’est déjà à deux, mais on vérifie) :

   #define AUTO_BED_LEVELING_GRID_POINTS 2

Et ensuite on va aller définir les réglages du capteur :

#define X_PROBE_OFFSET_FROM_EXTRUDER -23
#define Y_PROBE_OFFSET_FROM_EXTRUDER -28
#define Z_PROBE_OFFSET_FROM_EXTRUDER -4.7

Et là vous retrouvez les valeurs du point 10, avec juste un signe négatif devant (le signe négatif EST INDISPENSABLE !).

On modifie encore deux trois valeurs (ça donne de la rapidité au niveau automatique).

 #define Z_RAISE_BEFORE_HOMING 10       // (in mm) Raise Z before homing (G28) for Probe Clearance.
                                        // Be sure you have this distance over your Z_MAX_POS in case

  #define Z_RAISE_BEFORE_PROBING 1    //How much the extruder will be raised before traveling to the first probing point.
  #define Z_RAISE_BETWEEN_PROBINGS 1  //How much the extruder will be raised when traveling from between next probing points
  • Dans configuration_adv.h :

On dé-commente la ligne

#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
  • Dans ultralcd.cpp

On commente la ligne (on vire l’entrée dans le menu du lcd qui lance le niveau du plateau, vu qu’il sera fait automatiquement à chaque impression) :

MENU_ITEM(function, MSG_LEVEL_PLATE, function_config_level_bed);
  • Dans Cura :

On va aller modifier GCODE de départ :

; -- START GCODE --
;Sliced at: {day} {date} {time}
;Basic settings: Layer height: {layer_height} Walls: {wall_thickness} Fill: {fill_density}
;Print time: {print_time}
;Filament used: {filament_amount}m {filament_weight}g
;Filament cost: {filament_cost}
;Uncomment to add your own temperature line
;M109 S{print_temperature}
;Uncomment to add your own bed temperature line
;M190 S{print_bed_temperature}
G21                     ;metric values
G90                     ;absolute positioning
M107                    ;start with the fan off
G28 X0 Y0               ;move X/Y to min endstops
G28 Z0                  ;move Z to min endstops
G1 Z15.0 F1200          ;move the platform down 15mm
G92 E0                  ;zero the extruded length
G1 F200 E20             ;extrude 20mm of feed stock
G92 E0                  ;zero the extruded length again
G1 F{travel_speed}
;Uncomment to put a printing message on LCD screen
;M117 Printing...
; -- end of START GCODE --

On modifie les lignes 14 et 15 :

; -- START GCODE --
;Sliced at: {day} {date} {time}
;Basic settings: Layer height: {layer_height} Walls: {wall_thickness} Fill: {fill_density}
;Print time: {print_time}
;Filament used: {filament_amount}m {filament_weight}g
;Filament cost: {filament_cost}
;Uncomment to add your own temperature line
;M109 S{print_temperature}
;Uncomment to add your own bed temperature line
;M190 S{print_bed_temperature}
G21                     ;metric values
G90                     ;absolute positioning
M107                    ;start with the fan off
G28                     ;move X/Y to min endstops
G29                     ;AUTOLEVEL
G1 Z15.0 F1200          ;move the platform down 15mm
G92 E0                  ;zero the extruded length
G1 F200 E20             ;extrude 20mm of feed stock
G92 E0                  ;zero the extruded length again
G1 F{travel_speed}
;Uncomment to put a printing message on LCD screen
;M117 Printing...
; -- end of START GCODE --

 

 

2 réflexions au sujet de « Imprimante 3D – Améliorations »

  1. […] J’ai donc récupéré le firmware pré-paramétré sur le Github de RepRap.me et je l’ai modifié pour l’auto-levelling et le plateau chauffant (voir cet article). […]

  2. […] reprend ici l’article Imprimante 3D – Améliorations pour expliquer un peu plus comme j’ai monté mon serveur d’impression. Je vais même […]

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *