Interrupteur Laser de Proximité

Si j'approche, ça s'allume ; Je m'éloigne ça s'éteint !

Inter laser gal      "Tu ne vas pas laisser clairer c'te lampe tout l'temps" disait ma mère ... En grand garçon obéissant, j'ai créé cet interrupteur laser de proximité. On peut y asservir un éclairage d'objet d'art, un ventilateur qui se met en marche dès que l'on est sur le fauteuil, et tout autres appareils qui ne fonctionneront que si la présence est détectée. Dans un monde d'économie d'énergie, il est impératif  de ne pas consommer pour rien . Donc il perçoit sur une distance de 2 mètres, sur un angle de 40°, tous corps ou obstacles qui avancent de plus de 50 cm en moins d'une seconde, et active la sortie pour alimenter ce qui lui est raccordé.   

     Avant de mettre les mains dans la matière, juste un regard sur les options proposées; Suivant l'appareil qui sera raccordé, j'ai réalisé plusieurs options avec différents relais de sortie ... Du relais statique, de l'électromécanique et de la grosse puissance (40A) , sans toucher au circuit de commande => on câble ce que l'on veut ! Et comble du luxe, une version avec un afficheur LCD deux lignes 16 caractères pour avoir une indication de la distance qui sépare la personne de l'interrupteur ... ça s'appelle un télémètre .

 

Les fichiers de réalisations :

      Pour ceux qui n'auraient pas la patience de me lire jusqu'à la fin, et pour changer la structure de mes post,  je donne les fichiers de réalisation juste dans le zip ci-dessous

Inter laser filesInter laser files (935.57 Ko)

 

 

Le matériel :

      Voici la nomenclature  du matériel à se procurer pour réaliser la version de base 

Le Capteur :

Inter laser tof

Le capteur laser TOF10120 de chez Aliexpress   en promo à 3,90  €. Ce capteur  TOF10120 fournit une mesure précise  à longue distance en autofocus, indépendante de la réflectivité de l'objet. La technologie de détection de TOF10120 est réalisée par les Diodes SPAD (unique Photon Avalanche) originales de Sharp en utilisant un processus de traitement CMOS . Il permet un résultat de télémétrie précis, une plus grande immunité à la lumière ambiante, ainsi qu'une meilleure robustesse pour couvrir le diaphonie optique en verre grâce à une optique spéciale. De longueur d'onde de 940nm (laser classe 1 ). Mesures de longues portées jusqu'à 1.8m
Précision de 5% .

Le microcontrôleur:

O2 cardiometernano      Un Arduino Nano pour gérer tout ça : il est petit, pas cher, et bon à tout faire ! En plus, on n'a pas à réinventer le fil à couper le beurre lors du développement car plein de bibliothèques existent déjà et ne demandent qu'a être réutilisées; vive l'open source ! Une base micro Atmel ATmega168 (16 Mhz), avec plein d' I/O analogiques et digitales, Mini port USB, bus I2C, TX/RX, SPI,etc ... L'entrée Vin reçoit de 7 a 12 volts et des sorties restituent deux tensions régulées de 5 et 3,3 volt . Le tout facilement configurable par une interface IDE en freeware !  Que du bonheur ...

L'alimentation 5 volts :

Pwr220 5vdc

Alimentation à découpage chez Aliexpress . Tension d'entrée universelle: 85-264V ca ou 110-370V cc. Gamme de fréquence (Hz): 47-63. Tension de sortie: 5V.  Protection contre les surintensités;  protection contre les courts-circuits et protection contre la surchauffe. Courant nominal: 1,2 A. Puissance nominale: 3W. Température de fonctionnement: -30-70 ℃.

Les Composants discrets:

1 résistance carbone de 2k2 (2200 Ohms) en 1/4 watt en composant traversant

Multi dices r470

2 résistances CMS 1206 de 7K7 (4700 Ohms) Wifi clock pannel res

1 Transistor BC547

Transis bc547

*Une diode 1N4004 (facultative:  à ne monter que si relais électro mécanique )

Diode 4004

* Différents relais utilisés sur le circuit suivant l'option choisie :

Relais

La sérigraphie du circuit imprimé permet de choisir 3 relais au choix en fonction de la charge à piloter !

  • Le premier est un relais statique Omron, optocouplé et  piloté par une tension continue de 3 à 15 volts DC et acceptant une charge de 2 A ( Attention, si vous utilisez une lampe à led, il faudra probablement ajouter une impédance RC comme en pointillé sur le schémas )
  • Le deuxième relais est un relais électromécanique 5 volts et avec contact de 5A pour 250 VDC . Si l'on câble ce relais, il ne faut pas oublier la diode aux bornes de sa bobine  pour absorber les courants induits par la self rupture.
  • Le Troisième modèle est un relais statique de puissance. Il est opto-couplé; assure une grande isolation galvanique; se pilote avec un large éventail de tension (de 3 à 18 volts DC ) et à l'avantage, en plus de ne pas être très cher ( 2,30€) de pouvoir commuter des charges de grosses puissances. Attention, si l'on commute des charges inductives il faudra mettre des varistors adéquats aux bornes de celle-ci !

 

La réalisation pratique :

Le Schémas :

Inter laser sch

      C'est déjà bien dégrossi avec la présentation matérielle ... Un Arduino Nano s'occupe de tout ! Le dialogue bi-directionnel avec le capteur TOF10120 est assuré par les pinuches I2C (A4-A5), tirées au potentiel haut par des résistances de 4K7 (R2-R3). Un connecteur 4 broches, 2 pour le bus, 2 pour l'alimentation permet de séparer mécaniquement le capteur, et sa connexion . Sur ce télémètre laser, on remarque qu'il est pourvu également d'une communication RS232 ( broches TX-RX) à 9600 baud 8bits 1stop Non parité , que je n'utilise pas ici, mais qui peut être intéressante dans le cas d'une distance importante entre les deux unités .

      La sortie (D13) est amplifiée en courant par un BC547 (Q1) commandé à travers une résistance de base (R1) de 2K2. La 'sortance' de cette pin est en principe suffisante pour commander de petits relais (40 mA - 10mA de  Led sur le Nano ) ce qui limite à 30mA utilisables, donc pas de prise de risque, j'amplifie ! Comme vu plus haut, différent type de relais peuvent être montés suivant les besoins ... La diode 1N4004 (D1) n'est à monter que si l'on utilise un relais électromécanique pour absorber les courants induits par la self rupture (Loi de Lenz ) ... L'élément RC (C1-R4) est également facultatif, dans le cas de charges inductives; aussi on peut y monter des Varistors ou des Gemoves,  adaptés en fonction de la puissance demandée . Egalement est a prendre en compte que le fait de monter des lampes à Leds sur des sorties à semiconducteurs peut provoquer un éclairement partiel de ces dernière alors que l'élément ne conduit pas => là il faudra mettre en parallèle une résistance de 270K / 1W aux bornes de la charge .

      Une petite alimentation à découpage fournie le 5 volts nécessaire au fonctionnement de l'ensemble ! Gros avantage de ce type de circuit, c'est son rendement proche de 1 ! il n'a pratiquement pas de consommation au repos et donc pas d'échauffement . Second avantage, c'est qu'il accepte des tensions de 94 à 290 volts AC / DC en entrée; c'est souple ! Et en plus c'est bien moins cher qu'un transformateur + redresseur + régulateur ! Et c'est tout petit .

Le Circuit :

Inter laser cabl      Le circuit imprimé est de type simple face pour en faciliter la réalisation par l'amateur. Pas de strap et des dimensions réduites . Lors des travaux de soudure, on commence par les résistances CMS, puis la traversante et les autres composants discrets ... J'ai remplacé les bornes à vis de la photo par des connecteurs plus sécurisé, de classe II, où aucune partie n'est accessible pour un contact accidentel direct, vu les tensions dangereuses qui circulent sur ces borniers . Attention également aux pistes du circuit si vous faites des essais sous tension avant la mise en boite . 

 

La mise en boite :

Inter laser box      Le boitier est réalisé à l'imprimante 3D et se compose de deux parties: le pied; un panneau légèrement incliné vers l'arrière, qui supporte le capteur TOF10120 fixé par petites vis parker, ou éventuellement une pointe de colle sur chaque oreille de fixation ... Le circuit imprimé est vissé solidement sur les bossages aménagés à cet effet, également par 4 vis courtes. Le deuxième élément, c'est le fond, qui enveloppe et protège le tout; avec une ouverture au niveau des connecteurs pour accéder à ceux ci et laisser un passage pour les fils. Deux autres petites vis assurent la liaison mécanique pour fermer l'ensemble ...

 

Le programme de l'attraction :

      Le sketch est développé sous l'IDE Arduino pour un Nano ATmega328P (Old Bootloader ) relié directement sur l'USB du PC avec le driver CP210x installé . Le début c'est la déclaration des affectations d'entrées/sorties,  des variables utilisées et de l'appel des sous-programmes (qui évitent de tout réécrire, puisqu'ils ont le privilège d'exister et d'être partagés ) ... Puis le setup qui initialise les éléments utilisés et l'intervalle des mesures; suivi de la boucle (loop) qui chaque fois lance le timer: 

  timer.run(); // Initialise le SimpleTimer

 interroge le capteur:

void SensorRead(unsigned char addr,unsigned char* datbuf,unsigned char cnt) 
{
  unsigned short result=0;
  // étape 1 : demander au capteur de lire les échos
  Wire.beginTransmission(82); // transmettre au composant #82 (0x52)
  //l'adresse indiquée dans la fiche technique est 164 (0xa4) mais l'adressage i2c utilise les 7 bits de poids fort donc c'est 82
  Wire.write(byte(addr));      // définit l'adresse de données de distance (addr)
  Wire.endTransmission();      // Fin de transmission

  // étape 2 : attendez que les lectures se produisent
  delay(1); // la fiche technique suggère au moins 30µS
  
  // étape 3 : demande de la lecture du capteur
  Wire.requestFrom(82, cnt);    //demande des octets contenus dans le composant esclave #82 (0x52)
  
  // étape 4 : reçoit la lecture du capteur
  if (cnt <= Wire.available()) { // si deux octets ont été reçus, on reçoit l'octet de poids fort (écrase la lecture précédente)puis l'octet de poids faible
    *datbuf++ = Wire.read();
    *datbuf++ = Wire.read(); 

  }
}

 traite les données reçues par : 

int ReadDistance(){ // Lecture de la distance et mémorisation des octets reçus dans les deux buffers
    SensorRead(0x00,i2c_rx_buf,2);
    lenth_val=i2c_rx_buf[0];
    lenth_val=lenth_val<<8;
    lenth_val|=i2c_rx_buf[1];
    delay(300); 
    return lenth_val;
}

Et on fait la comparaison de l'ancienne mesure avec la nouvelle, pour voir si la distance augmente ou diminue; afin d'activer ou désactiver le relais en fonction de +500mm ou -500mm :

void display_measurement()
{
if  ( x_mm < (oldPos - 500)) { //Si la nouvelle mesure est > de 50 cm à l'ancienne, on allume la charge
  digitalWrite(reLay, HIGH);
  oldPos = x_mm ; // mémorisation de la nouvelle valeur
}

if (( x_mm > (oldPos + 500)) or (x_mm > 1800)) { //Si la nouvelle mesure est < de 50 cm à l'ancienne,ou >1,80m on eteind la charge
  digitalWrite(reLay, LOW);
  oldPos = x_mm ;  // mémorisation de la nouvelle valeur 
}

}

Et voilà tout est dit et à chacun d'adapter les valeurs de la progression en fonction de ce à quoi servira cet interrupteur .

 

Version avec Afficheur :

      Pour les curieux qui seraient intéressés par la visualisation de la distance mesurée, je vous ai joint une version avec un afficheur LCD 2 lignes 16 caractères piloté par un driver I2C / Parallèle (limitation du câblage et des composants ) .  Le schéma est joint dans le package ainsi que le programme pour gérer l'ensemble ... 

Inter laser lcd      On double le connecteur I2C : Un reçoit le capteur, l'autre le décodeur de l'afficheur . Cette interface a de gros avantage : elle simplifie énormément le câblage et inclue le potentiomètre de réglage du contraste . De plus, elle offre la possibilité de piloter le rétro-éclairage de l'écran par le programme ou physiquement par le retrait du cavalier enfiché sur JMP / JMP1.

 

Et pour conclure :

      Le but est de sortir un interrupteur très bon marché qui, contrairement aux détecteurs pyro, ne nécessite pas que l'on s'agite en permanence devant ! Autre avantage par rapport aux HC-SR04 à ultrasons, il offre un angle de détection plus large et surtout ne perturbe pas nos animaux domestiques ou la faune sauvage ! Et par rapport aux barrières laser, pas besoin de câble qui se promène, ou de réflecteurs dans l'axe de la visée !

                                                                                                   

Bonne réalisation et amusez vous bien !

 

Ajouter un commentaire