Napravite XOR vrata od tranzistora: 6 koraka
Napravite XOR vrata od tranzistora: 6 koraka
Anonim
Napravite XOR vrata od tranzistora
Napravite XOR vrata od tranzistora

ILI vrata su vrlo korisna, ali imaju jednu čudnu značajku koja može raditi sasvim u redu, ali u nekim aplikacijama može uzrokovati probleme. To je činjenica da ako su oba ulaza jedan, onda je i izlaz jedan. Da imamo aplikaciju u kojoj to ne želimo, možda smo stvarali zbrajalicu, koristili bismo nešto što se zove Exclusive Or Gate, što je skraćeno XOR ili EOR.

Korak 1: Dizajn

Oblikovati
Oblikovati
Oblikovati
Oblikovati
Oblikovati
Oblikovati

Jedan od načina za postizanje ponašanja XOR -a je uzeti uobičajena vrata ILI, a zatim se pozabaviti slučajem gdje su oba ulaza pozitivna. Ako vežemo vrata AND na ulaze, možemo dobiti signal kada se pojavi taj slučaj. Zatim možemo uzeti taj signal, invertirati ga, zatim povezati taj i izlaz ILI vrata s drugim AND vratima. Time će se učiniti da, kad nije slučaj da su oba ulaza uključena, vrata ILI jednostavno prolaze kroz druga vrata I, ali kad oba ulaza pređu visoko, prva vrata I zatvorit će druga vrata I i zadržati izlaz isključen bez obzira na stanje vrata ILI.

Jedna prilagodba koju sam na kraju napravio u posljednjem krugu je prebacivanje kombinacije AND/NOT za NAND vrata, koja su samo obrnuta vrata I. Način na koji to funkcionira postat će vidljiv kasnije.

Hajde sada napisati istu shemu, ali s tranzistorima i otpornicima. Vrsta tranzistora koju sam koristio je 2N2222 BJT, što je prilično uobičajeno (2N4401 i 2N3904 također rade). Koristio sam 6 tranzistora, 3 otpornika od 20 k ohma, 3 otpornika od 47 k ohma, otpornik od 1 510 ohma, dva gumba i LED. Odabrao sam ove vrijednosti otpornika na temelju izvora napajanja od 5 V i minimalne struje od 0,1 mA ili 0,0001A za 2N2222. ako koristite Ohmov zakon za izračun ispravnog otpora prema tlu za te vrijednosti dobivate 50 000 ohma. 47 k ohma je dovoljno blizu za donja vrata NAND, ali zašto niža vrijednost za vrata ILI i prvi ulaz drugog vrata I? Razlog je u tome što se odašiljač tranzistora koji čine OR vrata spojen kroz bazu drugog tranzistora stoga prolazi kroz drugi otpornik, a ne izravno na masu. (Strujni ograničavajući otpornik LED diode dovoljno je niska vrijednost da je u ovom proračunu beznačajan).

Korak 2: Dodavanje tranzistora, gumba i LED diode

Dodavanje tranzistora, gumba i LED diode
Dodavanje tranzistora, gumba i LED diode

Korak 3: Dodavanje otpornika

Dodavanje otpornika
Dodavanje otpornika

Korak 4: Dodavanje žica

Dodavanje žica
Dodavanje žica
Dodavanje žica
Dodavanje žica

Način na koji napajam svoju ploču je spajanje strujnih tračnica na napajanje laboratorijske klupe postavljeno na maksimalnu struju 5v i 500mA. Ista vrsta ulaza može se postići priključivanjem napajanja na Arduinove 5V i i GND pinove, ali stvarno radi 5V napajanje (iako se preporučuje ograničeno struje za smanjenje rizika od eksplozije komponenti).

Korak 5: Testiranje i rješavanje problema

Sad kad je spojen, dopustit ću vam da sami testirate. Ako pritisnete jedan ili drugi gumb, LED dioda bi trebala zasvijetliti. Ako se oboje pritisne, LED će se isključiti.

Uobičajeni problemi

  1. Ako se čini da jedan ulaz ne radi kako bi trebao, a slučaj kada su oba ulaza i dalje uključena daje nulu, provjerite napon na ulazu vrata I koji dolazi iz vrata ILI kad se pritisne taj gumb. Ako je nizak (<2V), smanjite otpor otpornika koji ide od ILI do vrata I.
  2. Ako vrata još uvijek djeluju samo kao vrata ILI, što znači da kada su oba ulaza na izlazu uključena, provjerite napon koji dolazi na ulaz vrata I koja dolazi s vrata NAND. Ako je to visoko kad su pritisnuta oba gumba, provjerite rade li vaši tranzistori na vratima AND i provjerite otpor od tamo do tla kada se pritisnu obje tipke. Ako je taj otpor veliki i/ili je napon nizak, zamijenite ta dva tranzistora ili smanjite otpor ulaza na NAND vrata.

Korak 6: Želite više?

Ako vam se svidio ovaj Instructable, samo naprijed i pogledajte moju knjigu na Amazonu pod nazivom "Vodič za početnike u Arduinu". On ide preko osnovnih principa sklopova, kao i preko C ++ koda koji se koristi za programiranje Arduina.