Ormai i motori Servo motori si trovano ovunque, ma cosa possiamo dire dei motori DC?
Visualizzazione post con etichetta pololu. Mostra tutti i post
Visualizzazione post con etichetta pololu. Mostra tutti i post
giovedì 23 giugno 2016
giovedì 10 settembre 2015
Libreria Maestro Pololu per MatLab
Per poter utilizzare al meglio il nostro modulo Maestro Pololu direttamente in MatLab ho scritto qualche riga di codice.
Per poter comunicare correttamente ci sono diversi passi preliminari da impostare:
- Tramite il Pololu Servo Controller Software, impostare USB Dual port mode.
- Nella directory del MatLab creiamo un nuovo file chiamato "java.opts" scrivendoci queste riga: -Dgnu.io.rxtx.SerialPorts=/dev/ttyS0:/dev/ttyS1:/dev/USB0:/dev/ttyACM0
Al prossimo riavvio del MatLab verrà caricata automaticamente.
Esempio di funzione chiamante nella console:
movePololuServo('/dev/ttyACM0', 0, 6120);Dove:
- movePololuServo è la funzione per muovere il servo.
- /dev/ttyACM0 è la porta di comunicazione con Arduino.
- 0 è il primo servo collegato.
- 6120 la posizione.
Nel caso ci fossero problemi o modifiche da consigliare, sentitevi liberi di commentare qui sotto oppure su GIT.
domenica 28 giugno 2015
Braccio robotico controllato tramite bluetooth
Il passaggio successivo per il controllo del braccio robotico è l'utilizzo del modulo Maestro per i movimenti ed il modulo HC-06 per la gestione bluetooth.
Ovviamente è fortemente consigliato aver seguito le guide per il controllo del modulo HC-06: http://goo.gl/JY0qrp
Lo schematico riportato sopra illustra tutti i collegamenti necessari per l'utilizzo.
Per prima cosa dobbiamo cambiare la BAUD del nostro modulo bluetooth, riprendiamo la guida: http://goo.gl/SV2Rym colleghiamo il modulo HC-06 come indicato nella guida linkata ed utilizzando il comando: AT+BAUD5 andiamo a cambiare la BAUD da 9600 a 19200 .
Ovviamente è fortemente consigliato aver seguito le guide per il controllo del modulo HC-06: http://goo.gl/JY0qrp
Lo schematico riportato sopra illustra tutti i collegamenti necessari per l'utilizzo.
Per prima cosa dobbiamo cambiare la BAUD del nostro modulo bluetooth, riprendiamo la guida: http://goo.gl/SV2Rym colleghiamo il modulo HC-06 come indicato nella guida linkata ed utilizzando il comando: AT+BAUD5 andiamo a cambiare la BAUD da 9600 a 19200 .
Abbiamo ora cambiato la frequenza alla quale il nostro modulo bluetooth risponde, ora fissata a 19200.
Ricordo che nell'esempio su GIT HC-06_AT va cambiata la frequenza di risposta alla riga 19.
Ora è tutto pronto per caricare il codice necessario, lo trovate qui: https://goo.gl/Uzz1sJ sotto la cartella "HC-06__Me_Arm__BT" .
Il codice è commentato, quindi potrete seguire passo passo il funzionamento.
Riporto un breve riassunto d'utilizzo:
- Alla pressione del tasto 'a' vi verrà dato un messaggio di benvenuto.
- Selezionando uno dei 4 motori disponibili, il primo a partire da 0, vi verrà comunicato il motore scelto.
- Con i tasti 'j' e 'l' rispettivamente, si incrementerà o decrementerò il valore dedicato alla posizione del servo precedentemente selezionato.
Etichette:
arduino,
Bluetooth,
collegamento,
comandi,
configurazione,
HC-06,
MeArm,
mestro,
pololu,
seriale,
velocità
martedì 19 maggio 2015
Delay() & Get Moving State
Una volta "perso" un po' di tempo su questi esempi, risolviamo i problemi relativo alla funzione delay() nel programma.
Analizziamo questo piccolo pezzo di codice a titolo d'esempio:
Una volta impartito un comando di posizione maestro.setTarget il programma non attende il tempo effettivo necessario al braccio per arrivare fisicamente a quella posizione, ma esegue immediatamente la funzione successiva, in questo caso delay(3000) .
Questo si traduce nel fatto che il braccio non aspetterà realmente 3 secondi prima della posizione successiva.
Per poter sviare a questo non piccolo inconveniente si utilizza un'altra funzione offerta dalla Maestro library, Get Moving State.
Questa funzione attende l'effettivo completamente del movimento da parte del braccio, prima d'eseguire la funzione successiva.
Proviamo a modificare il primo esempio visto aggiungendo questa nuova funzione:
Riassumendo la funzione maestro.getMovingState() è sempre accoppiata alla funzione maestro.setTarget per attendere l'effettivo completamento del movimento da parte del braccio.
Analizziamo questo piccolo pezzo di codice a titolo d'esempio:
maestro.setTarget(0, 6000);
delay(3000);
maestro.setTarget(0, 4000);Una volta impartito un comando di posizione maestro.setTarget il programma non attende il tempo effettivo necessario al braccio per arrivare fisicamente a quella posizione, ma esegue immediatamente la funzione successiva, in questo caso delay(3000) .
Questo si traduce nel fatto che il braccio non aspetterà realmente 3 secondi prima della posizione successiva.
Per poter sviare a questo non piccolo inconveniente si utilizza un'altra funzione offerta dalla Maestro library, Get Moving State.
Questa funzione attende l'effettivo completamente del movimento da parte del braccio, prima d'eseguire la funzione successiva.
Proviamo a modificare il primo esempio visto aggiungendo questa nuova funzione:
#include <PololuMaestro.h>
#ifdef SERIAL_PORT_HARDWARE_OPEN
#define maestroSerial SERIAL_PORT_HARDWARE_OPEN
#else
#include
SoftwareSerial maestroSerial(10, 11);
#endif
MicroMaestro maestro(maestroSerial);
void setup()
{
maestroSerial.begin(9600);
}
void loop()
{
maestro.setSpeed(0, 20);
maestro.setAcceleration(0, 200);
maestro.setTarget(0, 6000);
maestro.getMovingState();
delay(3000);
maestro.setTarget(0, 4000);
maestro.getMovingState();
delay(3000);
}
Riassumendo la funzione maestro.getMovingState() è sempre accoppiata alla funzione maestro.setTarget per attendere l'effettivo completamento del movimento da parte del braccio.
Etichette:
arduino,
configurazione,
get moving state,
MeArm,
mestro,
pololu
Primo esempio di programma per il braccio robotico
Iniziamo a vedere come utilizzare i comandi fondamentali della Maestro library per muovere correttamente i nostri Servo motori.
Anche in questo caso i parametri che possiamo impostare sono i medesimi dell'esempio precedente, solo applicabili a diversi Servo motori.
Per prima cosa proviamo ad utilizzare un solo motore Servo, successivamente proveremo ad utilizzarne più Servo contemporaneamente.
// L'esercizio mostra il movimento di 1 motore, con relative accelerazioni e velocità.
#include <PololuMaestro.h>
#ifdef SERIAL_PORT_HARDWARE_OPEN
#define maestroSerial SERIAL_PORT_HARDWARE_OPEN
#else
#include
SoftwareSerial maestroSerial(10, 11);
#endif
MicroMaestro maestro(maestroSerial);
void setup()
{
maestroSerial.begin(9600);
}
void loop()
{
//con la funzione setSpeed imposto il numero del motore, la sua velocità
maestro.setSpeed(0, 20);
//con la funzione setAcceleration imposto il numero del motore, la sua accelerazione . Questo numero è compreso tra 0 ( accelerazione massima ) e 255
maestro.setAcceleration(0, 200);
//con la funzione setTarget imposto una posizione al motore, tipicamente tra 4000 e 8000
maestro.setTarget(0, 6000);
delay(3000); //aspetto 3 secondi prima di passare alla prossima posizione
maestro.setTarget(0, 4000);
delay(3000); //aspetto 3 secondi prima di passare alla prossima posizione
}
Possiamo modificare diversi parametri, in questo esempio, per il singolo Servo: - il numero del motore da comandare
- la sua velocità
- la sua accelerazione
/* L'esercizio mostra il movimento di 3 motori contemporanemanete, con relative accellerazioni e velocità.
*/
#include <PololuMaestro.h>
#ifdef SERIAL_PORT_HARDWARE_OPEN
#define maestroSerial SERIAL_PORT_HARDWARE_OPEN
#else
#include
SoftwareSerial maestroSerial(10, 11);
#endif
MicroMaestro maestro(maestroSerial);
void setup()
{
maestroSerial.begin(9600);
}
void loop()
{
//con la funzione setSpeed imposto il numero del motore, la sua velicità
maestro.setSpeed(0, 20);
maestro.setSpeed(1, 10);
maestro.setSpeed(2, 10);
//con la funzione setAcceleration imposto il numero del motore, la sua accellerazione . Questo numero è compreso tra 0 ( accelerazione massima ) e 255
maestro.setAcceleration(0, 200);
maestro.setAcceleration(1, 200);
maestro.setAcceleration(2, 200);
//con la funzione setTarget imposto una posizione al motore, tipicamente tra 4000 e 8000
maestro.setTarget(0, 6000);
maestro.setTarget(1, 4000);
maestro.setTarget(2, 4000);
delay(3000); //aspetto 3 secondi prima di passare alla prossima posizione
maestro.setTarget(0, 4000);
maestro.setTarget(1, 6000);
maestro.setTarget(2, 6000);
delay(3000);
}
Anche in questo caso i parametri che possiamo impostare sono i medesimi dell'esempio precedente, solo applicabili a diversi Servo motori.
Etichette:
arduino,
configurazione,
MeArm,
mestro,
pololu,
setAcceleration,
setSpeed
giovedì 7 maggio 2015
Configurazione di base & Maestro library
Per prima cosa occupiamoci delle prime connessioni che ci forniranno una configurazione "base" per i nostri test e prove durate la programmazione.
Rimane da collegare la USB che alimenta e comanda Arduino.
I motori sono connessi uno sotto l'altro nell'apposita parte dedicata, per maggiori informazioni sul collegamento vi riporto l'immagine seguente:
Installazione ed uso della Maestro library
Per prima cosa procuriamoci l'ultima versione dell'IDE d'Arduino dal sito ufficiale: http://goo.gl/JuskT
Una volta scaricato, scompattiamo il file "tar.xz" e apriamo la cartella appena scompattata.
Cliccando con il destro sul file denominato "arduino" , proprietà, permessi ed abilitiamo l'opzione esegui.
Ora basterà premere due volte sul file "arduino" per avviare l'eseguibile.
Un'opzione da eseguire per abilitare le porte USB per Arduino è la seguente, aprite il terminale e digitate:
sudo usermod -aG dialout <myuser>
Ricordatevi di sostituire la scritta in rosso con il nome del vostro user.
A questo punto l'IDE sarà pronto per ogni esigenza.
Scarichiamo la libreria apposita per il nostro Maestro in questo modo:
Eseguiamo "Arduino", Sketch->Include Library->Manage Libraries .A questo punto si aprirà una finestra con una funzione cerca, usiamola scrivendo: "PololuMaestro" .
Installiamo il pacchetto trovato.
A questo punto avremo a disposizione non solo la libreria, ma anche alcuni utili esempi.
Etichette:
arduino,
configurazione,
MeArm,
mestro,
pololu
sabato 2 maggio 2015
MeMa - Progetto braccio robotico
Il progetto braccio robotico nasce dell'idea di voler utilizzare al meglio il mio Arduino e Raspberry Pi per progetti o sviluppi futuri in diversi campi. Diciamolo, dopo poco ci si scoccia ad usare Arduino e la Raspberry Pi per accendere o spegnere led!
L'idea è quella di poter avere un modulo, un braccio in questo caso, pilotato da diversi motori per svolgere le più svariate funzioni, sempre mantenendo la compatibilità con i diversi moduli ( shell ) Arduino e Raspberry Pi.
In questa prima fase, il montaggio, reperiamo tutto il necessario per il controllo e la connessione del braccio robotico.
Per la base del braccio ho trovato molto interessante il progetto open source "MeArm", recuperabile a questo indirizzo : http://goo.gl/sxX13z
Scaricato il disegno, si può decidere di stamparlo in 3D oppure tagliarlo su d'un foglio di plexiglas con un taglio laser.
Una volta stampato/tagliato tutti i componenti , basterà utilizzare questa guida passo passo per il montaggio: http://www.instructables.com/id/Pocket-Sized-Robot-Arm-meArm-V04/
Per quanto riguarda i motori il progetto è sagomato con i motori tipo SERVO con queste dimensioni: http://goo.gl/j3gDnt
Non importa la marca del servo, la potenza o altro, conta solo la dimensione compatibile con il progetto.
Per le viti, attenersi alla guida passo passo; alcune di queste M3 non sono di comune uso, meglio trovare un rivenditore specializzato in viti vicino a casa propria .
Scaricato il disegno, si può decidere di stamparlo in 3D oppure tagliarlo su d'un foglio di plexiglas con un taglio laser.
Una volta stampato/tagliato tutti i componenti , basterà utilizzare questa guida passo passo per il montaggio: http://www.instructables.com/id/Pocket-Sized-Robot-Arm-meArm-V04/
Per quanto riguarda i motori il progetto è sagomato con i motori tipo SERVO con queste dimensioni: http://goo.gl/j3gDnt
Non importa la marca del servo, la potenza o altro, conta solo la dimensione compatibile con il progetto.
Per le viti, attenersi alla guida passo passo; alcune di queste M3 non sono di comune uso, meglio trovare un rivenditore specializzato in viti vicino a casa propria .
Connessione e controllo
Una volta assemblato il tutto , ci troviamo con 4motori da comandare in PWM, con un numero di porte da occupare su Arduino considerevolmente alto. Analizziamo un modo molto più elegante e funzionale per il controllo dei motori.
La mia soluzione è l'utilizzo d'un controller servo chiamato Maestro Micro: https://www.pololu.com/product/1350
Questo controller è comodo per controllare servo di diversa dimensione ed in numero elevato, oltre ad averne una miglior gestione. Per comandare questo controller sono necessari solo due pin d'Arduino.
Per controllare il corretto funzionamento del controller utilizzare questa libreria completa d'ogni funzione disponibile : https://github.com/pololu/maestro-arduino
Prossimamente scriverò qualche articolo con qualche riga di codice per comprendere meglio l'interfaccia tra controller e SERVO.
Questo controller è comodo per controllare servo di diversa dimensione ed in numero elevato, oltre ad averne una miglior gestione. Per comandare questo controller sono necessari solo due pin d'Arduino.
Per controllare il corretto funzionamento del controller utilizzare questa libreria completa d'ogni funzione disponibile : https://github.com/pololu/maestro-arduino
Prossimamente scriverò qualche articolo con qualche riga di codice per comprendere meglio l'interfaccia tra controller e SERVO.
Etichette:
arduino,
configurazione,
MeArm,
mestro,
pololu
Iscriviti a:
Post (Atom)




