IC che tirerebbe l'uscita a terra, forse NON gate?


8

Ho una scheda con quattro relè. Ha pin Vcc, Gnd e In1-In4 standard. Voglio controllarlo con Arduino o nel mio caso un ESP32. Tuttavia, ho notato che quando il pin di uscita sul mio controller è ALTO, non succede nulla quando è tirato BASSO, il relè si impegna.

Questo è un problema quando la scheda viene ripristinata a causa di tutti gli interruttori a relè che si impegnano fino a quando non è qualcosa che desidero. Dopo alcuni scavi, ho fatto questo:

Semplice inverter

Funziona come desiderato, ci sono sempre 5 V sul relè e il relè viene sempre disattivato. Quando invio un segnale alla base del Q1, esso tira l'uscita a terra e il relè si innesta.

In questo momento ho quattro di questi relè e presto ne avrò di più. Quindi, vorrei risolverlo con un IC. In particolare, stavo guardando l'IC7404 che è un gruppo di porte NOT, tuttavia, non sono sicuro che questo risolverà il mio problema.

Quindi, c'è un IC che tirerebbe l'uscita a terra quando il segnale è presente sull'ingresso? 7404 funzionerà e non vedo qualcosa? :)

Modifica: questo è il modulo relè che sto usando . Non sono riuscito a trovare alcuna scheda tecnica utile su di esso.


1
Benvenuti in EE.SE. Ho intenzione di andare avanti e darti un +1 per il tuo schema. Probabilmente è risolvibile con un inverter, ma per rispondere che abbiamo bisogno di conoscere i requisiti di potenza in uscita. Sai quanto carico hai?
Winny

1
Potrebbe essere necessario aggiungere un diodo polarizzato inverso dall'uscita a 5 V se si utilizza un relè. Diodo flyback googling o diodo a ruota libera forniranno ulteriori informazioni
Colin

1
Fornire un collegamento al foglio dati per i relè. Dobbiamo sapere quanta corrente richiedono. Un 7404 probabilmente non sarà in grado di assorbire abbastanza corrente.
Elliot Alderson,

Cosa intendi con segnale presente? È un alto voltaggio + 5v sul nodo "input" e cos'è "segnale non presente", 0V o sconosciuto / disconnesso?
R.Joshi,

Non è chiaro il motivo per cui i relè siano attivi al ripristino, poiché normalmente i pin sono in uno stato di alta impedenza a meno che non si scelga involontariamente i pin di strapping in modalità o quelli coinvolti in un bootloader.
Chris Stratton,

Risposte:


2

Il fatto che i relè si stiano attivando al ripristino quando i pin devono essere in modalità ad alta impedenza è preoccupante e qualcosa che è necessario comprendere appieno per convalidare il sistema e risolverlo.

Modifica: ora che è chiaro che si tratta di un bug del software nel codice, per risolvere l'unità inavvertitamente bassa durante l'avvio, configurare il bit del registro dei dati di output del pin su alto prima di impostare il pin come output.

Detto questo, una risposta letterale alla tua domanda originale sarebbe un chip contenente diversi open collector inverters.

Il 74xx05 è un esempio.

Il 74xx06 è simile ma consente di applicare una tensione accettabile all'uscita anche quando questa supera la tensione di alimentazione, ad esempio è possibile azionare la parte su 3,3 V ma abbassare le uscite da 5 V.

Ma questi non sono la soluzione al tuo vero problema.


Avevi ragione, ho dovuto controllare le mie procedure di avvio. Di solito imposto tutti i parametri I / O e inizializzo tutto, quindi mi occupo dello stato predefinito dei pin. Quando si imposta il pin come pin di uscita, passa automaticamente nello stato LOW. Sembra che ci sia stato abbastanza tempo tra pinMode () e il primo digitalWrite () che ha impostato il pin su uno stato ALTO, impedendo al relè di impegnarsi. Quindi la mia soluzione è ora chiamare pinMode () e quindi impostare immediatamente il pin su ALTO.
BigWhale

Impostalo su alto prima di renderlo un output, non dopo.
Chris Stratton,

Hai un driver per la bobina del relè, sì? Aggiungi resistori di pullup ai loro ingressi, da fare con esso.
CrossRoads

1
Le resistenze pull-up di @CrossRoads non risolveranno il problema né miglioreranno minimamente le cose. Il problema è che il software di Asker sta facendo le cose nell'ordine sbagliato, abbassando il pin prima che lo spinga in alto. L'errore di guida basso supererebbe la resistenza di pull-up. Inoltre, questi sono probabilmente i catodi dei LED degli accoppiatori ottici: un pull-up in realtà non farà nulla lì, ciò che è necessario non è erroneamente completare un percorso verso terra.
Chris Stratton,

I pullup manterrebbero i pin alti mentre il dispositivo passa attraverso il processo di reset / avvio e i pin sono mobili.
CrossRoads

0

La soluzione più semplice è scambiare le connessioni dei pin NO e NC del relè.

L'opzione successiva è di invertire la logica di programmazione per quel pin. Puoi aggiungere alcune costanti

#define RELAY_ON LOW
#define RELAY_OFF HIGH

Per polarizzare i relè in un determinato stato durante il ripristino (mentre il pin di uscita è ad alta impedenza) è possibile aggiungere una resistenza pull-up o pull-down secondo necessità. Il pin IO sovraccaricherà facilmente la corrente trapelata attraverso il resistore e commuterà comunque correttamente il relè.

Utilizzando queste 2 tecniche è possibile selezionare lo stato predefinito del relè come stato non alimentato. O perché è quello usato la maggior parte del tempo o perché è l'opzione fail-safe.


Penso che tu abbia perso il punto. L'OP non vuole che i relè siano attivati al ripristino .
Elliot Alderson,

0

Ecco un "Manuale utente" per il tuo relè. Non dovresti mai progettare un sistema senza prima avere tutti i fogli dati.

Dallo schema fornito lì si può vedere chiaramente che è possibile semplicemente collegare il controller direttamente ai pin InX. Cioè, nessuno degli schemi che hai escogitato è necessario.

Poiché l'ingresso degli accoppiatori ottici è in grado di operare in modalità open collector , ti suggerirei di mantenere i pin corrispondenti del tuo uC come input / High-Z quando vuoi mantenere i relè su NC.

Dal momento che non ho familiarità con il tuo controller, ecco alcuni pseudo-codice per aiutarti:

Inizializzazione, per ciascun pin che controlla un relè:

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

Relè di comando su NO:

Set direction to output

Relè di comando su NC:

Set direction to input

Di solito un uC si riattiva con i suoi pin già come input, quindi la prima riga dell'inizializzazione è ridondante, ma è sempre più sicuro eseguirla per assicurarsi che il sistema sia in uno stato noto. Assicurati di non avere un codice che esegua un init generale di tutti i pin su alcuni valori come parte di un codice di targa della caldaia, i principianti sono noti per fare questo errore.

PS Per il momento in cui avrai effettivamente bisogno di un driver invertito, usa qualcosa come un ULN2003A !


3
"un ULN" non fa parte. Mostra il numero di parte effettivo, non nasconderlo nel link
Chris Stratton,

Questa è l'unica parte di quella serie che abbia mai usato, quindi è sempre stato "solo un ULN" per me.
Equilibrio
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.