Go Down

Topic: Comportement curieux sur Arduino (Read 535 times) previous topic - next topic

icare21

Bonjour à tous

Je me permets de poster un message ici pour avoir des éclairages sur un comportement que je trouve insolite.
En effet, j'ai acheté un Arduino dans l'optique de comprendre son fonctionnement, je suis actuellement les cours d'Openclassroom sur cette carte. Cependant le fruit de mes expérience ne se passe pas toujours comme prévu et je m'interroge sur la cause de ces erreurs (peut être est-ce moi...).

J'ai réussi à isoler un comportement insolite et j'aurai voulu avoir des éclairages de spécialiste pour me donner des explications.

Mon expérience était la suivante : installer un bouton poussoir.
Un montage très basique avec 2 résistances (220 ohms) mais rien chez moi ne se passe correctement.

J'utilise le code suivant :

Code: [Select]
int ledpin=3;
int bouton=4;
void setup(){
 pinMode(ledpin,OUTPUT);
 pinMode(bouton,INPUT);
}

void loop(){
 int val=digitalRead(bouton);
 
 if(val==HIGH){
  digitalWrite(ledpin,HIGH);
 } else {
   digitalWrite(ledpin,LOW);
 }
}


Le montage est le suivant :



Le phénomène curieux est que la Led s'allume avant même que je n'appuie sur le bouton.... Il suffit juste que j'approche mon doigt de l'installation pour que la LED s'allume ! Je vous sens perplexe alors voici une vidéo

https://youtu.be/2_D8zcrmRlQ

J'ai même retiré le bouton poussoir du montage et le comportement est le même...

https://youtu.be/lGDKXexyIVY

Vous remarquerez que j'ai conservé le fil jaune, c'est apparemment lorsque je m'approche de celui-ci que la diode s'allume.
J'avoue que du coup, je ne comprends rien à la logique des montages que je fais, certains fonctionnent, d'autres non, certains ont un fameux comportement "erratique"...
Pouvez vous m'expliquer ce que j'ai fait de travers ou ce qui provoque ce phénomène ?
Je vous remercie

kamill

Bonjour,

Il manque le pullup ou le pull down ou il est mal connecté.

jeanfranlec

#2
Aug 30, 2017, 01:58 pm Last Edit: Aug 30, 2017, 02:01 pm by jeanfranlec Reason: Faute de frappe
Bonjour;

Je complète le message de Kamill (gloire à lui d'avoir trouvé en premier  :smiley-confuse: )

1/ La R sur le BP ne sert à rien, la remplacer par un fil
2/ l'entrée BP doit être "pinMode(bouton,INPUT_PULLUP)" ... sans le pullup tu fais une antenne.

Et à partir de cela, il faut considérer que l'entrée BP esT ACTIVE par un niveau BAS (LOW ou 0).

Ensuite ça devrait aller je pense.

_pepe_

#3
Aug 30, 2017, 02:29 pm Last Edit: Aug 30, 2017, 06:36 pm by _pepe_
Bonjour

La résistance accompagnant le bouton poussoir est a priori une résistance de rappel. Les montages attendus sont donc :
• soit un rappel au niveau haut (pull up), qui fournit un niveau haut quand le contact du bouton est ouvert et un niveau bas quand il est fermé (à droite) ;
• soit un rappel au niveau bas (pull down), qui fournit un niveau bas quand le contact du bouton est ouvert et un niveau haut quand il est fermé (à gauche).



Dans les deux cas, l'entrée logique est connectée entre le bouton et la résistance, ceux-ci étant par ailleurs connectés respectivement à VCC (5V) et GND, ou inversement.

Or, cela ne semble pas être le cas sur ton montage, qui n'est pas relié à VCC et sur lequel aucune connexion ne part de la liaison entre le bouton et la résistance.


Ou alors tu utilises la résistance de rappel au niveau haut intégrée au micro-contrôleur, comme indiqué par jeanfranlec, auquel cas ta résistance externe ne sert à rien.

_pepe_

#4
Aug 30, 2017, 04:08 pm Last Edit: Aug 30, 2017, 09:35 pm by _pepe_
Concernant le comportement observé, il faut savoir que les entrées logiques CMOS comme celles de l'ATmega présentent une très grande impédance. Elles sont par conséquent très sensibles à la présence de charges électriques environnantes quand elles ne sont pas connectées à une source de tension à basse impédance (typiquement une sortie logique, VCC ou GND).

Par un effet de polarisation, le déplacement d'une masse chargée électriquement à proximité immédiate d'une entrée non connectée peut faire varier le potentiel électrique de celle-ci, et donc éventuellement modifier le niveau logique qu'elle retourne :



Il en va de même avec les surfaces conductrices dont le potentiel par rapport à l'alimentation du circuit logique est variable. On peut alors clairement faire un parallèle avec le circuit capacitif équivalent :




En principe, afin de ne pas perturber les circuits internes ni augmenter leur consommation par des changement de niveaux intempestifs, les entrées inutilisées des circuits logiques ne devraient jamais rester « en l'air », mais devraient être systématiquement reliées à VCC ou à GND.

icare21

Merci _pepe_ pour avoir répondu à ma question !

Et merci aux autres pour avoir corrigé mon montage !

Bonne soirée :)

Go Up