Le module capteur

 

Aujourd’hui, je vous décris le module capteur en charge du relevé de température et de la tension batterie.
Description:

Ce projet met en œuvre un petit module USB capable de mesurer la température ainsi que la tension d’une batterie, puis de renvoyer ces valeurs sur une liaison série. Compact, économe en énergie et simple à interroger, il constitue un outil idéal pour la surveillance d’alimentations, de systèmes embarqués ou de montages radioamateurs.

Le but est de disposer d’un dispositif USB qui :

  • lit la température via une sonde numérique DS18B20,
  • mesure la tension d’une batterie grâce à un pont diviseur,
  • reste en sommeil profond pour consommer un minimum,
  • se réveille automatiquement dès qu’une activité série est détectée,répond à deux commandes simples :
    • T → renvoie la température
    • V → renvoie la tension batterie

Lecture de la température

La sonde DS18B20 est pilotée via le bus OneWire.

  • envoie une requête de mesure,
  • lit la température en degrés Celsius,
  • renvoie la valeur sous la forme :
    T=23.75 C
    

Ce capteur numérique garantit une bonne précision sans nécessiter d’étalonnage complexe.

Mesure de la tension batterie

La tension à mesurer passe par un pont diviseur composé de deux résistances (R1 = 22 kΩ, R2 = 6,8 kΩ). Le microcontrôleur lit la tension sur l’entrée analogique A0, puis calcule la tension réelle selon la formule :

Vin=VA0×R1+R2R2×correction

La valeur retournée ressemble à :

V=12.41 V

Une variable correction permet d’ajuster finement la mesure si nécessaire.

Le Matériel:
Carte microcontrôleur 32U4
Une résistance de 6,8K (ou 4,7K + 2,2k)
Une résistance de 22K
Un capteur de température 18B20
Led jaune
Connecteur entrée alimentation
Fichiers 3D

Le programme Arduino est disponible directement sur le simulateur.

Lien vers le simulateur:

https://wokwi.com/projects/452516748378971137


Cliquer sur le bouton lecture vert pour exécuter la simulation.
Sur le champ du bas vous pouvez envoyer la commande T ou V.
En cliquant tu le potentiomètre ou sur le capteur de temperature vous pouvez faire varier les valeurs.

Schéma électronique:

J’ai utilisé 2 résistances en série de 4,7k + 2,2K car je n’avais pas de 6,8K sous la main.

Indication visuelle

Une LED connectée sur la broche 2 s’allume brièvement lors du traitement d’une commande, ce qui permet de visualiser l’activité du module.

Exemple d’utilisation

Depuis un terminal série :

  • envoyer T → obtenir la température
  • envoyer V → obtenir la tension batterie

Aucune configuration complexe, aucune trame exotique : une seule lettre suffit.

Le fichier Python pour aller lire les informations et les stocker dans le Raspberry:
Disponible sur Github 
Celui-ci intégré une temporisation de lecture et la sauvegarde des données.

L’intégration dans Svxlink:

Ajouter le dossier mesureV dans le dossier /home/
et copier le scripts mesureVT.py

Afin de faire la mesure de tension quand le relais est en veille, nous devons lancer le script de mesure lorsque que le relais passe en rx, une temporisation de 10s (configurable) est prévue.
Pour cela nous éditons le fichier RepeaterLogic.tcl qui se situe dans le dossier /usr/share/svxlink/event.d/local/

Editer RepeaterLogic.tcl
Ajouter à la fin de la partie repeater_down ajouter le lancement du script:
set runcmd [exec python3 /home/relais/meteo-relais.py];

proc repeater_down {reason} {
global mycall;
variable repeater_is_up;
#script lecture tension
set runcmd [exec python3 /home/mesureV/mesureVT.py];

Dans le même dossier, éditer Logic.tcl

# créer une fonction:

proc read_measure {fichier prefix msgFolder msgName} {

# Vérifier l'existence du fichier
if {![file exists $fichier]} {
puts "Erreur : fichier $fichier introuvable"
set valeur "0.00"
} else {
# Lire la première ligne du fichier
set fd [open $fichier r]
set ligne [gets $fd]
close $fd

# Exemple attendu : "V=00.00 V" ou "T=00.00 C"
# Construction dynamique de la regexp : prefix=V= ou T=
set pattern "${prefix}([0-9]+\\.[0-9]+)"

if {[regexp $pattern $ligne -> mesure]} {
set valeur $mesure
} else {
set valeur "0.00"
}
}

# Affichage console
puts "Mesure ($prefix) : $valeur"

# Actions vocales SVXCard
playMsg $msgFolder $msgName
playVoltage $valeur

return $valeur
}

Dans la partie, configuration du code DTMF mettre:

read_measure "/tmp/mesureV.txt" "V=" "SVXCard/Mesurement" "PowerSupplyVoltage"

ou

read_measure "/tmp/mesureT.txt" "T=" "SVXCard/Mesurement" "Temperature"

Le script écrit 2 fichiers dans le dossier temporaire /tmp/mesureV.txt et /tmp/mesureT.txt.
A la reception du code DTMF, SvxLink ira lire la valeur dans un des fichiers.

Les photos de la réalisation du capteur:


Conclusion:

Vous disposez désormais de la description nécessaire pour réaliser ce type de capteur. Vous pourrez également interagir avec celui‑ci et associer des actions en fonction des valeurs mesurées.

Afin de préserver les batteries, le relais pourrait s’arrêter à partir d’un certain seuil de tension, annoncer vocalement la tension mesurée lors de l’ouverture du relais, ou encore alerter en cas de tension basse des batteries.

Vous l’aurez compris, votre imagination fera le reste : il ne s’agit ici que d’une approche logicielle à mettre en place.

Je préconise de sauvegarder les fichiers que vous allez modifier en amont, ce qui vous permettra de revenir en arrière dans le cadre d’une erreur.

Bonne réalisation.

Vous pouvez recevoir un email dès la parution d’un article sur le Blog F8ASB.COM ainsi que des actualités Tech et radio, en entrant votre adresse email ICI. Tous les articles en 1 clic ICI
Ce contenu a été publié dans arduino, domotique, electronique, F1ZKA, f8khp, FK8ZHA, impression3D, informatique, Microcontrolleur, radioamateur, Raspberry, Relais F1ZBU /F1ZBV, spotnik2hmi, Svxlink, µUsbPlug, avec comme mot(s)-clé(s) , , , , , , , , , , . Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Time limit is exhausted. Please reload CAPTCHA.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.