Mise en mémoire tampon d'un signal de microcontrôleur numérique pour la connexion à un optocoupleur


8

Je travaille fréquemment sur des projets dans lesquels j'utilise des optocoupleurs pour isoler les signaux de commande numériques + 5VDC (par exemple, d'un microcontrôleur) du reste du circuit. Cependant, puisque ceux-ci fonctionnent en éclairant une LED à l'intérieur de l'appareil, il peut y avoir plusieurs dizaines de milliampères de charge sur les broches du microcontrôleur. Je recherche des conseils sur la meilleure pratique de mise en mémoire tampon de ce signal de commande avec un étage supplémentaire, afin que le microcontrôleur détecte efficacement une impédance élevée, et donc de réduire le courant qu'il doit fournir?

entrez la description de l'image ici

Juste naïvement du haut de ma tête, je peux penser à quelques choses qui pourraient fonctionner:

1) Utilisez simplement un ampli op comme amplificateur tampon à gain unitaire.

2) Utilisez une puce de comparateur dédiée pour comparer le signal d'entrée avec, par exemple, + 2,5VDC.

3) Utilisez un MOSFET comme une sorte d'amplificateur de signal.

Cependant, après avoir lu un peu, j'ai rencontré tout un tas de puces que je n'avais jamais utilisées auparavant, mais qui semblent pouvoir être conçues pour ce genre de chose. Par exemple:

  • Un pilote de ligne différentielle ( MC3487 )
  • Un récepteur de ligne différentielle (DC90C032)
  • Un émetteur-récepteur de ligne (SN65MLVD040)
  • Portes et pilotes tampons (SN74LS07, SN74ABT126)

Je n'ai vraiment aucune expérience avec ces derniers et je suis un peu dépassé par la quantité de choses disponibles! Alors, quelqu'un peut-il m'aider à apprendre les différences entre ces appareils, et lesquels d'entre eux seraient / ne seraient pas appropriés dans ce cas. Existe-t-il un moyen meilleur / standard de réaliser ce que je décris?

edit:
Étant donné que je pourrais passer à environ x30 sorties, je ne veux pas me soucier du tout du chargement des microcontrôleurs, et je ne vais donc pas envisager de me connecter directement aux broches DIO. Par conséquent, je pense que je vais opter pour un IC de tampon logique. Je vais essayer d'utiliser le SN74LVC1G125 " Single Buffer Gate With 3-State Output " pour chaque entrée, et voir comment cela fonctionne.


Pour une solution à composant unique, MOSFET à canal P.
Reinderien

Sur une note connexe, les broches du microcontrôleur peuvent généralement absorber plus de courant qu'elles ne peuvent en générer. Voir cette question .
Nick Alexeev

Réponses:


12

Vous avez plusieurs options.

  1. Si vous avez besoin de connecter très peu d'optocoupleurs, vous pouvez les connecter directement au GPIO de votre microcontrôleur (via une résistance), à ​​condition que:

    • Vous ne dépassez pas le courant de sortie GPIO.
    • Vous ne dépassez pas le courant total du port.
    • Vous ne dépassez pas le courant gnd / vdd total.
  2. Si vous devez connecter plusieurs optocoupleurs, vous pouvez essayer d'utiliser des optocoupleurs à faible courant et à fort taux de transfert tels que SFH618 ( https://www.vishay.com/docs/83673/sfh618a.pdf ) et les connecter directement à vos GPIO (via une résistance).

  3. Ou, vous pouvez utiliser un BJT ou un MOSFET (voir les schémas ci-dessous). Quelques notes:

    • N'oubliez pas de mettre la résistance pull-down / pull-up, ce qui garantit que le MOSFET / BJT est désactivé lorsque le GPIO n'est pas encore initialisé (par exemple pendant la réinitialisation).
    • La résistance pull-up ou down peut être omise si votre MCU a une broche GPIO avec pull-up / down toujours activé pendant la réinitialisation.
    • Si vous utilisez des MOSFET, n'oubliez pas d'utiliser des MOSFET de niveau logique (par exemple BSS138).
    • Si vous utilisez la solution active-basse, assurez-vous que la tension de haut niveau du GPIO est VDD. Par exemple, n'utilisez pas de 3,3 V-GPIO et VDD = 5 V dans la solution basse active! .
  4. Néanmoins, si vous devez piloter de nombreux optocoupleurs (par exemple 6), vous pouvez utiliser le 74LS07 que vous avez mentionné, car il autorise une charge de 40 mA par broche, et vous ne devrez monter qu'un seul composant (au lieu de 6 BJT / MOSFET). N'oubliez pas que, contrairement au CMOS, les circuits intégrés TTL sont tirés de manière intrinsèque! Cependant, vous pouvez toujours vouloir la résistance de rappel (la fiche technique recommande également de ne pas laisser les entrées flottantes). Et, comme '07 n'est pas inversant, cette solution sera active LOW. Le 74ABT126 est CMOS donc vous DEVEZ utiliser de toute façon la résistance de pull-up!

schématique

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


1
Peut également utiliser des abonnés émetteurs / sources
Russell McMahon

+1. Cela peut être utilisé pour les rendre actifs haut, à condition que le GPIO soit alimenté avec le même VDD (comme dans la configuration active basse (avec PNP)). Cependant, je n'utiliserais pas de MOSFET alors, car ils ont tendance à avoir un grand Vth (et une grande dispersion de celui-ci, ce qui pourrait avoir un impact sur le calcul du courant mené). Cela peut être un problème si vous avez un GPIO 2.5V ou 3.3V (vous avez besoinVTH+VOV+VLED+ILEDR. Si cette valeur est trop proche de VDD, alors la baisse sur R sera faible, et la dépendance du courant sur Vth sera donc élevée).
Next-hack

11

Un BJT simple comme MMBT3904 ou tout BJT de commutation fera l'affaire. Vous pouvez obtenir une bobine de 100 pour deux dollars.

entrez la description de l'image ici


9

Les pilotes de ligne différentielle ne sont pas conçus pour piloter des LED. Ces puces tampons pilotent (ou reçoivent) un signal différentiel sur deux fils. L'oscillation de tension peut être de 1,3 volts à 1,7 volts. Pas assez pour allumer ou éteindre une LED.

Les tampons TTL sont idéaux pour cette application, mais plutôt que de se connecter au côté haut de la LED comme indiqué dans votre schéma, ils doivent être connectés au côté bas de la LED, car TTL est bon pour le courant de descente et mauvais pour le courant de source.

Cependant, si vous n'avez que quelques optocoupleurs à connecter, un NPN BJT est un moyen encore plus simple de piloter la LED.


4

Je recommande pour la sortie de niveau logique d'utiliser le H11L1 qui a un pilote de porte logique CMOS Schmitt et fonctionne avec un minimum de 1,4mA ~ $ 1 (10) 3 ~ 16V

Pour les collecteurs ouverts à faible coût, classés avec une large gamme de gain actuel de 80% à 300% minimum http://www.taiwansemi.com/products/datasheet/TPC816%20SERIES_B1612.pdf

Cela signifie que si vous n'avez besoin que de niveaux logiques ou de 1 mA, cela représente au moins 80% de ce que votre lecteur avec, ce qui ne charge pas beaucoup le processeur.

Alors cherchez ce qui compte. des milliers de choix coût vs performance.

Pour plus de vitesse, le courant aide mais certains périphériques $ commutent en ns d'autres en nous.

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.