-
        

Ergebnis 1 bis 10 von 10

Thema: Modellbauservo mit AD-Wandler auswerten?

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.08.2004
    Beiträge
    1.065

    Modellbauservo mit AD-Wandler auswerten?

    Anzeige

    Moin,
    ein Modellbauservo wird ja durch ein PWM Signal mit 50Hz und 1-2ms high-Pegel angesteuert. Ich würde gerne wissen, ob es möglich wäre durch einen Tiefpass ein Analogsignal zu gewinnen, und die Spannung am Kondensator per AD-Wandler einzulesen und daraus die Servoposition zu errechnen.
    ...

  2. #2
    Erfahrener Benutzer Roboter-Spezialist Avatar von Thoralf
    Registriert seit
    16.12.2003
    Ort
    Dresden
    Beiträge
    530
    das PWM-Signal analog zu nutzen um die Servoposition zu bestimmen, würde ich abraten. Um das PWM-Signal in eine Gleichspannung umzuwandeln, muß es tiefpaßgefiltert werden. Eine gute Filterung gibt dir ein Signal aus, daß bei 1ms etwa 0,25V und bei 2ms etwa 0,5V beträgt (Die komplette PWM-Periode umfaßt 20ms und 2 ms sind dann 10% also 0,5V)
    Die nutzbare AD-Auflösung verringert sich dadurch auf nur noch 5% (1ms...2ms entspricht 0,25V...0,5V also ein delta von 0,25V)
    Eine sehr hohe Winkelauflösung ergibt sich dadurch nicht.
    Um die Restwelligkeit des Signals gering zu halten, benötigt der Tiefpaß eine hohe Zeitkonstante (Produkt aus C und R). Grob geschätzt werden ca. 0,5s benötigt (je nach Genauigkeit) bis der Tiefpaß auf eine Änderung des PWM-Verhältnisses reagiert hat, u.U. noch viel länger. Das sollte für eine Regelung viel zu viel sein.

    Der beste Weg wird wohl das Anzapfen des des Potentiometers im Servo sein. Wenn ein Bein dieses Potis auf Masse sitzt, dann läßt sich die Spannung des Schleifers gut weiterverarbeiten. Die Frage waäre nur, in welchem Intervall die sich bewegt.

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892
    Ich hab mal vor Jahren eine Lösung gesehen, bei der die Servoimpulse zuerst über ein 1mS Verzögerungsglied gelaufen sind und dann erst die Werte auf den Tiefpass zur Gleichspannungserzeugung gelaufen sind.

    Als wurd somit nur die Impulslänge über 1mS ausgewertet, was eine wesentlich höhere Auflösung bringt.

    Das Problem mit dem Tiefpaß und den langen Pausenzeiten hat aber auch dieses Konzept.

    Vorschlag:
    Das Servosignal mit einem Microcontroller auswerten und auf seiner PWM ein entsprechendes PWM Signal ausgeben. Dieses PWM Signal tiefpaßfiltern und Du hast deine Gleichspannung.

    Du kannst natürlich die Impulslänge auch direkt vom Controller auswerten lassen und die Werte direkt ausgeben. Das erspart Dir den A/D Wandler.

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    27.02.2004
    Alter
    31
    Beiträge
    269
    Du kannst natürlich die Impulslänge auch direkt vom Controller auswerten lassen und die Werte direkt ausgeben. Das erspart Dir den A/D Wandler.
    eben, wozu filtern und dann mit AD einlesen wenn man das PWM Signal hat

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.08.2004
    Beiträge
    1.065
    Weil das PWM Signal auszuwerten softwaremäßig mehr Aufwand ist (ein Hardware CCP Modul hat nur max. 2-3 Eingänge). Ausserdem muss ansonsten der Pin entweder interruptfähig sein, oder man muss im Worst-Case 18ms auf ein Signal warten um die länge auszuwerten. Ich möchte die Servopositionen allerdings loggen, und wenn ich alle 20ms die Servos auslese, und nur damit beschäftigt bin, schaffe ich es nicht die anderen messungen mit geringeren intervallen abzufrühstücken.
    Ich würde gerne 4-5 Servos erfassen.
    ...

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892
    Ich würde gerne 4-5 Servos erfassen
    ICP + Int 0 + Int 1 + Int 2 + Ana. Comp wären 5 Kanäle.
    Ein Timer reicht als Zählerquelle.
    Pin Change find ich immer ein wenig Suboptimal.
    Wenn Du die Interrupts nicht anderweitig brauchst wär das eine Lösung.
    Eine weitere Lösung wär das Servosignal vor dem Servoencoder anzuzapfen.
    Manche Empfänger haben diese Möglichkeit auf dem Batterieanschluß mit drauf. Dann bräuchtest Du nur einen Interrupt Kanal.

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.08.2004
    Beiträge
    1.065
    mh.. also ich habe 4 Interruptports zur verfügung, die müsste ich softwaremäßig zählen, ausserdem 4 interrupt on change. Was mach ich denn dann mit den 3 CCP Modulen für PWM, Count und Compare? Auch wegen dem Pinout würde ich die Interruptquellen bevorzugen, bin mir aber unsicher, wofür ich die CCPs noch sinnvoll einsetzten sollte. Für Servos ist die Frequenz einfach zu hoch.
    ...

  8. #8
    Erfahrener Benutzer Roboter-Spezialist Avatar von Thoralf
    Registriert seit
    16.12.2003
    Ort
    Dresden
    Beiträge
    530
    und was hältst du vom anzapfen der Servopotis, wie ich es schon vorgeschlagen habe?
    ADU-Inputs hat man ja meist mehrere.
    Zur Not kann man ja auch, wenn man die Servopotis nicht nutzen kann oder will, ein Poti über Zahnräder ankoppeln und damit die Servostellung messen

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.08.2004
    Beiträge
    1.065
    ich denke ich werde es doch über die Pulsbreite machen, dabei müssen die Servos nicht modifiziert werden und es liefert genaue werte. hab nen anderen Controller gewählt, der mir 5 CCP Module liefert
    ...

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.09.2005
    Beiträge
    225
    Wenn du einen Timer nicht brauchst und den extern triggern kannst, kann man sich damit auch noch einen weiteren ext. INT schaffen.

    Gruß Philipp

Berechtigungen

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