Lire PWM (capteur Co2)

Salut tout le monde !

Voila je souhaite lire un signal PWM venant d’un capteur de Co2.

D’après la doc si je comprends bien, il faut que je compte combien de temps le signal est en BAS entre 2 signaux de 2ms valeur HAUTE.

Après quelques recherches, je pense qu’il faut utiliser pulsein() mais très franchement comme d’hab je suis un peux perdu…

Voila la doc du capteur :

3.2 PWM output  
CO2 output range:                0ppm-2000ppm  
Allowed max. current for OC:       5mA maximum 
Cycle:                           1004ms±5% 
High level output for beginning:     2ms (in name) 
Middle of cycle:                   1000ms±5% 
Low level output for ending:        2ms?in name?
Account formula for CO2 concentration which get through PWM: 
C 2000 (T 2ms /() T T 4ms)

Auriez vous des exemple utilisant le même procédé ?

Merci

MH-Z14.pdf (428 KB)

Bonjour,

L'utilisation de pulseIn() semble effectivement adapté dans ton cas. Il faut mesurer la durée du temps haut soit : raw = pulseIn(pin_capteur, HIGH, 1500000); (1500000 = timeout de 1.5s)

puis faire un map pour convertir la durée en ppm. int ppm = map(raw, 2000, 1002000, 0, 2000);

Explication du map : temps min : 2ms = 2000us temps max : 1002ms = 1002000us ppm min : 0 ppm max : 2000

Merci le code fonctionne mais me renvoi entre 850 ppm et 1000 ppm, je vie en ville mais quand même là c'est limite inquiétant ^^

Dans la doc il indique une formule, je devrais pas l'utiliser à la place de map ?

elriri:
Dans la doc il indique une formule, je devrais pas l’utiliser à la place de map ?

Tente le coup ça coute rien d’essayer :wink:

Dans la formule, il utilise TL qui est égale au temps ou le signal est au niveau bas donc j'imagine que je dois encore utiliser pulseIn() pour le déterminer, mais comment savoir si les deux mesures concerne bien le meme relevé de Co2 ?

Quand je fait un pulseIn() sur les deux niveaux (Low/High) les valeurs sont très semblables, respectivement 545000 et 448761.

Edit : J'ai appliqué la formule et à 4/5 ppm près les valeurs sont similaires, je reste quand même étonné de la concentration de co2 sur mon bureau (900ppm au lieu de 450 en moyenne).

bonjour je travaille sur capteur MH-z16 CO2 pour mon projet je veux utiliser la sortie PWM mais j'arrive pas a trouver le programme pour l'utiliser et le câblage avec la carte arduino je vous demande de m'aider si vous avez un programme bien cordialement . :)