logo_tempRécemment, une mauvaise expérience m’est arrivée, et a coûté la vie à l’un de mes drivers de moteur pas-à-pas (celui de mon WallWriter). Mettant tout en œuvre pour sécuriser l’environnement des machines (machine CNC, imprimantes 3D et autre outillages du lab), je me suis dit qu’il faudrait aussi sécuriser les machines elles-mêmes !

Dans mon cas, c’est le driver (EasyDriver) qui ne semblait pas chauffer lors des essais, ou pas beaucoup. Or une fois qu’il a piloté le moteur pendant quelques heures d’affilée (lors de l’OpenBidouilleCamp 2013), il a fini par rendre l’âme. Il faut dire que l’avoir placé dans une toute petite boîte à peine percée de quelques trous n’a pas dû aider. Et une fois enfermé, on l’oublie, seul dans son petit four;-(

Les drivers de moteur encaissent de fortes intensités, et sur de longues durées, et donc ils chauffent ! J’aurais pu installer de gros dissipateurs, ou un ventilateur permanent, mais l’aspect bidouille de la démarche est trop peu intéressante !

Alors on y va pour fabriquer un système de monitoring de température d’éléments de CNC (ou autre).

Pour ce faire la liste du matériel :

  • Un microcontrôleur (Arduino & consors)
  • Un capteur de température (genre LM35)
  • Un ventilateur
  • (en option : LEDs, afficheur LCD …)

Avec ceci, on assemble le tout de façon tout à fait simple :

Montage d'un LM35

Montage d’un LM35

Ajoutez un ventilateur (5v) entre la Masse et le pin Digital 8. Pour des ventilateurs un peu gourmands, on branchera le tout au travers d’un transistor de puissance, histoire d’éviter de mettre l’Arduino à genou !

Pour les LEDs, une résistance de 220Ohm (par LED) branchée sur les pins 6 (rouge) et 7 (verte), elles-mêmes reliées au ‘plus’ de chaque led, et retour à la Masse (pas très compliqué).

Je passe le branchement du LCD qui reste décrit partout.

Un peu de code Arduino :

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int inPin = 0;
const int ledNormal = 7 ;
const int ledOver = 6 ;
const int ventilo = 8 ;
const int maxTemp = 40;

void setup()
  {
    lcd.begin(16, 2);
    pinMode(ledNormal, OUT) ;
    pinMode(ledOver, OUT) ;
    pinMode(ventilo, OUT) ;
  }

void loop()
  {
    // Lecture de la température
    int value = analogRead(inPin);

    float millivolts = (value / 1024.0) * 5000;
    float celsius = millivolts / 10;
    int alerte = 0 ;
    // Si led : 
    if ( celsius >= maxTemp){
	//Cas de surchauffe :
	alerte=1 ;
	digitalWrite(ledNormal,0) ;
	// Allumer la led Rouge : 
      digitalWrite(ledOver,1) ;
      // Mettre en route le ventilo : 
	digitalWrite(ventilo,1) ;
    } else {
	alerte=0 ;
	// Rallumer la led verte : 
	digitalWrite(ledNormal,1) ;
	// Eteindfre la led Rouge : 
      digitalWrite(ledOver,0) ;
      // Etteindre le ventilo : 
	digitalWrite(ventilo,0) ;
    }

    // Si afficheur : 
    lcd.setCursor(0, 1);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(celsius);
    lcd.print(" Celsius");

    lcd.setCursor(0,1);
    if (alerte=0){
       lcd.print(" Normal ");
    }else{
      lcd.print(" !! OVER !! ");
    }

    // Fin affichage 

    // On attend 1 seconde :
    delay(1000);
  }

On arrive à un système relativement versatile, capable de monitorer 6 températures (entrées analogiques du microcontrôleur) et d’activer autant de composants que nécessaire.

 

L’idée est d’avoir une centrale de sécurité sur laquelle on puisse brancher d’un côté des capteurs de températures sur les éléments qui chauffent dans une machine : outillage de la CNC, les moteurs d’extrusion d’une imprimante 3D (celui de la Foldarap est un très bon exemple!), ou des parties électroniques. En effet si on laisse la machine sans surveillance lorsqu’un long travail est en cours, on risque d’endommager, au mieux tout ou partie de la machine, au pire l’environnement de celle-ci (si elle prend feu!). Les quelques euros d’une telle installation permet de gagner du temps de maintenance, et/ou de reconstruction !

 

Voici l’installation sur ma micro CNC :

LM35 adossé à un EasyDriver

LM35 adossé à un EasyDriver

Le LM35 est monté face plate contre le driver directement, mais on peut envisager de le coller à un dissipateur s’il y en a un. Ces éléments garantissant juste un meilleur refroidissement, il n’est pas nécessairement suffisant….

Méli-mélo de câbles autours de l’Arduino (le LCD n’est définitivement pas nécessaire!) :

Ca, c'est câblé...

Ca, c’est câblé…

Le ventilateur se met en route dès que les 40°C sont atteints :

Système bilingue !

Refroidissement actif

Refroidissement actif = protection

Au mieux il arrive à faire redescendre l’ensemble sous cette limite, au pire, il va limiter sérieusement la vitesse. Il sera facile d’ajouter un buzzer si la température passe au-delà de 50° avec un petit gyrophare.

Pensez à toujours respecter les règles de sécurité quand vous fabriquez des machines (pensez au moins à ceux qui vont manipuler!) et ou en manipulez. Mais il faut aussi garder à l’esprit de pouvoir surveiller la machine !

 

Note : Ceci est un article sponsorisé par RadioSpares