Comment utiliser une entrée 12 V sur une broche Arduino numérique?

38

Je crée un contrôleur pour un système 12 V utilisant un microcontroller Arduino Uno. Pour les sorties, j'utilise un blindage de relais pour commuter les composants 12 V. J'ai un commutateur à bascule 12 V qui active certains composants 12 V dans le système et je souhaite utiliser un signal de déclenchement de ce même commutateur pour l'envoyer à une entrée numérique Arduino. Je sais que l’Arduino ne peut supporter que 5 V max. Quel serait le meilleur moyen de réduire le 12 V sortant du commutateur au 5 V pour l'entrée?

EDIT: Le système est destiné à être utilisé dans une voiture. L'ampérage de la batterie de la voiture doit-il être réduit de manière à ne pas faire exploser les composants?

DW
la source
3
l'ampérage de la voiture n'a pas d'importance - les composants utilisent uniquement le courant dont ils ont besoin. La batterie de la voiture est capable de fournir des centaines d’ampères, comme celle nécessaire au démarreur. Cela ne signifie pas qu'il y a toujours des centaines d'ampères qui coulent et peuvent endommager des objets. :)
KyranF

Réponses:

44

Bonnes nouvelles! Ça va être pas cher! :-)

Un simple diviseur de résistance ramènera le 12 V à 5 V qu'un digestible Arduino peut digérer. La tension de sortie peut être calculée comme suit:

VOUT=R2R1+R2VjeN

Les valeurs de résistance dans la plage de 10 kΩ constituent un bon choix. Si votre R2 est de 10 kΩ, alors R1 devrait être de 14 kΩ. Maintenant, 14 kΩ n'est pas une valeur standard, mais 15 kΩ l'est. Votre tension d’entrée sera de 4,8 V au lieu de 5 V, mais l’Arduino le considérera toujours comme un niveau élevé. Vous avez également un peu de marge au cas où le 12 V serait trop élevé. Même 18 kΩ vous donneront toujours une tension suffisamment élevée de 4,3 V, mais vous devrez alors commencer à penser à la valeur de 12 V un peu trop basse. La tension sera-t-elle toujours considérée comme élevée? Je resterais avec le 15 kΩ.

modifier
Vous parlez d'un environnement automobile et vous avez besoin d'une protection supplémentaire. 12 V de la voiture ne sont jamais tout à fait 12 V, mais la plupart du temps plus élevés, avec des pics de plusieurs volts supérieurs à la valeur nominale de 12 V. (La valeur nominale correspond en réalité à 12,9 V, à 2,15 V par cellule.) Vous pouvez placer un zener de 5 V une diode en parallèle avec R2, ce qui devrait couper toute tension supérieure aux 5 V du zener. Mais une tension zener varie avec le courant et, lorsque le courant d’entrée est faible, les résistances vous permettent de le couper à des tensions plus basses. Une meilleure solution serait d'avoir une diode Schottky entre l'entrée de l'Arduino et l'alimentation 5 V. Ensuite, toute tension d'entrée supérieure à 5,2 V rendra la diode Schottky conductrice et la tension d'entrée sera limitée à 5,2 V. Vous avez vraiment besoin d'une diode Schottky pour cela, une diode PN commune a un 0.

Mieux
la optocoupleur de Michael est une bonne alternative, mais un peu plus cher. Vous allez souvent utiliser un optocoupleur pour isoler l'entrée de la sortie, mais vous pouvez également l'utiliser pour protéger une entrée comme vous le souhaitez ici.

entrez la description de l'image ici

Comment ça marche: le courant d'entrée allume la DEL infrarouge interne, ce qui provoque un courant de sortie à travers le phototransistor. Le rapport entre le courant d'entrée et le courant de sortie est appelé CTR , pour le rapport de transfert actuel. Le CNY17 a un CTR minimum de 40%, ce qui signifie que vous avez besoin d’une entrée 10 mA pour une sortie 4 mA. Allons pour l'entrée 10 mA. Alors, R1 devrait être (12 V - 1,5 V) / 10 mA = 1 kΩ. La résistance de sortie devra provoquer une chute de 5 V à 4 mA, puis être de 5 V / 4 mA = 1250 Ω. Il vaut mieux avoir une valeur un peu plus élevée, la tension ne chutera pas de plus de 5 V de toute façon. Une puissance de 4,7 kΩ limitera le courant à environ 1 mA.

Vcc est l'alimentation 5 V de l'Arduino, Vout va à l'entrée de l'Arduino. Notez que l'entrée sera inversée: elle sera basse si le 12 V est présent, haute si ce n'est pas le cas. Si vous ne le souhaitez pas, vous pouvez permuter la position de la sortie du coupleur optique et celle de la résistance de rappel.

edit 2
Comment la solution d'optocoupleur ne résout-elle pas le problème de surtension? Le diviseur de résistance est ratiométrique: la tension de sortie est un rapport fixe de l'entrée. Si vous avez calculé 5 V out à 12 V in, alors 24 V in donnera 10 V out. Pas OK, d'où la diode de protection.

Dans le circuit d'optocoupleur, vous pouvez voir que le côté droit, qui se connecte à la broche d'entrée de l'Arduino, n'a pas de tension supérieure à 5 V. Si l'optocoupleur est activé, le transistor consomme du courant, j'ai utilisé 4 mA dans l'exemple ci-dessus. Une tension de 1,2 kΩ provoquera une chute de tension de 4,8 V, due à la loi d'Ohm (résistance multipliée par le courant = tension). La tension de sortie sera alors de 5 V (Vcc) - 4,8 V de part et d'autre de la résistance = 0,2 V, ce qui correspond à un niveau bas. Si le courant est plus faible, la chute de tension sera également plus faible et la tension de sortie augmentera. Un courant de 1 mA, par exemple, provoquera une chute de 1,2 V et la sortie sera de 5 V - 1,2 V = 3,8 V. Le courant minimal est de zéro. Ensuite, vous n'avez pas de tension à travers la résistance, et la sortie sera de 5 V. C'est le maximum, il y a

Et si la tension d'entrée devenait trop élevée? Vous connectez accidentellement une batterie 24 V au lieu de 12 V. Le courant de la DEL double alors, il passe de 10 mA à 20 mA. Le CTR 40% générera un courant de sortie de 8 mA au lieu du 4 mA calculé. 8 mA à travers la résistance de 1,2 kΩ correspondrait à une chute de 9,6 V. Mais à partir d'une alimentation en 5 V, ce serait négatif et c'est impossible. vous ne pouvez pas descendre plus bas que 0 V ici. Ainsi, alors que l'optocoupleur aimerait beaucoup tirer 8 mA, la résistance limitera cela. Le courant maximal le traversant est égal à 5 ​​V au maximum. La sortie sera alors réellement à 0 V et le courant à 5 V / 1,2 kΩ = 4,2 mA. Ainsi, quelle que soit l'alimentation que vous connectez, le courant de sortie ne dépassera pas cette valeur et la tension restera comprise entre 0 V et 5 V. Aucune autre protection n'est requise.

Si vous vous attendez contre les surtensions , vous devrez vérifier si LED peut gérer l'augmentation du courant, mais le 20 mA du optocoupleur ne sera pas un problème pour la plupart des optocoupleurs (ils sont souvent évalués à 50 mA maximum), et d' ailleurs, qui est pour deux tension d'entrée, ce qui n'arrivera probablement pas IRL.

stevenvh
la source
Le système est destiné à être utilisé dans une voiture. L'ampérage de la batterie de la voiture doit-il être réduit de façon à ne pas faire sauter les composants? Je suis novice en la matière. Merci
DW
@DW Uh-oh, voiture! :-(. Je mettrai à jour ma réponse.
stevenvh
@DW - Non, la capacité de la batterie de voiture importe peu. Le courant sera déterminé par la tension (12 V) et la résistance (25 kohm au total). Ensuite, selon la loi d' Ohm, le courant sera de 12 V / 25 kohm = 0,5 mA. Peu importe que la batterie soit de type 40 Ah ou de 400 Ah; les résistances ne permettront plus.
Stévenvh
C'est génial. Merci de votre aide. Juste curieux mais est-ce que quelque chose comme ce travail fonctionnerait? robotshop.com/ca/productinfo.aspx?pc=RB-Spa-750&lang=en-US
DW
2
@stevenvh Merci Steve. J'ai hâte de revenir en faveur de quelqu'un qui est nouveau dans le secteur de l'électronique une fois que je suis confiant avec ce produit. Merci
DW
15

Un bon moyen d'isoler le signal du commutateur 12V serait de le faire passer par un opto-coupleur. Le circuit serait configuré comme suit.

entrez la description de l'image ici

Vi dans le diagramme représente le 12V de votre circuit qui est commuté par votre commutateur (S1). Sélectionnez R1 pour limiter le courant dans la partie D1 de l'optocoupleur à un niveau compris dans les valeurs nominales du composant que vous avez sélectionné.

Les coupleurs optiques ne sont pas les composants les plus rapides au monde, en particulier les moins chers, mais dans le cas d'une action lente comme un commutateur à commande humaine, la vitesse du coupleur ne pose pas de problème.

Michael Karas
la source
15

Vous pouvez également utiliser une diode et une résistance, comme suit:

schématique

simuler ce circuit - Schéma créé à l'aide de CircuitLab

Je ferais de la résistance quelque chose d'assez rigide, sinon vous perdriez beaucoup de puissance de ce circuit. La beauté de ce circuit (par rapport au diviseur de tension) est qu’il n’importe pas que votre tension d’origine soit de 12V, 14V ou 15V: ce sera 5V (en réalité 5,2-5,3V selon la diode), peu importe la la tension d'entrée.

angelatlarge
la source
c'est assez intelligent, +1 pour l'indépendance en tension!
Florian Castellane
5
Attention à la valeur maximale absolue de surtension sur broche. Par exemple, la fiche technique ATmega32u4: Tension sur toute broche par rapport à la masse (8): -0,5V à VCC + 0,5V. Si vous utilisez une diode ordinaire, la tension sera supérieure à VCC + 0,5 V si vous utilisez une résistance inférieure à 170 kOhm. Je pense que les diodes Schottky sont les plus sûres pour cela.
cyberponk
13

Pour l’indépendance de la tension, utilisez une résistance pour réguler le courant et un Zener pour réguler la tension, comme ceci:

schématique

simuler ce circuit - Schéma créé à l'aide de CircuitLab

Avec une résistance de 30k, cela produira 4,99V et utilisera environ 234uA @ 12Vin.
Dans ce cas:
R1 consomme 234uA x (12V - 4,99V) = 1,64mW
D1 consomme 234uA x 4,99V = 1,17mW

Consommation électrique totale: 2,81 mW (lorsque l'entrée est élevée)

cyberponk
la source
Pour tout ce qui est visible, j'utiliserais le diviseur LED + résistance en série pour donner un signal de 5 V à 12 V et placer la diode Zener en parallèle avec la moitié inférieure du diviseur et une DEL pour se protéger contre les surtensions. De cette façon, la LED s’allume lorsque vous avez un signal d’entrée et vous donne un retour visuel.
Goswin von Brederlow
@GoswinvonBrederlow pouvez-vous s'il vous plaît dessiner la sortie circuit / diode / résistance?
Sizzle
Dans le schéma ci-dessus, définissez R1 à 770 Ohm et ajoutez 330 Ohms et une LED rouge en parallèle à la diode Zener. Ensuite, à l'entrée 12V, environ 9 mA traverseront la LED et vous obtiendrez un signal de sortie 5V. Si la tension d'entrée augmente bien que la diode Zener limite le signal de sortie à 5.1V et protège à la fois l'arduino et la LED.
Goswin von Brederlow le
-2

Un peu tard mais dans ma voiture j'utilise le LM7805. Fonctionne très bien et n'est pas cher.

Ton Nies
la source
1
Pas aussi bon marché que 2 résistances ou une résistance et une diode.
Dave Tweed
7
@TonNies Vous avez mal compris la question. OP n'est pas à la recherche d'une tension d'alimentation pour son contrôleur. C'est plus sur le conditionnement du signal.
Ariser
1
Rien de mal à utiliser le LM7805 pour le changement de niveau des signaux 12v.
Chugadie
1
@chugadie: Mais une approche d'overkill très peu commune et relativement "coûteuse" si tout ce que vous voulez, c'est de mettre 12V en veille pour une broche IO.
Rev1.0