Kazalo:

Serijski krmilnik na osnovi Arduino: 6 korakov
Serijski krmilnik na osnovi Arduino: 6 korakov

Video: Serijski krmilnik na osnovi Arduino: 6 korakov

Video: Serijski krmilnik na osnovi Arduino: 6 korakov
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, November
Anonim
Serijski krmilnik na osnovi Arduino
Serijski krmilnik na osnovi Arduino
Serijski krmilnik na osnovi Arduino
Serijski krmilnik na osnovi Arduino

To je preprost serijski krmilnik za več servomotorjev na osnovi Arduina. (tudi moj prvi pouk:))

Večina dela pri tem je nastala zaradi pridobivanja programske opreme za pogovor z arduinom in izdelave protokola za prenos podatkov. Kar zadeva strojno opremo, sem uporabil le dva servomotorja (tukaj standardni servomotor Parallax.) Sparkfun Arduino ProtoShield in Arduino Duemilanove z ATMEGA328, vendar lahko večino teh delov zamenjamo s podobnimi elementi. Ta projekt sem si zamislil kot del sistema RC, vendar je vzpostavitev komunikacije vzela veliko časa. Če ima kdo kakšne izboljšave, ideje ali hrošče, naj komentira. EDIT: To sem napisal pred časom, pred kratkim sem ga objavil.

Korak: Stvari, ki jih boste morda potrebovali …

Stvari, ki jih boste morda potrebovali…
Stvari, ki jih boste morda potrebovali…
Stvari, ki jih boste morda potrebovali…
Stvari, ki jih boste morda potrebovali…

Za izgradnjo tega boste potrebovali nekaj stvari. 1. Arduino plošča (po vaši izbiri) 2. dva (ali en) servo pogon 3. mostične žice 4. Visual Studio 2008 Express - povezava (neobvezno) 5. Arduino IDE - povezava Oprostite oboževalcem Linuxa in Applea, moj program deluje samo na windows zaenkrat, vendar lahko še vedno ročno pošiljate serijske ukaze na arduino, ne da bi spremenili kodo.

2. korak: Povežite strojno opremo

Povežite strojno opremo
Povežite strojno opremo

V tem koraku ni nič zapletenega: samo en servo priključite na pin 9, drugega pa na pin 10.

3. korak: Programirajte Arduino

Programirajte Arduino
Programirajte Arduino

zdaj lahko skico naložite na arduino.

Tu je preprosta razčlenitev kode: #include Servo myservo; // ustvarite servo objekt za krmiljenje servo Servo myservo1; int incomingByte = 0, datacount = 0, števec = 0, pripravljen = 0; // za dohodne serijske podatke char char [10]; const char verify [8] = "ma11hew"; ukaz char [3]; void setup () {myservo.attach (9); myservo1.attach (10); Serial.begin (38400); // odpre serijska vrata, nastavi hitrost prenosa podatkov Serial.println ("Hi Arduino Here!"); // dodano za pomoč pri identifikaciji serijskih vrat To samo nastavi serijska vrata in servomotorje. int i; za (i = 0; i <180; i ++) {myservo.write (i); zamuda (15); } myservo.write (5); za (i = 0; i <180; i ++) {myservo1.write (i); zamuda (15); } myservo1.write (5); } Enostavno pometanje za preverjanje pravilnega delovanja servomotorjev. void loop () {ready = 0; števec = 0; while (1 == 1) {if (Serial.read ()! = preveri [števec]) {break; } if (števec == 6) {zakasnitev (20); ukaz [0] = Serial.read (); ukaz [1] = Serial.read (); // if (Serial.read () == ((ukaz [1] * 12) % 8)) // {ready = 1; //} Serial.println ("shranjen ukaz"); } števec ++; zamuda (2); } s tem se v serijskem vmesnem pomnilniku preveri pravilen niz za pooblastitev, nato za ukaz zgrabi dva bajta. komentirana izjava if dopušča improvizirano kontrolno vsoto, vendar bi otežila ročno povezovanje. ready lahko nastavite na 0, zato ukazi ne bodo razčlenjeni, na primer v primeru poškodovanih podatkov. // iskanje po ukazih if (ready == 1) {if (command [0] == 'T') {command [0] = 0; Serial.print ("krmiljenje plina na zatiču 9 do:"); Serial.println (zemljevid (ukaz [1], 32, 126, 2, 180), DEC); myservo.write (zemljevid (ukaz [1], 32, 126, 2, 180)); } if (ukaz [0] == 'S') {ukaz [0] = 0; Serial.print ("krmiljenje plina na zatiču 10 do:"); Serial.println (zemljevid (ukaz [1], 32, 126, 2, 180), DEC); myservo1.write (zemljevid (ukaz [1], 32, 126, 2, 180)); }}} preostala koda je iskanje ukazov za veljavne ukaze (T ali S.), če se ujema z naslednjim bajtom in ga pošlje na servo. več na zemljevidu (ukaz [1], 32, 126, 2, 180) pozneje … tukaj je koda razširljiva za vse, kar boste morda potrebovali (npr. luči, motorji, IR itd.), ta koda bi morala delovati brez spremembe.

4. korak: Namestite programsko opremo

Namestite programsko opremo
Namestite programsko opremo

Namestitev tega namestitvenega programa nsis imam na dva načina: spodaj prenesite samorazpakirajoči namestitveni program in ga zaženite. Med namestitvijo boste imeli možnost namestiti vire. binarni paket namestitvenega programa namesti jedro c ++ dlls, tako da ga je mogoče zagnati v računalniku brez že nameščenega vizualnega c ++. Ko namestitveni program dokonča, ga lahko zaženete na namizju ali v meniju Start. zip way (nepreverjeno): Prenesite in zaženite, to bi moralo delovati. mogoče. (Arhiv zip ima isto strukturo map, ki jo je ustvaril namestitveni program, brez virov. Nimam računalnika brez vizualnega studia, da bi ga preizkusil, da morda ne bo deloval.)

5. korak: Uporabite vmesniški program

Uporabite vmesniški program
Uporabite vmesniški program
Uporabite vmesniški program
Uporabite vmesniški program

Za uporabo programa najprej izberite hitrost prenosa, opredeljeno v skici arduino. Nespremenjena skica je privzeto nastavljena na 38400 baud, vendar jo lahko spremenite tako, da ustreza vašim potrebam za stvari, kot je počasnejša radijska povezava. opomba: hitrosti prenosa, višje od 38400, niso bile zelo stabilne, mislim, da je to zato, ker se uart napolni, preden je mogoče obdelati podatke. Nato izberite vrata COM, ki jih želite uporabiti. program je privzeto nastavljen na COM4, ne pozabite ga spremeniti, sicer se bo program zrušil. Na koncu kliknite odpri. Če je vse v redu, bo program odprl izbrana serijska vrata pri izbrani hitrosti prenosa. V nasprotnem primeru se bo program verjetno zrušil z neobdelano izjemo. preverite, ali so vrata pravilna, in poskusite znova. Za pošiljanje neposrednih ukazov arduinu uporabite polja z besedilom. "Zemljevid (ukaz [1], 32, 126, 2, 180)" spreminja vseh 94 možnih ukazov, * presledek * do ~, ki jih arduino v ASCII lahko bere na 2 do 180 za servo. kateri koli bajt, manjši od ASCII 32 (presledek) ali nad 126 (~), je privzeto nastavljen na 63 (?) Sledilne vrstice zagotavljajo vmesnik za neposredne ukaze. vsak korak postopoma pošilja serijski ukaz arduinu.

6. korak: Bodite ustvarjalni

Bodite ustvarjalni!
Bodite ustvarjalni!
Bodite ustvarjalni!
Bodite ustvarjalni!

Pomislite na kul stvari, ki jih lahko naredite s tem. Nekaj idej: 1. Daljinski plin za avto. 2. Nosilec za 3D kamero 3. podvodni rover Lepo se imejte !!

Priporočena: