Deux contact en serie

Bonjour, j’ai une question qui n’a pas de solution mais je vais la poser quand même . On sais jamais .

vous prenez 2 contacts à fermeture que vous mettez en série . Le branchement est standard, soit un fil à une entrée pourquoi pas 13 et l’autre à la masse .

En résumé: pin 13 >bouton 1> bouton 2> GND

La problématique c’est que les 2 contacts se situe sur un pièce en mouvement rotatif et passe à travers un collecteur tournant* ou seul deux fils reste disponible .
Le changer pourquoi pas mais il est pas petit , petit , C’est embettant .

La question la voila : existe t’il un moyen pour que l’arduino fasse la différence entre l’un et l’autre contact ?

*un collecteurs tournant est un organe qui permet de créer une connexion électrique entre une partie fixe (stator) et, une partie tournante (rotor) avec l’aide de charbon comme on trouve vulgairement sur certain moteur .

Bonsoir

Un bon dessin permettrait de préciser les choses et éviter de partir sur une erreur d'interprétation de l'énoncé. Une photo peut aussi aider.
Bien montrer les pièces en rotation et la localisation des contacts sur celles-ci

La question la voila : existe t'il un moyen pour que l'arduino fasse la différence entre l'un et l'autre contact ?

si j'ai bien compris pour que la pin 13, en supposant qu'elle est mise en INPUT_PULLUP, voit un LOW (appui) c'est que les 2 contacts sont appuyés simultanément, sinon il n'y a pas de connectivité... donc que cherchez vous vraiment à savoir, il n'y aura aucune info quand un seul est appuyé... ?

Tu peux modifier tes boutons?

Ils sont en serie. Donc en ouverture quand t'appuie dessus ?

Si oui aux deux questions tu met une résistance de 10 k sur le +5v puis entree mesure a1 par exemple puis

sur le premier Bp en parallèle aux contact u e résistance de 10k , sur le 2ème une résistance de 100k par exemple et la masse et tu mesure la résistance du circuit
Si elle est de +-10k les 2 bp sont fermés (contacts etablis)
Entre 10 et 20 k le 1er bp est appuyé (circuit ouvert)
Entre 100 et 110 k le 2eme est appuyé
Au dessus de 120 k les 2 sont ouverts.

Les résistances sont a adapter et a calculer

J'en profite pour glisser un lien fort intéressant relatant du sujet

https://modelleisenbahn.triskell.org/spip.php?article59

Arzou:
Tu peux modifier tes boutons?

==> vous lui proposez de les mettre en parallèle là...

J-M-L:
==> vous lui proposez de les mettre en parallèle là...

Non, moi c'est en serie.... +5v,==> r10ko, ==>A1, ==>bp1 et en //r10ko, ==> bp2 en // r100ko ==>gnd

ah OK

Si j'ai bien compris votre fil qui part en A1 ou le 5V va se faire enrouler :slight_smile:

En numérique je ne vois pas comment.
En analogique c'est possible.

Le niveau de sortie dépendra du contact appuyé.
Cela te donnera 4 possibilité différentes
cap_2020_03_17_18_43_15.png
Conseil :
Ne te prend pas la tête avec des formules toutes faites surtout avec ce cas de figure
Fixe une valeur de courant dans le pont : par exemple 1 mA
Fixe une valeur de tension un contact appuyé par exemple celui du haut S1 => V sortie = U1
La valeur de la résistance sera définie par U= RI soit dans le bon sens R1 =U/I = 0,001U1
On peut calculer R3 = (Vcc-U1)/1mA

Pour le calcul de R2 maintenant R3 est fixée donc on ne peut plus pratiquer de la même façon et là on va prendre la fameuse formule U2 = Vcc*(R2/(R2+R3))

Qui en développant et en regroupant comme il faut devient :
R2 = R3 * U2/(Vcc-U2)

En résumé :
R1 = Ipont * U1

R3 = (Vcc-U1) / Ipont

R2 = R3 * U2/(Vcc-U2)

Exemple Vcc = 5V I pont = 1 mA U1 = 3V U2 = 1V
R1 = 3k
R3 = 2k
R2 = 750 ohms

Note les condensateurs en parallèle sur les contacts sont un anti-rebond matériel. Ils font 100nF chacun.

cap_2020_03_17_18_43_15.png

Ben non,

5v r10ko,

on rentre dans le système tournant par un contact puis
Les 2 bp modifiés

On ressort par l'autre contact vers la masse ..

68 Ttjs, c'est exactement le même schéma...

Oui mais le mien est plus beau.

Et je détaille les calculs

Nananère :grin:

En numérique je ne vois pas comment.

Il y a 4 états à différencier. En analogique, une seule entrée suffit. En numérique, il faut donc 2 entrées. Avec une seule entrée, c'est plus compliqué.

On peut par exemple faire:
2boutons.gif

On utilise deux entrées A et B numériques.
Pour lire l'état du bouton de gauche, on met A à 0V (output) et B en input+pullup, Si le bouton A est ouvert, le courant ne passe pas (diode de gauche en inverse) et on a un 1 logique si le bouton A est fermé, le courant passe par la diode de droite (ou par le bouton de droite, aucune importance), et on a un état bas.
Pour lire l'autre bouton, on inverse les mots A et B ainsi que les mots droite et gauche.

Pour les diodes on prend ce qu'on veut, j'aurais une préférence pour les diodes "signal" genre 1N4148, mais une diode 1A (1N400X) convient aussi.

2boutons.gif

on spécule mais ce serait bien que @FLY007 explique un peu plus ses contraintes de rotation et de connexion...

68tjs:
Oui mais le mien est plus beau.

Et je détaille les calculs

Nananère :grin:

:slight_smile:

olivier_pecheux:
Il y a 4 états à différencier. En analogique, une seule entrée suffit. En numérique, il faut donc 2 entrées. Avec une seule entrée, c'est plus compliqué.

On peut par exemple faire:
2boutons.gif

On utilise deux entrées A et B numériques.
Pour lire l'état du bouton de gauche, on met A à 0V (output) et B en input+pullup, Si le bouton A est ouvert, le courant ne passe pas (diode de gauche en inverse) et on a un 1 logique si le bouton A est fermé, le courant passe par la diode de droite (ou par le bouton de droite, aucune importance), et on a un état bas.
Pour lire l'autre bouton, on inverse les mots A et B ainsi que les mots droite et gauche.

Pour les diodes on prend ce qu'on veut, j'aurais une préférence pour les diodes "signal" genre 1N4148, mais une diode 1A (1N400X) convient aussi.

On peu modifier l'affectation des pin en cours de programme ?

Oui si tu installes un bras robot qui débranche les fils de la pin A et B et les rebranches sur d'autres.

2boutons.gif

On utilise deux entrées A et B numériques.

Pour lire l'état du bouton de gauche, on met A à 0V (output) et B en input+pullup, Si le bouton A est ouvert, le courant ne passe pas (diode de gauche en inverse) et on a un 1 logique si le bouton A est fermé, le courant passe par la diode de droite (ou par le bouton de droite, aucune importance), et on a un état bas.

Pour lire l'état du bouton de droite, on met B à 0V (output) et A en input+pullup, Si le bouton B est ouvert, le courant ne passe pas (diode de gauche en inverse) et on a un 1 logique si le bouton B est fermé, le courant passe par la diode de gauche (ou par le bouton de gauche, aucune importance), et on a un état bas.

Il faut inverser les mots, pas les fils!

On peu modifier l'affectation des pin en cours de programme?

Bien sûr cela permet entre autre d'avoir des broches bidirectionnelle pour dialoguer. Je m'en sert pour lire les coordonnés d'un touchPad résistif...

Pour lire le bouton de gauche:
pinMode(B, INPUT_PULLUP);
pinMode(A, OUTPUT);
digitalWrite(A, LOW);
valeur=digitalRead(B);

Merci pour vos nombreuse réponses ,mais je me suis mal expliqué . Une petites erreur qui fait que c'est pas possible de me répondre en fait. La journée a démarré tôt . Je vais tenté de mieux m'expliquer . Prendre une photo dans l'état ne facilitera pas l'explication .

C'est tout simple de toute façon . C'est un rail linéaire avec un chariot qui coulisse de gauche à droite avec 2 fin de course en parallèle qui coupe le moteur pas a pas quand le chariot est en buté . Oui en parallèle . Elle est la mon erreur d'explication . Certain l'on compris . Désolé .

Dans tous les cas je n'ai que 6 fils parce le rail linéaire tourne sur 360* et pour l’alimenter, je passe par le collecteur tournant . Soit 4 fil pour le moteur et deux pour les fins de course qui stoppe le moteur .
L'idée , parce que je me rend mieux compte des possibilité de l'arduino, étant d'améliorer le système et plutôt que d’arrêter le chariot a chaque fois qu'il rencontre un fin de course en buté est de le faire repartir dans un sens ou d'un autre en fonction du fin de course détecté .

Mais pour cela je me demandais si il y avais une solution pour que l'arduino reconnaisse sur quelle fin de course il bute .
Les fin de course se change .Mais le collecteur tournant avec un axe central creux de 100 mm c'est plus compliqué .
Voila pourquoi ma question : l'arduino peut t'il reconnaître avec deux fil quel est le contact qui s'enclenche pour faire repartir le moteur dans la bonne direction !!

Merci pour vos nombreuse réponses ,mais je me suis mal expliqué . Une petites erreur qui fait que c'est pas possible de me répondre en fait. La journée a démarré tôt . Je vais tenté de mieux m'expliquer . Prendre une photo dans l'état ne facilitera pas l'explication .

C'est tout simple de toute façon . C'est un rail linéaire avec un chariot qui coulisse de gauche à droite avec 2 fin de course en parallèle qui coupe le moteur pas a pas quand le chariot est en buté . Oui en parallèle . Elle est la mon erreur d'explication . Certain l'on compris . Désolé .

Dans tous les cas je n'ai que 6 fils parce le rail linéaire tourne sur 360* et pour l’alimenter, je passe par le collecteur tournant . Soit 4 fil pour le moteur et deux pour les fins de course qui stoppe le moteur .
L'idée , parce que je me rend mieux compte des possibilité de l'arduino, étant d'améliorer le système et plutôt que d’arrêter le chariot a chaque fois qu'il rencontre un fin de course en buté est de le faire repartir dans un sens ou d'un autre en fonction du fin de course détecté .

Mais pour cela je me demandais si il y avais une solution pour que l'arduino reconnaisse sur quelle fin de course il bute .
Les fin de course se change .Mais le collecteur tournant avec un axe central creux de 100 mm c'est plus compliqué .
Voila pourquoi ma question : l'arduino peut t'il reconnaître avec deux fil quel est le contact qui s'enclenche pour faire repartir le moteur dans la bonne direction !!