Compteur impulsion Jeedouino

Bonjour,
J’ai un débitmetre qui remonte en compteur à impulsion sur un Arduino R3 branché en USB sur le raspi.
J’ai mis en place un pull up externe (avec résistance relié au 5V)
Malgré cela, le compteur s’affole régulièrement (il dépasse 10^10 impulsions)
Que faire pour améliorer cela ?
J’ai essayé de brancher les même débitmètre sur une carte Piface2 branchée directement sur le Raspi (4b 4go). là, le compteur ne s’affole jamais mai il enregistre en moyenne 1 impulsion sur 10… donc le comptage est totalement faux.
Le comptage avec Arduino fonctionne bien (répétable et précis) mais il s’emballe régulièrement.
Merci

Peut être avec un opto coupleur genre EL817 en tête.
Le problème, c’est que tu dois avoir des rebonds a chaque impulsion, donc plusieurs déclenchement a chaque fois, pour éviter les rebonds tu as le côté logiciel (debounce) mais, pas très efficace, ou matériel soit avec un circuit spécialisé ,ou un simple condensateur ou l’opto, par expérience je partirais sur l’opto.

Hello, merci pour votre reponse. Je vais essayer… mais j ai des doutes sur les rebonds. Tout est stable pendant des jours, et d un coup, on prends 100k impulsions… j ai plus l impression que le plugin bug.

Bonjour,

Oui il y a un bug qui entraine ce sur-comptage lors de la perte de communication entre jeedom et l’arduino.
J’ai déjà fait des modifs en ce sens sur la beta du plugin.

Bonne journée.

Bonjour Revlys,
Merci pour votre réponse.
Je suis sur la Beta, donc j’aurai les modifs.
Pouvez vous expliquer que quand on connecte sur une Piface on ait pas le problème, mais que toutes les impulsions ne soient pas comptées ? y a t’il un paramètre à changer (scrutation…) pour comptabiliser toutes les impulsions ?
merci

@revlys Y a un bug sur la 2021-04-08 01:00:50 , quand tu supprimes un équipement pins/GPIO, par ex un bme680 , et que tu sauvegarde et re généré , le demon continu à rechercher cet équipement et donc s’arrête automatiquement . log

Second Network thread
[2021-04-08 15:50:23][Demon PiGpio][6] Requete : ['BootMode', '1']
[2021-04-08 15:50:23][Demon PiGpio][6] >> Reponse a la requete : BMOK
[2021-04-08 15:50:25][Demon PiGpio][6] Requete : ['ConfigurePins', '..A...b..........f......................']
[2021-04-08 15:50:25][Demon PiGpio][6] Error : Impossible de trouver la sonde bme280 sur x76. - No I2C device at address: 0x76
[2021-04-08 15:50:25][Demon PiGpio][6] GET : /plugins/jeedouino/core/php/Callback.php?BoardEQ=6&NOBMEP=bme280(x76)
[2021-04-08 15:50:25][Demon PiGpio][6] >> Reponse a la requete : NOK
[2021-04-08 15:50:25][Demon PiGpio][6] GET : /plugins/jeedouino/core/php/Callback.php?BoardEQ=6&REP=NOK

Pour contourner le bug, je desinstal et réinstale le plugin avec une programation sans le bme680 et les autres capteurs sont donc lu sans blocage du demon

Bonjour @revlys
Pourriez vous me dire si il y a d’autre support que l’arduino ou cela fonctionne bien ?
ex : ESP8266 / piface …
Savez vous pourquoi le Piface ne compte pas toutes les impulsions ?
merci

Bonjour,

C’est parce-que la lib des piface a un bug au niveau du listener.
J’ai mis à la place une boucle de comptage dans le démon.
Celui-ci exerce une pause de 0.2s qui était nécessaire à l’époque des pi1 et 2.
Du coup les impulsions inférieures a ce temps sont sous-comptées.

J’ai rajouté une option dans la beta pour pouvoir éventuellement diminuer cette pause.
Toutefois elle ne pourra pas être supprimée car elle est nécessaire au fonctionnement multitâche du rpi.

Bonne journée.

Bonjour,

Je regarderais ça.
Mais l’idéal est toujours de forcer le démon à redémarrer en supprimant le port réseau (laisser vide) avant de sauver l’équipement.

Bonne journée.

Bonjour @revlys
Merci pour votre réponse.
Quel temps serait raisonnable (pour ne pas faire planter le RPi^^)
materiel : Rpi 4 4Go avec 2 Piface et 1 arduino + RFXCom, téléinfo & Zvawe (il y a quand même un peu de monde)
merci

Dans la beta , j’ai bloqué le minimum a 50ms.
Tu pourrais essayer cette valeur vu que tu as un pi4.
Si c’est concluant, je verrais pour baisser encore un peu ce minima.

De mon coté, je n’ai plus de piface (hs) donc je ne peux plus faire de tests dessus.

slt Revlys, aurais-tu intégré une carte pour rasberry " HAT " dans ton plugin Jeedouino pour l’acquisition de signal analogique ? ( pas en usb avec un arduino connecté , mais en HAT )
La PiFace Digital 2 , n as que des entrées digitale si je lis bien la datasheet.
Par exemple comme une carte ici

http://webiopi.trouch.com/ANALOG.html

Merci

Bonjour,

Non, pas prévu.

Bonne journée.

Bonjour @revlys
Apres 3j de test à 50 ms, aucune instabilité système ou charge particulière du RPi constatée.
Par contre, le compteur ne fonctionne toujours pas. Je pense que les impulsions du débitmètre hall sont plus courtes que cela.
Peut on encore baisser a valeur ? si ça plante, je fais quoi ?
merci

Bonjour,

J’ai fait une modif sur la beta pour que tu puisses descendre en dessous de 50ms.
J’ai mis la limite à 1ms min.
Soit tu la prends de suite sur github, soit tu attends demain pour la prendre sur le market.

Après, si cela ne suffit toujours pas, il faudra t’orienter vers un dev spécifique à la piface ou partir sur un arduino / esp.
A voir.

Bonne journée.

Bonjour @revlys
J’ai testé la MAJ
en dessous de 10ms, ça affecte un peu les perfs du RPi sans que ce soit franchement embêtant
par contre, même à 1ms, je ne compte pas plus d’impulsions qu’à 200ms…
J’ai déja essayé l’arduino. Le comptage est parfait, mais il déconne tous les 3 jours en affichant des valeurs >>100000000 malgré tout ce que j’ai essayé.
Que puis-je faire d’autre ?
merci

Bonjour @gonzi,
est-ce que tu as essayé de créer une variable perso (dans le plugin), générer le sketch et de créer dans les zones utilisateurs: créer ton entrée de type interrupt() et une variable pour comptage; dans la zone SketchUser, incrémenter ton compteur et toutes les secondes, renseigner le compteur dans la variable perso afin de remonter ton compteur dans Jeedom. Par contre attention, juste au-dessus de void UserLoop(), tu as une ligne NextRefresh = millis() + 1000; qui est par défaut à + 60000 que j’ai descendu à 1000. attention au code que tu mets dans le UserLoop si tu descends la tempo, tu risques de surcharger Jeeedom en fonction que tu vas envoyer tes données.
(j’utilise cette méthode pour avoir un écran nextion sur la carte Méga et faire un mode dégradé en cas de perte de com avec Jeedom; je vais réaliser un tuto sur le sujet mais pas de date défini pour le moment)

Bonsoir @gonzi,

par contre, même à 1ms, je ne compte pas plus d’impulsions qu’à 200ms…

En te lisant, je me suis rappelé que j’avais mis une autre limite minimum ailleurs dans le plugin.
Du coup dans certains cas, même si l’affichage était à 1 ou 10ms, la valeur utilisée par le démon restait a 200ms :upside_down_face:

J’ai corrigé ça dans la beta, si tu veux tester à nouveau.

J’ai déja essayé l’arduino. Le comptage est parfait, mais il déconne tous les 3 jours en affichant des valeurs >>100000000 malgré tout ce que j’ai essayé.

J’avais déjà corrigé ce souci (normalement) si tu veux ressayer.

Tu as aussi la solution de @skapced éventuellement.

Bonne soirée.

Slt Revlys,
J’ai un capteur de pression situé à 30 m de mon arduino uno ( seedouino ) connecter en usb au RPI et le cable subit des champs magnétiques qui font varier de ± 15 la valeurs reçue . entre 480 et 500 ± ca varie toutes les secondes . Je n’ai pas le problème quand je place le capteur en direct , avec un fil de 1 m sur le arduino uno . Que me conseilles tu pour " lisser la valeur ? un changement software ou hardware ? Condensateur, resistance ? Le capteur donne entre 0.5 v et 5 v dc . ps: je mettrait bien un convertisseur tension /courant , mais je ne sais pas si un RPI à une entrée « courant » en natif ou si tu as une interface capable de recevoir un « courant » pour des valeurs stables . Merci pour ton support

salut,
la conversion d’une impulsion en « boucle de couant » risque d’être une usine à gaz car après, il va falloir interpréter par exemple le 4mA pour 0V et le 20mA pour le 5V et surtout que le système soit suffisamment réactif. le filtre devrait pouvoir le faire.

comment est configuré l’attachInterrupt() dans arduino? si il est configuré en mode « rising » (détection de low à high), est-ce que tu as essayé de mettre une résistance de forte valeur entre ton entrée et le GND (faire comme une résistance de pull-down)? voir si compatible avec ton capteur