- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 3542

Thema: Willas Shrediquette Tricopter / Quadrocopter / Hexacopter

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #11
    Erfahrener Benutzer Roboter-Spezialist Avatar von jevermeister
    Registriert seit
    20.01.2011
    Ort
    Kiel
    Beiträge
    393
    Hi,

    Das mit den Signalverdoppelungen sieht verdächtig aus, und ich würde das nicht sofort aufs Oszi schieben. Vielleicht lohtn es sich den Code nochmal genauer anzuschauen. In der aktuellen Firmware wird das Servosignal mit dem Empfängersignal "synchronisiert".

    Im Empfänger IRQ steht:
    If Channel = 5 Then 'when all relevant channels were read, enable the servo interrupt
    Enable Timer1
    End If

    im servo IRQ steht:
    If Portd.6 = 0 Then
    Timer1 = Servopwm
    Portd.6 = 1
    Else
    Portd.6 = 0
    Disable Timer1
    Timer1 = 65400
    End If

    Du könntest also mal die disable/enable Zeilen rausnehmen, und im ServoIRQ den Wert für Timer1 auf 31535 setzen (=17ms pause). Vielleicht löst das dein problem.
    Außerdem könntest du mal versuchen das Servo abzuschrauben. Dein motor hat ne ziemlich hohe masse, dadurch könnte sich die Regelung innerhalb des Servos aufschwingen. Das ist bei günstigeren Servos relativ schnell mal der Fall.

    Danke auch für die Glückwünsche!
    Ich habe das gleiche Problem bei einem Nackten servo der auf dem Tisch steht - der zappelt auch die ganze Zeit.

    Ich habe auch vermutet das irgendwas in der Software schief läuft, aber ich kann mir nicht erklären warum das auf einmal auffällt, ich hatte zwar das Failsave und die Signalglättung auf 6 Kanäle geändert aber auch ohne diese Sache geht es nicht, zumal das ja mit meiner 40MHz funke auch passiert. Das schließt ja aus, dass es am Code liegt, ich habe es schiesslich auch mit der Original Firmware geprüft.

    Der servo bewegt sich ja auch sehr hackelig, lediglich wenn er an die Grenzen fährt und die Min/Max Abfrage greift ist er ruhig, oder wenn du ihm ein konstantes Signal (wie zB im Idle Mode) gibst. Sobald er (auch ohne Motoren) in Hover oder Acro kommt zuckt er...

    Ich wollte heute mal eine Rampe zum rauf und runter fahren Probieren, wenn er da immer noch zittert dann ist das mal ne Aussage.
    Ausserdem werde ich noch einmal dein Servoprogramm aus dem RN Wissen ohne Funke probieren.

    Aber ich werde trotzdem eine neue Platine Löten und mir einen neuen Arduino bestellen.

    Ich vermute ganz stark einen Hardwaredefekt an der Platine oder dem Arduino - alles andere hab ich gewechselt oder das Problem ohne diese Komponenten auch gehabt.

    Und wenn der Mist dann endlich wieder fliegt, dann können wir hier auch wieder über was anderes Reden :-/

    Nils

    EDIT: Ich habe diese Disable Zeile garnicht mehr drin (seltsam). Das sieht bei mir so aus:
    Code:
    Servoirq:                                                   'generate servo PWM pulseIf Servo_nr_by = 0 Then
       If Portd.6 = 0 Then                                      'wenn port low
          Timer1 = Servopwm                                     'dann timer auf entsprechende verzögerung
          Portd.6 = 1                                           'und port anschalten
       Else                                                     'das hier passiert erst bei dem darauf folgenden interrupt
          Portd.6 = 0                                           'dann port wieder ausschalten
          Incr Servo_nr_by                                      'und den nächsten kanal bearbeiten
       End If
    End If
    If Servo_nr_by = 1 Then
       If Portb.2 = 0 Then
          Timer1 = Servo_roll_pwm
          Portb.2 = 1
       Else
          Portb.2 = 0
          Incr Servo_nr_by
       End If
    End If
    If Servo_nr_by = 2 Then
       If Portb.3 = 0 Then
          Timer1 = Servo_nick_pwm
          Portb.3 = 1
       Else
          Portb.3 = 0
          Incr Servo_nr_by
       End If
    End If
    
    
    If Servo_nr_by = 3 Then
      Timer1 = 40000                                            'eine pause von ca. 12ms bis zum nächsten interrupt. Bei guten Servos oder Brushlessreglern kann man hier bis auf 65530 gehen ==> ansteuerfrequenz von ~ 200Hz
      Servo_nr_by = 0
    End If
    Geändert von jevermeister (27.06.2011 um 10:25 Uhr)

Stichworte

Berechtigungen

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

Labornetzteil AliExpress