Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads ›...

50

Transcript of Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads ›...

Page 1: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt
Page 2: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

0

1

2

3

4

5

6

InhoudsopgaveAbstract

Dankwoord

Introductie

Onderzoek

Ontwikkeling

Rapportering

Bronnen

2

Page 3: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

0 AbstractHet doel van deze bachelorproef was een Arduino Due-compatibele sturing te ontwikkelen voor borstelloze DC-motoren, die door het stagebedrijf Verhaert New Products & Services kan toegepast worden in toekomstigeprojecten. Dit omvatte het opstellen van de vereisten, het ontwerpen, uitwerken en testen van hard- en embeddedsoftware en een eindpresentatie met demonstratie.

Momenteel wordt er bij Verhaert nog vaak gebruik gemaakt van DC-motoren met borstels, aangezien dezeeenvoudig aan te sturen zijn. Ze veroorzaken echter veel elektromagnetische storingen. Borstelloze DC-motorenvormen hiervoor het ideale alternatief: ze bevatten geen borstels en er onstaan dus ook geen vonken tijdens hetdraaien. Deze motoren vereisen echter een complexere stuurschakeling.

3

Page 4: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

1 DankwoordEen bachelorproef is het sluitstuk van een studietraject. Voor mij is het hopelijk ook het beginpunt van eenprikkelende carrière in de elektronica.

Dit project was nooit tot stand gekomen zonder de steun en medewerking van iedereen die er op een of anderemanier bij betrokken was. Mijn ouders, mijn promotors van de AP Hogeschool Antwerpen, Marc Smets en TimDams, en mijn begeleiders op het stagebedrijf Verhaert New Products and Services, Rudy Van Raemdonck enGuus Colman.

Maar laat ik ook mijn collega-stagiairs niet vergeten: Jens, Robin en Tim, en iedereen bij Verhaert die zo snel bereidwas om mij vooruit te helpen. Bedankt voor een aangename en verrijkende stage!

Joran van Gremberghe

Stekene, juni 2016

4

Page 5: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

2 Introductie

2.1 Het stagebedrijf: VerhaertVerhaert New Products & Services is een productontwikkelingsbedrijf gevestigd te Kruibeke, dat bedrijven enoverheden helpt te innoveren. Tot hun klanten kunnen ze grote namen als AB Inbev, BASF en Siemens rekenen,maar ook start-ups en overheidsinstanties. Daarnaast is Verhaert de Belgische partner van ESA's TechnologyTransfer Programme, dat een brug slaat tussen ruimtevaart en de reguliere industrie.

Mijn stage situeerde zich binnen de Embedded Systems-afdeling (elektronisch hardware- en software-design) enbevatte zowel een onderzoeks- als ontwerpcomponent. Het was de bedoeling dat de afgewerkte sturing rapidprototyping mogelijk zou maken, maar dat het ook als basis kon dienen voor sturingen in nieuwe producten. Desturing moest daarom zo universeel mogelijk zijn, zodat applicatiespecifieke wijzingen steeds mogelijk zouden zijn.

Meer info op: http://verhaert.com/

2.2 AanpakHet project is opgesplitst in drie onderdelen: onderzoek, ontwikkeling en rapportering.

5

Page 6: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

3 OnderzoekBij Verhaert maakt men gebruik van een techniek die het 'omkeren van de leercurve' genoemd wordt: in plaats vanergens aan te beginnen en gaandeweg bij te leren, wordt er vóór het ontwikkelen eerst zoveel mogelijk informatievergaard. Dit verkleint de kans op fouten en onvoorziene vertragingen aanzienlijk.

In de geest hiervan is er in dit project een grote aandacht geschonken aan de onderzoekscomponent, alvorens aande ontwikkeling van de schakeling te beginnen. Dit omvatte de volgende taken:

een theoretische studie van de werking van borstelloze DC-motoren, hoe ze verschillen van de klassieke DC-motor met borstels en gangbare stuurmethoden;een survey binnen Verhaert om requirements (vereisten) op te stellen;een markstudie om zicht te krijgen op de huidige technologie en economische factoren.

3.1 Borstelloze DC-motoren: constructie en aansturing

3.1.1 Elektrische motoren

Om de borstelloze DC-motor beter te begrijpen is het aangewezen deze te situeren binnen het ruime veld van deelektromagnetische motoren. Deze kunnen ruw genomen in twee groepen opgedeeld worden: zelfcommuterendemotoren en borstelloze motoren.

3.1.1.1 Zelfcommuterende motoren

Commuteren is het opwekken van een elektromagnetisch draaiveld in een motor. Dit zorgt er voor dat de motor kandraaien. Zelfcommuterende motoren wekken dit draaiveld zelf op, door de stroom doorheen de wikkelingen teschakelen met borstels en sleepringen.

DC-motor met borstels

In de meeste kleine DC-motoren bevinden de wikkelingen zich in de rotor, terwijl de stator uit magneten bestaat.Als er een gelijkstroom door de rotorwikkelingen vloeit, zal de motor een halve omwenteling maken. Om dedraaiing voort te zetten, moet de polariteit van de stroom echter omkeren. Hiervoor wordt gebruik gemaakt vankoolborstels en de commutator (sleepring), die iedere halve omwenteling de stroomrichting omkeren.

6

Page 7: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Afbeelding: RobotShop

Deze DC-motoren met borstels zijn zelfcommuterend: ze blijven vanzelf draaien, zolang er een DC-spanningaangelegd wordt. Hierdoor zijn ze zeer eenvoudig in gebruik. Het steeds contact maken en verbreken van dekoolborstels met de commutator veroorzaakt echter slijtage en vonken.

Die laatste zorgen voor breedbandige EM-storingen tot in het GHz-gebied, wat de elektromagnetischecompatibiliteit (EMC) negatief beïnvloedt. Overige nadelen zijn hoge geluidsproductie en lage efficiëntie door hetslepen van de borstels over de sleepringen.

DC-motoren met koolborstels worden overal gebruikt waar gelijkstroom voorhanden is: batterijgevoede apparaten,elektrische hobbyvoertuigen, miniatuurventilatoren...

Universeelmotor

Een ander soort zelfcommuterende motor is de universeelmotor, die zowel door DC als AC kan gevoed worden.Deze motor bezit statorwikkelingen, die in serie met de rotorwikkelingen geschakeld worden door de commutator.Universeelmotoren worden nog steeds veel toegepast in huishoudelijke apparaten, maar aangezien ze ookborstels gebruiken delen ze veel van de nadelen van de zelfcommuterende DC-motor.

Afbeelding: DirectIndustry

3.1.1.2 Borstelloze motoren

Borstelloze motoren bezitten geen elektromechanische commutator en vereisen daarom een externe commutatie,om het draaiveld op te wekken.

Driefasen-AC-motor

De meest eenvoudige borstelloze motor is de driefasige wisselstroommotor: de drie fasen, aangesloten opstatorwikkelingen die op 120° van elkaar geplaatst zijn, veroorzaken een draaiend magnetisch veld. Zolang er geennood is aan snelheids- en/of koppelregeling kunnen deze motoren rechtstreeks aan het driefasig net aangeslotenworden. Dit zijn gewoonlijk grote motoren voor industrieel gebruik.

7

Page 8: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Afbeelding: Hongma Motor

Borstelloze DC-motor

Borstelloze DC-motoren (brushless direct current, BLDC) lijken in constructie sterk op de driefasen asynchronewisselstroommotor. In plaats van een driefasige AC-spanning maken deze elektromotoren gebruik van eenelektronische commutator: een schakeling die de spoelen op de juiste tijdstippen van gelijkstroom voorziet, in dejuiste richting.

Afbeelding: Maxon

Dit geeft een groot aantal voordelen tegenover de DC-motor met borstels: minder slijtage, minder lawaai, geenvonkvorming (lagere uitstoot van elektromagnetische storingen), lager gewicht en grotere efficiëntie. Met de juisteaansturing kan de BLDC de klassieke DC-motor met borstels in iedere toepassing vervangen.

Stappenmotor

Een stappenmotor is een variant van de BLDC, waarbij iedere spoelbekrachtiging een relatief kleine hoekwijzigingveroorzaakt. Terwijl een stappenmotor vooral geschikt is om een exacte positie te bereiken (zoals in printers enscanners), is de BLDC ontworpen om doorlopend te draaien.

8

Page 9: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Afbeelding: RobotShop

Permanente magneet-synchroonmotor

Er kan daarnaast ook nog een onderscheid gemaakt worden tussen de BLDC en de permanente magneet-synchroonmotor (permanent magnet synchronous motor, PMSM): op de niet-bekrachtigde spoelen van eenborstelloze motor worden spanningen geïnduceerd (back-electromagnetic force, BEMF). Bij BLDC-motoren zijn destatorwikkelingen geconcentreerd, met ruimte er tussen. Hierdoor is de BEMF trapeziumvormig. PMSM’s hebbenechter wikkelingen die gelijkmatiger over de stator verspreid zijn, waardoor de BEMF sinusvormig is.

Deze motoren zijn doorgaans groter en krachtiger, en dienen met sinusvormige stromen aangestuurd te worden.Ze worden gebruikt in elektrische voertuigen en vormen voornamelijk een alternatief voor de AC-inductiemotor.

3.1.2 Elektronische commutator

Voor het aansturen van borstelloze DC-motoren is een elektronische commutator nodig, die een elektromagnetischdraaiveld in de motor opwekt.

In de elektronische commutator wordt iedere motoraansluiting van twee schakelelementen (gewoonlijk MOSFET’s)voorzien: één naar de positieve voedingslijn en één naar de massa. Er zijn telkens twee schakelaars actief, zodatde stroom door één spoel in een bepaalde richting vloeit.

Dit geeft zes verschillende toestanden per omwenteling. Door op het juiste moment naar de juiste toestand over tegaan, ontstaat het elektromagnetisch draaiveld, dat de rotor doet draaien.

De spoelen van een BLDC kunnen ook in ster geschakeld staan. In dit geval zullen er telkens twee spoelen in seriebekrachtigd worden. De aansturing blijft verder dezelfde.

Elektronisch lijkt deze commutatieschakeling sterk op een driefasige omvormer of frequentieregelaar. Dit islogisch, rekening houdende met de gelijkenissen in constructie tussen de driefasen-AC-motor en de borstellozeDC-motor.

3.1.3 Positiebepaling

Om op ieder moment de juiste spoel te bekrachtigen, moet de elektronische commutator steeds de hoek van demotor weten (rotorfeedback). Dit kan op verschillende manieren:

9

Page 10: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Hall-sensoren die rondom de stator geplaatst zijn en geactiveerd worden door de polen van de rotor.Gewoonlijk zijn er drie sensoren, evenveel als er statorwikkelingen zijn. Bijgevolg zijn er zes verschillendetoestanden per omwenteling. Hiervoor moet er wel gebruik gemaakt worden van een BLDC met ingebouwdeHall-sensoren.

Afbeelding: Cypress Semiconductor

Een tweede methode maakt gebruik van een optische encoder die op de motoras geplaatst wordt. Dezeencoder heeft gewoonlijk een groot aantal stappen (bijvoorbeeld 2000), waardoor de relatieve positie van demotor nauwkeuriger bepaald kan worden dan met Hall-sensoren. Het is echter een duurdere methode.

Het is ook mogelijk positie-informatie te verkrijgen zonder gebruik van externe sensoren. In dit geval zal mende spanningen meten, die in de niet-aangestuurde wikkelingen geïnduceerd worden (sensorloos). Dit verlaagtde kostprijs, maar maakt de aansturing complexer. Deze methode kan bovendien niet gebruikt worden bij zeerlage toerentallen, omdat de geïnduceerde spanning dan te klein is. Vooral bij kleine BLDC’s, zoals inminiatuurventilatoren, is dit een populaire methode.

In dit project is er gebruik gemaakt van commutatie via Hall-sensoren.

3.1.4 Regelsysteem

Om de snelheid van een BLDC-motor te variëren, moet de gemiddelde stroom door de spoelen variabel zijn.Hiervoor wordt vrijwel altijd pulsbreedtemodulatie (pulse width modulation, PWM) gebruikt, waarbij de MOSFET'svan de elektronische commutator snel in- en uitgeschakeld worden. Door de 'aan'-tijd te variëren tegenover de 'uit'-tijd wordt de gemiddelde stroom geregeld.

Er bestaat een bij benadering lineair verband tussen (gemiddelde) stroom en toerental bij eenzelfde belasting. Ditis het uitgangspunt van scalaire regeling (U/f), waarbij de PWM-waarde gevarieerd wordt om het toerental tebepalen.

Als de motor belast wordt, zal het toerental echter dalen. Om dit te verhinderen kan er een gesloten regelsysteemgecreëerd worden, waarbij de motorsturing het toerental doorlopend meet en de PWM-waarde varieert om hettoerental op de ingestelde waarde te houden (toerentalregeling).

Hiernaast bestaan er ook vectorregelsystemen, zoals field-oriented control (FOC) en direct torque control (DTC).Dit zijn complexere regelsystemen, die vooral geschikt zijn voor toepassingen waar hoge performantie noodzakelijkis (bijvoorbeeld elektrische voertuigen).

3.2 Survey10

Page 11: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Om de specificaties te bepalen waaraan de motorsturing moest voldoen, is er een survey afgenomen bij enkeleingenieurs binnen Verhaert. Hieruit kwamen de volgende zaken naar boven:

Veiligheid is belangrijk. Er moet op zijn minst regelbare stroombegrenzing aanwezig zijn om de motor tebeschermen. De sturing dient ook thermisch beveiligd te zijn. Andere interessante veiligheidsmaatregelen zijnover- en/of onderspanningsbeveiliging en galvanische scheiding.

Een tweede must is gebruiksvriendelijkheid. Er wordt momenteel veel tijd gespendeerd aan het prototypenvan motorsturingen. De BLDC-sturing moet minstens gelijkwaardig zijn aan (en bij voorkeur nog eenvoudigerzijn dan) bestaande sturingen voor bijvoorbeeld stappenmotoren.

Het Shield moet ook zelfstandig (standalone) kunnen werken. Eventueel kan het ook met een anderontwikkelbord (bijvoorbeeld Beaglebone) aangestuurd worden.

De sturing verloopt bij voorkeur volledig via SPI. PWM en I2C zijn mogelijke extra communicatiemethoden. Doorenkel via een seriële interface te communiceren, is er veel minder bedrading nodig doorheen een product.

De motor moet zeer traag kunnen draaien (minder dan 1000 toeren/minuut). Het maximale toerental is mindervan belang. De draairichting moet elektronisch omkeerbaar zijn; actief remmen is optioneel.

De meeste BLDC-motoren werken op 12 V of 24 V. De sturing moet met beide spanningen overweg kunnen.Alles boven of onder deze waarden is optioneel.

5 A geldt algemeen als de stroom die de schakeling minimaal continu moet kunnen schakelen. De sturingmoet daarnaast ook met kleine motoren, die veel minder stroom vragen, overweg kunnen.

Om het prototypen te vergemakkelijken, moet het Shield moet ruim voorzien zijn van meetpunten. Het digitaaldoorsturen van meetwaarden is ook een grote meerwaarde, zodat het gebruik van een oscilloscoop niet altijdnoodzakelijk is.

De kostprijs van het volledige Shield is weinig belangrijk; deze zal slechts in kleine hoeveelhedengeproduceerd worden. De prijs van de eigenlijke motorsturing, die in nieuwe producten opgenomen moetkunnen worden, is wel van belang.

3.3 MarkstudieBLDC's groeien snel in populariteit. Hier zijn verschillende factoren voor: een stijgend belang van stroomverbruiken EMC; de opkomst van lichte, performante elektrische voertuigen (zowel bemand als onbemand) en een steedsverder doorgedreven miniaturisatie en integratie van elektronische componenten.

Terwijl borstelloze DC-motoren in prijs dalen, blijft er evenwel een prijsverschil bestaan met de klassieke DC-motormet borstels. Momenteel blijven BLDC's dus beperkt tot high-end toepassingen zoals computerventilatoren,quadcopters, ruitenwissers en elektrische ruiten in auto's...

11

Page 12: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

4 OntwikkelingNa de onderzoeksfase volgde het ontwikkelen van de motorsturing. Ook dit hoofddeel is verder opgesplitst:

het opstellen van de systeemarchitectuur;gedetailleerd hardwareontwerp;gedetailleerd softwareontwerp;assemblage van het prototype en de demonstratie-opstelling.

4.1 Systeemarchitectuur

Hoofdprocessor: in eerste instantie is dit een Arduino Due-microcontrollerbord, maar deze kan ook vervangenworden door een andere processor. Alle communicatie tussen het Shield en deze processor verloopt via eenSPI-bus.

Galvanische scheiding: om het shield veiliger en robuuster te maken is de SPI-verbinding tussenhoofdprocessor en microcontroller galvanisch gescheiden (geen rechtstreekse elektrische verbinding).

Microcontroller: om de functionaliteit sterk uit te breiden en er voor te zorgen dat alle communicatie via de SPI-bus kan verlopen, bezit het Shield een eigen microcontroller. Deze bevindt zich tussen de hoofdprocessor ende driver-chip.

GPIO: general purpose inputs/outputs. Dit zijn extra pinnen op de microcontroller, die gebruikt kunnen wordenom de sturing uit te breiden. Op het Shield zijn ze standaard aangesloten op een stroommeetweerstand,potentiometer, drukknoppen en een led, maar er kunnen ook externe componenten op aangesloten worden.

BLDC-driver: de BLDC-driver is een IC (integrated circuit, geïntegreerde schakeling/'chip') dat specifiekontworpen is om borstelloze DC-motoren aan te sturen. Het is aangesloten op de tweede SPI-poort van demicrocontroller, stuurt de MOSFET's aan en krijgt positiefeedback van de motor via Hall-sensoren.

MOSFET's: dit zijn de vermogentransistoren, die als elektronische schakelaars gebruikt worden om destromen doorheen de motor te schakelen. Ze zijn geconfigureerd als zes halve H-bruggen.

Motor: de sturing is geschikt voor borstelloze DC-motoren van 12 of 24 V, met ingebouwde Hall-sensoren, totstromen van 8 A.

4.2 HardwareontwerpDe grotere complexiteit van borstelloze sturingen, alsook de extra vereiste functionaliteiten, zorgen voor een relatiefcomplexe finale schakeling. De schakeling is echter modulair gemaakt, zodat onderdelen weggelaten of vervangenkunnen worden, afhankelijk van de finale toepassing. Hierna volgt een individuele beschrijving van de voornaamstehardwareonderdelen.

De ontwikkelde schakeling kreeg de naam 'BLDC Shield' mee.

12

Page 13: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

4.2.1 Hoofdprocessor

4.2.1.1 Arduino Due

De Arduino Due is een ontwikkelbord met een Atmel SAM3X 32-bits microcontroller. Deze stelt in dit project dehoofdprocessor van een product voor en kan dus door eender welke processor vervangen worden. In kleineproducten kan de microcontroller op het Shield zelfs dienst doen als hoofdprocessor.

Afbeelding: Arduino.org

Het Arduino-bord communiceert via SPI (Serial Peripheral Interface) met de microcontroller van de motorsturing engeeft debug-waarden via de seriële poort weer.

In het hoofdstuk 'Softwareontwerp' wordt de voorbeeldsoftware voor Arduino uitgebreid beschreven.

SPI

SPI is een veelgebruikte vorm van synchrone full-duplex seriële communicatie in embedded systemen,oorspronkelijk door Motorola ontwikkeld. Ondanks de populariteit, is het geen formele standaard (in tegenstelling

tot bijvoorbeeld I2C). Het is een master-slave-bus, waarin één master-apparaat met meerdere slaves kancommuniceren.

Iedere slave heeft een eigen slave select-lijn. Als deze lijn actief wordt (meestal actief laag, soms hoog), zal deslave de data in zijn seriële databuffer naar de master versturen via de MISO-lijn (master input, slave output). Demaster doet hetzelfde via de MOSI-lijn (master output, slave input). Die laatste bepaalt hierbij het tempo: bij iederepuls van de kloklijn (hiervoor worden verschillende afkortingen gebruikt: CLK, SCLK, SCK...) zullen beide apparatende volgende bit verzenden.

De Arduino Due heeft, net als de meeste Arduino-varianten, een 6-pins SPI-header. Deze is in de eerste plaatsbedoeld om, met een externe programmer, de microcontroller van het bord te herprogrammeren. Op de ArduinoUno (de 'originele' Arduino, met een 8-bits Atmel AVR ATmega328P) is deze header dan ook aangeduid met deafkorting 'ICSP': In Circuit Serial Programming. Op de Arduino Due is de aanduiding 'SPI' gebruikt.

Veel Arduino's, waaronder de Uno en de Due, bezitten daarnaast nog een tweede microcontroller. Dit is eencontroller met ingebouwde USB-interface, die dienst doet als USB-naar-serieelconverter. (Arduino's hebben eenbootloader die programmeren via de asynchrone seriële interface mogelijk maakt.) Ook deze chip is van een SPI-header voorzien, al dan niet bestukt; zo kan deze secundaire microcontroller ook geherprogrammeerd worden. Opde Due heeft deze connector de vermelding 'ICSP' meegekregen.

13

Page 14: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Afbeelding: Atmel

Beide headers hebben de standaard 6-pins pinout, die Atmel op hun eigen programmers en ontwikelbordengebruikt. Het BLDC Shield gebruikt de SPI-header van de hoofdcontroller (Uno: 'ICSP', Due: 'SPI) voor de SPI-bustussen hoofdprocessor (Arduino) en eigen microcontroller. De Reset-lijn wordt niet gebruikt.

Er is voor communicatie dan enkel nog een slave select-signaal nodig. Dit signaal is afkomstig van één van dedigitale I/O's. De microcontroller van de Arduino Due kan pinnen D4, D10 en D52 hardwarematig als SS-pinnenaansturen in SPI-master-modus. Door plaatsen te voorzien op de printplaat, waar de gebruiker soldeerbruggen kanplaatsen, kan ieder geassembleerd Shield één van deze pinnen als vast toegwezen SS-bron gebruiken.

Zo wordt het zelfs mogelijk om drie BLDC Shields op elkaar te stapelen en vanuit één Arduino drie borstelloze DC-motoren aan te sturen. Alle communicatie verloopt over dezelfde SPI-bus; de Arduino moet enkel de juiste SS-pinlaag brengen, om het aan te spreken Shield te kiezen.

4.2.1.2 Alternatieve hoofdprocessor

Het Shield is ontworpen om fysisch op een Arduino Due te passen. Dit is zeer praktisch tijdens prototyping. Desturing kan echter door eender welke processor aangestuurd worden, zolang deze over een SPI-poort beschikt.

In een finaal product kan dit een krachtige processor zijn die meerdere BLDC-motoren doorheen het productaanstuurt, maar net zo goed een kleinere microcontroller die zich op dezelfde printplaat bevindt en maar één motorcontroleert.

4.2.2 Galvanische scheiding

Eén van de vereisten die naar voren kwam tijdens de survey, was galvanische scheiding tussen de motorsturing ende Arduino (of andere hoofdprocessor), om het Shield robuuster te maken. Aangezien de SPI-bus uit vier lijnenbestaat, zou het al snel veel PCB-ruimte (printed circuit board, printplaat) innemen om dit met aparte optocouplerste doen. Het zou de kostprijs bovendien verhogen.

4.2.2.1 Silicon Labs Si8641

Daarom is er gekozen voor de Si8641 van Silicon Labs, die een isolatie van 2,5 kV biedt in de compacte SOIC-16-behuizing. De configuratie van 3 inputs en 1 output aan de primaire zijde (hoofdprocessorzijde) is ideaal voor SPI.Dit IC maakt gebruik van radiofrequente koppeling in plaats van optische. Deze techniek is veel goedkoper (€ 1,94,Digi-Key, tape op spoel, 2500 stuks).

14

Page 15: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Afbeelding: Silicon Labs

Naast een galvanische scheider, doet dit IC ook dienst als logic level shifter: de secundaire zijde is met 3,3 Vgevoed, maar de primaire zijde kan op eender welke voedingsspanning tussen 2,5 V en 5,5 V werken. Zo kan erbijvoorbeeld een 5 V-ontwikkelbord gebruikt worden als hoofdprocessor, zoals een Arduino Uno, zonder de inputsvan de microcontroller van het Shield te beschadigen.

Deze isolatiechips vereisen wel een goede PCB-layout, om uitgestraalde EM-storingen te onderdrukken (verwevenmassavlakken, via fences...).

De Si8641B kan communicatiesnelheden tot 150 Mbps (megabits per seconde) aan; ruim snel genoeg voor dezetoepassing. De goedkopere Si8641A-variant (€ 1,32) is geschikt voor snelheden tot 1 Mbps.

4.2.2.2 Alternatieve galvanische scheiding

Of galvanische scheiding nodig is, zal afhangen van de aard van het finale product. In veel gevallen zal dezeisolatiechip weggelaten kunnen worden, zodat er een rechtstreekse elektrische verbinding is tussenhoofdprocessor en microcontroller.

Daarnaast bestaat er ook steeds de mogelijkheid om een andere digitale isolatiechip of optische isolatie toe tepassen.

4.2.3 Microcontroller

4.2.3.1 Microchip PIC16F18345

De 20-pins Microchip PIC16F18345 wordt gebruikt om de driver-chip uit te breiden, zodat de sturing volledig viaSPI-commando’s verloopt. Er is voor deze microcontroller gekozen omdat deze twee SPI-poorten bevat: ééningesteld als master om met de driver te communiceren en één als slave, die aan de hoofdprocessor aangeslotenwordt.

15

Page 16: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Daarnaast biedt de PIC extra I/O-pinnen, die bijvoorbeeld gebruikt kunnen worden als inputs voor eindschakelaarsof outputs om verlichting, zoemers en dergelijke nabij de motor te schakelen. Eén van de GPIO-pinnen isbovendien aangesloten op de stroommeetweerstand, zodat ook de motorstroom op ieder moment via SPIverzonden kan worden.

Naast het doorgeven van SPI-foutrapporteringen van de driver-chip, meet deze PIC ook het toerental van de motoren maakt deze meetwaarde vervolgens via SPI beschikbaar.

Deze chip is op het moment van schrijven ongeveer een jaar op de markt, en verkrijgbaar in SOIC-20-vorm voor €0,91. In de toekomst zal Microchip deze lijn uitbreiden met verschillende varianten.

In het hoofdstuk 'Softwareontwerp' wordt de firmware van de microcontroller uitgebreid beschreven.

Testbord

Voor de voorlopige systeemtesten (vóór de assemblage van het prototype) werd er een eenvoudig testbord opstripboard voor de PIC16F18345 gemaakt, met een ICSP-header voor de Microchip PICkit 3-programmer. Metheader sockets en 6-pins SPI-headers kunnen componenten en draden aangesloten worden.

Op deze manier kon het volledige systeem ontwikkeld en getest worden, in combinatie met de Arduino Due enDRV8308EVM (zie verder), zonder dat er meteen een volledig prototype gebouwd moest worden.

De header van SPI1 is aangeduid met de 'I' van input, SPI2 met 'O' van output. Door de oriëntatie van de ICSP-header moet de PICkit ondersteboven ingeplugd worden.

16

Page 17: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

4.2.3.2 Alternatieve microcontrollers

Vanwege de noodzaak van een microcontroller met twee SPI-poorten was de keuze beperkt. Er werd gekeken naarenkele alternatieve controllers:

De Atmel ATtiny87/167 is een vergelijkbare compacte 20-pins microcontroller met één hardwarematige SPI-poort en een USI (Universal Serial Interface), die voor SPI gebruikt kan worden. Deze chip heeft echter maaréén 16-bits timer, terwijl er twee timers met hoge resolutie nodig zijn om de toerentalfrequenties op te wekkenén te meten. Daarnaast heeft deze controller twee GPIO-pinnen minder, vanwege de aparte analogevoedingsaansluitingen.

17

Page 18: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

De Atmel ATtiny2313 is ook een 20-pins-ATtiny, maar zonder ADC’s, waardoor stroommetingen onmogelijkworden. Verder heeft deze dezelfde timerbeperking als de '87/167. Het ontbreken van ADC’s betekent wel dater twee extra pinnen beschikbaar zijn.

Ook de Texas Instruments MSP430-reeks is overwogen. Deze fabrikant biedt verschillende kleinemicrocontrollers met twee universele interfaces. Echter hebben deze gedeelde pinnen, waardoor het opzettenvan twee aparte SPI-poorten niet mogelijk is.

Als de externe hoofdprocessor weggelaten wordt en de microcontroller dienst doet als hoofdprocessor in eenfinaal product, is er een veel grotere keuzevrijheid: de microcontroller moet slechts één SPI-poort bezitten.

4.2.4 BLDC-driver

Het gebruik van een speciale driver-IC voor BLDC-motoren bleek al snel aangewezen. Deze chips combineren eengroot aantal functies in één component, wat de schakeling eenvoudiger, compacter en goedkoper maakt.

Er bestaat een grote verscheidenheid aan drivers voor borstelloze DC-motoren. Deze chips verschillen ook sterk inhun specificaties en mogelijkheden: sommige bevatten enkel zes MOSFET-predrivers, terwijl andere (zoals deDRV8308 die hier toegepast is) zeer uitgebreide functionaliteiten hebben.

Veel van deze driver-chips zijn ontworpen om kleine ventilatoren rechtstreeks aan te sturen (waarbij zelfs de richtingniet elektronisch omgekeerd kan worden). Er is ook een groot aantal (doorgaans oudere) chips die geen FET-predrivers of ingebouwde MOSFET’s bevatten, wat de sturing ingewikkelder of inefficiënt zou maken.

Na het uitfilteren van deze drivers bleven er 14 geschikte IC’s over, waarvan het merendeel door Texas Instrumentsgeproduceerd wordt. Na het afwegen van voor- en nadelen, getoetst aan de resultaten van de survey, kwam deDRV8308 naar voren als de beste keuze.

Zie ook: b ijlage Marktstudie-BLDC-drivers.xlsx.

4.2.4.1 Texas Instruments DRV8308

De Texas Instruments DRV8308 is specifiek ontworpen voor geavanceerde BLDC-sturingen. Naast de nodige FET-predrivers bezit deze chip ingebouwde commutatielogica voor Hall-sensoren, een SPI-poort, overstroom-,overspannings-, onderspannings-, overtemperatuur- en vastgelopen rotorbeveiliging.

Dit IC kan bovendien gebruikt worden om een toerentalregeling te creëren met programmeerbare digitale filtering,waarbij het toerental van de motor nauwkeurig geregeld wordt volgens een externe frequentie. Deze chip isverkrijgbaar voor € 1,21/stuk op het moment van schrijven.

18

Page 19: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Afbeelding: Texas Instruments

De lage prijs, gecombineerd met het grote aantal mogelijkheden, maakt van de DRV8308 momenteel de meestgeschikte chip voor dit project. De halfgeleiderfabrikanten staan echter niet stil: tijdens de loop van dit project heeftTexas Instruments al twee nieuwe BLDC-drivers uitgebracht (voor sensorloze commutatie).

De SPI-poort van de DRV8308 wordt niet enkel gebruikt voor het programmeren van parameters enfoutrapportering, maar kan ook gebruikt worden om de motorsturing aan en uit te schakelen, de richting om tekeren en te remmen. Als de DRV8308 in open lusmodus gebruikt wordt, kan de snelheid zelfs volledig via SPIgeregeld worden. Bij toerentalregeling wordt er gebruik gemaakt van een enkele frequentie-input, waarmee dedriver de motor steeds tracht te synchroniseren.

Hierna volgt een beknopte beschrijving van de mogelijkheden van dit IC. Verwijs voor volledige documentatie naarde DRV8308-datasheet.

Voeding

De DRV8308 heeft een aanbevolen werkgebied van 8,5 V tot 32 V (VM, motorspanning). Dit maakt het componentcompatibel met motoren van zowel 12 V als 24 V.

Daarnaast bezit deze driver enkele ingebouwde spanningsregelaars:

VINT is een lineaire regelaar met een uitgangsspanning van 1,8 V, waarop de interne logica werkt. Dezevoedingslijn is naar buiten gebracht voor ontkoppeling, maar is niet bedoeld om een externe schakeling meete voeden.

VREG daarentegen is een lineaire 5 V-regelaar, bedoeld voor het voeden van de Hall-sensoren. Demaximumstroom is 30 mA. Deze spanning wordt, via een connector naast de Hall-inputs, op het Shield naarbuiten gebracht.

De regelaar wordt standaard enkel ingeschakeld als de motor draait. Het is dus niet aanbevolen om hierandere componenten mee te voeden.

De MOSFET-predrivers van de DRV8308 zijn geschikt voor zes N-MOSFET's, zowel aan de voedingszijde alsaan de massazijde. Deze transistoren zijn goedkoper dan vergelijkbare P-MOSFET's.

Hierdoor moeten er echter stuursignalen van VM + 10 V opgewekt worden voor de predrivers, om de MOSFET'saan de voedingszijde (high side drive) correct aan te sturen. De chip bezit hiervoor een ladingspomp, die eenspanning, genaamd VCP, creëert.

Aangezien de ladingspomp grote piekstromen moet kunnen leveren, is het niet aanbevolen oom hier anderezaken mee te voeden.

19

Page 20: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Er is ook een interne lineaire 10 V-regelaar. De predrivers aan de massakant (low side drive) worden hiermeegevoed. De output van deze regelaar is niet rechtstreeks naar buiten gebracht.

Naast deze regelaars is er nog een pin VSW. Dit is een elektronische schakelaar naar de VM-motorspanning,die geactiveerd wordt als de motor draait. Deze pin kan maximaal 30 mA leveren aan een externe schakeling,maar is niet beschikbaar gemaakt op het BLDC Shield.

Hoewel de DRV8308 intern op 1,8 V werkt, zijn alle logische inputs 5 V-tolerant. Alle outputs zijn open drain. Devoedingsspanning van de microcontroller is dus van weinig belang (op het Shield is er voor 3,3 V gekozen).

Texas Instruments geeft voor VM een absolute maximumwaarde van 42 V op. De VM-voedingslijn is in het Shieldbeschermd met een TVS-diode (transient voltage suppressor, piekspanningsonderdrukker) met een breakdown-spanning UBR van nominaal 33 V. Zo blijft de correcte werking over het hele VM-spanningsbereik van 8,5 V tot 32 V

verzekerd, maar is er ook overspanningsbeveiliging aanwezig.

Als de motor snel vertraagt (bijvoorbeeld door te remmen), zal deze zijn mechanische energie terug in elektrischeomzetten. Het gevolg hiervan is een stijging van de voedingsspanning. Dit is vooral een probleem bij het gebruikvan synchrone rectificatie (zie verder).

De TVS-diode vangt deze spanningspieken op om het hele systeem te beschermen. Het is dan ook van belang datdeze diode voldoende warmte-energie kan dissiperen.

Registers

Alle parameters van de DRV8308 zijn in 16-bits registers opgeslagen. Ieder register bevat dus één word,bestaande uit twee bytes. Zowel registeradressen als -data worden doorgaans in hexadecimale vormweergegeven, waarbij ieder karakter één nibb le voorstelt (4 bits, een halve byte). De letters A-F stellen de waarden10-15 voor, terwijl de prefix '0x' aanduidt dat het om een hexadecimale voorstelling gaat.

Afbeelding: Texas Instruments

Bij het opstarten zijn deze registers standaard leeg ( 0x0000 ), behalve het foutregister, dat standaard 0x0018 bevat.De registers dienen na iedere opstart dus geprogrammeerd te worden, met de parameters die de applicatievereist.

De DRV8308 heeft een intern eenmalig programmeerbaar geheugen en kan externe EEPROM's uitlezen. In demeeste gevallen zullen de registers echter met SPI-commando's geprogrammeerd worden door een externehoofdprocessor. Het Shield is ook ontworpen om zo te werken.

Ieder register heeft een uniek adres van 0x00 tot 0x0B (het foutregister heeft adres 0x2A ). In het hoofdstuk'Softwareontwerp' vindt de lezer een beknopt overzicht van de registers.

Toerentalregeling

Een unieke feature van de DRV8308 is de geïntegreerde toerentalregelaar, die Texas Instruments 'geslotenlusregeling' noemt. Dit is een enigszins verwarrende term, aangezien er al sprake is van een gesloten regellusvoor de commutatie, aan de hand van de Hall-sensoren in de BLDC-motor.

20

Page 21: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

De toerentalregeling vormt een tweede, optionele regellus. De frequentie van het FG-signaal (motortoerental) wordtin deze modus voortdurend vergeleken met een extern CLK-signaal, dat door de microcontroller, die mee in hetBLDC Shield opgenomen is, opgewekt wordt.

Als de motor te traag draait, bijvoorbeeld door mechanische belasting, zal de PWM-waarde van de predriversstijgen, om zo de motor op het gewenste toerental te houden. Hetzelfde is uiteraard waar in omgekeerde richting.De werking is in dit opzicht te vergelijken met een PLL (phase locked loop).

Na deze snelheidsvergelijker volgen een integrator, een programmeerbare filter en een compensator (een tweedeprogrameerbare filter). Op deze manier ontstaat er een relatief complex PI-regelsysteem.

In plaats van een 'snelheid' van 0 tot 100%, in de vorm van een extern PWM-signaal of een interne parameter, wordthet toerental van de motor dus bepaald door de frequentie van een extern kloksignaal. Belangrijk hierbij is hetcorrect instellen van de verschillende parameters van de regellus. De ideale parameters voor een bepaalde motor,moeten voor ieder gewenst toerental afzonderlijk bepaald worden. Dit is grotendeels een proces van trial and error.

Op deze manier kan de DRV8308 gebruikt worden voor toerentalregeling, zonder dat hiervoor een externemicrocontroller nodig is. Uiteraard kan de DRV8308 ook in de klassieke PWM-modus (open lus) gebruikt worden.Voor toepassingen waar de motor snel en vaak van toerental moet kunnen veranderen, is dit de aangewezenmethode. Toerentalregeling is dan weer interessant als de motor constant op eenzelfde toerental moet blijvendraaien, ongeacht de belasting.

180°-sinusmodus

De meest eenvoudige vorm van BLDC-commutatie is de zogenaamde blok-, trapezium- of 120°-commutatie.

De Hall-sensoren van een borstelloze DC-motor zijn op 120° van elkaar geplaatst. In een motor met één poolpaargeeft dit zes mogelijke toestanden per omwenteling. Bij iedere nieuwe toestand zal de driver de stroom door éénvan de fasen uitschakelen en de volgende inschakelen.

De resulterende golfvormen aan de motoruitgangen U, V en W zien er dan uit als blokken, die zich iedere halveomwenteling herhalen: de stroom is gedurende 120° van de draaiing aan en 60° uit. De golfvormen hebben eenfaseverschuiving van 120° tegenover elkaar.

'Aan' wil in dit geval zeggen: het PWM-signaal is aanwezig op de uitgang. Enkel bij een PWM-waarde van 100% isde uitgang voortdurend aan.

Als de DRV8308 een stabiel toerental bereikt, zal enkel Hall-sensor U gebruikt worden voor rotorfeedback. Decommutatietiming kan dan voorspeld worden. Dit geeft mogelijk een soepelere sturing, aangezien de sensorenniet in iedere motor op exact 120° zullen staan.

Een alternatieve commutatievorm is de sinus- of 180°-commutatie. In plaats van de motorstromen abrupt teschakelen, gaan ze geleidelijk over van de ene toestand naar de volgende. Dit kan door de PWM-waardevoortdurend te wijzigen. De commutatieblokken van 120° worden commutatieheuvels van 180°.

De optionele sinusmodus wordt enkel ingeschakeld als de motor een stabiel toerental bereikt heeft. Deze moduskan voor een stillere en soepelere motor zorgen, maar in de praktijk blijkt dit sterk af te hangen van de gebruiktemotor, de belasting en de ingestelde snelheid.

Asynchrone en synchrone rectificatie

Als de stroom doorheen een inductieve belasting plotseling stopgezet wordt, zal er een spanningspiek ontstaanover deze belasting. Men plaatst dan doorgaans een vrijloopdiode, parallel met de spoel. Deze diode vangt deenergie op, waardoor de spanningspiek sterk verzwakt wordt.

MOSFET's hebben een parasitaire diode tussen hun drain en source, de zogenaamde body-diode. Bij asynchronerectificatie (passieve freewheeling) doet deze diode dienst als vrijloopdiode.

21

Page 22: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

De DRV8308 zal in deze modus enkel de actieve high side FET's aansturen met het PWM-signaal; de bijhorendetransistor aan de massazijde blijft uit.

De gebruikte driver-chip ondersteunt echter ook synchrone rectificatie (actieve freewheeling). In plaats van op debody-dioden van de MOSFET's te rekenen, wordt iedere low side FET aangestuurd met een PWM-signaal datcomplementair is (geïnverteerd) met dat van de bijhorende schakeltransistor aan de voedingszijde.

Als tijdens het PWM-schakelen de voedings-FET uitgeschakeld is, vormt de bijhorende massa-FET een laagohmigpad voor de vrijloopstroom. Hierdoor worden de warmteverliezen van asynchrone rectificatie vermeden.

SPI

De SPI-aansluitingen SCLK, SCS, SDATAI en SDATAO geven de mogelijkheid om de registers van de driver via eenseriële bus te lezen en te schrijven. De DRV8308 werkt steeds in slave-modus en zal dus synchroon met hetexterne SPI-kloksignaal (SCLK) werken.

Het SPI-protocol van de DRV8308 specifieert dat ieder datapakket uit drie bytes bestaat:

Byte 0 wordt steeds door de master (hoofdprocessor) gestuurd. De MSB (most significant b it, hoogste bit) isde lees/schrijfbit: deze is 1 bij een leescommando, 0 bij een schrijfcommando. De overige zeven bitsvormen het registeradres dat gelezen of geschreven wordt.

Bytes 1 en 2 vormen de 16-bits registerdata. Wie deze data stuurt, hangt af van het soort commando: bij eenschrijfcommando stuurt de hoofdprocessor de te schrijven data; bij een leescommando geeft de driver deopgevraagde data terug.

Hoewel SPI voor full duplex-communicatie gebruikt kan worden, is de communicatie hier dus steeds half duplex: erwordt nooit tegelijk data verzonden én ontvangen.

Als de input SMODE hoog is, zal de DRV8308 de SPI-lijnen als master gebruiken om een extern serieel EEPROMuit te lezen. Deze functie is niet gebruikt in het BLDC Shield; de SMODE-pin is kortgesloten naar de massa. Ditplaatst de chip in SPI-slave-modus.

De slave select- of chip select-lijn van de SPI-bus (hier SCS genoemd) is bij de meeste IC's actief laag. In deDRV8308 is dit echter een actief hoge input. Daarom is er vóór deze pin een extra discrete PNP-transistorgeplaatst, die als logische inverteerder werkt voor het SCS-signaal. Op deze manier is de slave select-polariteit vande SPI-bus tussen de hoofdprocessor en de microcontroller dezelfde als die tussen de microcontroller en dedriver.

Uiteraard is deze transistor overbodig in een finaal product: de polariteit van het SCS-signaal kan dan eenvoudigomgewisseld worden in de controller.

De seriële interface van de DRV8308 heeft een minimale klokperiode (clock cycle time) van 62 ns; dit geeft eenmaximale datarate van 16 Mbps.

Control

De driver bezit vier hardwarematige control inputs: BRAKE (rem), DIR (draairichting), ENABLE (activeer) en CLKIN(motorkloksignaal).

Van de eerste drie kan de polariteit (actief laag/hoog) ingesteld worden via SPI. Het is dus mogelijk deze pinnenvast met de massa kort te sluiten, waarna deze functies via SPI-commando's bestuurd kunnen worden.

De CLKIN is de snelheids-input voor de motor. Hoe deze pin werkt, hangt af van de huidige modus (parameterSPDMODE):

Klokfrequentiemodus ( 00 ): de DRV8308 bevindt zich in toerentalregeling (gesloten lus) en zal trachten desnelheid van de motor te synchroniseren met de frequentie van het signaal aan de CLKIN. De pulsbreedte isniet van belang.

22

Page 23: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Klok-PWM-modus ( 01 ): de DRV8308 bevindt zich in de PWM-modus (open lus). De pulsbreedtefactor van hetCLKIN-signaal bepaalt de gemiddelde stroom door de motor. De frequentie is niet van belang.

Register-PWM-modus ( 10 ): de DRV8308 bevindt zich in de PWM-modus (open lus) en maakt hierbij gebruikvan de waarde in het SPEED-register. De CLKIN wordt genegeerd.

Dankzij de register-PWM-modus is het niet nodig om een extern signaal met variabele pulsbreedte op te wekken.Er is enkel een extern signaal met variabele frequentie nodig voor toerentalregeling. Op het BLDC Shield wordt ditstuursignaal door de microcontroller opgewekt.

Bij de control outputs vinden we volgende pinnen:

FGOUT is een tachometer-output. Deze zal als een buffer voor de eerste Hall-sensor-input UHP fungeren.(Tenzij een andere tachobron geselecteerd is, waarvoor dit Shield niet geschikt is.) Met behulp van een groeneled kan zo het toerental van de motor zichtbaar gemaakt worden. De frequentie van dit tachosignaal wordt ookdoor de microcontroller gemeten, zodat het motortoerental door de hoofdcontroller opgevraagd kan worden viaSPI. Het toerental is afhankelijk van het aantal poolparen van de gebruikte motor. Ze wordt als volgt berekend:

n [t/min] = (fFGOUT [Hz] / poolparen) * 60

t/min: toeren per minuut

FAULTn wordt laag getrokken bij overstroom, overtemperatuur of als de rotor vastgelopen is. Deze pin isvoorzien van een rode led om fouten duidelijk weer te geven.

LOCKn is een pin die in toerentalregeling aanduidt wanneer de motor het gevraagde toerental bereikt heeft ener sprake is van een stabiele regellus: de regeling is gelockt. In normale PWM-regeling heeft deze output geenfunctie. Het signaal is ook voorzien van een groene led op het Shield en wordt door de microcontrolleringelezen.

Vermogengedeelte

Het vermogengedeelte van de DRV8308 bestaat enerzijds uit de predriver outputs: de stuursignalen voor deMOSFET's die de motorstromen schakelen. Het gaat om ULSG, VLSG en WLSG aan de massazijde, UHSG, VHSGen WHSG aan de voedingszijde.

MOSFET's zijn spanningsgestuurde componenten; ze vereisen geen continue basisstroom zoals bipolairetransistoren. De gate vormt echter een condensator, die in het geval van vermogen-MOSFET's vrij groot kan zijn. Ermoet dus een piekstroom geleverd worden bij het inschakelen om de gate voldoende op te laden.

Hoe langer dit opladen duurt, hoe langer de MOSFET in zijn lineair gebied zal werken. De MOSFET zal dan meervermogen dissiperen, wat de efficiëntie doet dalen en de temperatuur doet stijgen.

Een te snelle gate-stijgtijd heeft dan weer negatieve EMC-gevolgen: de stapfunctie heeft hoogfrequentecomponenten die elektromagnetische storingen veroorzaken. De DRV8308 heeft om deze reden een instelbaregate-piekstroom (10 mA–130 mA), zodat de gebruiker deze parameter kan aanpassen aan de eisen van detoepassing.

In het vermogengedeelte vinden we ook enkele inputs; deze dienen ter bescherming van de sturing. De U-, H-, W-en ISEN-inputs worden voor stroombegrenzing en overstroombeveiliging gebruikt (zie verder).

Hall-sensoren

De DRV8308 is specifiek ontworpen om gebruik te maken van Hall-sensoren voor rotorfeedback. Hiervoor zijn driedifferentiële ingangen voorzien, in de vorm van ingangspinnen UHP, UHN, VHP, VHN, WHP en WHN.

Aangezien BLDC-motoren vrijwel altijd sensoren met enkelzijdige uitgangen bevatten, zijn de inverterendeingangen (xHN) op een vaste spanning van 2,5 V (VREG / 2) aangesloten. De niet-inverterende ingangen (xHP)kunnen zo als enkelzijdige inputs gebruikt worden.

23

Page 24: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Met behulp van pull up weerstanden kunnen ook sensoren met open collector/drain-uitgangen gebruikt worden.RC-filtering (fc ≅ 88 kHz) maakt de ingangen resistenter tegen storingen.

Daarnaast zijn er ook nog de pinnen FGINP, FGINN_TACH (inputs) en FGFB (output). Deze pinnen worden gebruikt incombinatie met een FG trace of tachometer; opties die op dit Shield niet gebruikt zijn. FGINP en FGINN_TACH zijndan ook met de massa verbonden.

Beveiliging

Een groot voordeel van de DRV8308 tegenover oudere BLDC-drivers is het grote aantal ingebouwdebeveiligingsmechanismen:

Bij een te lage VM-voedingsspanning treedt de VM-onderspanningfout (VM undervoltage lockout, UVLO) op.De interne logica van de DRV8308 kan al werken vanaf 4,5 V, maar de predrivers zullen niet starten tenzij VMhoger dan 8 V is.

Zoals eerder vermeld kan het vertragen of remmen van de motor een stijging van de VM-spanning veroorzaken.In dit geval zal de VM-overspanningsbeveiliging (VM overvoltage, VMOV) activeren. De drempelwaarde isinstelbaar: 34,5 V of 28 V.

De DRV8308 bezit twee soorten overstroombeveiliging (motor overcurrent protection, OCP). Deze biedenvoornamelijk bescherming tegen kortsluitingen in het vermogengedeelte.

De eerste vorm maakt gebruik van UDS-meting: de spanning tussen drain en source van iedere actieve

MOSFET wordt gemeten. Als deze de ingestelde drempelwaarde overschrijdt, zal de motor 5 ms languitgeschakeld worden, waarna de motor terug geactiveerd wordt.

De tweede vorm van overstroombeveiliging is de shunt-stroommeting. Tussen de low side MOSFET's ende massa wordt een laagohmige vermogenweerstand geplaatst (<1 Ω). Als de spanning over dezeweerstand (ISEN) 1,8 V overschrijdt, zal de motorsturing ook 5 ms lang onderbroken worden.

Daarnaast is er ook een stroombegrenzer aanwezig. Deze heeft de functie de motor te beschermen tegen tegrote stromen. Deze begrenzer maakt ook gebruik van de shunt-weerstand: als de ISEN-spanning boven de250 mV stijgt, zal de PWM-waarde van de predrivers dalen, om de motorstroom te doen dalen. Dedrempelstroom hangt dus af van de waarde van de stroommeetweerstand RISEN:

RISEN [Ω] = 0.25 V / IM-max [A]

Als de uitgangsspanning van de ladingspomp (VCP) de nominale VM + 10 V niet bereikt, zal er zich eenladingspompfout (charge pump failure, CPFAIL) voordoen. In dat geval wordt de motor uitgeschakeld tot deladingspomp terug correct werkt.

Om de ladingspomp verder te beschermen bezit deze ook kortsluitbeveiliging. Als er een kortsluitinggedetecteerd wordt, zullen de predrivers 5 seconden lang uitgeschakeld worden. Hierna tracht de DRV8308 demotor te herstarten.

De DRV8308 kan ook een vastgelopen rotor detecteren: als de ingestelde snelheid groter is dan 0 , en ergedurende een instelbare tijd geen wijzigingen aan de sensor-inputs gedetecteerd worden, zal de driverconcluderen dat de rotor vastgelopen is door een te grote belasting. De predrivers worden dan uitgeschakeld.Als de RETRY-parameter op 1 ingesteld is, zal de driver na 5 seconden de motor opnieuw proberen starten.

Dit zal in de praktijk waarschijnlijk de meest voorkomende fout zijn, aangezien deze zich ook voordoet bij hetinstellen van een te lage snelheid (waardoor de motor niet genoeg vermogen krijgt om te draaien) of bij hetinschakelen van de remfunctie, zonder de snelheid op 0 te zetten.

Ten slotte heeft dit IC ook thermische beveiliging. Bij een interne temperatuur van minstens 150 °C schakeltde DRV8308 zichzelf grotendeels uit om schade aan de die te voorkomen. Als de RETRY-parameter op 1 ingesteld is, zal de driver na 5 seconden de motor opnieuw proberen starten.

24

Page 25: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

4.2.4.2 Alternatieve drivers

Naast de DRV8308, die hier toegepast is, verdient de DRV8307 specifiek een vermelding. Dit is een ‘light’-versievan de DRV8308, zonder gesloten regelsysteem of SPI. De gatestroom voor de externe MOSFET’s is beperkt tot 30mA (DRV8308: 130 mA). Verder biedt hij dezelfde mogelijkheden, in dezelfde compacte QFN-behuizing metthermisch vlak, aan een lagere prijs (€ 0,81, 33% goedkoper).

De volgende drivers hebben ook interessante kenmerken:

De TI DRV8305 is geschikt voor een ruimer spanningsbereik: 4,4 tot 45 V. Hij biedt ook snelheidsregeling metéén enkele PWM-pin, maar vereist nog steeds externe commutatie, wat de sturing ingewikkelder maakt.

De beveiliging is iets uitgebreider dan de DRV8308 (overspanningsbeveiliging voor de ladingspomp), en hijbezit een LDO en drie shunt-versterkers. De overstroombeveiliging gebruikt UDS-detectie. Hij is ruim één euro

duurder dan de ‘08.

De TI DRV8301-03-reeks bevat drie gelijkaardige chips: de ’01 heeft SPI en een buck-regelaar, de ’02hardwareprogrammering en een buck en de ’03 enkel SPI. Verder bezitten ze dezelfde kenmerken: externecommutatie via 6 PWM-ingangen, UDS-overstroombeveiliging en 2 shunt-versterkers. De ’01 en ’02 kosten €

2,52, de ’03 € 1,63.

De Allegro A4915 heeft ingebouwde Hall-commutatie en wordt met één enkele PWM-input aangestuurd. Er isechter geen SPI-poort: enkel de dead time kan ingesteld worden (via een weerstand).

Bovendien bezit deze driver geen overstroombeveiliging en is de spanningsbeveiliging beperkt totmotoronderspanningsbeveiliging. De chip is verkrijgbaar voor € 1,84.

Alle prijzen zijn actueel op het moment van schrijven, Digi-Key, tape op spoel.

4.2.5 MOSFET's

Een typische elektronische BLDC-commutator bevat zes schakelelementen, geconfigureerd in drie halve H-bruggen. Er kunnen duidelijke parallellen getrokken worden met een driefasenomvormer: een BLDC-motor is infeite een driefasenmotor, waarbij de driefasige wisselspanning door de elektronische commutator opgewekt wordt.

25

Page 26: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Door gebruik te maken van vermogen-MOSFET's met lage interne weerstand (RDS(on)) als elektronische

schakelaars, kan de vermogendissipatie in de sturing sterk beperkt worden. Dit zorgt voor een compacte enefficiënte schakeling, die weinig warmte genereert.

4.2.5.1 Texas Instruments CSD88537ND

De Texas Instruments CSD88537ND is een dubbele vermogen-N-MOSFET met een zeer lage RDS(on) van 12,5

mΩ. Door de lage interne weerstand, warmt deze MOSFET bijna niet op bij het schakelen van stromen tot 8 A.Hierdoor kon deze in de compacte SO-8-vorm uitgevoerd worden. Met drie van deze chips kan een BLDC-sturinggebouwd worden.

Afbeelding: Texas Instruments

26

Page 27: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Texas Instruments gebruikt dit IC in hun DRV8308-reference designs. Er is ook onderzocht of deze vervangenkonden worden door andere dubbele MOSFET's of enkelvoudige MOSFET's, om deze eventueel te vervangen. DeCSD88537ND bleek echter de meest interessante optie, zowel qua prijs (€ 0,53) als bordoppervlakte.

4.2.5.2 Alternatieve MOSFET's

In een eindproduct is de relatief hoge maximumstroom van 8 A waarschijnlijk niet noodzakelijk en kan ditcomponent vervangen worden door een goedkoper alternatief (bijvoorbeeld door de CSD88539ND, 6,3 A, € 0,39).Daarnaast bestaat er ook steeds de mogelijkheid zes discrete MOSFET's te gebruiken, in plaats van drie dubbele.Dit vergroot echter de benodigde PCB-opperlakte.

4.2.6 Spanningsregelaar

Er is gekozen voor een logische voedingslijn VDD van +3,3 V, om de microcontroller en secundaire zijde van dedigitale isolator te voeden. Deze spanning moest uit de motorspanning VM opgewekt worden, aangezien dit deenige externe voedingslijn naar de hele schakeling is.

Om deze spanningsconversie eenvoudig en robuust te houden, is er voor een lineaire regelaar gekozen.Thermisch is dit mogelijk door het beperkte stroomverbruik uit VDD. Er zijn echter weinig 3,3 V-regelaars diespanningen tot 32 V aankunnen.

4.2.6.1 LM317L

De LM317L kan echter spanningen tussen input en output van 40 V aan. Deze variant van de klassieke LM317-spanningsregelaar kan maximaal 100 mA leveren; ruim voldoende voor deze toepassing.

Met slechts twee weerstanden wordt deze regelbare spanningsregelaar op 3,3 V ingesteld. In dit geval geeft dit eentheoretische maximale ingangsspanning van 43,3 V.

De LM317L wordt door verschillende fabrikanten geproduceerd, in verschillende bouwvormen. Om thermischeredenen is de versie in SOT-89 gespecifieerd.

In een finaal product zou een schakelende regelaar een mogelijk alternatief zijn. Hiermee kan de VDD veelefficiënter opgewekt worden, met minder warmteontwikkeling tot gevolg.

4.2.7 ESD-protectie

De inputs van de meeste IC bezitten clamping-dioden van de ingang naar de voedingslijnen. Deze bieden beperkteinterne ESD-protectie, door de energie van een elektrostatische ontladingspuls via deze dioden naar devoedingslijnen af te leiden. Om een schakeling robuuster te maken, is het echter vaak aangewezen externebescherming tegen ESD te voorzien, vlakbij de connectoren naar externe lijnen.

Hiervoor bestaan er compacte componenten, waarmee meerdere signaallijnen beschermd kunnen worden.

4.2.7.1 Würth Elektronik 824001

De Würth Elektronik 824001 is een zogenaamde TVS diode array voor vier kanalen, uitgevoerd in de zeer compacteSOT-23-6-vorm. Hij biedt bescherming tegen elektrostatische ontladingen tot 15 kV door de lucht en 8 kV viarechtstreeks contact. De interne TVS-diode heeft een breakdown-spanning van 6,2 V. Dit maakt de 824001 geschiktvoor voedingsspanningen tot 5 V DC.

Om de SPI, Hall-sensor-inputs en GPIO's te beschermen, zijn er vier van deze arrays gebruikt.

27

Page 28: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Afbeelding: Würth Elektronik

Om de layout van het gemaakte prototype niet te groot en complex te maken, is er voor gekozen deze externe ESD-protectie niet toe te voegen. De TVS diode arrays zijn wel in het schema opgenomen. Het is de bedoeling dat eentoekomstige PCB-layout footprints voor deze componenten voorziet; er kan dan nog bij assemblage gekozenworden deze al dan niet te bestukken.

Ook bij de ontwikkeling van een finaal product kan er gekozen worden deze componenten niet te gebruiken of dooralternatieven te vervangen; ze kosten namelijk € 0,53 per stuk, in volume. Vier van deze arrays vormen dus eengrote meerkost, vergeleken met de overige componenten in de schakeling.

4.2.8 Motor

Om de DRV8308-driverchip uit te testen werd er gebruik gemaakt van de DRV8308EVM. Deze evaluatiemodule vanTI bevat een complete schakeling, die gebruik maakt van de DRV8308, en een compatibele BLDC-motor. Met debijhorende Windows-GUI (graphical user interface, grafische gebruikersinterface) kan de DRV8308 eenvoudigaangestuurd worden. Dit evaluatiebord vormde de basis voor de ontworpen schakeling.

28

Page 29: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Afbeelding: Digi-Key

Jammer genoeg werd in het pakket een verkeerde motor meegeleverd (zonder Hall-sensoren), waardoor deaanschaf van een nieuwe motor noodzakelijk was. Om een beter beeld van de mogelijkheden van de schakeling tekrijgen, was het daarnaast ook aangewezen om met een kleinere motor, die op een lagere spanning werkt, tetesten.

Volgende motoren werden getest met de DRV8308EVM (en vervolgens met het prototype van het ontwikkelde BLDCShield):

4.2.8.1 Motor #1: RS Pro 536-6030

Deze krachtige motor stelt de high end van het BLDC-spectrum voor. Grotere modellen dan deze wordendoorgaans tot de PMSM's gerekend, waarvoor deze sturing niet ontworpen is.

29

Page 30: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Er is geen informatie over de fabrikant gevonden (RS Pro is een huismerk van de leverancier, RS Components).

4 poolparen, met Hall-IC's op 5 V (actief laag, open collector).Nominale spanning: 24 V.Maximale piekstroom: 20 A.Nominaal toerental: 4000 t/min.Nominaal koppel: 250 mNm, maximaal piekkoppel: 750 mNm.

4.2.8.2 Motor #2: Maxon 200142

Maxon is één van de voornaamste fabrikanten van BLDC-motoren. Dit specifieke model is gekozen omdat het dekleinste motor met sensoren was, die bij de leverancier in stock was.

Afbeelding: Maxon

30

Page 31: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Deze motor heeft een flatcable in plaats van losse draden; de Maxon 220300-connector werd gebruikt om deze oplosse draden aan te sluiten.

Bij dit model draait de achterzijde van de behuizing mee met de rotor. Hierdoor is het niet mogelijk om deze op eenoppervlak te plaatsen om te testen. Daarom is er een klein platform gemaakt om de motor ondersteboven temonteren tijdens de labotesten.

8 poolparen, met Hall-IC's op 5 V (actief hoog, rail to rail).Nominale spanning: 12 V.Nominale stroom: 2.02 A.Nominaal toerental: 2940 t/min.Nominaal koppel: 55 mNm, maximaal piekkoppel: 255 mNm.

4.3 SoftwareontwerpHet softwaregedeelte van het project bestaat uit twee programma's: de software die op de microcontroller draait(firmware ) en de bijkomende voorbeeldsoftware voor de Arduino.

4.3.1 Firmware microcontroller

De software van de PIC-microcontroller vormt een groot deel van het project. Deze zorgt ervoor dat demicrocontroller de volgende functies kan uitvoeren:

de BLDC-driver programmeren bij opstart;schrijfcommando's bestemd voor de BLDC-driver doorgeven;data terugsturen bij het ontvangen van een leescommando;het foutregister van de driver doorlopend inlezen en locaal opslaan;het toerental van de motor meten (FG-signaal);frequentie opwekken voor synchronisatie bij toerentalregeling (CLK-signaal);detecteren wanneer de motor een stabiel toerental bereikt (LOCK-signaal);GPIO-pinnen programmeren en inlezen/aansturen.

De software is in C geschreven in de Microchip MPLAB X-IDE, gecompileerd met XC8 en geprogrammeerd endebugged met een PICkit 3.

Om het ontwikkelen te vereenvoudigen is er bovendien gebruik gemaakt van de MPLAB Code Configurator. Dezeplugin voor MPLAB X biedt een grafische gebruikersomgeving voor de configuratie van de PIC en maaktautomatisch bibliotheken aan voor de gebruikte functies.

4.3.1.1 Geheugen

De firmware is, net zoals de DRV8308, register driven: alle parameters die de programmawerking bepalen, zijn inregisters opgeslagen, die via SPI kunnen gelezen en geschreven worden.

De parameters bevinden zich in het hoofdprogramma als #defines. Ze worden dus door de compiler in hetprogrammageheugen geplaatst. Na het opstarten worden ze gesorteerd in twee soorten registers: driverregistersen virtuele registers.

Driverregisters

De driverregisters zijn kopieën van de registers van de DRV8308-driver-chip. Zij bevatten de parameters voor alleinterne functies van de DRV8308 (motor aan/uit, richting, snelheid, beveiliging...).

31

Page 32: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Als de microcontroller via SPI1 (hoofdprocessor) een schrijfcommando ontvangt voor één van deze registers, zal ditcommando doorgestuurd worden naar SPI2 (driver). De microcontroller zal de interne kopie van het driverregisterook bijwerken.

Op deze manier bevatten de driverregisters van de microcontroller steeds dezelfde data als die van de DRV8308,en kan de microcontroller onmiddelijk op leescommando's reageren.

Registeradres(hex) Naam Omschrijving

0x00 CTRL1 Voornaamste stuurparameters.

0x01 ADVANCE Versnellen/vertragen van de commutatie tegenover de sensoren.

0x02 COMCTRL1 Parameters voor de LOCK-pin.

0x03 MOD120 Bevat onder andere de PWM-schaalfactor.

0x04 DRIVE Bevat onder andere parameters voor de predrivers.

0x05 SPDGAIN Versterking van de compensator en klokfrequentie van de integrator(toerentalregeling).

0x06 FILK1 Sensorpolariteit en pool van de filter (toerentalregeling).

0x07 FILK2 Nul van de filter (toerentalregeling).

0x08 COMPK1 Pool van de compensator (toerentalregeling).

0x09 COMPK2 Nul van de compensator (toerentalregeling).

0x0A LOOPGN Parameters van beveiligingen en versterking van de toerentalregellus.

0x0B SPEED Motorsnelheid.

0x2A FAULT Rapporteert opgetreden fouten.

Alle registers kunnen via SPI gelezen en geschreven worden. Het foutregister 0x2A is het enige register waar deDRV8308 zelf naar kan schrijven.

Virtuele registers

Virtuele registers hebben adressen die niet door de DRV8308 herkend worden. Zij bevatten de parameters dieuniek zijn voor de firmware van de microcontroller.

Als een schrijfcommando ontvangen wordt voor één van deze registers, zal dit commando niet naar de driverdoorgestuurd worden, maar zal de microcontroller het commando zelf verwerken (bijvoorbeeld de CLK-frequentiewijzigen als de inhoud van het CLK-register 0x17 aangepast wordt).

32

Page 33: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Registeradres (hex) Naam Omschrijving

0x10 GPIO0 Parameters voor GPIO-pin 0.

0x11 GPIO1 Parameters voor GPIO-pin 1.

0x12 GPIO2 Parameters voor GPIO-pin 2.

0x13 GPIO3 Parameters voor GPIO-pin 3.

0x14 GPIO4 Parameters voor GPIO-pin 4.

0x15 GPIO5 Parameters voor GPIO-pin 5.

0x16 FG Gemeten toerental.

0x17 CLK Opgewekte klokfrequentie (toerentalregeling).

0x18 LOCK Meting LOCK-pin.

4.3.1.2 Programmaflow

In dit gedeelte wordt de structuur van het programma besproken, geïllustreerd met enkele fragmenten uit de code.De gebruikte eigen geschreven functies worden in 'Functies' verder toegelicht.

Opstart

Bij het opstarten van de microcontroller zal deze eerst de parameters in het programmageheugen naar hetwerkgeheugen kopiëren, gesorteerd in een array volgens registeradres.

Vervolgens worden alle driverparameters (registers 0x10 tot 0x0B en 0x2A ) in de DRV8308 geprogrammeerd viaSPI2. De interne functies worden ook geconfigureerd volgens de waarden in de virtuele registers.

// Transfer all driver register data to the DRV8308 via SPI2// and configure all virtual register peripherals.for (address = 0x00; address <= 0x2A; address++){ updateRegister(address, registers[address]); __delay_ms(1);}

address is een variabele die het te schrijven registeradres bevat, registers is de array die alle registerdata in demicrocontroller bevat.

Daarna wordt de eerste ADC-meting gestart, als minstens één van de GPIO-pinnen als analoge inputgeconfigureerd is.

// Start measuring the first analog GPIO input right away// (if there are actually any analog inputs defined).if (GPIO0ADC | GPIO1ADC | GPIO2ADC | GPIO3ADC | GPIO4ADC | GPIO5ADC){ GPIOStartADCConversionAfter(5);}

Hoofdlus

Na deze opstartfase wordt de hoofdlus bereikt. De microcontroller blijft deze lus uitvoeren, tot de voedingonderbroken wordt.

Eerst wordt er gekeken of er een nieuw schrijfcommando ontvangen is via SPI1 (van de hoofdprocessor) of van eenGPIO-pin, ingesteld als start- of stopknop. Een eventueel commando wordt verwerkt alvorens verder te gaan.

33

Page 34: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

// Process the last command received via interrupts (SPI1 or IOC).if (updateRegisterFlag){ updateRegister(address, registers[address]); updateRegisterFlag = 0; // Clear the update register flag.}

Hierna stuurt de microcontroller een leescommando voor het foutregister 0x2A naar de driver via SPI2. Deontvangen waarde wordt in het werkgeheugen opgeslagen. Dit is het enige register dat de driver zelf kanbeschrijven. Door middel van polling zorgt de microcontroller ervoor dat zijn kopie van de driverregisters steedsactueel blijft.

// Read in the DRV8308's fault register via SPI2.registers[0x2A] = readFault();

Daarna worden de GPIO-pinnen, ingesteld als inputs, één voor één ingelezen. De meetwaarde wordt in de 10laagste bits van het bijhorende register ( 0x10 – 0x16 ) opgeslagen.

Als het om een digitale input gaat, kan deze rechtstreeks ingelezen worden. De spanning, aangelegd aan deanaloge inputs, wordt met de ADC gemeten. Dit is (zoals gewoonlijk bij microcontrollers) een successiveapproximation-ADC, waarbij een conversie een vast aantal klokpulsen duurt (in dit geval 11,5).

Wanneer een conversie uitgevoerd is, wordt de meetwaarde opgeslagen en start het programma de conversie vande volgende analoge input. Zo worden alle GPIO's, ingesteld als analoge inputs, afwisselend gemeten.

Het programma controleert vervolgens of er een nieuwe meting van de FG-pin beschikbaar is. Indien dat het gevalis, wordt de nieuwe waarde opgeslagen in het register met adres 0x16 .

Ten slotte wordt de digitale waarde van de LOCK-pin gemeten en in register 0x18 opgeslagen. Aangezien ditsignaal actief laag is, wordt de meetwaarde geïnverteerd alvorens ze op te slaan.

// Read in the LOCK pin.registers[0x18] = !LOCK_GetValue();

Interrupts

Interrupts onderbreken de hoofdlus bij bepaalde gebeurtenissen; zo kan het programma prioriteit geven aan deverwerking ervan.

De belangrijkste interrupt is het ontvangen van data via SPI1 (hoofdprocessor). De ISR (interrupt service routine)controleert of het om een lees- of schrijfcommando gaat en slaat het registeradres op.

Bij een leescommando wordt de opgevraagde registerdata meteen teruggestuurd. In het geval van eenschrijfcommando wordt de te schrijven data opgeslagen. De verwerking van het schrijfcommando gebeurt wanneerhet programma terugkeert naar het begin van de hoofdlus.

Daarnaast worden voor GPIO's, ingesteld als schakelaar-inputs (start links, start rechts of stop), interrupts-on-change ingesteld. Deze interrupts worden uitgevoerd wanneer de spanning aan de betreffende pin laag gaat.

De motor wordt dan ofwel linksdraaiend of rechtsdraaiend gestart, ofwel gestopt, afhankelijk van de ingedrukteschakelaar. Een bijkomende veiligheidsmaatregel in de eerste twee gevallen is het controleren van de toestandvan een eventuele rem-input, zodat de motor niet gestart kan worden als de remknop ingedrukt is.

4.3.1.3 Functies

Op codeniveau bestaat het programma uit een main, die de opstartroutine en de hoofdlus bevat, en een ISR, die deinterrupts verwerkt. Beide zijn aangevuld met een aantal functies:

34

Page 35: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

updateRegister

Verwerkt een schrijfcommando, bestaande uit een adres en registerdata. Als het adres met een driverregisterovereenkomt ( 0x00 tot 0x0B of 0x2A ), wordt het schrijfcommando doorgegeven naar de driver via SPI2. Als het omeen virtueel register gaat ( 0x10 tot 0x17 ), zal de microcontroller het commando zelf verwerken.

Deze functie wordt bij het opstarten gebruikt om de driver te programmeren. Daarna wordt ze in de hoofdlusaangeroepen bij het ontvangen van een schrijfcommando via SPI1 of het indrukken van een start- of remknop.

GPIOIsInput

Bepaalt of de gegeven GPIO-pin een input is (digitaal of analoog), door de TRIS-waarde van de pin te lezen. HetTRIS-register in PIC-microcontrollers bepaalt de I/O-status van de pinnen.

Deze functie wordt in de hoofdlus gebruikt bij het inlezen van de inputs.

GPIOIsAnalogInput

Bepaalt of de gegeven GPIO-pin een analoge input is, door de ANS-waarde van de pin te lezen. Het ANS-register inPIC-microcontrollers bepaalt de ADC-status van de pinnen.

Deze functie wordt in de hoofdlus gebruikt bij het inlezen van de inputs.

GPIOStartADCConversionAfter

Start de ADC-conversie van de GPIO-pin, ingesteld als analoge input na de gegeven pin. Als bijvoorbeeld GPIO-pinnen 0 en 2 als analoge inputs ingesteld zijn, en deze functie wordt aangeroepen met argument 0 , zal de ADC-meting van GPIO2 gestart worden. Als er geen analoge input na de huidige is, wordt er terug vanaf 0 geteld.

Deze functie wordt in de hoofdlus gebruikt bij het inlezen van de inputs.

GPIOGetValue

Meet de digitale waarde van de gegeven GPIO-pin.

Deze functie wordt in de hoofdlus gebruikt bij het inlezen van de inputs.

GPIOIsBrakeSwitchActive

Controleert of er één of meer GPIO-pinnen als inputs voor remschakelaars ingesteld zijn, en of minstens één vandeze rem-inputs actief (laag) is.

Deze functie wordt aangeroepen bij het activeren van een input voor een startknop, zodat de motor niet kan startenals er op dat moment ook een remknop ingedrukt is.

readFault

Stuurt een leescommando voor het foutregister 0x2A naar de DRV8308 via SPI2 en geeft de ontvangenregisterdata terug.

Deze functie wordt in de hoofdlus gebruikt bij het inlezen van het foutregister.

35

Page 36: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

// readFault: read in the DRV8308's fault register via SPI2.unsigned int readFault(){ unsigned int fault;

SS2_SetLow(); // Enable SS2. SPI2_Exchange8bit(0xAA); // Send read fault register command // (read/write bit = 1, address = 0x2A). fault = SPI2_Exchange8bit(0) << 8; // Save the received high fault byte. fault |= SPI2_Exchange8bit(0); // Save the received low fault byte. SS2_SetHigh(); // Disable SS2.

return fault; // Return the fault register's contents.}

updateRegisterCustom

Wordt uitgevoerd door updateRegister . Deze functie is specifiek bedoeld om custom applicatiespecifieke code in teplaatsen.

Onderstaande voorbeeldcode leest de BRKPOL-bit uit register 0x00 . Als deze bit 1 is, zal de motor remmen.Deze waarde wordt naar GPIO5 geschreven, en de inhoud van het bijhorende register wordt geüpdate (zo blijft hetgeheugen synchroon met de hardware-toestand).

Op deze GPIO-pin is een led aangesloten. Deze led zal nu oplichten wanneer de motor geremd is.

// updateRegisterCustom: custom code, executed when updating the registers.void updateRegisterCustom(unsigned char address, unsigned int data){ // ========================================================================= // EXAMPLE: SHOW BRAKE STATUS ON LED (GPIO5). if (address == 0x00) { // Read BRKPOL bit of register 0x00 and update the GPIO5 pin. if (data & 0b0000001000000000) { GPIO5_SetHigh(); registers[0x15] = 0b0000000000000001; } else { GPIO5_SetLow(); registers[0x15] = 0b0000000000000000; } } // END OF EXAMPLE. // =========================================================================}

data is de registerdata die geschreven wordt met het SPI-schrijfcommando.

4.3.1.4 Peripherals

De PIC16F18345 bezit een groot aantal extra interne modules (peripherals). Naast de gebruikelijke timers en ADC(analoog-naar-digitaalconverter) vinden we enkele speciale zaken zoals de Numerically Controlled Oscillator(NCO).

Met deze peripherals kunnen heel wat zaken parallel met de hoofdprocessor uitgevoerd worden, wat hetprogramma sneller en eenvoudiger maakt.

Analog-to-Digital Converters (ADC)

36

Page 37: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Iedere GPIO-pin van de PIC16F18345 kan gebruik maken van de geïntegreerde 10-bits successive approximation-ADC, om analoge spanningen om te zetten in digitale waarden. Deze wordt op het Shield gebruikt voor het inlezenvan de potentiometerwaarde en de spanning over de stroommeetweerstand, zodat de stroom door de motor opieder moment via SPI uitgelezen kan worden.

In een afgewerkt product is dit waarschijnlijk niet nodig, maar kan het wel noodzakelijk zijn andere analogespanningen te digitalizeren met behulp van de ADC's in de PIC, via de GPIO-pinnen.

Capture/Compare/PWM Module 1 (CCP1) en Timer0

De PIC16F18345 bezit vier CCP-modules die gebruikt worden voor het meten en opwekken van signalen. Dezeperipherals worden in combinatie met de timers gebruikt voor het meten van het FG-signaal en het opwekken vanhet CLK-signaal.

Timers vinden we in vrijwel iedere microcontroller terug. Ze geven de microcontroller de mogelijkheid om tijd temeten, parallel met de programma-uitvoering. De PIC16F18345 bezit zeven timers, waarvan drie 16-bits timers.Timer0 van de PIC16F18345 is zo'n 16-bits timer, hier ingesteld met klokbron FOSC/4. Dit is de 32 MHz-

systeemklok, gedeeld door 4 (8 MHz).

Bij iedere FOSC-klokpuls zal Timer0 zijn registerwaarde met 1 incrementeren.

CCP1 werkt in capture-modus. In deze modus zal de module de bijhorende timer (Timer0) resetten naar 0 bij eenextern signaal (in dit geval een stijgende of dalende flank aan de FG-pin, mode 'Every edge'). Op dat moment wordtook de bereikte waarde van Timer0 opgeslagen in de CCPR1H- en CCPR1L-registers, die samen de 16-bitscapture-waarde 'CCPR' vormen.

De klokbron van Timer0 FOSC/4 heeft een frequentie van 8 MHz. De frequentie van het gemeten FG-signaal dan als

volgt uit CCPR berekend worden:

fFG [Hz] = (8 MHz / 2) / CCPR

De deler '2' is afkomstig van de meting op zowel stijgende als dalende flanken. Dit geeft dan de formule:

fFG [Hz] = 4.000.000 / CCPR

De maximumfrequentie die gemeten kan worden is 4 MHz (CCPR = 1). Dit is natuurlijk veel te snel voor eendraaiende motor. (Bij 8 poolparen zou dit overeenkomen met 30 miljoen t/min!)

We hebben hier echter te maken met een logaritmisch meetsysteem, door de inversie van periode naar frequentie.Een CCPR van 2 komt bijvoorbeeld overeen met een frequentie van 2 MHz, 3 met 1,33 MHz, enzovoort.

Om bij de lage frequenties die we voor het FG-signaal verwachten (tientallen Hz tot enkele kHz) voldoende resolutiete hebben, is een relatief hoge timer-klokfrequentie dus nodig.

De minimale frequentie die gemeten kan worden, kan als volgt bepaald worden, wetende dat de timer een 16-bitsregister bezit:

fFG-min [Hz] = 4.000.000 / 216

fFG-min [Hz] = 4.000.000 / 65.536

fFG-min [Hz] ≅ 61,04 Hz

Voor een motor met 8 poolparen komt dit overeen met een toerental van 458 t/min. De gesloten lusregeling van deDRV8308 is geoptimaliseerd voor frequenties van 50 tot 6,7 kHz. Deze minimumfrequentie komt dus vrij goedovereen met de mogelijkheden van de driver-chip.

37

Page 38: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Bij een nieuwe meting van CCP1 wordt CCPR opgeslagen in virtueel register 0x16 , zodat het via SPI uitgelezenkan worden door de hoofdprocessor van het systeem. Deze methode heeft enkele gevolgen waar men rekeningmee dient te houden:

De FG-meetwaarde is het aantal klokpulsen tussen de twee voorgaande FG-flanken, en moet door dehoofdprocessor omgerekend worden naar een frequentie en/of toerental, als de toepassing dit vereist. Deformule voor toerental hangt af van het aantal poolparen dat de motor bezit (zie 'DRV8308: Control' hierboven).

Bij een sterk veranderlijk toerental kan het wenselijk zijn het gemiddelde te berekenen over een aantalmetingen (rolling average).

Als de motor remt zal het FG-signaal stoppen. De laatste meting blijft in 0x16 staan.

Bij FG-frequenties lager 61 Hz zal Timer0 overflowen: de meting zal niet geldig zijn.

HFINTOSC is de interne 32 MHz-oscillator van de PIC16F18345. Deze oscillator vormt de systeemklok FOSC,

die ook gebruikt wordt door Timer0 voor de FG-meting. HFINTOSC heeft een opgegeven tolerantie van ±2 % bij25 °C, en ±5 % over het verlengde industriële temperatuurbereik van -40 tot 125 °C. Dit veroorzaakt eenovereenkomstige (mogelijk temperatuurafhankelijke) onzekerheid in de FG-meting.

Oorspronkelijk werd er een prescaler gebruikt om de klokfrequentie van 8 MHz te verlagen, wat op zijn beurt deminimale meetfrequentie deed dalen. Door silicon bugs in de compare-modus van de PIC16F18345 (zie verder)was dit echter niet mogelijk voor het opwekken van het CLK-signaal. Hierdoor zouden de meetwaarde van FG ende ingestelde waarde van CLK niet overeenkomen bij eenzelfde frequentie.

Capture/Compare/PWM Module 2 (CCP2) en Timer1

CCP2 werkt, in tegenstelling tot CCP1, in compare-modus: als de registerwaarde van Timer1 de ingesteldecompare-waarde bereikt, zal CCP2 de timer resetten en de toestand van de digitale CLK-pin wijzigen (mode'Toggle_cleartmr'). Op deze manier ontstaat er een CLK-frequentie:

fCLK [Hz] = (8 MHz / 2) / CCPR

De aandachtige lezer merkt op dat dit vrijwel dezelfde formule is als die voor de FG-meting. Dit is niet toevallig:Timer1 is ook een 16-bits timer, met dezelfde FOSC</sub>-klokbron. Op deze manier moeten de CCP-waardenvan CLK en FG identiek zijn (±1 bit) als de motor in gesloten lusregeling werkt en de regeling gelockt is.

Dit wil ook zeggen dat het CLK-signaal dezelfde minimale frequentie van 61 Hz heeft. Bovendien heeft dezefrequentie ook dezelfde HFINTOSC-afhankelijke onzekerheid.

Om ook CLK-signalen van lagere frequenties op te kunnen wekken, was het de bedoeling gebruik te maken van deprescaler van Timer1. De compare-gedeeltes van de CCP's in de PIC16F18345 hebben echter silicon bugs(hardware-ontwerpfouten) als ze in toggle-modus werken en de prescaler ingeschakeld is: in plaats van detoestand van de output-pin te wijzigen, ontstaat er enkel een korte puls (zie PIC16F18345 Errata).

Daarnaast bleek dezelfde fout zich ook voor te doen als LFINTOSC de klokbron van de timer was (interne 31 kHz-klok), met uitgeschakelde prescaler. Dit is niet gedocumenteerd in de errata van het IC.

Bij het schrijven van een nieuwe CLK-waarde naar register 0x17 via SPI, zal deze waarde naar de CCPR2H-CCPR2L-registers gekopiëerd worden, om de opgewekte CLK-frequentie te wijzigen.

Master Synchronous Serial Port 1 (MSSP1)

Eén van de unieke features van de PIC16F18345 is de dubbele synchrone seriële poort. Dit was de voornaamsteparameter voor het kiezen van deze microcontroller. De twee MSSP's werken onafhankelijk en kunnen ieder als SPI

of I2C, master of slave ingesteld worden.

MSSP1 doet hier dienst als SPI-slave en wordt aan de hoofdprocessor aangesloten. Inkomende data wordtgeanalyseerd en indien nodig doorgegeven aan SPI2 (MSSP2).

38

Page 39: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Deze modules werken als een schuifregister. Bij iedere klokpuls wordt er een nieuwe bit gestuurd (via SDO, serialdata output) en ontvangen (SDI, serial data input). Omdat de parallel-naar-serieelconversie volledig hardwarematiggebeurt, kan de transmissiesnelheid de instructiekloksnelheid van de microcontroller overstijgen.

Master Synchronous Serial Port 2 (MSSP2)

De tweede SPI-poort is een master, aangesloten op de DRV8308. De communicatiesnelheid is 2 Mbps ('ClockSource' = FOSC</sub>/4).

Numerically Controlled Oscillator (NCO)

De Numerically Controlled Oscillator maakt het eenvoudig om variabele frequenties op te wekken met lineairemodulatie: de stapgrootte blijft doorheen het hele frequentiebereik constant. Hij biedt bovendien een resolutie van20 bits.

Deze peripheral lijkt op het eerste zicht dus ideaal om het kloksignaal (CLK) op te wekken voor de geslotenlusmodus van de DRV8308. De eerste versies van de firmware gebruikten dan ook de NCO, maar uiteindelijk is ertoch gekozen om CCP2 in compare-modus voor de CLK te gebruiken. Dit om volgende redenen:

Er wordt al een CCP in capture-modus gebruikt voor de FG-modus. De CLK zou dus een lineair verloophebben, terwijl de FG-meting logaritmisch is. De waarden zouden dus niet overeenkomen bij eenzelfdefrequentie.

Beide parameters in Hz opslaan en weergeven zou een mogelijke oplossing zijn, ware het niet dat er danafrondingsfouten ontstaan.

Een tweede nadeel is de jitter (faseruis) van het NCO-signaal, die een gevolg is van de manier waarop dezemodule werkt. Hoewel een draaiende motor een soort mechanische laagdoorlaatfilter vormt, is eenkloksignaal met een zeer lage jitter toch een voordeel. Dit houdt de sturing soepel en stil.

Om deze redenen is uiteindelijk gebruik gemaakt van CCP2 in combinatie met Timer1 voor de opwekking van hetCLK-signaal.

GPIO

GPIO staat voor general purpose input/output. Dit zijn zes extra pinnen op de microcontroller, die door de gebruikervrij toegewezen kunnen worden. Ze kunnen bijvoorbeeld gebruikt worden voor het inlezen van eindschakelaars ofhet aansturen van verlichting nabij de motor.

Op het Shield zijn deze pinnen reeds toegewezen met behulp van jumpers. Door de jumpers te verwijderen kunnener externe GPIO-verbindingen gemaakt worden. Het programmeren, aansturen en inlezen van de GPIO-pinnenverloopt, net als alle andere communicatie, volledig via SPI.

Vaste toewijzingen:

GPIO0 (input, ADC): stroommeetweerstand.GPIO1 (input, ADC): potentiometer.GPIO2 (input): drukknop 1.GPIO3 (input): drukknop 2.GPIO4 (input): drukknop 3.GPIO5 (output): led.

Deze bedieningen worden in standalone-modus gebruikt om de motor aan te sturen:

Potentiometer: snelheid.Drukknop 1: start linksdraaiendDrukknop 2: start rechtsdraaiend.Drukknop 3: stop.

39

Page 40: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Led: motor is geremd.

4.3.2 Voorbeeldsoftware Arduino

Voor de Arduino Due is er een eenvoudig voorbeeldprogramma geschreven om de communicatie tussen Arduinoen PIC-microcontroller te demonsteren. Dit programma maakt het mogelijk om registers van het BLDC Shield telezen en te schrijven via de seriële poort (USB), door commando's in te voeren in de seriële terminal. Dit kan deingebouwde seriële monitor zijn van de Arduino IDE, of software als CoolTerm, PuTTY...

4.3.2.1 Programmaflow

Het programma start op in leesmodus. De gebruiker kan dan een adres van het BLDC Shield uitlezen door dit inhexadecimale vorm in te voeren. De ingevoerde data wordt als ASCII-karakters ontvangen.

Het programma reageert enkel op nummers (0-9) en de letters A-F. Kleine letters a-f worden automatisch naarhoofdletters omgezet. Er moeten geen newlines gestuurd worden: het programma telt het aantal ontvangenkarakters en voert vanzelf het commando uit.

Leesmodus

Van zodra er twee geldige karakters ontvangen zijn, stuurt de Arduino via SPI een leescommando voor het gekozenregisteradres. Vervolgens worden de twee respons-bytes van het Shield opgeslagen en in de terminalweergegeven in drie formaten: binair, hexadecimaal en decimaal.

Men kan in deze modus ook de letter W (of w) ingeven. In dit geval schakelt het programma over naar deschrijfmodus.

40

Page 41: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Schrijfmodus

Na het invoeren van de twee adreskarakters verwacht het programma in deze modus nog eens vier karakters. Dezevormen de data, die naar het gekozen register geschreven moet worden, in hexadecimale vorm.

Als ook deze data ingevoerd is, zal het SPI-schrijfcommando naar het Shield verstuurd worden. De geschrevenregisterdata wordt in de drie formaten weergegeven.

Met 'R' of 'r' keert het programma terug naar de leesmodus.

4.3.2.2 Functies

stringProgramTime

Iedere lijn wordt voorafgegaan door de uptime van het programma, weergegeven in de vorm'minuten:seconden.miliseconden'. Deze tijd wordt berekend door deze functie, aan de hand van de Arduino-functie millis . Deze functie geeft het aantal miliseconden dat het programma actief is terug.

stringProgramTime berekent hieruit de minuten en seconden, en plaatst alles samen in één string. Deze string wordtvervolgens in de hoofdlus gebruikt, telkens wanneer er een lijn naar de terminal gestuurd wordt.

readRegister

De functie readRegister stuurt een leescommando via SPI voor het gekozen register.

writeRegister

Stuurt een schrijfcommando, met de gegeven data, via SPI voor het gekozen register.

stringByteBinary

Geeft een string terug die een binaire voorstelling van de data van een gegeven byte bevat.

4.4 Prototype

4.4.1 Printplaat

Hoewel het oorspronkelijk de bedoeling was de schakeling in de vorm van een Arduino Shield uit te voeren, bleekdit al snel niet mogelijk door tijdsgebrek. Naast de tijd die het inwerken in de PCB-editor van Altium Designer enhet eigenlijke tekenen in beslag zou nemen, zou er ook nog gewacht moeten worden op de fabricage enbestukking van de printplaten.

Daarom is er gekozen om een prototype op experimenteerprint (stripboard) op te bouwen, om de finale schakelingtoch te kunnen demonstreren. Deze prototypeschakeling is, op enkele kleine aanpassingen na, identiek aan hetgetekende hardwareschema (geen externe ESD-protectie op in- en uitgangen, stroombegrenzing vast ingesteld op6,5 A).

De SMD-componenten werden handmatig op adapters gesoldeerd, zodat ze op het stripboard gemonteerd kondenworden. Hierbij hoorde ook de DRV8308-driver: een 6 x 6 mm QFN met een contactafstand van slechts 0,5 mm.Doordat de soldeervlakken van dit pinloos component ook aan de zijkant bereikbaar waren, was het mogelijk dezemet de hand op de adapter te solderen.

Om een Arduino aan te kunnen sluiten, zijn er op het prototypebord een 6-pins SPI-header en één enkele SS-header-pin voorzien. De SPI-headers van prototype en Arduino kunnen met een zesaderige IDC-kabel verbondenworden. Er is dan enkel nog een aparte draad nodig voor het slave select-signaal.

De gebruikte variant van de digitale isolator is de Si8641A. Deze is beperkt tot 1 Mbps. (De B-versie heeft eenmaximale communicatiesnelheid van 150 Mbps.)

41

Page 42: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Het prototype is ontworpen in DIY Layout Creator. Dit is een gratis en open source (GPL) Java-programma,oorspronkeljk bedoeld voor het tekenen van stripboard-layouts voor gitaareffecten.

4.4.2 Demonstrator

42

Page 43: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Hoewel de sturing eenvoudig gedemonstreerd kan worden door een motor te laten draaien, is dit niet heelaanschouwelijk. Daarom is er ook een demonstratie-opstelling (demonstrator) gemaakt. Hiervoor is er vertrokkenvan een bestaand Verhaert-project met een platform dat horizontaal kan bewegen.

De borstelloze motor is met een riemoverbrenging met dit platform verbonden. Door de motor te laten draaien,beweegt het platform. Hiermee kunnen ook de richtingsomkering, snelheidsregeling, het elektronisch remmen ende verschillende soorten beveiliging gedemonstreerd worden.

De demonstrator maakt ook gebruik van de GPIO-pinnen: aan de uitersten van de rail, waarop het platformbeweegt, zijn eindschakelaars geplaatst. Deze schakelaars zijn verbonden met GPIO2 en GPIO3, die in defirmware ingesteld zijn als 'start rechtsdraaiend' en 'start linksdraaiend'. Het resultaat is dat het platform vanzelf inde overgestelde richting zal draaien wanneer het einde van de rail bereikt wordt.

GPIO1 is ingesteld als stopknop. Hierop is een noodstop aangesloten om ook de manuele remfunctie tedemonstreren.

43

Page 44: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

5 RapporteringHet laatste hoofddeel van het project is de rapportering. Deze bestaat uit de presentaties en demonstraties op hetbedrijf en de school, alsook de documentatie (deze scriptie en bijlage).

Bij de rapportering hoort ook een reflectie: voldoet het resultaat aan de vereisten, welke lessen zijn er geleerd enwat kan er nog verbeterd worden in de toekomst?

Daarnaast worden er ook enkele scenario's gegeven voor toekomstige implementatie in producten, met bijhorendeaandachtspunten.

5.1 ResultatenDe volgende resultaten zijn tijdens deze stage verwezenlijkt:

gedocumenteerd onderzoek naar BLDC-motoren en hun stuurmethoden, survey en markstudie;opstelling van requirements aan de hand van onderzoeksresultaten;ontwerp van systeemarchitectuur;keuze, bestelling en evaluatie van componenten;gedetailleerd hardware-ontwerp in de vorm van een elektrisch schema, getekend in Altium Designer;embedded software ontworpen en vervolgens geschreven in C;systeemtest aan de hand van een Arduino Due, zelfgemaakt PIC16F18345-testbord en DRV8308EVM mettwee BLDC-motoren, testen en troubleshooting;prototype-ontwerp, assemblage op stripboard, testen en troubleshooting;bouwen van een demonstratie-opstelling;presentatie en demonstratie op het bedrijf.

5.2 SpecificatiesArduino-compatibele sturing (kan standalone werken) voor BLDC-motoren met ingebouwde Hall-sensoren;motorspanningsbereik: 8,5 tot 32 V;maximale continue stroom: 8 A;Maximaal toerental (theoretisch, één poolpaar): 1.800.000 t/min;galvanisch gescheiden SPI-poort tot 8 Mbps;volledig aangestuurd via SPI: aan/uit, snelheid, richting, remmen, configuratie...;regelsysteem met open ('normale' PWM-sturing) of gesloten lus (toerentalregeling met programmeerbareparameters);6 programmeerbare pinnen voor limietschakelaars, relais...;bescherming: overstroom, overspanning, onderspanning, overtemperatuur, vastgelopen rotor;regelbare stroombegrenzing (shunt-weerstand);stroommeting (shunt-weerstand);statusrapportering via SPI (inclusief fouten);manuele bediening: potentiometer en drie drukknoppen;ruime hoeveelheid meetpunten en headers;geschatte kostprijs (enkel voor sturing, 2500 stuks bij Digi-Key): 6 euro;

zonder galvanische scheiding: 4,5 euro;zonder galvanische scheiding of microcontroller: 3,5 euro.

5.2.1 Vergelijking met DRV8308EVM

44

Page 45: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

De Texas Instruments DRV8308EVM, het evaluatiebord van de gebruikte driver-chip, is in eerste instantieontworpen om het IC te kunnen testen en snel een BLDC-motor te doen draaien. Met de Windows GUI kunnenparameters snel en eenvoudig aangepast worden. Een MSP430-microcontroller vertaalt de instructies vanuit dezeGUI naar SPI-commando's voor de DRV8308.

Hierdoor is het een ideaal platform om parameters uit te testen met een specifieke motor, maar veel mindergeschikt voor rapid prototyping:

Het gebruik van de USB-poort is verplicht, waardoor er ook steeds een computer aangesloten moet worden.

De code van de microcontroller is beschikbaar gemaakt en kan geherprogrammeerd worden, maar is weinigoverzichtelijk en vormt geen goede basis voor gebruik in een finaal product.

De DRV8308EVM bevat bovendien een aantal extra functies, die zelden of nooit gebruikt zullen worden(alternatieve voeding voor Hall-sensoren, tachometeringang, EEPROM-socket...), waardoor het gebruikonnodig complex wordt.

Het ontwikkelde BLDC Shield vormt een tussenstap tussen deze evaluatiemodule en een finaal product.

Voor gebruik is geen computer nodig (mits extra externe voeding): enkel een Arduino of vergelijkbaarontwikkelbord volstaat. Het kan ook zelfstandig werken, dus er kunnen demonstrators mee opgebouwd wordendie helemaal geen aparte processor nodig hebben. De toegevoegde GPIO-pinnen zijn zeker in dat gevalwaardevol.

De motorsturing en hoofdprocessor zijn galvanisch gescheiden. Dit verhoogt de elektrische veiligheid.

De microcontrollercode is zo geschreven dat het een basis kan vormen voor een finaal product.

Door het aantal driver-functies te beperken tot de meest gebruikte, wordt het prototypen eenvoudiger.

5.3 Openstaande problemen en mogelijke verbeteringen

5.3.1 PID-regelaar

Bij motorsturingen wordt er vaak gebruik gemaakt van PI- of PID-regelaars. Dit zijn regellussen met eenproportionele, integrerende en eventueel een differentiërende component. Dit maakt het mogelijk de motorsoepeler aan te sturen: na het instellen van een nieuwe snelheid, zal de regellus de werkelijke snelheid geleidelijkwijzigen volgens de ingestelde regelparameters.

Hoewel de DRV8308 al een PI-regelsysteem bezit voor de toerentalregeling, is deze regelaar enkel bedoeld om demotor het ingestelde toerental te laten bereiken en die daar te houden bij veranderlijke belasting. Bovendien wordtdeze regellus enkel gebruikt bij toerentalregeling.

Een eventuele extra regelaar zou dus in de PIC-microcontroller toegepast moeten worden om de hoofdprocessorte ontlasten. Gewoonlijk volstaat voor motoren een PI-regelaar (zonder differentiërende component). Dit zou deimplementatie vereenvoudigen. Een voorbeeld kan in Microchip application note AN937 gevonden worden.

De PID-berekeningen zouden dan op een vaste frequentie uitgevoerd worden. Hiervoor kan men een timergebruiken, die steeds na een vaste tijd een interrupt activeert. In de bijhorende ISR wordt de PID-regelaar dangeüpdatet.

Op geheugenvlak kunnen de extra parameters in nieuwe virtuele registers opgeslagen worden. Naast devariabelen van de regelaar zouden er ook nieuwe parameters voor de gewenste motorsnelheid toegevoegdmoeten worden. De gewenste PWM-waarde in open lus en het gewenste toerental in gesloten lus kunnengecombineerd worden in één parameter. Als de PID-regelaar ingeschakeld is, zal de microcontroller zelf steeds dewerkelijke snelheid (SPEED, 0x0B ) of werkelijke klokfrequentie (CLK, 0x17 ) wijzigen, volgens de ingestelde PID-parameters, tot deze overeenkomt met de doelwaarde.

45

Page 46: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

5.3.2 SPI-vertragingen

Bij het ontwikkelen met de PIC16F18345-microcontroller viel het op dat deze relatief traag reageert op ontvangenSPI-data. Daarbij komt ook nog de rekentijd van de instructies in de ISR. Hoewel er grote aandacht geschonken isaan de snelheid van deze code, was het onvermijdelijk dat de microcontroller trager zou werken dan de DRV8308.Die laatste verwerkt de SPI-commando's waarschijnlijk volledig in hardware. Daardoor is er slechts 100 nsvertragingstijd nodig tussen twee bytes.

De microcontroller heeft echter minimaal 6 μs nodig tussen byte 0 en 1, en 4 μs tussen byte 1 en 2. Dit is oponderstaande screenshot van een digitale oscilloscoop te zien als de tijd tussen de laatste stijgende klokflank(CLK) en de eerstvolgende dalende flank van de MISO.

Deze tijden kunnen bovendien variëren. Het is daarom aangeraden in beide gevallen 10 μs vertraging in desoftware van de hoofdcontroller te voorzien, zodat de goede afhandeling van SPI-data steeds verzekerd is. Ook nade laatste byte en de eerste byte van het volgend datapakket wordt 10 μs aangeraden.

Dit heeft geen invloed op de eigenlijke transmissiesnelheid van de bits, die zonder problemen tot 8 Mbps kangaan.

De gebruikte gratis versie van de Microchip XC8-compiler genereert assembly-code met 'rommelinstructies', om decode kunstmatig te vertragen. Het gebruik van XC Standard of Pro zou mogelijk de code kunnen versnellen. De ISRin assembly herschrijven zou ook een optie kunnen zijn. In beide gevallen blijft wel de reactietijd, ten gevolge van deinterrupt zelf, wel aanwezig.

Zelfs met deze vertragingen duurt één pakket slechts ongeveer 35 μs, afhankelijk van de gekozen bitrate. Dit geefteen maximum van bijna 30.000 commando's per seconde: ruim voldoende voor de meeste motorsturingen.

5.3.3 PCB-layout

Wegens tijdsgebrek is er geen echte printplaat gemaakt in de vorm van een Arduino-shield. Het gebouwdeprototype is volledig Arduino-compatibel, maar kan niet fysisch bovenop een Arduino geplugd worden.

46

Page 47: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Afbeelding: RobotShop

Het schema is specifiek ontworpen voor deze shield-vorm. Zo zijn er female headers voorzien met extra langepinnen, die exact in een Arduino Due passen (Samtec SSQ). De SPI-header wordt aan de onderzijde van deprintplaat gemonteerd, zodat deze op de SPI-header van de Arduino past.

Bij het maken van een PCB-layout voor deze sturing, dient men met onder andere de volgende asptecten rekeningte houden:

De netten die op het schema vet en met de netklasse 'Power' weergegeven zijn, zijn de vermogenslijnen. Dezebanen moeten zo kort en breed mogelijk zijn, om de weerstand laag te houden. Zo worden warmteverliezenvermeden.

ISEN is de stroommeetlijn. Deze moet afgetakt worden van de vermogenslijn, zo dicht mogelijk bij destroommeetweerstand. Zo ontstaat er een drie-aderige Kelvinaansluiting en worden meetfouten doorspanningsvallen doorheen de vermogensbanen vermeden. Dit is ook op het schema aangeduid.

De digitale isolator (Si8641) is een mogelijke bron van hoogfrequente storingen. Hoewel een borstellozemotor met sturing vrijwel altijd 'stiller' zal zijn op EMC-vlak dan een vonkenmakende DC-motor, blijft hetaangeraden om grote aandacht te spenderen aan de PCB-layout rondom dit component.

Een mogelijke referentie hierbij is de application note AN-1109 van Analog Devices. Hoewel deze appnote voorde AD iCoupler-serie geschreven is, kunnen de beschreven technieken ook toegepast worden op de SiliconLabs Si8641. Al deze digitale isolators maken gebruik van een vergelijkbaar procedé.

Het lijkt voor de hand liggend dat de MOSFET's de grootste warmtebron zullen vormen; zij schakelen namelijkde motorstromen. Vanwege de zeer lage RDS(on) is de warmteontwikkeling in deze componenten echter zeer

gering, zelfs bij het schakelen van relatief grote stromen.

Het is echter de DRV8308-driver die vooral opwarmt, waarschijnlijk vanwege de hoge integratie eningebouwde lineaire regelaars. Deze chip is uitgevoerd in VQFN-40-vorm met een thermisch vlak. Op deprintplaat dient er een soldeervlak met via's en voldoende extra thermische massa, aan beide zijden, teworden voorzien.

De sturing is zo ontworpen dat er meerdere BLDC Shields boven elkaar gestapeld kunnen worden op éénArduino. De connectoren mogen in dat geval niet te hoog zijn.

47

Page 48: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

De schroeven van terminalblokken zouden in contact kunnen komen met de pinnen van hun 'bovenburen'.Mogelijk dienen er SMD-connectoren gebruikt te worden om dit te vermijden en de hoogte te vrijwaren. Hetgebruik van veercontacten is aangeraden; dit versnelt het in- en uitpluggen van draden tijdens het prototypen.

5.3.4 Alternatieve rotorfeedback

Het Shield ondersteunt momenteel enkel BLDC's met Hall-sensoren. Dit is de meest populaire methode vanrotorfeedback, zeker voor de grotere borstelloze DC-motoren. De schakeling zou echter nog universeler zijn, moestze ook ondersteuning hebben voor optische encoders en/of sensorloze commutatie.

Dit kan door de sensoren te spoofen: vervangende signalen opwekken die de DRV8308 doet denken dat de motorHall-sensoren heeft.

Om een optische encoder met de microcontroller uit te lezen kunnen twee GPIO-pinnen toegewezen worden.Als men deze ook voor commutatie wil gebruiken, kunnen er dan nog eens drie pinnen aangewend wordenom signalen voor de sensor-inputs U, V en W op te wekken.

Voor het sensorloze systeem is er een externe schakeling nodig, die de back-EMF meet en hier decommutatiesignalen uit extraheert. In dit geval zal men eerder een BLDC-driver gebruiken, die specifiekontworpen is voor sensorloze commutatie.

Men dient er er rekening mee te houden dat beide alternatieve commutatievormen ernstige nadelen hebbentegenover het gebruik van Hall-sensoren. Een sturing zonder deze sensoren heeft bij opstart bijvoorbeeld geenabsolute referentie; de motor moet eerst willekeurig bekrachtigd worden voordat de positie van de rotor bepaaldkan worden. Dit zal in veel toepassingen ongewenst zijn.

5.3.5 Arduino-software

Het voorbeeldprogramma voor de Arduino Due is momenteel zeer beperkt. Het heeft vooral de functie decommunicatie tussen Arduino en BLDC Shield te demonsteren.

Om het gebruiksgemak te verhogen kan de software zo aangepast worden, dat de Arduino de verschillendeparameters uit de registerdata kan afscheiden. Zo kunnen de parameters die zich in een register bevinden, in een'mens-leesbare' vorm weergegeven worden, in plaats van gecombineerd in één word. Bij het invoeren van eenschrijfcommando kunnen de parameters dan afzonderlijk ingevoerd worden.

Het ontwikkelen van een grafische interface zou een verdere verbetering zijn, vergelijkbaar met die van deDRV8308EVM.

5.4 Toepassingsscenario's

5.4.1 Microcontroller weglaten

In een finaal product kan de microcontroller mogelijk weggelaten worden. De hoofdprocessor wordt danrechtstreeks met de driver-chip verbonden. Dit heeft enkele gevolgen:

De GPIO-pinnen verdwijnen.

Een open regellus kan nog steeds volledig via SPI aangestuurd worden. Voor gesloten lus moet dehoofdprocessor de klokfrequentie (CLK) opwekken, waarmee de driver synchroniseert. Hiervoor moet dan ookeen extra aansluiting voorzien worden.

Voor toerentalfeedback (FG) naar de hoofdprocessor is ook een extra aansluiting nodig. Hetzelfde geldt voorhet LOCK-signaal.

48

Page 49: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

Dit scenario is vooral interessant in een toepassing waar meerdere motoren zijn, die zonder toerentalregelingaangestuurd worden en waar geen toerentalmeting nodig is. Er is dan enkel een SPI-bus nodig, aangevuld metéén slave select-signaal per motor.

5.4.2 Hoofdprocessor weglaten

Een ander alternatief is de hoofdprocessor weglaten en de PIC-microcontroller als hoofdprocessor gebruiken. Degevolgen hiervan zijn:

De PIC16F18345 kan vervangen worden door een microcontroller met maar één SPI-poort, aangezien de SPI-verbinding tussen hoofdprocessor en microcontroller verdwijnt. De keuze van microcontroller wordt dus veelruimer.

De galvanische scheiding, als deze noodzakelijk is, zal waarschijnlijk tussen de PIC en de driver geplaatstworden. Als er naast de SPI-bus ook andere signalen gebruikt worden (FG, CLK, LOCK...), moeten deze ookgeïsoleerd worden.

Als de PIC en driver zich niet op dezelfde printplaat bevinden, moeten er naast de SPI-lijnen mogelijk nog extrageleiders voorzien worden voor de overige signalen (FG, CLK, LOCK, ISEN...), afhankelijk van de toepassing.

Deze architectuur zal eerder toegepast worden in een product waar er naast één motor, eventueel mettoerentalregeling, beperkte extra functionaliteiten aanwezig zijn. De microcontroller en driver kunnen dan naastelkaar op eenzelfde printplaat geplaatst worden.

5.5 ConclusieBrushless DC-motoren vormen een steeds interessanter alternatief voor de klassieke DC-motoren metkoolborstels. Moderne, sterk geïntegreerde vermogencomponenten maken efficiënte én kosteneffectieve BLDC-sturingen mogelijk.

Er is in dit project gebruik gemaakt van een brushless driver: de Texas Instruments DRV8308. Dit is momenteeléén van de meest geavanceerde borstelloze motorsturings-IC's die beschikbaar zijn. Ondanks het grote aantalingebouwde functies bleek een extra microcontroller toch noodzakelijk. Zo kunnen alle parameters van de sturingvia SPI-commando's beheerd worden.

Een tweede doelstelling was, naast de ontwikkeling van een rapid prototyping-platform voor borstelloze DC-motoren, een basissturing ontwerpen voor toepassing in nieuwe producten. Door doorheen het project rekening tehouden met alle aspecten, waaronder performantie, gebruiksgemak, modulariteit, kostprijs en verkrijgbaarheid, isin dit opzet geslaagd.

Naar de toekomst toe kan het project nog verder uitgediept worden. Voor de hand liggend hierbij is het ontwerpenvan een printplaat voor de sturing, die in een kleine oplage gemaakt en bestukt kan worden. Op softwarevlak kan ernog een PID-regellus toegevoegd worden, om een soepelere motorsturing te verkrijgen. Ook de Arduino-softwarekan nog uitgebreid worden, eventueel met een bijhorende grafische interface voor de pc.

49

Page 50: Hardware- en softwareontwerp van een universele …beta.eaict.ap.be › wp-content › uploads › 2016 › 06 › ...software en een eindpresentatie met demonstratie. Momenteel wordt

6 Bronnen

6.1 Algemene infoBrushless DC electric motor (Wikipedia)High Perfomance Brushless DC Motor Control (Patrick Fisher, CQUniversity Australia)

6.2 DatasheetsSilicon Labs Si8641Microchip PIC16F18345Texas Instruments DRV8308Texas Instruments CSD88537NDTexas Instruments LM317LWürth Elektronik 824001Samtec SSQRS Pro 536-6030Maxon 200142Maxon 220300

6.3 Reference designsTexas Instruments DRV8308EVMTexas Instruments DRV8307EVMSpeed-Controlled 24V Brushless DC Outrunner Motor Reference Design

6.4 Overige documentenTexas Instruments DRV8308 User's GuideMicrochip PIC16F18345 ErrataMicrochip AN937 Application NoteAnalog Devices AN-1109 Application Note

6.5 SoftwareAltium DesignerMicrochip MPLAB X IDEMicrochip XC8 CompilerArduino.org IDETexas Instruments DRV8308EVM GUIDIY Layout Creator

Bijlage: Marktstudie-BLDC-drivers.xlsx

50