Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

UltraV :un indicateur UV portable

Composants et fournitures

Arduino Nano R3
× 1
Texas Instruments ML-8511
× 1
Écran OLED 128x64
× 1
Convertisseur d'appoint DC-DC MT3608
× 1
Batterie CR2 (3v)
× 1
Support de pile CR2
× 1

À propos de ce projet

Ne pouvant pas m'exposer au soleil à cause d'un problème dermatologique, j'ai utilisé le temps que j'aurais passé sur la plage pour construire un compteur de rayons ultraviolets. UltraV.

Il est construit sur un Arduino Nano rev3, avec un capteur UV, un convertisseur DC/DC pour augmenter la tension de la batterie 3v et un petit écran OLED. Mon objectif principal était de le garder portable, afin que je puisse facilement connaître l'indice UV à tout moment et en tout lieu.

Étape 1 : pièces et composants

  • Microcontrôleur Arduino Nano rev.3
  • Capteur UV ML8511
  • Écran OLED 128 × 64 (SSD1306)
  • Élévateur DC-DC MT3608
  • Pile CR2
  • Support de pile CR2
  • Basculer
  • Boîtier de protection

Étape 2 :Le capteur

Le ML8511 (Lapis Semiconductors) est un capteur UV, qui convient pour acquérir l'intensité UV à l'intérieur ou à l'extérieur. Le ML8511 est équipé d'un amplificateur interne, qui convertit le photo-courant en tension en fonction de l'intensité UV. Cette caractéristique unique offre une interface facile aux circuits externes tels que l'ADC. En mode de mise hors tension, le courant de veille typique est de 0,1 µA, permettant ainsi une plus longue durée de vie de la batterie.

Caractéristiques :

  • Photodiode sensible aux UV-A et UV-B
  • Amplificateur opérationnel intégré
  • Sortie de tension analogique
  • Faible courant d'alimentation (300 µA typ.) et faible courant de veille (0,1 µA typ.)
  • Boîtier de montage en surface petit et mince (4,0 mm x 3,7 mm x 0,73 mm, QFN en céramique à 12 broches)

Malheureusement, je n'ai pas eu la chance de trouver un matériau transparent aux UV pour protéger le capteur. Tout type de couvercle transparent que j'ai testé (plastique, verre, etc.) atténue la mesure UV. Le meilleur choix semble être le verre de silice fondu au quartz, mais je n'en ai pas trouvé à un prix raisonnable, j'ai donc décidé de laisser le capteur hors de la boîte, à l'air libre.

Étape 3 : Opérations

Pour prendre une mesure, il suffit d'allumer l'appareil et de le diriger vers le soleil pendant quelques secondes, en le gardant aligné avec la direction des rayons du soleil. Observez ensuite l'affichage :l'index de gauche indique toujours la mesure instantanée (une toutes les 200 ms), tandis que la lecture de droite est la lecture maximale prise lors de cette séance :c'est celle qu'il vous faut.

Dans la partie inférieure gauche de l'écran, il est également indiqué la nomenclature équivalente de l'OMS (BAS, MODÉRÉ, ÉLEVÉ, TRÈS ÉLEVÉ, EXTRÊME) pour l'indice UV mesuré.

Étape 4 : tension et lecture de la batterie

J'ai choisi une batterie CR2, pour sa taille et sa capacité (800 mAh). J'ai utilisé UltraV tout l'été et la batterie lit encore 2,8 v, donc je suis assez satisfait du choix. Lorsqu'il fonctionne, le circuit consomme environ 100 mA, mais une mesure de lecture ne prend pas plus de quelques secondes. Comme la tension nominale de la batterie est de 3 v, j'ai ajouté un convertisseur élévateur DC-DC pour amener la tension à 9 volts et je l'ai connecté à la broche Vin.

Afin d'avoir l'indication de la tension de la batterie sur l'écran, j'ai utilisé une entrée analogique (A2). Les entrées analogiques Arduino peuvent être utilisées pour mesurer une tension continue entre 0 et 5V, mais cette technique nécessite un étalonnage. Pour effectuer l'étalonnage, vous aurez besoin d'un multimètre. Alimentez d'abord le circuit avec votre dernière batterie (la CR2) et n'utilisez pas l'alimentation USB de l'ordinateur ; mesurer le 5V sur l'Arduino depuis le régulateur (se trouvant sur la broche Arduino 5V) :cette tension est utilisée par défaut pour la tension de référence de l'Arduino ADC. Mettez maintenant la valeur mesurée dans le croquis comme suit (supposons que je lis 5.023) :

tension =((long)somme / (long)NUM_SAMPLES * 5023) / 1024,0 ; 

Dans le croquis, je prends la mesure de tension en moyenne sur 10 échantillons.

Étape 5 :Schéma et connexions

Étape 6 :Logiciel

Pour l'affichage, j'ai utilisé la U8g2lib qui est très souple et puissante pour ce genre d'écrans OLED, permettant un large choix de polices et de bonnes fonctions de positionnement.

En ce qui concerne la lecture de la tension du ML8511, j'ai utilisé la broche de référence Arduino 3.3v (précision à moins de 1%) comme base pour le convertisseur ADC. Ainsi, en effectuant une conversion analogique-numérique sur la broche 3,3 V (en la connectant à A1), puis en comparant cette lecture à la lecture du capteur, nous pouvons extrapoler une lecture réaliste, quel que soit le VIN ( tant qu'il est supérieur à 3,4 V).

int uvLevel =averageAnalogRead(UVOUT);int refLevel =averageAnalogRead(REF_3V3);float outputVoltage =3.3 / refLevel * uvLevel; 

Téléchargez le code complet à partir du lien suivant.

UltraV_OLED.ino.zip

Étape 7 : boîtier de boîtier

Après plusieurs (mauvais) tests de découpe manuelle de la fenêtre rectangulaire d'affichage sur une boîte en plastique du commerce, j'ai décidé de concevoir le mien pour cela. Donc, avec une application de CAO, j'ai conçu une boîte et pour la garder aussi petite que possible, j'ai monté la pile CR2 à l'extérieur sur la face arrière (avec un support de pile collé sur la boîte elle-même).

Téléchargez le fichier STL du boîtier du boîtier, à partir du lien suivant.

UltraV.stl.zip

Étape 8 :Améliorations futures possibles

  • Utiliser un spectromètre UV pour mesurer les valeurs réelles d'indice UV en temps réel dans diverses conditions (les spectromètres UV sont très chers );
  • Enregistrez simultanément la sortie du ML8511 avec le microcontrôleur Arduino ;
  • Écrire un algorithme pour relier la sortie du ML8511 à la valeur UVI réelle en temps réel dans un large éventail de conditions atmosphériques.

Étape 10 :Crédits

  • Carlos Orts :https://create.arduino.cc/projecthub/McOrts/mobil...
  • Forum Arduino :http://forum.arduino.cc/index.php?topic=3922.0
  • Démarrage de l'électronique :https://startingelectronics.org/articles/arduino/...
  • U8g2lib :https://github.com/olikraus/u8g2/wiki/u8g2referen...
  • Organisation mondiale de la santé, indice UV :http://www.who.int/uv/intersunprogramme/activitie...
https://github.com/olikraus/u8g2/wiki/u8g2reference

Code

  • UltraV
UltraVC/C++
Code
 /* Fabio Marzocca @ 2018 Les conversions analogiques-numériques reposent entièrement sur VCC. Nous supposons qu'il s'agit de 5 V, mais si la carte est alimentée par USB, cela peut aller jusqu'à 5,25 V ou jusqu'à 4,75 V :http://en.wikipedia.org/wiki/USB#Power En raison de cette fenêtre inconnue, cela fait l'ADC assez inexact dans la plupart des cas. Pour résoudre ce problème, nous utilisons la référence embarquée très précise de 3,3 V (précision à 1 % près). Ainsi, en faisant un CAN sur la broche 3,3 V (A1) et en comparant cela à la lecture du capteur, nous pouvons extrapoler une lecture fidèle à la réalité, quel que soit le VIN (tant qu'il est supérieur à 3,4 V). v. 2.0.0 - juillet 2018 - déplacé de l'écran LCD 16x2 vers l'OLEDv. 2.0.1 - Sept 2018 - fonction de lecture de la batterie modifiée*/#include #include #include U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data =*/ SDA, /* reset=*/ U8X8_PIN_NONE); // Toutes les cartes sans réinitialisation de l'affichage#define FIRST_ROW_Y 16#define FIRST_ROW_X 16#define BOX_H 38//Définition des broches matériellesconst int UVOUT =A0; //Sortie du sensorconst int REF_3V3 =A1; // Alimentation 3.3V sur la carte Arduinoconst int VBATT =A2; //Tension de la batterie flottant maxUV =0; // Max UV index readvoid setup(){ pinMode(UVOUT, INPUT); pinMode(REF_3V3, INPUT); pinMode(VBATT, INPUT); u8g2.begin();}boucle vide(){ u8g2.firstPage(); do { int uvLevel =averageAnalogRead(UVOUT); int refLevel =averageAnalogRead(REF_3V3) ; //Utilisez la broche d'alimentation 3,3 V comme référence pour obtenir une valeur de sortie très précise à partir de la tension de sortie du flotteur du capteur =3,3 / refLevel * uvLevel ; float uvIntensity =mapfloat(outputVoltage, 0.99, 2.6, 0.0, 15.0); //Convertir la tension en un niveau d'intensité UV readBattery(); if (maxUV =0) &&(categ <3)) { strcpy(strCat, "LOW"); } else if ((categ>=3) &&(categ <6)) { strcpy(strCat, "MODERATE"); } else if ((categ>=6) &&(categ <8)) { strcpy(strCat, "HIGH !"); } else if ((categ>=8) &&(categ <10)) { strcpy(strCat, "TRÈS ÉLEVÉ !"); } else if (categ>=11) { strcpy(strCat, "EXTREME!"); } u8g2.setCursor(0,64); u8g2.print(strCat); }//Prend une moyenne des lectures sur une broche donnée//Renvoie la moyenneint averageAnalogRead(int pinToRead){ byte numberOfReadings =16; unsigned int runningValue =0 ; for(int x =0; x  

Processus de fabrication

  1. Diviseur de tension
  2. Batterie pomme de terre
  3. Qu'est-ce qu'un compteur ?
  4. Construction de la batterie
  5. Qu'est-ce qu'une machine de soudage par points portable ?
  6. Machine CMM portable – fixe ou portable ?
  7. Comprendre la batterie utilisée dans les automobiles
  8. Différentes manières de tester un alternateur
  9. 7 signes d'alternateur mauvais ou défectueux