PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : TowerPro MAG8 ansteuern...



dt2158
24.08.2008, 15:41
So, bin jetzt auch unter die Bastler gegangen.

Habe jetzt lange gesucht und leider noch wichtige Fragen zur Steuerung meines MAG 8 Reglers. Der Motor ist am Regler angeschlossen. Und 11 V hab ich auch an denRegler per Labornetzteil rangegeben. Noch passiert nix kein Piepen und nichts. Das "Steuerungskabel" ist auch noch nicht angeschlossen. Ich habe nun herausgefunden, dass der MAG8 ein PWM Signal haben möchte.

1. Kann ich dies mit meinem Atmega32 erzeugen?
2. Wie müssen die 3 Leitungen des Reglers belegt werden? Ground, VCC, und? Ein PWM-Port am µC?
3. Wie groß sind die Impulse? Ich habe IRGENDWO etwas von 0,5 ms-1,5ms gelesen. Oder verteilt sich die Leistung direkt linear über der Periodendauer?
Im "datenblatt" steht 8khz PWM-Cotnrol, was sicher die Periodendauer ist?!
8khz = 0,125 ms periodendauer, kann der impuls oben ja nicht stimmen.

ich bin verwirrt und bitte um aufklärung?!

danke

fhs
24.08.2008, 20:02
Hallo,

Deinen Regler kenne ich nicht. Du beschreibst einen typischen RC-Modellbau-Motorregler, der eben am Steuereingang alle 20 ms einen Impuls von 1.0 ms - 2.0 ms Länge erwartet. Daraus wird dann intern ein PWM-Signal erzeugt, das, wie Du sagst, bei 8 kHz liegt.

Ohne Datenblatt kann ich nur hypothetisieren, dass Du den Regler mit einer Ansteuerung für ein Servo (findest Du oft beschrieben) mit einem Fernsteuerempfänger oder Deinem ATmega ansteuern kannst.

Gruß

Fred

Christopher1
24.08.2008, 20:25
http://towerprocn.sh15.host.35.com/towerprocn/pic/Brushless%20Motor%20speed%20controller%20user%20gu ide.doc
Vielleicht hilft dir das

RP6conrad
24.08.2008, 20:39
So ein modellbau motorregler hat immer eine bestimmte initialisierung. Beim einschalten muss er erst minimale pulslange und maximale pulslaenge sehen. Diese wirden dan gespeichert, und dan wird er scharf gesetzt. Das um zu vermeiden dass bei anschliessen der batterie der motor geleich hoch lauft. (bruschless geht heute bis 5 kWatt...). Diese initialisierung muss du dan auch so machen. Schau mal das datenblatt an.

dt2158
25.08.2008, 10:03
http://towerprocn.sh15.host.35.com/.....roller%20user%20guide.doc
Vielleicht hilft dir das

Genau das erste Datenblatt von den vieren in dem Dokument habe ich...


Hallo,

Deinen Regler kenne ich nicht. Du beschreibst einen typischen RC-Modellbau-Motorregler, der eben am Steuereingang alle 20 ms einen Impuls von 1.0 ms - 2.0 ms Länge erwartet. Daraus wird dann intern ein PWM-Signal erzeugt, das, wie Du sagst, bei 8 kHz liegt.

Ohne Datenblatt kann ich nur hypothetisieren, dass Du den Regler mit einer Ansteuerung für ein Servo (findest Du oft beschrieben) mit einem Fernsteuerempfänger oder Deinem ATmega ansteuern kannst.

Gruß
Fred

Dh die 8khz sind für mich für den Steuereingang des Reglers nicht relevant? Woher hast du diese Werte mit 1-2 ms bzw T=20ms, sind allgemein bei ALLEN Reglern üblich? Warum steht so eine Info nicht im Datenblatt? Kann ich das jetzt einfach mit PWM am avr erzeugen?



So ein modellbau motorregler hat immer eine bestimmte initialisierung. Beim einschalten muss er erst minimale pulslange und maximale pulslaenge sehen. Diese wirden dan gespeichert, und dan wird er scharf gesetzt. Das um zu vermeiden dass bei anschliessen der batterie der motor geleich hoch lauft. (bruschless geht heute bis 5 kWatt...). Diese initialisierung muss du dan auch so machen. Schau mal das datenblatt an.

Habe ins DB geguckt, raff das aber nicht, die einzige Einstellung die da vornehmen kann sind laufeigenschaften des Motors... die sind mir erstmal schnurzpiepegal.

Ich habe auch keinen RC-Empfänger und keinen Sender... Noch nicht... Alles zu teuer... Möchte langfristig einen Quadrocopter basteln aber erstmal mit den einzelnen Komponenten auseinandersetzen, da wird der Motor dann ja auch nicht von einem RC-Empfänger direkt sondern von der Elektronik angesteuert.

fhs
25.08.2008, 10:21
Hallo,

da es sich beim Datenblatt um ein Word-Dokument handelt, werde ich es nicht öffnen, und kann Dir deshalb Deine Fragen nur in Teilen beantworten.


.. die 8khz sind für mich für den Steuereingang des Reglers nicht relevant?
Wenn das die PWM-Frequenz des Motors ist, hat der Wert mit dem Steuereingang nichts zu tun.


Woher hast du diese Werte mit 1-2 ms bzw T=20ms, sind allgemein bei ALLEN Reglern üblich?
Das ist das Standard-Ausgangssignal von RC-Empfängern, sowohl für Servos als auch für Motorregler.


Warum steht so eine Info nicht im Datenblatt?
Weiß ich nicht.


Kann ich das jetzt einfach mit PWM am avr erzeugen?
Ja!

MfG

Fred

dt2158
25.08.2008, 10:47
Hallo,

da es sich beim Datenblatt um ein Word-Dokument handelt, werde ich es nicht öffnen, und kann Dir deshalb Deine Fragen nur in Teilen beantworten.


.. die 8khz sind für mich für den Steuereingang des Reglers nicht relevant?
Wenn das die PWM-Frequenz des Motors ist, hat der Wert mit dem Steuereingang nichts zu tun.


Woher hast du diese Werte mit 1-2 ms bzw T=20ms, sind allgemein bei ALLEN Reglern üblich?
Das ist das Standard-Ausgangssignal von RC-Empfängern, sowohl für Servos als auch für Motorregler.


Warum steht so eine Info nicht im Datenblatt?
Weiß ich nicht.


Kann ich das jetzt einfach mit PWM am avr erzeugen?
Ja!

MfG

Fred

für word hasser mal in pdf umgewandelt als attachment ;)

ich werd einfach mal versuchen so ein pwm signal zu erzeugen...

fhs
25.08.2008, 11:38
Hi,

bin kein "Word-Hasser"; nur bezweifle ich, dass es eine gute Idee ist, Word-Dateien von unbekannten Quellen zu öffnen!

Du kannst sicher sein, dass eine typisches 1-2 ms Signal alle (etwa) 20 ms funktionieren wird. Wie RP6conrad schon sagte, muss das Signal beim Start des Reglers wahrscheinlich "0" sein (also 1,0 ms oder 0,9 ms), da der Regler den Motor sonst aus Sicherheitsgründen nicht aktiviert.

Suche mal in diesem Forum und im Internet nach Servo-Ansteuerung; hier ist ein Beispiel: http://roderickmann.org/log/archives/2006/01/atmega32_pwm.html

Viel Erfolg!

Fred

Christopher1
25.08.2008, 12:19
Du kannst sicher sein, dass eine typisches 1-2 ms Signal alle (etwa) 20 ms funktionieren wird. Wie RP6conrad schon sagte, muss das Signal beim Start des Reglers wahrscheinlich "0" sein (also 1,0 ms oder 0,9 ms), da der Regler den Motor sonst aus Sicherheitsgründen nicht aktiviert.

So hab ich zumindest den Regler zum Laufen gebracht 8-[

dt2158
28.08.2008, 19:39
Du kannst sicher sein, dass eine typisches 1-2 ms Signal alle (etwa) 20 ms funktionieren wird. Wie RP6conrad schon sagte, muss das Signal beim Start des Reglers wahrscheinlich "0" sein (also 1,0 ms oder 0,9 ms), da der Regler den Motor sonst aus Sicherheitsgründen nicht aktiviert.

So hab ich zumindest den Regler zum Laufen gebracht 8-[

sooo, hab jetzt alles zusammengebaut.
nun hat das ganze aber net soo geklappt :-k

ich berichte bzw. wiederhole meinen bisherigen aufbau:
1.) reglerspannung an 11V netzteil angeschlossen (plus und minus beachtet)
2.) 3 motorphasen an regler angeschlossen
3.) pwm beispielprogramm (siehe unten) geschrieben/kopiert für atmega32 welches von 0,9-2ms pwm-pulsdauer durchiteriert. Hab leider kein oszi zum testen da, aber das Spannungs-Mittel iterierte von 250mV(1ms)-500mV(2ms) bei VCC=5V, also sah das ganz gut aus
4.) steuerleitung angeschlossen (braun rot gelb)
weiß pinbelegung nicht
- erster Versuch nix tut sich regler wird sehr warm (braun masse; rot pwm am µC, gelb VCC)
- zweiter Versuch nix tut sich regler wird nicht mehr anfassbar heiß (masse und vcc getauscht) -> schnell abgeschalten 8-[

weitere Versuche gestoppt.

FRAGE: Wie muss die Steuerleitung zum regler beschalten werden???

PS: Glaub den ersten µC hab ich auch entschärft :-b , das Programm blieb unverändert, trotzdem messe ich jetzt an pwm und masse 750-1000mv, also 500mV zuviel, is so ein defekt wahrscheinlich? Stromverbrauch ist laut netzteil auch angestiegen. Programmieren geht aber alles noch supi.

Code für PWM:

#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>

#define kPinInitCompleteLED PA0
#define kDelay 10000 //10000
#define kReverseDelay 300000 //300000

#define kLowerLimit 225 // Min 225 == 0.9 ms
#define kUpperLimit 500 // Max 525 == 2.1 ms

int
main()
{
volatile long d;
short dir = 1;

// Set LED output pins…

DDRA = _BV(kPinInitCompleteLED);
DDRB = 0; // Port B inputs

// Set up OCR pins (PD4, PD5) as outputs (00110000)…

DDRD = _BV(PD4) | _BV(PD5);

// Set up Timer 1. Timer 1 should reset when
// it reaches TOP = ICR1 (WGM13:0 = 1110b). On
// compare match clear output, at TOP set (COM1A1:0 = 10b).

TCCR1A = _BV(COM1A1) | !_BV(COM1A0) // Both PWM outputs set at TOP,
| _BV(COM1B1) | !_BV(COM1B0) // clear on compare match
| !_BV(FOC1A) | !_BV(FOC1B) // PWM mode, can't force output
| _BV(WGM11) | !_BV(WGM10); // Fast PWM, TOP = ICR1

TCCR1B = !_BV(ICNC1) | !_BV(ICES1) // Disable input capture noise canceler,
// edge select to negative.
| _BV(WGM13) | _BV(WGM12) // Fast PWM, TOP = ICR1
| !_BV(CS12) | _BV(CS11) | _BV(CS10); // clk(i/o) / 1024

// PWM duty cycle…

OCR1A = kLowerLimit;
OCR1B = kLowerLimit;

// PWM period…

ICR1 = 5000;

// Show initialization complete…

PORTA = _BV(kPinInitCompleteLED);

// Loop forever steering left-to-right-to-left…

OCR1A = kLowerLimit; // Min value == 0.9 ms
while (1)
{
d = kDelay;
while (d--);

OCR1A += dir;

if (OCR1A < kLowerLimit)
{
OCR1A = kLowerLimit;
dir = 1;
d = kReverseDelay;
while (d--);
}

if (OCR1A > kUpperLimit) // Max value == 2.1 ms
{
OCR1A = kUpperLimit;
dir = -1;
d = kReverseDelay;
while (d--);
}

}

return 0;
}


Danke fürs Mitgrübeln :)

EDIT: ich glaube OCR1A hats wirklich entschärft... ORCA1B zeigt korrekt an... Gleich noch ein paar neue atmegas bestellen 8-[

RP6conrad
28.08.2008, 20:14
Die pulslaenge muss zwichen 0.9 mS bis 2.1 mS liegen. Diese puls muss jeden 20 mS neu gesendet werden. Kannst du messen mit eine multimeter mit frequenz Anzeige : die muss um die 50 Hz geben. Die Pulslaenge kannst du messen mit dien "duty cycle" von eine moderne multimeter. Puls von 1 mS jeden 20 mS = dutycycle von 5%. Puls von 2 mS jeden 20 mS = 10% . Die meiste moderne multimeter konnen das .
Die rote draht von steuerleitung nicht anschliessen !! Diese regler haben interne eine Spannungsregler nach 5 Volt, damit wird dan normal der Empfanger und alle Servos versorgt . Du muss nur die braune Draht (= GND oder minus) und die Gelbe dan an Puls von µC anschliessen.
Am besten erstes versuchen mit ein gans normale Modellbau servo.(dan naturlich Rote Draht an 5Volt) Dan siehts du schon oder die pulslaenge in grunen bereich ist.
Normalerweise darf der Regler nicht heiss werden ohne Belastung !

dt2158
29.08.2008, 00:09
Die rote draht von steuerleitung nicht anschliessen !! Diese regler haben interne eine Spannungsregler nach 5 Volt, damit wird dan normal der Empfanger und alle Servos versorgt . Du muss nur die braune Draht (= GND oder minus) und die Gelbe dan an Puls von µC anschliessen.
Am besten erstes versuchen mit ein gans normale Modellbau servo.(dan naturlich Rote Draht an 5Volt) Dan siehts du schon oder die pulslaenge in grunen bereich ist.
Normalerweise darf der Regler nicht heiss werden ohne Belastung !

Habe leider nur ein 10 € Teil ohne Frequenzmesser... liebäugel ja mit einem Oszi, aber so schweine teuer...

Nunja, der Motor dreht sich, habe die im Anhang verwendete Schaltung verwendet, aber festgestellt es geht in der tat auch ohne das rote kabel - schön.



Die pulslaenge muss zwichen 0.9 mS bis 2.1 mS liegen. Diese puls muss jeden 20 mS neu gesendet werden. Kannst du messen mit eine multimeter mit frequenz Anzeige : die muss um die 50 Hz geben. Die Pulslaenge kannst du messen mit dien "duty cycle" von eine moderne multimeter. Puls von 1 mS jeden 20 mS = dutycycle von 5%. Puls von 2 mS jeden 20 mS = 10% . Die meiste moderne multimeter konnen das .

Ich dachte 1ms = 5% und 2ms=100% Was is nun richtig? Der motor hört sich an als würde noch mehr gehn!?

Anlaufen tut er auch erst bei 1,3 ms, kann das Ganze pwm-Zeug aber auch nich messen, sondern nur anhand des Mittelwerts erahnen.

RP6conrad
29.08.2008, 16:39
Wenn du der duty cycle von puls messen soll dan ist 1 ms Hoch, 20mS niedrig gibt 5%. 2mS hoch und 20 mS niedrig gibt dan 10%. Für die Servo's ist dan 1 mS max Ausschlag nach links, 2mS gibt dan max Ausschlag nach rechts. 1.5mS ist immer mitten. Für die Motorregler ist dan 1 mS motor aus, 2 mS max. Leistung. Für motorregler sind meistens diese werte einstellbar beim booten. Aber die 20 mS niedrig kan immer gleich sind. Darf auch ruhig 25 mS sein, functioniert auch. Fiel langer darf es nicht sein, dan wird der Servo nicht immer nach die richtige pos fahren.