Transistors (BJT) en MOSFET verbinden met Arduino

Probeer Ons Instrument Voor Het Oplossen Van Problemen





De interfacing van stroomapparaten zoals BJT's en MOSFET's met Arduino-uitvoer is een cruciale configuratie waarmee hoge stroombelastingen kunnen worden geschakeld via lage stroomuitgangen van een Arduino.

In dit artikel bespreken we uitgebreid de juiste methoden om transistors zoals BJT's en mosfets te gebruiken of te verbinden met elke microcontroller of een Arduino.



Dergelijke fasen worden ook wel 'Level Shifter' omdat deze fase het spanningsniveau verandert van een lager punt naar een hoger punt voor de relevante uitgangsparameter. Hier wordt bijvoorbeeld de niveauverschuiving geïmplementeerd van Arduino 5V-uitgang naar MOSFET 12V-uitgang voor de geselecteerde 12V-belasting.

Hoe goed uw Arduino ook is geprogrammeerd of gecodeerd, als deze niet correct is geïntegreerd met een transistor of externe hardware, kan dit resulteren in inefficiënte werking van het systeem of zelfs schade aan de componenten die bij het systeem betrokken zijn.



Daarom wordt het uiterst belangrijk om de juiste methoden voor het gebruik van externe actieve componenten zoals mosfets en BJT's met een microcontroller te begrijpen en te leren, zodat het uiteindelijke resultaat effectief, soepel en efficiënt is.

Voordat we de interfacing-methoden van transistors met Arduino bespreken, zou het nuttig zijn om de basiskenmerken en werking van BJT's en mosfets te leren.

Elektrische kenmerken van transistors (bipolair)

BJT staat voor bipolaire junctie-transistor.

De basisfunctie van een BJT is om een ​​aangesloten belasting in te schakelen als reactie op een externe spanningstrigger. De belasting zou in vergelijking met de ingangstrigger meestal zwaarder moeten zijn.

De basisfunctie van een BJT is dus om een ​​hogere stroombelasting in te schakelen als reactie op een lagere stroomingangstrigger.

Technisch gezien wordt dit ook wel genoemd voorspanning van de transistor , wat betekent dat stroom en spanning worden gebruikt om een ​​transistor te laten werken voor een beoogde functie, en deze voorspanning moet op de meest optimale manier worden gedaan.

BJT's hebben 3 leads of 3 pinnen, namelijk basis, emitter, collector.

De basispen wordt gebruikt voor het voeden van de externe ingangstrigger, in de vorm van een kleine spanning en stroom.

De emitterpin is altijd verbonden met de aarde of de negatieve voedingslijn.

De collectorpin is via de positieve voeding met de belasting verbonden.

BJT's zijn te vinden met twee soorten polariteiten, NPN en PNP. De basisconfiguratie van de pin is hetzelfde voor zowel NPN als PNP, zoals hierboven uitgelegd, behalve de polariteit van de DC-voeding die precies het tegenovergestelde wordt.

De pinouts van een BJT kunnen worden begrepen via de volgende afbeelding:

In de bovenstaande afbeelding kunnen we de basis pinout-configuratie van een NPN- en een PNP-transistors (BJT's) zien. Voor de NPN wordt de emitter de aardleiding en wordt deze aangesloten op de negatieve voeding.

Normaal gesproken, wanneer het woord 'aarde' wordt gebruikt in een DC-circuit, nemen we aan dat dit de negatieve voedingslijn is.
Voor een transistor is de aardingslijn die bij de emitter hoort echter gerelateerd aan de basis- en de collectorspanningen, en de emitter 'aarde' hoeft niet noodzakelijk de negatieve voedingslijn te betekenen.

Ja, voor een NPN BJT kan de aarde de negatieve toevoerleiding zijn, maar voor een PNP-transistor de 'aarde' verwijst altijd naar de positieve toevoerlijn, zoals weergegeven in de bovenstaande afbeelding.

De AAN / UIT-functie van beide BJT's is in principe hetzelfde, maar de polariteit verandert.

Aangezien de emitter van een BJT de 'uitgangsdoorgang' is voor de stroom die door en basis en de collector binnenkomt, moet deze worden 'geaard' op een voedingslijn die tegengesteld moet zijn aan de spanning die wordt gebruikt op basis- / collectoringangen. Anders wordt het circuit niet voltooid.

Voor een NPN BJT zijn de basis- en collectoringangen geassocieerd met een positieve trigger- of schakelspanning, daarom moet de emitter worden verwezen naar de negatieve lijn.

Dit zorgt ervoor dat de positieve spanningen die de basis en collector binnenkomen, de negatieve lijn door de emitter kunnen bereiken en het circuit kunnen voltooien.

Voor een PNP BJT zijn de basis en de collector geassocieerd met een negatieve spanningsingang, daarom moet de emitter van een PNP natuurlijk worden verwezen naar de positieve lijn, zodat de positieve voeding door de emitter kan komen en zijn reis vanaf de basis kan beëindigen en de opvangpennen.

Merk op dat de stroom van stroom voor de NPN van de basis / collector naar de zender gaat, terwijl deze voor de PNP van de zender naar de basis / collector gaat.

In beide gevallen is het doel om de collectorbelasting in te schakelen via een kleine spanningsingang aan de basis van de BJT, alleen de polariteit verandert dat is alles.

De volgende simulatie toont de basiswerking:

hoe transistor geleidt met een externe spanning

In de simulatie hierboven, zodra de knop wordt ingedrukt, komt de externe spanningsingang de basis van de BJT binnen en bereikt de grondlijn via de emitter.

Terwijl dit gebeurt, gaat de collector / emitter-doorgang in de BJT open en laat de positieve toevoer van bovenaf de lamp binnen en gaat door de emitter naar aarde, waarbij de lamp wordt ingeschakeld (belasting).

Beide schakelingen gebeuren bijna gelijktijdig als reactie op het indrukken van de drukknop.

De emitterpin wordt hier de gemeenschappelijke 'exit'-pinout voor zowel de ingangsfeeds (basis en collector).

En de emittertoevoerlijn wordt de gemeenschappelijke grondlijn voor de ingangstoevoer-trigger, en ook de belasting.

Wat betekent dat de toevoerleiding die met de BJT-zender is verbonden, ook strikt verbonden moet zijn met de aarde van de externe triggerbron en de belasting.

Waarom we een weerstand gebruiken aan de basis van een BJT

De basis van een BJT is ontworpen om te werken met lage stroomingangen, en deze pin kan geen grote stroomingangen opnemen, en daarom gebruiken we een weerstand om er zeker van te zijn dat er geen grote stroom in de basis komt.

De basisfunctie van de weerstand is om de stroom te beperken tot een correct gespecificeerde waarde, volgens de belastingsspecificatie.

Houd er rekening mee dat dat, voor BJT's, deze weerstand moet worden gedimensioneerd volgens de belastingstroom aan de collectorzijde.

Waarom?

Omdat BJT's stroomafhankelijke 'schakelaars' zijn.

Dit betekent dat de basisstroom moet worden verhoogd of verlaagd of aangepast in overeenstemming met de specificaties van de belastingsstroom aan de collectorzijde.

Maar de schakelspanning die nodig is aan de basis van een BJT kan zo laag zijn als 0,6 V of 0,7 V. Dit betekent dat de BJT-collectorbelasting kan worden ingeschakeld met een spanning zo laag als 1V over de basis / emitter van een BJT.
Hier is de basisformule voor het berekenen van de basisweerstand:

R = (Us - 0,6) Hfe / laadstroom,

Waar R = basisweerstand van de transistor,

Us = Bron of de triggerspanning naar de basisweerstand,

Hfe = Voorwaartse stroomversterking van de transistor (te vinden op de datasheet van de BJT).

Hoewel de formule er netjes uitziet, is het niet absoluut noodzakelijk om de basisweerstand altijd zo nauwkeurig te configureren.

Het is simpelweg omdat de BJT-basisspecificaties een breed tolerantiebereik hebben en gemakkelijk grote verschillen in de weerstandswaarden kunnen tolereren.

Bijvoorbeeld, om een ​​relais aan te sluiten met een spoelweerstand van 30mA kan de formule ruwweg een weerstandswaarde van 56K opleveren voor een BC547 bij 12V-voedingsingang ... maar normaal geef ik de voorkeur aan 10K, en het werkt perfect.

Als u zich echter niet aan de optimale regels houdt, kan er iets niet goed zijn aan de resultaten, toch?

Technisch gezien is dat logisch, maar nogmaals, het verlies is zo klein in vergelijking met de moeite die voor de berekeningen is besteed, dat het kan worden verwaarloosd.

Als u bijvoorbeeld 10K gebruikt in plaats van 56K, kan de transistor worden gedwongen om met een iets meer basisstroom te werken, waardoor deze iets meer opwarmt, een paar graden hoger kan zijn ... wat helemaal niet uitmaakt.

Hoe BJT met Arduino te verbinden

OK, laten we nu naar het eigenlijke punt komen.

Omdat we tot nu toe uitgebreid hebben geleerd over hoe een BJT vooringenomen moet worden en geconfigureerd moet worden over zijn 3 pinouts, kunnen we snel de details begrijpen met betrekking tot de interface met elke microcontroller zoals Arduino.

Het belangrijkste doel van het verbinden van een BJT met een Arduino is meestal om een ​​belasting of een parameter aan de collectorzijde in te schakelen, als reactie op een geprogrammeerde uitvoer van een van de Arduino-uitvoerpennen.

Hier zou de triggeringang voor de BJT-basispin afkomstig moeten zijn van de Arduino. Dit houdt in dat het uiteinde van de basisweerstand gewoon moet worden bevestigd met de relevante uitgang van de Arduino, en de collector van de BJT met de belasting of een andere bedoelde externe parameter.

Aangezien een BJT nauwelijks 0,7 V tot 1 V nodig heeft voor een effectieve omschakeling, is 5 V van de Arduino-uitgangspen perfect geschikt voor het aansturen van een BJT en het bedienen van redelijke belastingen.
Een voorbeeldconfiguratie kan de volgende afbeelding zijn:

interfacing of verbinden Arduino met een transistorrelaisstuurprogramma

In deze afbeelding kunnen we zien hoe een geprogrammeerde Arduino wordt gebruikt voor het besturen van een kleine belasting in de vorm van een relais via de BJT-driverfase. De relaisspoel wordt de collectorbelasting, terwijl het signaal van de geselecteerde Arduino-uitgangspen werkt als het ingangsschakelsignaal voor de BJT-basis.

Arduino verbinden met een krachtige LED

Hoewel een relais de beste optie wordt voor het bedienen van zware belastingen via een transistordriver, wordt het upgraden van BJT's een betere keuze wanneer mechanisch schakelen een ongewenste factor wordt, zoals hieronder wordt getoond.

In het bovenstaande voorbeeld is een Darlington-transistornetwerk te zien, geconfigureerd voor het verwerken van de aangegeven hoge stroombelasting van 100 watt zonder afhankelijk te zijn van een relais. Dit maakt een naadloze schakeling van de LED met minimale storing mogelijk, waardoor een lange levensduur van alle parameters wordt gegarandeerd.

Laten we nu verder gaan en kijken hoe mosfets kunnen worden geconfigureerd met een Arduino

Elektrische kenmerken van MOSFET

Het doel van het gebruik van een mosfet met een Arduino is meestal vergelijkbaar met dat van BJT, zoals hierboven besproken.

Echter, aangezien normaal MOSFET's zijn ontworpen om efficiënt met hogere stroomspecificaties om te gaan in vergelijking met BJT's, worden deze meestal gebruikt voor het schakelen van hoge stroombelastingen.

Voordat we de interface van een mosfet met Arduino begrijpen, zou het interessant zijn om de basis te kennen verschil tussen BJT's en mosfets

In onze vorige discussie hebben we dat begrepen BJT's zijn stroomafhankelijke apparaten , omdat hun basisschakelstroom afhankelijk is van de collectorbelastingsstroom. Hogere belastingsstromen vereisen een hogere basisstroom en vice versa.

Voor mosfets is dit niet waar, met andere woorden: mosfets-poort die equivalent is aan BJT-basis, vereist minimale stroom om AAN te schakelen, ongeacht de afvoerstroom (afvoerpen van mosfet is equivalent aan verzamelpin van BJT).

Dit gezegd hebbende, hoewel de stroom niet de doorslaggevende factor is voor het schakelen van een mosfet-poort, spanning is.

Daarom worden mosfets beschouwd als spanningsafhankelijke apparaten

De minimale spanning die nodig is voor het creëren van een gezonde voorspanning voor een mosfet is 5V of 9V, 12v is het meest optimale bereik om een ​​mosfet volledig in te schakelen.

Daarom kunnen we aannemen dat om een ​​mosfet en een belasting over zijn afvoer in te schakelen, een 10V-voeding over zijn poort kan worden gebruikt voor een optimaal resultaat.

Equivalente pinnen van Mosfets en BJT's

De volgende afbeelding toont de complementaire pinnen van mosfets en BJT's.

Base komt overeen met Gate-Collector komt overeen met Drain-Emitter komt overeen met Source.

BJT mosfet pinout-vervanging in Arduino

Welke weerstand moet worden gebruikt voor een Mosfet-poort

Uit onze eerdere tutorials begrepen we dat de weerstand aan de basis van een BJT cruciaal is, zonder welke de BJT direct beschadigd kan raken.

Voor een MOSFET is dit misschien niet zo relevant, omdat MOSFET's niet worden beïnvloed door stroomverschillen aan hun poorten, in plaats daarvan kan een hogere spanning als gevaarlijk worden beschouwd. Meestal kan alles boven de 20V slecht zijn voor een MOSFET-poort, maar de stroom kan niet van belang zijn.

Hierdoor is een weerstand bij de poort niet relevant, aangezien weerstanden worden gebruikt voor het beperken van stroom, en mosfet poort is niet afhankelijk van stroom.

Dat gezegd hebbende, MOSFET's zijn enorm kwetsbaar voor plotselinge pieken en transiënten aan hun poorten, vergeleken met BJT's.

Om deze reden heeft een weerstand met een lage waarde over het algemeen de voorkeur aan de poorten van MOSFET's, alleen om er zeker van te zijn dat er geen plotselinge spanningspieken door de MOSFET-poort kunnen gaan en deze intern uit elkaar kunnen scheuren.

Typisch elke weerstand tussen 10 en 50 ohm kunnen worden gebruikt bij MOSFET-poorten om hun poorten te beschermen tegen onverwachte spanningspieken.

Een MOSFET koppelen aan Arduino

Zoals uitgelegd in de bovenstaande paragraaf, heeft een mosfet ongeveer 10V tot 12V nodig om correct in te schakelen, maar aangezien Arduino's met 5V werken, kan de output niet rechtstreeks met een mosfet worden geconfigureerd.

Omdat een Arduino werkt met 5V-voeding, en al zijn uitgangen zijn ontworpen om 5V te produceren als het logische hoge voedingssignaal. Hoewel deze 5V mogelijk de mogelijkheid heeft om een ​​MOSFET in te schakelen, kan dit resulteren in een inefficiënte omschakeling van de apparaten en opwarmingsproblemen.

Voor effectieve MOSFET-omschakeling en om de 5V-uitvoer van Arduino om te zetten in een 12V-signaal, zou een tussenliggende buffertrap kunnen worden geconfigureerd zoals weergegeven in de volgende afbeelding:

hoe mosfet met Arduino te verbinden

In de afbeelding is de MOSFET te zien geconfigureerd met een aantal BJT-buffertrappen waardoor de MOSFET de 12V van de voeding kan gebruiken en zichzelf en de belasting effectief kan inschakelen.

Twee BJT's worden hier gebruikt, omdat een enkele BJT ervoor zorgt dat de MOSFET tegengesteld gaat geleiden als reactie op elk positief Arduino-signaal.

Stel dat er één BJT wordt gebruikt, en terwijl de BJT is ingeschakeld met een positief Arduino-signaal, wordt de mosfet uitgeschakeld, omdat de poort wordt geaard door de BJT-collector en de belasting wordt ingeschakeld terwijl de Arduino is uitgeschakeld.

Kortom, één BJT zou het Arduino-signaal voor de mosfet-poort omkeren, wat resulteert in een tegengestelde schakelreactie.

Om deze situatie te corrigeren, worden twee BJT's gebruikt, zodat de tweede BJT de respons omkeert en de mosfet alleen voor elk positief signaal van de Arduino kan inschakelen.

Laatste gedachten

Inmiddels zou u de juiste methode moeten hebben begrepen om BJT's en mosfets te verbinden met een microcontroller of een Arduino.

Het is je misschien opgevallen dat we meestal NPN BJT's en N-kanaals mosfets hebben gebruikt voor de integraties, en hebben vermeden om de PNP- en P-kanaalapparaten te gebruiken. Dit komt omdat NPN-versies ideaal werken als een switch en gemakkelijk te begrijpen zijn tijdens het configureren.

Het is net alsof u met een auto normaal vooruit rijdt, in plaats van achterom te kijken en achteruit te rijden. In beide opzichten zou de auto werken en rijden, maar in de achteruit rijden is veel inefficiënt en heeft geen zin. Dezelfde analogie is hier van toepassing, en het gebruik van NPN- of N-kanaalapparaten wordt een betere voorkeur in vergelijking met PNP- of P-kanaals mosfets.

Als je twijfels hebt, of als je denkt dat ik hier iets heb gemist, gebruik dan het opmerkingenveld hieronder voor verdere discussie.




Een paar: 2 eenvoudige bidirectionele motorcontrollercircuits onderzocht Volgende: Motorcycle Button Start Locking Circuit