Inhaltsverzeichnis:

Arduino-basierter serieller Servocontroller - Gunook
Arduino-basierter serieller Servocontroller - Gunook

Video: Arduino-basierter serieller Servocontroller - Gunook

Video: Arduino-basierter serieller Servocontroller - Gunook
Video: RoboIntellect controller 001 - Arduino совместимый контроллер аналог PCA9685 с USB - I2C. 2024, Juli
Anonim
Arduino-basierter serieller Servocontroller
Arduino-basierter serieller Servocontroller
Arduino-basierter serieller Servocontroller
Arduino-basierter serieller Servocontroller

Dies ist ein einfacher serieller Controller für mehrere Servos basierend auf dem Arduino. (mein erstes instructable auch:))

Die meiste Arbeit dabei bestand darin, die Software dazu zu bringen, mit dem Arduino zu sprechen und ein Protokoll für die zu übertragenden Daten zu erstellen. Was den Hardware-Aspekt angeht, habe ich nur zwei Servos verwendet (Parallax-Standardservo hier). Ein Sparkfun Arduino ProtoShield und ein Arduino Duemilanove mit ATMEGA328, aber die meisten dieser Teile können durch ähnliche Artikel ersetzt werden. Ich habe mir dieses Projekt als Teil eines RC-Systems ausgedacht, aber der Aufbau der Kommunikation hat viel Zeit in Anspruch genommen. Wenn jemand Verbesserungen, Ideen oder Fehler hat, können Sie ihn gerne kommentieren. EDIT: Ich habe das vor einiger Zeit geschrieben, habe es erst kürzlich veröffentlicht.

Schritt 1: Dinge, die Sie möglicherweise benötigen …

Dinge, die Sie brauchen könnten…
Dinge, die Sie brauchen könnten…
Dinge, die Sie brauchen könnten…
Dinge, die Sie brauchen könnten…

Einige Dinge, die Sie benötigen, um dies zu bauen. 1. Arduino-Platine (Sie wählen) 2. zwei (oder ein) Servos 3. Steckbrücken 4. Visual Studio 2008 Express -- Link (optional) 5. Arduino IDE -- Link Sorry Linux- und Apple-Fans, mein Programm läuft nur auf Windows vorerst, aber Sie können immer noch manuell serielle Befehle an das Arduino senden, ohne den Code zu ändern.

Schritt 2: Schließen Sie die Hardware an

Schließen Sie die Hardware an
Schließen Sie die Hardware an

Nichts sehr komplexes zu diesem Schritt. Schließen Sie einfach ein Servo an Pin 9 und das andere an Pin 10 an.

Schritt 3: Programmieren Sie das Arduino

Programmieren Sie den Arduino
Programmieren Sie den Arduino

Jetzt können Sie die Skizze auf das Arduino hochladen.

Hier ist eine einfache Aufschlüsselung des Codes: #include Servo myservo; // Servo-Objekt erstellen, um ein Servo zu steuern Servo myservo1; int eingehendesByte = 0, datacount = 0, counter = 0, ready = 0; // für eingehende serielle Daten char data [10]; const char verifizieren[8] = "ma11hew"; char-Befehl [3]; Void setup () { myservo.attach (9); myservo1.attach(10); Serial.begin (38400); // öffnet den seriellen Port, setzt die Datenrate Serial.println ("Hi Arduino hier!"); // hinzugefügt, um den seriellen Port zu identifizieren Dies richtet nur den seriellen Port und die Servos ein. int ich; for(i = 0; i<180;i++) {myservo.write(i); Verzögerung(15); } myservo.write(5); for(i = 0; i<180;i++) {myservo1.write(i); Verzögerung(15); } myservo1.write(5); } Einfache Kehrbewegung, um zu überprüfen, ob die Servos richtig funktionieren. Void Schleife () { bereit = 0; Zähler = 0; while (1==1) { if (Serial.read() != [Zähler] überprüfen) { Pause; aufrechtzuerhalten. Wenn (Zähler == 6) { Verzögerung (20); command[0] = Serial.read(); Befehl[1] = Serial.read(); //if (Serial.read() == ((Befehl[1] * 12) % 8)) // { bereit = 1; //} Serial.println ("gespeicherter Befehl"); } Zähler ++; Verzögerung(2); } dies überprüft den seriellen Puffer auf die richtige Autorisierungszeichenfolge und greift dann zwei Bytes für den Befehl. die kommentierte if-Anweisung ermöglicht eine behelfsmäßige Prüfsumme, würde jedoch die manuelle Schnittstelle erschweren. ready kann auf 0 gesetzt werden, damit Befehle nicht geparst werden, wie im Fall von beschädigten Daten. // Befehle durchsuchen if (ready == 1) { if (command[0] == 'T') { command[0] = 0; Serial.print ("Drosselklappensteuerung an Pin 9 zu:"); Serial.println (map (Befehl[1], 32, 126, 2, 180), DEC); myservo.write(map(Befehl[1], 32, 126, 2, 180)); aufrechtzuerhalten. Wenn (Befehl[0] == 'S') {Befehl[0] = 0; Serial.print ("Drosselklappensteuerung an Pin 10 an: "); Serial.println (map (Befehl[1], 32, 126, 2, 180), DEC); myservo1.write(map(Befehl[1], 32, 126, 2, 180)); } } } Der Rest des Codes besteht darin, command nach gültigen Befehlen (T oder S.) zu durchsuchen, wenn beide übereinstimmen, nimmt es das nächste Byte und sendet es an den Servo. mehr auf der Karte (Befehl[1], 32, 126, 2, 180) später … der Code hier ist erweiterbar für alles, was Sie sonst noch benötigen (z. B. Lichter, Motoren, IR usw.). Modifikationen.

Schritt 4: Software installieren

Software installieren
Software installieren

Ich habe zwei Möglichkeiten, dieses nsis-Installationsprogramm zu installieren: Laden Sie das untenstehende selbstextrahierende Installationsprogramm herunter und führen Sie es aus. Sie haben die Möglichkeit, Quellen während der Installation zu installieren. Das Installer-Binärpaket installiert Core-C++-DLLs, sodass es auf einem Computer ausgeführt werden kann, auf dem Visual C++ bereits installiert ist. Sobald das Installationsprogramm abgeschlossen ist, können Sie es über den Desktop oder das Startmenü ausführen. zip way (unverifiziert): Herunterladen und ausführen, es sollte funktionieren. kann sein. (Das Zip-Archiv hat dieselbe Ordnerstruktur, die vom Installationsprogramm erstellt wurde, ohne Quellen. Ich habe keinen Computer ohne Visual Studio, um es zu testen, daher funktioniert es möglicherweise nicht.)

Schritt 5: Verwenden Sie das Schnittstellenprogramm

Verwenden Sie das Schnittstellenprogramm
Verwenden Sie das Schnittstellenprogramm
Verwenden Sie das Schnittstellenprogramm
Verwenden Sie das Schnittstellenprogramm

Um das Programm zu verwenden, wählen Sie zuerst die in der Arduino-Skizze definierte Baudrate. Die unveränderte Skizze ist standardmäßig auf 38400 Baud eingestellt, kann jedoch an Ihre Bedürfnisse wie eine langsamere Funkverbindung angepasst werden. Hinweis: Baudraten über 38400 waren nicht sehr stabil, ich denke, das liegt daran, dass sich die uart füllt, bevor die Daten verarbeitet werden können. Wählen Sie als Nächstes den zu verwendenden COM-Port aus. Das Programm ist standardmäßig auf COM4 eingestellt, ändern Sie es oder das Programm stürzt ab. Klicken Sie abschließend auf Öffnen. Wenn alles gut gegangen ist, öffnet das Programm den ausgewählten seriellen Port mit der ausgewählten Baudrate. Wenn nicht, wird das Programm wahrscheinlich mit einer unbehandelten Ausnahme abstürzen. Stellen Sie sicher, dass der Port korrekt ist, und versuchen Sie es erneut. Verwenden Sie die Textfelder, um direkte Befehle an das Arduino zu senden. Der "map(command[1], 32, 126, 2, 180)" skaliert alle 94 möglichen Befehle, *space* bis ~, lesbar vom Arduino in ASCII auf 2 bis 180 für das Servo. jedes Byte kleiner als ASCII 32 (Leerzeichen) oder höher 126 (~) ist standardmäßig 63 (?) Die Spurleisten bieten eine einfachere Schnittstelle für direkte Befehle. Jeder Schritt sendet inkrementell einen seriellen Befehl an das Arduino.

Schritt 6: Werden Sie kreativ

Werde kreativ!
Werde kreativ!
Werde kreativ!
Werde kreativ!

Denken Sie an coole Dinge, die Sie damit machen können. Einige Ideen: 1. Ferngas für ein Auto. 2. 3D-Kamerahalterung 3. Unterwasser-Rover Viel Spaß!!

Empfohlen: