-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Position eines Servo auslesen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    12.03.2014
    Beiträge
    8

    Position eines Servo auslesen

    Anzeige

    Hallo,
    Ich benutze ein Arduino-Uno-Board und einen kleinen Servomotor. Von dem würde ich gern die Position auslesen. In der Arduino-Referenz finde ich dazu den Befehl Servo.read().

    Mit Servo.read() erhalte ich die Fehlermeldung:
    _servoversuch_5_140320:31: error: expected primary-expression before '.' token

    die ich aber nicht entschlüsseln kann. In Servo.h und Servo.cpp kommt zwar ein Programmteil mit "read" vor, aber mit den dort vorkommenden Instruktionen (z.B " this->servoIndex != INVALID_SERVO") kann ich nichts anfangen. Was mag das für eine Sprache sein?

    Kann mir jemand schreiben, wie ich mit Arduino die Stellung eines Servo auslesen kann?
    Würde es helfen, ein adafruit-motorshield zu benutzen?

    Vielen Dank schon mal!
    robkpc

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.03.2011
    Beiträge
    1.401
    Zu Arduino und Co kann ich nichts beitragen, aber ein RC-Servo kann man nicht auslesen. Es positioniert dahin, wo es soll. Wann und ob es überhaupt die Position erreicht, ist ohne zusätzlichen Aufwand nicht zu überprüfen.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  3. #3
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Hallo!

    Am einfachsten ist messen der Spannung am Schleifer vom Potentiometer an der Motorwelle, was aber wie schon erwähnt, einen Eingriff ins Innere benötigt.
    Geändert von PICture (22.03.2014 um 08:28 Uhr)
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.554
    Hi robkpc.

    Was meinst Du mit "kleinen Servomotor"?? Ist das so ein Ding wie hier (klick) beschrieben?


    ... In der Arduino-Referenz finde ich dazu den Befehl Servo.read().
    Mit Servo.read() erhalte ich die Fehlermeldung:
    _servoversuch_5_140320:31: error: expected primary-expression before '.' token ...
    Hast Du Dir die Syntax genau angesehen? Soweit ich es sehe (ich habe zu diesem arduino-Basic kein gutes Verhältnis) ist der Ausdruck "Servo." eine Variable vom Typ Servo - sprich: eine Zahl. Das meckert ja der Compiler auch an.

    Übrigens KANN der Dialekt "arduino" tatsächlich "die Servoposition auslesen" - einfach deswegen, weil damit der letzte an den mit "servo." definierten Servo genannte SERVO-STELLWERT gemeint ist. Ob dieser Servo den Wert bereits angefahren hat, ist aber nirgendwo und durch nix gesichert.

    Übliche Modellbauservos können ihren Wert nicht wiedergeben - siehe Vorredner, Modelle mit Ansteuerung z.B. per I²C können das meist.
    Ciao sagt der JoeamBerg

  5. #5
    Benutzer Stammmitglied Avatar von PlasmaTubeI²C
    Registriert seit
    19.03.2013
    Ort
    Nürnberg
    Alter
    21
    Beiträge
    78
    Hi,

    eigentlich wurde schon fast alles dazu gesagt. (War wohl zu langsam )

    Das Element vor dem Punkt ist der Variablenname des Typs Servo, den du beispielsweise mit "Servo servo1" deklarierst.
    Dann muss natürlich servo1.read() aufgerufen werden oder wie du es auch immer nennen magst.

    Das gibt dir allerdings nur die zuletzt gesetzte Position aus, die nicht absolut ist! Man kann nicht rückschließend sagen, ob der Servo diese Position wirklich erreicht hat.

    Die einzigste Möglichkeit ist nur: Servo aufschrauben, Kabel an den Mittelschleifer des Potis anlöten und damit in den analogen Eingang des Mikrocontrollers, dann kann man über den Spannungswert den tatsächlichen Winkel bestimmen.
    Gruß, Stefan. Rechtschreibfehler gefunden? Kannste behalten!

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.554
    ... einzigste Möglichkeit ... aufschrauben ... Mittelschleifer des Potis ... Eingang des Mikrocontrollers ...
    [PINGELIG]Jein.[/PINGELIG]

    Der (Modellbau)Servo wird üblicherweise/hoffentlich an eine separate Versorgung angeschlossen, bei mir gelegentlich auch deutlich über Vcc des Controllers. Bei Bewegung insbes. unter Last zieht der Servo viel Strom, das kann an der Eingangsspannung des Servos diagnostiziert werden. Damit ist der Mittenabgriff zu einem externen Bezug (z.B. die Vcc des Controllers) nicht so konstant, wie die üblicherweise besser als 10-bittige Auflösung des Servopotis ermöglichen würde. Aber als Richtwert würde das gehen und wäre auch aktueller als der vorgegebene Sollwert.
    Ciao sagt der JoeamBerg

  7. #7
    Benutzer Stammmitglied Avatar von PlasmaTubeI²C
    Registriert seit
    19.03.2013
    Ort
    Nürnberg
    Alter
    21
    Beiträge
    78
    Zitat Zitat von oberallgeier Beitrag anzeigen
    Bei Bewegung insbes. unter Last zieht der Servo viel Strom ... Damit ist der Mittenabgriff zu einem externen Bezug (z.B. die Vcc des Controllers) nicht so konstant ...
    Ja, da hast du natürlich Recht, hab ich gar nicht bedacht.

    Aber wenn man dann schon gezwungen ist, beispielsweise ein zweites Poti anzubringen, kann man sich wohl gleich einen Servo mit I2C-Interface aus einem Getriebemotor, Poti/Encoder und nem Attiny basteln. ^^

    Oder: Man könnte auch gleichzeitig noch die Versorgungspannung des Servos messen, die ja je nach Belastung schwankt und nimmt das als Referenzspannung für den Maximalausschlag des internen Potis,
    braucht man halt einen analogen Pin mehr.
    Gruß, Stefan. Rechtschreibfehler gefunden? Kannste behalten!

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von malthy
    Registriert seit
    19.04.2004
    Ort
    Oldenburg
    Beiträge
    1.379
    Zitat Zitat von oberallgeier Beitrag anzeigen
    unter Last zieht der Servo viel Strom, das kann an der Eingangsspannung des Servos diagnostiziert werden. Damit ist der Mittenabgriff zu einem externen Bezug (z.B. die Vcc des Controllers) nicht so konstant, wie die üblicherweise besser als 10-bittige Auflösung des Servopotis ermöglichen würde
    Zumindest bei den digitalen Servos die ich mir bisher angesehen habe war es so, dass die Elektronik einen eigenen kleinen Linearregler hatte, der die äußere Versorgungsspannung des Servos auf 3.3V abgeregelt hat. Diese 3.3V lagen dann auch am Poti, sollten also stabil sein, bzw zumindest nicht den extremen Störungen und Schwankungen durch die Laständerungen am Motor unterworfen sein. Bei den old-school analog Dingern mag das anders sein.

    Gruß
    Malte

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    12.03.2014
    Beiträge
    8
    Hmm,
    da es also kein echtes Auslesen gibt, müßte man über das Entfernen der Elektronik und zwei Endschalter nachdenken (es sind bei mir nur zwei Stellungen erforderlich).

    Wie steuert man den verbliebenen Gleichstrom-Getriebemotor dann an?
    Wenn am passenden Spulenende HIGH anliegt, dreht er sich unentwegt und wenn umgesteuert werden soll, muß die Spule komplett umgepolt werden, entweder mit H-Brücke oder irgendwie manuell?
    Reicht eigentlich der Strom aus einem Port oder muß noch ein passender Baustein eingebaut werden?

    Gruß
    robkpc

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von Geistesblitz
    Registriert seit
    16.03.2011
    Ort
    Dresden
    Alter
    30
    Beiträge
    1.937
    H-Brücke ist da genau das richtige Stichwort, weil du den Motor sonst nicht umgepolt bekommst. Was meinst du mit manuell? Einen Motor auf gar keinen Fall direkt am Controller betreiben, davon wird dieser höchstwahrscheinlich zerstört.

    Musst du denn unbedingt wissen, dass der Servo in einer bestimmten Stellung ist? Wenn er richtig angesteuert wird, sollte er auch die gewünschte Stellung einnehmen. Kommt aber eben auf die Anwendung an.

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. RC-Servo Position bestimmen
    Von Jared im Forum Motoren
    Antworten: 21
    Letzter Beitrag: 11.07.2015, 10:55
  2. Antworten: 14
    Letzter Beitrag: 24.06.2012, 12:47
  3. Trajektorien eines 3-Achs Roboters in Position und Geschwin.
    Von Henryy im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 3
    Letzter Beitrag: 24.01.2010, 12:17
  4. Auslesen eines Sensor
    Von BlackBroom im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 28.04.2007, 10:56
  5. Position eines Modellflieger ermitteln.
    Von Zeroeightfifteen im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 1
    Letzter Beitrag: 14.06.2006, 17:40

Berechtigungen

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