Shapeoko 3, déconnexions USB et carte de contrôle

Je me bats avec ma Shapeoko 3 depuis à peu près le début, car il y a des déconnexions USB très fréquentes quand on attaque assez fort dans la matière. Par contre ce n’est pas le cas si on n’attaque pas trop fort dans la matière.

Un tour dans les forums et des discussion avec Jorge Sanchez (de chez Carbide 3D) m’ont laissé entendre que ces déconnexions étaient très probablement causées par des interférences électromagnétiques entre les moteurs (pas à pas, ou peut-être la broche) et le câble USB.

J’ai suivi les instructions de Jorge: raccordement de masses, utilisation d’un isolateur galvanique USB, mise à la terre. J’ai cru que c’était réglé, et puis c’est revenu… Ça m’a vraiment saoulé, et j’ai décidé de fabriquer ma propre carte de contrôle pour la machine.

Je suis parti sur des drivers pas à pas Pololu DRV8825, commandés par une Arduino Uno sous Grbl. Rien de très compliqué a priori, puisque j’ai déjà fait quelque chose de comparable avec mon CoreXY, sur 2 axes seulement.

Alors je me suis lancé, et j’ai fabriqué un circuit imprimé avec la Shapeoko elle-même (comme je disais, quand on grave et que ça ne force pas, ça marche!).

Côté design, j’ai utilisé Fritzing et Visolate.

Pour l’envoi sur la machine, j’ai découvert bCNC et croyez-moi c’est VRAIMENT le top. Je ferai certainement un article dessus pour la prise en main. Pour la faire courte, c’est un logiciel qui envoie le G-Code à la machine, mais qui permet de compenser l’axe Z selon les mesures faites au préalable avec un palpeur. C’est trop bien, particulièrement quand on grave un circuit imprimé et qu’on veut avoir une profondeur identique partout!

Bref, voici la fabrication de la carte en images.

Gravure PCB
Gravure des traces. Si si, ça tourne! C’est l’appareil photo qui est trop rapide 🙂

 

perçage pcb
Le perçage avec une mèche de 1mm.

 

bCNC
bCNC en pleine action! On peut voir le quadrillage effectué par le palpeur, avec les différences de hauteur.

 

Le circuit terminé
Le circuit terminé. C’est autre chose que ce que j’avais fait dans le passé!

 

Test pcb
Test avec 3 moteurs Nema17, concluant 🙂

 

J’ai branché les moteurs de la Shapeoko (Nema23) sur la carte, et.. Rien. Enfin si: des réactions, mais des réactions étranges.

En fait j’ai réalisé que les fils n’étaient pas agencés pareil au niveau des connecteurs!

Cablage moteurs pas à pas 4 fils
Codes couleurs des moteurs bipolaires à 4 fils. (honteusement piqué sur http://www.linengineering.com)

 

Avec les fils dans le bon ordre, le fonctionnement est bien meilleur, n’est-ce pas 🙂

Tout content, je lance un job avec des passes de 2.5mm dans du pin. J’y crois, j’y crois, j’y crois. Jusqu’à ce que ça se plante. La même. Exactement la même qu’avec le contrôleur d’origine de la Shapeoko. Autant dire que ma tête a pris successivement toutes les couleurs de l’image ci-dessus.

J’ai tout fait, j’ai essayé sur un PC de bureau (relié à la terre) plutôt qu’un portable, j’ai essayé à tout hasard un autre firmware, rien à faire. C’est relou hein…

Alors hier soir j’ai retenté le contrôleur d’origine, en diminuant la profondeur des passes (1.25mm) et ça va. Pour le moment en tout cas…

Mais c’est frustrant, quand on a une grosse machine, puissante, de devoir se coltiner des passes aussi fines, franchement…

[Edit du soir même] Hééééé ben non. Finalement ce soir elle ne voulait plus. Je commence à en avoir plein mon ass, mais alors vraiment…

[Edit du lendemain] Carbide 3D va m’envoyer une nouvelle carte (une nouvelle mouture, pas juste un remplacement de celle-ci). Même si je râle, j’apprécie énormément leur support, ils ne laissent pas leurs clients dans le mouise. C’est très important.

Si vous avez le même problème que moi, faites-moi signe, que vous l’ayez résolu ou non, ça m’intéresse!

Présentation du microcontrôleur Teensy

Mon Arduino Uno étant dorénavant dédiée à la graveuse laser CoreXY, j’ai cherché un autre microcontrôleur pour bricoler. Notamment pour piloter Ableton Live en MIDI.

Arduino Leonardo m’intéressait pas mal, car elle a la capacité de se faire passer pour un clavier, une souris, ou un périphérique HID quelconque.

Pendant mes recherches, je suis aussi tombé sur la Teensy 3.1. Certes, cette carte n’est pas open hardware, MAIS :

  • Prix similaire à la Leonardo (20$)
  • 256Ko de mémoire flash (32Ko sur la Leonardo)
  • 64Ko de RAM (2.5Ko sur la Leonardo)
  • 72MHz (16MHz sur Leonardo)
  • Des entrées capacitives (« touch »)
  • Une sortie analogique (pas PWM, j’ai bien dit analogique)
  • Une taille ridicule (CMB)
  • Support natif du MIDI par le port USB, sans avoir à installer de driver!
  • Et j’en passe.

Voici une cartographie de la bête:

https://www.pjrc.com/teensy/teensy31.html
Vue de dessus
Source : https://www.pjrc.com/teensy/teensy31.html
https://www.pjrc.com/teensy/teensy31.html
Vue de dessous

Pour la programmer, ça se passe avec une Arduino. On utilise un câble micro USB-B, et le même IDE. Il faut juste installer l’add-on Teensyduino pour pouvoir gérer cette carte.

Donc, avec tous ces avantages, j’ai craqué direct.

Comme je disais plus haut, cette carte a la possibilité d’envoyer des commandes MIDI par l’USB très simplement. Par exemple:

[code]

usbMIDI.sendNoteOn(note, velocity, channel)
usbMIDI.sendNoteOff(note, velocity, channel)
usbMIDI.sendControlChange(control, value, channel)

[/code]

Pour la liste complète des capacités MIDI de la Teensy, la doc est ici.

Pour une liste des numéros de notes MIDI, c’est par .

Bref, elle a tout ce dont j’ai besoin pour fabriquer un petit pédalier MIDI, qui me servira à sampler des boucles de basse en live!