H-Brigde motor 12VDC - 11A

Lambiek

Special Member

Op 14 juli 2021 13:09:49 schreef benleentje:
Want als je motor heel erg klein is kan je die ook gewoon direct op op een microcontroller aansluiten want die heeft ook push-pull uitgangen.

Dat lijkt me toch niet verstandig om te doen. :)

Als je haar maar goed zit, GROETEN LAMBIEK.

Maar wat is dan het voordeel van een halve brug tov een enkele mosfet als de richting niet wilt omkeren?

Zou ik alleen doen als je ook wilt kunnen remmen door de motor kort te sluiten.

Ik heb pas een keer of 3 gezegd dat je PWM frequentie veel hoger moet zijn dan de L/R tijdconstante van je motor

En hier komen we tot de kern van de zaak.
Dat betekent dus dat de hele PWM cycle binnen die 200 uSecs moet vallen als ik het goed begrijp.

Ik had nog nooit gehoord van een L/R tijdconstante van een motor, en zie die ook nooit in een datasheet van een motor. Maar misschien kijk ik naar de verkeerde motortjes? En meestal heb ik trouwens helemaal geen datasheet. Dus dan de L/R maar meten in een testopstelling?

Maar ik zie wel op de scope dat de recovery tijd sterk varieert met de motor spanning en met de motorbelasting. Dan moet de Pwm frequentie hoog genoeg zijn om in alle gevallen safe te blijven?

Op 14 juli 2021 13:35:46 schreef Lambiek:
[... motor op gpio ...]
Dat lijkt me toch niet verstandig om te doen. :)

En toch heb je (stappen)motoren die precies hiervoor gemaakt zijn.

Bijvoorbeeld Deze. Max 20mA per fase. Gewoon op 4 GPIOs en het werkt.

D'r was hier discussie of dat wel mocht. Ik heb zo'n ding gekocht en het getest. Ik heb dat ding een miljoen stapjes laten doen en dat ging goed.

@dekees. Onder de 20kHz horen mensen de motor "zingen". Denk aan de treinen met de bijnaam "doedelzak". (die zaten ERG laag omdat ze de power-elementen in de tijd dat die gemaakt werden niet beter/sneller konden krijgen). Die 20kHz is gewoon snel zat om in de buurt of boven de RL frequentie te zitten.

Dus je wilt boven die 20kHz gaan zitten. De L-R tijd kan je eenvoudig meten. Net als een R-C tijd, gewoon de L en R apart meten en vermenigvuldigen. Maar je hoeft hem niet echt te weten.

In bepaalde "extreme" gevallen, zal de halve rimpelstroom groter zijn dan het gemiddelde met als gevolg dat de stroom negatief kan gaan. Dan verlies je iets aan efficientie. Maar dat is een speciaal geval wat zelden voorkomt.

Waar je ook efficientie aan verliest is dei 0.6V over de vrijloopdiode. Dat is de reden dat ik voor een halve-H heb gekozen. Bij 5A motorstroom had ik geen zin in 3W aan verliezen in m'n kastje. Dus nu zit daar een 3.5 mOhm mosfet van een kwartje. Gewoon om die 3W aan verliezen wat te verminderen.....

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Lambiek

Special Member

Op 14 juli 2021 14:33:21 schreef rew:
En toch heb je (stappen)motoren die precies hiervoor gemaakt zijn.

Bijvoorbeeld Deze. Max 20mA per fase. Gewoon op 4 GPIOs en het werkt.

D'r was hier discussie of dat wel mocht. Ik heb zo'n ding gekocht en het getest. Ik heb dat ding een miljoen stapjes laten doen en dat ging goed.

Oké, het kan dus wel. Wel met een speciale motor die er voor geschikt is.

Als je haar maar goed zit, GROETEN LAMBIEK.

@rew Ok duidelijk.

Dus het dicht-schakelen van de vrijloop-diode is inderdaad wel iets wat de efficiency kan verbeteren.

En dat je de motor niet wilt horen is ook wel een geldig argument. Dus daarom hoge frequentie. Ook duidelijk.

Ik was expres voor deze test naar 100Hz gegaan omdat je dan precies kunt zien wat er gebeurt. Op hoge frequentie zie je de back-EMV niet meer. En dan hoef je dus ook niet bang te zijn voor reverse-current tgv het kortsluiten van de Back-EMF

Dat levert dan wel een uitdaging voor TS. Die IR2184 driver werkt niet zonder PWM, en de standaard PWM frequentie van bijv een Arduino is veel te laag. Dus dan moet je zelf met de timers gaan spelen.

Lambiek

Special Member

Op 14 juli 2021 15:10:44 schreef deKees:
Ik was expres voor deze test naar 100Hz gegaan omdat je dan precies kunt zien wat er gebeurt.

Bij de wat oudere heftrucks deed men dat wel vroeger, die konden behoorlijk knerpen. Die zaten ook rond de 100Hz, alleen waren dat geen H-bruggen en geen halve bruggen, maar gewoon 12 of meer fets parallel, het ompolen ging via een zwaar relais.

,....en de standaard PWM frequentie van bijv een Arduino is veel te laag.

Volgens mij gaat hij een pic controller gebruiken en daar haal je via HPWM zonder probleem die frequentie.

Als je haar maar goed zit, GROETEN LAMBIEK.
benleentje

Golden Member

Ik had nog nooit gehoord van een L/R tijdconstante van een motor, en zie die ook nooit in een datasheet van een motor.

Meestal zit dat in je opleiding als je bv elektronica doet, het is zeker niet iets wat in de datasheet van de motor hoort te staan. Hoewel ik denk dat er wel gegevens in staan waarmee je de L/R constance kan uitrekenen maar daar heb ik nog geen verstand van.

PWM is een kreet waarvan de hoofdzaak is de duty cycle oftewel de verhouding tussen de aan tijd en de frequentie. En in principe maakt voor het PWM signaal zelf het niet uit welke frequentie die heeft. Dan kan met logisch redeneren wat zaken gaan bedenken. Wat als ik extreem lage frequentie hebt in zeg de µHz zeg met een periode tijd van 1 minuut en 50% dc kan je daar prima een verwarmingselement mee aansturen, hier maakt het niet uit dat het element afkoelt, maar het is ook niet optimaal voor het element om steeds grote temperatuur verschillen te hebben dat geeft een hoop stress in het materiaal.

Nu willen we een motor in snelheid gaan regelen. Met een periode tijd van 1 minuut en 50% dc kunnen we dan merken dat de motor 30s voluit gaat en 30S stilstaat. Dit lijkt dan niet op een snelheid regeling maar is meer gewoon aan uit. Of als het een SMPS voeding was had je 30S 320V en 30S niets, de spoel en condensator zouden dan extreem groot moeten zijn.

Blijkbaar is dit te langzaam en wat als we sneller gaan schakelen en ik heb dit experiment echt een keer uitgevoerd met een relais en en motor, de relais spoel tikte ik steeds even aan met een banaanstekker. Ik kon zo de motor redelijk in snelheid regelen, de motor viel in ieder geval niet steeds helemaal stil en ook niet op maximaal toerental. Ik kon dus aardig er tussen mikken, helaas was er werkgever die daar belangstelling voor heeft getoond :+

Ik kwam zo tot de conclusie als je maar snel genoeg kan schakelen dat de motor netjes in snelheid te regelen is. En met een verkeerde frequentie van de PWM zal de motor best wel een kleine rimpel in de snelheid hebben want in de basis is het gewoon aan en uit maar meestal is dat ook helemaal geen enkel probleem.

Optimaal PWM is dan dat de frequentie zo hoog is dat er geen snelheids rimpel meer is en de motor zich kan instellen op de gemiddelde stroom en dat ook daar de rimpel zo klein mogelijk is. Maar de frequentie ook weer niet te hoog want we willen geen 27Mhz zender bouwen.

En toch heb je (stappen)motoren die precies hiervoor gemaakt zijn.

Je hebt zelf al stappen motoren die zo klein zo als de kleine throughole elco's, https://nl.aliexpress.com/item/1005002491233057.html?spm=a2g0o.product…

Op 14 juli 2021 14:56:44 schreef Lambiek:
[...]
Oké, het kan dus wel. Wel met een speciale motor die er voor geschikt is.

Ja ik ging ook van de micro motoren uit. In principe zijn er niet speciaal voor gemaakt om zo aan te sturen maar zijn het gewoon hele kleine motoren die binnen het bereik van digitale IC vallen. Hoewel het best kan dat er een enkele motor wel om die reden zo is gemaakt.

Mensen zijn soms net als een gelijkrichter, ze willen graag hun gelijk hebben.

Op 14 juli 2021 15:25:49 schreef benleentje:
... in de datasheet van de motor ... Hoewel ik denk dat er wel gegevens in staan waarmee je de L/R constance kan uitrekenen maar daar heb ik nog geen verstand van.

In dit lopende topic heeft de TS daar de L en R gemeten, en vanochtend op basis van de L en R een kandidaat gevonden van welke motor het kan zijn. De L/R van die motor moet je zelf uitrekenen 1mH / 5.5 Ohm = 0.18ms.

,....en de standaard PWM frequentie van bijv een Arduino is veel te laag.

De arduino heeft 1 16 bit timer en de basis frequentie is al niet zo hoog, dus die heeft een enorm lange periode. De arduino mensen hebben ooit de keuze voor "resolutie" gemaakt en dat is nu vastgeroest in de standaard API. Beter was geweest om standaard te kiezen voor <iets> en dan de mogelijkheid bieden om aan te kunnen geven dat je het anders wil.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

@benleentje:

Klopt allemaal.

Bij het gebruik van de IR2184 driver krijg je nog een paar extra restricties:
- Minimum PWM frequentie moet hoog genoeg zijn om de boost condensator geladen te houden. Anders valt de high-side fet uit.
- En minimum frequentie wordt ook beperkt doordat de motor wordt kortgesloten tijdens de uit tijd. Geen probleem zolang dat niet te lang duurt. Maar als dat wel te lang duurt dan krijg je reverse current doordat de back-emk wordt kortgesloten en dat is op zijn minst slecht voor de efficiëntie.

Even wat tussendoor :-)

Ik maak gebruik van een PIC16F1788 maar kan niet vinden in de datasheet welke poorten PWM hebben. Tenzij ze CCP bedoelen maar dat lijkt mij stug.

Vroeger stond zoiets in de tabel met pin beschrijvingen.

I love it when a plan comes together !
Lambiek

Special Member

Op 14 juli 2021 16:46:10 schreef ritmeester:
Ik maak gebruik van een PIC16F1788 maar kan niet vinden in de datasheet welke poorten PWM hebben. Tenzij ze CCP bedoelen maar dat lijkt mij stug.

Dat zijn inderdaad de CCP pinnen.

Vroeger stond zoiets in de tabel met pin beschrijvingen.

Dat staat er nu nog. :)

Poort C1 en poort C2 zijn HPWM poorten. Max frequentie van de poorten is 32KHz. Als je het zelf maakt via timers kun je vele malen hoger, maar 20 of 30KHz is genoeg.

Volgens mij geld voor jou controller ook dit.

pic basic code:


Declare CCP1_Pin PORTC.2                    ; HPWM 1 op poort C.2
Declare CCP2_Pin PORTC.1                    ; HPWM 2 op poort C.1

HPWM 1,DUTYCYCLE,FREQUENTIE    
HPWM 2,DUTYCYCLE,FREQUENTIE 

Dutycycle is een variabele en frequentie een vaste waarde.

Bijv.

pic basic code:


HPWM 1,Var_1,20000  ; 20KHz
Als je haar maar goed zit, GROETEN LAMBIEK.
benleentje

Golden Member

De arduino heeft 1 16 bit timer en de basis frequentie is al niet zo hoog, dus die heeft een enorm lange periode.

De arduino kan gewoon PWM op 64kHZ. Het is inderdaad de library. Ze hebben iets met milis() via een interupt gedaan waardoor er tenminste 1 timer vast ligt. Ook zijn ze ervan uitgegaan dat meeste de arduino PWM gaan gebruiken voor het PWMen van leds.
De PWm frequenties voor arduino is 500Hz of 1Khz afhankelijk van welke pinnen je gaat gebruiken en als je dus de PWM aanpast naar 64Khz dan is dat 64x sneller en gaan je milis() en dus je milliseconden 64x sneller. Dat zou op zich geen ramp zijn maar andere bibliotheken gaan ook uit van de milis() en dan is je timing naar je LCD scherm ook ineens 64x sneller.
IN principe hoef je geen enkele bibliotheek te gebruiken en kan je alles ook zelf doen of je kan ook eventueel de bibliotheek die je gebruikt daarin de timing 64x langzamer zetten.

Mensen zijn soms net als een gelijkrichter, ze willen graag hun gelijk hebben.

Op 14 juli 2021 16:51:18 schreef Lambiek:

Dat staat er nu nog. :)

Thanks Lambiek. (ik bedoelde ook eigenlijk dat er altijd PWM stond maar dat is dus nu vervangen door CCP)

Verder neem ik aan dat ik voor de IR2184 SD-pinnen elke I/O pin kan gebruiken van de PIC16F1788. Of niet ?

I love it when a plan comes together !

Op 14 juli 2021 12:32:53 schreef rew:
Bij heel lage PWM percentages zal de boost condensator mogelijk niet geheel opgeladen zijn, maar dan loopt er weinig stroom door de motor en doet ie het maar als diode.

Dat is een aanname, die in jouw geval misschien wel klopt. Ik heb ook motoren bestuurd die met 5% pulsbreedte, bij stilstand, al ver over hun nominale stroom gaan (en die was ~250A).

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
Lambiek

Special Member

Op 14 juli 2021 17:38:44 schreef ritmeester:
Verder neem ik aan dat ik voor de IR2184 SD-pinnen elke I/O pin kan gebruiken van de PIC16F1788. Of niet ?

Waarom zou je die pin gebruiken, tenzij je daar een speciale reden voor hebt?

Als uitgangs-pin kun je het beste een TTL pin voor gebruiken. En voor je ingangen kun je het best een ST (Schmitt Trigger) pin gebruiken.

Als je haar maar goed zit, GROETEN LAMBIEK.

Op 14 juli 2021 17:48:35 schreef Lambiek:
[...]
Waarom zou je die pin gebruiken, tenzij je daar een speciale reden voor hebt?

Omdat ik dacht dat deze pin ge-enabled moest worden door de MC. Maar blijkbaar is dat niet zo en kan ik deze pin vrijlaten.

Als uitgangs-pin kun je het beste een TTL pin voor gebruiken. En voor je ingangen kun je het best een ST (Schmitt Trigger) pin gebruiken.

Dit begrijp ik niet zo goed. Ik neem aan dat ik CCP pinnen moet gebruiken voor de IN van de IR2184 voor de PWM aansturing.

I love it when a plan comes together !

Op 14 juli 2021 17:48:35 schreef Lambiek:
Waarom zou je die pin gebruiken, tenzij je daar een speciale reden voor hebt?

Je zult die toch minstens hoog moeten maken om de motor aan te zetten.

En als je daar je PWM signaal op zet dan kun je de andere pinnen statisch aansturen. Anders moet op 2 verschillende pinnen gaan PWMmen, één voor vooruit en een andere voor achteruit.

Lambiek

Special Member

Op 14 juli 2021 18:03:23 schreef ritmeester:
Omdat ik dacht dat deze pin ge-enabled moest worden door de MC. Maar blijkbaar is dat niet zo en kan ik deze pin vrijlaten.

Nee de pin hangt intern aan de 5VDC, als je die laag maakt stopt de driver er mee.

Dit begrijp ik niet zo goed. Ik neem aan dat ik CCP pinnen moet gebruiken voor de IN van de IR2184 voor de PWM aansturing.

Ja sorry, voor de IN pinnen gebruik je de HPWM pinnen. Maar als je nog meer I/O gaat gebruiken neem dan de pinnen die ik beschreef.

Op 14 juli 2021 18:07:21 schreef deKees:
Je zult die toch minstens hoog moeten maken om de motor aan te zetten.

Die pin is hoog, dus de driver werkt gewoon.

En als je daar je PWM signaal op zet dan kun je de andere pinnen statisch aansturen. Anders moet op 2 verschillende pinnen gaan PWMmen, één voor vooruit en een andere voor achteruit.

Je maakt gewoon een keuze links of rechtsom met je pwm signaal, meer niet.

Motor rechtsom één pwm signaal actief en de andere zet je uit, die is dan gewoon laag. Voor linksom het zelfde verhaal.

Als je haar maar goed zit, GROETEN LAMBIEK.

Op 14 juli 2021 18:08:38 schreef Lambiek:
Nee de pin hangt intern aan de 5VDC, als je die laag maakt stopt de driver er mee.

Ha ja, ik ziet het nu ook. Interne pull-up. Nogal ongebruikelijk voor CMOS chips dus dat had ik even niet gezien.

Motor rechtsom één pwm signaal actief en de andere zet je uit, die is dan gewoon laag. Voor linksom het zelfde verhaal.

En motor uit is dan allebei de PWM pinnen laag natuurlijk. Dan worden T2 en T4 aktief, en dan gaat de motor op de rem.

Als je de motor wil laten freewheelen dan moet je SD laag maken.

Lambiek

Special Member

Op 14 juli 2021 19:00:43 schreef deKees:
Ha ja, ik ziet het nu ook. Interne pull-up. Nogal ongebruikelijk voor CMOS chips dus dat had ik even niet gezien.

Zijn wel speciale chips natuurlijk, niet zomaar een cmos chippie. :)

Je kunt ook hardware matig een 4011 toevoegen (zoals ik gedaan heb) dan kun je wat combinaties maken met de ingangssignalen.

Als je haar maar goed zit, GROETEN LAMBIEK.

Ik heb even snel een PCB gemaakt om te testen. Deze gaat deze week mee met een andere bestelling. Zodra deze ontvangen is ga ik bouwen en testen en geef feedback. Kan dus even duren.

I love it when a plan comes together !

Wat doen die schattige diodes daar parallel met de MOSFETs? Als je al diodes gaat gebruiken op die plaats, moeten ze wel de motorstroom aan kunnen. Ik vind de huidige capaciteit op de DC bus een beetje beperkt, aangezien deze volledig ontbreekt.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
Lambiek

Special Member

Zet het gewoon op een bread board en test het. En SparkyGSX heeft ook een paar goede punten, dit wordt niets zo.

Als je haar maar goed zit, GROETEN LAMBIEK.

Nou ja, niets is wel een beetje dramatisch, maar er is nog wel plaats om een elco (of beter: meerdere) over de DC bus te zetten, dus dat zou ik zeker doen. Die diodes parallel met de MOSFETs zijn niet nodig, tenzij je echt antieke MOSFETs gebruikt zijn de body diodes goed genoeg.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken