Scheef_schaap
't schaap is de preut af, meestal vooralleer het spel hespe is! (of in het AN: Meestal zal het eerst mislukken voor alleer het lukt..)
Om meteen met de deur in huis te vallen..
Wij hebben de opdracht gekregen om via GPS, positie sensoren een helicopter in de lucht te doen vliegen.
Dit project is onder verdeeld onder verschillende groepen in ons klas,
en ons project houd in dat we brushless motoren moeten kunnen aansturen, dus de snelheid regelen. Een µC (AT90PWM3) staat in voor de sturing.
Wij zoeken informatie over brushless motoren, eventueel voorbeeld code, schakelingen etc.
Wij beschikken over brushless motoren met 3 aansluit draden, dus géén hall sensoren (die heeft ons test motor wél, maar bij de realisatie worden motoren zonder hall sensoren gebruikt.)
Wie kan helpen 
Hartelijk dank!
Ook al ga je met een AVR werken, microchip heeft diverse goede application notes over (sensorless) BLDC control.
o.a. deze: http://ww1.microchip.com/downloads/en/AppNotes/00885a.pdf
Mogelijk is op de site van Atmel ook het 1 en ander te vinden.
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
das gene kaka ... zeker niet als je deftige power wilt overbrengen..
drie half bridges. en een paar comparatoren ( om tegen emk te meten en te weten waar de rotor zich bevindt )
je zult de 3 fasen in een cyclus moeten aansturen.
phase a b c
H L -
- L H
L - H
L H -
- H L
H - L
H = de bovenste driver staat aan
L = de onderste driver staat aan
- = de drivers zijn af
om op lage toerentallen power te hebben zul je moetne gaan choppen.der zijn ooit speciale ic's geweest. HEF47-en iets. of was het hef45 en iets. was een 28 poter van philips.
je moet een viruteel sterpunt maken met 3 weerstanden en de spoelspanning ven het niet aangestuurde punt vergelijken met dat virtueel sterpunt. als de boel van teken verandert heb je een nuldoorgang ( je rotor is dan net gepasseerd ) . daarmee ken je de servo lus sluiten
Henry S.
Moderator
Confucius says chà bù duo. Deze post is niet door ChatGPT gegenereerd. De 2019 CO labvoeding.
Op 14 oktober 2008 17:32:57 schreef Scheef_schaap:
Wij zoeken informatie over brushless motoren, eventueel voorbeeld code, schakelingen etc.
[...]
Wie kan helpen
Tweede keer dat je een lui schoolvragen topic start in de
verkeerde sectie.
Je krijgt twee dagen de tijd om de regels te lezen http://www.circuitsonline.net/forum/view/29138 en om zelf dingen op te zoeken.
Scheef_schaap
't schaap is de preut af, meestal vooralleer het spel hespe is! (of in het AN: Meestal zal het eerst mislukken voor alleer het lukt..)
Ik heb ondertussen al zéér veel informatie gevonden van zo'n DC motor. Door zero cross detectie te doen van telkens de zwevende winding, kan je via timing een schatting doen naar de volgende commutatie. Dit is interrupt gedreven.
Wat ik mij afvraag:
Wat bepaald de snelheid dat uiteindelijk de motor zal op gaan draaien? De ingestelde duty cycle v/d PWM (dus de statorspanning)?
Bij zero-cross zit men steeds in de helft van de commutatie, dus telkens 30° later dient er commutatie op te treden.
Hoe realiseer ik dit? Bij het constant draaien is dit geen probleem aangezien zero cross mooi in het midden zit tussen 2 commutaties. Dan hoef ik maar de tijd te meten tussen de vorige commutatie & de zero cross, vanaf de zero cross nog eens zo'n tijd wachten en dan commuteren.
Maar bij het versnellen is die tijd niet gelijk. Heeft dit dus laattijdige commutatie een grote invloed (niet opstarten motor)
En als laatste vraag: Hoe zal mijn motor reageren op een 'blind' draaiveld? Zal hij draaien?
@ MOD's: Gelieve eens die 'LUI' uit m'n titel te halen, als ik zie hoe weinig zelfbouw projecten van sensorless BLDC motor lukken, denk ik dat ik wel recht heb op een aantal vraagjes 
big bang
Niets is zo eerlijk verdeeld als verstand: iedereen denkt er genoeg van te bezitten
Ik meen te weten dat er bij de application notes van Atmel (bij de 8bits reeks) wel voorbeelden staan van een brushless drive aansturing. Moet maar eens op de site rondsmurfen.
- - big bang - -
edit: Gevonden!: Klik hier bvb AN-444: Sensorless control of 3-phase brushless DC motors
[Bericht gewijzigd door big bang op (28%)]
Scheef_schaap
't schaap is de preut af, meestal vooralleer het spel hespe is! (of in het AN: Meestal zal het eerst mislukken voor alleer het lukt..)
Thx
Maar dit had ik al in m'n handen 
Er zit hierbij ook een .C file, alleen kan ik deze maar niet compileren, door o.a. deze fouten:
../main.c:25:19: error: ioavr.h: No such file or directory
../main.c:26:19: error: inavr.h: No such file or directory
Ik vind ook nergens deze file's ..
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
FYI, het autonoom een helicopter laten vliegen is volgens mij een promotie-onderzoek-niveau opdracht. Als het lukt: Petje af!
Ik zie bij "dealextreme" BLDC motor drivers. Die stuur je met een simpel servo-signaal. Die kan je voor een paar tientjes in de 20A-60A kopen. Als ik de postings op dealextreame goed interpreteer, stoppen ze een 20A versie in een heli. De bijbehorende motoren zijn daar ook te krijgen, maar ik geloof dat je die al hebt.
[Bericht gewijzigd door rew op (56%)]
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
Op 11 november 2008 21:02:41 schreef Scheef_schaap:
Ik heb ondertussen al zéér veel informatie gevonden van zo'n DC motor. Door zero cross detectie te doen van telkens de zwevende winding, kan je via timing een schatting doen naar de volgende commutatie. Dit is interrupt gedreven.Wat ik mij afvraag:
Wat bepaald de snelheid dat uiteindelijk de motor zal op gaan draaien? De ingestelde duty cycle v/d PWM (dus de statorspanning)?
Bij zero-cross zit men steeds in de helft van de commutatie, dus telkens 30° later dient er commutatie op te treden.
Hoe realiseer ik dit? Bij het constant draaien is dit geen probleem aangezien zero cross mooi in het midden zit tussen 2 commutaties. Dan hoef ik maar de tijd te meten tussen de vorige commutatie & de zero cross, vanaf de zero cross nog eens zo'n tijd wachten en dan commuteren.
Maar bij het versnellen is die tijd niet gelijk. Heeft dit dus laattijdige commutatie een grote invloed (niet opstarten motor)
je 'push' fase 9 waarbij je de motor aanzwengelt heeft een adaptief algoritme nodig. je zend stroom gedurende tijd x. daarnaa kijk je of je een zero cross krijgt. indien niet : x*2 ). opnieuw. daarnaa x*3 . totdat er commutatie optreedt. de vermenigvuldigingsfactor noem je y. x moet klein zijn. je wilt een serieuze factor Y om te beginnen. dan push je met de halve waarde van je laatste Y. en je wacht opnieuw op commutatie , desnoods opnieuw pushen met x* (y+1) en noteren hoeveel je hebt moet compenseren. Op een bepaald ogenblik ga je een 'balanspunt' vinden. als je te snel commutteert zal je koppeling met de rotor verbreken. bij de initiele stappen zijn de sprongen in Y aanzienlijk. eenmaal de boel op halve 1/10 snelheid is zijn de stappen klein ( dat ding volgt een logaritmische curve, of was het een kwadratische... in elk geval zit de grootste wijziging van y in de eerste 10 tot 12% van het eindtoerental )
om je snelheid te regelen moet je inderdaad timing regelen. je moet meten waar de zero cross gebeurt, te vroeg dan stur je teveel stroom , te laat dan stuur je te weinig stroom.
voor die 'y' factor ( soms ook 'K' genoemd ) heb je een serieus getal nodig om wat resolutie te halen. bij een 15k rpm motor is 'k' makkelijk 24 bit ...
Jochem
If you want to succeed, double your failure rate.
Op 11 november 2008 22:58:59 schreef rew:
FYI, het autonoom een helicopter laten vliegen is volgens mij een promotie-onderzoek-niveau opdracht. Als het lukt: Petje af!
Het is zeker geen kattenpis, maar ook geen 'promotie-onderzoek-niveau'. Wij hebben dit op het HBO zelf als (vrije) opdracht bedacht om met 4,5 man (je kent die meelifters wel) in een paar maanden te voltooien. Dat bleek ECHT te kort, maar het ding kwam al wat van de grond met de nodige correcties op alle assen.
Ik ben blij dat er hier een keer iemand een ECHTE opdracht van school mee krijgt.
Welke opleiding is dat, schaap?
[Bericht gewijzigd door Jochem op (10%)]
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Inderdaad, het loskomen is niet zo'n probleem. Dan op basis van de locatie-bepaling ongeveer op dezelfde plek blijven hangen is het lastige gedeelte....
Scheef_schaap
't schaap is de preut af, meestal vooralleer het spel hespe is! (of in het AN: Meestal zal het eerst mislukken voor alleer het lukt..)
Ingenieur hé 
Ik heb nu (dankzij een school met centjes) de library van I2C slave in handen van bascom.
Ik zou hem graag willen delen maar dit is blijkbaar tegen de regels.
Ik heb m'n 3F draaiveld getest op een oscilloscoop en het functioneert. We hebben een driver voor de H-brug, een IR2021 LINKJE
Wat we aangesloten hebben volgens schema, echter nog geen FET's of dergelijke, op de scoop gemeten bij de lijn die de bovenste gate moet sturen, .. 0V.. hoe werkt zo'n IC? Er is mij al verteld geweest dat de condenstator wordt opgeladen door het schakelen van de FETs. Langdurig aanstaan kan dus ook niet (op zich geen probleem).
Het volgende schema gebruiken we:
Wat er handig zou zijn (voor de mensen die dit zouden vanbuiten weten?)
En 3fasen H brug in één IC behuizing (liefst SMD) incl drivers.
En nog een software vraagje..
Ik meet met een overflow interrupt van TIMER0 (die ook de PWM regelt & constant loopt) de ADC spanning van de desbetreffende fase die open hangt. Bij zero cross wordt TIMER1 geactiveerd, die geladen is met een halve commutatietijd, en die bij overflow een nieuwe interrupt zal genereren die commutatie teweegbrengt.
> Is deze meet frequentie (8Mhz / 256) snel genoeg?
> Stel dat mijn interrupt langer dan 256 klokcycly duurt, zal de µC mijn interrupt dan onderbreken omdat TIMER0 terug overloopt?
En als laatste..
Hoe stel ik een auto reload waarde voor de timers in in bascom? Dit zou er voor moeten zorgen dat bij timer overflow de timer niet reset naar 0000000 maar naar de auto reload waarde (en zo de timer gebruiken als regelbare pauze)
@BPROSMAN : Inderdaad
Dit is perfect wat wij aan het maken zijn!
gelukkig moeten wij ons enkel bezig houden met de brushless motoren, een ander team dan met de uitlezing v/e GPS sensor via I2C.
Aha, ik heb zo'n ding. Kant en klaar voor veel geld gekocht.
Mag ik even een lichtjes off-topic vraag stellen? Bestaat een DC brushless of bestaat dat niet?
Jochem
If you want to succeed, double your failure rate.
Op 12 november 2008 18:16:02 schreef Scheef_schaap:
Ingenieur hé
Zegt niks, zijn genoeg scholen die daar geen fatsoenlijke invulling meer aan geven. Maar is dit in BE of NL? Je profiel is niet echt volledig..
@Evarist: Of ik begrijp je vraag verkeerd, of ik snap het niet.. Brushless DC bestaat gewoon ja..?!
Scheef_schaap
't schaap is de preut af, meestal vooralleer het spel hespe is! (of in het AN: Meestal zal het eerst mislukken voor alleer het lukt..)
Dat bestaat dus wel degelijk..
Wordt gebruikt in oa je PC fan, HD, Floppy,CD-ROM,etc.
Zéér van verschoten, zo'n motortje is een druif groot en trekt 10A bij 12V!
M'n school is in Gent, Kaho SL.
Hé, die zag ik volgens mij in die "microcopters", een soort vliegende frames met vier schroeven aan, ieder gedreven door zo'n motortje.
Scheef_schaap
't schaap is de preut af, meestal vooralleer het spel hespe is! (of in het AN: Meestal zal het eerst mislukken voor alleer het lukt..)
Op 12 november 2008 20:32:53 schreef Frederick E. Terman:
Hé, die zag ik volgens mij in die "microcopters", een soort vliegende frames met vier schroeven aan, ieder gedreven door zo'n motortje.
Dit zijn wij aan het maken xD
Ik zit nu met volgend probleem:
Iedere keer er een fase zero crossed dan wordt volgende routine uitgevoerd :
Sub Timing
If T = 0 Then
Timer1 = 0 'reset timer
Start Timer1
Else
Commutatietijd = Timer1
Stop timer1
End If
End Sub
Nu zou ik Timer1 gebruiken voor een interrupt te genereren die zal leiden tot commutatie. Ik weet nu de tijd tussen 2 zero-crossen, na een zero cross moet men nog eens een halve zero-cross tijd wachten om te commuteren. Ik zou willen dat Timer1 overloopt na Commutatietijd / 2 kloktikken. Hoe doe ik dit?
Voor de geïnteresseerden: Dit is mijn volledige programma. (Voel jullie vrij om te debuggen
)
Op 12 november 2008 19:13:58 schreef Jochem_S:
@Evarist: Of ik begrijp je vraag verkeerd, of ik snap het niet.. Brushless DC bestaat gewoon ja..?!
Je begrijpt m'n vraag niet verkeerd. Hoe wordt, zonder koolborstels een wisselveld opgewekt in een DC brushless?
@evarist: DC en AC zijn nogal relatieve begrippen als het om brushless motoren gaat. Het is m.i. ook erg verwarrend. Het gaat om het volgende: er zijn grofweg twee manieren om een brushless motor aan te sturen: door het in een bepaalde volgorde domweg aan- en uitzetten van elk van de drie wikkelingen (het zgn six-step of brushless DC systeem, waarbij elke wikkeling dus met blokgolven wordt gestuurd) en als tweede mogelijkheid het aansturen van de drie wikkelingen met sinusvormige spanning (oftewel: AC brushless). Deze sinusvormige spanning wordt dmv PWM gemaakt en levert een hele mooie rondloop op, maar is technisch een stuk ingewikkelder..
fripster
PS: een brushless motor heeft geen koolborstels omdat het een inside-out motor is: De rotor heeft vaste magneten en de stator maakt het draaiveld, in plaats van andersom...zie ook het plaatje eerder in deze thread.
[Bericht gewijzigd door fripster op (14%)]
Jochem
If you want to succeed, double your failure rate.
@Evarist: ah zo, ja, als je het begrip niet kent is het wat verwarrend. Net wat fripster zegt: het draaiveld creeer je zelf met - pulserende - DC.
big bang
Niets is zo eerlijk verdeeld als verstand: iedereen denkt er genoeg van te bezitten
Over het verschil tussen brushlessDC en brushlessAC:
kijk eens in de volgende threads, daar heb ik al een epistelke ingeschreven:
Info over servo en meerdere toeren draaien.
Driver 3 fase motor
- - big bang - -
Op 11 juni 2008 00:09:54 schreef big bang:
De grens tussen BrushLessDC (BLDC) en BrushLessAC (BLAC) is inderdaad marginaal en soms vaag.
Ik begin het te begrijpen.Alleszins dank om de wolken te laten opklaren.
Het hele principe is vrij eenvoudig. Door een interrupt op de juiste comparator flank in te stellen, een bepaalde tijd te wachten en te commuteren kun je de motor goed laten draaien. Starten doe ik door de pwm en de commutatiesnelheid langzaam op te voeren. Op deze manier start de motor (een CD-rom motor) ook onder belasting. Ik kwam tot ongeveer 5000 toeren onder lichte belasting. Dit leek voor de motorsturing 3x zo veel, omdat de cd-rom motor 3x3 fasen heeft.
Het moeilijke zit hem in het zo efficient mogelijk laten draaien. De tijd tussen zero cross en commutatie hoort 30 graden te zijn, maar door mijn low-pass filter ertussen kreeg mijn controller de informatie vertraagd door. Deze vertraging bleek moeilijk te meten zonder goede oscilloscoop, dus heb ik de wachttijd tussen zero cross en commutatie gewoon 0 gemaakt.
Verder is de aansturing met pwm ook lastig. Je moet namelijk op het laatste moment van de periode (net voordat je de mosfets uitschakeld) gaan meten. De frequentie mag dan niet te hoog zijn, omdat de spanning dan nog niet stabiel genoeg is bij het meten, maar ook niet te laag, omdat je dan niet vaak genoeg kan meten.