Hallo alle,
ich bin gerade bei einer Skalierung am verzweifeln. Die Endwerte passen, aber dazwischen kommt es zu mehr oder minder großen Abweichungen. Hier kurz der Aufbau:
Ein Servo (Modellbau-Servo) wird über ein PWM-Signal angesteuert und gibt ein Feedback-Signal. Dieses Feedback soll bei 0° 2,5V, bei -45° 0V und bei 45° 5V betragen. Diese Werte werden an den Endpunkten jedoch nicht ganz erreicht, der Spannungsbereich ist ca. 0,1V - 4,9V. Um diesen genau zu ermitteln führe ich eine Kalibrierung durch. Der Servo fährt jeweils die minimale und maximale Position an, dann wird mit einer EL3751 (5V = 16#773594) die jeweilige Spannung gemessen und gespeichert. Zur Berechnung der aktuellen Position nutze ich folgende Formel:
Sieht vielleicht einer wo ich einen Fehler mache? Die Variablen für die min und max Werte passen.
ich bin gerade bei einer Skalierung am verzweifeln. Die Endwerte passen, aber dazwischen kommt es zu mehr oder minder großen Abweichungen. Hier kurz der Aufbau:
Ein Servo (Modellbau-Servo) wird über ein PWM-Signal angesteuert und gibt ein Feedback-Signal. Dieses Feedback soll bei 0° 2,5V, bei -45° 0V und bei 45° 5V betragen. Diese Werte werden an den Endpunkten jedoch nicht ganz erreicht, der Spannungsbereich ist ca. 0,1V - 4,9V. Um diesen genau zu ermitteln führe ich eine Kalibrierung durch. Der Servo fährt jeweils die minimale und maximale Position an, dann wird mit einer EL3751 (5V = 16#773594) die jeweilige Spannung gemessen und gespeichert. Zur Berechnung der aktuellen Position nutze ich folgende Formel:
Code:
IFC.ACT.r32_ServoPosition := LREAL_TO_REAL(
(5 / DWORD_TO_LREAL(16#00773594) * HW.st_Input.i32_FeedbackServo - IFC.SET.r32_FeedbackVoltageMinPos) * (CFG.r32_MaxPositionPWM - CFG.r32_MinPositionPWM) (IFC.SET.r32_FeedbackVoltageMaxPos - IFC.SET.r32_FeedbackVoltageMinPos) + CFG.r32_MinPositionPWM
);