INHOUDSOPGAWE:

Robotarm wat deur Arduino en rekenaar beheer word: 10 stappe
Robotarm wat deur Arduino en rekenaar beheer word: 10 stappe

Video: Robotarm wat deur Arduino en rekenaar beheer word: 10 stappe

Video: Robotarm wat deur Arduino en rekenaar beheer word: 10 stappe
Video: Robotarm 2024, Julie
Anonim
Image
Image
Teorie agter projek
Teorie agter projek

Robotwapens word wyd in die industrie gebruik. Of dit nou vir monteerbedrywighede is, sweis of selfs een word gebruik om aan te sit op ISS (Internasionale Ruimtestasie), hulle help mense in die werk of hulle vervang die mens heeltemal. Die arm wat ek gebou het, is 'n kleiner voorstelling van die robotarm wat veronderstel is om gebruik te word om voorwerpe te beweeg. Dit word beheer deur arduino pro mini, wat reeds 'n ingeboude biblioteek vir die bestuur van servo's het. Servo's word beheer deur PWM (Pulse Width Modulation) wat nie moeilik is om te programmeer nie, maar hierdie biblioteek maak dit makliker. Gebruikers kan die servo's beheer deur potensiometers wat ontwerp is om as spanningsverdelers op te tree of vanaf 'n program op 'n rekenaar wat 4 skuifknoppe gebruik om servomotors te bestuur.

Vir hierdie projek moes ek my persoonlike PCB ontwerp en dit maak, 3D -modelle van arms maak en kode skryf wat dit alles beheer. Boonop het ek 'n ekstra program in python gekodeer wat seine na arduino stuur, wat dit regkry om die sein te dekodeer en servo's te skuif na die posisie wat die gebruiker gestel het.

Stap 1: Teorie agter projek

Teorie agter projek
Teorie agter projek

Arduino is so goed dat dit gratis biblioteek bied om mee te werk. Vir hierdie projek gebruik ek biblioteek Servo.h wat die beheer van servo's soveel makliker maak.

Servomotor word beheer deur PWM -Pulse Width Modulation- wat beteken dat u servos kortspanningspulse moet maak om servo te beheer. Servo kan die lengte van hierdie sein dekodeer en na 'n gegewe posisie draai. En dit is waar ek die genoemde biblioteek gebruik het. Ek hoef nie die lengte van die sein alleen te bereken nie, maar ek gebruik die funksies van die biblioteek waarna ek net die parameter in grade deurgee, en dit maak sein.

Vir die beheer van servo's het ek potensiometers gebruik wat as spanningsverdelers dien. Arduino -borde het verskeie analoog/digitale omsetters wat ek vir die projek gebruik het. Arduino monitor basies die spanning op die middelste pen op die potensiometer, en as dit na die een syspanning draai, is dit 0 Volt (waarde = 0) en aan die ander kant is dit 5 Volt (waarde = 1023). Hierdie waarde word dan afgeskaal van die reeks 0 - 1023 tot 0 - 180 en dan word dit oorgedra na die funksie wat reeds genoem is.

'N Ander onderwerp is reekskommunikasie met arduino wat ek net kortliks sal behandel. Die program wat op die rekenaar geskryf is, stuur die waarde wat deur die gebruiker gekies is, en arduino kan dit dekodeer en die servo na 'n gegewe posisie skuif

Stap 2: Ontwerp PCB

Ontwerp PCB
Ontwerp PCB
Ontwerp PCB
Ontwerp PCB
Ontwerp PCB
Ontwerp PCB

Ek het 2 PCB's ontwerp - een vir die hoofbeheer, waar is arduino en penne vir servo's, en op die tweede een is potensiometers. Die rede vir 2 PCB's is dat ek die robotarm van veilige afstand wou beheer. Beide stroombane word met 'n gegewe lengte verbind - in my geval 80 cm.

Vir 'n kragbron het ek 'n eksterne adapter gekies omdat die servo's wat ek gebruik baie meer krag verbruik as wat arduino kan lewer. Soos u kan sien, is daar 'n paar kapasitors wat ek nog nie genoem het nie. Dit is kapasitors wat gebruik word vir filtrasie. Soos u nou weet, word die servomotor deur kort impulse beheer. Hierdie impulse kan veroorsaak dat die spanningsverlagings en potensiometers wat voorheen 0-5 volt bereik het, nou 'n kleiner bereik het. Dit beteken dat die spanning op die middelste pen verander en dat arduino hierdie waarde kry en die posisie waarin die servomotor is, verander. Dit kan vir ewig aanhou en veroorsaak dat ongewenste ossillasie wat deur sommige kondensators parallel met die toevoer uitgeskakel kan word.

Stap 3: Maak PCB

PCB maak
PCB maak
PCB maak
PCB maak
PCB maak
PCB maak

Vir die maak van PCB stel ek voor dat u dit lees.

Ek het Iron on Glossy -papiermetode gebruik en dit het baie goed gegaan.

Toe soldeer ek dele op die PCB. U kan sien dat ek 'n arduino -aansluiting gebruik het as ek dit in die toekoms nodig sal hê.

Stap 4: Ontwerp die arm

Die ontwerp van die arm
Die ontwerp van die arm
Die ontwerp van die arm
Die ontwerp van die arm
Die ontwerp van die arm
Die ontwerp van die arm

Dit was geensins die moeilikste deel van hierdie projek nie.

Die hele opstelling bestaan uit 8 dele waar 4 nie bewegende dele is nie - boks vir potensiometers en basis waar arduino geleë is - en ander vier is die arm self. Ek sal nie in detail ingaan nie, behalwe dat die ontwerp redelik intuïtief en op een of ander manier eenvoudig is. Dit is ontwerp om my pasgemaakte PCB en servo's te pas, wat ek in die lys van onderdele sal insluit.

Stap 5: Druk die onderdele af

Druk die onderdele
Druk die onderdele
Druk die onderdele
Druk die onderdele
Druk die onderdele
Druk die onderdele

Onderdele is op die Prusa -drukker gedruk. Sommige gesigte moet 'n bietjie gemaal word en gate deurboor. Die steunpilare moes ook verwyder word.

Stap 6: Alles saamvoeg

Om alles bymekaar te sit
Om alles bymekaar te sit
Om alles bymekaar te sit
Om alles bymekaar te sit
Om alles bymekaar te sit
Om alles bymekaar te sit
Om alles bymekaar te sit
Om alles bymekaar te sit

In hierdie stap, soos die titel sê, het ek dit alles saamgevoeg.

Eers het ek drade aan die potensiometers gesoldeer en dan die drade op PCB. Potensiometers pas goed by gate en ek het die PCB warm geplak op die pilare wat onderaan die boks gedruk was. U kan gate in die bord en in die boks boor, maar ek het agtergekom dat dit meer as genoeg is om dit vas te plak. Toe maak ek albei dele van die boks toe en bevestig dit met 4 skroewe wat pas in die gate wat ek ontwerp het.

As 'n volgende stap het ek 'n plat lintkabel gemaak om albei borde aan te sluit.

In die hoofkas het ek drade gesoldeer van die VCC -aansluiting om na die skakelaar te skakel en dan na die Vcc -bord en van die GND -bord na die GND -aansluiting. Toe plak ek die connector vas en plak dit op die pilare. Die aansluiting pas in die gat sodat daar geen warm gom nodig is nie.

Met behulp van skroewe het ek die onderste servo aan die onderkant van die boks vasgemaak.

Daarna het ek die boonste gedeelte van die boks op die onderste deel gesit, net soos met die potensiometerkas, het ek dit met 4 skroewe vasgemaak.

Die volgende deel was 'n bietjie lastig, maar ek het dit reggekry om die res van die arm bymekaar te sit met verskillende moere en pads, en dit was nie so styf soos ek verwag het nie, want ek het 'n paar verdraagsaamhede tussen dele ontwerp, so dit is makliker om daarmee te werk.

En as die laaste stap het ek 'n plakband onderaan die bokse gesit, want anders sou hulle gly.

Stap 7: Arduino programmeer

Programmering van Arduino
Programmering van Arduino
Programmering van Arduino
Programmering van Arduino
Programmering van Arduino
Programmering van Arduino

Ek het reeds genoem hoe die program in teorie agter die projek werk, maar ek gaan dit nog meer opbreek.

Ons moet dus aan die begin 'n paar veranderlikes definieer. Dit word meestal 4 keer gekopieer omdat ons 4 servo's het, en na my mening is dit onnodig om ingewikkelder logika te maak net om die program 'n bietjie korter te maak.

Vervolgens is daar 'n leemte -opstelling waar pennetjies servo's gedefinieer word.

Dan is daar 'n leemte -lus - 'n deel van die program wat oneindig loop. In hierdie deel neem die program die waarde van die potensiometer en skaal dit uit. Maar daar is 'n probleem: die waarde van die potensiometer spring baie, so ek moes 'n filter byvoeg wat 'n gemiddelde van die laaste 5 waardes maak en dan die uitset lewer. Dit voorkom ongewenste wankeling.

Laaste deel van die program lees data van die seriële poort en besluit wat om te doen op grond van die gestuurde data.

Om die kode volledig te verstaan, stel ek voor dat u amptelike arduino -webwerwe besoek.

Stap 8: Programmering in Python

Programmering in Python
Programmering in Python
Programmering in Python
Programmering in Python
Programmering in Python
Programmering in Python

Hierdie deel van hierdie projek is nie nodig nie, maar ek dink dit gee slegs meer waarde aan hierdie projek.

Python bied tonne gratis biblioteke aan, maar in hierdie projek gebruik ek slegs tkinter en series. Tkinter word gebruik vir GUI (grafiese gebruikerskoppelvlak) en seriële, soos die naam sê, word gebruik vir seriële kommunikasie.

Hierdie kode skep 'n GUI met 4 skuifbalkies met 'n minimum waarde van 0 en 'n maksimum van 180. Dit kan vir u 'n aanduiding wees dat dit in grade is en dat elke glyer geprogrammeer is om een servo te beheer. Hierdie program is redelik eenvoudig - dit neem die waarde en stuur dit na arduino. Maar die manier waarop dit stuur, is interessant. As u kies om die waarde van die eerste servo na 123 grade te verander, word dit gestuur na die arduino -waarde 1123. Die eerste getal van elke getal wat gestuur word, is 'n aanduiding van watter servo op die punt staan om beheer te word. Arduino het kode wat dit kan dekodeer en die regte servo kan skuif.

Stap 9: Lys van onderdele

Lys van onderdele
Lys van onderdele
  • Arduino Pro Mini 1 stuk
  • Servo FS5106B 1 stuk
  • Servo Futaba S3003 2 stukke
  • Speldkop 2x5 1 stuk
  • Speldkop 1x3 6 stukke
  • Kondensator 220uF 3 stukke
  • Micro Servo FS90 1 stuk
  • Connector AWP-10 2 stukke
  • Connector FC681492 1 stuk
  • Skakelaar P-B100G1 1 stuk
  • Sok 2x14 1 stuk
  • TTL-232R-5v-omskakelaar 1 stuk
  • Potensiometer B200K 4 stukke
  • en nog vele meer skroewe, pads en moere

Stap 10: Laaste gedagtes

Dankie dat u dit gelees het, en ek hoop dat ek u ten minste gemotiveer het. Dit is my eerste groter projek wat ek self gemaak het sonder om dinge van die internet en die eerste instruksiepos te kopieer. Ek weet dat die arm opgegradeer kan word, maar ek is vir eers tevrede daarmee. Alle onderdele en bronkodes is gratis; u is welkom om dit te gebruik en op enige manier te verander. As u enige vrae het, stel dit gerus in die kommentaarafdeling. U kan ook na die video's kyk, hulle is nie van uitstekende gehalte nie, maar hulle wys die funksionaliteit van die projek.

Aanbeveel: