- 3D-Druck Einstieg und Tipps         
Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 33

Thema: Digital Servo HS-5645MG läuft nicht mit Pulseout

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    Bad Bramstedt
    Alter
    45
    Beiträge
    1.369

    Digital Servo HS-5645MG läuft nicht mit Pulseout

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo zusammen,

    was soll ich sagen: Nun sitze ich hier und versuche schon seit Stunden zu ergründen, warum der digitale Hitec Servo HS-5645MG nicht mit meinem Bascom Program funktioniert.
    Ich habe einen 2,4GHz Funkempfänger am ATmega8 mit 4Mhz. Ich habe schon analoge Servos (RS-2;HS-55;HS-645MG) geprüft, die funktionieren ausnahmslos an dem Pin.

    Am Enpfanger direkt angeschlossen, läuft der digital Servo - obwohl bei schnellem wechsel dort auch die Spannung so stark einbricht das er "dieses ich weiß nicht wo ich hin soll" Verhalten zeigt und langsam Richtung neutral tickert, bis er sich irgendwann irgendwie wieder fängt.

    Im mega8 arbeite ich mit dem Pulseout Befehl. Der RC-Impuls wird hochskaliert damit der Ausgang für den Servo brauchbare Pulse liefert. Das ist zwar erstmal ungenau, aber zum testen ausreichend.
    Aus verschieden Beiträgen habe ich schon herausgelesen das ein Widerstand in der Pulsleitung nicht schadet, da habe ich nun 2x 1k in Reihe verbaut. Das ganze ist auf Steckbrett aufgebaut.

    Die Spannung kommt momentan aus einem LiPo 3s 2000mAh, über einen Spannnungwandler 78S05(2A). Auch ohne Stützkondensatoren laufen die analogen Servos (einzeln) wunderbar, nur der Digitale macht keinen Mucks, Kraft steht aber an.
    µC ist extra aus 9V Block über 7805(1A) versorgt.

    Ich habe zum prüfen leider nur ein Multimeter.

    Bitte, wer weiß rat?

    Code:
    $regfile = "m8adef.dat"
    $crystal = 4000000
    
    '$sim
    
    '$baud = 19200
    
    
    $hwstack = 40
    $swstack = 16
    $framesize = 32
    
     Ddrb.0 = 1                                                 'system run
    Portb.0 = 0
    
    
    Portb.0 = 1
    
    Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.4 , Db6 = Portd.3 , Db7 = Portd.2 , E = Portd.6 , Rs = Portd.7
    Waitms 100
    Config Lcd = 20 * 4
    Waitms 10
    
    Dim Rc_1 As Byte
    Dim F As Single
    Dim F1 As Word
    
    Cls
    Cursor Off
    
    Do
    
       Pulsein Rc_1 , Pinc , 1 , 1
    
       'Upperline
       Locate 1 , 1
       Lcd "Servo1 = " ; Rc_1
    
          F = Rc_1 * 11.511
          F1 = F
    
       Locate 2 , 1
       Lcd "Servo1 = " ; F1
    
       Pulseout Portb , 7 , F1
       Waitms 10
    
    Loop
    
    End
    Geändert von HeXPloreR (20.10.2012 um 23:00 Uhr)

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    Bad Bramstedt
    Alter
    45
    Beiträge
    1.369
    Das Modellbauforum bringt leider auch keine befriedigende Auskunft dazu:
    http://www.rcforum.de/viewtopic.php?...12896&start=15

    Ich habe schon versucht die Waitms 10 kleiner zu machen. Dachte dabei an 4ms damit 250Hz erzeugt werden-hatte das nun irgendwo gelesen, aber auch damit tut sich nichts

    Bricht die Spannung eventuell am Spannungswandler trotz (kleiner 100µF 100nF) Stützkondensatoren immer noch zu stark ein, es müßte dann doch wenigsten irgendwas kurz zucken am servo, oder?
    Wie könnte ich meine 11,1V auf maximal 7V runterziehen, ohne das es zu Spannungseinbrüchen kommt - der Vorteil des LiPo's an der Stelle also nicht verloren geht?
    Die analogen Servos fahren auch bei 4ms (und sogar bei 500µs = 2000Hz) wait die Positionen an...

    Niemand eine Idee, wie eine Bewegung aus dem Servo rauskitzel? Bild hier  
    Geändert von HeXPloreR (21.10.2012 um 10:06 Uhr)

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Wenn der Servomotor als Spitzenstrom ein paar Ampere zieht, dann sind 100uF gar nichts. Der Servo ist beschrieben mit minimaler Betriebsspannung von 4,8V, ein Spannungsregler mit 5V macht da schlapp. Würd' mal Elkos mit >= 4700uF probieren. Kann aber sein, dass der Regler diese Größe nicht mag, evtl. 'ne Diode zwischen Reglerausgang und Stützelko. Auch würd' ich die Spannung des 5V Reglers höher ziehen, das geht mit einem Widerstand oder einer Diode in Leitrichtung im Fußpunkt (GND) des Reglers. Bei 'ner Diode vor dem Stützelko verlierst Du um die 0,7V, da müsste Vout sowieso etwas höher sein. Leistungsdioden sind im Übrigen eine primitive Möglichkeit, die Spannung zu reduzieren unter Beibehaltung des möglichen Stroms. 7 Dioden ergeben dann eine Absenkung der Spannung um 4,9V.

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Hallo HeXPloreR,
    mit den LCD Ausgaben wirst du sicher nicht auf die nötige Frequenz kommen, auf keinen Fall über 100Hz.
    Laufen die analogen Servos mit exakt diesem Programm?

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    Bad Bramstedt
    Alter
    45
    Beiträge
    1.369
    hey,
    danke MagicWSmoke, ich habe leider nur kleine Elkos bis 100µF zur Hand, 5x 1000µF hätte ich zum ausschlachten in einem PCB-Board...
    Die Spannung höher ziehen - damit kenne ich mich nicht wirklich aus...und wahrscheinlcih merke ich es zu spät wenn sich mein Spannungsregler aufraucht.

    Habe sonst noch Dioden (BY 500/400 von Reichelt). die hatte ich mal falsch bestellt...könnte ich davon 7x in Reihe schalten und die Spannung auf ca 6,2 ziehen? Oder müssten es etwas geeignetere sein?
    Auch wenn es unsauber und primitiv wäre, viellicht kann ich damit ja dann das Problem eingrenzen.

    @for_ro: ja genau mit diesem Programm. Leider kann ich nicht wirklich sagen was an PWM hinten raus kommt.
    Aber ich könnte ja den teil auch nochmal rausnehmen, der war ja nur zum schauen ob der Code soweit stimmt und die Umrechnung des Eingangssignales. Meinst Du das könnte helfen?

    Vielen Dank schonmal

    EDIT:
    Code:
    $regfile = "m8adef.dat"
    $crystal = 4000000
    
    '$sim
    '$baud = 19200
    
    $hwstack = 40
    $swstack = 16
    $framesize = 32
    
     Ddrb.0 = 1
    Portb.0 = 0
    
    Portb.0 = 1                                                 'system run
    '(
    Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.4 , Db6 = Portd.3 , Db7 = Portd.2 , E = Portd.6 , Rs = Portd.7
    Waitms 100
    Config Lcd = 20 * 4
    Waitms 10
    ')
    Dim Rc_1 As Byte
    Dim F As Single
    Dim F1 As Word
    
    'Cls
    'Cursor Off
    
    Do
    
       Pulsein Rc_1 , Pinc , 1 , 1
    
    
       'Locate 1 , 1
       'Lcd "Servo1 = " ; Rc_1
    
          F = Rc_1 * 11.511
          F1 = F
    
       'Locate 2 , 1
       'Lcd "Servo1 = " ; F1
    
    
       Pulseout Portb , 7 , F1
       Waitms 4
    
    Loop
    
    End
    Auch damit gehen die analogen servos....aber der digitale bleibt "stumm"

    Ich baue jetzt die Dioden auf.
    Geändert von HeXPloreR (21.10.2012 um 10:42 Uhr)

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Hallo,
    welches Signal genau erwartest Du an Pinc.1 ? zB Frequenz 50Hz mit high Pulsen von 1,5ms?
    und was für ein Signal soll daraus werden? Hab leider keine Erfahrung mit Fernsteuerungen und verstehe das Skalieren nicht.

    Falls die Stromanschlüsse des Servos auf das Steckbrett gesteckt sind, runter damit und für eine stabile, für hohe Ströme geeignete Verbindung sorgen.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Die typischen Festspannungsregler haben 3 Beine, Vin, Gnd, Vout. Man kann diese Regler in der Spannung höher ziehen, indem man Gnd über einen Widerstand oder Diode mit Schaltungsground verbindet. Dabei passiert (bei geeigneter Bauteilwahl) das Gegenteil von "Abrauchen", denn je höher die geregelte Ausgangsspannung, desto weniger Spannung und über den Strom dann auch die Leistung muss der Regler vernichten.
    Die BY500 würden gehen, löt' einfach mal ein paar zusammen, und miss die Spannung dahinter.

    Mach mindestens mal das Pulsein aus Deinem Programm raus, denn das kann je nach Eintreffen des Pulses zusätzliche Wartezeit erzeugen.
    Im Moment (ohne Pulsein) beträgt die Wiederholrate lediglich 9,6Hz.

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    Bad Bramstedt
    Alter
    45
    Beiträge
    1.369
    Am PinC.1 steht das PWM Signal aus dem 2,4GHz Empfänger an. Das wurde im Display mit neutral = 139 angezeigt. Das Problem dabei ist das ich nicht weiß, welche freuquenz dort wirklich raus kommt. Aber ich vermute das es 50Hz zu 1,5ms Pulse sind. Das Skalieren dachte ich mir so das der Servo mit der "139" direkt als Puls bei 4MHz nichts anfangen kann bzw dann versucht über Mindestanschlag noch weiter runter zu fahren.

    Die Neutralstellung des (analogen) Servos liegt bei 1600 (139 * 11,511 =~ 1600).

    Ja, Verbindungen sind noch gesteckt.

    EDIT:
    Code:
    $regfile = "m8adef.dat"
    $crystal = 4000000
    
    '$sim
    '$baud = 19200
    
    $hwstack = 40
    $swstack = 16
    $framesize = 32
    
     Ddrb.0 = 1
    Portb.0 = 0
    
    Portb.0 = 1                                                 'system run
    '(
    Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.4 , Db6 = Portd.3 , Db7 = Portd.2 , E = Portd.6 , Rs = Portd.7
    Waitms 100
    Config Lcd = 20 * 4
    Waitms 10
    ')
    Dim Rc_1 As Byte
    Dim F As Single
    Dim F1 As Word
    
    'Cls
    'Cursor Off
    
    Do
    '(
       Pulsein Rc_1 , Pinc , 1 , 1
    
    
       'Locate 1 , 1
       'Lcd "Servo1 = " ; Rc_1
    
          F = Rc_1 * 11.511
          F1 = F
    
       'Locate 2 , 1
       'Lcd "Servo1 = " ; F1
    ')
    
       Pulseout Portb , 7 , 1600
       Waitms 4
    
    Loop
    
    End
    Leider bringt das auscoden von Pulsein auch nichts... der bewegt sich einfach nicht auf neutral "1600"
    Geändert von HeXPloreR (21.10.2012 um 11:05 Uhr)

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Hi, für Pulseout muß laut Bascom Hilfe der Pin vorher als Output konfiguriert werde. Das kann ich für Portb.7 nicht erkennen?

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Das HS-5645MG haben als Kern einen ATmega8 und der kann auf Spannungseinbrüche zickig reagieren.
    Auch bist Du jetzt bei 177Hz, wähl' mal die Widerholrate mit 50Hz.

Seite 1 von 4 123 ... LetzteLetzte

Ähnliche Themen

  1. Digital Servo von Conrad, VSD 1 Problem
    Von Movie85 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 01.05.2009, 14:20
  2. [läuft+Code] Servotest an ATtiny13 läuft nicht
    Von oberallgeier im Forum Motoren
    Antworten: 4
    Letzter Beitrag: 18.10.2007, 17:49
  3. HITEC Digital-Servo Protokoll HFP-10
    Von ManfredKoehler im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 30.05.2007, 13:07
  4. Antworten: 3
    Letzter Beitrag: 15.08.2005, 17:41
  5. Programmierung digital Servo
    Von sevenofnine im Forum Motoren
    Antworten: 4
    Letzter Beitrag: 24.02.2005, 17:49

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test