Hi uC.net Community,
ich versuche über einen ATmega 644 per PWM-Signal ein Pulsweitenmodul
von Robbe (roxxy bl-control-960-6) anzusteuern, dieses dann per interner
Regelung einen Motor von Robbe (bl-outrunner 4240/12, 7-15v) ansteuert.
Leider funktioniert das ganze nicht und nach langem recherchieren im
INet und Datenblatt lesen, sowie vielen Tests muss ich mich hier melden.
Ich hoffe das vor allem das PWM-Modul einigen Usern hier ein Begriff
ist, weil ich denke das vor allem hier das Problem liegt.
Wie schon erwähnt verwende ich einen ATmega644 und das PWM-Signal für
das PWM-Modul habe ich bereits programmiert und mit einem Scope gemessen
und das müsste normalerweise, nach den "Richtlinien" für die Ansteuerung
für Servomotoren hier auf uC.net (
http://www.mikrocontroller.net/articles/Modellbauservo_Ansteuerung )
richtig sein. Habe eine Frequenz von 50Hz (Periode 20ms) und meine
Pulsweite stelle ich zwischen 0,9ms und 2,1ms ein, das stimmt doch so?
Wenn ich dann das Signal auf mein PWM-Modul übertrage passiert nichts.
Nur bei einer PWM-Weite von 1,5ms und mehrmaligen ein und ausschalten
der Spannungsversorgung dreht sich mein Motor mit geringer Drehzahl,
Zufall ?
Wenn ich dann mein PWM-Signal wegnehme hört der Motor auf sich zu
drehen.
Also kommt am PWM-Modul ein Signal an, womöglich nur das Falsche, oder
ein falsches Timing, warum sollte es sich sonst drehen ?
Hat hier jemand mal sowas gemacht bzw. Erfahrung ein PWM-Modul
anzusteuern ?
Benötige ich überhaupt ein PWM-Signal und wenn ja liege ich mit meinen
50Hz richtig oder soll ich eine höhere Frequenz z.B 400Hz einstellen ?
Sehr viele Fragen ^^ ich danke schon mal allen die sich das durchlesen
und sich die Mühe geben mir zu helfen und hoffe auf viele Antworten :)
mfg c_l
Hi,
danke schon mal für die Hilfe, die 32 Hz habe ich auch schon
ausprobiert, mit dem gleichen Tastverhältnis der 50Hz, hat leider auch
nicht funktioniert ( das habe ich vergessen zu erwähnen )
Bleibt das Tastverhältnis für einen Servomotor immer gleich wenn die
Frequenz geändert wird ?
Leider habe ich keine Refernzschaltung bzw. Steuerung aufgebaut, deshalb
kann ich bisher nichts vergleichen oder messen. Nur in der aufgebauten
Schaltung...
Hallo Closed Loop
die Ansteuerung eines Drehzahlsteller ist genauso wie die Ansteuerung
eines Servos. Hast du mal versucht ein Modellbauservo anzuschliessen?
Teste deine Hard. und Software mal mit einem Servo. Bei 1,5ms sollte das
Servo etwa in Mittelstellung stehen.
Beim Regler ist dann wahrscheinlich das Problem, daß sich der Regler
erst "scharf stellt" wenn du ihm die PWM für Motor aus schickst.
Teste erst mal das mit dem Servo.
Ansonsten später mehr.
Gruß Günter
Hc Zimmerer schrieb:> Nichts mit 50 Hz also. Also bringst Du am besten die Solldaten erst> einmal in Erfahrung, evtl. durch Ausmessen einer vorhandenen Steuerung.
Das ist auf der Motorseite und hat nichts mit der Ansteuerung des
Reglers zu tun. Ist ja schoen, wenn du helfen willst, aber so voellig
ohne Ahnung ist das kontraproduktiv.
Wie andere schon schrieben, haben fast alle Modellbauregler einen Schutz
gegen versehentliches hochdrehen beim Einschalten - wie der ueberwunden
wird, steht in der Anleitung.
RE: Hc Zimmerer
Die 32 kHz sind die Frequenz die der Regler intern für die Ansteuerung
des Motors macht.
Die Verbindung µC-Regler läuft 100% mit 50Hz und die Impulse müssen
zwischen etwa 1ms und 2ms lang sein.
Also zb. 1ms High und dann 19ms Low
oder 1,5ms High und dann 18,5ms Low
Moin,
wichtig ist die Impulslänge. Die beträgt normalerweise 1,1ms bis 1,9ms,
Mitte 1,5ms. Diese werten gelten für Graupner bei Servoweg 100%.
Die Periodendauer darf ruhig etwas schwanken, wobei die 20ms wohl der
Quasistandard sind.
Du solltest am Steller den "Gasweg" einlernen, also minimale und
maximale Impulslänge für 0-100%. Dan sollte es klappen.
Gruß,
Stefan
Hallo Leute,
die 32 kHz beziehen sich nicht auf die Ansteuerung mit dem PWM-Signal
sondern auf die Regelschleife für den Motor. Die Ansteuerung für das PWM
Signal bleibt bei den typischen 20 Hz wie bei einem Servo.
Ich denke das Problem liegt darin, dass der Regler beim ersten mal
programmiert werden muss (Nullstellung, Voll-Schubstellung, ...), sonst
läuft er nicht an und der Start muss auch von der Nullstellung aus
beginnen sonst startet der Motor aus Sicherheitsgründen nicht.
Grüße Larsen
Hey Leute,
danke schon mal für die viele Hilfe, also ich habe mir jetzt einen
Servomotor von einem Kollgen ausgeliehen, ihn direkt angesteckt und der
läuft d.h, bei 1,5ms in Mittelstellung und bei 2ms in die "Endposition".
Es liegt also definitiv am PWM-Modul, und entweder an einer
Sicherheitsfunktion oder wirklich das ich alle Stellungen
einprogrammieren muss.
Leider habe ich bis jetzt nur eine Fernsteuerung nicht das
Programmermodul (ist bestellt). Ich kann aber leider nicht, egal mit was
ich programmiere die Sicherheitsfkt. ausstellen z.B
- Anlaufschutz,verhindert ungewolltes Anlaufen des Motors
Ich denke es liegt am Anlaufschutz, da mein PWM-Signal kontinuierlich am
PWM-Modul liegt sobald ich meiner Platine saft gebe und somit diese
Funktion intern ausgeführt wird.
Sobald alles funktioniert werde ich dann noch mal eine komplette
Zusammenfassung mit Lösung hier reinstellen.
Für weiter Lösungsvorschläge bin aber ich weiterhin sehr dankbar :)
Aalso, ich kenne die Motorsteuerungen für die Roxxy Brushless Motoren
so, dass man beim ersten Einschalten die Stellwege anlernen muss.
Das wird, wenn ich mich recht erinnere, durch das Blinken einer LED
angezeigt.
Machst Du das?
Ich kann mich nicht erinnern, ob die Einstellungen erhalten bleiben,
wenn die Betriebsspannung weg ist oder nicht. Könnte mir vorstellen,
dass aus Sicherheitsgründen bei jedem Einschalten ein Anlernen notwendig
ist.
Aber das stand eigentlich gut verständlich in der Anleitung. Hast Du da
mal reingeschaut?
Grüße,
Stefan
closed_loop schrieb:> Ich denke es liegt am Anlaufschutz, da mein PWM-Signal kontinuierlich am> PWM-Modul liegt
Das kann sein. Probiere doch mal beim einschalten eine Pulslänge von >=
1,1ms. Dann sollte der Anlaufschutz nicht greifen. Ansonsten schalten
die meidten Steller bei ausfall des Signals den Motor ab.
Gruß,
Stefan
Hi, der Impuls am PWM Signaleingnag (weiß) für den roxxy Regler muss
alle 20ms kommen (nicht nur bei Änderung der Pulsweite).
Habe es selbst schon erfolgreich mit einem Mega8 am laufen. Pulsweiet
(1ms-2ms und Periodendauer von 20ms)
Um den Regler zu nutzen, muss nach anschlißen des Akkus zuerst die
Mittelstellung (1,5ms Puls) anliegen, dann piepst der Regler (ich glaube
3x) und dann kann mit Änderung der Pulslänge die Drehzahl & Drehrichtung
verstellt werden.
mfg
Mit welcher Spannung betreibst du den roxxy-Regler? Möglicherweise
erkennt der Unterspannung (leerer Akku) und lässt den Motor auf diesem
Grund nicht anlaufen.
ich benutzen den vislero v2 11.1V 3S1P 2200mAH LiPO Akku, den wir vor
kurzem nochmal aufgeladen haben.
Wenn wir direkt nach anschließen des Akkus, die Mittelstellung 1,5ms
anlegen piepst er auch dreimal und die rote LED auf dem Regler leuchtet
permanent. Nur leider will der Motor sich nicht drehen, auch nicht wenn
wir die Pulslänge per Schalter umschalten.
Gestern habe ich das auch schon mit den 1,5ms Pulsweite probiert.
Als wir dann immer wieder an und ausgeschaltet haben, konnten wir
zumindest erreichen dass der Motor dann irgendwann lief. Heute geht das
leider nicht mehr. Er reagiert zwar kurz man hat das Gefühl er will
losdrehen dann hört er aber direkt auf.
@Stefam
mit einer Pulslänge von 1,1ms genau das gleiche Verhalten.
Soll ich mal unseren Quelltext anhängen, vielleicht hilfts ja.
Das die Rote LED leuchtet ist auch OK, dass habe ich auch nachdem er in
Mittelstellung steht. Dann geht nach verändern der Pulslänge die LED aus
und der Motor dreht sich.
closed_loop schrieb:> Nur leider will der Motor sich nicht drehen, auch nicht wenn> wir die Pulslänge per Schalter umschalten.
Evtl hat der Regler eine Fail-Save Funktion, die eine zu große
sprunghafte Änderung der Pulsweite als Fehler erkennt. Am Besten mal nen
Poti an den Mega644 anschließen, und mit dem Wert aus dem AD-Wandler
damit die Pulsweite vorgeben. dann kann man sie auch in kleine Schritten
verändern.
mfg
Hast Du das hier in der Anleitung gelesen ?
...
Falls nach (Punkt 3.1.2) die LED leuchtet, muß am Sender SERVO-
REVERSE betätigt werden, die Spannungsversorgung zum Regler
unterbrochen und erneut mit (Punkt 3.1.1) begonnen werden.
Die Vorwärtsposition des Knüppels muß in der Nähe des mechani-
schen Anschlags stehen.
...
Vielleicht hast Du vorwärts mit rückwärts verwechselt.
Also mal mit vorwärts (1,9ms) und rückwärts (1,1ms) probieren (evtl.
sind die Signallängen auch andersrum, auswendig weiss ich das nicht).
Signal anlegen, und dann den Regler einschalten. Der Rest steht in der
Anleitung.
Ich würde mal drei fixe Längen programmieren, 1,1; 1,5; 1,9; und mit
denen mal probieren.
closed_loop schrieb:> Leider habe ich bis jetzt nur eine Fernsteuerung nicht das
Und wenn Du eine Fernsteuerung hast, hast Du mit dieser schon probiert,
den Motor zum Laufen zu bringen ? Das würde ich doch zuerst machen, dann
kannst Du Fehler von deiner SW ausschliessen - und verstehst, wie der
Fahrtenregler / Motorsteller initialisiert werden will.
Und dann die Signalfolge, die Du ja mit dem Scope zur Not anschauen
kannst, nachprogrammieren.
Wenn Du nach der Anleitung vorgehst, mußt Du
- einen 1,9ms Impuls erzeugen (Vollgas)
- dann die Bestätigung des Stellers abwarten
- dann einen Impuls mit 1,1ms anlegen
- und wieder auf die Bestätigung des Stellers warten.
Damit hast Du dann den "Knüppelweg" respektive minimale und maximale
Impulslänge für 'vorwärts / stop' eingelernt.
Wenn Du 'vorwärts stop rückwärts' benötigst, dann mußt Du noch die
Mittelstelleung, z.B 1.5ms, dazwischeschieben. Siehe Anleitung 3.1.
Wenn dann die rote LED leuchtet das Ganze nochmal mit umgekehrten
Impulslängen.
Wie schon weiter oben geschrieben gelten die von mir genannten
Impulslängen für 100% Stellweg nach Graupner. Alles andere zwischen
0.9ms un 2.1ms sollte auch funktionieren.
Grundsätzlich sollte das Umschalten per Schalter kein Problem
darstellen. Wir machen es ja in unseren Fliegern (manchmal) genau so.
Wie erzeugst Du Dein Signal? PWM-Modus eines Timers oder CTC? letzteres
wäre nicht ganz so schön....
Gruß,
Stefan
stefan hennig schrieb:> Könnte mir vorstellen,> dass aus Sicherheitsgründen bei jedem Einschalten ein Anlernen notwendig
Hallo Stefan,
das kommt ganz auf den Steller an (ich wehre mich gegen den Begriff
Regler).
- Mein Jeti erwartet eine Impulsweite von ~1.1ms oder kleiner, dann
merkt er sich die Leerlaufstellung. Anschließend einmal Vollgas, dann
weiß er wo das ist. Wird also jedes mal eingelernt.
- Meine Turnigys muss ich explizit auf den Sender einlernen, die merken
sich das.
- Der alte PICO25 von Graupner muß auch explizit angelernt werden.
Gruß,
Stefan
@tsag
das war die Lösung!!!
Der hat scheinbar eine Fail-Save Funktion.
Ich habe nun nach Anschließen des Akkus zuerst die Mittelstellung (1,5ms
Puls), dann stelle ich durch einen Schalter auf 1,58ms Puls und der
Motor läuft.
Was ich noch nicht herausgefunden habe (aber auch für mich nicht
wirklich essentiell ist), wie man den Motor in die andere Richtung
drehen kann. Ich dachte, wenn ich den Puls kleiner als 1,5ms stelle
würde er dann in die andere Richtung drehen.
An dieser Stelle möchte ich mich bei "Allen" für die vielen
qualifizierten Antworten bedanken!
closed_loop schrieb:> drehen kann. Ich dachte, wenn ich den Puls kleiner als 1,5ms stelle> würde er dann in die andere Richtung drehen.
Das ist auch richtig so, aber es kann sein, dass der Regler in
Werkseinstellung auf Bremsfunktion eingestellt ist, dann ist kurz nach
der Mittelstellung Bremse und dann darüber hinaus dann Rückwärts. Das
kann man aber mit dem Programmiertool umstellen.
Peter Stegemann schrieb:> Stefan Weßels schrieb:>> Äääh, das sind nicht 20 Hz, sonder 20ms, also 50Hz. Ist zwar nicht all>> zu kritisch, aber 20 Hz könnten doch etwas wenig sein.>> Eigentlich sind es sogar 45Hz:
Der Link ist klasse, den kannte ich noch gar nicht.
Da gibts bestimmt unterschiedliche Frequenzen / Periodendauern, ich habe
es nie nachgemessen. Die 50Hz werden jedenfalls gerne gemommen.
Die MC22 hat eine Periodendauer von 22.5ms, die MX24 hat irgendwas um
12ms im 5-Kanalbetrieb usw.
Auf keinen Fall wollte ich den Anschein unendlicher Weisheit erwecken...
;-)
Gruß,
Stefan
Stefan Weßels schrieb:> Auf keinen Fall wollte ich den Anschein unendlicher Weisheit erwecken...
Meines Wissens gibt es keinen offiziellen Standard, solange es
funktioniert, kann man also schlecht sagen, was richtig ist und was
nicht... das macht es auch so leicht fuer einige Hersteller, sich so
weit aus dem Fenster zu lehnen, damit es mit "Fremdprodukten" nicht mehr
geht.
Ich habe nun nicht den ganzen Thread gelesen, aber:
Zuerst musst Du den Regler programmieren. Also Timing, Akkutyp,
Abschaltspannung, ...
GAAAAAAANNNNNNZZZZ wichtig:
Motor AUS Position des Knüpples am Sender, wenn der Motor aus sein soll.
Also bei Deiner Schaltung die Länge des Impulses, wenn der Motor stehen
soll und die Vollgas Position. Also bei Deiner Schaltung die Länge des
Impulses bei maximaler Drehzahl.
Wenn Du das gemacht hast, dann läuft die Sache nur, wenn beim Anstecken
des Antriebsakku die Motor AUS Impulslänge anliegt. Dann erst
initialisiert (tüddelt ein paar Töne mit dem Motor) der Regler und erst
nach dem Initialisieren kannst Du anfangen und Gas geben.
So sind die Modellbauregler alle. Sonst könnte man ja einen Heli bei
Halbgas an den Akku stöpseln und bekäme die Finger verkloppt oder bei
einem Flieger die Finger im Propeller zerhäckselt.
Modellbauer schrieb:> Ich habe nun nicht den ganzen Thread gelesen, aber:
Haettest du vieleicht machen sollen.
> So sind die Modellbauregler alle.
Nein, sind sie nicht. Und weiter oben steht das auch schon :-(
Modellbauer schrieb:> Sonst könnte man ja einen Heli bei> Halbgas an den Akku stöpseln und bekäme die Finger verkloppt
In der Anfangszeit gab es auch so etwas......
Gruß,
Stefan
Peter Stegemann schrieb:> Meines Wissens gibt es keinen offiziellen Standard,
Den gibt es mit Sicherheit nicht. Ich denke mal das die Frequenz stark
von der Anzahl der übertragenen Kanäle abhängt.
Im Prinzip brauche ich ja nur [Synchronisation(3ms?) + Kanalzahl * max.
Impulslänge + (Kanalzahl-1) * Pause] zu berechnen, dann habe ich die
Periodendauer. Ich vermute mal das es auch Sender mit variabler
Periodendauer gibt.
Ich glaube ich muss mir mal ein Oszi leihen, dann messe ich mal MX16s
und MC12 durch. Das interessiert mich jetzt.
Gruß,
Stefan