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
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
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.
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=19023https://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.
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)