Hallo Zusammen, aus interesse beschaeftige ich mich gerade mit der Regelung von BLDC-Motoren. Mir macht die Elektronik aber leider mehr sorgen, als die Regelungstechnik. Als Controller werde ich meinen ATMEGA8 benutzen und für die Mosfet-Endstufe habe ich mir folgendes überlegt: - Mosfet: 6 N-Channel irf1404 - Treiber: ir2130 drei phasen brücken treiber Problem ist hier die Dimensionierung von diversen Bauteilen. Fragen Richtung Mosfet: 1.) Gate-Widerstand 47 Ohm OK? 2.) Keine Freilaufdiode OK? Da sie laut Datenblatt schon eine inne hat. Fragen Richtung Treiber: 3.) Kondensatorkapzitaet zwischen Vb und Vs ist vermutlich von der Frequenz der Ansteuerung/PWM abhaengig. Richtig? Ich werde aber aus der Beschaltung nicht wirklich schlau, sodass ich nicht weiß, wie es es ausrechnen bzw. Dimensionieren sollte. 4.) Dann sind da bei Typical Connection auf der linken Seite noch ne Menge anderer Widerstaende und Transistoren. Da bin ich auch total überfragt. Ich möchte zu Beginn ganz einfach mit einer Blockkommutierung eine alte Festplatte zum drehen bringen, anschließend Sinuskommutierung und Feld-orientierte Regelung ebenfalls als Ziel mit einschliesen. Ein richtiger BLDC soll dann natürlich herhalten. Habt ihr vielleicht auch noch andere Tipps und Hinweise? Vielen Dank.
Noch eine kurze Zusatzinfo: Die Motoren sollen nur an meinem kleinen Netzteil mit 12 V und max. 3 A betrieben werden. Also nichts gewaltiges.
mosfeter schrieb: > 1.) Gate-Widerstand 47 Ohm OK? viel zu hoch..rechne den strom mal aus... 4.7ohm oder weniger wären ok.. > 2.) Keine Freilaufdiode OK? Da sie laut Datenblatt schon eine inne hat. bei kleinen lasten geht das.. > 3.) Kondensatorkapzitaet zwischen Vb und Vs ist vermutlich von der > Frequenz der Ansteuerung/PWM abhaengig. Richtig? Ich werde aber aus der > Beschaltung nicht wirklich schlau, sodass ich nicht weiß, wie es es > ausrechnen bzw. Dimensionieren sollte. Gibt 2 AppNotes von IRF zum Thema Bootstrap Kondensator berechnung.. > 4.) Dann sind da bei Typical Connection auf der linken Seite noch ne > Menge anderer Widerstaende und Transistoren. Da bin ich auch total > überfragt. 3 getrennte hallbrückentreiber sind billiger :) > Ich möchte zu Beginn ganz einfach mit einer Blockkommutierung eine alte > Festplatte zum drehen bringen, anschließend Sinuskommutierung und > Feld-orientierte Regelung ebenfalls als Ziel mit einschliesen. Ein > richtiger BLDC soll dann natürlich herhalten. für eine FVC brauchst du die rotorposition sowie rechenpower.. fang da gleich mit nem CortexM0 bzw M3 an... ein Atmega ist da ein witz..
Andi D. schrieb: > viel zu hoch..rechne den strom mal aus... 4.7ohm oder weniger wären ok.. In Ordnung. Woher weiß ich denn, wieviel Strom zu wenig oder zu hoch ist. Im Datenblatt konnte ich leider keine Angabe zum erforderlichen Gatestrom finden. > 3 getrennte hallbrückentreiber sind billiger :) Ja, der IR2111 scheint mir auch angenehmer zu sein. > für eine FVC brauchst du die rotorposition Die Position werde ich dann über ein Systemmodell abschätzen. > rechenpower.. fang da gleich mit nem CortexM0 bzw M3 an... ein Atmega > ist da ein witz.. Echt? Ich dachte für die paar Formeln würde nen ATMEGA8 (mit 3.2 MHz) vollkommen reichen... Ich bin froh, wenn die Festplatte sich erstmals ganz einfach mit Blockkommutierung dreht. FOC und ein richtiger Motor sollen dann erst später kommen, wobei natürlich die Hardware schon so weit bzw. flexibel sein sollte, um das dann auch mal packen zu können.
Warum den atmega8 nehmen, wenn es doch deutlich interessantere von atmel gibt. Stichwort attiny 261, da ist viel schon in Hardware drin, was für die ansteuerung eines bldc benötigt wird, gibt auch einige app-notes zu den unterschiedlichen arten der ansteuerung. Mfg Dennis
Oder wenigstens eine Mega48/88/168/328. Der hat 3 Timer, die alle komplementäre OC Ausgänge haben. Das passt genau auf deine Motore. Schau dir bitte mal Application Note AVR444 an, in dem Ansteuerung von Sensorless BLDC mit ATMega besprochen wird. Space Vector Modulation (Sinusansteuerung) wird in AVR447 behandelt, dort allerdings für Motore mit Sensoren. mosfeter schrieb: > Echt? Ich dachte für die paar Formeln würde nen ATMEGA8 (mit 3.2 MHz) > vollkommen reichen... 3,2 Mhz sind wirklich knapp. Selbst wenn du nicht mit Formeln hantierst, sondern mit Tabellen, solltest du der Kiste mindestens die 8Mhz des internen Oszillators spendieren. Und Leute, vergesst doch endlich den Mega8, der ist wirklich veraltet. Die o.a. Megas verfügen neben den Timern auch über Pinchange Interrupts und andere nette Sachen.
Der ATTINY261 gefällt mir sehr gut. Werde ihn dann nehmen. Danke für die Tipps erstmals, jetzt muss ich noch ein bisschen lesen und wenn ich dann nicht zu faul bin, werde ich die Schaltung zusammenklicken und posten.
Beachte bei dem Attiny aber, dass der ISP an den Kontakten für eine Halbbrücke ist. Ich habe einige Mosfets geschrottet, bevor ich kapiert habe, warum ab und zu nach dem programmieren auf einmal alles abgeschmiert ist und ich einen schönen fetten kurzen auf der Platine hatte. Da hatten eben offensichtlich mal der obere und untere Mosfet gleichzeitig durchgeschalten, während des programmierens. Aber ist ganz einfach zu lösen, da die Mosfets ja einen Pulldown/Pullup kriegen sollten trennst du einfach eine Verbindung zu einem der Mosfets, wenn du programmieren willst, mit nem Jumper oder so. Einer reicht ja zu. Das nur mal als Hinweis, weil es mir einige Mosfet-Euros gekostet hat :-). MfG Dennis
Ist es jetzt schon echt zu spät oder kann es wirklich sein das ich mit dem ir2111 nicht die Möglichkeit habe, beide mosfets unbeschaltet zu lassen. Ich hab nur ein Input und kann mit ihm laut Datenblatt jenach High oder Low den hs oder ls fet durchschalten. Ich muss bei meiner Kommutierung aber eine Phase immer unbestromt lassen. Habe ich etwas übersehen?
mosfeter schrieb: > Ist es jetzt schon echt zu spät oder kann es wirklich sein das ich mit > dem ir2111 nicht die Möglichkeit habe, beide mosfets unbeschaltet zu > lassen. Ich hab nur ein Input und kann mit ihm laut Datenblatt jenach > High oder Low den hs oder ls fet durchschalten. Ich muss bei meiner > Kommutierung aber eine Phase immer unbestromt lassen. Habe ich etwas > übersehen? ne hast du nicht, der kann nur high/low .. für eine FOC ausreichend aber nicht für vollblocksteuerung. schau dir zB mal den IRS2004 an
Hallo, falls du den Artikel noch nicht kennst, der könnte evtl. noch hilfreich sein (auch wenn leider noch einige Details fehlen): http://www.mikrocontroller.net/articles/Brushless-Controller_f%C3%BCr_Modellbaumotoren
mosfeter schrieb: > Ist es jetzt schon echt zu spät oder kann es wirklich sein das ich mit > dem ir2111 nicht die Möglichkeit habe, beide mosfets unbeschaltet zu > lassen. Ich hab nur ein Input und kann mit ihm laut Datenblatt jenach > High oder Low den hs oder ls fet durchschalten. Ich muss bei meiner > Kommutierung aber eine Phase immer unbestromt lassen. Habe ich etwas > übersehen? Dieser ist nicht wirklich geeignet für dein Vorhaben. Wenn du nur einen Signalweg nutzen willst, also ähnlich wie beim IR2111, dann nimm den IR2104. Da hast du noch die Möglichkeit über einen zweiten PIN beide Mosfets Stromlos zu schalten. Wenn du aber den Attiny261 nutzen willst, wären IR2101 besser. Weil der Attiny ja auch für Highside und Lowside jeweils einen PIN nutzt. Mit denen habe ich auch schon einen BLDC Regler aufgebaut, funktionierte super. Und mit denen hast du auch den Vorteil, dass du mein schon angesprochenes Problem nicht hättest : Dennis H. schrieb: > Beachte bei dem Attiny aber, dass der ISP an den Kontakten für eine > Halbbrücke ist. da die beiden Eingänge des IR2101 gegeneinander veriegelt sind. MFG Dennis
Den IR2104 hatte ich mir auch schon ausgesucht. Jetzt habe ich die Wahl. Beim 2104er muss ich mich nicht um die gegenseitige Verriegelung kümmern. Beim 2101 schon und ja, ich die Schaltung mit dem ATTINY261 steht schon. Welche PINs auf dem ATTiny meinst du die nur im Gegentakt laufen können, also mein HIN und LIN perfekt treiben würden? An den ISP Kontakten, also SPI Kontakten, ohhh da sehe ich es ja gerade :) OCX1 und !OCX1 Nun gut, wie entscheide ich mich nun? Das scheint ja dann mit dem IR2101 schon bequemer zu sein, oder?
mosfeter schrieb: > Nun gut, wie entscheide ich mich nun? Das scheint ja dann mit dem IR2101 > schon bequemer zu sein, oder? Das ist durchaus bequemer, weil du ganz einfach mit zwei Hardware-Registern eine Totzeit einstellen kannst. Also du hast es ganz einfach, einen aktiven Freilauf zu basteln. Du benötigst beide Timer. Timer 1 könntest du mittel PLL mit bis zu 64Mhz betreiben, habe ich persönlich aber nicht gemacht, weil meine Mosfets nicht so schnell schalten können (ich habe eine Variante mit N- und P-Mosfet gebaut). Ich nutze die PLL trotzdem, um auf einen Systemtakt von 16Mhz zu kommen. Beim Timer 1 stellst du den PWM6 Mode ein. Auf Seite 105 des Datenblattes ist eine Zeichnung, wie der Mode funktioniert, diese ist allerdings nicht ganz so eindeutig, ich hatte damit meine Probleme. Dazu später mehr. COM1A0 habe ich noch gesetzt, um der PWM auch einen Ausgangspin zuzuordnen. Dann noch PWM1A, um das Register festzulegen, welches das Tastverhältnis einstellt. Vorteilereinstellungen musst du dir einfach mal selbst überlegen. Interessant ist noch das Register DT1, mit dem du die Totzeit einstellen kannst. Das ist sozusagen ein 4-bit Timer. Das obere Nibble des Registers stellt den Timerwert für den Wechsel von Highside auf Lowside ein, das untere andersherum. Also wenn du einen PWM-Wert von 40 einstellst, schließt der Highside-Mosfet nach dem Compare Match. Dieser braucht allerdings ein paar ns dafür. Jetzt kommt der 4-bit Timer ins Spiel. jetzt zählt dieser bis zu dem Wert, den du in DT1 geschrieben hast. Erreicht er den Wert, schaltet der Lowside Mosfet durch. Also echter aktiver Freilauf. Für die Totzeit gibts einen extra Vorteiler im Register TCCR1B. Um dem Timer zu sagen, welche Pins er schalten soll, gibt es das Register TCCR1E. In diesem Register musst du einfach immer den High- und Lowside-Pin setzen. Also z.B. OC10E0 und OC10E1. Laut der Zeichnung auf Seite 105 könnte man denken, dass dann aber Low- und Higside gleichzeitig durchgeschalten werden. Das ist aber nicht so, da über den Pins der Lowside noch ein Strich ist, welcher das ganze negiert, das habe ich lange nicht verstanden. Dazu setzt du dann noch im Port-Register den PB4 und fertig ist alles für die ersten 60Grad drehen des Motors. Die meiste Schreibarbeit ist es jetzt, eine Funktion zu schreiben, die jedesmal, wenn du sie aufrufst eben weiterschaltet, dass der Motor die nächsten 60Grad dreht. Zum Anfang kannst du diese Funktion einfach im Interrupt des Analog-Komparators ausführen, da sollte der Motor schon drehen, wenn auch noch nicht perfekt. Perfekt bekommst du es ganz einfach mit dem Timer 0. Aber das kannst du ja vielleicht auch selbst rausfinden, jetzt habe ich dir schon einiges erzählt. Was ich vielleicht noch erwähnen sollte, im AVR-Simulator funktioniert das ganze nicht, dort kannst du alle möglichen Register des Timer1 beschreiben, da passiert nix an den Ausgängen, musst du in Hardware probieren. Aber kann ja nix passieren, wenn du die IR2101 nutzt. MfG Dennis
Ja, jetzt hast du doch schon ne Menge geschrieben :) aber da ich gerade kaum Zeit habe weiterzubasteln, habe ich bis zum nächsten Lötzinn dein Geschriebenes wieder vergessen ;)
Moin Moin, aus gegebenen Anlass würde ich das Thema nochmal aufgreifen bzw. mit einsteigen. Bin 31 Jahre alt und staatlich geprüfter Techniker Informationstechnik und studiere zur Zeit E-Technik im 5 Semester. Mein Schwager ist auf den Trichter gekommen sich ein RC-Car zu zulegen und möchte es gerne mit ein wenig mehr Dampf befeuern und fragte mich ob ich das hin bekomme. Habe natürlich sofort Bllut geleckt und Ihm gesagt ich lese mich mal ein und baue eine Testumgebung. So weit so gut, IR2130 schien mir als geeignet da er ziemlich robust scheint, ATMEGA8 flog noch in der Ecken rum reichelt erledigte den Rest. BEMF habe ich von euch als MOSFET dienen die IRF3710. Breadboard ausgegraben und angefangen auf zu bauen. Spannungsstabilisiesung einmal 5V für den Atmega 8 und dann einmal 15V für den Treiber. Gatewiderstand für die FETS erst mal weggelassen und fleißig alles zusammengesteckt. Jetzt zur Frage: HIN und LIN vom Treiber sind ja Low aktiv, wenn ich jetzt sie High Site durchsteuern möchte, muss ich dann die Low Site auf high setzten und dann die High Site einfach mit dem PWM Signal bedienen ? Des weiteren habe ich in dem Thread wo auch die BEMF erklärt wurde gelesen, dass es ausreicht einen PWM Kanal für alle HIN's am Treiber zu nutzen. Entspricht das der Wahrheit? kann man wirklich den einen Pin von wo die PWM kommt auf alle HIN's legen ? Ich glaube das wäre es erst mal. Ist das erste mal das ich was bei euch schreibe, bin bis jetzt immer nur leser gewesen :-) Wen der Bedarf besteht sende ich gerne den Schaltplan und Bilder vom Aufbau. In diesem Sinne einen schönen Abend.
sebastian schrieb: > Gatewiderstand für die FETS erst mal weggelassen und > fleißig alles zusammengesteckt. Sei bitte so fleissig und füge Gatewiderstände hinzu. Es ist ja nicht so, das wir die einbauen, um den Herstellern Umsätze zu verschaffen, sondern um eine Strombegrenzung für die Treiberbausteine herzustellen. Das Gate eines MOSFet muss aufgeladen werden und zieht bei schnellen Anstiegszeiten eben auch mal gehörig Strom. sebastian schrieb: > kann man wirklich den einen Pin von > wo die PWM kommt auf alle HIN's legen ? Wenn man sich auf Blockkommutierung beschränkt, kann man das machen. Allerdings sparst du dir nicht die Treiberbausteine für alle drei Highsides sondern wirklich nur 2 Pins am Prozessor, verbaust dir aber dauerhaft die Möglichkeit auf FOC/SVM/Sinusmodulation. sebastian schrieb: > ATMEGA8 flog noch in der Ecken rum Und wieder das alte Schlachtschiff. Wenigstens ist er pinkompatibel zum Mega48/88/168/328, so dass da ein Upgradepfad existiert. Die o.a. neueren Megas machen nämlich 3-Phasenansteuerung mit ihren 3 Timern zum Kinderspiel.
Das mit dem Widerstand ist natürlich sinnvoll, denke da so an 10 Ohm, sollte ja reichen. Da ich aber nur noch drei Stück habe muss ich wohl wieder zu Reichelt und bei der Gelegenheit spendiere ich dem Testaufbau einen Mega 328. Das mit dem PWM gemurkse kann ich mir dann ja auch sparen, da ja 6 Kanäle verfügbar sind. War den die Annahme die ich betüglich des Treibers getroffen habe richtig ? Muss LIN auf High und HIN quasi auf low damit man die high site öffnet ??? Man würde ja in diesem fall nur das PWM Signal am HIN vom Treiber haben um ihn zu schalten, natürlich muss der LIN dann auch dementsprechend gesetzt werden. Vielen lieben dank schon mal für die Anrwort Matthias .
sebastian schrieb: > Man würde ja in diesem fall nur das PWM Signal am HIN vom Treiber > haben um ihn zu schalten, natürlich muss der LIN dann auch > dementsprechend gesetzt werden. Ja nee, auf keinen Fall darfst du ja in einer H-Brücke die Highside und die Lowside gleichzeitig durchsteuern. Es ist also immer eine der anderen beiden Lowsides durchgesteuert, damit der Strom auch durch den Motor fliesst. Das Schema dafür kannst du dir entweder mal aufzeichnen oder einer Animation entnehmen. Hier ist z.B. ein einfaches Zeitdiagramm für einen BLDC mit drin: http://de.wikipedia.org/wiki/B%C3%BCrstenloser_Gleichstrommotor
He He, das habe ich schon verstanden, hatte nur irgendwie einen kleinen Knoten durch die Low aktiven Eingänge. Weil um z.B. die erste h-side durch zu steuern muss ja am Treiber der Eingang LIN1 auf high gesetzt werden und HIN1 auf low. Da ja aber auf HIN1 das PWM signal liegt muss ich ja quasi das Tastverhältnis umdrehen da sonst ja bei z.B. 80% high und 20% low Anteil im PWM Signal mein Ausgang am treiber, da er ja low aktiv ist nur den 20% Anteil durchschalten. Hoffe man versteht was ich meine. :-) Um also ein Tastverhältnis von 80/20 am Ausgang zu erhalten muss ich ja ein Tastverhältnis von 20/80 rein geben. Werde das die Tage mal im Labor mit einem FG am treiber testen und mich dann mal langsam an den code begeben. Ist der Mega 328 den jetzt die bessere Wahl oder sollte es besser ein Mega 44 oder 88 werden. Wollte nämlich heute die letzten kleinteile bei Reichelt ordern, damit mir der Kurier die schön am Montag bringt und ich dann mal am Dienstag ins Labor komme und den Treiber quälen kann. Vielen Dank aber nochmal für deine Zeit die du aufgebracht hast. Mal sehen wie weit ich die Woche komme. Werde mich bei fragen die bestimmt noch auftauchen werden melden. Erfolge werden aber ebenfalls berichtet.
Sebastian Juch schrieb: > Ist der Mega 328 den jetzt die bessere Wahl oder sollte es besser ein > Mega 44 oder 88 werden. Nicht ganz einfach zu beantworten. Ich selbst habe bisher nur die Blockkommutierung umgesetzt, da reicht ein Mega88 locker. Wieviel Platz man für eine sinus-Ansteuerung benötigt weis ich nicht, das habe ich noch nie gemacht. Dennis
sebastian schrieb: > Des weiteren habe ich in dem Thread wo auch die BEMF erklärt wurde > gelesen, dass es ausreicht einen PWM Kanal für alle HIN's am Treiber zu > nutzen. Entspricht das der Wahrheit? kann man wirklich den einen Pin von > wo die PWM kommt auf alle HIN's legen ? Ein einziger PWM Kanal reicht aus, wenn du ihn jeweils nur zu jenem Treiber "leitest", der das PWM gerade benötigt. Also immer abwechslungsweise alle drei Treiber hintereinander. Dazu braucht man nur drei Widerstände, so wie in der Beispielschaltung in diesem Artikel: https://www.mikrocontroller.net/articles/Brushless-Controller_f%C3%BCr_Modellbaumotoren#Beispielschaltung In dieser Schaltung ist der R20 einer dieser drei Widerstände, die anderen sind nicht gezeichnet da nur eine Halbbrücke abgebildet ist. Der Trick besteht darin, den Ausgangs-Pin für HIN einfach auf Eingang zu definieren, dann ist der Pin hochohmig und das PWM-Signal wird über den Widerstand (R20) zum Treiber geleitet. Ist der Ausgang niederohmig, also auf Low oder High liegt auch dieses Signal am Treiber an, auch wenn das PWM weiterläuft. Es gibt mehrere Möglichkeiten, wie man einen BLDC Controller aufbaut. Im verlinkten Artikel ist eine sehr einfache Variante erklärt, mit der man recht schnell zum Ziel kommt. Ein Merkmal der Schaltung im Artikel ist, dass die Treiber nicht HIN und LIN ala Eingänge haben, sondern IN und SHUTDOWN (bzw. ENABLE). Das hat verschiedene Vorteile, die unter "Treiber" erklärt sind: https://www.mikrocontroller.net/articles/Brushless-Controller_f%C3%BCr_Modellbaumotoren#Treiber (z.B. ist der "aktive Freilauf" viel aufwändiger wenn man HIN/LIN statt IN/SD verwendet) Nachteil an dieser Variante ist dieser hier: Matthias Sch. schrieb: > Wenn man sich auf Blockkommutierung beschränkt, kann man das machen. > Allerdings sparst du dir nicht die Treiberbausteine für alle drei > Highsides sondern wirklich nur 2 Pins am Prozessor, verbaust dir aber > dauerhaft die Möglichkeit auf FOC/SVM/Sinusmodulation. Jetzt musst du selber wissen, ob du später mit deinem Controller auch mal was anderes als nur Blockkommutierung machen möchtest...
Dennis H. schrieb: > Wieviel Platz > man für eine sinus-Ansteuerung benötigt weis ich nicht, das habe ich > noch nie gemacht. Ich habe jetzt schon öfter die AVR447 implementiert, noch mit umfangreichen Konsolroutinen. Allerdings ist die 447 ein tabellenorientierter Ansatz, der keinerlei trigonometrische Funktionen benötigt und deswegen auf die 'math' Lib verzichten kann. Für AVR447 reicht ein Mega48 knapp in der Grundvariante aus der Appnote. Mit einem Mega88 ist man da immer auf der sicheren Seite. Auch der 3-Phasen-Umrichter aus dem Wettbewerb läuft minimal auf einem Mega88. Ich habe den Mega328 aber jetzt oft schon als den preisgünstigsten gesehn, trotz des grossen Flash. Lohnt sich also, beim Händler alle im Preis zu vergleichen.
Ein kleines Update. Reichelt hat geliefert. Gate Widerstad wurde eingepflegt, 8 Mhz Quarz instaliert und der neue Mega 328 verdrahtet. BEMF Schaltung wurde ebefalls auf 15V angepasst. Zum testen der einzelnen Funktionen dient noch der Mega 8, PWM Erzeugung klappt Prima , LCD dient zum Anzeigen von Timer Werten und Poti in Verbindung mit dem ADC ändern die PWM. Versuche gerade den Empfänger aus zu lesen. Habe gelesen das man den gleichen Timer nutzen kann, welcher auch die PWM erzeugt. Mal schauen ob das Interrupt gewusel was ich mir vorstelle auch klappt. Schauen wir mal was die nächste Woche alles so bringt. Schönes Wochenende.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.