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".
microcontroller
voltage
input
pins
Christian
la source
la source
Réponses:
Utilisez un circuit comme celui-ci:
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.
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.
la source
J'essaierais une solution de diviseur de résistance comme indiqué ci-dessous.
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.
la source
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.
la source
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:
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.
la source
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.
la source
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:
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
la source
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.
la source
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.
la source
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.
la source
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.
la source