Sadržaj:

Serijski servo upravljač zasnovan na Arduinu: 6 koraka
Serijski servo upravljač zasnovan na Arduinu: 6 koraka

Video: Serijski servo upravljač zasnovan na Arduinu: 6 koraka

Video: Serijski servo upravljač zasnovan na Arduinu: 6 koraka
Video: ESP8266 Diesel Injector Purging Station - PWM NodeMCU pump flow Control (Subtittled) 2024, Studeni
Anonim
Serijski servo upravljač zasnovan na Arduinu
Serijski servo upravljač zasnovan na Arduinu
Serijski servo upravljač zasnovan na Arduinu
Serijski servo upravljač zasnovan na Arduinu

Ovo je jednostavan serijski kontroler za više servo servera zasnovanih na Arduinu. (i moj prvi instruktor:))

Većina posla u ovome došla je od dobivanja softvera za razgovor s arduinom i izrade protokola za prijenos podataka. Što se tiče hardverskog aspekta, sve što sam koristio su dva serva (ovdje standardni Parallax servo.) Sparkfun Arduino ProtoShield i Arduino Duemilanove s ATMEGA328, ali većina ovih dijelova može se zamijeniti sličnim stavkama. Zamišljao sam ovaj projekt kao dio RC sustava, ali postavljanje komunikacije oduzelo je puno vremena. Ako netko ima poboljšanja, ideje ili greške, neka komentira. EDIT: Ovo sam napisao prije nekog vremena, nedavno sam to trebao objaviti.

Korak 1: Stvari koje bi vam mogle zatrebati …

Stvari koje će vam možda trebati…
Stvari koje će vam možda trebati…
Stvari koje će vam možda trebati…
Stvari koje će vam možda trebati…

Neke stvari će vam trebati da to izgradite. 1. Arduino ploča (po vašem izboru) 2. dva (ili jedan) servo upravljač 3. kratkospojne žice 4. Visual Studio 2008 Express - veza (izborno) 5. Arduino IDE - veza Nažalost, obožavatelji Linuxa i Applea, moj program radi samo na Windows za sada, ali i dalje možete ručno slati serijske naredbe na arduino bez promjene koda.

Korak 2: Povežite hardver

Spojite hardver
Spojite hardver

U ovom koraku nema ništa složeno. Samo povežite jedan servo na pin 9, a drugi na pin 10.

Korak 3: Programirajte Arduino

Programirajte Arduino
Programirajte Arduino

sada možete postaviti skicu na arduino.

Evo jednostavne analize koda: #include Servo myservo; // izrada servo objekta za upravljanje servo Servo myservo1; int incomingByte = 0, broj podataka = 0, brojač = 0, spreman = 0; // za dolazne serijske podatke char podataka [10]; const char verify [8] = "ma11hew"; naredba char [3]; void setup () {myservo.attach (9); myservo1.attach (10); Serial.begin (38400); // otvara serijski port, postavlja brzinu prijenosa Serial.println ("Zdravo Arduino ovdje!"); // dodano kako bi se identificirao serijski port Ovo samo postavlja serijski port i servosisteme. int i; za (i = 0; i <180; i ++) {myservo.write (i); kašnjenje (15); } myservo.write (5); za (i = 0; i <180; i ++) {myservo1.write (i); kašnjenje (15); } myservo1.write (5); } Jednostavno pomeranje za provjeru ispravnosti servo pogona. void loop () {spreman = 0; brojač = 0; while (1 == 1) {if (Serial.read ()! = verify [brojač]) {break; } if (brojač == 6) {odgoda (20); naredba [0] = Serial.read (); naredba [1] = Serial.read (); // if (Serial.read () == ((naredba [1] * 12) % 8)) // {spreman = 1; //} Serial.println ("spremljena naredba"); } brojač ++; kašnjenje (2); } ovo provjerava je li serijski međuspremnik ispravan autorizacijski niz, a zatim zgrabi dva bajta za naredbu. komentirana izjava if dopušta improvizirani kontrolni zbroj, ali bi otežala ručno povezivanje. ready može biti postavljeno na 0 pa se naredbe neće raščlaniti, na primjer u slučaju oštećenih podataka. // pretraživanje po naredbama if (ready == 1) {if (command [0] == 'T') {command [0] = 0; Serial.print ("kontrola gasa na pinu 9 do:"); Serial.println (karta (naredba [1], 32, 126, 2, 180), DEC); myservo.write (karta (naredba [1], 32, 126, 2, 180)); } if (naredba [0] == 'S') {naredba [0] = 0; Serial.print ("kontrola gasa na pinu 10 do:"); Serial.println (karta (naredba [1], 32, 126, 2, 180), DEC); myservo1.write (karta (naredba [1], 32, 126, 2, 180)); }}} ostatak koda je traženje naredbe za valjane naredbe (T ili S.) ako bilo koje podudaranje uzima sljedeći bajt i šalje ga servo -u. više na karti (naredba [1], 32, 126, 2, 180) kasnije … ovdje se kôd može proširiti za sve što vam zatreba (npr. svjetla, motori, IC, itd.) ovaj kôd bi trebao dobro funkcionirati bez preinake.

Korak 4: Instalirajte softver

Instalirajte softver
Instalirajte softver

Imam dva načina za instaliranje ovog … nsis instalacijskog programa: Preuzmite samoraspakirajući instalacijski program ispod i pokrenite ga. Tijekom instalacije imat ćete mogućnost instaliranja izvora. instalacijski binarni paket instalira jezgru c ++ dlls tako da se može pokrenuti na računalu bez već instaliranog vizualnog c ++. Nakon što instalacijski program završi, možete ga pokrenuti s radne površine ili izbornika Start. zip način (neprovjeren): Preuzmite i pokrenite, to bi trebalo funkcionirati. može biti. (Zip arhiva ima istu strukturu mapa koju je stvorio instalater, bez izvora. Nemam stroj bez vizualnog studija na kojem bi je testirao kako ne bi funkcionirao.)

Korak 5: Koristite program sučelja

Koristite program sučelja
Koristite program sučelja
Koristite program sučelja
Koristite program sučelja

Za korištenje programa najprije odaberite brzinu prijenosa definiranu u arduino skici. Nepromijenjena skica zadano je postavljena na 38400 bauda, ali se može promijeniti prema vašim potrebama za stvari poput sporije radio veze. napomena: brzine prijenosa veće od 38400 nisu bile jako stabilne, mislim da je to zato što se uart napuni prije nego što se podaci mogu obraditi. Zatim odaberite COM port koji ćete koristiti. program prema zadanim postavkama na COM4 svakako ga promijenite ili će se program srušiti. Na kraju kliknite Otvori. Ako je sve prošlo dobro, program će otvoriti odabrani serijski port odabranom brzinom prijenosa. U protivnom će se program vjerojatno srušiti s neobrađenom iznimkom. provjerite je li port ispravan i pokušajte ponovno. Pomoću tekstualnih okvira pošaljite izravne naredbe arduinu. "Karta (naredba [1], 32, 126, 2, 180)" skalira sve 94 moguće naredbe, * razmak * do ~, koje arduino u ASCII -u može čitati na 2 do 180 za servo. svaki bajt manji od ASCII 32 (razmak) ili veći od 126 (~) prema zadanim postavkama iznosi 63 (?) Trake za praćenje pružaju sučelje za lakše izravne naredbe. svaki korak postepeno šalje serijsku naredbu arduinu.

Korak 6: Budite kreativni

Budite kreativni!
Budite kreativni!
Budite kreativni!
Budite kreativni!

Smislite neke super stvari s ovim. Neke ideje: 1. Daljinski gas za automobil. 2. Nosač 3D kamere 3. Podvodni rover Zabavite se !!

Preporučeni: