IC qui tirerait la sortie vers le sol, peut-être PAS une porte?

8

J'ai une carte avec quatre relais dessus. Il possède des broches Vcc, Gnd et In1-In4 standard. Je veux le contrôler avec Arduino ou dans mon cas un ESP32. Cependant, j'ai remarqué que lorsque la broche de sortie de mon contrôleur est tirée HAUT, rien ne se passe quand elle est tirée BAS, le relais s'enclenchera.

C'est un problème lorsque la carte est réinitialisée car tous les commutateurs de relais s'engagent jusqu'à et ce n'est pas quelque chose que je veux. Après avoir creusé, j'ai fait ceci:

Onduleur simple

Cela fonctionne comme vous le souhaitez, il y a toujours 5 V sur le relais et le relais est désengagé tout le temps. Lorsque je transmets un signal à la base du Q1, il tire la sortie vers le sol et le relais s'enclenche.

En ce moment, j'ai quatre de ces relais et bientôt j'en aurai d'autres. Donc, je voudrais résoudre ce problème avec un IC. En particulier, je regardais l'IC7404 qui est un tas de portes NON, cependant, je ne suis pas sûr que cela résoudra mon problème.

Alors, y a-t-il un circuit intégré qui tirerait la sortie vers le sol lorsque le signal est présent sur l'entrée? Le 7404 fonctionnera-t-il et je ne vois rien? :)

Edit: c'est le module relais que j'utilise . Je n'ai pas pu y trouver de fiches techniques utiles.

BigWhale
la source
1
Bienvenue à EE.SE. Je vais aller de l'avant et vous donner un +1 pour votre schéma. Il est probablement résoluble avec un onduleur, mais pour répondre à cela, nous avons besoin de connaître vos besoins en puissance de sortie. Connaissez-vous la charge que vous avez?
winny
1
Vous voudrez peut-être ajouter une diode à polarisation inverse de la sortie à 5 V si vous utilisez un relais. La diode flyback de googling ou la diode de roue libre donneront plus d'informations
Colin
1
Veuillez fournir un lien vers la fiche technique des relais. Nous devons savoir la quantité de courant dont ils ont besoin. Un 7404 ne sera probablement pas en mesure de faire couler suffisamment de courant.
Elliot Alderson
Que voulez-vous dire par le signal est présent? S'agit-il d'une haute tension + 5v au nœud "d'entrée" et qu'est-ce que "signal absent", 0V ou inconnu / déconnecté?
R.Joshi
Il n'est pas clair pourquoi les relais seraient actifs à la réinitialisation, car normalement les broches sont dans un état de haute impédance, sauf si vous avez choisi de manière imprudente les broches de cerclage de mode ou celles impliquées dans un chargeur de démarrage.
Chris Stratton

Réponses:

2

Le fait que les relais s'activent à la réinitialisation alors que les broches doivent être en mode haute impédance est inquiétant, et c'est quelque chose que vous devez bien comprendre pour valider votre système et le réparer.

Edit: maintenant qu'il est clair qu'il s'agit d'un bogue logiciel dans votre code, pour résoudre le lecteur par inadvertance faible lors du démarrage, configurez le bit de registre de données de sortie de la broche sur haut avant de définir la broche comme sortie.

Cela dit, une réponse littérale à votre question d'origine serait une puce contenant plusieurs open collector inverters.

Le 74xx05 en est un exemple.

Le 74xx06 est similaire, mais permet d'appliquer une tension acceptable à la sortie même lorsque celle-ci dépasse la tension d'alimentation, par exemple, vous pouvez faire fonctionner la pièce sur 3,3 V, mais tirer les sorties de 5 V.

Mais ce ne sont pas la solution à votre problème réel .

Chris Stratton
la source
Vous aviez raison, j'ai dû vérifier mes procédures de démarrage. Je règle habituellement tous les paramètres d'E / S et initialise tout, puis je m'occupe de l'état par défaut des broches. Lorsque vous définissez la broche comme broche de sortie, elle passe automatiquement à l'état BAS. Il semble qu'il y ait eu suffisamment de temps entre pinMode () et le premier digitalWrite () pour régler la broche sur un état ÉLEVÉ, empêchant le relais de s'engager. Donc, ma solution consiste maintenant à appeler pinMode (), puis à définir immédiatement la broche sur HIGH.
BigWhale
Réglez-le sur haut avant d'en faire une sortie, pas après.
Chris Stratton
Vous avez un pilote pour la bobine de relais, oui? Ajoutez des résistances de pullup à leurs entrées, finissez-en.
CrossRoads
1
Les résistances pull-up @CrossRoads ne résoudront pas le problème et n'amélioreront pas du tout les choses. Le problème est que le logiciel du demandeur fait les choses dans le mauvais ordre, abaissant la broche avant de la pousser haut. La conduite erronée vers le bas surmonterait votre résistance de rappel. Et d'ailleurs, ce sont probablement les cathodes des LED optocoupleurs - un pull-up ne fera rien du tout, ce qui est nécessaire n'est pas de terminer par erreur un chemin vers la terre.
Chris Stratton
Les pullups maintiendraient les broches hautes pendant que l'appareil passe par le processus de réinitialisation / démarrage et que les broches flottent.
CrossRoads
0

La solution la plus simple consiste à permuter les connexions des broches NO et NC du relais.

L'option suivante consiste à inverser la logique de programmation pour cette broche. Vous pouvez ajouter quelques constantes

#define RELAY_ON LOW
#define RELAY_OFF HIGH

Pour polariser les relais dans un certain état lors de la réinitialisation (alors que la broche de sortie est à haute impédance), vous pouvez ajouter une résistance pull-up ou pull-down selon les besoins. La broche IO surpasse facilement le courant qui a fui à travers la résistance et commute toujours correctement le relais.

En utilisant ces 2 techniques, vous pouvez choisir l'état par défaut du relais comme étant l'état non alimenté. Soit parce que c'est celui qui est utilisé la plupart du temps, soit parce que c'est l'option de sécurité intégrée.

monstre à cliquet
la source
Je pense que vous n'avez pas saisi mon argument. L'OP ne souhaite pas que les relais soient activés lors de la réinitialisation .
Elliot Alderson
0

Voici un "Manuel d'utilisation" pour votre relais. Vous ne devriez vraiment jamais concevoir un système sans avoir au préalable toutes les fiches techniques.

À partir du schéma fourni, vous pouvez clairement voir que vous pouvez simplement connecter votre contrôleur directement aux broches InX. Autrement dit, aucun des schémas que vous avez conçus n'est nécessaire.

Étant donné que l'entrée des optocoupleurs est capable de fonctionner en mode collecteur ouvert , je vous suggère de ne conserver que les broches correspondantes de votre uC en tant qu'entrée / High-Z lorsque vous souhaitez conserver les relais à NC.

Comme je ne connais pas votre contrôleur, voici un pseudo-code pour vous aider:

Initialisation, pour chaque broche contrôlant un relais:

Set direction to input
Set level to "0" (do NOT change direction to output)

Relais de commande sur NO:

Set direction to output

Relais de commande de retour à NC:

Set direction to input

Habituellement, un uC se réveillera avec ses broches déjà en entrée, donc la première ligne de l'initialisation est redondante, mais il est toujours plus sûr de l'exécuter pour s'assurer que le système est dans un état connu. Assurez-vous que vous n'avez pas de code qui fait une initiation générale de toutes les broches à certaines valeurs dans le cadre d'un code de plaque de chaudière, les débutants sont connus pour faire cette erreur.

PS Pour le moment où vous aurez réellement besoin d'un pilote actuel inverseur, utilisez simplement quelque chose comme un ULN2003A !

Equilibrius
la source
3
"un ULN" ne fait pas partie. Afficher le numéro de pièce réel, ne le cachez pas dans le lien
Chris Stratton
C'est la seule partie de cette série que j'ai jamais utilisée, donc ça a toujours été "juste un ULN" pour moi.
Equilibrius