Pages: [1] 2   Go Down
Author Topic: quel composant ? deux interrupteurs quatre états  (Read 1205 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 1
Posts: 144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjour a tous,
je sais pas si il existe un composant permettant de raccorder deux interrupteurs analogique et lire avec un seul pin l'état de ces deux portes ? (soit les quatre états).

Au pire j'ai pensé à un système de résistances sur chaque interrupteurs de valeurs différentes... me permettant d'en déduire les "portes" en fonction du voltage entrant... mais si il existent un composant permettant de faire ce type de "logique" je suis preneur !
« Last Edit: January 26, 2013, 10:09:04 am by fred133084 » Logged

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3448
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

En faisant un diviseur de tension avec les interrupteurs et des résistances, on peut lire plusieurs inter sur une entrée analogique.

Un montage là (cliquer sur l'image):
http://arduino.cc/forum/index.php/topic,143662.msg1079381.html#msg1079381

edit:
J'ai même retrouvé un fil sur la partie française du forum
http://arduino.cc/forum/index.php/topic,49877.0.html
« Last Edit: January 26, 2013, 10:37:53 am by fdufnews » Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

c'est exactement ce que j'avais en tête, une valeur de résistance différente sur chaque switch, mais en fait j'ai beau réfléchir et plus j'y pense et plus je crois qu'il vaut mieux que chaque switch soit connecté indépendamment, cela permettra en fait de rendre le système plus "souple", et c'est les résultats que l'on regroupera (je pense utiliser des CD4067 )

merci pour ton aide.
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Regarde du côté du CD4067 (multiplexeur analogique), du CD4021 (INPUT numériques SPI) ou du PCF8574 (I/O numériques I2C) smiley-wink
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3448
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
plus j'y pense et plus je crois qu'il vaut mieux que chaque switch soit connecté indépendamment, cela permettra en fait de rendre le système plus "souple",
Je ne vois pas très bien ce que tu entends par plus souple.
Si tu as 2 inter cela fais 4 états possibles. Si les résistances sont de valeurs différentes tu peux récupérer 4 tensions différentes sans aucun problème. Et il n'y a pas d’ambiguïté dans la tension retournée.
Je ne vois pas comment tu pourrais faire plus souple. Ou alors tu n'as pas tout dit de ton besoin au départ.
Logged

France S-O
Offline Offline
Edison Member
*
Karma: 41
Posts: 2190
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Avec seulement 2 entrées la solution de fdufnews est la plus simple et n'utilise qu'une pin.
Pour l'autre solution  (mux, pcf , etc ) je pencherais pour un PCF8574 car l'I2C n'utilisera jamais plus de 2 sorties.

Les multiplexeurs ça peut être trompeur : dans tout les cas faut il compter les sorties pour la commande du mux et l'entrée pour tester la sortie du mux.
Donc
entrées  cde du mux  sortie    gain en signaux
      2             1          1                  0
      3             2          1                  0
      4             2          1                  1
      5             3          1                  1
      6             3          1                  2
      7             3          1                  3
      8             3          1                  4
      9             4          1                  4

Le mux est certes plus simple à gérer que l'I2C mais reste moins intéressant en termes de nbres de sorties utilisées.
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je ne vois pas très bien ce que tu entends par plus souple.

en fait mon programme va etre en deux parties. Une partie "sensor" qui vont stocker toutes les informations des capteurs, et une partie "dynamique", des "modules" que tu vas ajouter a foison et paramètrer comme tu veux. Et ce sont eux qui vont donc utiliser les valeurs des différents sensors et effectuer une action.
Par exemple pour notre cas de ce post, j'ai pensé déduire l'état de la porte du garage : ouverte, fermée, en sécurité. J'ai donc différents état que deux interrupteurs peuvent sans mal déduire.
Ma reflexion était en fait de savoir si ces deux interrupteurs devaient être analysé séparément (comme deux sensors indépendant) ou alors tel qu'un seul et même interrupteur... du coup je sais plus quoi faire smiley-wink

il est vrai qu'on parle "d'une même porte de garage", donc la logique voudrait que cela soit qu'un seul "wire"...
Logged

Offline Offline
Newbie
*
Karma: 2
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Rebonjour fred133084, décidément aujourd'hui je tombe sur tous tes posts...

Utiliser des valeurs analogiques pour gérer plusieurs inters sur 1 entrée fonctionne très bien, mais si j'ai bien compris tu risques d'avoir un peu de longueur de câble entre le capteur et l'Arduino et là tu prends des risques d'avoir pas mal de fausses lectures.

Tu te souviens de ce que j'avais proposé dans mon post domotique : I2C plus adaptateurs longue distance pour le bus, me paraît et plus fiable et plus "souple" (au moins 8 entrées sur un node, possibilité de positionner plusieurs nodes sur le réseau, …)

De mon coté pas avancé (toujours pris par des développements sur Picaxe au boulot) mais j'ai commandé et reçu le matos pour faire les tests, me manque plus que le temps (je sais tu es plus pressé que moi). Je te tiens au courant
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

salut et merci de ta réponse !! je vais voir tout cela ... je sens surtout qu'il va falloir que je manipule pour comprendre "un peu plus" smiley-wink  ahhh le temps de la chataigne quand on touche le fil rouge est bien loin !  lol
Logged

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3448
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
si j'ai bien compris tu risques d'avoir un peu de longueur de câble entre le capteur et l'Arduino et là tu prends des risques d'avoir pas mal de fausses lectures
Il est toujours possible de mettre un petit condensateur à l'entrée de l'arduino pour filtrer les perturbations captées par la ligne.
Logged

France S-O
Offline Offline
Edison Member
*
Karma: 41
Posts: 2190
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Quote
Quote
si j'ai bien compris tu risques d'avoir un peu de longueur de câble entre le capteur et l'Arduino et là tu prends des risques d'avoir pas mal de fausses lectures
Il est toujours possible de mettre un petit condensateur à l'entrée de l'arduino pour filtrer les perturbations captées par la ligne.

Regardons et comprenons ce qui se passe : les oscillations dont je parle ne sont pas des rebonds mécaniques mais électriques.
Des fils longs présentent une inductance non négligeable contrairement aux liaisons courtes qui ne dépassent pas quelques cm.
Il y a des capacités aux deux extrémités des fils, soit que l'on a placé pour masquer les rebonds mécaniques, soit tout simplement parce qu'elles sont présentes aux entrées du micro-controleur.

On ne va pas faire de calculs inutiles et compliqués il suffit de se rappeler des choses simples :
- une inductance avec un condensateur forment un circuit du 2nd ordre.
- ce circuit peut présenter des sur-oscillations si le facteur d'amortissement est de faible valeur.
- une résistance en série avec les fils augmente très rapidement le facteur d'amortissement.

L'impédance des entrées analogique est très grande >100 millions d'ohms.
Les résistances câblées avec les boutons poussoirs sont de l'ordre de 5k à 50k ohms selon la configuration.

Avec une résistance de 100 ohms en série avec les fils on est sur d'amortir suffisamment le circuit RLC sans risquer de créer un diviseur potentiométrique.

Ci dessous en rouge un circuit non amorti et en noir le même circuit avec une résistance en série.


* path2987.png (8.89 KB, 300x233 - viewed 7 times.)
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

merci !!
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bon j'ai commencé a testé.
pas concluant. ou plus exactement j'ai deux problèmes.

1) si le garage est fermée, donc aucun des deux inter n'est ouvert donc aucun courant dans les résistances en // = l'arduino s'affole il analyse n'importe quoi comme valeur dans l'analogread (normal selon la doc). Du coup comment faire pour contourner le problème (rajouter une troisieme resistance en // en direct pour quelle soit passante ?).

2) porte du garage ouverte, ben cela consomme... étrange non ? smiley-wink  que puis-je faire pour réduire au maximum l'intensité (donc la consommation edf lol) adin de pouvoir continuer a tester les différents états ? 
En fait cette question est plus générale et concerne la globalité de mon projet afin de réduire la consommation générale des sensors "switch" (j'ai une alimentation en découpage conçu spécialement pour mes différents niveau de puissance -fait par mon oncle je vous rassure !).


merci de votre aide.
Logged

France S-O
Offline Offline
Edison Member
*
Karma: 41
Posts: 2190
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tu as fais ton installation sans faire de schéma ?

Si tu nous le communiquait cela serait plus facile pour comprendre.
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3607
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

1) il faut mettre des résistances de pull up ou de pull down (comme y'a pas de schéma je suppose ...)
2) librairie sleep.h et interruptions
Logged


Pages: [1] 2   Go Up
Jump to: