Hoppa till huvudinnehållet
7. Mikrokontrollern och logiska signaler

Transistorn och logiska signaler

Hur en transistor används som strömbrytare från en mikrokontroller: basström och basmotstånd, bottning, kollektormotstånd och logiska nivåer, samt lysdiod, pull-up, frihjulsdiod och PWM.

Översikt

Transistorn styr en stor ström med en liten, och kan bottna

En npn-transistor har tre anslutningar: bas, kollektor och emitter. Den fungerar som en strömbrytare mellan kollektor och emitter som styrs av en ström in i basen. Basen och emittern bildar en diod, så när transistorn leder ligger spänningen UBEU_{BE} över dem; kursen räknar med UBE≈0.7 VU_{BE} \approx 0.7\ \mathrm{V} om uppgiften inte anger något annat värde. I det aktiva området är kollektorströmmen proportionell mot basströmmen: IC=hFE⋅IBI_C = h_{FE} \cdot I_B. Faktorn hFEh_{FE} är transistorns strömförstärkning och anges i databladet, ofta som ett garanterat minimivärde. Därför kan en mikrokontrollers utgång, som bara orkar leverera några tiotals milliampere, styra en last som drar flera hundra milliampere: pinnen levererar bara basströmmen. Förstärkningen gäller dock bara så länge lasten kan ta emot strömmen. När hFEh_{FE} gånger basströmmen är större än vad lasten och matningen tillåter kan ICI_C inte växa mer, och kollektorströmmen bestäms i stället av kretsen: IC=US−UCE(sat)RCI_C = \dfrac{U_S - U_{CE(\text{sat})}}{R_C}, där USU_S är matningsspänningen, RCR_C lastens resistans och UCE(sat)U_{CE(\text{sat})} den låga spänningen över en bottnad transistor (några tiondels volt; värdet anges i uppgiften eller databladet). Transistorn är då bottnad och fungerar som en sluten strömbrytare, medan den med basströmmen noll är avstängd, en öppen strömbrytare. Villkoret för bottning är att basströmmen är minst så stor som den skulle behöva vara i det aktiva området: IB≥IChFEI_B \ge \dfrac{I_C}{h_{FE}}.

Översikt

Basmotståndet sätter basströmmen och avgör marginalen

Spänningen över bas–emitter-dioden är ungefär konstant, så ett motstånd i serie med basen måste ta upp resten av styrspänningen; utan det skulle pinnen försöka driva en mycket stor ström genom dioden. Med utspänningen UutU_{ut} från mikrokontrollern vid hög signal och basmotståndet RBR_B blir basströmmen IB=Uut−UBERBI_B = \dfrac{U_{ut} - U_{BE}}{R_B}. Sätter man in det i bottningsvillkoret får man det största basmotstånd som fortfarande bottnar transistorn för en given kollektorström: RB≤hFE (Uut−UBE)ICR_B \le \dfrac{h_{FE}\,(U_{ut} - U_{BE})}{I_C}. Ett högre motstånd sparar ström i styrkretsen men minskar marginalen, ett lägre ger större marginal men belastar pinnen mer. Tumregeln är att välja ett standardvärde under det beräknade, så att basströmmen blir ett par gånger större än minimum. Anger databladet utspänningen som ett intervall räknar man med den lägsta nivån när bottningen ska garanteras och med den högsta när man kontrollerar hur mycket ström pinnen får lämna.

Översikt

Kollektormotståndet gör transistorn till en nivåomvandlare

Kopplar man ett kollektormotstånd RCR_C mellan en matningsspänning USU_S och kollektorn och tar utsignalen från kollektorn, blir transistorn en inverterande grind. Hög insignal bottnar transistorn och utsignalen blir låg, ungefär UCE(sat)U_{CE(\text{sat})}; låg insignal stänger av den, och motståndet drar upp utsignalen till USU_S. Eftersom USU_S kan vara en annan spänning än avsändarens kan kopplingen skicka en logisk signal mellan två mikrokontrollers med olika matningsspänning, om kollektormotståndet kopplas till mottagarens matningsspänning. Mottagaren tolkar en insignal som låg om den ligger under dess tröskel UILU_{IL}, den högsta spänning databladet tillåter för låg nivå. Basströmmen begränsar hur stor kollektorströmmen kan bli, högst IC,max=hFE⋅IBI_{C,max} = h_{FE} \cdot I_B, och så länge transistorn inte är bottnad blir utspänningen Uut=US−RC⋅hFE⋅IBU_{ut} = U_S - R_C \cdot h_{FE} \cdot I_B. Kravet att den ska vara högst UILU_{IL} ger det lägsta kollektormotstånd som fungerar: RC≥US−UILhFE⋅IBR_C \ge \dfrac{U_S - U_{IL}}{h_{FE} \cdot I_B}. Transistorn behöver inte vara fullt bottnad; det räcker att utspänningen hamnar under tröskeln. Ett lågt kollektormotstånd ger snabbare flank uppåt men mer ström när signalen är låg, ett högt sparar ström men gör kretsen långsammare. Är i stället kollektormotståndet givet, måste IB≥US−UILhFE⋅RCI_B \ge \dfrac{U_S - U_{IL}}{h_{FE} \cdot R_C} gälla.

Exempel

Exempel: basmotstånd för en last, och sämsta fallet för utspänningen

En fläkt drar strömmen IC=0.24 AI_C = 0.24\ \mathrm{A} när den är påslagen. Transistorn har hFE=80, UBE=0.65 Vh_{FE} = 80,\ U_{BE} = 0.65\ \mathrm{V}, där hFEh_{FE} är databladets lägsta värde, och mikrokontrollerns höga signal är 3.3 V. Den minsta basström som bottnar transistorn blir IB,min=0.2480=3.0 mAI_{B,min} = \dfrac{0.24}{80} = 3.0\ \mathrm{mA}. Med tre gångers marginal ska basströmmen vara IB=3⋅3.0=9.0 mAI_B = 3 \cdot 3.0 = 9.0\ \mathrm{mA}, och basmotståndet blir då RB=3.3−0.659.0⋅10−3≈294 ΩR_B = \dfrac{3.3 - 0.65}{9.0 \cdot 10^{-3}} \approx 294\ \Omega. Närmast lägre standardvärde i E12-serien är 270 Ω, som ger IB=3.3−0.65270≈9.8 mAI_B = \dfrac{3.3 - 0.65}{270} \approx 9.8\ \mathrm{mA}. Det är drygt tre gånger minimum och ryms inom en typisk pinngräns på 20 mA. Ett andra fall har RB=1.0 kΩ, hFE≥120, UBE=0.65 VR_B = 1.0\ \mathrm{k}\Omega,\ h_{FE} \ge 120,\ U_{BE} = 0.65\ \mathrm{V}, och utspänningen vid hög signal garanteras ligga mellan 2.9 V och 3.4 V. Lägsta basström blir IB=2.9−0.651000=2.25 mAI_B = \dfrac{2.9 - 0.65}{1000} = 2.25\ \mathrm{mA} och högsta IB=3.4−0.651000=2.75 mAI_B = \dfrac{3.4 - 0.65}{1000} = 2.75\ \mathrm{mA}. Lasten får högst dra IC≤120⋅2.25 mA=270 mAI_C \le 120 \cdot 2.25\ \mathrm{mA} = 270\ \mathrm{mA} om bottningen ska vara garanterad, eftersom det är den lägsta basströmmen som gäller; den högsta basströmmen är den pinnen måste klara.

Exempel

Exempel: nivåomvandling mellan två mikrokontrollers

En avsändare med 3.3 V-logik ger minst 3.0 V som hög signal. Basmotståndet är RB=15 kΩR_B = 15\ \mathrm{k}\Omega och transistorn har hFE=150, UBE=0.65 V, UCE(sat)=0.3 Vh_{FE} = 150,\ U_{BE} = 0.65\ \mathrm{V},\ U_{CE(\text{sat})} = 0.3\ \mathrm{V}. Mottagaren har matningsspänningen 5.0 V och tolkar högst 1.4 V som låg nivå. Basströmmen blir IB=3.0−0.6515⋅103≈156.7 μAI_B = \dfrac{3.0 - 0.65}{15 \cdot 10^{3}} \approx 156.7\ \mu\mathrm{A} och kollektorströmmen högst IC,max=150⋅156.7 μA≈23.5 mAI_{C,max} = 150 \cdot 156.7\ \mu\mathrm{A} \approx 23.5\ \mathrm{mA}. Lägsta kollektormotstånd blir RC≥5.0−1.423.5⋅10−3≈153 ΩR_C \ge \dfrac{5.0 - 1.4}{23.5 \cdot 10^{-3}} \approx 153\ \Omega, så det närmast högre standardvärdet 180 Ω fungerar, och det ger utspänningen Uut=5.0−180⋅23.5⋅10−3≈0.77 VU_{ut} = 5.0 - 180 \cdot 23.5 \cdot 10^{-3} \approx 0.77\ \mathrm{V}. Transistorn är här inte fullt bottnad, eftersom en bottnad transistor med 180 Ω skulle dra 5.0−0.3180≈26 mA\dfrac{5.0 - 0.3}{180} \approx 26\ \mathrm{mA}, men utspänningen ligger under tröskeln och det är allt som krävs. Utgår man i stället från ett givet kollektormotstånd på 470 Ω krävs kollektorströmmen IC=5.0−1.4470≈7.66 mAI_C = \dfrac{5.0 - 1.4}{470} \approx 7.66\ \mathrm{mA}, alltså basströmmen IB=7.66 mA150≈51.1 μAI_B = \dfrac{7.66\ \mathrm{mA}}{150} \approx 51.1\ \mu\mathrm{A} och basmotståndet RB≤3.0−0.6551.1⋅10−6≈46.0 kΩR_B \le \dfrac{3.0 - 0.65}{51.1 \cdot 10^{-6}} \approx 46.0\ \mathrm{k}\Omega. Ett standardvärde med marginal är 39 kΩ.

Exempel

Exempel: lysdiod, pull-up-motstånd och PWM

En lysdiod har en framspänning som liknar en vanlig diods men är högre, omkring 2 V för röd. Strömmen sätts av ett seriemotstånd: R=U−ULEDILEDR = \dfrac{U - U_{LED}}{I_{LED}}, där U är spänningen över lysdiod och motstånd tillsammans. Med utgången 3.3 V, ULED=1.9 VU_{LED} = 1.9\ \mathrm{V} och önskad ström 5 mA blir R=3.3−1.95⋅10−3=280 ΩR = \dfrac{3.3 - 1.9}{5 \cdot 10^{-3}} = 280\ \Omega. Närmast högre standardvärde, 330 Ω, ger I=3.3−1.9330≈4.2 mAI = \dfrac{3.3 - 1.9}{330} \approx 4.2\ \mathrm{mA} och är därmed säkert. En knapp som kopplar en ingång till jord ger ingen definierad nivå när den är öppen. Ett pull-up-motstånd till matningsspänningen drar då ingången till hög nivå, eftersom ingångens egen ström är försumbar: 1 µA genom 10 kΩ ger bara 10 mV. När knappen trycks ner ligger ingången på 0 V och motståndet drar strömmen I=USRpullI = \dfrac{U_S}{R_{pull}}, med 3.3 V och 10 kΩ alltså I=3.310⋅103=0.33 mAI = \dfrac{3.3}{10 \cdot 10^3} = 0.33\ \mathrm{mA}. Signalen är inverterad: nedtryckt knapp ger låg nivå. Med PWM kopplas en last på och av så snabbt att den reagerar på medelvärdet. Dutycykeln D är andelen av perioden T som utgången är hög, D=tpa˚TD = \dfrac{t_{\text{på}}}{T}, och medelspänningen blir Umedel=D⋅Uho¨gU_{\text{medel}} = D \cdot U_{\text{hög}}. Effekten beror på spänningens kvadrat, så i en resistiv last blir medeleffekten Pmedel=D⋅Uho¨g2RP_{\text{medel}} = D \cdot \dfrac{U_{\text{hög}}^2}{R} och inte Umedel2R\dfrac{U_{\text{medel}}^2}{R}. En värmeslinga för 12 V och 30 W har resistansen 4.8 Ω; med D = 25 % blir medelspänningen 3.0 V och medeleffekten Pmedel=0.25⋅30=7.5 WP_{\text{medel}} = 0.25 \cdot 30 = 7.5\ \mathrm{W}, medan 3.0 V över 4.8 Ω felaktigt hade gett 1.9 W. På en Arduino ger analogWrite(pin, 64) ungefär D = 25 %.

Fördjupning

Fallgrop: en induktiv last behöver en frihjulsdiod

En relspole, en motor eller en solenoid innehåller en spole, och strömmen genom en spole kan inte ändras momentant. När transistorn stänger av försöker spolen driva strömmen vidare, och spänningen över den blir u=L didtu = L\,\dfrac{di}{dt}. Bryts strömmen 0.15 A genom en spole på 0.20 H på 10 µs blir det enligt modellen u=0.20⋅0.1510⋅10−6=3000 Vu = 0.20 \cdot \dfrac{0.15}{10 \cdot 10^{-6}} = 3000\ \mathrm{V}, mer än transistorn tål, så den bryter igenom och förstörs. Lösningen är en frihjulsdiod parallellt med spolen, med katoden mot matningens plus och anoden mot kollektorn. Under normal drift är dioden backspänd och leder ingen ström. När transistorn stänger av får spolströmmen en väg genom dioden, och kollektorspänningen stannar vid ungefär US+UD≈US+0.7 VU_S + U_D \approx U_S + 0.7\ \mathrm{V} i stället för att skjuta iväg. Strömmen i dioden är precis efter avstängningen lika stor som spolströmmen precis före, och den avklingar sedan. Tre vanliga fel är att koppla dioden i serie med spolen, vilket stryper den normala strömmen, att vända den, vilket kortsluter matningen genom transistorn när den leder, och att lägga den över bas–emitter, vilket inte skyddar kollektorn.

Fördjupning

Fallgrop: räknefel med basström, förstärkning och nivåer

Fem fel är vanliga. Det första är att dela hela utspänningen med basmotståndet, IB=UutRBI_B = \dfrac{U_{ut}}{R_B}, och därmed glömma att UBEU_{BE} ligger över basen; det ger en för stor basström. Det andra är att tro att ICI_C alltid är hFEh_{FE} gånger IBI_B. Sambandet gäller bara i det aktiva området, och en bottnad transistor för en lägre ström som lasten bestämmer, så att räkna med IC=hFE⋅IBI_C = h_{FE} \cdot I_B ger för stor ström och för stor effekt. Det tredje är att välja fel ände av ett utspänningsintervall: bottningen ska vara garanterad vid den lägsta utspänningen, medan pinnens belastning kontrolleras vid den högsta. Det fjärde är enheterna, där ett basmotstånd på 15 kΩ som räknas som 15 Ω ger tusen gånger för stor ström. Det femte är att kräva fullt bottnad transistor för att mottagaren ska se låg nivå. Tröskeln UILU_{IL} är det enda kravet, och ett strängare krav ger ett onödigt högt lägsta kollektormotstånd.

Formler i området

Transistorns strömförstärkning

IC=hFE⋅IBI_C = h_{FE} \cdot I_B
Vad gör formeln?
I det aktiva området är kollektorströmmen basströmmen gånger strömförstärkningen.
När får den användas?
IC är kollektorströmmen, IB basströmmen och hFE transistorns strömförstärkning enligt databladet. Gäller i det aktiva området. När transistorn är bottnad bestäms kollektorströmmen i stället av lasten och blir lägre än hFE gånger IB.

Kollektorström hos en bottnad transistor

IC=US−UCE(sat)RCI_C = \dfrac{U_S - U_{CE(\text{sat})}}{R_C}
Vad gör formeln?
En bottnad transistor är en nästan sluten strömbrytare, och lasten bestämmer kollektorströmmen.
När får den användas?
US är matningsspänningen, UCE(sat) spänningen över den bottnade transistorn (några tiondels volt om uppgiften inte anger annat) och RC kollektormotståndet eller lastens resistans. Gäller bara när transistorn är bottnad. Kan UCE(sat) försummas blir IC = US/RC.

Basström ur basmotståndet

IB=Uut−UBERBI_B = \dfrac{U_{ut} - U_{BE}}{R_B}
Vad gör formeln?
Basmotståndet tar upp den del av utspänningen som inte ligger över bas–emitter-dioden och sätter därmed basströmmen.
När får den användas?
Uut är mikrokontrollerns utspänning vid hög signal, UBE spänningen över bas–emitter-dioden (ungefär 0.7 V om uppgiften inte anger annat) och RB basmotståndet. Resultatet blir i ampere när RB anges i ohm, så ett motstånd i kiloohm måste räknas om.

Största basmotstånd för bottning

RB≤hFE (Uut−UBE)ICR_B \le \dfrac{h_{FE}\,(U_{ut} - U_{BE})}{I_C}
Vad gör formeln?
Ger det största basmotstånd som fortfarande bottnar transistorn för en given kollektorström.
När får den användas?
IC är den kollektorström transistorn ska föra när den är bottnad. Uttrycket följer av att basströmmen måste vara minst IC/hFE. Räkna med lägsta hFE och lägsta Uut, och välj ett standardvärde under gränsen så att basströmmen får marginal.

Lägsta kollektormotstånd för låg nivå

RC≥US−UILhFE⋅IBR_C \ge \dfrac{U_S - U_{IL}}{h_{FE} \cdot I_B}
Vad gör formeln?
Ger det lägsta kollektormotstånd som får utsignalen att hamna under mottagarens tröskel för låg nivå.
När får den användas?
US är matningsspänningen som kollektormotståndet ligger mot, UIL den högsta spänning mottagaren tolkar som låg nivå, och hFE·IB den största kollektorström transistorn kan dra med den basström den får. Ett högre RC fungerar också. Transistorn behöver inte vara fullt bottnad.

Lysdiodens serieresistor

R=U−ULEDILEDR = \dfrac{U - U_{LED}}{I_{LED}}
Vad gör formeln?
Resistorn tar upp skillnaden mellan matningen och lysdiodens framspänning och sätter lysdiodens ström.
När får den användas?
U är spänningen över lysdiod och resistor tillsammans, ULED lysdiodens framspänning (omkring 1.8 till 3 V beroende på färg) och ILED den ström lysdioden ska ha. Välj närmast högre standardvärde så att strömmen inte överstiger önskad ström.

PWM: medelspänning

Umedel=D⋅Uho¨gU_{\text{medel}} = D \cdot U_{\text{hög}}
Vad gör formeln?
Medelspänningen vid pulsbreddsmodulering är dutycykeln gånger den höga nivån.
När får den användas?
D = tpå/T är dutycykeln, den andel av perioden T då utgången är hög, mellan 0 och 1. Gäller spänningens medelvärde. Medeleffekten i en resistiv last är D gånger effekten vid full spänning, inte effekten som medelspänningen skulle ge.

Kan du använda transistorn och logiska signaler?

Lös en riktig tentauppgift från MF1016/MF1017/MF1023 med ledtrådar och facit. Inget konto behövs.

Prova en uppgift