Lieber Besucher, herzlich willkommen bei: RCLine Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Ecofan

RCLine User

  • »Ecofan« ist der Autor dieses Themas

Wohnort: Schweiz, Zürich

Beruf: Gymischüler

  • Nachricht senden

1

Sonntag, 26. Februar 2006, 15:21

Servo mit Mega8 ansteuern==> es spinnt

Hallo zusammen,

ich möchte ein TS-901 MGBB Servo von Conrad ansteuern. Ich tue dies mit Bascom. Es ist ein Digital-Servo. Ich steuere mit einem Mega8, der unter 6MHz rennt.
Um den Bereich herauszufinden, liess ich Bascom alle Werte von 1 bis 200 durchlaufen. Bei 33 beginnt er, an eine Position zu fahren. Bei 115 hört er auf, sich zu bewegen. Wenn die Werte tiefer oder höher als die Minima/Maxima liegen, brummt das Servo nicht, es tut einfach nichts, es stösst auch nicht an die Endanschläge, dafür fehlen noch ca. 0.5cm...
Dies ist ein grosses Problem, ich krieg ihn nicht an die Endanschläge, er hört bei Über-/Unterschreiten von gewissen Werten einfach auf, etwas zu tun, er fährt nicht bis an die Anschläge!
Das Servo beginnt auch erst nach ca. 4sec. nach Strom- und Signalanlegen zu arbeiten.
Dann noch ein Problem:
Wenn ich mittendrin den Strom vom Servo nehme, und dann wieder anklemme, dann fährt er schon bei ca. 100 an den einen Endanschlag und steht dafür bei 33 mittendrin... Es gibt also eine Verschiebung der Ausschläge. Erst wenn ich das Servo ganz "resette", also Spannung und Signal wegnehme, funktioniert es wieder wie vorhin...

Kennt jemand diese Probleme bei Digital-Servos? Ich möchte das Ding anständig zum Laufen bringen, sonst hab ich ein Problem...
Wie kann ich diese Probleme beheben?

(PS: zu den Zahlen (33,115 etc.), das sind die Pulslängen im Bascom.
Dort gebe ich ein: Servo(1)=115, dann generiert Bascom die Pulse und lässt diese raus ans Servo.)

Gibt es irgendwo ein DB zum Servo? (In Bezug zu den Pulslängen, die er braucht)
Wieso hab ich so strube Werte?? (33-115) Woher weiss der Empfänger, wo das Servo normalerweise eingesteckt wird, welche Pulslängen er fahren muss?
" Das Nötige ist einfach und das Komplizierte ist unnötig" ----- Michail Kalaschnikow

2

Sonntag, 26. Februar 2006, 15:34

RE: Servo mit Mega8 ansteuern==> es spinnt

Hallo Mario,

guck mal da -->http://www.rclineforum.de/forum/thread.p…did=106732&sid=

Die Servo()-Routine ist nicht die genaueste. Vielleicht kommt der Servo mit den Impulszeiten nicht klar.
Probier mal die Selbstgeschriebenen Routinen von uns (ziemlich am Ende des Threads.
Vielleicht hilfts ja.

Gruß.
Rainer
Dieser Beitrag wurde schon 6322 mal editiert, zum letzten mal von Gwydion am 20.02.2007 00:00.

Ecofan

RCLine User

  • »Ecofan« ist der Autor dieses Themas

Wohnort: Schweiz, Zürich

Beruf: Gymischüler

  • Nachricht senden

3

Sonntag, 26. Februar 2006, 15:40

Werd ich gleich machen!

Habs mal schnell an einen Empfänger gehängt! Da funktionier alles perfekt. Er benötigt auch keine 4sec Anlaufzeit, er ischt grad bereit! Ich probier das da mal zu Oszilloskopieren.
Edit: Mit dem Empfänger schaut das Signal gut aus, ich kanns nur net ausmessen.... Wenn ich die Time-Darstellung feiner stelle (Pulse breiter), dann hab ich grad noch nen halben Puls am einen Bildschirmrand des Oszis... Grrrr... Kann ich das so biegen, dass der Puls in der Mitte des Schirms ist?

Huch, in Bascom sehen die Pulse ja verschissen aus... Schräge Flanken....
Shit...
Hmmm, aber irgendwie liegts am (digital)-Servo...
Bei einem analogen sehen auch die Bascom-Pulse super aus! Haben die Digitalen andere Eingänge?

Zu eurem Code:
Den kann ich nicht verwenden, ich muss den Bascom-Befehl nehmen... (Platzgründe)

Ah, ich hab noch was: Es könnte auch der Mega8 sein...
Denn: Wenn ich das Servo an den Empfänger hänge: schöne, rechtwinklige Pulse
Wenn ich das Servo an den Mega hänge: schräge Pulse
Wenn ich ein Analoges an den Mega hänge: rechtwinklige Pulse

Es ist also nicht das Servo, sondern der Mega... Wieso? Wieso beim Empfänger keine schrägen Pulse?
Soll ich das Signal mal durch einen kleinen Fet drücken?

Herzlichen Gruss
Mario
" Das Nötige ist einfach und das Komplizierte ist unnötig" ----- Michail Kalaschnikow

Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »Ecofan« (26. Februar 2006, 16:17)


4

Sonntag, 26. Februar 2006, 16:36

Da bin ich überfragt .. da reichen meine Elektronikkenntnisse nicht.
Kann mir aber nicht vorstellen, das eine geringe Ungenauigkeit in der Flankensteilheit den Servo aus den Tritt bringt. Wir hatten schon mal ein ähnliches Problem .. da war es die Stromversorgung. Der Mega lief, aber sobald man was angeschlossen hat, ging nix mehr. Digiservos brauchen vll. mehr Strom .. keine Ahnung.
Weiß natürlich jetzt nicht, wie Du Dein Testequippment versorgst. Vielleicht mal ein Akkupack dranhängen (wenn Du das nicht eh schon so gemacht hast).

Gruß.
Rainer

P.s.: Zum testen kannst Du ja trotzdem die Routinen von uns hernehmen .. nur um zu sehen obs daran liegt.
Dieser Beitrag wurde schon 6322 mal editiert, zum letzten mal von Gwydion am 20.02.2007 00:00.

Dicker

RCLine User

Wohnort: Hamburch

Beruf: Ezialist

  • Nachricht senden

5

Sonntag, 26. Februar 2006, 16:52

Der Port am Atmega steht aber schon auf Ausgang, oder?

Gruss Julian
FollowMe

I :heart:Alex

Ecofan

RCLine User

  • »Ecofan« ist der Autor dieses Themas

Wohnort: Schweiz, Zürich

Beruf: Gymischüler

  • Nachricht senden

6

Sonntag, 26. Februar 2006, 18:05

Der Port etc. funktioniert, ich kann direkt ein Analoges dranhängen und die Mühle läuft...
Die Versorgung reicht auch locker aus, um die Servos zum Laufen zu bringen (1.5A)
Ich bügel mal schnell euer Proggi drauf und guck mir das Signal an, mal sehen...
Hmm, euer Code ist aber ganz schön kompliziert... Und ich hab nur 6MHz als Quarz...
Wo muss ich überall was ändern, wenn ich nur 1 Servo laufenlassen möchte? Und das mit 6MHz Systemtakt
Das Poti dreht das Servo, oder?

Edit:
Zu den Begrenzungen: An einem Empfänger kann ich das Servo voll in die Begrenzung treiben, sodass er brummt...
Bei Bascom hört das Ding unter 33 und über 115 einfach auf, etwas zu tun, ohne in der Begrenzung zu stehen.
Es muss also an den nicht rechtwinkligen Pulsen liegen.
Weiss jemand, wie die Signalerzeugung vom Emfpäger aussieht? Geht das über einen Fet oder macht das auch der Chip direkt?? Bei einem Empfänger sind die Signale nämlich rechtwinklig....
" Das Nötige ist einfach und das Komplizierte ist unnötig" ----- Michail Kalaschnikow

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Ecofan« (26. Februar 2006, 18:43)


7

Sonntag, 26. Februar 2006, 18:47

Der Code ist nicht kompliziert. Sieht nur so aus, da er ja Universell sein soll.
Bei 1 Servo kann man die Hälfte rausschmeißen.
Wieso nimmst Du nicht den internen Oszilator des Mega8 ? Der hat 8 MHz.
Gruß.
Rainer
Dieser Beitrag wurde schon 6322 mal editiert, zum letzten mal von Gwydion am 20.02.2007 00:00.

Ecofan

RCLine User

  • »Ecofan« ist der Autor dieses Themas

Wohnort: Schweiz, Zürich

Beruf: Gymischüler

  • Nachricht senden

8

Sonntag, 26. Februar 2006, 18:52

Hier mal ein Bild vom Puls.
Was könnte dafür verantwortlich sein? Wieso geht der Pin nicht sofort auf 5V? Mit anderen Servos klappt das und am Empfänger macht dieses Servo schöne Pulse...
Woho, beim Digitalen macht Bascom zwischen den Pulsen 35ms Pause. Der Empfänger macht genau 20ms Pause...
Bei einem analogen Servo macht Bascom auch 35ms Pause zwischen den Pulsen, dieses funktioniert aber trotzdem...
Herrgot nochmals, wieso zum Geier macht Bascom 35ms anstatt 20ms Pause??
Reload hab ich auf 10
»Ecofan« hat folgendes Bild angehängt:
  • Servopuls Kopie.jpg
" Das Nötige ist einfach und das Komplizierte ist unnötig" ----- Michail Kalaschnikow

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Ecofan« (26. Februar 2006, 19:16)


Dicker

RCLine User

Wohnort: Hamburch

Beruf: Ezialist

  • Nachricht senden

9

Sonntag, 26. Februar 2006, 19:31

Hast du die direction des Pins auf OUT gestellt?
Das was du da zeigst sieht genau wie ein Pullup an nem Eingangsfet aus.

Gruss Julian
FollowMe

I :heart:Alex

Ecofan

RCLine User

  • »Ecofan« ist der Autor dieses Themas

Wohnort: Schweiz, Zürich

Beruf: Gymischüler

  • Nachricht senden

10

Sonntag, 26. Februar 2006, 19:38

Jaaa, es ist ein Out-Pin, sonst würd ja gar nix raus...
In meinem Code kommt vor:
ddrb.5=1
Und bei anderen Servos siehts haargenau rechtwinklig aus...
" Das Nötige ist einfach und das Komplizierte ist unnötig" ----- Michail Kalaschnikow

Dicker

RCLine User

Wohnort: Hamburch

Beruf: Ezialist

  • Nachricht senden

11

Sonntag, 26. Februar 2006, 19:56

Da stimmt was elektrisch nicht. Was genau musst du durchmessen.
Wenn du den Pin auf Ausgang stehen hast dann darf das nicht so aussehen.
Vielleicht ein Kurzer in deiner schaltung...

Gruss Julian
FollowMe

I :heart:Alex

Ecofan

RCLine User

  • »Ecofan« ist der Autor dieses Themas

Wohnort: Schweiz, Zürich

Beruf: Gymischüler

  • Nachricht senden

12

Sonntag, 26. Februar 2006, 20:05

Es gibt keine Schaltung.
Ein AVR auf dem Steckbrett, alles richtig abgesichert und abgeschirmt, und an einem Pin hängt einfach das Servo. Mehr nicht, kein Kurzer oder so.
Wenn ich ein anderes Servo dranhaue, dann hab ich schöne Pulse. Es muss also etwas mit dem Digitalen zu tun haben, dass nicht grad sofort 5V da dran sind...
Das Oszi häng ich gegen GND an den Pin, wo das Servo dran ist.
" Das Nötige ist einfach und das Komplizierte ist unnötig" ----- Michail Kalaschnikow

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Ecofan« (26. Februar 2006, 20:06)


Bruchflieger

RCLine User

Wohnort: 18km südl. der Lutherstadt Wittenberg

Beruf: Energieelektroniker / HWK-Meister E-technik

  • Nachricht senden

13

Sonntag, 26. Februar 2006, 21:17

Wenn du das Proggi von mir nimmst, brauchst du nur über den Deklarationen der Variablen in der Zeile Const Servos=6 die 6 in eine 1 ändern, dann läuft das Prog mit nur 1 Servo. Poti an ADC0 und Servo an Portb.0

Wenn du noch ein paar Minuten wartest, werd ich da nochmal etwas editieren, um es etwas zu vereinfachen - aber nur ein bischen...
Grüße Dani.

Ecofan

RCLine User

  • »Ecofan« ist der Autor dieses Themas

Wohnort: Schweiz, Zürich

Beruf: Gymischüler

  • Nachricht senden

14

Sonntag, 26. Februar 2006, 21:19

Uuh, den Takt muss ich noch berechnen, die Voreinstellung vom Timer...
Ich renne mit 6 MHz... Aber ich blick da bei dir net so ganz durch... Du pulst die Servos ja irgendwie nacheinander... ?
Aber ich denke, der Puls wird immer noch verwurschtelt sein.
" Das Nötige ist einfach und das Komplizierte ist unnötig" ----- Michail Kalaschnikow

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Ecofan« (26. Februar 2006, 21:21)


15

Sonntag, 26. Februar 2006, 21:52

Zitat

Original von Ecofan
...
Du pulst die Servos ja irgendwie nacheinander... ?
...


Das macht der Empfänger genauso.

Und der Einfachheit halber, stell den AVR doch mal auf den (entsprechenden) internen Takt, dann kannst Du die Programme aus dem Einsteigerkurs direkt verwenden...

Viele Grüße

Torsten
[SIZE=4]www.zuendapp.net - die grösste Zündapp-Community im Internet! :ok:[/SIZE]

16

Sonntag, 26. Februar 2006, 22:05

Hallo Mario,

daß Bascom es nicht so genau nimmt bei ihren Servo-Routinen habe ich Dir ja schon gesagt ... aber das erklärt eigentlich NICHT Deine komische Flanke im Puls. Sieht ja fast so aus, als müsste der Port erst "Anlauf" nehmen um auf die 5 V zu kommen ???
Mal einen anderen Port probiert ?

Die ganzen Programmänderungen an den Sourcen vpm Einsteigerkurs kann man vermeiden, wenn Du einfach den internen Takt auf 8 MHz stellst ... geht bedeutend schneller. Ich auch schon überlegt meinen Source dahingegen zu ändern, aber das Fusebit zu ändern dauert nicht mal 1 Sekunde.

Gruß.
Rainer
Dieser Beitrag wurde schon 6322 mal editiert, zum letzten mal von Gwydion am 20.02.2007 00:00.

Bruchflieger

RCLine User

Wohnort: 18km südl. der Lutherstadt Wittenberg

Beruf: Energieelektroniker / HWK-Meister E-technik

  • Nachricht senden

17

Sonntag, 26. Februar 2006, 22:06

Das macht dein Empfänger auch - das Prog scheint nur etwas kompliziert, weil es so gestaltet ist, daß durch eingabe bei Const Servos = x das Programm für 1 bis 6 Servos gestalten kann - mehr muß nicht ändern.

Taktrate könnte ein kleines Problem werden, aber ist auch ganz simpel. Bei genau 6MHz müßtest die Stellen raussuchen, wo der Timer 0 gestartet wird - insgesamt 3* im Programm:
1. kurz vor Beginn der Hauptschleife: Timer0 = S(1) + 19
2. +3. in der ISR steht kurz vorm Ende 2* kurz hintereinander Timer0 = S(aktservo) + 19
an diesen 3 Stellen müßtest du die +19 in eine +51 ändern, dadurch ist die Mitte Poti auch wieder Mitte Servo, während die Impulse von 0,82 bis 2,19 ms reichen. - Also nicht bis zum Endausschlag des Potis drehen !

Was eventuell noch geändert werden sollte wäre die Zeile:
Fixpause = 237 * Servos -------->>>> Fixpause = 205 * Servos
dann sollte die Widerholrate bei fast genau 50 Hz liegen (20ms)


Für 8MHz sind folgende Werte einzustellen:
Timerstart mit Timer0 = S(1) + 4 oder Timer0 = S(aktservo) + 4
Fixpause = 252 * Servos

Ach Ja fast vergessen:
$crystal = 7372800 --->>> müßte auch geändert werden entsprechend der eigenen Taktrate ;)
Grüße Dani.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Bruchflieger« (26. Februar 2006, 22:12)


18

Sonntag, 26. Februar 2006, 22:08

Hallo Mario,

bei Deinem Oszillogramm: was für eine Y-Ablenkung hast Du eingestellt?
Sind das 2V/cm oder 1V/cm?
Wenn es 2V/cm sind, würde ich mir keine größeren Gedanken über die "Dachschräge" des Impulses machen - solange der "high"-Pegel wie hier über 4V liegt, ist zumindest elektronisch Alles in Ordnung.
Wenn's aber nur 1V/cm sind, liegt der Pegel ja nur bei 2,5V - dann ist definitiv 'was faul...

Grüße,

Thomas

19

Sonntag, 26. Februar 2006, 22:37

Was mich stutzig macht ist, daß er bei Analogservos einen einwandfreien Puls kriegt. Kann mir das nur als Problem des Digi-Servos vorstellen. Weiß ja nicht wie die am Impulseingang beschalten sind (oder speziell der von Conrad).
Wobei DANN aber die Frage im Raum steht, warum am Empfänger der Puls wieder OK ist, wenn der Digiservo dranhängt.

Bin etwas ratlos .... vielleicht solltest Du mal ein Bild von Deinem Versuchsaufbau machen .. verspreche mir zwar nicht übermäßig viel davon, aber vielleicht erkennt man was.
Noch eine Frage ... mit wieviel Volt beschickst Du den Spannungsregler vor dem Testboard ? Oder gehst Du direkt mit 5V aus dem Labornetzteil auf den Mega8 ?

Gruß.
Rainer
Dieser Beitrag wurde schon 6322 mal editiert, zum letzten mal von Gwydion am 20.02.2007 00:00.

Dicker

RCLine User

Wohnort: Hamburch

Beruf: Ezialist

  • Nachricht senden

20

Sonntag, 26. Februar 2006, 23:41

Hallo :)

1. Schaltplan
2. Spannungsversorgung
3. Quellcode

Sorry, Aber ich bin mir immer noch Sicher das der Port nicht als Ausgang sondern Mit Pullup rennt. Ob das ein kaputter IC ist (waer der erste von dem ich erfahre) oder ein Softwarefehler weis ich nicht, aber dafuer spricht alles. Pulldown im Servo, Pullup im Atmel. Dann sieht das genauso aus wie auf dem Oszibild.

Gruss Julian
FollowMe

I :heart:Alex

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Dicker« (26. Februar 2006, 23:42)