Hi,
@Yak: Der Servo ist direkt mit 10cm Leitung an der Platine.
So kleines Update:
Sämtliche Widerstände scheinen in Ordnung zu sein.
@Willa: Wozu sind denn die beiden Widerstände an A0:33k und 51k R3 und R4? Die konnte ich nicht auf der Platine Messen, da die Parallel zu den Elkos sind.
Ich habe die Platine jetz direkt an einem Akku, ohne ESC und IMU und I²C: Geaqckel sit noch da.
Ich habe mal die Widerstände zwischen 12V und Masse gemessen, die scheinen überall groß genug zu sein.
Dann habe ich mit einem Oszilloskop den 12V PEgel gemessen und der war in Ordnung.
Danah habe ich mich dem servosignal gewidmet:
Der Wert von servopwm schwankt zwischen 62415 und 62383 das sind 32 (2000 ist die ganze range)
das ergibt sich offenbar aus der Schwankung des Empfängers um +/-1.
Mit dem Oszilloskop ergibt sich am Servoausgang (keine ESC, kein IMU, keine Motoren, nur rx und Servo):
Diese Verdopplungen sind doch seltsam...
Ausserdem zeiht die Triguide im Normalbetrieb im idle 3 bis 6mA. Scheint auch ok.. (oder Willa?)
Der miniatur Quadrocopter: www.nanoquad.de
Hi Nils,
so sieht bei mir das Servosignal aus.
Servo steht dabei in der Mitte.
Wenn ich an der Funke den Stick bewege verändert sich der "Abstand" (Frequenz) der Impulse.
Ich habe die TriGuIDE _mini_V2 da ist die Verbindung zum Servo ein 3,3 K Wiederstand vorgesehen und geht dann an Pin 6Arduino.
Ist das bei dir auch so? Im Zweifel ein Widerstand vorsehen (oder tauschen).
Grüße Sven
@Jevermeister
Versuche mal bei Bascom das Häckchen bei "optimize code" raus zu machen. Ich hatte damit mal Probleme das Interuppts nicht immer zuverlässig ausgelöst wurden. Das würde deine Verdoppelung erklären.
Mfg
Matthias![]()
Hi,
Danke für die Tipps
Der Haken war schon immer raus, daran liegt es also nicht.@Jevermeister
Versuche mal bei Bascom das Häckchen bei "optimize code" raus zu machen. Ich hatte damit mal Probleme das Interuppts nicht immer zuverlässig ausgelöst wurden. Das würde deine Verdoppelung erklären.
Ich habe in einem anderen Thread gesagt bekommen, dass das timing des oscilloscopes nicht stimmt un daher diese verdoppelungen kommen.
Ich habe jetzt diverse bauteile gewechselt aber der Servo zuckt immernoch obwohl er still stehen sollte. Heute nachmittag habe ich einen kurzen Testflug gemacht, es sit schond eutlich ruhiger, da ich nun neue motoren und so habe, aber man merkt definitiv das zittern im kamerabild. Das ist also was, was vorher nicht da war...
Ich werde heute abend eine neue triguide fertig machen, ich hätte nur gerne gewusst was da kaputt war...
@yak: ich hab die gleiche triguide wie du, und der widerstand ist ok
Kann sein das ich es überlesen haben aber hast du schon mal versucht die Original FW von Willa wieder auszuspielen? Nur um zu Testen ob es wirklich an der Hardware liegt.
Mfg
Matthias
Sorry habs eben gelesen, Willas FW haste schonmal aufgespielt
Geändert von Picojetflyer (26.06.2011 um 20:03 Uhr) Grund: Hab nochmal gründlich nachgelesen.
Hi Nils,
dann drücke ich dir die Daumen, dass mit einer neuen Platine (triguide) wieder alles ok ist.
Grüße Sven
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!![]()
Viele Grüße, William
-> http://william.thielicke.org/
Hi,
Ich habe das gleiche Problem bei einem Nackten servo der auf dem Tisch steht - der zappelt auch die ganze Zeit.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 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 11:25 Uhr)
Lesezeichen