H-bro

Fra HTX Arduino
Spring til navigation Spring til søgning
Strukturelt princip af en H-Bro[1]

En H-bro er en konstruktion der muliggør at man kan drive en eller anden belastning både i positiv og i negativ retning.

Dette anvendes til en DC-motor når den skal kunne køre begge veje, og det kan anvendes til en bi-polar Stepmotor, hvor man skal kunne sætte spænding på i begge retninger for at vende magnetfeltet.

Man kan lave en H-bro konstruktion på forskellig vis, enten med diskrete komponenter eller med en færdig kreds.

Generel Styring af H-broen

Når man konstruerer styringen til en H-Bro, så skal man tage højde for at den kan styres, så forsyningen kortslutter, hvilket er ret uheldigt og absolut ikke hensigtsmæssigt i en konstruktion.

Hvis man betragter de 4 kontakter i H-broen, så er der 16 forskellige kombinationer af hvordan de kan tændes. Dette er skitseret i nedenstående tabel:

S1 S2 S3 S4 Resultat
1 0 0 1 Motor roterer den ene vej
0 1 1 0 Motor roterer den anden vej
0 0 0 0 Motor i friløb
1 0 0 0 Motor i friløb
0 1 0 0 Motor i friløb
0 0 1 0 Motor i friløb
0 0 0 1 Motor i friløb
0 1 0 1 Motor bremses
1 0 1 0 Motor bremses
1 1 0 0 Kortslutning af forsyning
0 0 1 1 Kortslutning af forsyning
0 1 1 1 Kortslutning af forsyning
1 0 1 1 Kortslutning af forsyning
1 1 0 1 Kortslutning af forsyning
1 1 1 0 Kortslutning af forsyning
1 1 1 1 Kortslutning af forsyning

Det siger sig selv, at man skal undgå de sidste 7 muligheder, ad det er yderst uheldigt.

Man kan bruge de 2 muligheder for at bremse motoren. Det forudsætter dog at kontakterne kan lede strøm i begge retninger, hvilket ikke er tilfældet med bipolare transistorer.

Software biblioteker til stepmotoren

Som standard kan man anvende Stepper[2] biblioteket, som er standard installeret sammen med Arduino softwaren.

Standard biblioteket til stepmotoren har det problem, at softwaren blokerer programafvikling, mens man stepper - dette kan være ret uheldigt i forbindelse med betjening og kommunikation, eller generelt det at få flere ting til at ske "samtidigt"[3] i softwaren.

Der er udviklet et bibliotek på github[4] - Unistep2.

Her på wikien er der forklaret et andet bibliotek til steppermotoren, som både understøtter samtidighed og accelleration.

H-Bro konstruktioner

Man kan konstruere en H-Bro på forskellige måder, alt efter hvad man ønsker med konstruktionen.

Relæ-konstruktion

Med relæer er det ganske simpelt, der kan man anvende 2 stk skifterelæer, hvor de kobles på følgende måde:

H-Bro styring med 2 relæer
H-Bro styring med 2 relæer

Fordelen ved denne styring er at den er simpel at realisere, og at den ikke giver mulighed for kortslutning af forsyningen.

Hvis et af relæerne er tændt, så vil motoren køre, og hvis begge eller ingen af dem er tændt, så vil motoren blive kortsluttet. Denne konstruktion er altså god, hvis man gerne vil kunne bremse motoren.

Konstruktionen kan også laves med ét relæ der indeholder begge skiftesæt, så vil man kun kunne skifte retning på motoren, og altså ikke slukke den - ønsker man at kunne slukke motoren, så kan man sætte et ekstra relæ ind der afbryder forsyningen. På denne måde vil man kunne lave det sådan at motoren går i friløb når den slukkes.

Konstruktion med Bipolare transistorer

Teknikken i en H-Bro med bipolare transistorer et at anvende to NPN-transistorer i bunden mod stel og to PNP-transistorer i toppen op mod forsyningen. For at disse transistorer skal kunne håndtere strømmen, så vil man normalt anvende krafttransistorer til formålet.

Den grundlæggende del af konstruktionen kunne være som følger:

Den grundlæggende opsætning af bipolare transistorer til en H-Bro
Den grundlæggende opsætning af bipolare transistorer til en H-Bro

Her kommer den ulempe, at specielt PNP-transistorerne bliver lidt svære at styre, hvis konstruktionen skal fungere med mere end 5V forsyning. Man skal slukke PNP-transistorerne med et højt signal, men ikke bare 5V - signalet skal gerne op på forsyningen til H-broen.

For at løse dette problem, så anvender man gerne flere transistorer.

Et bud på en konstruktion kunne være:

Realisering med mange modstande, for at sikre at transistorerne slukker
Realisering med mange modstande, for at sikre at transistorerne slukker

For at reducere konstruktionen lidt kan den laves så nogle transistorer får lidt dobbelt funktion.

Ud over dette er der bygget ind i konstruktionen at begge diagonale transistorer tændes af en indgang, og endelig er der realiseret en beskyttelse, så man ikke kan tænde begge sæt transistorer, og dermed kan man ikke få broen til at kortslutte forsyningen. Kredsløbet kan se ud som følger:

H-Bro diagram med indbygget beskyttelse
H-Bro diagram med indbygget beskyttelse

Ud fra de to indgange reagerer styringen som følger:

X1-1 X1-2 Resultat
1 0 Motor roterer den ene vej
0 1 Motor roterer den anden vej
0 0 Motor i friløb (broen slukket)
1 1 Beskyttelse - roterer den anden vej

Konstruktionen er vist med anslåede værdier, men skal dimensioneres ud fra forsyningsspænding og hvilken motor der skal drives.

  • Motoren vælges ud fra hvor meget den skal trække, samt de mekaniske egenskaber. Den ønskede driftspænding (her angivet som 9V) vælges og der findes en startstrøm for motoren.
  • Der vælges to krafttransistorer i NPN (Q2 og Q4) og PNP (Q1 og Q3), der kan holde til strømmen og spændingen der kræves af motoren (dimensioner efter startstrømmen).
  • Der vælges dioder (D1 til D4) der kan holde til samme strøm som krafttransistorerne.
  • Basisstrømmen for Q1 og Q2 findes ved startstrømmen, ud fra transistorernes HFE.
  • De to modstande R1 og R2 dimensioneres ud fra basisstrømmen på den transistor der skal have mest. Spændingen er forsyningen minus de spændingsfald der er over BE-strækningerne på transistorerne og CE på hhv. Q5 og Q6.
  • Der vælges en transistortype til Q5 og Q6 der kan holde til den basisstrøm Q1 og Q2 trækker. Ud fra denne transistors HFE beregnes så basisstrømmen til Q6.
  • Modstanden R3 beregnes ud fra denne strøm, samt styrespændingen fratrukket de to BE spændingsfald på Q6 og Q4.
  • Der vælges en transistor Q7 som kan trække strømmen fra R3 til stel - sikkert bare samme type som Q5 og Q6.
  • R5 dimensioneres ud fra spændingen over den og basisstrømmen der kræves til Q7.
  • R4 dimensioneres ud fra basisstrømmen i Q5 og strømmen i R5 sammen med spændingen over modstanden.
  • Generelt for alle modstande, så rundes der ned på deres størrelse så man sikrer at transistorerne tænder helt.

Med de anslåede værdier er der vist en simulering herunder. De grønne kurver er spændinger mens de gule kurver er strømme.

Simuleringen kan hentes på dette link.

Simulering af H-Broen, lavet med anslåede værdier
Simulering af H-Broen, lavet med anslåede værdier

De 3 viste signaler er de to input-signaler og spændingen over den modstand der skal symbolisere motoren.

Som det kan ses på simuleringen så gennemløbes de 4 faser korrekt:

  1. Begge input er slukkede og som forventet løber der ingen strøm i motoren
  2. Input 2 er tændt og som forventet løber der en strøm i motoren (spændingen kan måles til ca. 4,25V)
  3. Input 1 er tændt (input 2 slukket) og som forventet løber strømmen den anden vej i motoren (en spænding på ca. 4,24V)
  4. Begge input er slukket og her træder sikringen ind, der løber lidt større strøm fra input 1 fordi basis på Q6 trækkes lav og der løber strøm i motoren som ved input 2 tændt (igen en spænding på ca. 4,25V)

For at kontrollere at der ikke i skiftet kan ske en kortslutning af forsyningen, så ændres kredsløbet, så der er konstant 5V på input 1 og en sweepet spænding på input 2, der løber fra 0V til 5V og tilbage igen.

Denne simulering kan hentes på dette link

Simulering af H-Broen, med sweep på det ene input
Simulering af H-Broen, med sweep på det ene input

Som det kan ses på simuleringen, så opfører kredsløbet sig meget fornuftigt.

Med lav inputspænding på input 2 og 5V på input 1, så er motoren tændt i den ene retning.

Når spændingen vokser på input 2 sker der først det at motoren slukkes (når Q7 tændes) og efterhånden som Q5 og Q3 tændes, så tændes motoren i den anden retning, altså ingen tegn på kortslutning.

Konstruktioner med MOSFET transistorer

Umiddelbart er MOSFET transistorer nemme at styre og de har gode egenskaber til at tænde forbindelsen og dermed fungere enkelt som et relæ.

Vi har bare ikke så mange typer på Holstebro HTX, så derfor vises kun et eksempel med denne type.

Den tekniske årsag til at MOSFET ikke er så nemme at arbejde med til en H-Bro er nemlig det at der kræves noget der kan trække op mod forsyningen (som en PNP-transistor). Her er den tilsvarende en P-channel MOSFET, men de har bare den ulempe, at de ikke er så gode til at tænde for strømmen som en N-channel. (de har større indre modstand). Det er der dog efterhånden udviklet, så det er mere realistisk at anvende den type.

Der så en anden ulempe, som man må tage højde for, nemlig det at der er en lille forsinkelse i kredsløbet, hvilket gør at man er nødt til at lægge en lille forsinkelse ind, hvis man vil bruge et signal til at styre H-Broen med, i stedet for selv at sikre i softwaren at der ikke sker kortslutning ved at slukke for det ene sæt inden man tænder det andet. Det giver en enklere elektrisk styring, så man kunne lave H-broen som følger:

Simpel H-Bro styret af 2 signaler, hvor man selv har ansvaret for at der ikke korsluttes forsyningen
Simpel H-Bro styret af 2 signaler, hvor man selv har ansvaret for at der ikke korsluttes forsyningen

Med 2 sæt af denne H-Bro vil det være enkelt at kunne styre en stepmotor, og det vil gøre det simpelt at komme til at køre half-steps, hvilket automatisk vil lave den sikring at man slukker den ene retning inden den anden tændes, da man lige netop arbejde med at slukke den ene vikling for at lave half-step.

Simuleringen er vist med to generatorer faseforskudt, og den viser at opstillingen fungerer som ønsket. Diagram med simulering kan findes på dette link til falsted.com

Styring med kun fremad og bak

Hvis man vil styre en motor/vikling, med et signal, så er der her en kredsløbsmulighed, hvor der indføres en forsinkelse ved hjælp af et RC-led og noget logik som vist her:

H-Bro til styring med et signal pr. motor/vikling med sikring af skiftetidspunktet - vist med simulering
H-Bro til styring med et signal pr. motor/vikling med sikring af skiftetidspunktet - vist med simulering

Diagram med simulering kan ses og eksperimenteres med på dette link til falsted.com

Signalet kommer fra firkantgeneratoren, og er ment som et 3,3V eller et 5V signal fra en mikrocontroller som Arduino.

Den første transistor er en almindelig lille NPN som BC547, der sidder der for at konvertere op på en højere spænding.

Inverteren efter er for at sikre at signalet er pænt firkantet.

RC-leddet med 100k og 10nF er det der laver forsinkelsen til at transistorerne kan nå at slukke, inden de andre tænder, samt for at sikre at forsinkelser i de anvendte gates ikke har samme effekt. Tiden her er sat meget høj, for at det kan slå igennem i simuleringen. Hvis det skal anvendes til en stepmotor der arbejder hurtigt, så vil denne forsinkelse ødelægge signalerne, og måske endda have den modsatte virkning, så det anbefales kraftigt at forsinkelsen tilpasses den anvendelse der er tiltænkt.

De resterende invertere og de to NAND-gates er logikken der etablerer signalerne med forsinkelserne lavet af RC-leddet. Disse gates forsynes med 12V (derfor skal det nok være almindelige C-MOS kredse fra fx. 40-serien, som fx 4069 og 4011).

De 4 MOSFET transistorer er blot til simulering. Der skal vælges nogen passende typer som fx IRF530 som N-channel og IRF9540 som P-channel. Simuleringen giver blot en indikation om at det virker. Kredsløbet skal tilpasses de rigtige MOSFET og de gate-typer man vælger at anvende.

Ideen med at anvende en højere spænding er at man kan drive mere med den høje spænding, men også at de foreslåede MOSFET fungerer bedre når de kommer op på min. 10V GS-spænding, da de tænder mere effektivt til høje strømme - igen er det overvejelser man skal gøre sig til den enkelte anvendelse.

Modstanden på 80 ohm er blot en simulering af en motor/vikling eller hvad man har tænkt sig at drive.

I opstillingen skal der desuden tilføjes 4 klamping-dioder, hvis man skal arbejde med en induktiv belastning.

Styring med mulighed for at slukke viklingen

Hvis ens styringsbehov ikke kun er frem og tilbage, som det kan være ved en stepmotor, men at man også skal have muligheden for at kunne slukke for viklingen, så skal der indføres et ekstra signal til at slukke, samt logik til at slukke alle MOSFET.

For at avende de samme gates er der lavet følgende opstilling:

Styring af H-broen med muligheden for at slukke for belastningen
Styring af H-broen med muligheden for at slukke for belastningen

Der skal et højt signal ind på den ekstra transistor (igen bare 3,3V eller 5V signal) for at viklingen tændes, og så vender opstillingen strømmen i belastningen med den nødvendige pause.

Det skal bemærkes at alle simuleringer er lavet med ret lav hastighed, og at det kun skal illustrere principperne i logikken og det at tænde MOSFET'erne forskudt. Årsagen er at simuleringen ikke tager højde for de praktiske forhold i komponenterne (kapaciteter, udgangsstrømme osv.)

Praktisk test af kredsløbet

Som det kan ses i diagrammet herunder er der ændret i komponentstørrelserne, og der er sat navne på MOSFET'erne samt placeret klampingdioder, så der kan drives en induktiv belastning:

Diagram med praktiske størrelser til normal brug af H-Broen
Diagram med praktiske størrelser til normal brug af H-Broen

Forsinkelsen er dimensioneret til ca. 2us, da både gates og MOSFET har delay og turnoff-tider på 50-100ns, så for en sikkerheds skyld sættes tiden 20 gange så stor.

Ved testen viste målinger at det ikke bare er for lidt ekstra sikkerhed at der skal 2us til. Den værste faktor er at drive kapaciteten i gaten på MOSFET'erne, som det kommenteres under målingerne.

En anden erfaring der kom ved målingerne er at transistoren BC547[5] skal drives ret hårdt for at kunne følge med til skiftetiderne.

Der er anvendt IRF530[6] som N-channel og IRF9540[7] som P-channel. Med netop disse to MOSFET, så er klampingdioderne faktisk overflødige, da begge MOSFET har den indbygget. De er beholdt i diagrammet, for at gøre opmærksom på at de er vigtige.

Til de logiske komponenter anvendes standard CMOS kredse fra 4000-serien, da de kan forsynes med op til 15V, og derfor har et bredt anvendelsesområde. Der er anvendt CD4069[8] som inverter og CD4011[9] som NAND-gate.

Belastningen af H-Broen er lavet med 4 stk 1,2 ohm 10W, så den samlede belastning ligger omkring 5 ohm.

Over forsyningen er der placeret to kondensatorer, en 4700uF og en 100nF. De skal placeres tæt på MOSFET'erne, da funktionen er at levere strøm hurtigt. Grunden til at anvende to forskellige typer er at den store har kapaciteten til at lever meget strøm, men er ikke god til at gøre det meget hurtigt, den lille har det omvendt.

Målingerne herunder er alle foretaget med et firkant-signal på 50 kHz, og hvor ikke andet er bemærket er forsyningen ca. 12 V (der er ret meget tab i tilledninger og fumlebræt på grund af store strømme). Da oscilloscopet kun har 2 kanaler er en del billeder klippet sammen i Photoshop for at tydeliggøre sammenhængene.

Første måling herunder er en visning af forholdene omkring transistoren og formning af signalerne:

Målinger på input-transistoren Q1 i H-Broen
Målinger på input-transistoren Q1 i H-Broen

Den nederste blå input-kurve er spændingen der kommer ind fra tonegeneratoren, som det ses er spændingen ikke helt oppe på 5V, det skyldes at tonegeneratoren har 600 ohm i udgangen, og at de 3,3 k ohm belaster spændingen ned omkring 4V. Dette har ikke væsentlig betydning.

Den øverste røde kurve er målt på collector af Q1 ved R2, og som forventet inverteres signalet og får en amplitude på ca. 12V. En lidt uventet ting er at der kommer en forsinkelse på ca. 2us når signalet går højt. Denne forsinkelse skyldes at transistorens kapacitet på BE skal aflades gennem de 3,3k ohm, og det tager ca den tid, hvilket forsinker transistoren i at slukke. Det får ikke den store betydning i resten af kredsløbet, andet end at der arbejdes med tider på 8us og 12us i stedet for symmetrisk 10us og 10us. Havde vi målt på 500 kHz, så ville det have ødelagt signalet totalt.

Den næste røde kurve er efter inverteringen af collector-signalet, og det ser ud helt som forventet - rent og firkantet uden synlige forsinkelser og i den forventede fase. Dette signal bruges som reference for resten af målingerne.

En ting der er værd at bemærke er at de høje 12V signaler har nogle udsving - de stammer fra tidspunkter hvor MOSFET'erne tænder og slukker, og dermed ændrer belastning af forsyningen, og da opstillingen er lavet på fumlebræt og der er ledninger hen til fumlebrættet, så vil der uvægerligt være spændingsfald på disse ledninger. Det er stabiliseret en del med kondensatorer over forsyningen, men det slår stadig igennem, som det kan ses på alle målingerne.


Anden sæt målinger viser indførslen af forsinkelsen:

Målinger på forsinkelsen i H-Broen etableret med R3 og C1
Målinger på forsinkelsen i H-Broen etableret med R3 og C1

Den nederste blå kurve er den der anvendes som reference gennem de følgende målinger. Det er udgangen af IC1A, der tidsmæssigt sætter referencen for hvad der sker videre i kredsløbet.

Den øverste kurve er målt på kondensatoren C1 ved indgangen af IC1C, og viser op og afladningskurven for RC-leddet dannet af R3 og C1. Op og afladning ser ud som forventet.

Den næste kurve skulle være digitaliseringen af det forsinkede signal, men det ses her at der er betydelige afrundinger på kurven. Dette skyldes at inverteren ikke digitaliserer 100%, men blot laver en forstærkning af det indkomne signal så inputtet i de logisk veldefinerede områder giver et rent output, mens det udefinerede område fra 30-70% af forsyningen ikke giver et sikkert logisk output[8]. Dette har dog ingen praktisk betydning, da dette output blot føres videre til andre logiske kredse, og ikke tænder eller slukker for MOSFET'erne. Signalet på udgangen passerer pænt hurtigt igennem det udefinerede område, og giver ikke nogen problemer. Havde det givet problemer kunne man anvende en inverterende schmitt-trigger med en hysterese som CD40106, så ville problemet være elimineret.

Der ses at den ønskede forsinkelse på 2us ikke er helt opfyldt, men at det ligger tæt nok på med ca. 1,7us til 1,8us til at kunne anvendes.


Tredje sæt målinger viser hvordan de sidste signaler, der dannes til at skabe styresignalerne, ser ud:

Målinger på inverteret indgangssignal og ikke inverteret forsinket indgangssignal
Målinger på inverteret indgangssignal og ikke inverteret forsinket indgangssignal

Vi har igen samme referencesignal på den nederste blå kurve.

Øverst i det tredje sæt målinger er der vist inverteringen af reference-signalet. Det ser ud helt som forventet.

Den nederste røde kurve viser det forsinkede signal i ikke inverteret fase, og det har igen de samme forsinkelser samt at det kan ses at det er rette meget pænt op på stige- og falde-tiderne.


Fjerde sæt målinger viser de signaler der faktisk driver de to P-Channel MOSFET'er og de to N-Channel MOSFET'er:

Målinger på Gate-signalerne til MOSFET'erne i H-Broen
Målinger på Gate-signalerne til MOSFET'erne i H-Broen

Igen har vi det samme blå referencesignal nederst.

Den øverste kurve på udgangen af IC2B er dannet af referencesignalet og det ikke inverterede, forsinkede signal, således at de trækker lavt efter de ca. 2us forsinkelse og går højt igen lige når referencesignalet går lavt, så MOSFET'erne tænder forsinket og slukker u-forsinket. Dette er med til at skabe et tidsrum hvor alle MOSFET'er i broen er slukket. Man kan også ses på signalet hvorfor denne forsinkelse er så vigtig, nemlig at skiftet bliver forsinket ved at udgangen ikke kan drive den kapacitet der sidder i gaten af MOSFET'en hurtigere ON / OFF, der godt nok gør at MOSFET'en er ret hurtig til at begynde at tænde, men at den tager et stykke tid om at slukke. Størrelsen på kapaciteten ind på gaten på en IRF9540 kan ses herunder som 1400 pF, hvilket forklarer det langsomme skift på næsten 2us på udgangen af NAND-gaten.

Kapacitetsværdierne på en IRF9540 fra databladet
Kapacitetsværdierne på en IRF9540 fra databladet[7]

Den anden kurve er inverteringen af den øverste kurve fra IC1E, og den anvendes til at drive den N-channel MOSFET U$2 der skal tænde samtidigt med P-Channel MOSFET'en U$3 omtalt lige ovenfor. På dette signal ses noget af det samme fænomen, blot ikke så markant, hvilket skyldes at den IRF530 der anvendes har en lavere gate-kapacitet, som det kan ses i databladsudsnittet herunder:

Kapacitetsværdierne på en IRF530 fra databladet
Kapacitetsværdierne på en IRF530 fra databladet[6]

På samme måde som ved øverste og anden øverste kurve kan man se de samme ting på signalerne for de næste to kurver. De er dannet af IC2A og IC1F og lider af de samme skavanker, men det er tydeligt at se at der lige netop er blevet slukket helt for det ene sæt MOSFET inden det andet sæt tænder, så forsinkelsen på de små 2us ser ud til at være nok.

Det ses desuden på de to nederste signaler at de kun tænder MOSFET'erne i ca. 6us, hvor de to øverste signaler tænder MOSFET'erne i ca. 10us. Det skyldes den asymmetriske forsinkelse som transistoren i starten indførte, så der kom 12us puls og 8us pause i referencesignalet. Dette betyder at 50 kHz er omkring den øverste grænse at denne opstilling kan anvendes ved, hvis der skal fordeles nogenlunde rimeligt mellem de to strømretninger.


På det femte sæt målinger ser vi hvordan spændingerne på udgangen af H-Broen ser ud:

Målinger på input-transistoren Q1 i H-Broen
Målinger på input-transistoren Q1 i H-Broen

Igen er det referencesignalet i den nederste blå kurve.

Ser man på tidsforholdene i den øverste kurve, ses det at der hvor MOSFET'erne skulle starte omkring 2us inde i referencesignalets høje periode, så er begge sider høje lidt under 1us, hvorefter venstre side trækkes lav, og højre side bliver trukket en anelse nedad (men er tændt) det rettes dog hurtigt.

Der hvor MOSFET'erne skulle slukke, nemlig hvor referencesignalet går lavt, der ser vi igen en forsinkelse, denne gang på lidt over 1us inden høje side begynder at gå lav, og umiddelbart efter ses det også at venstre side går opad sammen med højre side, og broen er slukket i begge retninger.

Det samme gentager sig i den modsatte fase, og det ses at de tider der er spænding over belastningen svarer til de ca. 10us og 6us som det kunne ses tidligere. Kapaciteterne giver altså endnu en forsinkelse på at tænde udgangen på H-Broen.

Ser man på spændingsforholdene, så vil man se at når MOSFET'erne er tændt, så er den lave spænding oppe på omkring 1V og den høje spænding ligger på ca. 10V. Det betyder at der ligger en spænding på 9V over belastningen, og der trækkes altså omkring 1,8A i belastningen.

Med ca. 1V og 2A er det omkring 2W der afsættes i hver MOSFET mens de er tændt, men da ingen af dem er tændt i mere end halvdelen af tiden, så afsættes der i gennemsnit ikke mere end 1W i hver MOSFET, hvilket er omkring grænsen for hvad de kan tage uden køling. Sætter man derimod køling på, så vil de kunne klare væsentlig mere. Det kan dog ikke anbefales at have broen slukket, da der så vil afsættes ca. de 2W i to af MOSFET'erne, og det er mere end de kan klare uden køling.


Det sjette kurvesæt viser de forhold der er på forsyningen:

Målinger på forsyningen til H-Broen
Målinger på forsyningen til H-Broen

Disse målinger er lige for at forklare at forsyningen ikke er helt stabil, selvom den er blevet sikret med to kondensatorer for at holde den nogenlunde stabil.

På den blå referencemåling ses de underlige variationer i det høje signal ca. 2us efter signalet er gået højt og igen lidt variation i det lave signal 2us efter at det er gået lavt.

Den øverste røde kurve viser tydeligt at der sker noget på 12V forsyningen samtidigt med at forstyrrelserne kommer i signalet, så de stammer herfra. Årsagen til dem er at MOSFET'erne skifter fra tændt til slukket til at være tændt igen i dette tidsrum. Der ses en lignende forstyrrelse på forsyningen i det andet tidspunkt hvor MOSFET'erne skifter om på spændingen.

På det tidspunkt hvor forstyrrelserne er på forsyningen kan der også anes en lille variation på GND-målingen, som jo burde være helt flad. Det skyldes modstande og induktioner i fumlebrættet.


Det syvende kurvesæt angiver hvad der sker, hvis man sætter forsyningen ned til omkring 5V:

Målinger på styresignal og output af H-Broen ved 5V forsyning
Målinger på styresignal og output af H-Broen ved 5V forsyning

Referencen er tidsmæssigt den samme blå kurve, men er her faldet til et 5V signal.

Den øverste kurve er den spænding der styrer gaten på MOSFET U$2, altså signalet ud af IC1E. Hvis man sammenligner den med kurven for det samme signal med 12V forsyning (i det fjerde målesæt), så vil man se at det tager næsten dobbelt så lang tid for signalet at komme op på 5V, som det tog signalet at komme op på 12V. Dette skyldes CMOS-kredsens ringe evne til at drive strøm ved den lave forsyningsspænding[8]. Det betyder både at MOSFET'erne tænder senere, men også at de slukker væsentligt senere. Forklaringen kan ses på de strømme en CMOS kreds kan drive som vist i databladet herunder:

Udsnit fra databladet på en CD4069, der viser strømmene som udgangen kan levere ved hhv. 5V, 10V og 15V
Udsnit fra databladet på en CD4069[8], der viser strømmene som udgangen kan levere ved hhv. 5V, 10V og 15V

Kigger man på de to næste kurver kan det være lidt svært at se, men det tolkes at de 2us efter at referencesignalet går højt, der begynder det næste sæt MOSFET'er at tænde, men den anden del af H-Broen er endnu ikke slukket, så forsyningen kortslutter, og først mellem 4us og 6us kommer H-Broen ud af dette igen, hvor det kan ses at den venstre side trækker lavt og den højre side trækker højt i belastningen.

Igen hvor den øverste kurve burde gå lav sammen med referencesignalet, der forbliver det højt i ca. 4us, på grund af den store kapacitet i gaten og den ringen evne til at trække strøm i udgangen af CMOS-kredsen. Dette giver igen en fase hvor broen er kortsluttet, og derefter en fase hvor den højre side langsomt bliver lav, således at kortslutningen er væk og der løber strøm i loadmodstanden.

Konklusionen på disse målinger er at den viste opstilling ikke er egnet til 5V forsyning. Det kunne måske reddes ved at anvende HCMOS kredse som fx 74HC00 til NAND-gaten[10] og 74HC04 til inverteren[11], der kun kan arbejde på 5V, men som til gengæld kan trække større strømme, hvilket ville kunne løse problemet. Jeg ville så helt sikkert også fjerne transistoren i indgangen, da den kun er der for at tilpasse op til 12V signaler.


H-bro med 4 MOSFET

Navnet H-bro stammer fra måden hvorpå DC motoren forbindes til strømforsyningen på; det danner noget der ligner et H. Dette ses på figuren herunder. til kan i første omgang opfattes som almindelige vippeafbrydere, der enten kan være sluttet eller afbrudt. Som forklaret under Generel Styring af H-broen kan de fire vippeafbrydere kombineres i forskellige settings, hvorved der opnås enten strømløb den ene vej gennem DC motoren, eller den anden vej gennem DC motoren, hvilket bestemmer DC motorakslens rotationsretning. Motoren kan endvidere bremses.

Principskitse for H-bro
Principskitse for H-bro


På el-diagrammet nedenfor ses H-broen hvor kontakterne K1 til K4 er udskiftet med MOSFET transistorer. Hver af de fire MOSFET transistorer styres (dvs. åbnes og lukkes) ved at sætte K1, K2, K3 og K4 enten høj (+5 V fra mikroprocessor) eller lav (0 V).


El-diagram over H-bro med 4 MOSFET
El-diagram over H-bro med 4 MOSFET


De anvendte MOSFET transistorer kan håndtere en strøm på maksimalt 27 A. Overstiges denne strømstyrke, vil transistorerne brænde af.

Da de anvendte P-kanals MOSFET transistorer skal have en spændingsforskel mellem Gate og Source på -8V, for at kunne håndtere en strømstyrke gennem Source til Drain på 27 A, anvendes en gate-driver. Det er transistoren Q1, sammen med modstandene R1, R3 og R4 for Q2, mens Q6, R5, R6 og R7 er gate-driver for Q4.


Beregning af modstande til signaltilpasningen til H-bro

På el-diagrammet ovenfor, ses ”signaltilpasningskredsløb” markeret i de to røde kasser. Formålet med disse to kredsløb er, at kunne tænde og slukke for P-kanals MOSFET (Q2 og Q4 på el-diagrammet ovenfor). Da P-kanals MOSFET’s Source ben er forbundet til +12 V, og ikke GND som en N-kanals MOSFET ville være, er Arduinoboardets output på 5 V jo i forhold til GND og ikke i forhold til +12 V, og dermed ikke direkte brugbar for at styre P-kanals MOSFET.

Transistoren, Q1, er en almindelig BC547 småsignals transistor. Den tænder, når spændingen mellem Basis (ben 2) og Emitter (ben 3) er 0,6 V. Det vil sige, at når punktet K1 – der er forbundet til en af Arduinoboardets outputporte – bliver HIGH, er der 5 V i forhold til GND på K1. Ved Basis på Q1 skal der være 0,6 V, og forskellen mellem de 5 V og 0,6 V – det vil sige 4,4 V – skal ligge over modstanden R1. For at kunne beregne værdien af R1, skal vi kende strømstyrken der løber ind i Basis. Den er 100 gange lavere end strømstyrken der løber ind i transistorens Collector-ben (ben 1). Det vælges at designe kredsløbet ud fra, at strømstyrken ind i Collector på Q1 er 10 mA. Dermed beregnes strømstyrken i Basis, , til:


Derefter beregnes R1:


Når transistoren Q1 er tændt, ligger der ca. 0,2 V mellem Collector og Emitter. Spændingen mellem R3, R4 og Q1 er 12 V. Dermed ligger der en spænding på: over modstandende R3 og R4.


Modstanden R3 skal beregnes, så spændingen over denne bliver 8 V, da dette vil tillade et strømtræk gennem Q2 på op til 27 A[12]. Det er den spænding der vil komme til at ligge mellem Gate og Source på Q2. Strømmen gennem R3, , er sat til 10 mA. Modstanden R3 kan dermed beregnes:


Tilbage er modstanden R4, hvor den resterende spænding skal ligge:

Færdige styringer der indeholder en H-Bro

En løsning der kan være god, hvis man bare skal have en H-Bro til at fungere er at vælge en færdig kreds/board der indeholder hele styringen. Her har vi forskellige typer:

Principskitse over L293 motor driver

En L293 der består af 4 drivere, der to sammen kan forme en H-bro, den har følgende egenskaber:

  • 16 bens DIL IC, der skal monteres på et print (virker ikke så godt i et fumlebræt)
  • Kan danne 2 H-Broer men også 4 individuelle styringer af motorer, der ikke skal vende polaritet
  • Skal have separat logik-forsyning 5V (4,5 - 7 V)
  • Arbejder med motorer på 5 - 36 V op til 1A
  • SKAL have beskyttelsesdioder monteret fx. typen 1N4007
  • Er meget fleksibel i opbygningen
Billede af print med 2 stk L9110 H-Bro drivere

Et print med to stk L9110 H-Bro kredse, der kan styre enten to DC-motorer eller en Bi-polar Stepmotor. Printet er bl.a. købt ved Aliexpress.com, og har følgende egenskaber:

  • Sidder på et print med 6 bens tilslutning til styring og forsyning samt 4 skrueterminaler til motorer.
  • Har fast 2 stk. H-broer
  • Har ingen logikforsyning, men skal have fælles stel mellem styring og motorforsyning
  • Styresignaler på 3-5V
  • Motorspænding på 2,5 - 12 V med en maks strøm på 800mA
  • Har indbyggede beskyttelsesdioder
Billede af print med en A4988 stepper motor driver

Et print med enA4988 stepper motor driver, der kan styre en bipolar stepmotor. Printet er køb ved [aliexpress.com], og har følgende egenskaber:

  • Sidder på et print med 16 stik-ben (alle skal forbindes fornuftigt
  • Har udgange til en 2 viklings bipolar stepmotor
  • Har 3-5V logik-forsyning, med fælles stel til motorforsyningen
  • Motorspænding på 8-35V med en kams strøm på 1,5A
  • Har indbyggede beskyttelsesdioder
  • Kræver en lille køleplade ved hård belastning
  • Har en avanceret styring, der kan mikrosteppe stepmotoren - kan indstilles til Full-step, Half-step, 1/4 step, 1/8 step og 1/16 step, hvor styringen PWM-pulser signalet ind mellem steppene.
  • Skal styres med step og direction - ikke med normal stepper software

Referencer

Analog
Analog Begreber Grundlæggende El-fysik - AC-Spænding - AC-Strøm - DC-Spænding - DC-Strøm - Effekt - Nøjagtighed - Præcision - Spænding - Strøm - Frekvens - Komponent - Relæ
Analog Komponenter Spole - Spole ved AC - Spole ved DC - Spolen - Beregning af induktiv-reaktansen - Spolen - Seriekobling og parallelkobling - Spolen - Tidskonstant for RL-led - Kondensator - Kapacitet - Kondensator ved DC - Modstand - Operationsforstærker - Diode - Zenerdiode - Transistor - MOSFET transistor - Transformator - Adapter - DC-motor - Mikrofon - LED - Photo Interrupter - 7-segment-display
Analog Kredsløb Belastet spændingsdeler - Filter - H-bro - Regulator - RFID - Spændingsdeler - Subtraktionsforstærker - Wheatstones målebro
Operationsforstærker Opamp Kredsløb - Differensforstærker - Inverterende forstærker - Ikke inverterende forstærker - Instrumentationsforstærker - Modkobling - Spændingsfølger - Summationsforstærker - Subtraktionsforstærker
Filtre Aktive filtre - Komplekse tal - Maple - Sammenkobling af filtre - Butterworth - Chebyshev - Band-pass - RC-Led - Spole ved AC
Diverse Aktuator - Analog-bogen - Diagram - Komplekse tal - Konverter - PWM - Radiobølger - Regulerings teknik - Simulering - Strain gauge - Transducer - Mikrofonforstærker