HELP - Bouton Poussoir et condensateur

Bonjour aux gens qui regardent ce topic :wink: .

Mon problème en quelques mots :

Noël dernier j'ai eu la chance de recevoir une de ces petites bebêtes, Arduino UNO .
Je me suis donc empressé de suivre des tutoriels, j'ai d'ailleurs choisis celui d'Eskimon, qui est très complet.

Je suis donc arrivé à la partie tant attendu portant sur les Bouton Poussoirs . Là est mon problème, j'ai beau me creusé la tête chercher comme pas possible, mais je n'arrive pas à comprendre comment je suis censé le brancher (J'utilise le Pull-Up interne de ma carte ) avec son Condensateur.
Je recherche donc la gentille personne qui résoudra mon problème :grin: !

Sur ce, bonne journée !

Bonjour,
J'ai une idée sur ton problème en utilisant ma boule de cristal qui revient de réparation :slight_smile:
Il faut que soit plus clair dans l'exposé de ton problème.
Ton problème est d'autre matériel ou logiciel ?
Il faut mettre ton schéma (même à main levée) et ton soft.Pour l'insertion du code, il faut utiliser les balises "code" (petit icône parchemin avec le signe plus).
@+

Salut icare :wink: .

Sans vouloir être agressif, je ne pense pas que tu as réellement lu mon Post.

Mon seul problème est "Comment brancher un bouton et un condensateur sur une breadboard ?" .

Je n'ai donc aucun intérêt à poster mon Code et un schéma de mon circuit (Puisque je n'en n'ai pas encore :astonished:).

Bonjour,
Je te rassure j'ai bien lu ton post mais comme tu poses une question dont la réponse est dans la documentation d'Eskimon donc il faut être précis pour que l'on te comprenne.
Pour brancher un BP tu n'as que 2 possibilités, à savoir une pin du BP sur l'entrée Arduino et la deuxième pin au +5V ou au GND.
Dans la meure, où tu utilises la résistance de pullup (encore faut-il la déclarer dans le soft), il ne te reste plus que la solution deuxième pin au GND.
Comme tu es dès plus vague, le condensateur tu le mets ou tu veux sur ton breadboard. Si tu es un softeux tu n'as pas besoin du condensateur.
Mais toujours dans le flou de ta question, je suppose que le condensateur sert à éliminer les phénomènes de rebonds mécaniques de ton BP. Dans ce cas tu mets le condensateur en parallèle avec les pins du BP.

Quelle valeur prévois-tu pour ce condensateur?

NB: le pullup interne de la carte n'a pas besoin de condensateur, il s'en fou de cette "bête"

pepe:
[NB: d'un point de vue matériel, les entrées de l'Arduino ne présentent pas d'hystérésis.]

Avant d'affirmer il faut lire les datasheets AtMega = hystérésis de 400 mV voir en pj.

pepe:
Sans résistance en série avec le bouton-poussoir, le contact subit une usure accélérée du fait du courant de court-circuit du condensateur.

Sempiternel débat entre la théorie dans ce qu'elle a de plus rigide et la réalité.
La charge d'un condensateur de 100 nF sous 5 V n'est pas énorme Q= CU = 0,5 µC (C est le symbole du Coulomb). Les condensateurs ne sont pas parfaits ils ont tous une petite résistance et inductance série donc le courant est très vite limité.
Avec ce qui vient d'être dit à moins de l'actionner plusieurs centaines de milliers de fois je ne vois vraiment pas le boutons poussoir se détruire. Donc la résistance en série avec le condensateur est inutile.

Mais quitte à ajouter une résistance autant qu'elle soit utile, je la placerais dans la liaison avec l'arduino. Ce sera utile en cas de grandes longueur de fils.
Parce qu'il n'y a pas que les rebonds mécaniques il y a aussi aussi les électriques. En cas de grande longueur de fils il y aura de l'inductance et de la capa. Si le coefficient d'amortissement du réseau RLC pour rejoindre l'entrée de l'arduino est inférieur à 0,707 il y aura des sur-oscillations qui pourront avoir les même conséquences qu'un rebond mécanique. Donc une centaine d'ohms en série dans la liaison avec l'arduino ne peut pas faire de mal.

Quant au trigger de schmitt désolé mais il ne sert pas à grand chose, il suffit de regarder les schémas électriques de toutes les cartes pour voir qu'il n'y en a jamais.
Quitte à proposer une solution où il faut ajouter de l'électronique autant conseiller d'utiliser un bouton inverseur au lieu d'un bouton poussoir simple et d'ajouter une bascule RS là c'est la parade absolue.

Je vous remercie pour toutes ses réponses ! :stuck_out_tongue:

Désoler icare, je pensais être assez clair ...

Si j'ai bien compris, j'ai juste à brancher mon bouton sur le 5v et le Gnd ? (tout en activant le pull-up interne dans mon code :grin: )

Re,

Nostra:
Si j'ai bien compris, j'ai juste à brancher mon bouton sur le 5v et le Gnd ? (tout en activant le pull-up interne dans mon code :grin: )

Si tu mais ton BP entre le 5V et le GND = Boom (un court-circuit)
Il faut mettre le BP entre l'entrée Arduino et le GND.
Tu vois la précision a ses bons côtés :wink:

Ok, ok, ok .

icare:
Re,Si tu mais ton BP entre le 5V et le GND = Boom (un court-circuit)
Il faut mettre le BP entre l'entrée Arduino et le GND.
Tu vois la précision a ses bons côtés :wink:

D'abord, l'entrée Arduino ? Je comprend pas ce que tu veux dire, tu parles d'un des ports 1, 2, 3, 4, etc ?

Et donc, je veux garder le matos moi :grin:, je mets un condensateur mais en parallèle c'est à dire ?

Re,

Nostra:
D'abord, l'entrée Arduino ? Je comprend pas ce que tu veux dire, tu parles d'un des ports 1, 2, 3, 4, etc ?

Oui

Nostra:
Et donc, je veux garder le matos moi :grin:, je mets un condensateur mais en parallèle c'est à dire ?

Oui
et tu peux relire le post de pepe

Le message est parti sans les pj parce qu'elles n'avaient pas la bonne extension les voici.

Le schéma de l'anti rebond était pour quelqu'un qui voulait connecter l'interrupteur au Vcc.
Dans une utilisation classique il suffit de remplacer Vcc par Gnd et vice versa.
On peut alors remplacer la résistance de 10 k par une pull-up interne.
Pour info les pull-up font entre 20 k et 50 k ohms selon le lot de fabrication.

Tant qu'on était dans les niveaux électriques et comme la maison ne recule devant aucun sacrifice j'ai joins une courbe de l'évolution du niveau de sortie en fonction du courant.

Pour ceux qui continuent à confondre les Absolute Rating et le fonctionnement normal les courbes parlent d'elle même.

Pour I= 20 mA (I max en fonctionnement normal donné par Atmel) on n'a plus que 4,4/4,48 V au lieu de 5V. C'est dû Rdson des transistors de sortie qui ne sont pas des MosFET de puissance, donc adieu les 0,1 ohms et vive les dizaines d'ohms.

Attention les courbes ne sont pas linéaires : plus I augmente plus cela se dégrade !
Donc à 40 mA il ne faut pas s'attendre à avoir plus 3,2 V / 3,5 V au lieu de 5V .
C'est peut-être une solution pour délivrer des signaux 3,3 V :grin: , bon les fronts doivent en prendre un coup mais on ne peut pas tout avoir.

Anti_rebond.png

anti_rebond_RS_nand.png

L'anti-rebond logiciel est une bonne alternative au condensateur ?

Le code que tu m'as mis, j'ai juste à l'intégrer dans mon programme et ensuite c'est bon ?

L'anti-rebond logiciel est une bonne alternative au condensateur ?

Cela dépend comment tu procède.
Le condensateur élimine le défaut à la source et l'empèche de se propager.
L'anti rebond logiciel cache la poussière sous le tapis.

Si vraiment tu as peur de te salir les mains avec un condensateur choisi le logiciel et complique inutilement ton code.

Je n'ai pas peur de me salir les mains, je n'ai juste absolument pas compris ce que veut dire brancher le condensateur en parallèle.( Et sur quels ports je le branche ?)

Re,

Nostra:
Je n'ai pas peur de me salir les mains, je n'ai juste absolument pas compris ce que veut dire brancher le condensateur en parallèle.( Et sur quels ports je le branche ?)

Il faut mettre le condo (100 nF) en parallèle sur le 2 broches du BP.

Le vieux sage a dit :
La vie n'est pas numérique elle est analogique.

Le vieux sage rentre dans son tipi.

Est ce que tu peux arrêter de TOUJOURS vouloir avoir raison ?
De toujours critiquer les solutions des autres, quels qu'ils soient, et d'imposer les tiennes ?

Vu ce j'ai écrit n'importe qui aurait compris qu'il était temps de clore le débat, mais non tu veux toujours que le dernier post soit le tien.
C'est vraiment pénible.

Si comme à l'habitude tu veux encore avoir le dernier mot, saches que j'ai dit ce que j'avais à dire et que je répondrai pas par respect pour l'auteur de la question.

Bonjour,
Vive la bataille Planck (Max) De Broglie (Louis), pour savoir savoir si c'est continu ou quantifié.
:grin: :sunglasses: :disappointed_relieved:

Re-Bonjour mes sauveurs.

Désoler de mon absence mais j'aimerai refaire un résumé de ce que j'ai compris pour être sur et ne pas gaffer :).

Je branche mon bouton sur un port entre 2 et 10, et sur le Gnd. Et ensuite je branche mon condensateur en paralèlle des broches du bouton. ( il n'est donc pas relier à la carte arduino. )

Y-a-t-il une broche à brancher en particulier sur le Gnd et inversement ? ( Sans compter le faites qu'elles sont reliés 2 à 2 ).

Bonne nuit :D.

Je crois avoir compris : ce que tu appelles port est une entrée/sortie ou I/O en anglais.
Dans un micro-contrôleur le mot PORT à une signification bien précise : c'est ce qui gère les I/O par groupe de 8 pour un micro 8 bits. Il est préférable de garder l'utilisation du mot PORT pour cette signification bien précise.

Donc je considère que tu parles des "pinuches" digitales D2 à D13. Oui c'est bon.
J'ajoute que les entrées A0 à A5 sont mixtes, selon qu'on écrive digitalRead( Ax) ou analogRead(Ax) la pinuche Ax sera gérée comme une I/O digitale ou analogique : c'est la magie des fonctions arduino qui se décarcassent pour toi (et pour les autres aussi :grin: ).

Le choix de la pin de masse pour un bouton poussoir est libre, choisi celui qui est le plus prêt de la pin signal utilisée pour éviter au maximum les fils volants. Torsade les fils (masse + signal) du bouton. Premièrement le cablage est plus propre, deuxièmement c'est mieux électriquement parlant.

Ok, merci de ton aide 68tjs :grin: !

A l'aide de ce que vous m'avez expliquer j'ai pu créer un circuit consistant à Allumer la LED quand le bouton est relaché et inversement.
Le seul "HIC" c'est qu'il ne marche pas :disappointed_relieved: .

Je mets ci-dessous le circuit et le code pour que quelqu'un trouve mon problème :confused:

const int unBouton = 2; //un bouton sur la broche 2
const int uneLED = 13; //une LED sur la broche 13
int etat;

void setup()
{
    //on met le bouton en entrée
    pinMode(unBouton, INPUT_PULLUP);
    //On définit la constante uneLED en tant que broche.
    pinMode(uneLED, OUTPUT);
    //on active la résistance de pull-up en mettant la broche à l'état haut (mais cela reste toujours une entrée)
    
}   

void loop()
{
  etat = digitalRead(unBouton);
    
    if(etat == HIGH)
    digitalWrite(uneLED, LOW);
    else
    digitalWrite(uneLED, HIGH);
    
}

Soyez indulgent, je débute :smiley: