-
        

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: Schrittmotor mit 3 Kabel und L298N-Brücke

  1. #11
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    59
    Beiträge
    2.410
    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo Chris,
    Zitat Zitat von Chris1803 Beitrag anzeigen
    Mit dem weiter oben von HaWe angegebenen Code konnte ich den Servo in Betrieb nehmen. Das Ganze funktioniert zwar, aber alles ist etwas ruckelig und hastig.
    Wie kann ich das etwas - im Englischen würde man "smoother" sagen - machen? Und wie kann ich herausfinden, wie ich den Maximalausschlag nach links und rechts sowie die Mittelstellung über den Code einstellen kann?
    Den hier ?
    https://tutorials-raspberrypi.de/ras...tor-steuerung/

    Steht ja ganz unten, direkt unter dem Programm.

    p.ChangeDutyCycle(x)
    x ist die Position.
    Da musst du halt etwas probieren, bei welchen Werten dein Servo am linken und rechten Anschlag ist. Die Mitte liegt dann dazwischen.

    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    07.09.2017
    Beiträge
    8
    Hallo Peter

    Danke für die schnelle Antwort. In dem Fall kann ich mich an die Grenzen tasten. Besteht eine Gefahr, dass ich den Servo zerstöre, wenn ich zu hohe Werte angebe?
    Hast du eine Idee zur anderen Frage, wie ich die Bewegungen geschmeidiger machen kann?

    Chris

  3. #13
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    59
    Beiträge
    2.410
    Zitat Zitat von Chris1803 Beitrag anzeigen
    Besteht eine Gefahr, dass ich den Servo zerstöre, wenn ich zu hohe Werte angebe?
    Eigentlich nicht, kam nur bei alten dummen Servos vor.
    Du kannst dich mal in 1er Schritten vortasten, du merkst dann schnell wenn er nicht mehr weiter dreht.

    [QUOTE=Chris1803;639354]Hast du eine Idee zur anderen Frage, wie ich die Bewegungen geschmeidiger machen kann?
    Dies liegt zum Teil am Servo selbst.
    Wie schnell sich der Servo zwischen zwei Positionen bewegt hängt vom Servo und dessen Belastung ab. Wenn es langsamer sein soll, kannst du nur entsprechend viel Zwischenpositionen vorgeben und diese immer für eine gewisse Zeit halten.

    Das Zittern an einer festen Position kannst du, wie im Link angegeben, durch Ausschalten der PWM verbessern.

    Die Ansteuerung der Modellbau-Servos ist eigentlich ein Murks, war aber zu den damaligen Zeiten nicht besser Lösbar. Die ganze Steuerung muss möglichst leicht sein (Flugzeugmodelle).

    Du kannst hier im RN-Wissen Bereich einiges darüber nachlesen.
    Das technische Problem ist, dass man eine Impulsbreite immer nur mit einem gewissen Jitter erstellen kann. Du hast irgendwo einen festen Takt und die Zeit kann immer nur ein Vielfaches dieser Zeit sein. Da gibt es dann eine Rasterung.

    Bei Auswerten hat man das selbe Problem. Auch hier kann man nur auf Taktschritte genau die Impulsbreite messen. Da die Takte nicht synchron sind, kann man schon theoretisch nicht genauer als +/-2 Takte genau messen.

    Die Übertragungsstrecke als solche trägt auch noch ihren Teil zum jitter bei.

    Der Servo versucht also immer den, aus der Impulsbreite gewonnene, Sollwert mechanisch einzustellen. Durch den Jitter versucht er immer diesen Messfehlern zu folgen. Deshalb zittert das Ding dann, auch wenn man am Sollwert gar nichts ändert.
    Stell man das PWM-Signal ab, verwendet er die letzte Messung als Vorgabe.

    Allerdings gibt es neben der elektronischen Seite auch noch die Mechanische. Zwischen Motor und Abgang sitzt noch ein Getriebe und dieses hat immer etwas spiel. Hat sich der Motor z.B. zuerst nach links gedreht und soll sich jetzt nach rechts drehen, passiert zuerst gar nichts am Abtrieb, weil der Motor so weit drehen muss, bis sich die anderen Zähne der Zahnräder berühren und Kraft übertragen können.
    Das Getriebespiel ist immer ein Qualitätsmerkmal. Ideal sollte man keines haben.


    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    08.06.2017
    Beiträge
    11
    Und wie kann ich herausfinden, wie ich den Maximalausschlag nach links und rechts sowie die Mittelstellung über den Code einstellen kann?
    Die Mittelstellung entspricht normalerweise einer Einschaltzeit von etwa 1,5 ms. Oberer und unterer Anschlag liegen irgendwo im Bereich von 2,1 ms bzw. 0,9 ms. So wie ich das sehe gibst du in deinem Code keine Einschaltzeit ein, sondern ein PWM-Tastverhältnis. Das musst du dann eben noch über die eingestellte PWM-Frequenz umrechnen. Bei 50 Hz (Periodendauer 20 ms) entsprächen 1,5 ms dann 1,5 ms/20 ms = 0,075 = 7,5%.

    Die Zuordnung zwischen Einschaltzeit und eingestelltem Winkel ist nicht immer ganz eindeutig. Solltest du exakte Winkel anfahren wollen bleibt dir nicht viel anderes übrig als die entsprechenden Signale durch ausprobieren herauszufinden. Ich hatte den entsprechenden Fall schon und habe mir dafür eine kleine Vorrichtung gebastelt:



    Wie kann ich das etwas - im Englischen würde man "smoother" sagen - machen?
    Modellbauservos sind so parametriert, dass sie die vorgegebene Stellung so schnell wie möglich anfahren. Sprich: hohe Beschleunigung, schnelle Bewegung, abruptes Abbremsen. Falls du das meinst kannst du wie Peter empfohlen hat Zwischenpositionen vorgeben (z.B. einen gleitenden Mittelwertfilter über die Steuergröße legen). Falls der Servo zittert und "falsche" Bewegungen machst solltest du überprüfen ob bei deinem Signal zwischen Pi und Servo irgenwas nicht stimmt (einfach mal mit einem Oszilloskop abgreifen sofern vorhanden). Falls du unterschiedliche Stromquellen zur Versorgung von Pi und Servos verwendest musst du ausserdem sicher stellen dass die Massen verbunden sind.

  5. #15
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.481
    Hallo Chris!

    .. Besteht eine Gefahr, dass ich den Servo zerstöre, wenn ich zu hohe Werte angebe ..
    Ja - wenn Du zu lange "heizt"! *gg* Aber eigentlich brauchst Du wenig Bange zu haben. Sinnvoll ist es beim Er-testen der beiden Grenzstellungen ein Labornetzgerät zu benutzen oder ein Ohmmeter mit nem Messbereich bis ca. 2A und drüber in die Versorgungsleitung einzuschleifen. Dann kannst Du sehen wann Du die erlaubten Pulsdauern/Grenzen überschritten hast, weil dann die Stromaufnahme deutlich ansteigt. Ausserdem ist bei vielen Servos dann ein deutliches anderes Geräusch zu hören. Ein paar wenige Sekunden Stromverbrauch im Bereich von 0,5 bis 1A hatte bei meinen Servos nie geschadet (gilt aber nur für lastlosen Servotest). Sonstige Aussagen sind im RNWissen (klick hier) zu sehen. Für solche Tests hatte ich mir Servotester gebaut. Die "neueste" Vorrichtung mit nem 10K-Poti zum Variieren der Pulslänge ist mit nem nanoclone und nem LCD aufgebaut, siehe hier. Das Display zeigt z.B. die aktuelle Periodendauer (oben rechts) und die Pulszeit mit der angesteuert wird (unten rechts), der ADC-Wert ist sozusagen ein Gimmick. Übrigens ist diese Software bei meinen Platinen zum Ansteuern mehrerer Servos als Testmodus bereits eingebaut.

    .. Hast du eine Idee zur anderen Frage, wie ich die Bewegungen geschmeidiger machen kann? ..
    Das wurde ja schon mehrfach beantwortet. Softwaremässig habe ich das so gelöst (in C), dass der Servo-Ansteuerungsroutine ein Zielwert und ein Increment vorgegeben wird (und noch zwei Parameter). Nun wird die Pulslänge bei jedem neu ausgegebenen Puls um das Increment verändert (+ oder -) bis der Zielwert überschritten ist. Der letzte Wert wird dann aber nur als der vorher genannte Zielwert eingegeben. Die Incremente sind so bemessen, dass ich für die gesamte Schwenkbreite rund sechstausend Ticks habe (6000), Full speed wird bei ca. 180 Incrementen pro neuer Servoperiode erreicht - also 180 Inc / 20 ms. Das ist für viele Servos zu fein - aber der läuft dann eben wenn die Ansteuerung seine ganz bestimmte (bestimmbare) Mindestpuls-differenz erreicht hat.

    So siehts aus wenn die Servos full speed laufen (Standardgeschwindigkeit - ca. 0,1 bis 0,16 sec pro 60°) und so fahren die servobetätigten Teile mit gebremster/variabler Geschwindigkeit.

    Viel Erfolg!
    Geändert von oberallgeier (Heute um 12:12 Uhr) Grund: Incremente pro Periode
    Ciao sagt der JoeamBerg

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. L298N direkt am Microkontroller (Schrittmotor)
    Von RobbyMartin im Forum Motoren
    Antworten: 1
    Letzter Beitrag: 03.10.2014, 23:15
  2. H-Brücke für CNC-Hybrid-Schrittmotor
    Von Che Guevara im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 02.09.2012, 14:30
  3. Schrittmotor mit 3 Kabel
    Von Naturp im Forum Motoren
    Antworten: 5
    Letzter Beitrag: 28.05.2010, 14:43
  4. Unipolar Schrittmotor mit L298N?
    Von SMR im Forum Motoren
    Antworten: 2
    Letzter Beitrag: 26.08.2005, 13:19
  5. SCHRITTMOTOR UND l298N .. hilfeeeeeeeee
    Von hoer173 im Forum Motoren
    Antworten: 9
    Letzter Beitrag: 03.04.2004, 00:44

Berechtigungen

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