Hallo zusammen, ich möchte einen Kontroller für zwei BLDC-Motoren für ein Modellschiff aufbauen. 2x PWM-Signale von der Fernsteuerung sollen eingelesen werden (Gas + Ruder). Bei geringer Geschwindigkeit und vollem Ruderanschlag sollen sich die Antriebe in unterschiedliche Richtungen drehen. Zusätzlich soll der maximale Ruderanschlag programmtechnisch begrenzt werden ( + 1x PWM Ausgang). Würde ein Atmega168 mit diesen Aufgaben zurechtkommen? Mir ist nicht klar, wie viele PWM-Kanäle pro Motor benötigt werden. Kann eventuell ein PWM-Kanal auf mehrere Ausgänge verteilt und getrennt gesteuert werden oder braucht man tatsächlich 6x PWM-Kanäle pro Motor? B-EMF-Signale sollen mit dem Mittelwert verglichen werden (Sternschaltung). Um den Mikrokontroller zu entlasten habe ich vor externe Komparatoren einzusetzen, s. „Komparator-Schaltung.png“. Würde hier der gewählte Optokoppler 2N25 ausreichen (Frequenz)? Würden die gewählten Transistoren Q4, Q6 2N2222 und Q5, Q7 2N2907 bei 100mA Stromimpulsen (s. „Treiber – Schaltung.png, Kollektorstrom Q4-Q7.png“) nicht zu warm werden? Mfg, Alexander
Willst du damit lenken ? Hab ich auch mal versucht, aber der praktische Test war ernüchternd. Der Wendekreis war riesig.
Ja, ich will damit die Heckruder unterstützen, da der Wendekreis z.Z. (nur mit Heckruder) relativ groß ist. Theoretisch soll sich das Model ja fast auf der Stelle wenden, dachte ich.
Ich habe damals nur die Vorwärtsbewegung genutzt (2 Jetantriebe). Wenn du tatsächlich einen Motor rückwärts laufen läßt sollte es deutlich besser sein ..... was dir aber deine ursprüngliche Frage leider auch nicht beantwortet. Ich habe das mit der Mischerfunktion der Fernsteuerung realisiert.
Wenn du die Steuerung mit einer Block-Kommutierung realisieren willst, reicht ein PWM-Ausgang für beide Motoren. siehe: http://www.mikrocontroller.net/articles/Brushless-Controller_f%FCr_Modellbaumotoren "Beispiel einer Halbbrücke inklusive Strommessung" Die Kommutierung wird ausgelöst, in dem man die mittlere Spannung der drei Phasen des Motos mit der BEMF der nicht-bestromten Phase vergleicht. Dies wird denke ich, meistens vom ADC Comparator des Controllers übernommen. Hier taucht das Problem auf. Beim ATMega kannst du nur 2 Spannungen mit dem ADC Comparator vergleichen. Die mittlere Spannung (deine Sternschaltung) MUSS am AIN0 angeschlossen sein. Die anderen analogen Eingänge werden dann mit dieser verglichen. Deshalb brauchst du pro Motor einen uC. Bitte berichtigen, wenn ich selbst falsch liege, bin noch kein Profi :) Edit: ein PWM-Ausgang pro Motor! Habe nicht daran gedacht, dass die Motoren sich wahrscheinlich auch unterschiedlich schnell drehen können/müssen. Grüße Andreas
:
Bearbeitet durch User
Andreas True schrieb: > Die Kommutierung wird ausgelöst, in dem man die mittlere Spannung der > drei Phasen des Motos mit der BEMF der nicht-bestromten Phase > vergleicht. Ja, so ist geplant. Nur die Signale von den externen Komparatoren kommen beim Mikrokontroller bereits digital an, sie müssen nicht von ADC verglichen werden. >Edit: ein PWM-Ausgang pro Motor! D.h. Atmel kann PWM-Modulierte Signale gleichzeitig an 12 Ausgängen ausgeben? Wenn nicht, dann könnte man noch mit zusätzlichen UND-Gatter Ausgänge steuern (PWM & Freigabe). Oh, der Atmega168 hat nicht einmal genug Ein-/Ausgänge für mein Vorhaben.
Man benötigt keine 12 PWM modulierte Ausgänge, sondern einen modulierten Ausgang und 6 digitale Ausgänge pro Motor. Hier ist es gut erklärt http://www.mikrocontroller.net/articles/Brushless-Controller_f%FCr_Modellbaumotoren unter dem Punkt "Beispielschaltung". Grüße Andreas
Du kannst auch mal bei ATXMega schauen. Da gibts einige mit mehreren Komparatoren. Damit könnte es möglich sein, zwei Motoren mit einem µC zu steuern. Oder du nimmst zwei Attiny 441, die können die PWM-Ausgänge auf unterschiedliche Pins legen. Also nicht wie beim Atmega168, dass das PWM Signal immer starr auf einem Pin liegt. Oder du nutzt eine Schaltung aus Widerständen. Du nimmst 3 Widerstände und legst auf die eine Seite der drei Widerstände das PWM-Signal. Die anderen Seiten legst du pro Widerstand auf einen Pin des Atmega's. Je nachdem, wie du diese drei Pins schaltest, liegt dort dann Low, High oder PWM an. So hab ich es gemacht und es funktioniert gut. Dennis
Alexander, Hast Du Dir schon Motoren ausgesucht? Welche Felddrehzahl mußt du mit den 2 Motoren erreichen? Auch wenn's nicht viel ist, ein bischen was muß der µC auch rechnen. Vielleicht sind ja 2 kleine µC mit Standard-Software + einer für die Sollwerte die insgesamt einfachere Lösung. Welche Wellenanordnung hat Dein Schiff? Unter welchem Winkel stehen die Wellen? Es gab durchaus Schiffe die darauf getrimmt waren daß man mit nur einem Propeller noch gerade aus fährt (AFAIR Wellen so angestellt daß sich der gedachte Schnittpunkt halbwegs mittschiffs befindet), und andere die darauf getrimmt waren, mit den Props zu lenken (AFAIR so daß sich der gedachte Schnittpunkt hinter dem Heck befindet)
Ich habe folgende Motoren ausgesucht: https://www.hobbyking.com/hobbyking/store/uh_viewItem.asp?idProduct=19023 https://www.hobbyking.com/hobbyking/store/uh_viewItem.asp?idProduct=18170 Maßstabsgeschwindigkeit: 3 m/s (Originalschiff schafft 80 km/h, M 1:50) Berechnete Drehzahl mit 55mm Schrauben, 4 Blätter (grob errechnete Steigung 60 mm), um die Maßstabsgeschwindigkeit zu erreichen: ca. 4000 U/min. Ich denke 3000 U/min wären auch ausreichend. Modell ist ca. 1.2 m lang und mit Akkus 6 kg schwer. Zu der Wellenanordnung kann ich nicht viel sagen, Schiffsrumpf ist in der Abbildung zu sehen.Das mit Gegenseitig laufenden Schiffsschrauben werde ich noch testen, ob das bei diesem Modell funktioniert. Die Motoren müssen ohnehin wegen der Positionsbestimmung des Rotors getrennt angesteuert werden. Und für die maximale Anschlagbegrenzung der Heckruder, und evtl. geschwindigkeitsabhängige Heckrudersteuerung (bei voller Fahrt langsamer oder begrenzt regeln, bzw. Gas wegnehmen, um ein Umkippen zu vermeiden) muss die Ruderposition von dem Empfänger eingelesen werden.
Alexander schrieb: > Und für die maximale Anschlagbegrenzung der > Heckruder, und evtl. geschwindigkeitsabhängige Heckrudersteuerung (bei > voller Fahrt langsamer oder begrenzt regeln, bzw. Gas wegnehmen, um ein > Umkippen zu vermeiden) muss die Ruderposition von dem Empfänger > eingelesen werden. Oder das wird vom Empfänger / hinter dem Empfänger geregelt.
das würde man unter Wasser auch nicht sehen ;o) aber die Steuerung wäre sicher einfacher/besser.
Alexander schrieb: > Ich habe folgende Motoren ausgesucht: > > https://www.hobbyking.com/hobbyking/store/uh_viewItem.asp?idProduct=19023 > https://www.hobbyking.com/hobbyking/store/uh_viewItem.asp?idProduct=18170 > ... Hmm, anscheinend keine Angabe zur Polzahl. Aber bei 4000RPM sollte das schon mit einem AVR machbar sein, selbst wenn der Motor ein 28P24N wäre, was er vermutlich nicht ist.
Meinen Sie einen AVR mit 16Mhz? Oder soll ich lieber gleich zu einem Xmega mit 32Mhz greifen? Ich denke, der Motor wird nicht mehr als 14 Pole haben. Es muss nicht berechnet werden, ich bin mir aber nicht sicher, ob der MK mit der Frequenz zurechtkommt: B-EMF –-------------- 6x Interrupts (keine AD-Umwandlung nötig, da externe Komparatoren) Motoransteuerung ---------------- 2x PWM für beide Motoren (Hardware) 12x Ausgänge umschalten PWM vom Empfänger einlesen ---------------- 2x Interrupts, 2x Zähler Rudersteuerung ---------------- 1x PWM (Hardware)
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.