rizeni motoru pwm - MOSFET vs. BJT

Zdravim,

resim ted jeden problem, zda-li do H mustku pro rizeni motoru pouzit MOSFETY nebo klasicky BJT.

Mam motor (7,2V, v plne zatezi si bere 3.3A, maximalni proud 21 A) napajeny z 7,2 V baterie.

Moto bude v uplnem H mustkovem zapojeni. Rizeny bude z uC pomoci PWM. Frekvenci jeste envim ale zrejme okolo 10-20 kHz.

Na zkousku sem si koupil hexfety s Rds okolo 20 miliohmu, od uC je mam oddelne optoizolatory. Funguje to docela pekne ale nevim jestli to bude to prave orechove protoze stejnak budou potrebovat ty horni dva budice (N kanal) a budou tam dva motory takze asi minimalne 2-4 integtrace zalezi kolik budicu bude na jednom IO.

Naproti tomu BJT by se dali asi koupit v darlingtonove zapojeni takze by byla pouze jedna soucastka…

Nejsem v tom ale moc zbehlej tak nevim jak to bude u BJT s rychlosti spinani, ubytkem napeti, zahrivani…

Diky vsem za rady

Co jsem tak pochytil, tak se většinou používaj mosfety nebo IGBT podle spínanýho proudu. Na tvoje potřeby budou mosfety stačit. Na horní i dolní spínač můstku se dává stejnej spínač. Na jejich řízení použij “half-bridge driver”. Např. IR21091 nebo L6384. Je sice do 600V, snad bude chodit i na 7V. Určitě se dají sehnat i nízkonapěťové. Zajistí i napěťový posun pro řízení horního tranzistoru a nebudeš to muset řešit ručně.

Diky za tip, myslis tedy ze BJT ne? Nejaky duvod je? :slight_smile: Rad bych aby to bylo co nejjednodussi jelikoz uz nezbyva moc casu na dodelani…

Zase bych ale nechtel aby to bylo na ukor spotreby nebo ryclhosti spinani.

Jinak koukal jsem na ty budice, a vlastne vsechny maji doporucene Vcc 10-20 V

Nemuze to byt problem, kdyz mam nizsi napeti? Nebo by se musel davat dc-dc menic?

Ty MOSFETy co mam maji Vth okolo 2V takze 7 voltu je sepne v pohode, ale aby to nevadilo tomu budici…

Tyhle drivery na menší napětí použít nejdou - první od 10V, druhej od 12V (mají UnderVoltage detector). Takže buď se poohlédnout po jiných nebo si to řídit ručně. U druhé varianty musíš zajistit Dead-time (drivery ho mají nastavitelnej a pro řízení 1 polomostu stačí 1 pin procesoru), jinak si můstky prostřelíš příčným proudem. To nastane když se jeden otvírá a druhý ještě není zavřen (zavírání je zpravidla pomalejší). BJT můžeš použít taky, jen je potřeba uživit jejich řízení. Budou mít trochu větší spotřebu.

Lze to nějak časově vyčíslit ?

Mám dva H-můstky pro bip. krok. motor řízené 16F819. Každý H-můstek je složen z 2x IRF9540 a 2x IRF540 všechny Gate jsou připojeny na portb, před IRF9540 je vždy invertor, takže zápisem log.1 na příslušný pin portu_b si otevřu ten který potřebuji, sekvenční logika pro spínání cívek je proto tvořena programově.
Otázka zní, jakou časovou prodlevu mám nechat mezi přepínáním čtveřice tranzistorů.

Zatím tam nemám žádnou pauzu a motor se otáčí plynule.

Neprogramovatelné drivery mívají 0.5us, programovatelné 0.5-5us. Ty budiče jsou ovšem schopny dodat/odsát proud 125/250mA což asi rpocesor nedá. Pak by se ty doby prodloužily.
Můžeš si to ovšem zkusit zjistit pokusně (považuj ovšem jednu dvojici pro jistotu předem za mrtvou :slight_smile:).
Stačí na to jeden poloviční můstek (horní + dolní tranzistor). Nastav dead-time 5us a nech ho přepínat. Změř si proud tím můstem, měl by být na úrovni zbytkového proudu tranzistorů. Snižuj dead-time, dokud se ten proud nezačne zvyšovat, krok zpět a máš to akorát.

Mělo by to jít i spočítat přibližně. Z DS tranzistorů zjistíš doby zavření a otevření, změříš si kapacitu hradel tranzistorů a podle proudových schopností mcu bys ten čas mohl dát dohromady (U=CQ=Cit). Osobně jsem to zatím nepotřeboval řešit, stačilo mi, že to jde nějak zpomalit a zrychlit. Přesnost mě netlačila. Pokud bys ovšem měl na přesnost nějaké požadavky, musel bys už s tím časem počítat.

Děkuji za informace,
protože se jedná o nenáročné zařízení na rychlost posuvu, nastavil jsem 10us. Na chodu motorů se tato změna viditelně neprojevila.

Ještě jedna věc, součástí mého zařízení bude i DC motorek na 12V 3A. Potřebuji u něj řídit otáčky 0 – 100%
(max. 12000 ot.) pomocí PWM s jedním IRF (točit se bude jen jedním směrem).
Jaká frekvence by byla pro motorek vhodná.

To nevim, vyzkoušej :wink:

… Taky rada, :smiley: tak já to vyzkouším, spíš jsem myslel jestli na to není nějaký předpis. :slight_smile:

Na měničích pro 3f motory bývá možnost nastavit několik frekvencí mezi 3 a 20kHz. Větčinou je tam popis asi ve smyslu “vyberte frekvenci při které motor nevrčí, nehučí, nepíská…” a podobně. S žádný exaktním předpisem jsem se zatím nesetkal.

Pro DC motory běžně modeláři používají okolo 120Hz. Já mám na několika poměrně macatých (12V 16A) motorech vyzkoušené, že těch cca 100Hz je opravdu akorát.

Mimochodem, piityy, ten tvůj driver IR21091 NELZE použít na H můstek pro reverzování motoru. Ten driver není pro statický režim, ale pro neustálé přepínání horního a dolního FETu, jinak se ti nemá jak dobíjet ta kapacita co zásobuje budič gejtu horního FETu. Nebo se snad mýlím? (datasheet jsme podrobně nezkoumal, jen jsem koukl na rychlo)

To máš pravdu, ten driver je pro PWM. Z principu PWM je jasné, že se stav neustále přepíná. Stačí ovšem driver přepnout parkrát na začátku aby se kondík nabil. Když potom pak horní FET otevřeš, již nevyžaduje další energii. Nabije se mu totiž kapacita, kterou má Gate a drží otevřený (ještě podpořen kondikem driveru). Použil jsem to u 150W mosfetu. Ten měl na G kapacitu 3n. Po jeho otevření již nebylo třeba napětí na G udržovat a několik minut se sám otevřený udržel.
Každopádně pro statiský režim by asi bylo potřeba zvolit galvanicky oddělený DC/DC a buď ho použít na živení toho kondiku nebo si to řídit vlastním obvodem.
Nadruhou stranu pokud není třeba reverzace, není potřeba ani ten driver.

piityy: stejnak si nemyslím, že to ve statickém režimu bude fungovat dobře. Nabít kapacitu na začátku několika přepnutími je zbytečný, stačí sepnout dolní tranzistor. Nezapomínej ale hlavně na to, že z toho elektrlytu se taky krmí část obvodů uvnitř toho gejtdriveru. A domnívám se, že jakmile napětí na elektrolytu klesne pod napětí gate, začne se gate vybíjet zpět do toho IO. To není dobré. DC/DC měnič je dobré řešení, ale drahé. (spolehlivé taky :slight_smile: )

Proč tak složitě s driverem? Stačí dát dolů N-FET a nahoru P. Gate horního přikotlit odporem na source a pak ho spínat otevřeným kolektrem k zemi. Není problém takto fungovat na pár kHz.

Přesně tak to mám zapojené já, o kolika max. kHz tady mluvíme…? :smiley: jen pro info.

Jednoduché, leč dost pomalé. Oddělal jsem si tak šestici mosů v 600W zesilovači. Potom taky je třeba dle napájení hlídat napětí G proti průrazu.
Petr: to záleží na tranzistrou a odporu. Tranzistor má na GS parazitní kapacitu. Doba zavření je klasické vybíjení kondiku odporem. uc = U0 * exp(-t/RC). Když znáš U0 (na který budeš nabíjet G) a napětí, při kterém je již kondenzátor zavřený, spočítáš dobu pro uzavření. Počítej ale že se tranzistor bude ohřívat víc než když bude řízenej nějakým tvrdým zdrojem.

Petr psal o 12V motoru, předpokládám, že bude mít 12V všude.

Petr: Mělo by to bez problémů fičet na 5kHz s přijatelnými hranami. NEbo si tam dej 2 tranzistory - komplementární dvojici a máš to. I na 100kHz budeš mít hrany do 500ns.

OK, nikdy jsem se nedostal k případu, abych potřeboval řídit otáčky motorku pomocí PWM. To je má první testovací verze, tak se raději dvakrát zeptám. Děkuji za informace.