vendredi 27 décembre 2013

CNC Laser suite

Nouvelle page pour la partie électronique, ce sera plus simple.

Je rappel que ceux qui souhaitent avoir les divers programmes soit Gcode pour la mécanique ou programme arduino peuvent me les demander en me laissant un message.


Petit Rappel très important:

N'oubliez pas que le laser est dangereux, ce n'est pas un jouet comme ceux qu'on trouve dans la guerre des étoiles lol.


C'est même marqué dessus alors n'oubliez pas vos lunettes (celles de protection, pas celles de vue) adaptées a la longueur d'onde de votre laser

Bon ça va!!! je suis pas rasé et tout et tout mais ....... je porte les lunettes de protection!!!!!

Le driver et son paramétrage


Comme je vous l'avait dit, j'ai récupéré une carte chinoise qui beugait, elle sautais des pas en Z. Comme je n'utilise pas l' axe Z en automatique cela ne me dérange pas.

Pour les raccordement, il suffit de se fier a la doc fournie par le vendeur.

Le paramétrage des entrées sortie a  déjà été traité, je vais donc vous parler des paramètres de vitesse.
Pour commencer, il faut déjà prendre en compte  le nombre de pas moteur, en général 200 pas. Le rapport d'avance de la vis par tour exemple, une vis standard de 8 avance de 1.25 mm par tour.
Pour certains drivers notamment celui que j'utilise il suffit de multiplier le nombre de pas par l'avance de la vis.

Soit dans mon cas pour une vis hélicoïdale de 8 ayant une évolution de 1.5mm par tour le calcul est:

200 / 1.5 = 133.3333

Le calcul finale est:
200 pas / 1.5 mm/tour x 2 = 266.6666 pas, on vas donc renseigner la case pas par mm et y mettre le résultat de calcul


sur cette photo, on a 320 qui correspond a une tige de 8 standard cette case est a renseigner pour chaque axe et a sauvegarder a chaque fois en cliquant sur " Enregistrer l'axe en cours"

Cette fenêtre étant ouverte, on peut paramétrer la vitesse de manière très simple.
Il suffit de faire monter le curseur a coté du graphique et d'appuyer sur lest flèches hautes et basses du clavier. Le moteur va tourner dans un sens puis dans l'autre faite cette manip jusqu’à ce que le moteur ne tourne plus correctement, cela veut dire que le vitesse demandée est trop rapide pour le moteur. Ne plus toucher au curseur, allez dans la case vitesse et réduisez de 100 la valeur affichée. Quand j'ai testé mes moteur, il grognaient a 900 mm/mn j'ai donc mis 800.

Voila pour les cartes chinoises qu'on trouve sur Ebay.

Les autres cartes type M542 qui je précise sont milles fois plus fiable, j'ai remplacé la carte citée ci dessus par des M542, c'est le jour et la nuit.

La voici en image
dans ce cas, c'est un driver par moteur et une carte de commande

si je peux donner mon avis, c'est cette option qu'il faudrait prendre même si c'est plus cher.

Pour paramétrer cette carte, la formule est différente, on divise la valeur des micros pas programmé sur le driver (micro switch) par le rapport de la vis

Exemple:
Les switch sont sur 16 micro pas soit 3200 pas /révolution de la vis.

La formule est donc

3200/ 1.25 (pour une vis de 8 standard) = 2560

C'est cette valeur qu'il faut mettre dans la case pas ""par mm"" au lieu des 320 vus sur la photo ci dessus.
 


lundi 2 décembre 2013

CNC Laser




Je vous présente ma dernière réalisation en cours. Rien a voir avec Arduino malgré que je souhaitait piloter l'ensemble avec une UNO.

Après avoir fabriqué une fraiseuse CNC, j'ai voulu y adapter un Laser pour réaliser de la découpe plus fine en complément de la broche. A force de chercher, j'ai décider de fabriquer une machine complète.

L'ensemble est réalisé en plexi de 10mm

Avant toute chose, le laser est très dangereux pour les yeux, même un rayon indirect peu faire de gros dégats, il est obligatoire de se protéger avec des lunettes spécifique. Il faut bien choisir ses lunette car elles ne sont pas universelles, il y a plusieurs sortes adaptées a chaque longueur d'onde du laser. Un laser est également dangereux pour la peau, il peut créer des brûlures profondes, en faisant mes tests, je me suis brulé simplement en passant rapidement la main par inadvertance devant le rayon.
2watts c'est peu mais en Laser, ça commence a causer!!!!



Ceux qui souhaitent les  Gcodes ou le programme Arduino peuvent me laisser un message et je leur enverrai le tout.

Dimension de gravure format A4

En images

 Le protique déjà monté découpé a la fraiseuse CNC







 Tout a été réalisé a la fraiseuse y compris les paliers


Ci dessus la plaque servant a supporter les rails et le Laser

Face avant et arrière avec un palier en place

Les coté en cours d'usinage



La partie support est assemblée, il reste la gestion des axes et le laser a installer.

Pour le fraisage des divers éléments, j'ai utilisé:

- Draftsight pour la partie dessins a l'échelle - téléchargement:
http://www.3ds.com/fr/produits-et-services/draftsight/
- CAMBAM pour la génération des Gcodes  - téléchargement: http://www.cambam.info/downloads/
- Mach3 pour la gestion de la graveuse - téléchargement: http://www.mach3fr.com/V2/mach3/



Les moteurs


Nous allons passer a la partie translation.
N'ayant besoin que d'une faible puissance, je suis parti sur la base de deux moteurs pas a pas NEMA 17 (l'axe Y sera quand même assez lourd si motorisation).




Ici nous n'avons besoin de motoriser que deux axes X et Y, le Z se fera en manuel bien que cela ne s'avère pas nécessaire si on utilise un driver laser analogique. J'aborderai ce sujet plus tard dans la mise en œuvre du laser.

Le driver

Le driver avait été acheté pour ma fraiseuse a broche, cette carte a des soucis de fabrication, elle a tendance a perdre des pas en Z. Etant donné que nous n'avons pas besoin de l'axe Z ça tombe très bien !!!






J'alimente celle-ci en 24V malgré que la doc technique du driver donne 12V pour les NEMA 17, ça ne pose aucun soucis puisque les moteurs pas a pas sont commandés en courant. Cette tension plus élevée permet de ne pas perdre de couple a haute vitesse.

Pour ceux qui se posent la question, il n'existe pas de drivers en USB, il est nécessaire de posséder un ancien PC avec un port parallèle. J'ai essayé de faire fonctionner le driver avec un portable, ça ne fonctionne pas car l'alimentation n'est pas assez puissante.

Configuration des moteurs

J'utilise mach3 pour la gestion de ma fraiseuse donc je vais faire pareil pour le laser. Vous pouvez le télecharger en version gratuite  limitée a 500 lignes.

Téléchargement de mach3

Ouvrez mach3

Configuration des ES


 Onglet sortie moteur, configurez les sorties suivant les données de votre driver
Onglets sorties

Configurez les sortie de validation toujours suivant votre driver.





Allez dans l'onglet configuration des moteurs


Cette fenêtre s'ouvre

Là il suffit de donner les valeurs suivantes :
-Nombre de pas par tour
-Vitesse d'avance max
-Accélération

Attention, il faut valider chaque axe indépendamment.

Configuration de mach 3 pour la gravure laser.



Ouvrez mach3
Allez dans l'onglet configuration puis configuration générale


 Dans cette page, il faut cocher axe Z sortie 6 pour la valider

Cliquer OK

Puis onglet général, configuration des E/S


  Onglet gestion de la broche, cocher la fonction laser

Ne pas fermer la fenêtre !!!!!!!!

Maintenant il faut paramétrer la sortie de commande pour le laser, pour ma part ayant une commande TTL, j'ai validé la sortie relai qui est la broche 9

Dans la même fenêtre onglet configuration des sorties, validez la sortie 6 et affectez lui la broche voulue, ici la 9.


Cliquez sur OK et voila, la commande laser est validée. Elle fonctionne de la manière suivante, dès que Z descend sous zéro le laser s'allume dès qu'elle passe au dessus de zéro il s'éteint.


Le principe de câblage


Concernant la carte driver, rien de compliqué, il suffit de câbler selon la doc du fabriquant.


Le principe est simple, J'ai mis les 3 limites X,Y et Z, sur la 4éme entrée j'y ai mis l'arrêt d'urgence manuel et celui géré par le module Arduino. Ceci n'est pas figé, c'est une esquisse qui donne une idée du câblage. Le schéma est assez complet, les MZ (moteurs Z ne sont pas utilisés dans mon cas).

Que fait Arduino??

  1.  Il gère la température du module Peltier
  2. Il gère la température de Laser
  3. Il gère le courant du Laser par le biais soit d'une sortie ANA qui attaquera le driver, soit une sortie directe en PWM a voir car encore en cours d'étude. Passer par Arduino pour le courant de la diode a l'avantage de donner des limites et éventuellement de pouvoir donner des consignes de puissance suivant les matériaux a usiner. Certains diront que la diode peut être pilotée en linéaire par le driver Oui!! mais celui-ci ne surveille pas les limites et comme les drivers sont presque universels soit pour des courants allant de 0A a quelques ampères, on a vite fait de griller la diode avec une fausse manipulation
  4. Il affiche les températures
  5. Il affiche le courant du Laser
  6. Je vais peut être gérer les limites et les afficher afin de savoir laquelle a beugué car avec mach3 on ne sait pas quelle limite a décroché. Il ne fait pas de distinction, pour lui c'est un AU.

Le matériel utilisé pour la partie contrôle avec Arduino.

  1.  1 carte SEEDUINO MEGA (j'ai opté pour celle-ci parce que c'est une MEGA qui a la taille d'une UNO!!!)
  2. 1 afficheur 128x64 (j'ai pris un module avec rétro éclairage RVB
  3. 2 Sondes DS18B20
  4. potentiomètre 10K ohms
  5. 3 Relais 5V a définir une fois terminé
La câblage en vrac pour les essais

  

L' affichage de la consigne de courant dans la diode, du courant consommé , de la température du Laser et de la température du module peltier (coté dissipateur).


 Concernant la consigne, une valeur maximum est a configurer a la programmation cette valeur sera donnée en fonction de la diode.

J'ai généré une alarme température


En mode alarme, l'afficheur clignote en rouge et dans le cas d'une alarme température comme ici (consigne a 30°) un thermomètre s'affiche. A la disparition de l'alarme l'écran redeviens normal mais le thermomètre reste affiché jusqu’à ce que le défaut soit acquitté manuellement. Pour un défaut de courant ce sera un ampèremètre et pour un défaut de translation ???? a voir .

J'oubliais, une alarme génère un arrêt d'urgence afin de pouvoir redémarrer la gravure là ou le programme c'est arrêté.

Encore un peu de mécanique

Avant de passer au laser, il me restait un peu de mécanique a faire, voici quelques images

Réalisation des ecrous d'entraînement avec des prolongateurs de tige filetée et des petit fer plat perforés








Détails sur le refroidissement du laser, entre celui-ci et le dissipateur, on retrouve le module peltier.
Il manque encore un ventilateur au dessus du dissipateur, il est commandé et je ne l'ai pas encore eu, il sera assez puissant pour refroidir le peltier et souffler sur les fumées afin de ne pas abîmer la lentille du Laser.

La fixation est provisoire juste pour faire des essais


Essai en vidéo



Une deuxième vidéo, il me reste un petit réglage a faire dans mach3 car on voit un point a l'endroit ou le laser démarre et s'arrête. Il faut que celui-ci s'allume et s'arrête tout de suite alors qu'il reste allumé une seconde au même endroit.




A suivre ....... !!!

Une petite suite.


Après ces fêtes de Noël, je m'y suis remis, avant tout j'ai trouvé la solution au problème cité ci dessus c'est une mauvaise programmation dans le Gcode, je n'ai pas donné les bonnes infos concernant l'axe Z.

J'ai acheté un vieux PC sur EB pour 28€, que j'ai démonté pour récupérer la carte mère, l'alim et le disque dur.
J'ai réalisé une boite aux dimensions adaptée a la partie mécanique.


J'ai réussi a tout mettre dans un coffret de 480 x 290 x 90, on y trouve même le driver et l'arduino.
 N'ayant pas assez de place en hauteur pour refroidir le processeur,  j'ai fabriqué  un caisson avec une turbine de manière a refouler l'air chaud sur le coté.


L' arrière


Toute les plaque ont encore une fois été découpées avec ma fraiseuse a broche.

Vue d'ensemble


Allumé





J'éspère que vous avez remarqué les lunettes de protections (lunettes vertes), je rappel que c'est super important et obligatoire!!!!

Détails de la face avant



La partie mécanique terminée, je vais pouvoir parler de la technique dans une autre page.

Petite nouveauté!!!

Suite a une demande, j'ai fabriqué la partie mécanique de cette machine en kit. Si cela vous intéresse, n'hésitez pas a me contacter.













samedi 10 août 2013

Regulateur d'humidité et de temperature avec un DHT22


 Il y a quelques temps un ami me parles de problèmes d'humidité dans son sous sol.
En cherchant la cause, je me suis aperçu que l’étanchéité de la maison avait été mal réalisée et aujourd'hui il n'est plus possible de remédier au problème. L'entreprenneur n'est pas mis en cause dans le cadre de la garantie décennale car sois disant un taux d'humidité élevé est toléré. En attendant  tout moisi chez lui!!!!!

J'ai donc cherché une solution pour remédier au problème car il avait déja tenté la ventilation naturelle et ça ne fonctionne pas trop bien.

J'ai donc opté pour une ventilation mécanique pilotée avec un Arduino et un DHT 22 (AM2302).
Ces sont des capteurs  très bons marchés et assez lents, mais cela suffit pour cette application.

Le DHT 22

Ces capteurs sont composés de deux parties, un capteur d'humidité capacitif et une thermistance, on trouve également le circuit de gestion qui  converti les valeurs analogiques en digital dans le boitier.
Nous avons donc un signal de sortie numérique qui permet de déporter la sonde du circuit (dans mon cas il s'agit de 20m)


La librairie du DHT22


Encore une fois je suis agréablement surpris par la facilité de mise en œuvre de la librairie a télécharger ici télécharger la librairie Arduino disponible sur le GitHuh d'AdaFruit .
Tout a part la commande des relais et l'affichage se trouve dans l'exemple de cette librairie

L'afficheur

 J'ai pris un afficheur 1,8" de chez Adafruit (je l'avais en stock).
Vous trouverez tout les renseignements ici   http://www.adafruit.com/products/358

 Le Fonctionnement

 Le principe est simple, dans le sketch je donne une consigne d'humidité maximum, la mesure dépasse celle-ci de 1%, j'enclenche un relai qui lui pilote un extracteur.
J'ai profité de la sonde de température pour gérer un petit convecteur électrique qui est bien utile en hiver.

Le schéma

Pas encore terminé désolé (perso, pas besoin de schéma pour faire un montage!!)


Le schéma avec une carte UNO



La commande des deux relais se fait par l’intermédiaire d'un ULN 2003 (je sais ce que vous allez me dire "il y aurait pu utiliser des transistors!!!" oui!! mais c'est plus simple comme ça lol) 


Si vous achetez le DHT22 nu , il faudra mettre une résistance de 10 KOmhs entre la broche de donnée (Data Out) et l'alimentation . Cette résistance agit comme une résistance Pull-up et ramène la broche Data Out à VCC (il existe une version avec un petit bout de circuit sur lequel tout s'y trouve donc pa besoin de cette résistance).


Le programme

// Hygromètre et thermostat
// By jojo Bricolo
// Librairie adafruit téléchargeable ici https://github.com/adafruit/DHT-sensor-library
// Datasheet DHT 22 http://www.adafruit.com/datasheets/DHT22.pdf



#include "DHT.h"
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <SPI.h>
#include "Wire.h"

#define sclk 10 //SCL
#define mosi 11 // SDA
#define cs   9 // CS
#define dc   12 // RS
#define rst  13  // peut être connecté a la RAZ arduino


Adafruit_ST7735 tft = Adafruit_ST7735(cs, dc, mosi, sclk, rst);
#define DHTPIN 8
// Décocher le type de capteur utilisé
//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// Pin 1 (a gauche) +5V
// Pin 2 data DHTPIN
// Pin 4 Masse
// Mettre une ésistance de 10K entre les Pins 1 et 2

DHT dht(DHTPIN, DHTTYPE);
const int intTimePause = 3000; //Par défaut on actualise les valeures toutes les 5 secondes

//int alam = 9;
int shumi = 4;
int stem = 3;
int humi_cons = 95; // Consigne humidité
int temp_cons = 20; // Consigne temperature

void setup() {
  Serial.begin(9600);
  //Serial.println("DHTxx test!");
  pinMode (shumi,OUTPUT);
   pinMode (stem,OUTPUT);
  Serial.begin(9600);
  tft.initR(INITR_REDTAB);   // initialise le ST7735R
  tft.setRotation(45);
 tft.fillScreen(0x0000);
  dht.begin();
}

void loop() {
 
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  //xxxxxxxxxxx Affichagexxxxxxxxxxx
  tft.setTextSize(2);
   tft.setCursor(10, 10);
  tft.setTextColor(ST7735_MAGENTA);
    tft.print("Temperature ");
  tft.setTextColor(ST7735_WHITE);
   tft.setTextSize(2);
   tft.setCursor(30, 30);
  tft.fillRect (0,30,100,20,0x0000);
    tft.print(t);
  tft.print("C");
   tft.setTextSize(2);
  tft.setTextColor(ST7735_YELLOW);
  tft.setCursor(20,60);
  tft.print("Humidite");
   tft.setCursor(30,80);
   tft.setTextColor(ST7735_CYAN);
  tft.fillRect (0,80,100,20,0x0000);
  tft.print(h);
  tft.print("%");
   tft.setTextSize(1);
  tft.setTextColor(ST7735_GREEN);
  tft.setCursor(30,110);
  tft.print("By Jojo Bricolo");
 
  //xxxxxxxxxxxAffichage  Moniteur serie ou bluetooth xxxxxxxxxxx
 
  Serial.print ("Humidite  ");
  Serial.println (h);
 
   Serial.print ("Temperature  ");
  Serial.println (t);
   Serial.println(" ");

  if (digitalRead(shumi)==HIGH)
  {
    Serial.println ("Ventilateur en marche");
  }
  else
  {
    Serial.println ("Ventilateur arret");
  }
  Serial.println(" ");
 
  if (digitalRead(stem)==HIGH)
  {
    Serial.println ("Chauffage en marche");
  }
  else
  {
    Serial.println ("Chauffage arret");
    Serial.println(" ");
  }
 
  Serial.println(" ");
 Serial.println(" ");
 
  //xxxxxx Commande des relaisxxxxx
 
      // humidité
    if (h >= (humi_cons + 2.00))// Si la mesure h est >ou+ a la consigne +2.00 allumage extracteur
  {
    digitalWrite (shumi,HIGH);   // Si la mesure h est < a la consigne +1.00 arret extracteur
  }
  else
  if (h < (humi_cons + 1))
  {
    digitalWrite (shumi,LOW);
 
  }
 
  //xxxxxx Temperaturexxxx
 
 if (t >= (temp_cons + 2)) // Si la mesure t est >ou = a la consigne +2.00 allumage chauffage
  {
    digitalWrite (stem,LOW);
  }
  else
  if (t < (temp_cons - 1)) // Si la mesure t est < a la consigne -1.00 arret chauffage
  {
    digitalWrite (stem,HIGH);
  }
  delay (intTimePause);
  }






 Comme je l'avais déjà dit, j'ai utilisé l’exemple se trouvant dans la librairie adafruit et rajouté les codes pour la gestion des relais et l'affichage.

Le paramétrage des consignes se fait de la manière suivante:

L'humidité








 

La température











J' ai également prévu l'affichage des valeurs et l'état des relais sur le port série.





Sur le typon que je mettrai plus tard, le port série a été câblé de manière a pouvoir raccorder un module de communication tel que bluetooth, RFID, etc...


Quelques images







Si cela vous intéresse, je suis en mesure de vous faire un kit ou même vous réaliser ce montage !!!
N'hésitez pas a me contacter.