Image of eBits Academy inputmotion illustration

En H-brygga och en DC-motor – en bra kombination!

  • March 27, 2023
  • |
  • Jonas Rothausen

Introduktion

Vi kan driva en DC-motor med en transistor... I en riktning. Men om vi vill driva den i två riktningar – både framåt OCH bakåt – hur gör vi då? Låt mig presentera H-bryggan — aktuellt sortiment; kontrollera kompatibiliteten!

För drift i båda riktningarna tar vi vår DC-motor och ansluter den till vår H-brygga så att strömmen kan gå genom modulen åt båda hållen. Kanske lättare sagt än gjort, men det är principen som låter DC-motorn fungera i båda riktningarna.

Bloggen förklarar hur en H-brygga fungerar och visar sedan kretsens uppkoppling. Demonstrationen innehåller kod och en hänvisning till koden som används. Om du bara är intresserad av genomförandet och inte teorin bakom en H-brygga — aktuellt sortiment; kontrollera kompatibiliteten, klicka här!

H-bryggan är alltså ett mycket användbart verktyg i många tekniker. Men vad är en H-brygga och hur fungerar den? Den kan bestå av transistorer som samverkar i ett nätverk, vanligtvis fyra stycken. Strömriktningen genom nätverket beror på logikvärdena (HIGH/LOW eller 1 och 0) för dess olika stift. Värdena bestäms av spänningen vid transistorernas baser. Vi pratade om logikvärden, HIGH/LOW eller 1 och 0, i bloggen om digitala kretsar.


H-brygga — aktuellt sortiment; kontrollera kompatibiliteten som exempel – BJT

Låt oss titta på en H-bryggekrets med två PNP- och två NPN-transistorer, se figur 1.




Figur 1: Illustration av en H-bryggekrets. H-bryggan har 4 BJT-transistorer – två PNP-transistorer (blå) och två NPN-transistorer (lila) – med DC-motorn i mitten.

I figur 1 ser vi H-bryggan byggd av två PNP-transistorer (blå) och två NPN-transistorer (lila). Här används BJT-transistorer eftersom vi redan har en blogg om analoga kretsar, som förklarar lite om hur BJT-transistorer fungerar. Som vi också nämner i bloggen om analoga kretsar utför BJT- och MOSFET-transistorer liknande funktioner. Både MOSFET:ar och BJT:er kan därför användas i H-bryggor, och valet beror på tillämpningens krav.

Valet mellan MOSFET och BJT beror på spänning, ström, switchfrekvens, drivkrets och databladets säkra arbetsområde. För MOSFET bedöms bland annat RDS(on), gateladdning och switchförluster (se bloggen om kraftelektronik för en introduktion).
För BJT bedöms bland annat VCE(sat), basström och laddningslagring. Ingen typ är generellt garanterad snabbare eller mer överspänningstålig; valet kräver konkreta databladsvärden och lämpligt skydd. BJT används här som ett undervisningsexempel.

I figur 1 ser vi att baserna på de två transistorerna till vänster om motorn ansluts till punkt A och de andra två baserna till punkt B. Längst ner ansluts NPN-transistorernas emittrar till jord. Överst ansluts PNP-transistorerna till Vin, vår positiva spänning. Genom att ändra spänningen vid A och B till HIGH/LOW eller 1 och 0 kan vi ändra strömriktningen genom motorn. Det finns fyra spänningskombinationer vid A och B, se figur 2.



Figur 2: Illustration av de fyra spänningskombinationerna vid A och B.

Om vi tar ett djupt andetag och en klunk kaffe ser vi kanske att när A och B är 0 slås deras PNP-transistorer på och låter ström gå genom dem, se figur 3.



Figur 3: Illustration av fallet där A och B är 0.

När A och B är 1 slås NPN-transistorerna på, se figur 4.



Figur 4: Illustration av fallet där A och B är 1.

Varför är det bra att veta? Principen är viktig eftersom de ideala kopplingstillstånden ska undvika direkt ström från matning till jord, som i figur 5. Det förenklade schemat garanterar inte i sig skydd mot genomskjutningsström under omkoppling. 



Figur 5: Illustration av en oönskad direkt strömväg genom nätverket.

En sådan strömväg skulle vara en kortslutning som kan skada transistorerna, och DC-motorn skulle då inte kunna fungera i någon riktning.
Det är alltså en strömväg vi inte vill ha. Vilka vägar vill vi ha? I ideala stationära tillstånd är NPN-transistorerna av och PNP-transistorerna på när A och B båda är 0. När båda är 1 är NPN-transistorerna på och PNP-transistorerna av. Motorns båda anslutningar har då samma potential. En roterande motor kan fortfarande ge bromsström; ”ingen drivspänning” garanterar inte noll ström. 
Dessa fall driver därför inte DC-motorn aktivt i någon riktning. Endast två fall i figur 2 driver DC-motorn, se figur 6. 



Figur 6: Motorns drivfall för nätverket i figur 1.

Det är dessa två fall i den gröna cirkeln vi är intresserade av, och de driver motorn i motsatta riktningar.

I det första fallet i den gröna cirkeln är A 1 och B 0. Strömmen går från Vin genom PNP-transistorn till höger vid B, genom motorn och vidare mot utgången genom NPN-transistorn vid A, som i figur 7.

 


Figur 7: Fallet där A är 1 och B är 0.

I det andra fallet i den gröna cirkeln är A 0 och B 1. Då kan strömmen gå genom motorn i motsatt riktning mot föregående fall i figur 7. Strömmen går då från Vin genom PNP-transistorn till vänster vid A, genom motorn och vidare mot utgången genom NPN-transistorn vid B, som i figur 8.


Figur 8: Fallet där A är 0 och B är 1.

Så kan H-bryggor ändra riktningen och mängden ström genom motorn.

En av de vanligaste användningarna av H-bryggor är styrning av robotar och andra automatiserade system där motorer behöver röra sig i olika riktningar och hastigheter. H-bryggor kan också användas i andra tillämpningar, exempelvis solcellssystem för att reglera ström och spänning från solpanelerna.

Dessutom har H-bryggor blivit populära i gör-det-själv-elektronik och hobbyprojekt där de kan styra olika elektroniska enheter och motorer!

Nu förstår vi hur en H-brygga fungerar, så låt oss visa hur vi använder H-bryggan MX1508 — aktuellt sortiment; kontrollera kompatibiliteten i praktiken med en mikrokontroller.

 

Demonstration – MX1508

Följande krets visar hur Arduino UNO ansluts till H-bryggan MX1508. Anslut kablarna som i figur 9.


Figur 9: Krets för H-bryggan MX1508 och en DC-motor.

Ladda upp koden i figur 10 via Arduino IDE. Du kan ladda ner Arduino IDE här: Länk.


Figur 10: Arduino IDE-kod för DC-motordrift i båda riktningarna. Koden finns att kopiera via denna GitHub-länk.



Som koden visar går motorn först framåt i 3 sekunder och bakåt i 3 sekunder. Sedan stannar den och PWM-pulsförhållandet framåt rampas från 0 till 100%; därefter upprepas sekvensen bakåt. En linjär PWM-ramp garanterar inte konstant mekanisk acceleration.


Komponenter som behövs

För projektet behöver du komponenterna nedan. De flesta finns här på eBits.dk.



Observera att andra mikrokontroller än Arduino UNO kan användas.

Comments (1 kommentar)

How much of a delay between A and B should we code in to avoid shoot through?

| Katherine
Lämna en kommentar

Observera att kommentarer måste godkännas innan de publiceras.