Entrée 12V sur la broche du microcontrôleur


8

J'essaie de compter les impulsions / sec. sur une broche de microcontrôleur dans la plage de ~ 5 à 100 Hz. Le µC peut fonctionner à une entrée de 5 V, je dois donc abaisser le niveau de tension en toute sécurité.

Une simple résistance vient à l'esprit, mais qui laisse les surtensions ouvertes directement sur le µC pin- meh .

Je suis tombé sur cette réponse, mais la question reste de savoir si ce circuit est capable de changements "rapides" à 100 Hz.

Existe-t-il un moyen éprouvé et fiable (au moyen d'un CI peut-être?) De contacter des broches 5V ou 3,3V à des entrées 12V "sales" ? J'ai les 12V et 5V disponibles pour piloter n'importe quel circuit intégré "prêt à l'emploi".


2
diviseur résistif + zener / diodes de serrage?
Wesley Lee

2
Est-ce vraiment une question à laquelle une simple recherche Google ne peut pas répondre?
Ale..chenski

16
On peut y répondre, mais j'aimerais beaucoup une réponse de qualité avant de détruire mon équipement par ma propre stupidité. Mettons-nous sur la «tranquillité d'esprit»?
Christian

8
@AliChen stackexchange vise à être un référentiel canonique de questions et réponses. Même des questions simples peuvent être utiles si elles recueillent des réponses utiles.
Wayne Conrad

2
100Hz n'est pas rapide.
user253751

Réponses:


13

Utilisez un circuit comme celui-ci:

schématique

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

R1 et R2 déterminent la plage de tension et effectuent la division initiale. Ces résistances doivent être capables d'une certaine puissance. Typique est MELF 0.4W. Tous les autres peuvent être des résistances à puce / condensateur.

R3 empêche toute surtension de nuire au déclencheur schmitt. R4 et R5 sont facultatifs pour empêcher tout signal flottant.
Cependant, la combinaison R3 / R4 peut également être utilisée pour ajuster le seuil, si nécessaire.

C1 et C2 déterminent la vitesse maximale. La combinaison R3 / C2 peut filtrer lentement. C1 filtre les transitoires.

Un déclencheur schmitt séparé est utilisé car vous pouvez les obtenir vraiment petits et bon marché. Et cela empêche l'acheminement d'un signal faible sur de longues traces. Tout en étant également une partie sacrificielle sur les surtensions majeures.

J'ai conçu ce circuit en fonction de ce que j'ai vu à l'intérieur des API. Le circuit ci-dessus est pour 24V. Ajustez les résistances pour qu'elles correspondent à 12V selon CEI61131-2.

iec 61131-2
Le concept de la norme est de s'assurer que l'entrée doit absorber une quantité minimale de courant avant de la considérer comme un «1». Les trois types spécifient la quantité et sont appliqués en fonction du bruit ambiant. Cela empêche les pépins de le toucher ou des relais à proximité. L'inconvénient est que R1 / 2 doit avoir une puissance nominale décente et une faible résistance.


Sensationnel. Une réponse très approfondie à ce qui semblait initialement une question simple. Je vous remercie.
Christian

Je suis vraiment curieux de connaître R4 et R5 - quand feront-ils quelque chose d'utile? R2 + R3> R4 de toute façon. Est-ce au cas où l'un des composants "lourds" tomberait en panne?
pipe

@pipe R3 et R4 peuvent aider à configurer le seuil, tout en fournissant un chemin à haute impédance à la logique. La R5 est superflue la plupart du temps, mais dans la conception utilisée, le menu déroulant du MCU ne pouvait pas être utilisé. Si, pour une raison quelconque, le tampon échouait, l'entrée mcu ne lirait pas le bourdonnement de 50 Hz. (Remarque: fiable a été demandé)
Jeroen3

17

J'essaierais une solution de diviseur de résistance comme indiqué ci-dessous.

entrez la description de l'image ici

Sélectionnez le rapport de résistance de sorte que la tension divisée soit au niveau approprié pour le MCU lorsque l'entrée est à sa tension nominale. La tension de la diode zener est sélectionnée pour bloquer l'entrée MCU lorsque l'entrée dépasse l'entrée max. Le zener protégera également le MCU si l'entrée devient négative.

Cette solution fonctionnera très bien pour la plage de fréquences relativement basses que vous avez spécifiée.


1
Pourquoi choisir Zener pour être 4v7? Le 5v2 (5v1?) Serait-il une meilleure solution?
R.Joshi

7
@ R.Joshi: Si le microcontrôleur 5V est alimenté par une alimentation tolérante à 10% (4,5-5,5V VDD), alors appliquer 5,2V sur la broche pourrait être plus que le VDD typique + 0,3V absolu max. La logique élevée est reconnue à 2V pour TTL et 2/3 * VDD pour CMOS, donc pas de problème avec un zener 4V7.
Hans

2
Je souhaite vraiment pouvoir marquer deux réponses comme "choisies". Votre chemin est le chemin à parcourir tous les jours, mais la réponse de Jeroen est juste un peu plus approfondie. Merci cependant d'avoir pris le temps de répondre.
Christian

8

J'utiliserais un diviseur de résistance et protégerais ensuite l'UC avec un Zener 5.1v

Si vous placez le zener entre la broche et la masse en parallèle avec, par exemple, une résistance de retrait de 10k, puis alimentez votre signal divisé en tension, alors ... le zener est plus que suffisamment rapide et bon marché / facile.

Je fais souvent cela et divise le signal avant le bit zener avec un pot.

L'autre option est aussi liée, si vous craignez vraiment qu'un opto puisse être utilisé, si ce n'est pas un problème de sécurité, j'irais avec ce qui précède ou j'aurais la broche normalement haute de 5V Vcc et je la tirerais bas avec un fet (du haut de ma tête) 2N7000 devrait fonctionner) - mais c'est moins simple que l'option zener.


7

Si les niveaux de signal sont GND et 12V (ou> 5V), le moyen le plus simple et le plus sûr à 100% est le suivant:

schématique

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

Si cela sert vraiment votre objectif, cela dépend de l'impédance réelle du signal 12V (devrait être bien en dessous de R1) et de ce que vous entendez par «sale».

De plus, comme @MichaelKaras le souligne correctement, le niveau bas sur l'entrée du µC peut être décalé jusqu'au niveau bas du signal 12V plus Vf de la diode (jusqu'à environ 0,7V). Vous devriez vérifier si c'est un problème dans votre cas ou non. Si c'est le cas, vous pouvez toujours essayer d'utiliser une diode Schottky avec un Vf d'environ 0,35V.


Sur la plupart des µC, on pourrait même laisser tomber la résistance et activer le pullup interne pour cette broche.
Janka

La solution de diode proposée ici n'est pas toujours la meilleure ou la solution optimale. La tension d'entrée de bas niveau présentée au MCU va être supérieure à GND d'une chute de tension directe de diode plus la tension de sortie de bas niveau qui crée le signal 0 à 12V. Cela peut être particulièrement un problème où les signaux peuvent porter du bruit et l'entrée MCU est spécifiée avec des niveaux de tension de type TTL pour V <sub> IL </sub>. Souvent, cette spécification n'est que de 0,8 V. Donc, si cette solution est utilisée, méfiez-vous et au moins spécifiquement une diode à faible chute de tension directe comme une BAT54.
Michael Karas

@MichaelKaras Vous avez raison sur le décalage du niveau bas par le Vf de la diode; cela doit être pris en compte. Pour moi, pour un 5V µC, V [IL] de 0,8V semble exceptionnellement bas. Il semble que je trouve généralement 0,3 Vcc (~ 1,5 V) spécifié.
JimmyB

Si votre MCU a une spécification de type CMOS pour V <sub> IL </sub>, alors cela fonctionne peut-être bien. J'aime toujours concevoir de manière à fonctionner même si la spécification était bien inférieure à cela juste pour gagner autant de marge opérationnelle que possible. Même la différence de spécifier une diode à faible chute est un bon pas vers cela si vous choisissez d'utiliser ce type de circuit. Votre circuit n'est pas particulièrement bon pour les cas où il peut y avoir des excursions négatives sur l'entrée 12V.
Michael Karas

Je suis d'accord. Concevoir pour la marge est une bonne chose. Et des tensions négatives sur le signal 12V peuvent en effet provoquer des dégâts sur le circuit.
JimmyB

5

J'utiliserais un opto-isolateur, 100 Hz est facilement à la portée de tout décent. Le 4n25 me vient à l'esprit en tant que numéro de pièce commun, et je sais qu'il est capable de bien mieux que 100 Hz.


Le problème avec l'utilisation d'un isolateur opto pour résoudre ce problème est qu'il suppose que vous pouvez tirer du courant du signal 12V. Vous pouvez mettre en mémoire tampon le signal 12V, mais cela nécessiterait alors une alimentation supplémentaire.
Jason Morgan

Je suis sûr que vous pouvez obtenir une opto qui serait efficace à presque le même courant qu'une entrée micro, à partir de 12v, cela ne mettra pas beaucoup de charge pour allumer une petite LED.
John U

1
Une fuite d'entrée numérique se situe généralement entre 10 nA et 1 uA (en fonction de la température et du processus). Je n'ai jamais rencontré un coupleur opto qui fonctionne même à 1uA. Un optocoupleur typique, commercialisé en faible consommation, par exemple Broadcom ACPL-x6xL, nécessite 1,6 mA. C'est entre 1600 et 160000 fois plus de courant. Mais alors, comme je l'indique dans ma réponse, cela dépend des exigences de ce qui fonctionnera, donc je ne rejette pas une solution opto.
Jason Morgan


2

La méthode choisie dépend en partie de ce que fait le signal d'entrée, de son comportement et de la manière dont cela pourrait affecter le circuit d'entrée et le code qui le lit.

Par exemple, est-ce toujours 12V? At-il des pointes ou du bruit? Combien de courant peut-il conduire? Le courant peut-il y être entraîné? La prise de courant en affectera-t-elle autre chose? Est-ce essentiel pour la sécurité? ....

Pour cette raison, il ne peut jamais y avoir de réponse universelle à cette question car la solution «correcte» dépend de ce que fait le reste du système. La solution choisie qui répond aux exigences aura un coût et une complexité différents.

Cela dit, comme personne ne l'a encore suggéré, je vais opter pour une entrée FET.

Un JFET ou MOSFET peut être utilisé et il peut s'agir de modes source ou drain communs. Par exemple, drain commun:

schématique

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

L'avantage du mode drain commun est qu'il permet de connecter l'entrée à la fois à une broche analogique (par exemple ADC) ou numérique. Si le signal est vraiment numérique, j'activerais le déclencheur schmitt sur l'entrée CPU (s'il en a un), ou ajouter un tampon schmitt externe à la broche d'entrée du CPU.

Les avantages

  • Impédance d'entrée très élevée
  • Entrée partiellement isolée (peut supporter +/- 30 V, selon la sélection du FET)
  • Analogique possible
  • Effet minimal sur le signal externe

1

schématique

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

Figure 1. Interface opto-isolée. Utilisez le pull-up interne sur GPIO.

Un opto-isolateur résout plusieurs problèmes.

  • Isolation électrique complète entre le circuit 12 V et la logique 5 V.
  • Gère le signal 12 V sale sans risque.
  • Simplicité.

1

schématique

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

R1, R2 et C1 forment un diviseur de tension avec un filtre passe-bas de 1 kHz. Tout signal haute fréquence indésirable voyageant sur le 12V peut être filtré. Le calcul de la fréquence du filtre est de 1 / (2 pi R2 C1). Remarque: La base nécessite au moins 0,7 V pour fonctionner correctement, faites attention lors du réglage de la résistance.

Le BJT est utilisé car il est très courant par rapport au mosfet. Dans le cas où le 12V est toujours actif mais que le 5V pour votre uC est en baisse, le BJT ne passera pas de courant dans la broche et causera des dommages.

Pour la programmation uC, utilisez un déclencheur haut à bas pour compter votre pouls. Comme ce circuit inversera l'impulsion.


-2

En général, les entrées MCU sont déjà protégées par des diodes à pince, tant que vous avez une résistance avec une valeur optimisée (suffisamment élevée pour les pinces et suffisamment basse pour l'échantillonnage) et une bonne capacité de dérivation entre VDD et VSS, vous n'avez pas s'en inquiéter. Donc, juste une résistance suffit.

edit: Merci au commentaire de PeterJ, je veux l'expliquer un peu plus loin. Le moins d'énergie consommée par le MCU (en supposant qu'il ne dort pas), la capacité de dérivation, la valeur de la résistance; lorsque tous ces éléments sont au point de compromis - ce qui est facilement le cas très général avec seulement la condition utilisant une résistance d'environ 10 kOhm - la seule résistance convient pour la simple application de l'OP.


4
Un problème que j'ai trouvé avec cela il y a de nombreuses années est que même s'il ne peut pas endommager quoi que ce soit, le Vcc peut dériver un peu (jusqu'à ce que la diode conduise) et, selon le microcontrôleur, peut jeter des choses comme les lectures ADC.
PeterJ

@PeterJ Cela fonctionne bien si vous pouvez garantir qu'au moins une telle quantité de courant est coupée de l'alimentation. Dans le pire des cas, ajoutez une résistance factice…
CL.

Bien que «méchant», j'ai vu cela se faire sur beaucoup de biens de consommation bon marché. J'ai réparé un réveil une fois où le secteur a été alimenté dans une entrée numérique via une résistance de 10M comme référence de synchronisation. Sans surprise, la puce était morte.
Jason Morgan

-5

Vous pouvez opter pour un régulateur de tension LM7805 / LM7803 pour 5V et 3,3V respectivement.Je suppose que l'UC est isolé d'une charge exigeante en courant, le cas échéant.


1
C'est créatif. Mais vous fonctionnerez hors spécifications à haute vitesse. Si c'était tout ce que vous aviez, peut-être.
Jeroen3
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.