-
        

Ergebnis 1 bis 5 von 5

Thema: Servo ansteuern

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    10.10.2009
    Beiträge
    66

    Servo ansteuern

    Anzeige

    Hallo,
    ich habe rn1.4 und sd 21. Die Servos ansteuern ist kein Problem. Da das ganze auf ein Faller-Car-System zur Steuerung kommen soll - wenn es mal fertig ist, werden ca 40 Servos (2x sd21) in Betrieb sein zur Steuerung der Weichen und Magnete.
    Das Problem: Das Programm muss jedesmal mit einer "wait oder waitms-Anweisung" so lange angehalten werden, bis das Servo seine Zielstellung erreicht hat. Während dieser Zeit sind die ebenfalls ca 40 Reedkontakte ohne Überwachung, was dann zu Fehlschaltungen führt.
    Gibt es eine Möglichkeit, dass das Programm weiterläuft und das Servo "nebenbei" seine Position anfährt? Von der Lösung würde das ganze Projekt abhängen.
    Danke im Voraus
    mfg
    bernhard

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892
    Das Programm muss jedesmal mit einer "wait oder waitms-Anweisung" so lange angehalten werden, bis das Servo seine Zielstellung erreicht hat.
    Wozu das denn ?
    Wenn es wirklich nicht anders geht, könntest Du einen Controller mit PIN Change Interrupts verwenden und an die entsprechenden Eingänge deine Reed Kontakte hängen.

    Anderer Vorschlag:
    Normalerweise sollte es aber reichen, wenn Du einen Timer mitlaufen lässt, der in seinen Overflow Interrupts ein Register hochzählt.
    Ist dann die gewünschte Zeit vergangen ( Das Register hat den gewünschten Zählerstand erreicht ) , kann man im Hauptprogramm in eine neue Subroutine gehen oder sonstwas machen.

    Während der Timer läuft wird aber die Programm Hauptschleife trotzdem ständig durchlaufen.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    10.10.2009
    Beiträge
    66
    Danke,
    das mit dem Timer hört sich gut an, geht aber über meinen Wissensstand hinaus. Gibt's irgendwo ein kleines Beispiel, das ich mir "zurechtbiegen" kann?
    mfg
    bernhard

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892
    Gück einfach mal in ein Bascom Tutorial in der Rubrik Interrupts.

    Das was Du brauchst ist ein "Timer Overflow Interrupt".
    Der Timer wird initialisiert und die Interrupts freigegeben.
    Nachdem der Timer seinen maximalen Zählerstand überschritten hat wird dann der Timer Overflow Interrupt ausgelöst.

    In dieser Interruptroutine wird dann einfach eine Variable hochgezählt.
    Du kannst auch noch eine Bedingung reinmachen, ob das Servo gerade am laufen ist oder nicht.

    Im Hauptprogramm wird bei einem Servostart diese Variable auf 0 gesetzt und dann im Hauptprogramm immer wieder abgefragt.

    Ist der gewünschte Wert der Variable erreicht oder überschritten ist die gewälte Zeit erreicht.

    Ich kann Dir leider keinen fertigen Code für so was liefern, weil ich in "C" progge.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    10.10.2009
    Beiträge
    66
    Danke,
    habe auch schon im Bascom-Tutorial gestöbert - so komme ich weiter...
    mfg
    bernhard

Berechtigungen

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