Différences entre versions de « MICROPYTHON-ANEMOMETER »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
Ligne 57 : Ligne 57 :
 
Voici le contenu du script que vous pouvez téleverser sur votre carte MicroPython pour y être exécuté.
 
Voici le contenu du script que vous pouvez téleverser sur votre carte MicroPython pour y être exécuté.
  
  <nowiki>
+
  <nowiki>#
 +
# Anemometer measurement
 +
#
 +
# See tutorial: https://wiki.mchobby.be/index.php?title=MICROPYTHON-ANEMOMETER
 +
from machine import Pin, ADC
 +
from time import sleep
  
 +
A3 = 39 # Analog 3 on IO39
 +
# Resistor Divider at ADC input
 +
R_BRIDGE_RATIO = 0.68117 # See tutorial
 +
 +
ana = ADC(Pin( A3 ))
 +
ana.atten( ADC.ATTN_11DB ) # Full 3.3V Range
 +
 +
while True:
 +
value = ana.read() # 0..4095
 +
v_esp = 3.3 * value / 4096
 +
v_anem = v_esp / R_BRIDGE_RATIO
 +
# Wind speed in meter per second
 +
speed_mps = 6 * v_anem
 +
# wind speed in Km per Hour
 +
speed_kmph = speed_mps * 3.6
 +
 +
print( "value: ", value )
 +
print( "m/s:", speed_mps )
 +
print( "km/h:", speed_kmph )
 +
print( "--------------------" )
 +
sleep( 0.5 )
 
</nowiki>  
 
</nowiki>  
  

Version du 1 novembre 2021 à 20:36

Introduction

Cet anémomètre 0-30 m/s est conçu comme un capteur prêt à l'emploi.

Anemometre.png

Le capteur produit une tension de sortie proportionnelle à la vitesse du vent (entre 0 et 5V), il suffit donc de brancher ce capteur sur une entrée analogique pour déterminer la vitesse du vent sur un microcontrôleur 5V comme Arduino UNO.

La vitesse du vent est calculée avec la formule 6*VOut. Une tension de 2.5V correspond à une vitesse de 15m/s.

Détails techniques:

  • Modèle:JL-FS2 à 3 soucoupes
  • Matériau: alliage d'aluminium
  • Gamme du signal de sortie:0 à 5V
  • Tension d'alimentation: 9-24V Continu
  • Consommation:<=0.3W sous 24V
  • Vitesse du vent de mise en rotation:0.4 à 0.8 m/s
  • Résolution:0.1 m/s
  • Gamme de mesure:0 à 30 m/s
  • Erreur:+/-3%
  • Distance de transmission: > 8m
  • Câble transmission (3 fils)
  • Température de fonctionnement:-40℃ à 80℃
  • Raccordement
    • VCC: rouge, 9-24V
    • GND: noir
    • Signal en Tension: jaune (0 à 5V)
    • Signal en Courant: bleu (non utilisé)
  • Poids:1Kg

Raccordement

Dans le schéma ci-dessous, un régulateur Step-up U3V12F9 élève la tension de 5V à 9V pour faire fonctionner l'anémomètre.

MICROPYTHON-ANEMOMETER-10.jpg

Un couple de résistance, idéalement 5 KOhms + 10 KOhms, permet de réduire la tension de sortie au 2/3.

Dans le cas présent il s'agit de résistances de 4.7K et 10K à disposition. Une fois mesurée avec précision, ces résistances sont de 4.6126 KOhms et 9.855 KOhms.

Vesp = Vout * 9855 / (9855 + 4612.6) = Vout * 0.68117

Si l'entrée analogique de l'ESP32 mesure une tension de 0.627 V:

  • Tension anémomètre Vout = Vesp / 0.68117 = 0.627 / 0.68117 = 0.920 V
  • Vitesse vent (m/s) = 6 * Vout = 6 * 0.920 = 5.52 m/s
  • Vitesse vent (Km/h) = m/s * 3.6 = 5.52 * 3.6 = 19.87 Km/h

Code

Le code MicroPython ci-dessous effectue une lecture sur l'entrée analogique A3 (IO39). Cette lecture 12 bits (0-4095) est convertie en tension d'entrée (0-3.3V).

Elle est ensuite convertie en tension de sortie sur l'anémomètre (0-5V) pour enfin être converti en vitesse exprimée en m/s.

Enfin, la vitesse en km/h est obtenue en multipliant la vitesse en m/s par 3.6.

Voici le contenu du script que vous pouvez téleverser sur votre carte MicroPython pour y être exécuté.

#
# Anemometer measurement
#
# See tutorial: https://wiki.mchobby.be/index.php?title=MICROPYTHON-ANEMOMETER 
from machine import Pin, ADC
from time import sleep

A3 = 39 # Analog 3 on IO39
# Resistor Divider at ADC input
R_BRIDGE_RATIO = 0.68117 # See tutorial

ana = ADC(Pin( A3 ))
ana.atten( ADC.ATTN_11DB ) # Full 3.3V Range

while True:
	value = ana.read() # 0..4095
	v_esp = 3.3 * value / 4096
	v_anem = v_esp / R_BRIDGE_RATIO
	# Wind speed in meter per second
	speed_mps = 6 * v_anem
	# wind speed in Km per Hour
	speed_kmph = speed_mps * 3.6

	print( "value: ", value )
	print( "m/s:", speed_mps )
	print( "km/h:", speed_kmph )
	print( "--------------------" )
	sleep( 0.5 ) 
 

Ce qui produit les résultats suivants:

value:  0
m/s: 0.0
km/h: 0.0
--------------------
value:  28
m/s: 0.1987045
km/h: 0.7153363
--------------------
value:  47
m/s: 0.3335397
km/h: 1.200743
--------------------
value:  40
m/s: 0.2838636
km/h: 1.021909
--------------------
value:  62
m/s: 0.4399886
km/h: 1.583959
--------------------
value:  48
m/s: 0.3406363
km/h: 1.226291
--------------------
value:  74
m/s: 0.5251477
km/h: 1.890532
--------------------
value:  78
m/s: 0.553534
km/h: 1.992723
--------------------
value:  80
m/s: 0.5677272
km/h: 2.043818
--------------------
value:  123
m/s: 0.8728806
km/h: 3.14237
--------------------
value:  117
m/s: 0.8303011
km/h: 2.989084
--------------------
value:  73
m/s: 0.5180511
km/h: 1.864984
--------------------
value:  131
m/s: 0.9296533
km/h: 3.346752
--------------------
value:  190
m/s: 1.348352
km/h: 4.854068
--------------------
value:  177
m/s: 1.256096
km/h: 4.521947

Où acheter