Archives de juin, 2013

Salut à tous !

Je vous fait partager une de mes créations que j’avais déjà publié sur le forum Arduino : Enhanced Arduino Monitor. Comme son nom l’indique j’ai voulu faire un moniteur série Arduino un peu plus évolué. Il manque encore quelques fonction je pense mais le coeur y est !

Ce soft vous offre la possibilité de suivre vos capteurs par le port série et de tracer des graphs, exporter vos mesures sous excel, faire des reset … Il gère jusqu’à 8 capteurs, offre les mêmes fonctions que le moniteur série inclus avec l’IDE Arduino. Quelques screenshots :

Côté arduino c’est très simple, il suffit de faire un Serial.println() en utilisant un préambule et en séparant vos mesures avec un caractère spécial. Par exemple, pour envoyer deux mesures analogiques :

Code:

void setup() {

Serial.begin(115200);

}

void loop(){

Serial.print("X");
Serial.print(",");
Serial.print(analogRead(1));
Serial.print(",");
Serial.println(analogRead(2));

delay(500);

}

Petite limite : c’est pas un foudre de guerre, donc il peut y avoir des problèmes de débit et au bout d’une certaine quantité de donnée il y a un fort ralentissement (environ 1500 relevés).

Si vous avez des remarques, des souhaits, des bug à signaler … C’est avec plaisir que je les recueillerai smiley

Comme on est au pays de l’open-source, le fichier source est également fourni (projet VB.NET) smiley-wink

Ah et j’oubliais : il faut le .NET framework 4.0 et la police Century Gothic, et ça se passe par la :

L’application

Le fichier projet  VB.NET

Enjoy !

Publicités

Bonjour à tous !

Aujourd’hui un petit billet pour vous parler des interruptions temporelles sous Arduino. C’est un sujet qui revient très souvent sur le forum donc je pense que faire un petit article évitera les multiples répétitions …

Pourquoi faire donc ?

Tout simplement pour exécuter une routine de code à intervalle régulier, sans avoir recours à delay() et donc sans bloquer votre code (enfin il faudra nuancer mais dans l’absolu c’est imperceptible).

Comment qu’on fait ?

Le principe est très simple : on a recours à la fonction millis() (ou micros() si vous avez besoin de plus de précision) qui renvoi un unsigned long correspond au nombre de millisecondes écoulées depuis le début du programme. A un moment donné, on va enregistrer cette valeur, puis régulièrement on va faire la différence entre millis() et cette valeur ce qui nous donnera le temps écoulé. Si le temps écoulé correspond à notre intervalle, alors on exécute le code correspondant, sinon, on exécute autre chose.

Exemple

Prenons un simple blink :



const byte led = 13;


void setup(){

    pinMode(led,OUTPUT);

}


void loop() {


    digitalWrite(led,HIGH);

    delay(1000);

    digitalWrite(led,LOW);

    delay(1000);


}


Donc la vous comprenez bien que pendant les deux delay(1000), votre Atmega s’emme**e et ne peux rien faire. Maintenant, soyons plus astucieux 😉 :



unsigned long Depart;

boolean Flag;

const Led 13;

const MonDelai=1000;


void setup() {


    pinMode(Led,OUTPUT);

    Depart = millis(); // Enregistrement de mon point de départ


}


void loop() {


    if((millis()-Depart)>=MonDelai){     // si 1000 ms se sont écoulées

         Flag=!Flag;    // j'inverse l'état de mon booléen

         digitalWrite(Led,Flag);   //  je change l'état de ma sortie

         Depart=millis();  // nouvelle enregistrement du point de départ

        }

// code qui s'exécutera le temps que 1000 ms se soient écoulées

}


Cette exemple montre bien combien un Atmega peut-être « sous-utilisé ». J’entends par la que bien souvent, on trouve sur le forum des personnes qui trouve leur Arduino lente alors qu’en fait c’est juste leur code qui n’est pas du tout optimisé. Ici la partie conditionnelle va prendre quelques dizaines de µs chaque seconde, ainsi on ne sollicite réellement que moins de 0.01% des ressources de l’Atmega … Cependant il faut aussi avoir conscience que si le reste de votre code est bloquant, la précision de votre intervalle va en pâtir.  L’Arduino est mono-tâche, mais si on optimise bien son code, ça peut tout à fait être transparent pour l’utilisateur 😉

Bonjour à tous !

Ça y est ! Enfin ! Après des mois de construction, d’apprentissage et de prise en main, j’ai enfin pu faire quelque chose à cette engin 🙂

Après avoir reçu mes nouveaux accouplement, j’ai pu monter mes nouveaux moteurs (des NEMA 24 1.5A) : ça chauffe plus et ça dépote !

Du coup nouvelle alim aussi : 24V 5A 12€ sur ebay … Et elle est bien monté dedans, c’est propre.

Pour les remarques suivante je rappelle que je n’ai pas l’habitude des moteurs pas à pas, et par conséquent certaines remarques peuvent paraître évidentes pour les initiés mais comme je suis pas le seul à être ignorant 😉

Je suis passé au 1/8 de pas (dipswitch M1 et M2 « ON »), les moteurs sont beaucoup plus silencieux et je vais encore plus vite : 400 mm/min ce qui est plus qu’honorable ! Je pense également revoir tout l’aspect interface PC – Driver de moteurs : en effet je pense en fait faire un simple connecteur qui viendra sur le LPT avec un Atmega328 programmé GRBL, et une seconde carte, branché elle comme l’actuelle sur le port télécommande. Je pourrait ainsi sans avoir à rentrer dans les méandres de GRBL et risquer de tout perturber ajouter mes fonctions (télécommande, buzzer, SD, LCD …). Autre piste que j’explore : tout simplement un autre firmware, mais qui ne sera pas sur Atmega328 (Teensy 3.0 ou Sanguino probablement). Mais ne vous inquiéter pas je continuerai mes articles pour expliquer plus précisément chaque partie de ma CNC avec une partie détaillée sur la partie électronique 😉

Pour commencer pas par pas, j’ai bien entendu commencé par quelque chose de simple : gravure d’un éclair sur une petite boîte en bois qui me sert de fourre-tout électronique.

Tout d’abord, on dessine la pièce sous Libre CAD (la vidéo que j’ai publié lors d’un précédent article m’a été très utile) :

librecad

Puis on l’importe dans heeksCAD :

heekscad

J’ai simplement demandé au soft de me faire une poche comme on dit, c’est à dire vider la zone que j’ai dessiné. Pour se faire la fraise parcours des parcours concentrique d’un pas inférieur au diamètre de la fraise (logique !).

Volontairement je ne rentre pas trop dans les détails, n’étant pas du tout encore un expert dans la manipulation de ces logiciels, je ne pourrai pas en dire plus que ce qui est dit dans la vidéo qui est au final assez complète pour prendre en main toute cette toolchain.

On génère le GCODE et on balance tout dans GRBL Controller :

grblcontrol

Résultat :

_DSC9043

_DSC9041

Alors comme j’ai pas encore la notion des différentes vitesses à adapter, j’y suis allé molo, trop d’ailleurs parce que ça fait du bruit dans le salon xD et au bout de 30 min ça devient très lourd … Surtout que ce bois était très léger donc j’aurais pu aller bien plus vite.  Je ferai mieux la prochaine fois !

Alors avant j’ai testé F-engrave, destiné à générer très simplement un G-Code pour graver un texte. Il est bof … Certaines commandes ont fait buguer GRBL, peu de police … Bref Libre CAD + HeekCAD me parait au final être une solution bien plus rigoureuse et pas forcement plus complexe.

J’ai également noté que mon plateau n’est pas parallèle au déplacement du chariot, du coup si on regarde bien ma gravure, elle est plus profonde à gauche qu’à droite. Quelques rondelles suffiront. Vous avez également surement noter dans la vidéo mon nouveau super système de fixation. Rudimentaire mais efficace et très peu coûteux 🙂

Au passage je vous donne mes paramètres sous GRBL :

$0=1280.000 (x, step/mm)
$1=1280.000 (y, step/mm)
$2=1280.000 (z, step/mm)
$3=50 (step pulse, usec)
$4=200.000 (default feed, mm/min)
$5=200.000 (default seek, mm/min)
$6=60 (step port invert mask, int:00111100)
$7=25 (step idle delay, msec)
$8=20.000 (acceleration, mm/sec^2)
$9=0.050 (junction deviation, mm)
$10=0.100 (arc, mm/segment)
$11=25 (n-arc correction, int)
$12=3 (n-decimals, int)
$13=0 (report inches, bool)
$14=1 (auto start, bool)
$15=1 (invert step enable, bool)
$16=0 (hard limits, bool)
$17=0 (homing cycle, bool)
$18=0 (homing dir invert mask, int:00000000)
$19=200.000 (homing feed, mm/min)
$20=200.000 (homing seek, mm/min)
$21=100 (homing debounce, msec)
$22=1.000 (homing pull-off, mm)

A bientôt !

Bonjour à tous !

Désolé j’ai pas été très actifs ces derniers temps, j’étais débordé, autant sur le plan pro que perso xD

Bref pour commencer : les hostilités CNC ont reprises suite à la réception de mes nouveaux accouplements qui m’ont permis de monter des plus gros moteurs. J’ai tout remonter, ajouter un système d’étau et mis une plus grosse alim. J’ai fait quelques essais, rien de bien jolie mais la première pièce ne va pas tarder 😉

Ensuite je voulais vous relayer ce projet en cours de financement sur Kickstarter : la Buccaneer.

ecc5b76790cc382fdc47177784884412_large

Alors quoi qu’est-ce qu’elle a de spécial ?

Et bien pour moi c’est celle qui a fait le pas le plus important depuis l’avènement de ces types de machine, à savoir celui de rentrer dans les foyers pas forcement « geekesque ». Je m’explique :

– Tout d’abord elle n’est pas chère : 397$ (mais y’a 100$ de frais de port (porc?) pour la France). Même si les frais d’acheminement font grimper le prix, en reste bien en-dessous des 1200€ réclamé pour une MakerBot … Ou n’importe qu’elle autre d’ailleurs.

– Elle est belle : enfin une imprimante qu’on a envie de poser à côté de sa jet d’encre. Mine de rien, ça compte pour le grand public, l’apparence « classique » des imprimantes 3D fait fuir le non-éduqué car elle donne une image de complexité, et donc un sentiment de « Oohhooolllaaaaa !!! C’est pas pour moi ces machin la ! ».

– Une partie software grand public et du cloud : dans la vidéo Kickstarter on peut voir une démo du soft de création de pièce 3D, et à première vu difficile de faire à la fois plus simple et plus performant ! Même mon père pourrait bien y arriver ! C’est dire ! xD Et cerise sur le gâteau, il intègre un cloud : « alors j’ai besoin d’un bol » ==> et hop une centaine de bol que d’autres utilisateurs ont déjà dessiné se présente à vous 🙂 Mais y’a encore un truc : il y aura des versions mobiles iOS, android etc … !!

ec5f4d795325b1d2c0f2652a0cc79bbd_large

– Sinon elle a des caractéristiques tout à fait honorables (résolution annoncée de 100 microns) et disposera du wifi !

Perso je pense que ce projet sera un très grand succès (s’en ai déjà un gros sur KickStarter : financé à 600% et il reste 25 jours …). Seul hic : il va falloir être très patient. Si vous n’avait pas commandé au premier batch (qui était à 297$ ! Disponibilité en décembre) il faudra attendre février 2014, si tout va bien …