Sommario:

Braccio robotico controllato da Arduino e PC: 10 passaggi
Braccio robotico controllato da Arduino e PC: 10 passaggi

Video: Braccio robotico controllato da Arduino e PC: 10 passaggi

Video: Braccio robotico controllato da Arduino e PC: 10 passaggi
Video: Come ho costruito un BRACCIO ROBOTICO con ARDUINO e INTERFACCIA TOUCH - Come Funziona, Come è Fatto 2024, Dicembre
Anonim
Image
Image
Teoria dietro il progetto
Teoria dietro il progetto

I bracci robotici sono ampiamente utilizzati nell'industria. Che si tratti di operazioni di montaggio, saldatura o anche uno viene utilizzato per l'attracco sulla ISS (Stazione Spaziale Internazionale), aiutano l'uomo nel lavoro o lo sostituiscono totalmente. Il braccio che ho costruito è una rappresentazione più piccola del braccio robotico che dovrebbe essere utilizzato per spostare gli oggetti. È controllato da arduino pro mini che ha già una libreria integrata per il controllo dei servi. I servi sono controllati da PWM (Pulse Width Modulation) che non è difficile da programmare, ma questa libreria lo rende più facile. L'utente può controllare quei servi da potenziometri progettati per fungere da divisori di tensione o da un programma su PC che utilizza 4 cursori per controllare i servomotori.

Per questo progetto ho dovuto progettare il mio PCB personalizzato e realizzarlo, creare modelli 3D del braccio e scrivere il codice che controlla tutto. Inoltre ho codificato un programma aggiuntivo in Python che invia segnali ad arduino che riesce a decodificare quel segnale e spostare i servi nella posizione impostata dall'utente.

Passaggio 1: teoria alla base del progetto

Teoria dietro il progetto
Teoria dietro il progetto

Arduino è fantastico in quanto offre una libreria gratuita con cui lavorare. Per questo progetto ho utilizzato la libreria Servo.h che rende il controllo dei servi molto più semplice.

Il servomotore è controllato da PWM -Pulse Width Modulation- il che significa che per controllare il servo è necessario effettuare brevi impulsi di tensione. Il servo può decodificare la lunghezza di questo segnale e ruotare in una determinata posizione. Ed è qui che ho usato la libreria già menzionata. Non ho dovuto calcolare la lunghezza del segnale da solo, ma ho usato le funzioni della libreria a cui ho appena passato il parametro in gradi e fa segnale.

Per controllare i servi ho usato dei potenziometri che fungono da divisori di tensione. Le schede Arduino hanno diversi convertitori analogico/digitale che ho utilizzato per il progetto. Fondamentalmente arduino sta monitorando la tensione sul pin centrale sul potenziometro e se ruota su un lato la tensione è 0 Volt (valore = 0) e dall'altro è 5 Volt (valore = 1023). Questo valore viene quindi scalato dall'intervallo 0 - 1023 a 0 - 180 e quindi passato alla funzione già menzionata.

Un altro argomento è la comunicazione seriale con arduino che tratterò solo brevemente. Fondamentalmente il programma scritto su PC invia il valore scelto dall'utente, arduino può decodificarlo e spostare il servo nella posizione data

Passaggio 2: progettazione PCB

Progettazione PCB
Progettazione PCB
Progettazione PCB
Progettazione PCB
Progettazione PCB
Progettazione PCB

Ho progettato 2 PCB: uno per il controllo principale dove c'è arduino e i pin per i servi e il secondo sono i potenziometri. Il motivo per 2 PCB è che volevo controllare il braccio robotico da una distanza di sicurezza. Entrambi i circuiti sono collegati da un cavo di una determinata lunghezza, nel mio caso 80 cm.

Per la fonte di alimentazione ho scelto un adattatore esterno perché i servi che ho usato consumano molta più energia di quanto arduino possa fornire. Come puoi vedere ci sono alcuni condensatori che non ho ancora menzionato. Sono condensatori utilizzati per la filtrazione. Come ora saprai, il servomotore è controllato da brevi impulsi. Questi impulsi possono far cadere la tensione di alimentazione e i potenziometri che in precedenza avevano un intervallo di 0-5 volt ora hanno un intervallo più piccolo. Ciò significa che la tensione sul pin centrale cambia e arduino ottiene questo valore e cambia la posizione in cui si trova il servomotore. Questo può andare avanti all'infinito e provoca oscillazioni indesiderate che possono essere eliminate da alcuni condensatori paralleli all'alimentazione.

Passaggio 3: realizzazione del PCB

Fare PCB
Fare PCB
Fare PCB
Fare PCB
Fare PCB
Fare PCB

Per fare PCB ti consiglio di leggere questo.

Ho usato il metodo Iron on Glossy paper e ha funzionato alla grande.

Poi ho saldato le parti sul PCB. Puoi vedere che ho usato la presa arduino nel caso in cui ne avessi bisogno in futuro.

Passaggio 4: progettazione del braccio

Progettare il braccio
Progettare il braccio
Progettare il braccio
Progettare il braccio
Progettare il braccio
Progettare il braccio

Questa non è stata affatto la parte più difficile della realizzazione di questo progetto.

L'intero setup è composto da 8 parti di cui 4 non sono parti mobili - scatola per potenziometri e base dove si trova arduino - e altre quattro sono il braccio stesso. Non entrerò in molti dettagli tranne che il design è piuttosto intuitivo e in qualche modo semplice. È progettato per adattarsi al mio PCB personalizzato e ai servi che includerò nell'elenco delle parti.

Passaggio 5: stampa delle parti

Stampa delle parti
Stampa delle parti
Stampa delle parti
Stampa delle parti
Stampa delle parti
Stampa delle parti

Le parti sono state stampate sulla stampante Prusa. Alcune facce dovevano essere leggermente rettificate e forati. Anche i pilastri di supporto dovevano essere rimossi.

Passaggio 6: mettere tutto insieme

Mettere tutto insieme
Mettere tutto insieme
Mettere tutto insieme
Mettere tutto insieme
Mettere tutto insieme
Mettere tutto insieme
Mettere tutto insieme
Mettere tutto insieme

In questo passaggio come dice il titolo ho messo tutto insieme.

All'inizio ho saldato i fili sui potenziometri e poi quei fili sul PCB. I potenziometri si adattano bene ai fori e ho incollato a caldo il PCB sui pilastri che erano stampati sul fondo della scatola. Puoi praticare dei fori nella tavola e nella scatola, ma ho scoperto che incollarlo è più che sufficiente. Poi ho chiuso entrambe le parti della scatola e le ho fissate in posizione con 4 viti che si incastrano nei fori che avevo disegnato.

Come passaggio successivo ho realizzato un cavo a nastro piatto per collegare entrambe le schede.

Nella scatola principale ho saldato i fili dal pin VCC del connettore per passare e poi a Vcc della scheda e da GND della scheda a GND del connettore. Quindi ho incollato a caldo il connettore in posizione e l'ho montato sui pilastri. Il connettore si inserisce direttamente nel foro, quindi non è necessaria la colla a caldo.

Quindi, utilizzando le viti, ho fissato il servo inferiore al fondo della scatola.

Dopo di che ho messo la parte superiore della scatola sulla parte inferiore e come con la scatola del potenziometro l'ho fissata con 4 viti.

La parte successiva è stata un po' complicata, ma sono riuscito a mettere insieme il resto del braccio con vari dadi e cuscinetti e non era così stretto come mi aspettavo perché ho progettato alcune tolleranze tra le parti, quindi è più facile lavorarci.

E come passaggio finale ho messo del nastro adesivo sul fondo delle scatole perché altrimenti sarebbero scivolate.

Passaggio 7: programmazione di Arduino

Programmare Arduino
Programmare Arduino
Programmare Arduino
Programmare Arduino
Programmare Arduino
Programmare Arduino

Ho già menzionato come funziona il programma in teoria dietro il progetto, ma lo spezzerò ancora di più.

Quindi all'inizio dobbiamo definire alcune variabili. Per lo più viene copiato 4 volte perché abbiamo 4 servi e secondo me non è necessario fare una logica più complicata solo per rendere il programma un po' più corto.

Successivamente c'è l'impostazione void in cui sono definiti i pin dei servi.

Poi c'è void loop - parte del programma che si ripete all'infinito. In questo part program prende il valore dal potenziometro lo ridimensiona e lo mette in uscita. Ma c'è un problema che il valore del potenziometro salta un po', quindi ho dovuto aggiungere un filtro che fa la media degli ultimi 5 valori e poi mette in uscita. Questo impedisce oscillazioni indesiderate.

L'ultima parte del programma legge i dati dalla porta seriale e decide cosa fare in base ai dati inviati.

Per comprendere appieno il codice, ti suggerisco di visitare i siti Web ufficiali di Arduino.

Passaggio 8: programmazione in Python

Programmazione in Python
Programmazione in Python
Programmazione in Python
Programmazione in Python
Programmazione in Python
Programmazione in Python

Questa parte di questo progetto non è necessaria ma penso che dia solo più valore a questo progetto.

Python offre tonnellate di librerie che sono gratuite ma in questo progetto sto usando solo tkinter e serial. Tkinter è usato per GUI (Graphical User Interface) e seriale come dice il nome è usato per la comunicazione seriale.

Questo codice crea una GUI con 4 cursori che hanno un valore minimo di 0 e massimo 180. Potrebbe suggerirti che è in gradi e ogni cursore è programmato per controllare un servo. Questo programma è piuttosto semplice: prende il valore e lo invia ad arduino. Ma il modo in cui trasmette è interessante. Se scegli di cambiare il valore del primo servo a 123 gradi, invia al valore arduino 1123. Il primo numero di ogni numero inviato indica quale servo sta per essere controllato. Arduino ha un codice che può decodificarlo e muovere il servo giusto.

Passaggio 9: elenco delle parti

Elenco delle parti
Elenco delle parti
  • Arduino Pro Mini 1 pezzo
  • Servo FS5106B 1 pezzo
  • Servo Futaba S3003 2 pezzi
  • Pin header 2x5 1 pezzo
  • Pin header 1x3 6 pezzi
  • Condensatore 220uF 3 pezzi
  • Micro Servo FS90 1 pezzo
  • Connettore AWP-10 2 pezzi
  • Connettore FC681492 1 pezzo
  • Interruttore P-B100G1 1 pezzo
  • Presa 2x14 1 pezzo
  • TTL-232R-5v - convertitore 1 pezzo
  • Potenziometro B200K 4 pezzi
  • e molte altre viti, cuscinetti e dadi

Passaggio 10: considerazioni finali

Grazie per aver letto questo e spero di averti almeno motivato. Questo è il mio primo progetto più grande che ho realizzato da solo senza copiare cose da Internet e dal primo post di istruzioni. So che il braccio potrebbe essere aggiornato ma per ora ne sono soddisfatto. Tutte le parti e i codici sorgente sono gratuiti, puoi utilizzarli e modificarli nel modo che preferisci. Se hai domande, non esitare a farle nella sezione commenti. Puoi anche guardare i video, non sono di ottima qualità ma mostrano le funzionalità del progetto.

Consigliato: