Arduino alimenté par les ports Analogiques ?!

Bonjour à tous,

Oui, le sujet du topic peut sembler étrange...Pourtant, j'ai beau tester et re-tester...C'est à m'arracher les quelques cheveux qui me restent sur la tête :smiley:

J'ai réalisé le test sur plusieurs nano de mon stock, ils font tous la même chose.
Carte non alimentée sur les VIN/5V, Si j'applique une tension sur les Analog Input (A0,A1,...), la carte se trouve alimentée comme si j'avais appliqué une tension sur le Vin (ou le 5V)...!

La tension appliqué sur les entrées analogiques va de =~ 1.5v à 4.8V et provient d'un amplificateur en amont (qui amplifie un signal analogique provenant d'un capteur).

Est-ce normal ? :o

Est-ce normal ?

OUI parce que tu fais quelque chose d'anormal !

Comme toujours la solution est dans la datasheet :

Tous les circuits intégrés ont des diodes de protection sur les accès.
Pourquoi ?
Parce que nous humain sommes des générateurs d'électricité statique qui peut atteindre des valeurs insoupçonnées : plusieurs centaines, voire plusieurs milliers de volts.
Nous générons cette électricité sous des courants ridiculement faible ce qui fait que nous ne sentons rien mais les entrées des circuits intégrés par contre n'apprécient pas du tout.

Les accés sont donc protégés par deux diodes polarisées en inverse ce qui les rends invisibles en fonctionnement NORMAL.

Mais quand on fait des choses anormales comme appliquer 5 V sur une entrée d'un CI non alimenté la diode supérieure se retrouve polarisée en direct, donc passante, et c'est elle qui alimente le CI.
Au passage tu peut remarquer le coté logique des valeurs limites qu' Atmel indique : il ne faut pas dépasser Vcc + 0,5V sur une entrée : le seuil de conduction d'une diode est de 0,7V, donc à 0,5V on peut considérer que la diode est encore bloquée.

Anormal oui et non...Dans mon cas concret, disons que oui c'est normal...Le capteur est distant et envoi une tension. Il se peut que le boitier central (équipé de l'arduino) ne soit pas alimenté (panne de batterie ou que sais-je).
La grande question est, pour le coup, comment faire pour empêcher cette tension provenant d'un capteur d'alimenter l'arduino ?
Si vous avez une idée...je suis preneur :slight_smile:

Un transistor alimenté par ton arduino, en cas de coupure sur celui ci, le transistor se bloque.

Anormal oui et non.

C'est une utilisation anormale , aucun circuit n'est prévu pour fonctionner dans cette situation, point il n'y a pas à discuter.

Si dans ton utilisation ce cas peut se produire c'est à toi de prendre les précautions qui s'imposent pour empêcher cette situation.

  1. La première chose à faire est de lister sur le papier tous les différents cas qui peuvent se produire.
  2. La deuxième chose à faire est de réfléchir pour trouver une solution pour en éviter le maximum : il vaut mieux prévenir que guérir.
  3. La troisième chose à faire est de trouver une protection pour les cas qu'il n'est pas possible d'éviter .

AMHA tant que le (1) n'est pas fait il n'est pas possible d'avancer.

Le courant descend les potentiels, une tension est une différence de potentiels donc oui c'est "normal " que la carte s'allume d'un point de vue physique.

J'ai finalement testé et approuvé une solution "logique".
J'ai mis un transistor NPN (2N3904) sur l'entrée analogique. la base est reliée à la source d'alimentation "normale". Si il n'y pas d'alimentation, le transistor ne laisse pas passer le courant provenant du capteur distant.

Merci à tous pour vos explications et surtout à jambe pour sa soluce :wink:

+1
Pour du digital tout ou rien oui mais là il ne faut pas oublier qu'un transistor n'est pas stable en température : c'est cette dépendance qui est exploitée pour faire des thermomètres !

Et j'insiste : ce point ne concerne pas QUE les entrées dites analogiques.

TOUS LES ACCÈS SONT CONCERNES

Les capteurs sont "calibrés" par l'arduino avant chaque utilisation (récupération du min et du max provenant du capteur). Si il y'a dérive des valeurs selon la température ce n'est vraiment pas grave pour ce qui est de mon cas d'utilisation.

Ceci dit, si vous avez un moyen plus fiable de couper l'arrivé du courant sur une entrée analogique quand l'arduino n'est pas alimenté...Je suis toujours à l'écoute. Je veux bien entendre que la solution du transistor n'est pas parfaite, mais c'est la seule que j'ai trouvé pour le moment :wink:

Bonjour,

Une piste.

Si c'est possible, renvois le Vin ou +5v de l'Arduino à travers un résistance vers ton ampli, détectes sa présence sur le montage et coupe l'alim de celui-ci si la tension Arduino n'est pas présente.

Perso j'aurai vu la solution suivante :
En sortie du capteur un mux analogique genre 74HC4066.
C'est un circuit CMOS qui s'utilise en résistance variable : soit "infinie" soit égale à 35 ohms. Il n'y a pas de dérive de température (enfin a ce que je sache).
Ce modèle est courant et comporte 4 inverseurs.

J'alimenterai ce mux avec la même alim que celle du capteur mais je le commanderai à partir de la carte micro. Ce qui fait un fil de plus.

--------- vers entrée analogique
capteur --------\
--------- Masse ou en l'air ou chargé par une résistance

Je connecterai pour qu'en absence de commande (c'est à dire carte micro non alimentée) la sortie du capteur ne soit pas envoyée vers une entrée analogique
Pour la commande de l'inverseur du mux j'utiliserai le fil supplémentaire venant de la carte arduino : soit un simple 5V pris sur son alim, soit un signal venant d'une sortie numérique, ce qui donnerait plus de liberté.

Bonjour,
Un petit relais en boitier DIL, alimenté par la même source que l'arduino ferait le boulot...
Par exemple : http://www.selectronic.fr/relais-miniature-5v-2rt.html
Tous les détaillants en électronique en vendent.