Go Down

Topic: Comment connaitre le temps de travail d'un relai entre etat repos-travail (Read 1 time) previous topic - next topic

Mezzigue

Bonjour à tous,

Mon besoin est de connaitre le temps de travail de trois relais (non commandé par l'arduino).

Ceci afin de connaitre pour chaque relai et d'une d'un manière indépendante le temps de travail de chacun.

Ces relais commandent trois pompes (pilotées par un appareil externe à l'arduino) et je veux connaitre le temps de fonctionnement de chaque pompes.

J'ai un arduino uno, faut il que j'achète un shield de plus pour arriver a mes fins?.

Si quelqu'un a une idée.

PS: je suis débutant, j'ai travaillé de nombreux tuto sans  résultat convenable.

Merci





 
-Debutant-

68tjs

Si c'est pour connaître le temps pendant lequel les contacts sont fermés soit tu peux placer une sonde (une sonde de courant par exemple) sur le circuit de commande des pompes, soit tu choisi des relais avec un contact supplémentaire et tu te sert de ce contact supplémentaire pour déclencher un comptage (à l'aide d'une interruption sur une carte arduino par exemple).

La documentation arduino ne parle que de 2 pins pour les interruptions mais chacune des sorties de la UNO peut se voir attribuer "une" interruption, c'est moins simple qu'avec Int0 et int1 mais c'est faisable.
J'ai fait un tuto là : http://arduino.cc/forum/index.php/topic,100906.0.html
Lis le et tu comprendra pourquoi j'ai mis "une" en italique.

Si tu as des pins de libre tu peux aussi pour chaque pompe activer une pin particulière pour identifier la pompe et simultanément faire un "OU" à diode sur INT0 ou INT1. L'identification de la pompe se fera par programmation.

Il doit y avoir d'autres solutions qui ne manqueront pas de t'être proposées.

Mezzigue

Tu as parfaitement compris mon besoin.

J'utilise le contact supplémentaire present sur le relai.

Par contre je ne trouve pas le tuto dont tu m'as donné le lien.

Celui ci fini par :

"Ai supprimer le message d'explication pour dépolluer, j'ai fais un tuto plus complet dans la même section."

J'ai pas touvé où désolé.

-Debutant-

68tjs

Premier message du topic.
Juste en dessous du texte il y a un fichier pdf à charger.

Mezzigue

Bonjour.
Après plusieurs essais de téléchargement.
Impossible d'avoir accès au fichier.
Message d'erreur=Fichier corrompu.
Désolé.
-Debutant-

68tjs

Exact, pourtant avant de te répondre je l'avais téléchargé pour vérifier et c'était bon.
Pb du au changement de serveur pour le forum ?

Je te joins l'original en odt (56k au lieu de 650k), comme cela tu pourra l'éditer pour y ajouter des compléments personnels

Mezzigue

-Debutant-

68tjs

De rien.

Attention la solution multi interruptions n'est pas obligatoirement la plus adaptée.
Comme je l'ai écrit tu peux utiliser 3 pins pour identifier les relais et une 4eme qui est l'interruption directe INt0 ou INT1.
Ce qui revient à ne gérer qu'une seule interruption (directe donc plus simple) les information des 3 relais étant renvoyées sur INTx  par l'intermédiaire de diodes (OU logique à diode).

Autre point sensible les relais sont sans doute des relais de puissance donc un peu musclés mécaniquement.  Il va y avoir des rebonds.
Pour traiter ces rebonds trois solutions :
1) logicielle -> faire une recherche sur "debonce"
2) matérielle solution 1 pour des rebonds "normaux" -> placer un condensateur en parallèle sur le contact : un couple R=10k et C= 100 nF est souvent suffisant, on peut augmenter la valeur de C.
3) matérielle solution 2 pour cas difficile : l'arme qui tue -> une bascule RS

Mezzigue

Merci à toi pour ces informations précieuses.
En tant que débutant, j'ai réussi a utiliser "attachInterrup" mais le résultat erroné ne me convenais pas.
A force de recherche car je présentai la cause,(j'ai buché pas ma de tutos),  j'ai trouvé la solution dont tu me fait part.
Afin d'éviter le problème de "rebond"quand le relai est en "travail" et ensuite "repos", la solution est la solution N°2 ou 3 semble convenir à mes besoins, et éliminera à mon humble avis les problèmes de résultat erronés.
Pourquoi:
Dans la fonction "attachinterrup", ce trouve une lecture de "millis() qui me permet de calculer le temps de travail du relai.
Par différence entre l'état au repos et l'état au travail, j'aurai le temps durant lequel "colle" le relai.
Le phénomène de "rebond" me donne à ce moment là, des résultat erroné.
La solution dont tu me parles, évitera ces erreurs.
Je teste et te tiens au courant.
Si résultat positif, je posterai mon plan de montage et le programme afin d'être utile a la communauté.


-Debutant-

Mezzigue

Bonsoir,
Comme poster précédemment j'ai tester le circuit RC afin d'eviter les "rebonds", le resultat n'est pas bon.
Mon programme:

A l'aide de  attachInterrupt( buttonInt, FaireIncrement, CHANGE ); je place d'en une variable mills()
cette  variable prend une valeur differente quand le relait change d'etat.
Je peux donc calculer une difference.
Le probleme est que dans le changement d'etat je lis une multitude de valeur.
As tu une solution?
-Debutant-

68tjs

Si avec les relais que tu utilises les rebonds sont difficile à supprimer il faut se poser la question différemment :

Quel est l'ordre de grandeur des temps d'arrêt et de fonctionnement des pompes ?
Si les relais ne sont pas des modèles réduit c'est sur que cela doit claquer dur avec les rebonds qui vont avec.
Je pense que ce serais mieux si tu en disais plus sur eux.

Je défend toujours le traitement des rebonds à la base par des moyens matériels mais il ne faut pas être borné non plus et peut-être que dans un cas "dur" les deux méthodes devront être utilisées de concert. D'où ma question du début sur les temps de fonctionnement des pompes : si le temps de rebond est négligeable devant les valeurs de temps de fonctionnement/Arrêt on peut se permettre d'ajouter une "grosse" temporisation matérielle et logicielle

Il reste la solution des bascules RS, je n'ai jamais eu besoin de les utiliser mais de mémoire elles demandent un contact inverseur ( R/T + T/R).
Une bascule RS utilise 2 portes Nand ou OR à voir selon l'état de repos que l'on cherche.
http://fr.wikipedia.org/wiki/Bascule_%28circuit_logique%29#Verrou_RS_avec_porte_OU-NON

Avec la bascule RS il faut être assuré que le rebond ne consiste qu'en une  ouverture de contact  parce que si les oscillations mécaniques sont mahous costaudes et sont capables de faire un va et vient dans l'inverseur entre le contact qui se ferme et le contact qui s'ouvre cela ne marchera pas.

Mezzigue

Bonjour,
désolé pour ce silence, habitant dans un trou, j'ai eu une interruption d'internet de plusieurs semaines.  Vive la campagne.!!!!!!
Je te presente donc toutes mes excuses, pour mon silence  infligé et quand à l'interet que tu à porté à mon post.

J'ai travaillé sur mon problème.

J'ai trouvé et posterai mon programme quand cela fonctionnera comme je le désire.
Du haut de mon incompétence de débutant et sans  prétention, si cela peu servir à la communauté.....
J'utilise le montage ci dessous.
Quand j'utilise un interrupteur de platine électronique, cela fonctionne.
Quand je le remplace par mon relai, aucun resultat.
Crois tu que le condensateur ne fait pas sa fonction.
J'ai cru comprendre en lisant des plans que sa valeur aurait du etre de 10nF au lieu de 10pF.
Pour répondre a ta question,
L'ordre de grandeur est important, (pompe de circulation de chauffage).
Les relais sont des relais finder, type 4031S en 12V pour ma maquette, j'utiliserai des 220V quand mon projet sera aboutit.
Merci de ton attention.
-Debutant-

68tjs

Quote
J'ai cru comprendre en lisant des plans que sa valeur aurait du etre de 10nF au lieu de 10pF.

Je dirais même plutôt 100nF que 10 nF.
En tout cas 10pF ne risquent pas de servir à grand chose.

Ce qui compte c'est d'avoir une constante de temps suffisamment grande. La constante de temps est égale au produit R*C. C'est bizarre a première vue mais le produit d'Ohms par des Farads donne des secondes.
Comme un relais est une pièce mécanique les temps sont long, à l'échelle électronique, on est dans le domaine de la milliseconde à la dizaine de millisecondes.

Plus d'info : faire des recherches sur la charge d'un circuit RC.

Mais déjà teste avec 100nF et 10k  et si cela ne suffit pas essayes pour C entre 100nF et 500nF -> tu peux mettre les condensateurs en parallèle et pour R entre 10k et 50Kohms -> tu peut mettre les résistances en série.

Go Up