Seg ... bleiben.

14 Schritt:Schritt 1: Physik sagt, es ist einfacher, ein Full-Size-Selbst-Balancing Ding zu bauen. Schritt 2: Das Sammeln. Schritt 3: Antriebsmotoren, die Wahl. Schritt 4: Antriebsmotoren, Modding. Schritt 5: Antriebsräder. Schritt 6: Es fängt an wie ein ... etwas zu suchen. Schritt 7: Und nun der schwierige Teil. Schritt 8: Überblick über die Software. Schritt 9: Zwei Sensoren, ein Winkel. Schritt 10: Ein sehr schmeichelhaft Filter. Schritt 11: Der Steuerteil des Reglers. Schritt 12: Lenkung und andere lose Enden. Schritt 13: Kleben sie alle zusammen. Schritt 14: Links zu besseren Selbst-Balancing Dinge.

Seg ... bleiben.
Do-it-yourself selbstausgleich ... Dinge ... gibt es schon fast so lange wie gewesen kommerziellen selbstausgleich Dinge . Offensichtlich sind die hausgemachten Versionen sind nicht so glatt, zuverlässig, oder abgesicherten wie die reale Sache, aber sie sind immer noch ziemlich fesselnd. Und sie machen große mechanische / elektrische baut mit einigen interessanten Kontrolltheorie in gemischt. Im letzten Schritt, biete ich ein paar Hinweise auf gute DIY selbstausgleich ... was auch immer ... baut.

Im Jahr 2007 half ich mit diesem anderen Selbst-Balancing scooter build am MIT Edgerton Center, und seitdem haben wir viele interessante Fragen per E-Mail zu bekommen, wie es funktioniert. Grundlinie selbst ausgleich Funktionalität tatsächlich überraschend einfach, und vielleicht der Zweck dieser Instructable ist, diese der Einfachheit auf die Spitze zu nehmen. Zu diesem Zweck stelle ich: Seg ... Stick.

Segstick ist ein selbstausgleich ... nun, buchstäblich eine Art Besenstiel I in der festgestellt Gehrungen Werkstatt. Es wird direkt von zwei DeWalt Akku-Bohrschrauber angetrieben eingespannt, um zwei 6 "Räder. Der Controller ist ein Arduino. Zusätzliche Stützvorrichtungen umfassen eine Inertial Measurement Unit (IMU) von Sparkfun und zwei Motortreiber von Pololu .

Es ist die beste DIY selbstausgleich Fahrzeug aller Zeiten? Nein, nicht einmal annähernd. Aber es dauerte nur etwa zwei Tage, um zu bauen, und es wird auf das Nötigste abgestreift. So, ich hoffe, darauf hinzuweisen, die Module und Konzepte in dem jede selbstausgleich Fahrzeug nicht den Besonderheiten dieses einen beteiligt. Zunächst einige Physik beginnen ...

Schritt 1: Physik sagt, es ist einfacher, ein Full-Size-Selbst-Balancing Ding zu bauen.

  1. Seg ... bleiben.
    Eine Frage, die wir eine Menge zu bekommen, ist: Kann diese Arbeit auf eine Art Miniatur-Selbst-Balancing Roboter? Ja, aber, die Gesetze der Physik machen es schwieriger, einen kleinen umgekehrten Pendels bot als ein Full-Size-rideable selbstausgleichenden Fahrzeug zu steuern.

    Zum einen ist die mechanische Zeitkonstante von einem kleinen selbstausgleich Roboter schneller. Stellen Sie sich den Unterschied zwischen dem Versuch, einen Besenstiel am Finger balancieren und zu versuchen, einen Bleistift auf den Finger zu balancieren. Das Steuergerät für einen kleinen Roboter muss, dass sehr viel schneller mit der physikalischen Systems Schritt zu halten.

    Darüber hinaus übernimmt einen Teil der Last von der elektronischen Steuerung ein menschlicher Fahrer, da der menschliche Geist ist eine ziemlich gute Steuerung zu. Zum Beispiel können die auf sich selbst ausgleich Plattformen verwendet Beschleunigungsmesser nicht zwischen stehenden und bewegten sich mit konstanter Geschwindigkeit, sondern eine menschliche Reiter unterscheiden. Der menschliche Fahrer kann, indem er sich nach vorne oder hinten zu beschleunigen oder zu verlangsamen einzustellen.

    So konzentriert sich dieser Instructable auf einem Full-Size-Fahrzeug, wenn auch relativ klein. Im letzten Schritt, gibt es einige Links zu Balancing Roboter.

Schritt 2: Das Sammeln.

  1. Seg ... bleiben.
    Mit der Entscheidung für eine Full-Size selbstausgleichenden Fahrzeug zu bauen, gibt es eine Reihe von wesentlichen Komponenten und Module zu erwerben. Dies ist die komplette Liste der Teile verwendet, um die Segstick bauen. Einzelheiten und Alternativen zu mehreren Komponenten werden in späteren Schritten dargestellt werden.

    Big-Ticket-Artikel (411 €):
    2x DeWalt DC759 18V Akku-Bohrschrauber (eBay, € 60ea neue W / O-Batterie oder Fall)
    1x DeWalt DC9096 18V Akku (eBay, € 40)
    2x Polulu High-Power 18v25 Motor Driver (€ 50ea)
    1x Gravitech Arduino Nano 3.0 (T € 35)
    1x Sparkfun Razor 6DOF IMU (€ 60)
    2x Andymark 6 "erste Rad (€ 13ea)
    2x Andymark 1/2 "Keyed Hub (€ 15Ea)

    McMaster -Typ-Bestellung:
    2x Mounted 1/2 "Lager (5913K61)
    4x 1/2 "Shaft Collar (9414T11)
    1x Precision 1/2 "Keyed Shaft (1497K131)
    1x 1/8 "Taste Stock (98535A130)

    Scrounge-rungen:
    - Sperrholz (3/4 ", 1/2")
    - Schlauchschellen oder Extremely Large Zip Ties.
    - 1 / 4-20 Schrauben und Muttern
    - Brotschneidebrett oder Protoboard
    - Kabel, Schrumpf, Solder
    - 5k oder 10k Potentiometer.
    - Polarized 2-Pin-Stromanschlüsse (zB Deans )
    - Kühlkörper-Material

    Und am wichtigsten:
    - Ein Stock.

Schritt 3: Antriebsmotoren, die Wahl.

  1. Seg ... bleiben.

    Seg ... bleiben.

    Seg ... bleiben.

    Segstick verwendet zwei DeWalt DC759 18V Akku-Bohrschrauber als Antriebsmotoren. Akku-Bohrschrauber sind groß, weil Sie einen Motor, ein Getriebe, und eine Möglichkeit, Paar mit der Antriebswelle zusammen in einem Paket. Sie sind auch billig bei eBay verwendet oder ohne Akku, Ladegerät und Fall.

    Akku-Bohrschrauber sind nicht so groß, weil das Futter oft viel Gegenreaktion, die Steuerung des Fahrzeugs erschwert. Ich habe erfahren, dass einige Low-End-Bohrer haben tatsächlich weniger Rückschlag, weil sie nicht eine Anti-Backdrive-Funktion auf dem Spannfutter haben. Vielleicht haben Sie auch eher bereit, eine billige Bohrmaschine opfern wie diese als ein schönes, Arbeits DeWalt.

    Eine weitere Option ist, um Getriebemotoren aus dem Robotermarkt, wie die Verwendung BaneBots P80 . Sie können diese im Einsatz auf unseren ersten Ausgleichs Fahrzeug sowie Charles Guan Segfault . Diese Getriebe geben Ihnen deutlich mehr Übersetzungsoptionen (12: 1, 16: 1, 27: 1) und weniger als die spiel DeWalts haben. Die Nachteile sind ein höherer Preis und Fertigung für die Montage und Befestigung eines Rades erforderlich.

Schritt 4: Antriebsmotoren, Modding.

  1. Seg ... bleiben.

    Seg ... bleiben.

    Seg ... bleiben.

    Wenn Sie wählen, um mit Akku-Bohrschrauber gehen, werden sie ein bisschen von Hacking als Ausgleich Fahrzeugmotoren arbeiten müssen. Hauptsächlich handelt es sich dabei immer direkten Zugriff auf die zwei Motorklemmen. Des Bohrers Motorsteuerung, so schön, wie es sein kann, kann das nicht tun Vier-Quadranten (reversible) Motorsteuerung, die für dieses Projekt erforderlich ist.

    Der Mod ist ziemlich schnell: Nach dem Öffnen des Bohrers Fall (finden Sie eine Torx-Treiber für die DeWalt Fall müssen), trennen Sie den Motor führt von der Trigger-Controller. Feilen einen Schlitz in den beiden Hälften des Gehäuses durch die diese Leitungen geführt werden kann. Dann wieder zusammenzusetzen.

Schritt 5: Antriebsräder.

  1. Seg ... bleiben.
    Echt Segway Räder sind riesig. Es gibt gute Gründe für die großen Räder (bessere Performance auf Risse und unwegsames Gelände, zum Beispiel) zu verwenden. Für den Zweck der Aufbau einer hausgemachten Selbstausgleich Fahrzeug, die ich gefunden habe es einfacher, kleinere Räder zu verwenden. Segstick die Räder sind fast lächerlich klein (6 "). Aber etwas im Bereich von 8-12" würde gut mit den Übersetzungsverhältnissen in Akku-Bohrschrauber (niedriger Gang) oder kommerzielle Roboter-Typ-Getriebe arbeiten.

    Es kann schwierig sein, gute Antriebsräder für ein Projekt wie dieses zu finden. Die große Mehrheit der Räder finden Sie vielleicht herumliegen sind Lenkrollen, mit Lagern in gebaut. Antriebsräder haben eine Möglichkeit der Übertragung von Drehmoment von einer Drehwelle auf das Rad, wie ein Schlüssel. Die DeWalt Bohrfutter kann bis zu einer 1/2 akzeptieren "Keilwelle. Einige andere Bohrer darf nur gehen bis zu 3/8" ... diese zu vermeiden.

    Hier sind einige gute Plätze für Antriebsräder aussehen:

    Andymark , ein Lieferant für FIRST Robotikteile. Segstick verwenden 6 "Andymark Räder mit einem verkeilt 1/2" Hub.

    Skyway verkauft auch schön Antriebsräder in größeren Größen.

    Natürlich können Sie auch eine Lenkrolle in ein Antriebsrad durch die Herstellung und / oder Anbringen einer Nabe. Abhängig von Ihrem Niveau der Bearbeitung Erfahrung, dies einfacher als zu versuchen, um ein Antriebsrad genau die gewünschte Größe zu finden sein können.

Schritt 6: Es fängt an wie ein ... etwas zu suchen.

  1. Seg ... bleiben.

    Seg ... bleiben.

    Seg ... bleiben.

    Seg ... bleiben.

    Seg ... bleiben.

    Leider haben Sie nicht nur halten können die Räder auf einer Welle, steckte es in die Bohrmaschine, schnallen sie an einen Stock, und gehen. (Ich wünschte, ... dass meine ursprüngliche Absicht war.) Das Bohrfutter kann nicht damit umgehen, dass viel Biegebelastung. So sind externe Lager, um das Gewicht des Fahrers unterstützt sehr notwendig. Segstick Verwendungszwecke montiert 1/2 "Kugellager ( McMaster PN: 5913K61). Diese sind groß, weil sie einiges an Fehlausrichtung zu tolerieren.

    Das Verfahren:. Schneiden Sie ein Stück 3/4 "Sperrholz auf die Abmessungen für das Deck (wo Sie Ihre Füße), die auch die Bohrer, Lager halten wird, und schließlich die Elektronik Dann markieren einige Löcher für die Lager und extra-extra-großen Kabelbinder um den Bohrer in Position zu halten. Schlauchschellen könnte zu arbeiten. Dann alle diese Löcher gebohrt.

    Pro Tipp: Wenn Sie einen Drill unmodifizierten bis zum Ende zu verlassen, können Sie es verwenden, alles andere zu machen. ;)

    Die Lager sind mit 1 / 4-20 Schrauben befestigt. In diesem Fall benötigen sie 1/2 "Abstandshalter, um die Höhe des Bohrers entsprechen. Während Befestigung alles runter, dann ist es sinnvoll, die Antriebswelle in das Lager und Bohrfutter setzen und möglicherweise sogar zu haben, der Bohrmotor läuft. Dadurch wird sichergestellt, gute Ausrichtung, wie die Dinge sind zip-band / geschraubt / verschraubt / was auch immer.

    Wenn alles bereit ist zu gehen, die Räder weiter mit Spannringe auf beiden Seiten, um sie in axialer Richtung einzuschränken. Vergessen Sie nicht, den Schlüssel! Und vergessen Sie nicht, um das Spannfutter ... viel anziehen!

Schritt 7: Und nun der schwierige Teil.

  1. Seg ... bleiben.

    Seg ... bleiben.

    Seg ... bleiben.

    Seg ... bleiben.

    Jeder kann Räder an einem Stock schnallen, nicht wahr? Die Magie hinter einem selbstausgleich Sache ist in der Elektronik. Die Steuerung muss in Beschleunigungsmesser und Kreisel-Daten zu lesen, die Berechnung der Winkel von dem Stick und gebietet dem Motoren Korrekturmaßnahmen zu ergreifen, halten die Fahrer immer aufrecht. Dieser Prozess der Erfassung einer physikalischen Größe (Winkel), eine Entscheidung, und Ausführen eines Korrekturmaßnahmen, die diese Variable beeinflussen wird eine Regelung genannt.

    Üblicherweise ist die Steuerung eine Art des Mikroprozessors. In einigen seltenen Fällen, könnte man aus unbekannten Gründen, es zu tun gezwungen werden vollständig mit analogen Schaltungen . Segstick verwendet stattdessen einen herkömmlichen Digital-Controller auf jeder Lieblings implementiert: dem Arduino. Insbesondere verwendet sie die Arduino Nano 3.0 aus Gravitech. Aber jede Arduino tun wird.

    Zum Abtasten verwendet Segstick die Sparkfun Razor 6DOF IMU . Wirklich, benötigen Sie nur eine Achse Beschleunigungsmesser und ein Gyro-Achse, wie im nächsten Schritt beschrieben wird, aber das Paket ist so bequem, und ermöglicht es Ihnen, um die Platine, wie Sie wollen zu montieren. Da es alle 3,3-Sensoren verwendet, wird es brauchen, um aus der Arduino 3,3 V Ausgang mit Strom versorgt werden. Jeder Sensor gibt eine analoge Spannung, die durch die Arduino Analog-Digital-Wandler (ADC) gelesen wird. Mehr dazu in der nächsten Stufe.

    Zur Steuerung der Motoren, verwendet Segstick zwei Polulu High-Power 18v25 Motortreiber. Dies sind kleine, aber leistungsstarke Umkehrmotor-Controller in der Lage, bis zu 25 A je. Ich beschloss, einen Kühlkörper, um sie hinzuzufügen, aber sie scheinen kühl genug, ohne sie auszuführen. Sie erfordern große Spur Verkabelung zum Akku und zur Bohrermotorleitungen.

    Der Schaltplan ist unten dargestellt. Wie Sie umsetzen (Steckbrett, Lochrasterplatinen, Leiterplatte) liegt an Ihnen. Ich tat es auf einem Vektor Bord, die ich später zuschneiden. Lötverbindungen in der Regel zuverlässiger als Steckbrett-Typ-Verbindungen auf einem sich bewegenden Fahrzeug, also würde ich empfehlen die Verwendung von Steckdosen für die Komponenten, sondern direkt dem Löten verdrahteten Verbindungen.

Schritt 8: Überblick über die Software.

  1. Die Segstick Software ist in C für die Arduino geschrieben. Der vollständige Software ist unten als Textdatei beigefügt. Es ist nur etwa 120 Zeilen Code, etwas von den bequemen Arduino Libraries unterstützt. Der Code wird kommentiert, aber für die nächsten Schritte werde ich durch die wichtigsten Teile des Regelalgorithmus zu gehen, denn das ist, wo die Magie passiert.

    Der Rückkopplungs-Controller tatsächlich zwei kritische Komponenten: ein Digitalfilter, die Signale von dem Beschleunigungsmesser und dem Kreisel in eine zuverlässige Winkelschätzung verschmilzt und eine Proportional-Differential (PD) Steueralgorithmus, der die Korrekturmaßnahmen bestimmt, durch Ausgeben Spannung an die Motoren zu schaffen . Diese beiden Komponenten sind der Schlüssel zu einer guten Selbst-Balancing-Plattform.

    Andere weniger glamourös, sondern auch wichtige Zusatzfunktionen sind Signaleingang und Skalierung, Lenkung, PWM-Generierung, Ausgangsbegrenzung und Debugging. Ich werde kurz auf diese auch in den nächsten Schritten.

Schritt 9: Zwei Sensoren, ein Winkel.

  1. Seg ... bleiben.

    Seg ... bleiben.

    Seg ... bleiben.

    Ein weiteres gemeinsames selbstausgleich Frage: Hat es einen Beschleunigungsmesser verwenden? Oder ein Kreisel?

    Antwort: Beides.

    Der Grund für die Verwendung von zwei Sensoren, obwohl es nur einen relevanten physikalischen Größe (Winkel) ist, dass jede Art von Sensoren hat Vorteile und Nachteile von selbst aus. Indem man die besten Teile von jeweils zusammen wird eine insgesamt bessere Schätzung der Winkel erreicht. Ich schrieb diesen alle in diesem Whitepaper , aber hier werde ich eine kurze Zusammenfassung geben.

    Der Beschleunigungsmesser.
    Es misst die Beschleunigung, oder? Nun, nicht wirklich. Es messen Kraft pro Masseneinheit. So wird die Kraft aufgrund der Schwerkraft zu messen, als ob es eine tatsächliche Beschleunigung waren. Die Empfindlichkeit für die Sparkfun Razor IMU als 300 mV / g, was bedeutet, der Ausgang von 0,3 V pro 9,8 m / s ^ 2 Beschleunigung ändern.

    Wie wird diese in einen Winkel umgewandelt? Gut vorstellen, mit den Beschleunigungsmesser-Achse, die in der Fahrtrichtung des Fahrzeugs gerichtet ist. Da sich das Fahrzeug vorwärts Stellplätze, sieht der Achse positive Kraft aufgrund der Schwerkraft. Da sich das Fahrzeug rückwärts Stellplätze, sieht es negative Kraft. Es ist verlockend zu sagen, dass der Gewinn sollte 300mV / 90º sein, da Pitching 90º entspricht 1g. Allerdings ist es die Steigung der Ausgangs in der Nähe von 0 °, was zählt, und dank dieser Steigung Trigonometrie passiert mit 300 mV / rad oder 300 mV / 57.3º sein. Siehe das Bild unten für ein Beispiel.

    Seit den Arduino ADC gibt einen 10-Bit-Wert auf der Grundlage eines Referenz 5V, können Sie den Gewinn aus dem rohen ADC Wert berechnen:

    (57.3º / 0,3 V) * (5V / 1024LSB) = 0.932º / LSB

    LSB (least significant bit) ist nur eine Art zu sagen, ein Bit. Dies ist der Wert, um den die rohen Analogwert zu multiplizieren, um einen Winkel in Grad erhalten. Beachten Sie, dass Sie müssen auch die Nullwinkelversatz aus dem analogen Signal zu subtrahieren. Dies wird am besten experimentell festgestellt, indem die Plattform beim Winkel Null und Ablesen des Wertes.

    Warum also nicht einfach die Beschleunigungsmesser, um den Winkel zu messen und zu tun? Das Problem ist, daß der Beschleunigungsmesser nicht die Differenz zwischen der Schwerkraft und der tatsächlichen Beschleunigung zu berichten. Also, wenn die Plattform vollkommen eben, sondern das Fahrzeug beschleunigt vorwärts, es wird die gleiche wie Kippen nach hinten zu registrieren. Einen langfristigen Durchschnitt, aber der einzige "Beschleunigung", die bleibt, ist die Schwerkraft. Leider ist die Langzeitmittelwertbildung nicht förderlich für bissig Regelung. Geben Sie ...

    Das Gyroskop.
    Genauer sollte sie einen Winkelgeschwindigkeitssensor bezeichnet werden, da sie nur wenig mit einem tatsächlichen schwungradbasierten Gyroskop zu tun hat. Es erstattet ein Signal proportional zu der Drehgeschwindigkeit. Auf einem Ausgleichs Plattform würde dessen empfindliche Achse parallel zur Achse der Drehung der Räder ist. Die Sparkfun IMU Kreiselkompasse haben eine Empfindlichkeit von 3.33mV / º / s auf den 4x-Kanäle, was bedeutet, die Ausgabe ändert 3.33mV für je º / s Dreh.

    Seit den Arduino ADC gibt einen 10-Bit-Wert auf der Grundlage eines Referenz 5V, können Sie den Gewinn aus dem rohen ADC Wert berechnen:

    [(1º / s) /0.00333V] * (5V / 1024LSB) = 1,466 (º / s) / LSB

    Dies ist der Wert, um den das rohe analogen Eingang zu multiplizieren, um eine Winkelgeschwindigkeit in Grad pro Sekunde zu erhalten. Wie der Beschleunigungsmesser muß der Null-Offset für den Kreisel ersten subtrahiert werden. Es kann durch Halten der Plattform stationären und Ablesen des analogen Wert gefunden werden.

    Von Grad pro Sekunde in Grad zu bekommen, kann der Kreiselsignal integriert werden. Für jeden Schritt in der Zeit, die Kreiselsignal multipliziert mit der Zeitdauer zwischen den Schritten ergibt einen inkrementalen Winkeländerung. Der Gesamtwinkel ist die laufende Summe dieser Schritten. Dies verursacht ein Problem, aber: Wenn der Kreisel-Signal nicht exakt Null, wenn die Plattform dreht sich nicht (und es auch nie sein) die Integration wird driften. Ohne absolute Referenz, gibt es keine Möglichkeit, diese Abweichung mit der Kreiselsignal alleine zu korrigieren. Für kurze Zeit ist es jedoch nach der Kreisel einen sehr empfindlichen Winkelschätzung, die immun gegen Rauschen von Horizontalbeschleunigung des Fahrzeugs

    So ein Sensor für die kurzfristige, schnell ansprechenden Winkel Schätzungen groß. Die andere ist für die langfristige, driftfreie, absolute Winkelschnitte. Sind Sie beginnen, um zu sehen, wohin dieses geht? ...

Schritt 10: Ein sehr schmeichelhaft Filter.

  1. Seg ... bleiben.
    Um die beiden Sensormessungen in einer Weise, die die beste Winkelschätzung erzeugt zusammen verbinden, genannt eine spezielle Technik, ein Komplementärfilter verwendet. (Nein, kein kostenloses Filter, und schon gar nicht ein Kalman-Filter.) Der Filter ist wirklich nur eine einzige Zeile Code:

    Winkel = A * (Winkel + Rate * DT) + (1 - A) * (float) accel_raw * A_GAIN;

    Okay, so ist es eine lange Schlange. Sie können es auch tun, mit einem Operationsverstärker oder zwei .

    Dieser Filter macht genau das, was in diesem Szenario erforderlich: es das Gyroskop Lesen für kurze Zeitdauern und die durchschnittliche Lesebeschleunigungsmesser für lange Zeitdauern begünstigt. Lassen Sie uns brechen sie:

    A ist der Faktor, der die Grenzzeit für das Vertrauen, den Kreisel und Filterung in dem Beschleunigungsmesser bestimmt. Es ist immer zwischen 0 und 1, in der Regel in der Nähe von 1. In diesem Fall wird eine definierte, um 0,962 sein. Dies bedeutet, dass bei jedem Zeitschritt 96,2% der neuen Winkelmessung stammt aus der alten Winkelmessung sowie der integrierten Gyro-Messung. Das verbleibende 3,8% aus dem Beschleunigungsmesser. Diese Durchschnittswerte langsam in den Beschleunigungsmesser über viele Zeitschritte.

    DT ist die Zeit in Sekunden zwischen den Programmschleifen, Zeitschritt. Hier wird definiert, dass 0,020 und wird durch Verzögerung (20) am Ende der Schleife gesetzt. Der Code in der Schleife selbst nehmen viel weniger als 20 ms, so dominiert die Verzögerung des Zeitschritts.

    Rate ist die Kreisel Lesen, um Grad pro Sekunde umgewandelt.
    accel_raw * A_GAIN ist der Beschleunigungsmesser Lesen, in Grad umgewandelt. Es ist sehr wichtig, dass diese beiden in der gleichen Einheit Base vor der Zugabe miteinander. (Sie können Äpfel nicht mit Birnen hinzufügen.)

    Die Zeitkonstante des Filters ist die Dauer der Zeit, bei der der Kreisel Lesung beginnt aus stark gefiltert werden, und der Beschleunigungsmesser Lesen beginnt, sich in schwer zu mitteln. Es ist tatsächlich ein kontinuierlicher Prozess, aber die Zeitkonstante ist ein einzelnes Maß, wo das Gleichgewicht beginnt sich zu verschieben. Die Zeitkonstante ist:

    tau = DT * (A) / (1-A) = 0,5 s

    Also, für diesen Filter, der Kreisel etwa 0,5 Sekunden lang würdig und das Beschleunigungs beginnen zu mitteln in wesentlich danach. Dieser Wert kann durch Änderung A. optimiert werden

Schritt 11: Der Steuerteil des Reglers.

  1. Seg ... bleiben.
    Vielleicht ist der Rest der Software-Setup ist nur für diesen Teil: die Rückkopplungssteueralgorithmus, der eigentlich entscheidet, wie zum Anlehnen zu korrigieren und halten die Plattform ausgewogen. Für die Segstick, habe ich eine Proportional-Differential (PD) Controller, eine Teilmenge der PID-Regelung .

    Proportional. Dies ist eine Korrekturmaßnahme, die proportional zu der Winkelskalen. Wenn der Stick lehnt sich nach vorne doppelt so weit ist der Korrekturmaßnahmen doppelt so groß. Das ist wie das "Federkonstante" des Systems, Anwendung einer Rückstellkraft, wie der Stick bewegt sich weg von der Vertikalen.

    Derivat. Dies ist eine Korrekturmaßnahme, die proportional zur Ableitung des Winkels oder der Winkelgeschwindigkeit skaliert. Wenn der Stick ist doppelt so schnell fallen, ist die Korrekturmaßnahmen doppelt so groß. Dies ist wie der "Dämpfungskonstante" des Systems, Aufbringen einer Kraft, die eine Drehung in jeder Richtung entgegenwirkt.

    Zusammen bildet dies ein Masse-Feder-Dämpfer-System , mit der Ausnahme, mit virtuellen Federn und Dämpfer. Die relative Federkonstante und Dämpfungskonstante beeinflussen, wie viel das System schwingt, wie es für die Winkelverschiebung korrigiert. Einfach, oder? Hier ist der Code:

    Ausgang + = Winkel * KP + Rate * KD;

    Ja, einfach. Ausgang ist der Befehl, um den Motoren gesendet. KP und KD werden gezwickt, bis er gleicht (oder geht geht total instabil). Eine Subtilität ist hier, dass die Ausgangsbefehl von der PD-Regler der Wertausgabe erhöht. Wenn also der Winkel an einigen versetzt vertikal gehalten, wird der Motorbefehl weiter erhöhen. Es ist wie ein zusätzliches integral an das System, wie es in dem Blockdiagramm dargestellt.

    In der Regel in Feedback-Diagramme, hat der Rückkopplungspfad ein negatives Vorzeichen, aber es hängt wirklich von der Art, wie die Motoren sind eingerichtet. Nur durch das Vertauschen der Motorleitungen oder in der Hardware - die Wahl der Zeichen für die Ausgabe kann entweder in Software durchgeführt werden (= statt + =). Wenn beide Räder in Bewegung in die falsche Richtung in Reaktion auf den Winkel, können Sie die Zeichen zu blättern. Wenn ein Rad beginnt sich zu bewegen in die falsche Richtung, können Sie einfach zu tauschen ihre Motorleitungen.

Schritt 12: Lenkung und andere lose Enden.

  1. Seg ... bleiben.

    Seg ... bleiben.

    Seg ... bleiben.

    Lenk erreicht die gleiche Weise wäre es an einem Tank-Antriebs Roboter: differential Befehle an den linken und rechten Motoren gesendet. Zum Beispiel die Erhöhung der Geschwindigkeit des linken Motors während die Verringerung der Drehzahl des rechten Motors wird es nach rechts. Dies kann leicht auf der Basis des Signals von dem Lenk Potentiometer gelesen implementiert.

    Ausgeben an die Motoren durch Einstellen einer Impulsbreite moduliert (geschehen PWM ) Signal an den Motorregler Eingängen. In Arduino Land wird dies mit analogWrite getan (). Allerdings ist die Standard-Arduino PWM-Frequenz viel zu niedrig für die Motorsteuerung, so habe ich ein paar direkte Manipulation Register, um sie zu zwingen, 15.625kHz sein. Da die Steuerungen sind reversibel, verwende ich einen kleinen Wald von if-Anweisungen, um herauszufinden, was auf den DIR-Pins und auch in Aufmachungen, um die Ausgabe-Befehl zu invertieren.

    Ein sehr wichtiger Teil der Schreiben guter Steuersoftware ist geschäftsführender Datentypen. Sie können in dem Code, den ich oft explizit typecast, um sicherzustellen, ich bin immer genau den Datentyp Ich möchte bei jedem Schritt der Berechnung zu sehen. Nichts ist schlimmer als mit dem Controller-Freak, weil eine Variable übergelaufen. Aus diesem Grund beantrage ich auch die Begrenzung bei jedem Schritt, um sicherzustellen, dass die Variablen bleiben innerhalb geeigneter Bereiche. Zum Beispiel analogWrite () nimmt einen ganzzahligen Wert zwischen 0 und 255, so dass ich zu begrenzen die Ausgaben auf diesen Bereich bei jedem Schritt der Berechnung.

Schritt 13: Kleben sie alle zusammen.

  1. Seg ... bleiben.

    Seg ... bleiben.

    Der Stick ist verschraubt, die Elektronik alle verdrahtet, und alles ist mit einem 18V DeWalt Akku abgeschnitten. (Ich schlage vor, Testräder-up mit einem Netzteil zuerst.)

    Hier ist eine kurze Video von der Segstick ruckartig herumlaufen:

Schritt 14: Links zu besseren Selbst-Balancing Dinge.

  1. Auch auf Instructables:
    Selbstausgleich ein Radfahr elektrisches Skateboard - Awesome build durch XenonJohn.
    Einfache build Selbstausgleich Skateboard / Roboter / Segway-Plattform - auch XenonJohn.
    Winkelmessung mittels Kreisel, Beschleunigungsmesser und Arduino - Mehr Komplementärfilter.

    Einige Nähe von zu Hause:
    Die DIY Segway - MIT Edgerton Zentrum Ingenieurwerkstatt Sommer 2007.
    Segfault - Charles Guan ist völlig analog Ausgleich Roller.
    Die Uno - Durch BPG Motors.

    Die ursprüngliche [Kopie]:
    Der Aufbau einer Balancing Scooter - Trevor Blackwell.

    Robot Versionen:
    Balancing Roboter Wheeley - Ich mag die technische Erklärung.