Come invertire un segnale digitale


29

Ho bisogno di un modo per invertire un segnale digitale, ad esempio se l'ingresso è alto, voglio che l'uscita sia bassa e se l'ingresso è basso voglio che l'uscita sia alta.

Penso che questo possa essere realizzato con un singolo transistor PNP, ma volevo verificarlo qui. Le tensioni con cui ho a che fare sono inferiori a 5 V.


Trattamento dettagliato di un inverter BJT: EE 307 Sezione 2 Progetto MoHAT - "Lo scopo di questa pagina è di guidare coloro che sono interessati alle operazioni fondamentali di un inverter BJT."
Peter Mortensen,

Risposte:


34

Oppure, dal momento che stai parlando di segnali digitali, usi comunque un inverter .

inserisci qui la descrizione dell'immagine

Aè l'ingresso (per cancelli con più ingressi che saranno A, B, C, ecc), Yè l'uscita. Se non complica troppo lo schema, posiziona il simbolo con l'ingresso a sinistra.

NXP ha inverter a gate singolo . Solo quattro connessioni: alimentazione, terra, input e output.

Tuttavia, può essere fatto con un transistor e due resistori. È uno schema semplice, ma devi ancora fare alcuni semplici calcoli. Avrai esattamente le stesse connessioni dell'inverter.
A proposito, un PNP è un'opzione, ma più spesso verrà utilizzato un NPN.

modifica (ri il tuo commento)

inserisci qui la descrizione dell'immagine

Se il segnale di ingresso è alto, fluirà corrente attraverso R2 e la giunzione emettitore di base del transistor (base, non gate). Questa corrente verrà amplificata e la corrente del collettore attraverso R1 provocherà una caduta di tensione in modo che l'uscita sia bassa. Ingresso alto, uscita basso.
Se il segnale di ingresso è basso non ci sarà alcuna corrente di base e nessuna corrente di collettore. Nessuna corrente attraverso R1 significa nessuna caduta di tensione, quindi l'uscita sarà a + V. Ingresso basso, uscita alto.

Questo porta già un po 'oltre, ma come ho detto in commento per sandun l'output è altamente asimmetrico. Se l'uscita è collegata a un condensatore un livello di uscita elevato significherebbe che il condensatore viene caricato attraverso R1, il che comporterà una pendenza esponenziale con una costante di tempo R1C. Quando l'uscita si abbassa, il condensatore verrà scaricato attraverso una resistenza molto più bassa e la pendenza sarà molto più ripida. Non otterrai questa differenza con le porte CMOS, che hanno capacità simmetriche sorgente / sink.

Anche l'ingresso della versione a transistor assorbirà (una piccola) corrente quando è alto. La versione CMOS avrà una piccola corrente di dispersione sia quando è alta che bassa.

Nel complesso, il gate logico integrato è il vincitore.


Potrei certamente essere confuso qui, ma un NPN si accende quando viene fornita alimentazione al gate e un PNP si spegne quando viene fornita alimentazione. Ha senso usare un NPN per l'amplificazione del segnale, ma non causerebbe l'inversione del segnale. Pensieri?
Matt Ruwe,

2
I gate sono per MOSFET, non per BJT. I NFET si attivano e i PFET si disattivano. Ma devi assicurarti che la fonte sia collegata correttamente. Un NPN e un PNP sono BJT e richiedono un po 'più di matematica per assicurarsi che funzionino correttamente
ajs410,

quando si tratta di NXP hai una stanza di libertà molto piccola. Ci sono vincoli come tempismo, fan-in, fan-out, margini di rumore in ingresso, glitch ecc. In tal caso è più che semplice usare un transistor. Solo perché non sei bloccato da quei vincoli.
Standard Sandun,

@Matt - ha modificato la mia risposta.
Stevenvh,

1
@sandundhammika, Se costruisci il tuo, hai ancora dei limiti su fan-out e margine di rumore (il fan-in non si applica qui). Ma devi calcolare tu stesso quali sono questi limiti. Se si utilizza il cancello standard, è sufficiente leggere il foglio dati per scoprirlo. Inoltre, è probabile che il consumo di energia (un altro vincolo di sistema tipico) sia molto migliore per il gate standard.
Il fotone

24

Sì, questo può essere realizzato con un singolo transistor e resistore, ma ci sono chip appositamente progettati per invertire i segnali digitali. Stranamente, si chiamano inverter . Dai un'occhiata al 74HC04, per esempio. Ciò offre sei inverter separati in un unico pacchetto a 14 pin. Esistono anche singoli inverter (e altre porte logiche di piccole dimensioni) disponibili in piccoli pacchetti SOT-23, ovvero lo stesso pacchetto in cui entrano i singoli transistor.

Ci sono pochi motivi per provare a creare il tuo inverter, ma sì, è possibile.

Aggiunto in risposta al commento:

Come ho detto, un singolo transistor bipolare può essere utilizzato come base per un semplice inverter. Come minimo, sono necessari il transistor e una resistenza di base. Per completezza aggiungerò anche un resistore di carico in uscita, che dovresti presumere sia necessario a meno che tu sappia che qualunque cosa sia collegata all'uscita fornirà il carico necessario. Non c'è nulla di magico in un transistor PNP in particolare. Anche un NPN può essere usato. Ecco come ciascuno sarebbe usato:

Notare che ognuno ha 4 connessioni: alimentazione, terra, input e output. La differenza tra i due è in quale direzione carica l'input e in quale direzione viene pilotata attivamente rispetto a passivamente trascinata dal carico. Se non ti interessano questi problemi, i due circuiti sono funzionalmente equivalenti.

Tuttavia, questo è più semplice:

È anche più veloce, richiede meno energia statica costante, ha un'impedenza di imput più elevata ed è più piccolo. Ha le stesse quattro connessioni degli inverter sopra. Porte singole come questa sono disponibili nei pacchetti SOT-23, ovvero lo stesso pacchetto in cui entrano i singoli transistor. Ciò richiede solo una parte esterna, il cappuccio di bypass. Non ha bisogno di un resistore di carico poiché il suo output guida attivamente in entrambi i modi.

In realtà, per l'inversione generale dei segnali digitali, rendere il proprio inverter sciocco per le normali applicazioni.

A parte l'argomento sul disegno schematico:

La sceneggiatura è in realtà solo tre righe. Ecco l'intero file:

@echo off
rem
rem MAKE_SCHEM_GIF
rem
rem Crea un file GIF schematico ben filtrato dall'output di Eagle non elaborato
rem /temp/a.tif. Il file GIF risultante sarà /temp/b.gif e sarà
scala di grigi rem.
rem
filtro_immagine /temp/a.tif /temp/b.img -shrink 5
image_copy /temp/b.img /temp/b.gif -form -gray
image_disp /temp/b.gif -zoom 1 -dev medium

È uno script unico molto specifico, ma funziona abbastanza bene per lo scopo. In Eagle esporto lo schema nel file immagine \ temp \ a.tif, eseguo lo script che crea \ temp \ b.gif. Le impostazioni di Eagle per l'esportazione delle immagini sono 600 DPI e monocromatiche. Davvero, è tutto quello che c'è da fare. Probabilmente suona più complicato di quello che è.


1
@MattRuwe "basterebbe" ma il punto di Olin è che un chip dedicato farebbe meglio (i tempi di salita e discesa sarebbero più simmetrici). Un PNP può "tirare su" su Vdd, ma è necessario qualcosa per tirarlo indietro quando il PNP fa fluttuare l'output. Quel "qualcosa" creerà asimmetria nel tempo di salita / discesa, in base alla sua impedenza.
ajs410,

Gotcha, ha un senso
Matt Ruwe,

1
Come mai il tuo schema appare più bello del mio? :-)
stevenvh,

4
@stevenvh: Deve essere perché sto solo meglio. Scherzi a parte, uso Eagle e mi prendo cura di me. Dopo aver disegnato in Eagle, esporto lo schema a 600 DPI in un file di immagine, quindi eseguo uno script che filtra e lo restringe 5 volte e scrive il risultato in un file GIF in scala di grigi. Ciò rende il risultato di dimensioni ragionevoli senza artefatti pixel. Rende le linee un po 'sfocate, che è il compromesso per non avere aliasing e pixellation visibile.
Olin Lathrop,

1
@abdullah: vedi aggiunta per rispondere.
Olin Lathrop,

8

Ecco alcuni valori dei resistori che funzionano per i segnali CMOS:

Ho trovato questa discussione perché volevo collegare un vecchio "Zaino digitale LCD" ad un Arduino. L'Arduino emette segnali seriali positivi e lo zaino digitale vuole segnali invertiti. La versione più recente del controller LCD ha un ponticello invertito / non invertito, ma il mio no. Allo stesso modo, è possibile generare segnali seriali invertiti tramite software, ma comporta l'esecuzione di una libreria non standard. Volevo usare i Serial.writecomandi standard .

Inizialmente ho collegato uno dei 4 NOR in un gate NOR quad-core 4001 CMOS come un inverter, ma questo occupa molto spazio sulla mia breadboard e, dal momento che dovresti collegare tutti gli input non utilizzati a terra, comporta un sacco di cablaggio. (Penso di aver bisogno di collegare tutti tranne 3 dei 14 pin sulla confezione; tutto tranne le uscite sui 3 NOR inutilizzati.)

Volevo una soluzione più semplice da collegare. Ho usato il circuito fornito da @stevenvh.

Collegato qui:

inserisci qui la descrizione dell'immagine

Ho a che fare con la logica CMOS a 5 V a 9600 baud, quindi l'impedenza di ingresso è molto alta / la corrente è molto bassa. Dato che sto passando solo a 9600 baud, non penso che il comportamento asimmetrico dell'inverter basato su transistor mi faccia molto male.

Ho scoperto che una resistenza da 100K sull'ingresso (R2 nel diagramma di Stevenvh) ha funzionato e ho usato una resistenza da 3.3k come resistenza di pull-up su R1. Sulla base dei miei calcoli (I = V / R, 5/3300) questa configurazione assorbirà <= 1,5 mA nello stato ON (un po 'meno a causa della resistenza interna del transistor.) Potrei collegare una pentola e vedere quanto è grande un resistore che riesco a scappare con un LCD ancora riceve un segnale.


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.