Cuprins:

Braț robotizat controlat de Arduino și PC: 10 pași
Braț robotizat controlat de Arduino și PC: 10 pași

Video: Braț robotizat controlat de Arduino și PC: 10 pași

Video: Braț robotizat controlat de Arduino și PC: 10 pași
Video: #robot #humanoid #Arduino My humanoid robot inmoov working on voice commands 2024, Iulie
Anonim
Image
Image
Teoria din spatele proiectului
Teoria din spatele proiectului

Brațele robotizate sunt utilizate pe scară largă în industrie. Fie că este vorba de operațiuni de asamblare, sudarea sau chiar una este utilizată pentru andocarea pe ISS (Stația Spațială Internațională), ajută oamenii la muncă sau înlocuiesc complet omul. Brațul pe care l-am construit este o reprezentare mai mică a brațului robot care ar trebui să fie folosit pentru mișcarea obiectelor. Este controlat de arduino pro mini, care are deja o bibliotecă încorporată pentru controlul servoarelor. Servo-urile sunt controlate de PWM (Pulse Width Modulation), care nu este greu de programat, dar această bibliotecă o face mai ușoară. Utilizatorul poate controla acele servome cu potențiometre care sunt proiectate să acționeze ca divizoare de tensiune sau din program pe un computer care utilizează 4 glisoare pentru controlul servo-motoarelor.

Pentru acest proiect a trebuit să-mi proiectez PCB-ul personalizat și să-l fac, să creez modele 3D de braț și să scriu cod care să le controleze pe toate. Pe deasupra am codificat un program suplimentar în python care trimite semnale către arduino, care reușește să decodeze acel semnal și să mute servosele în poziția pe care a setat-o utilizatorul.

Pasul 1: Teoria din spatele proiectului

Teoria din spatele proiectului
Teoria din spatele proiectului

Arduino este excelent în acest fel, oferind bibliotecă gratuită pentru a lucra. Pentru acest proiect am folosit biblioteca Servo.h care facilitează controlul servoarelor.

Servomotorul este controlat de PWM -Pulse Width Modulation- ceea ce înseamnă că, pentru a controla servo, trebuie să faceți impulsuri de scurtă tensiune. Servo poate decoda lungimea acestui semnal și se poate roti în poziția dată. Și aici am folosit biblioteca menționată deja. Nu a trebuit să calculez singura lungimea semnalului, dar am folosit funcțiile bibliotecii la care trec parametrul în grade și face semnal.

Pentru controlul servoarelor am folosit potențiometre care acționează ca divizoare de tensiune. Plăcile Arduino au mai multe convertoare analogice / digitale pe care le-am folosit pentru proiect. Practic, arduino monitorizează tensiunea pe pinul central al potențiometrului și, dacă se rotește la o tensiune laterală, este de 0 volți (valoare = 0), iar de cealaltă parte este de 5 volți (valoare = 1023). Această valoare este apoi scalată de la intervalul 0 - 1023 la 0 - 180 și apoi este trecută la funcția deja menționată.

Un alt subiect este comunicarea în serie cu arduino pe care o voi aborda doar pe scurt. Practic, programul scris pe PC trimite valoarea aleasă de utilizator, arduino o poate decoda și muta servo în poziția dată

Pasul 2: Proiectarea PCB

Proiectarea PCB
Proiectarea PCB
Proiectarea PCB
Proiectarea PCB
Proiectarea PCB
Proiectarea PCB

Am proiectat 2 PCB-uri - unul pentru controlul principal unde este arduino și pini pentru servos și pe al doilea sunt potențiometre. Motivul pentru 2 PCB-uri este că am vrut să controlez brațul robotic de la distanță sigură. Ambele circuite sunt conectate printr-un cablu de lungime dată - în cazul meu 80 cm.

Pentru sursa de alimentare, am ales adaptorul extern, deoarece servourile pe care le-am folosit consumă mult mai multă energie decât poate furniza arduino. După cum puteți vedea, există câteva condensatoare pe care nu le-am menționat încă. Sunt condensatori folosiți pentru filtrare. După cum știți acum, servomotorul este controlat de impulsuri scurte. Aceste impulsuri pot face ca căderile de tensiune de alimentare și potențiometrele care anterior aveau o gamă de 0-5 volți să aibă acum o rază mai mică. Asta înseamnă că tensiunea pe pinul mediu se schimbă și arduino primește această valoare și schimbă poziția în care este servomotorul. Acest lucru poate continua pentru totdeauna și provoacă oscilații nedorite, care pot fi eliminate de unele condensatoare paralele la alimentare.

Pasul 3: Realizarea PCB-ului

Realizarea PCB-ului
Realizarea PCB-ului
Realizarea PCB-ului
Realizarea PCB-ului
Realizarea PCB-ului
Realizarea PCB-ului

Pentru a face PCB, vă sugerez să citiți acest lucru.

Am folosit metoda Fier pe hârtie lucioasă și a funcționat excelent.

Apoi am lipit piese pe PCB. Puteți vedea că am folosit socket arduino în caz că voi avea nevoie de el în viitor.

Pasul 4: Proiectarea brațului

Proiectarea brațului
Proiectarea brațului
Proiectarea brațului
Proiectarea brațului
Proiectarea brațului
Proiectarea brațului

Aceasta nu a fost în niciun caz cea mai grea parte a realizării acestui proiect.

Configurarea completă este realizată din 8 părți în care 4 nu sunt părți în mișcare - cutie pentru potențiometre și bază unde se află arduino - și alte patru sunt brațul în sine. Nu voi intra în prea multe detalii, cu excepția faptului că designul este destul de intuitiv și într-un fel simpl. Este conceput pentru a se potrivi cu PCB-urile și servo-urile personalizate pe care le voi include în lista de piese.

Pasul 5: Tipărirea pieselor

Tipărirea pieselor
Tipărirea pieselor
Tipărirea pieselor
Tipărirea pieselor
Tipărirea pieselor
Tipărirea pieselor

Părțile au fost tipărite pe imprimanta Prusa. Unele fețe trebuiau să fie măcinate puțin și găuri găurite prin jgheab. De asemenea, stâlpii de susținere trebuiau îndepărtați.

Pasul 6: Puneți totul împreună

Punând totul împreună
Punând totul împreună
Punând totul împreună
Punând totul împreună
Punând totul împreună
Punând totul împreună
Punând totul împreună
Punând totul împreună

În acest pas, așa cum spune titlul, am pus totul împreună.

La început am lipit fire pe potențiometre și apoi acele fire pe PCB. Potențiometrele se potrivesc frumos la găuri și am lipit la cald PCB-ul de pe stâlpii care au fost imprimați pe partea de jos a cutiei. Puteți face găuri în tablă și în cutie, dar am aflat că lipirea ei este mai mult decât suficientă. Apoi am închis ambele părți ale cutiei și le-am fixat în poziție cu 4 șuruburi care se potrivesc în găurile pe care le-am proiectat.

Ca pas următor, am realizat un cablu cu bandă plană pentru a conecta ambele plăci.

În cutia principală am lipit fire de la pinul VCC al conectorului pentru a comuta și apoi la Vcc al plăcii și de la GND al plăcii la GND al conectorului. Apoi am lipit fierbinte conectorul în poziție și am plăcut pe stâlpi. Conectorul se potrivește direct în gaură, astfel încât nu este nevoie de lipici fierbinți.

Apoi, folosind șuruburi, am atașat servo-ul inferior la partea inferioară a cutiei.

După aceea am pus partea superioară a cutiei pe partea inferioară și la fel ca și cu cutia potențiometrului am asigurat-o cu 4 șuruburi.

Următoarea parte a fost un pic dificilă, dar am reușit să pun restul brațului împreună cu diverse piulițe și tampoane și nu a fost atât de strâns pe cât mă așteptam, deoarece am proiectat unele toleranțe între piese, deci este mai ușor să lucrez cu ele.

Și ca ultim pas, am pus niște bandă pe fundul cutiilor, pentru că altfel ar aluneca.

Pasul 7: Programarea Arduino

Programarea Arduino
Programarea Arduino
Programarea Arduino
Programarea Arduino
Programarea Arduino
Programarea Arduino

Am menționat deja cum funcționează programul în teorie în spatele proiectului, dar am să-l despart și mai mult.

Deci, la început trebuie să definim câteva variabile. De cele mai multe ori este copiat de 4 ori pentru că avem 4 servouri și în opinia mea nu este necesar să facem o logică mai complicată doar pentru a face programul puțin mai scurt.

Apoi, există o configurare nulă în care sunt definite pinii de servos.

Apoi, există o buclă nulă - o parte a programului care se bucură infinit. În această parte, programul preia valoarea de la potențiometrul pe care îl scala și pune în ieșire. Dar există o problemă: valoarea potențiometrului sare destul de mult, așa că am nevoie să adaug un filtru care să facă media ultimelor 5 valori și apoi să pună pe ieșire. Acest lucru previne oscilația nedorită.

Ultima parte a programului citește datele de la portul serial și decide ce să facă pe baza datelor trimise.

Pentru a înțelege complet codul, vă sugerez să vizitați site-urile web oficiale arduino.

Pasul 8: Programare în Python

Programare în Python
Programare în Python
Programare în Python
Programare în Python
Programare în Python
Programare în Python

Această parte a acestui proiect nu este necesară, dar cred că dă mai multă valoare acestui proiect.

Python oferă o mulțime de biblioteci care sunt gratuite, dar în acest proiect folosesc doar tkinter și serial. Tkinter este utilizat pentru GUI (Graphical User Interface) și serial, așa cum spune numele său, este utilizat pentru comunicarea serial.

Acest cod creează interfață grafică cu 4 glisoare care au o valoare minimă de 0 și maxim 180. S-ar putea să vă sugerăm că este în grade și fiecare glisor este programat pentru a controla un servo. Acest program este destul de simplu - preia valoarea și o trimite la arduino. Dar modul în care trimite este interesant. Dacă alegeți să schimbați valoarea primului servo la 123 de grade, acesta va trimite la valoarea arduino 1123. Primul număr al fiecărui număr trimis indică care servo este pe cale să fie controlat. Arduino are un cod care poate decoda acest lucru și poate muta servo-ul potrivit.

Pasul 9: Lista pieselor

Lista pieselor
Lista pieselor
  • Arduino Pro Mini 1 bucată
  • Servo FS5106B 1 bucată
  • Servo Futaba S3003 2 bucăți
  • Antet pin 2x5 1 bucată
  • Antet pin 1x3 6 bucăți
  • Condensator 220uF 3 bucăți
  • Micro Servo FS90 1 bucată
  • Conector AWP-10 2 bucăți
  • Conector FC681492 1 buc
  • Comutator P-B100G1 1 bucată
  • Priză 2x14 1 bucată
  • TTL-232R-5v - convertor 1 bucată
  • Potențiometru B200K 4 bucăți
  • și multe alte șuruburi, tampoane și piulițe

Pasul 10: Gânduri finale

Vă mulțumesc că ați citit acest lucru și sper că cel puțin v-am motivat. Acesta este primul meu proiect mai mare pe care l-am realizat singur, fără să copiez lucruri de pe internet și primul mesaj instructabil. Știu că brațul ar putea fi actualizat, dar sunt mulțumit de el pentru moment. Toate piesele și codurile sursă sunt gratuite, sunteți binevenit să îl utilizați și să îl modificați în orice mod doriți. Dacă aveți întrebări, nu ezitați să le adresați în secțiunea de comentarii. Puteți privi și videoclipurile, acestea nu sunt de o calitate excelentă, dar arată funcționalitatea proiectului.

Recomandat: