Snelheid DC-motor via de BACK-EMF voltage

Hallo,

Ik wou vandaag eens proberen of ik de snelheid van een brushed DC-motor kan meten aan de hand van de geïnduceerde spanning (de BACK-EMF voltage) en in welke mate dit precies is. Ik heb voor een robotica projectje een snelheidsregeling voor een DC-motor nodig waar ik normaal een rotary encoder ga gebruiken. Toch wou ik eens uit nieuwsgierigheid meten hoe ver je kan geraken met de "Back-emf methode".

Meetopstelling:

De duty-cycle is regelbaar via een potmeter, de frequentie bedraagt 20kHz. De gate driver heeft een geïnverteerd ingang dus de motor
is actief wanneer het stuursignaal idle (0V) is.

http://www.uploadarchief.net/files/download/back_emf_sch.png

Meetresultaten:

1. Duty-cycle 10%, Uemf = Um - Uds = 24V*0,1 - 12,64V = -10,24V
http://www.uploadarchief.net/files/download/back_emf_10.png

2. Duty-cycle 20%, Uemf = Um - Uds = 24V*0,1 - 5,72V = -0,92V
http://www.uploadarchief.net/files/download/back_emf_20.png

3. Duty-cycle 30%, Uemf = Um - Uds = 24V*0,1 - 3,62V = 3,58V
http://www.uploadarchief.net/files/download/back_emf_30.png

4. Duty-cycle 40%, Uemf = Um - Uds = 24V*0,1 - 2,41V = 7,19V
http://www.uploadarchief.net/files/download/back_emf_40.png

5. Duty-cycle 50%, Uemf = Um - Uds = 24V*0,1 - 1,81V = 10,19V
http://www.uploadarchief.net/files/download/back_emf_50.png

6. Duty-cycle 60%, Uemf = Um - Uds = 24V*0,1 - 1,21V = 13,19V
http://www.uploadarchief.net/files/download/back_emf_60.png

7. Duty-cycle 70%, Uemf = Um - Uds = 24V*0,1 - 0,907V = 15,893V
http://www.uploadarchief.net/files/download/back_emf_70.png

8. De meetresultaten in tabelvorm:
http://www.uploadarchief.net/files/download/back_emf_ovv.png

Verder...

De back-emf spanning stijgt naar mate de snelheid toeneemt, dit klopt. Wat ik niet begrijp is waarom de meetresultaten beter worden wanneer de duty-cycle (gemiddelde motorspanning) toeneemt. De eerste twee metingen bij 10% en 20% zijn totaal afwijkend terwijl de laatste meting slechts een fout van 5% heeft.

Ik vermoed dat het iets te maken heeft met de interne inductantie van de motor maar momenteel blijft het gissen. Ik zou het fijn vinden mocht iemand mij wat op weg kunnen helpen om dit probleem op te lossen. Alvast bedankt.

Steve

Ik vermoedt dat de meting ook de PWM sturing bij de lagere toerentallen registreerd.

Als je een diode in "antiserie" zet tussen Uds en de meting dan aan de Kathode van deze diode en de massa zet, zou het in princiepe alleen de inductieve pieken van de motor mogen pikken.

Nu is het zo dat een Blokgolf sturing op een motor (Eender elke spoel) inductieve pulsen veroorzaakt, welke er zeer waarschijnlijk het zelfde uitzien als de pulsjes die je verkrijgt met het ronddraaien van de rotor, en het daarbij behoren verbreken en maken van de verbindingen tussen de spoelen in de rotor.

Dan moet er ook nog gezien worden hoeveel polen de rotor heeft, en deze in de brekekening meetellen voor het echte toerental.

Neovo.

Slechtziend aan linker oog, Blind aan rechter oog. Hosting van Forumbestanden: https://drive.google.com/drive/folders Meetarsenaal welke ik heb: https://drive.google.com/file/d/1vx54QxPe6YS3pJhybK_y0a380MYUFGyb/view

Misschien kun je hier eens naar kijken.

Als je op SBOA043 zoekt met google dan vind je nog documenten.

LDmicro user.

@Neovo Geesink: Als ik het goed begrijp wil de TS de snelheid meten door de open-klem spanning van de motor te meten in de "uit" fase van de PWM cyclus. De methode waar jij (denk ik) naar refereert, is het meten van de rimpel in de spanning of stroom, om daarmee de overgangen in de commutator te bepalen.

Wat me verbaast, is dat deze motor blijkbaar heel erg snel stroomloos is; gewoonlijk zou de stroom, bij een PWM frequentie van 20kHz en een redelijke stroom door de motor, helemaal niet op 0A komen in de tijd dat de MOSFET spert. Het lijkt erop dat deze motor een relatief hoge weerstand heeft, en een hele lage zelfinductie. Is het een exemplaar met een ijzerloze rotor?

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

Klopt het is een ijzerloze rotor, R=2.07Ω en L=199µH.

Ik heb zonet vastgesteld dat de back-emf spanning nauwkeuriger is bij lagere pwm frequenties. Ik heb nu eens sterk overdreven en verlaagt van 20kHz naar 100Hz.

Bij 50% duty-cycle is de back-emf = (24*0.5)-0,355 = 11,645 en de snelheid = 11,645V*370rpm/V = 4039rpm. Een afwijking van 391rpm of 8%. Dezelfde meting bij 20kHz heeft een fout van 15%.
http://www.uploadarchief.net/files/download/back_emf_100hz_50.png

Bij 10% duty-cycle is de back-emf nog steeds sterk afwijkend maar toch al heel wat beter dan bij 20kHz.

http://www.uploadarchief.net/files/download/back_emf_100hz_10.png

Wat ik maar niet begrijp is waarom dit zo is. Dus hoe komt het dat lage bij duty-cycles en hoge pwm frequenties de back-emf spanning totaal afwijkt van wat het zou moeten zijn. Echter bij hogere on-tijden wordt de back-emf gunstiger. De PWM frequentie heeft duidelijk een invloed want de back-emf wordt nauwkeuriger naarmate de frequentie daalt.

Ik ben niet van plan om deze methode in een snelheidsregeling te gebruiken maar wou gewoon eens proberen hoe ver je met deze methode kan geraken.

@ SparkyGSX:

Dat klopt inderdaad...
Ik was volledig uitgegaan van inductiepieken die de rotor teruggeeft als deze draait.

Ijzerloze rotors heb ik al sinds de N1700 V2000 recorders niet meer gezien, (Begin 80-er jaren?) dus dáár was ik totaal niet van uitgegaan.

Daar zat een vaste magneet in het midden, en draaide de helical coil geperste koperen rotor omheen... (Philips, altijd nét even anders...)

[additie]

Toevallig een link naar deze geonden... (Na dat de reclame eens stopt...)

http://www.designworldonline.com/ironless-dc-motors-deserve-a-second-l…

Daar staat zo'n motorprinciepe mooi getekend.

[/additie]

Neovo.

[Bericht gewijzigd door Neovo Geesink op vrijdag 3 oktober 2014 13:20:38 (23%)

Slechtziend aan linker oog, Blind aan rechter oog. Hosting van Forumbestanden: https://drive.google.com/drive/folders Meetarsenaal welke ik heb: https://drive.google.com/file/d/1vx54QxPe6YS3pJhybK_y0a380MYUFGyb/view
free_electron

Silicon Member

Haal die diode over de motor eens weg ...je recirculatie stroom loopt nu daar door..
De motor tegen emk heeft twee componenten. Een is een zuiver resistief element geleverd door het koper in de windingen. Naarmate de motor opwarmt of afkoelt kan dit serieus driften. (Stroom maal de weerstand van de spoel, en de speolweerstand verandert onder temperatuur. In harddisks compenseren we dat (geeft een serieuze afwijking op positionering van de kop)

Tweede element is de tegen emk van de spoel draaiende in het magnetisch veld.
Derde is een effect veroorzaakt diordat je stroom afneemt uit de spoel . Die stroom creert een magnetisch veld dat 'vecht' tegen het statische veld van de stator. Dit veroorzaakt een niet lineariteit. Ik moet ergens een document hebben wat het model van een motor voorstelt met de verschillende reactoren.

Nu kan het zijn dat ik onzin brabbel. Mijn expertise zit op brushless motoren en niet op dc motors.

Kzal dit weekend eens zoeken.

Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
fripster

Golden Member

'k vind het echt tof om Free_electron hier weer te zien ;-)

Eens een wirehead,altijd een wirehead.... gopher://fripster.ydns.eu

Op 3 oktober 2014 13:54:36 schreef free_electron:
Haal die diode over de motor eens weg ...je recirculatie stroom loopt nu daar door..

Klopt. Dat is de bedoeling. De stroom die daar loopt komt door de inductie van de motor wikkelingen. Haal je hem weg, krijgt de mosfet het zwaar. De "standaard" mening is dat ie dan subiet kapot gaat, maar het kan best dat ie er tegen kan. Maar dat hoeft niet.

De motor tegen emk heeft twee componenten. Een is een zuiver resistief element geleverd door het koper in de windingen. Naarmate de motor opwarmt of afkoelt kan dit serieus driften. (Stroom maal de weerstand van de spoel, en de speolweerstand verandert onder temperatuur. In harddisks compenseren we dat (geeft een serieuze afwijking op positionering van de kop)

Tegen EMK heeft helemaal niets met resistieve komponenten te maken. Als jij 10V over een motor zet, en die gaat 9000 RPM draaien, dan staat die 10V bijvoorbeeld over 9V tegen-EMK en 1V resistieve-component van het koper. Dit is JUIST het onderscheid tussen die twee.

Tweede element is de tegen emk van de spoel draaiende in het magnetisch veld.

Jep. Daar hebben we het hier over.

Derde is een effect veroorzaakt diordat je stroom afneemt uit de spoel . Die stroom creert een magnetisch veld dat 'vecht' tegen het statische veld van de stator. Dit veroorzaakt een niet lineariteit. Ik moet ergens een document hebben wat het model van een motor voorstelt met de verschillende reactoren.

Die snap ik even niet.

Maar goed, Het idee van onze TS hier is om de stroom tijdelijk tot nul te laten afnemen, de spanning over het resistieve element wordt dan nul, zodat je de tegen EMK kan meten.

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

Op 3 oktober 2014 13:54:36 schreef free_electron:
Nu kan het zijn dat ik onzin brabbel. .

Ik zal het niet direct onzin noemen, maar je haalt er wel wat dingen bij die er niet toe doen.
Op het moment van meten draait de motor, zonder dat er uitwendig stroom wordt toegevoerd of afgenomen, afgezien van een beetje meetstroom waarvan het effect verwaarloosbaar is. Je meet dus puur de generatorspanning en die is lineair met het toerental, zeker bij een ijzerloze rotor.

Dit principe wordt tegenwoordig algemeen toegepast bij digitaal gestuurde modelspoortreinen. De decoder in die treinen meet ook de tegen-emk, met het doel de snelheid constant te houden in geval de trein b.v. helling op of helling af rijdt.

Ik heb het erop gewaagd en de vrijloopdiode (D1) eens losgekoppeld.

Dit is het resultaat zonder diode bij 1kHz - 10% duty-cycle. De spanningspiek is >70V maar de mosfet blijft ongedeerd. De back-emf spanning is (24*0.1)V-4V = -1,6V. Dus opnieuw niet wat ik zou verwachten. Normaal zou de back-emf spanning iets kleiner moeten zijn dan de gemiddelde motorspanning (2,4V).
http://www.uploadarchief.net/files/download/back_emf_zonder_diode.png

Zelfde meting maar met diode, resultaat geen verschil alleen de spanningspiek is begrensd tot circa 24,6V.
http://www.uploadarchief.net/files/download/back_emf_met_diode.png

De back-emf spanning zou ik ook kunnen meten aan de hand van de motorstroom. Hiervoor moet de motor wel in een evenwichtstoestand zijn mits dan de spoel genegeerd kan worden. Als de interne weerstand gekend is kan via de gemeten stroom de spanningsval over de weerstand berekend worden. Het verschil van de gemiddelde motorspanning min de spanning over de interne weerstand is dan de back-emf spanning. Een nadeel is de temperatuurafhankelijkheid van de interne weerstand tenzij de temperatuur van de wikkelingen kan gemeten worden om zo dit effect te compenseren.

fripster

Golden Member

Misschien een domme vraag, maar waarom meet je niet de gemiddelde stroom door de motor? Aangezien je de weerstand van de motor weet, kun je door IxR te doen weten 'hoeveel' spanning er wordt opgeslokt door het 'maken van het koppel'. De rest is de back-emf, en die geeft dan je speed... Misschien wat simpeler?

Just my two cents...

edit: ik moet beter lezen ;-)

Eens een wirehead,altijd een wirehead.... gopher://fripster.ydns.eu

Nee zeker geen domme vraag maar dat had ik net vermeld. Zie het stukje tekst net boven je post.

Op 3 oktober 2014 15:25:28 schreef fripster:
kun je door IxR te doen weten 'hoeveel' spanning er wordt opgeslokt door het 'maken van het koppel'. .

Gedachtefout. Het koppel wordt gemaakt door de stroom, het toerental door de spanning.
Stroom zegt dus helemaal niks over het toerental.

Op 3 oktober 2014 15:16:41 schreef steve04:
Ik heb het erop gewaagd en de vrijloopdiode (D1) eens losgekoppeld.

Dit is het resultaat zonder diode bij 1kHz - 10% duty-cycle. De spanningspiek is >70V maar de mosfet blijft ongedeerd.

De spanningspiek, wordt nu begrenst door het doorslaan van de mosfet. Die krijgt nu dus 1000x per seconde voor z'n kiezen.

Dan zijn er twee dingen waar je op moet letten: kan ie de acute hoeveelheid energie kwijt die hij op moet nemen. Stel dat er 0.1A loopt, dan krijg hij dus even 70V * 0.1A = 7W voor z'n kiezen. De inductie van de motor-spoel bepaalt via 1/2 L I2 hoeveel energie er totaal in die puls zit, en het datasheet van de mosfet specificeert bij "avalanche energy" of dat toegestaan is of niet.

Daarnaast moet je even kijken of de "even 7W" maar dan wel 1000x (of 10000x !) per seconde niet optelt tot zoveel dat je mosfet (te) heet wordt.....

De back-emf spanning is (24*0.1)V-4V = -1,6V. Dus opnieuw niet wat ik zou verwachten. Normaal zou de back-emf spanning iets kleiner moeten zijn dan de gemiddelde motorspanning (2,4V).

Ik zeg: Die 1.6V vind ik heel redelijk kloppen. Die 0.8V is nodig om de stroom door de wikkel-weerstand heen te duwen. En die stroom is nodig om het mechanische verlies-koppel te leveren.

Je moet het zo zien: Bij 24V is er ook 0.8V aan "verliezen". Dan is het maar een paar procent. Nu is het toerental bij 24V natuurlijk groter, dus de het "verlies-koppel" is dat ook. Dus het mechanische verlies zal nog wel iets groter zijn.

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

Zet dan deze diode eens anti-parallel over de Mos?
Dan bescherm je die tenminste tegen de Reverse Current.

Dan zou je in princiepe nogsteeds correct over de motor kunnen meten.

Neovo.

Slechtziend aan linker oog, Blind aan rechter oog. Hosting van Forumbestanden: https://drive.google.com/drive/folders Meetarsenaal welke ik heb: https://drive.google.com/file/d/1vx54QxPe6YS3pJhybK_y0a380MYUFGyb/view
fripster

Golden Member

@KlaasZ: Ben ik niet helemaal met je eens: De stroom maakt inderdaad het koppel (via de koppelconstante), maar de spoel heeft ook een weerstand/impedantie: En dan is het gevolg van stroom dus ook een spanning... en dat is dan een deel van de totale spanning over de motor. De klemspanning minus de spanning die door het koppel wordt veroorzaakt is de tegen-EMK.

[Bericht gewijzigd door fripster op vrijdag 3 oktober 2014 20:25:43 (26%)

Eens een wirehead,altijd een wirehead.... gopher://fripster.ydns.eu

@Neovo Geesink: er is geen "reverse current", en als die er al zou zijn, zou die nu gewoon door de body diode van de MOSFET lopen, dus het heeft weinig zin daar nog een diode parallel aan te gaan zetten. Een diode op die plaats zou het probleem dan de energie die door de motor in de MOSFET wordt gedumpt helemaal niet oplossen, want die stroom loopt juist in DEZELFDE richting door de spoel en dus ook door de MOSFET, niet in omgekeerde richting! Een diode parallel aan de MOSFET, met de anode aan de ground en de kathode aan de motor, zou dus nooit in geleiding gaan.

@Fripster: wat jij voorstelt is ongeveer de DC motor variant van FOC (field-oriented control) voor asynchrone motoren; daarbij wordt de spanning over en stroom door de motor gemeten, en aan de hand daarvan de flux, snelheid en slipfrequentie geschat.

Door bij een DC motor de spanning over en stroom door de motor te meten, kun je de snelheid ook schatten; als je de weerstand weet, kun je inderdaad uitrekenen hoeveel de spanningsval daarover bij de gemeten stroom zou zijn, en de "resterende" spanning moet dan de tegen-EMK zijn, als we aannemen dat je de rest kunt verwaarlozen.

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

Golden Member

toen ik nog in de aandrijftechniek zat was dat idd de goedkope oplossing. (Geen tacho nodig), maar het werkte wel... en dat was voor brushed DC motoren

Eens een wirehead,altijd een wirehead.... gopher://fripster.ydns.eu

Op 3 oktober 2014 20:08:42 schreef fripster:
De klemspanning minus de spanning die door het koppel wordt veroorzaakt is de tegen-EMK.

De spanning die door het koppel wordt veroorzaakt? Op het moment dat de aansturing weg is, is er toch geen koppel?

fripster

Golden Member

Dat klopt. Maar de stroom die loopt, maakt nou eenmaal dat er een spanning valt... dat is de wet van Ohm. Dus: Indien de motor wordt gestuurd, en de motor dus ronddraait, dan loopt er een stroom door de motor, en daardoor is er ook een spanning die als gevolg van de wet van Ohm over de wikkeling staat. Dit is echter maar een deel van de spanning. De rest wordt door de opgewekte tegen-EMK veroorzaakt. Deze twee spanningen samen vormen de klemspanning op de aansluitingen op de motor.

Eens een wirehead,altijd een wirehead.... gopher://fripster.ydns.eu

Ja, als de motor gestuurd wordt heb je gelijk.
Maar het gaat hier toch om het meten van de emk op het moment dat de motor niet gestuurd wordt? Dan loopt er geen stroom,en meet je de zuivere generatorspanning. En die is lineair met het toerental.
Ik heb dat al eerder gezegd, maar kennelijk wil dat kwartje niet vallen.

Ik geloof dat Fripster een andere suggestie heeft om de tegen-EMK te meten/schatten. Datzelfde speelt bij Field Oriented Control (FOC) bij brushless motoren. Je kan meten met de mosfets AAN of met de mosfets UIT.

Een motor kan je elektrisch zien als een serie-schakeling van een spoel, een weerstand en een spanningsbron. De weerstand is de weerstand die je gewoon met je multimeter meet. Die spoel veroorzaakt de spanningspiek bij het uitschakelen van de mosfet, maar zodra dat voorbij is, kan je die verwaarlozen. De spanningsbron is de tegen-EMK, en die is evenredig met het toerental.

Dus: Truuk-van-Steve: in de uit-periode meet je de spanning. Omdat de stroom nul is, zal de spanning over de weerstand in de motor nul zijn, wat je meet is de tegen-EMK. Nadeel: Dit kan niet meer als de motorstroom niet meer nul wordt. De motorstroom wordt niet meer nul als je PWM percentage de 100 nadert. Ook kan het dan gebeuren dat de inductie zodanig is dat de stroom nog niet nul is als de volgende PWM periode begint.

Truuk-van-Fripster: Tijdens de aan-periode meet je de stroom, je verwaarloost de inductie, en je hebt de DC weerstand gemeten. Dus nu weet je Vbron = Vmosfet + Vemk + Vweerstand en dan krijg je dus:
Vemk = Vbron - Vmosfet - I.Rdc (met misschien nog verwaarlozing van Vmosfet).

Andere truuk, maar daar hadden we het eigenlijk niet over.

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

Als de stroom 0 wordt tijdens de uit-periode terwijl je een significante pulsbreedte stuurt, is je PWM frequentie te laag!

In het geval van de TS, waarbij de inductie erg klein blijkt, zal de stroom tijdens de aan-periode, ook bij kleine pulsbreedtes, en juist bij lage snelheden heel groot worden; vele malen groter dan de gemiddelde stroom. Hierdoor is de RMS stroom, die de opwarming van de spoelen bepaald, dus veel groter dan de gemiddelde stroom, die bepalend is voor het koppel. Daarbij moet de motorsturing dus een stroom kunnen leveren die veel groter is de gemiddelde motorstroom; bij stilstand of een laag toerental is die piekstroom bijna gelijk aan de voedingsspanning gedeeld door de weerstand van de motor (plus MOSFET e.d.)!

Het is bij dergelijke ijzerloze motoren, dus met een erg lage inductie, gebruikelijk om op PWM frequenties rond de 100kHz te gaan werken, zodat de stroom weer continue wordt, in plaats van discontinue zoals nu het geval is.

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

De stroom kan dus continue of discontinue zijn. Maar wat zijn nu de gevolgen hiervan. Ik heb eens een simulatie model gemaakt om een en ander te testen.

Een PWM bron stuurt een H-brug aan die op zijn beurt het vermogen levert aan de DC motor. Zowel de motorstroom als de snelheid worden opgemeten.

http://www.uploadarchief.net/files/download/pmdc_simulatie_schema.png

Parameters van de motor:

  • Un = 24V
  • Ri = 2.07Ω
  • Li = 199uH
  • K = 0.0258V/rad/s
  • Jr = 1.36e-6 Kg*m^2
  • Br = 1e-6 Nm/rad/s
  • W0 = 8860rpm

Bij de eerste simulatie is de duty-cycle 50% bij 20kHz. Normaal zou de snelheid moeten convergeren naar de helft van de no load speed: 8860rpm/2 = 4430rpm. Dit is echter niet zo, daarnaast is de ripple current betrekkelijk groot.
http://www.uploadarchief.net/files/download/pmdc_simulatie_20khz.png

Nu heb ik de pwm frequentie dusdanig verhoogd dat de snelheid gelijk is aan de helft van de no-load speed, dus circa 4430rpm.
De frequente bedraagt 600kHz, de ripple current is opmerkelijk kleiner.
http://www.uploadarchief.net/files/download/pmdc_simulatie_600khz.png

Bij motoren met een lage inductantie wordt vaak een extra spoel (choke coil) in serie geplaatst met de motor, zo heb ik kunnen afleiden uit
datasheets van motor drivers. Dit heb ik dan ook maar eens gedaan en wat gespeeld met de grootte van de spoel. Door een extra spoel van 600uH te plaatsen
kan de pwm frequentie verlaagd worden ten opzichte van de tweede meting, in dit geval naar 100kHz. De ripple current is tevens beter dan de eerste simulatie.
http://www.uploadarchief.net/files/download/pmdc_simulatie_100khz.png

Door de inductie te vergroten zal de elektrisch tijdsconstante toenemen waardoor de stroom zich minder snel kan aanpassen? Maar hoe zit het dan met de snelheid waarom convergeert deze niet naar de waarde die ik verwacht bij lage frequenties en zonder extra spoel. Heeft er iemand een goede referentie waar één en ander verteld wordt over het al dan niet continue of discontinue zijn van de motorstroom en de gevolgen hiervan.

Alvast bedankt, Steve