Creative Commons BY-NC-ND 2.5Questo sito e tutto il suo contenuto sono distribuiti sotto la licenza Creative Commons Attribuzione - Non Commerciale - Non opere derivate 2.5 Italia e con le condizioni d'uso definite nel disclaimer: siete pregati di leggere entrambi questi documenti prima di usufruire dei contenuti di questo sito. Per alcuni contenuti è necessaria una registrazione gratuita: non è necessario pagare e non è necessario accumulare punteggi per accedere agli articoli e scaricare i sorgenti: basta solo essere onesti. Se volete che questo sito continui a rimanere attivo, a contribuire ogni giorno alla diffusione della cultura libera, non copiate il materiale per ripubblicarlo in altri luoghi. Se volete partecipare su settorezero e rendere le vostre idee, i vostri progetti, fruibili da tutti senza limitazioni potete farlo tranquillamente.

ORbit16™ USB Servo Controller

Autore: Giovanni Bernardo | Data pubblicazione: 2 giugno 2012
Categorie: dsPIC / PIC24 ORbit16™

Ho realizzato con ORbit16™ (con PIC24FJ64GB002) un firmware per il controllo dei servocomandi. I servocomandi vengono gestiti interamente tramite interrupt, per cui il main è completamente vuoto. Una libreria di esempio, ridotta, è presente qui. Questa libreria consente il controllo di 6 servocomandi, i più bravi capiranno facilmente come espanderla.

L’utilizzo di tale programma di esempio è estremamente semplice: nel main basta richiamare una sola volta la funzione ServoOpen per impostare tutti i registri (un Timer e un modulo Output Compare, oltre all’impostazione delle porte che forniscono il segnale ai servo). Dopodichè basta sfruttare la funzione ServoSet(X,Y) per impostare il servo X al valore di Y millisecondi. E’ possibile muovere i servocomandi in un range da 500 a 2500mS. La risoluzione ottenuta con queste funzioni è di 1µS ma in realtà il sistema adottato consente una risoluzione fino a 0.5µS. Sfruttando questi princìpi ho realizzato un servo controller USB, per il quale è presente l’HEX e il manuale di utilizzo in questa pagina.

Il Firmware del servo controller USB consente il controllo di 10 Servocomandi (in realtà ne sono previsti 12 ma ho preferito non utilizzare, in questa release, le due porte sfruttate dall’oscillatore secondario) tramite semplici comandi impartiti su USB in emulazione seriale. Una GUI scritta in VB.NET consente di testare il firmware impartendo la posizione dei servi tramite 10 controlli slider. Questo video illustra il funzionamento meglio di qualsiasi altra parola:

Il circuito, dato che è molto semplice, l’ho realizzato su una breadboard (potete seguire qui le istruzioni su come realizzare queste semplici espansioni). I servocomandi vanno obbligatoriamente alimentati a parte (non usate la 5V proveniente dalla scheda!) sia per una questione di sicurezza, che di corrente assorbita, che di disturbi. Generalmente i servocomandi presentano il massimo valore di coppia con una tensione di alimentazione di 6V, ma fate riferimento ai dati di funzionamento dei servocomandi in vostro possesso (inutile specificare che la massa dell’alimentazione dei servocomandi e la massa di ORbit16™ vanno messe in comune).

I comandi da impartire tramite USB/Seriale sono molto semplici. Ho previsto comandi per il posizionamento, la centratura e la lettura del valore di ogni servo. I comandi sono impartibili sia in formato ASCII che in binario, consentendo così un’ampia scelta al programmatore che vuole creare da sè il proprio software di controllo. Il manuale è completo e abbastanza esplicativo.

Ho inoltre in progetto una scheda di espansione per ORbit16™ che prevede il collegamento di massimo 12 servocomandi, con un trimmer su un ingresso analogico, un’eeprom I2C, pulsante utente e pulsante reset, e dei connettori per portare all’esterno la linea I2C o la linea UART. La scheda in questione (solo PCB) costerà intorno ai 13/15 euro (spedizione esclusa), ma non credo che la realizzerò a meno di non trovare almeno una decina di interessati al progetto, in questo caso renderò disponibile anche i sorgenti del servo controller USB (che include la libreria completa per i servocomandi) e della GUI più altri esempi (tra l’altro sto anche realizzando un controllo per servocomandi tramite Gamepad USB). Ricordo che ORbit16™ è un progetto a supporto di Settorezero e che chi contribuisce acquistandone una ottiene anche un codice di invito valido per la registrazione su www.orbit16.com per poter accedere ad esempi, progetti e manuali.

L'articolo ti è piaciuto o ti è stato utile per risolvere un problema? SettoreZero è realizzato soltanto con contenuti originali: tutti gli articoli sono curati con passione dagli autori e nulla viene copiato da altri siti. Supporta e mantieni in vita SettoreZero con una donazione: basta soltanto un caffè o una birra. Puoi supportare SettoreZero anche con uno dei progetti elencati nella sezione servizi o partecipare anche tu con un tuo articolo/progetto personale.

Se desiderate che SettoreZero continui a rimanere gratuito e fruibile da tutti, non copiate il nostro materiale e segnalateci se qualcuno lo fa.

Puoi andare alla fine dell'articolo e lasciare un commento. I trackback e i ping non sono attualmente consentiti.

  1. #1 da Massimo Peino il 16 maggio 2017

    buongiorno a tutti , volevo chiedere se l’impulso che comanda il servo per la precisione quello di 2500 us che serve a comandarlo è presente su tutti quanti contemporaneamente.
    Massimo

  2. #3 da Massimo Peino il 16 maggio 2017

    comunque in ogni caso il tempo di 20ms viene rispettato per ogni servo…

Devi essere collegato per lasciare un commento.

  1. Ancora nessun trackback
settorezero.com e il logo Zroid™ ©2007÷2015 Giovanni Bernardo - E' vietata la copia e la distribuzione anche parziale dei contenuti di questo sito web senza l'esplicito consenso dell'autore.
I contenuti di settorezero.com sono distribuiti sotto una licenza Creative Commons Attribuzione-Non Commerciale-Non Opere derivate 2.5 Italia a cui vanno aggiunte le condizioni d'uso definite nel disclaimer.
settorezero.com e tutti i suoi contenuti sono tutelati dalla legge sul diritto d'autore per cui i trasgressori sono perseguibili a norma di legge. Settorezero fa uso dei cookie leggi l'informativa estesa.
Creative Commons BY-NC-ND 2.5
Il tema di questo sito è basato sul tema Fusion per wordpress, realizzato originariamente da digitalnature e fa uso del plugin Wassup per il computo delle statistiche. Per contattare l'autore siete pregati di utilizzare la sezione contatti.
Per essere aggiornato con tutte le novità di settorezero.com seguici anche anche su Facebook Twitter Tumblr Blogspot Youtube.