Sisällysluettelo:

Arduinon ja PC: n ohjaama robotti käsivarsi: 10 vaihetta
Arduinon ja PC: n ohjaama robotti käsivarsi: 10 vaihetta

Video: Arduinon ja PC: n ohjaama robotti käsivarsi: 10 vaihetta

Video: Arduinon ja PC: n ohjaama robotti käsivarsi: 10 vaihetta
Video: How to control Servo motor with Arduino with and without potentiometer 2024, Marraskuu
Anonim
Image
Image
Teoria projektin takana
Teoria projektin takana

Robottiaseita käytetään laajalti teollisuudessa. Onko kyse kokoonpanotoimista, hitsausta tai jopa yhtä käytetään ISS: n (International Space Station) telakointiin, ne auttavat ihmisiä työssä tai korvaavat ihmisen kokonaan. Rakentamani käsivarsi on pienempi esitys robottivarresta, jota on tarkoitus käyttää liikkuviin esineisiin. Sitä ohjaa arduino pro mini, jossa on jo sisäänrakennettu kirjasto servojen ohjaamiseen. Servoja ohjaa PWM (Pulse Width Modulation), jota ei ole vaikea ohjelmoida, mutta tämä kirjasto helpottaa sitä. Käyttäjä voi ohjata näitä servoja potentiometreillä, jotka on suunniteltu toimimaan jännitteenjakajina, tai PC -ohjelmasta, joka käyttää 4 liukusäädintä servomoottoreiden ohjaamiseen.

Tätä projektia varten minun piti suunnitella oma piirilevy ja tehdä se, luoda käsivarsien 3D -malleja ja kirjoittaa koodi, joka ohjaa kaikkea. Sen päälle koodasin pythoniin lisäohjelman, joka lähettää signaaleja arduinoon, joka onnistuu purkamaan signaalin ja siirtämään servot käyttäjän asettamaan paikkaan.

Vaihe 1: Teoria projektin takana

Teoria projektin takana
Teoria projektin takana

Arduino on loistava siinä mielessä, että se tarjoaa ilmaisen kirjaston työskennellä. Tässä projektissa käytin kirjastoa Servo.h, joka helpottaa servojen hallintaa.

Servomoottoria ohjaa PWM -pulssileveysmodulaatio - mikä tarkoittaa, että servon ohjaamiseksi sinun on tehtävä lyhytjännitepulsseja. Servo voi purkaa tämän signaalin pituuden ja kääntyä tiettyyn asentoon. Ja tässä käytin jo mainittua kirjastoa. Minun ei tarvinnut laskea signaalin pituutta itse, mutta käytin kirjaston toimintoja, joille välitän parametrin asteina ja se antaa signaalin.

Servojen ohjaamiseen käytin potentiometrejä, jotka toimivat jännitteenjakajina. Arduino -levyissä on useita analogisia/digitaalisia muuntimia, joita käytin projektissa. Pohjimmiltaan arduino valvoo jännitettä potentiometrin keskitapissa ja jos se pyörii toiselle puolelle, jännite on 0 volttia (arvo = 0) ja toisella puolella 5 volttia (arvo = 1023). Tämä arvo skaalataan sitten välillä 0 - 1023 - 0 - 180 ja siirretään sitten jo mainittuun toimintoon.

Toinen aihe on sarjaviestintä arduinon kanssa, jonka käsittelen vain lyhyesti. Pohjimmiltaan tietokoneelle kirjoitettu ohjelma lähettää käyttäjän valitseman arvon, arduino voi purkaa sen ja siirtää servon tiettyyn paikkaan

Vaihe 2: Piirilevyn suunnittelu

Piirilevyn suunnittelu
Piirilevyn suunnittelu
Piirilevyn suunnittelu
Piirilevyn suunnittelu
Piirilevyn suunnittelu
Piirilevyn suunnittelu

Suunnittelin 2 PCB: tä - yhden pääohjaukseen, jossa on arduino ja nastat servoja varten, ja toinen on potentiometrit. Kahden PCB: n syy on se, että halusin ohjata robottivartta turvalliselta etäisyydeltä. Molemmat piirit on kytketty tietyn pituisella kaapelilla - minun tapauksessani 80 cm.

Valitsin virtalähteeksi ulkoisen sovittimen, koska käyttämäni servot kuluttavat paljon enemmän virtaa kuin arduino voi tarjota. Kuten näette, on joitain kondensaattoreita, joita en ole vielä maininnut. Ne ovat suodatukseen käytettäviä kondensaattoreita. Kuten tiedät nyt, servomoottoria ohjataan lyhyillä impulsseilla. Nämä impulssit voivat saada aikaan sen, että syöttöjännitehäviöt ja potentiometrit, jotka olivat aiemmin 0-5 voltin alueella, ovat nyt pienempiä. Tämä tarkoittaa, että keskitapin jännite muuttuu ja arduino saa tämän arvon ja muuttaa servomoottorin asennon. Tämä voi jatkua ikuisesti ja aiheuttaa ei -toivottuja värähtelyjä, jotka voidaan poistaa joidenkin kondensaattoreiden kanssa rinnakkain.

Vaihe 3: Piirilevyn valmistus

PCB: n valmistus
PCB: n valmistus
PCB: n valmistus
PCB: n valmistus
PCB: n valmistus
PCB: n valmistus

PCB: n valmistamiseksi suosittelen lukemaan tämän.

Käytin Iron on Glossy Paper -menetelmää ja se toimi hienosti.

Sitten juotin osat piirilevylle. Näet, että käytin arduino -liitäntää siltä varalta, että tarvitsen sitä tulevaisuudessa.

Vaihe 4: Varren suunnittelu

Varren suunnittelu
Varren suunnittelu
Varren suunnittelu
Varren suunnittelu
Varren suunnittelu
Varren suunnittelu

Tämä ei suinkaan ollut hankkeen toteuttamisen vaikein osa.

Koko kokoonpano koostuu 8 osasta, joista 4 eivät ole liikkuvia osia - potentiometrien laatikko ja pohja, jossa arduino sijaitsee - ja muut neljä ovat varsi itse. En mene paljon yksityiskohtiin, paitsi että muotoilu on melko intuitiivista ja jollain tavalla yksinkertaista. Se on suunniteltu sopimaan mukautettuun piirilevyyn ja servoihin, jotka sisällytän osaluetteloon.

Vaihe 5: Osien tulostaminen

Osien tulostaminen
Osien tulostaminen
Osien tulostaminen
Osien tulostaminen
Osien tulostaminen
Osien tulostaminen

Osat painettiin Prusa -tulostimella. Jotkut kasvot piti hiota hiukan ja porata reikiä. Myös tukipilarit oli poistettava.

Vaihe 6: Yhdistä kaikki

Kokonaisuuden yhdistäminen
Kokonaisuuden yhdistäminen
Kokonaisuuden yhdistäminen
Kokonaisuuden yhdistäminen
Kokonaisuuden yhdistäminen
Kokonaisuuden yhdistäminen
Kokonaisuuden yhdistäminen
Kokonaisuuden yhdistäminen

Tässä vaiheessa, kuten otsikko sanoo, laitoin kaiken yhteen.

Aluksi juotin johdot potentiometreihin ja sitten nuo johdot piirilevyyn. Potentiometrit sopivat hienosti reikiin ja liimasin piirilevyn kuumana pilareihin, jotka oli painettu laatikon pohjaan. Voit porata reikiä levyyn ja laatikkoon, mutta huomasin, että liimaaminen on enemmän kuin tarpeeksi. Sitten suljin laatikon molemmat osat ja kiinnitin ne paikoilleen neljällä ruuvilla, jotka sopivat suunnitelluihin reikiin.

Seuraavana vaiheena tein litteän nauhakaapelin molempien levyjen liittämiseksi.

Päälaatikossa juotin johdot liittimen VCC -nastasta kytkimeen ja sitten levyn Vcc: hen ja levyn GND: stä liittimen GND: hen. Sitten liimasin liittimen paikalleen ja lautasen pilareihin. Liitin sopii suoraan reikään, joten kuumaa liimaa ei tarvita.

Sitten kiinnitin ruuvien avulla alemman servon laatikon pohjaan.

Tämän jälkeen laitoin laatikon yläosan alaosaan ja kiinnitin sen 4 ruuvilla samalla tavalla kuin potentiometrikotelon kanssa.

Seuraava osa oli hieman hankala, mutta onnistuin laittamaan loput käsivarteen erilaisten muttereiden ja tyynyjen kanssa, eikä se ollut niin tiukka kuin odotin, koska suunnittelin osien välisiä toleransseja, joten niiden kanssa on helpompi työskennellä.

Ja viimeisenä vaiheena laitoin teippiä laatikoiden pohjalle, koska muuten ne liukuvat.

Vaihe 7: Arduinon ohjelmointi

Arduinon ohjelmointi
Arduinon ohjelmointi
Arduinon ohjelmointi
Arduinon ohjelmointi
Arduinon ohjelmointi
Arduinon ohjelmointi

Olen jo maininnut, miten ohjelma toimii teoriassa projektin takana, mutta aion rikkoa sen vielä enemmän.

Joten alussa meidän on määriteltävä muutamia muuttujia. Useimmiten se kopioidaan 4 kertaa, koska meillä on 4 servoa, ja mielestäni on tarpeetonta tehdä monimutkaisempaa logiikkaa vain ohjelman lyhentämiseksi.

Seuraavaksi on tyhjä asennus, jossa servojen nastat on määritelty.

Sitten on tyhjä silmukka - osa ohjelmaa, joka kiertää loputtomasti. Tässä osassa ohjelma ottaa arvon potentiometristä ja skaalaa sen. Mutta on yksi ongelma, että potentiometrin arvo hyppää melko vähän, joten minun piti lisätä suodatin, joka tekee viimeisten viiden arvon keskiarvon, ja sitten se antaa tuloksen. Tämä estää ei -toivotun heilumisen.

Ohjelman viimeinen osa lukee tiedot sarjaportista ja päättää lähetettyjen tietojen perusteella, mitä tehdä.

Koodin ymmärtämiseksi täysin suosittelen vierailemaan virallisilla arduino -verkkosivustoilla.

Vaihe 8: Ohjelmointi Pythonissa

Ohjelmointi Pythonissa
Ohjelmointi Pythonissa
Ohjelmointi Pythonissa
Ohjelmointi Pythonissa
Ohjelmointi Pythonissa
Ohjelmointi Pythonissa

Tämä osa tätä hanketta ei ole välttämätön, mutta mielestäni se antaa vain lisäarvoa tälle projektille.

Python tarjoaa paljon kirjastoja, jotka ovat vapaasti käytettävissä, mutta tässä projektissa käytän vain tkinter- ja sarjaversioita. Tkinteriä käytetään graafisessa käyttöliittymässä (GUI) ja sarjassa, kuten sen nimi sanoo, käytetään sarjaliikenteessä.

Tämä koodi luo graafisen käyttöliittymän, jossa on neljä liukusäädintä, joiden vähimmäisarvo on 0 ja enintään 180. Saattaa olla vihje sinulle, että se on asteina ja jokainen liukusäädin on ohjelmoitu ohjaamaan yhtä servoa. Tämä ohjelma on melko yksinkertainen - se ottaa arvon ja lähettää sen arduinoon. Mutta tapa lähettää se on mielenkiintoinen. Jos päätät muuttaa ensimmäisen servon arvon 123 asteeseen, se lähettää arduino -arvon 1123. Jokaisen lähetetyn numeron ensimmäinen numero kertoo, mitä servoa aiotaan ohjata. Arduinolla on koodi, joka voi purkaa tämän ja siirtää oikean servon.

Vaihe 9: Osaluettelo

Osaluettelo
Osaluettelo
  • Arduino Pro Mini 1 kpl
  • Servo FS5106B 1 kpl
  • Servo Futaba S3003 2 kpl
  • Nastatanko 2x5 1 kpl
  • Tappiotsikko 1x3 6 kpl
  • Kondensaattori 220uF 3 kpl
  • Micro Servo FS90 1 kpl
  • Liitin AWP-10 2 kpl
  • Liitin FC681492 1 kpl
  • Kytkin P-B100G1 1 kpl
  • Pistorasia 2x14 1 kpl
  • TTL-232R-5v-muunnin 1 kpl
  • Potentiometri B200K 4 kpl
  • ja monia muita ruuveja, tyynyjä ja muttereita

Vaihe 10: Viimeiset ajatukset

Kiitos, että luit tämän ja toivon, että olen ainakin motivoinut sinua. Tämä on ensimmäinen isompi projektini, jonka tein kokonaan itse kopioimatta tavaroita Internetistä ja ensimmäisestä ohjeesta. Tiedän, että käsivartta voitaisiin päivittää, mutta olen toistaiseksi tyytyväinen siihen. Kaikki osat ja lähdekoodit ovat ilmaisia, voit käyttää sitä ja muuttaa sitä haluamallasi tavalla. Jos sinulla on kysyttävää, voit kysyä ne kommenttikentässä. Voit myös katsoa videoita, ne eivät ole hyvälaatuisia, mutta ne osoittavat projektin toiminnallisuuden.

Suositeltava: