• No results found

Ontwerp voor implementatie

Figuur 6 Aansluitschema voor BLDC motor met MLX 81300

Figuur 6 is een overzicht van het ontworpen systeem. Er is te zien welke communicatie er plaatsvindt en in welke richtingen deze werkt. De aansturing

gebeurd vanuit de computer met behulp van de Melexis USB LIN Master V2.1 en er wordt gebruik gemaakt van een al bestaande GUI. De Mini E-MLx wordt gebruikt om te debuggen. De onderste laag bestaat uit een regelbare voeding, het externe HB board met de MLX81300 of het MLX81300 Development board. Één van deze twee stuurt de 3 fase BLDC motor aan.

3.1 Aansturing voor BLDC motoren

Om te kunnen commuteren moeten de drie fases aangestuurd worden. Dit wordt gedaan door de MLX81300 chip van Melexis volgens Figuur 7.

Figuur 7 Aansluitschema voor BLDC motor met MLX 81300

12 Er wordt gebruik gemaakt van een tabel met daarin zes verschillende states. Iedere state bevat de driverconfiguratie voor de drie fasen. De tabel wordt aangeroepen in een interrupt. De interrupt frequentie wordt bepaald door de commutatie tijd. Er is geen bekende startpositie dus wordt langzaam begonnen tot de rotor mee gaat lopen met het magnetisch veld. De commutatietijd wordt in stappen ingekort tot deze de ingestelde snelheid heeft bereikt. De opstart gebeurd dus openloop met een vaste opstartstroom.

Figuur 8 Aansluitschema voor BLDC motor met MLX 81300 en External HB

Bijlage 4 “External-HB V1.0” is het elektrische schema van het in figuur 8 voorgestelde ontwerp. Voor het aansluitschema in Figuur 8 geld dezelfde

opstartprocedure als voor het schema in Figuur 7. Hier wordt de feedback van de stroom en het BEMF signaal echter op externe I/O terug gekoppeld.

3.2 BEMF meten

Om dit te realiseren moet iedere keer dat er wordt gecommuteerd, gekeken worden naar de zwevende fase. Bij het “81300 Development board” is dit redelijk eenvoudig omdat de MLX81300 al standaard functies heeft om de BEMF te meten. Bij het

“External HB bord” is dit een stuk lastiger omdat de interne functies nu niet gebruikt kunnen worden. Het principe blijft echter hetzelfde waardoor de code grotendeels hetzelfde blijft. Alleen de tabel met driverconfiguraties moet worden uitgebreid en moet er naar andere I/O gekeken worden voor de BEMF en de Stroombeveiliging.

Omdat de flyback puls niet gemeten moet worden, wordt voor een percentage van de commutatietijd de ADC uitgezet. Dit percentage is motorafhankelijk en is dus een motorparameter. Uit ervaring blijkt dat 25% een goed uitgangspunt is.

13

3.3 Van feed-forward naar feed-back

Om van Openloop naar Closedloop te gaan moet het BEMF signaal voldoen aan een aantal criteria om de Zero-Crossing methode toe te kunnen passen. Een groot aantal motoren hebben een aanloopstroom nodig, die hoger ligt dan de stroom die

benodigd is om te kunnen draaien. Wanneer het verschil tussen de twee te groot is dan wordt de BEMF onbruikbaar voor de Zero-crossing methode omdat de hellingen wegvallen en de flyback puls te groot wordt. Een voorbeeld hiervan is te zien in Figuur 11.

Figuur 11 Voorbeeld van onbruikbaar BEMF signaal Figuur 12 Voorbeeld van goed BEMF signaal

Wanneer dit het geval is wordt deze tussenstap gebruikt. In deze stap wordt de stroom vermindert tot het punt waarop de BEMF “schoon” genoeg is voor de Zero-Crossing methode(zoals te zien in Figuur 12). De stroomvermindering werkt door te kijken of er ononderbroken een aantal Zero-Crossings gedetecteerd kunnen worden.

Zo niet dan wordt de stroom verminderd. Dit wordt herhaald tot het signaal “schoon”

genoeg is. Een voorbeeld hiervan is te zien in figuur 13 en 14.

Er dient echter ook rekening gehouden te worden met de minimaal benodigde snelheid om voldoende BEMF te genereren die betrouwbaar gemeten kan worden.

De minimaal benodigde snelheid is afhankelijk van de hoeveelheid BEMF die een motor opwekt. Dit gegeven is dan ook opgenomen in de motorparameters.

3.4 Zero-Crossing meten

Om de Zero-Crossing te detecteren, wordt een thresshold op de BEMF gezet.

Wanneer dit punt wordt gepasseerd dan is er sprake van een Zero-crossing.

Figuur 13 Voorbeeld van onbruikbaar BEMF signaal Figuur 14 Voorbeeld van goed BEMF signaal

De groene lijn in figuur 13 en 14 is een weergave van de zerocross detectie.

Wanneer de zerocross is gevonden wordt de lijn hoog. Wanneer er wordt gecommuteerd wordt de lijn weer laag.

Wanneer de ZC wordt gedetecteerd wordt de waarde uit een counter gekopieerd.

Hiermee wordt het volgende commutatiemoment berekend. Deze waarde wordt gemiddeld met de vorige ZC waarde zodat het signaal stabieler wordt.

14

Figuur 15 Voorbeeld commutatietijd berekenen

Een voorbeeld van de commutatietijd berekening wordt gegeven met behulp van figuur 15. Bovenin de afbeelding staan de commutatietijden. Daaronder staan de Zerocrossing tijden. De derde rij met nummers is de tijd van twee zerocrossings.

Onderaan staat de nieuw berekende waarde voor de volgende halfcommutatietijd.

Alle tijden zijn in milliseconden.

In bovenstaand verhaal wordt er gemeten aan het “midden” van het PWM signaal.

Het midden betekent hier wanneer de zwevende fase in het midden is. Wanneer de snelheid erg laag wordt, dan wordt het meetmoment op je PWM signaal te klein. Om toch op lagere snelheden BEMF met ZC te gebruiken moet de “bovenkant” van het signaal gemeten worden De bovenkant betekent hier wanneer de zwevende fase hoog is. De bovenkant heeft namelijk ook een helling. Deze is niet zo schuin als de helling van het “midden” maar is nog steeds bruikbaar. In de code hoeft nu alleen nog de thresshold verlegd te worden.

Figuur 16 MIdden meten van PWM bij 3300RPM Figuur 17 Bovenkant meten van PWM bij 850RPM

In figuur 16 en 17 wordt het Zerocross moment getoond door de groene lijn. In beide afbeeldingen wordt gekeken naar de gele lijn. Er is duidelijk te zien dat bij de lage snelheid gemeten wordt aan de “bovenkant” van het PWM / BEMF signaal en bij hogere snelheid gemeten wordt op het “midden” van het PWM / BEMF signaal.

15

3.5 Van constanten naar variabelen

Het programma wordt verdeeld in een aantal losse bestanden. De belangrijkste vijf bestanden zijn: de analoog naar digitaal conversie, het hoofdprogramma , de motorsturing, de PI(D) regelaar en de Timers.

Ieder van deze bestanden heeft zijn eigen functies. Deze functies hebben hun eigen variabelen en zijn dus niet afhankelijk van andere programma’s. Hierdoor zijn ze herbruikbaar.

Deze bestanden worden opgenomen in het zogeheten “Unirom” van Melexis. Dit is een collectie van bestanden voor alle huidig ondersteunde hardware en motoren.

Doormiddel van parameters kan het Unirom ingesteld worden voor verschillende motoren. Dit gebeurd op de volgende manier:

Wanneer in een c programma ”#if” en “#endif” wordt gebruikt, dan wordt alleen de code tussen de twee commando’s gecompileerd wanneer er voldaan wordt aan de voorwaarde van het “#if” commando. De voorwaarde voor dit commando wordt gecodeerd als een “#define”. Een define is een constante.

In een aparte file kunnen alle parameters per motor worden ingevuld. Wanneer je de motor selecteert, wordt de rest van het programma automatisch ingesteld. Hierna kun je het programma compileren voor iedere aparte motor. Het grote voordeel hiervan is dat het programma zo klein mogelijk blijft voor iedere motor en dat het bouwen van het programma voor een motor erg eenvoudig is.

16

3.6 PI(D) regelaar

Er is een PI regelaar ontworpen aangezien er geen D-actie nodig is. De D-actie is niet nodig omdat een PI regelaar het systeem al snel genoeg corrigeert voor de toepassing in ventilatoren en pompen. De regelaar werkt als volgt.

Error berekenen:

Om de 10 milliseconden wordt de regelaar aangeroepen. Tijdens deze 10 milliseconden zijn de commutatietijden en het aantal commutaties opgeteld.

De commutatietijden wordt gedeeld door het aantal commutaties. Dit levert een stabielere meting.

De gemiddelde commutatietijd wordt nu vergeleken met de gewenste commutatietijd.

De uitkomst hiervan is de error. Deze error wordt gebruikt om de correctiefactor te bepalen.

(versnellen) (vertragen)

Om te voorkomen dat de correctie te groot wordt, word deze beperkt door twee limieten. De limieten heten RampUp en RampDown. Deze limieten beperken de snelheid waarmee de snelheid wordt aangepast.

(

I-actie berekenen:

Nu de Error definitief is berekend word deze vermenigvuldigd met de I-actie coëfficiënt

De I-actie wordt als volgt uitgerekend.

Ter beveiliging wordt er nog een voorwaarde ingezet zodat er geen negatieve getallen kunnen ontstaan.

17 P-actie berekenen:

De P-actie is te berekenen door de error te vermenigvuldigen met het P_Coëfficiënt.

P- en I-actie resultaat:

Beide acties worden nu samengevoegd.

Ter controle worden er nog een paar beveiligingen bij gezet. Deze hebben te maken met de minimale en maximale correctiefactor.

Dit resultaat moet nog vertaald worden naar een bruikbare waarde voor het programma, maar dit valt buiten de PI regelaar.

Conversie:

Het resultaat van de PI regelaar wordt omgerekend naar een waarde om de duty cycle van het PWM signaal aan te passen. De duty cycle van het PWM is ook afhankelijk van de voedingspanning.

Ook deze waarde wordt beveiligd tegen under- en overflow. Dus wordt de minimale en maximale correctiefactor gecontroleerd.

18