• 990.020 MuIN USB - Manuale di programmazione



    La MuIN USB è una scheda di sviluppo basata sul pic18F2550. Oltre che come demoboard può essere utilizzata come semplice interfaccia tra dispositivi esterni e il computer utilizzando la porta USB. In particolare, sfruttando le librerie rilasciate dalla Microchip, può funzionare come dispositivo HID o in emulazione COM. La presenza di un bootloader precaricato consente inoltre l'aggiornamento del firmware senza la necessità di dover utilizzare un programmatore.

    La MuIN USB Viene fornita con un firmware precaricato che permette l'interfacciamento a numerosi dispositivi utilizzando semplici comandi da impartire tramite le linee di comunicazione seriali (USB/XBee/TTL).

    Tramite il firmware standard è possibile controllare:

    • fino a 6 servocomandi
    • 5 ingressi analogici
    • 2 canali PWM
    • fino a 8 GPIO (General Purpose I/O)
    • 1 bus di comunicazione I2C

    E' possibile scaricare la GUI di esempio (tra l'altro necessaria per eseguire alcune impostazioni della MuIN USB) e il firmware standard dalla pagina dei downloads.

    Struttura dei comandi

    Tutti i comandi vanno inviati in forma di pacchetto composto da 8 bytes. Il primo e l'ultimo byte sono valori fissi e fungono da delimitatori del pacchetto, assumono sempre valore @ e # rispettivamente. I bytes inutilizzati vanno sempre posti a zero. Un pacchetto standard ha quindi la forma:

    @xxxxxx#


    dove al posto delle x andranno sostituiti i bytes relativi a comandi e impostazioni. Se il pacchetto non è in questa forma (es.: l'8 bit non è '#'), la MuIN USB scarta il comando

    PWM

    Abilitazione canali PWM

    @PRns00#

    al posto di n va messo 1 per impartire il comando al PWM1 (posto sul pin RC0) o 2 per il PWM posto sul pin RC5. Al posto di s va messo 1 per abilitare il pwm o 0 per disabilitarlo.


    Impostazione Duty Cycle
    @Pnhl00#

    n = canale PWM (1 o 2)
    h = byte alto del valore di duty cycle (2 bit)
    l = byte basso del valore di duty cycle (8 bit)
    Nota:
    Il valore di PWM è un numero a 10 bit variabile tra 0 e 1023. Un valore pari a 512 corrisponde ad un duty cycle del 50%.
    La frequenza operativa del PWM può essere cambiata esclusivamente dalla GUI

    GPIO

    Tramite la GUI è possibile impostare il banco di porte B (costituito da 6 porte) in una delle possibili configurazioni:

    • 6 Servocomandi
    • 4 servocomandi + 2 GPIO
    • 6 GPIO


    Lettura
    I/O
    @GR0000#

    Tale comando esegue la lettura della PortaB. La MuIN risponde con una stringa nel formato:

    @Gn#

    dove n è un valore tra 0 e 255 rappresentante lo stato della porta B (bit x a 0 = sulla porta Bx è presente un segnale a 0V, bit x a 1 = sulla porta Bx è presente un segnale a +Vdd).
    I bits relativi alle porte eventualmente utilizzate dai servocomandi assumono sempre valore 0.

    Scrittura sulla porta B

    @GWn000#

    Scrive il valore n sulla Porta B (valore da 0 a 255)


    CONVERTITORE A/D

    Lettura degli A/D

    @A00000#

    Questo comando esegue la lettura dei 5 canali A/D. La MuIN dopo circa 100uS risponde con una stringa del tipo (senza spazi):

    @ A 1234 1234 1234 1234 1234 #

    Dove 1234, espresso proprio in forma ASCII, è un valore tra 0000 e 1024 che rappresenta il valore numerico a 10 bit letto dal canale A/D corrispondente (dal canale 0 al canale 4 da sinistra verso destra. 0000 = 0V , 1023=+Vdd)

    MODULO BUSSOLA CMPS03

    Sulla MuIN USB è possibile montare una bussola elettronica per la navigazione modello CMPS03.

    Lettura della bussola


    @C1x000#

    x è l'indirizzo del dispositivo (valore variabile tra 0 e 255).
    L'indirizzo può essere facilmente cambiato utilizzando la GUI

    La Muin risponde con una stringa nel formato (senza spazi):

    @ C 1234 #

    dove 1234 rappresenta il valore numerico, in formato ascii (da 0000 a 1023) restituito dalla bussola. Fate riferimento al manuale della bussola CMPS03 per interpretare tale valore.

    SERVOCOMANDI


    E' possibile gestire fino a 6 servocomandi collegandoli alle porte B. Il funzionamento delle porte B per l'utilizzo dei servocomandi va impostato tramite la GUI

    Impostazione rotazione servocomandi


    @Snhl00#

    n = numero servocomando (da 1 a 6)
    h = byte alto del valore di rotazione
    l = byte basso del valore di rotazione

    il valore di rotazione è un numero che esprime la durata in µS dell'impulso di comando, variabile tra 500 e 2500 e che imposta una rotazione rispettivamente tra -90° e +90°. La risoluzione è di 1 µS

    SENSORI AD ULTRASUONI SRF

    E' possibile controllare i sensori ad ultrasuoni appartenenti ai modelli SRF della Devantech

    Invio ping

    @F1x000#

    x= indirizzo dispositivo

    Lettura sensore

    @F0x000#

    x = indirizzo dispositivo. La MuIN risponde con una stringa del tipo:

    @F1234#

    dove 1234 è il valore, in formato ASCII variabile tra 0 e 1024, del range misurato dal sensore. Fate riferimento al manuale del sensore in vostro possesso per interpretare tale valore.

    MOTOR CONTROLLER MD22

    Tramite il firmware standard della MuIN USB è possibile anche controllare un motor controller modello MD22

    Controllo velocità

    @Myxn00#

    y = motore (se y=R => motore1, se y=L => motore2)
    x = indirizzo della scheda MD22
    n = valore di velocità, tra 0 e 255 (128 = stop)

    Impostazione register module

    @MMxn00#
    x = indirizzo scheda MD22
    n può assumere 2 valori.

    se n=0 => modalità di funzionamento normale (il controllo di velocità viene impostato separatamente per i due motori)

    se n=1 => quando verrà utilizzato il comando per il cambio di velocità, il valore y (vedi comando precedente) assume un significato differente: impostando L il valore di n diventa il valore di curvatura; impostando R il valore di n controlla la velocità di entrambi i motori

    I2C

    Oltre ai dispositivi I2C finora elencati, per i quali sono stati predisposti comandi ad-hoc, è possibile controllare qualsiasi dispositivo I2C.

    Scrittura I2C

    @Ixnpqr#

    x = indirizzo del dispositivo I2C al quale inviare il comando
    n = numero di bytes da inviare (da 1 a 3)
    p q r = i 3 bytes da inviare, se è stato specificato un numero di bytes inferiore a 3 i bytes non usati vanno posti a zero

    se è necessario inviare più di 3 bytes, basta ripetere più volte questo comando

    Lettura I2C

    @Lxnpq0#

    x = indirizzo del dispositivo I2C dal quale eseguire la lettura
    n = numero di bytes da ricevere (da 1 a 16)
    p q = utilizzati solo per le memorie eeprom I2C (tipo 24LCxx, 24Cxx ecc) : specificano, rispettivamente, il byte alto e il byte basso della locazione di memoria da cui leggere. Su dispositivi I2C diversi dalle eeprom tali bytes vanno posti a zero.

    La MuIN, dopo aver eseguito la lettura, risponderà con una stringa del tipo (senza spazi):

    @ I x P0 P1 P2 ... Pn #

    x = indirizzo del dispositivo I2C
    P0 ... Pn = gli n bytes restituiti