
Realizza il tuo modulo CPU basato sul microcontrollore dsPIC.
In perfetto stile Arduino, presentiamo YourDuino, una cpu con a bordo la potenza del DSC Microchip per applicazioni hobbistiche e professionali e , perchè no, anche per produzioni.
Introduzione al progetto Yourduino
Forse la fatica più grande è stata trovare il nome, un nome che non fosse già usato nella famiglia dei cloni o delle applicazioni di Arduino! Comunque eccolo qui! realizzate il vostro DUINO!

Il modulo presenta a bordo un microcontroller DsPic con quarzo da 10Mhz, quindi, grazie al PLL interno, in grado di operare fino a 40MHz, quindi a 100nS a ciclo istruzione Microchip.
Inoltre il DsPic 30F6010A offre capacità di calcolo avanzate come moltiplicazione, divisione ed operazioni specifiche DSP. Queste caratteristiche unite a periferiche PWM, Capture Compare, AD Converter etc. lo rendono ideale per il controllo motori.
YourDuino schema elettrico del modulo DsPic

La naturale applicazione del modulo è il controllo motori, anche se può essere usato in qualsiasi applicazione.
Sono presenti ben 9 uscite PWM e ben 24 ingressi bufferizzati dal 4051 che consentono il controllo motore in analogico, come l'acquisizione della corrente, della temperatura ed eventuali fault. Sempre per il controllo motori sono presenti degli ingressi per il controllo di posizione.
Questo oltre a tutti gli I/O già presenti nel dsPIC30F6010A.
Inoltre è presente un riferimento di tensione MCP1541 ed una eeprom esterna per eventuali salvataggi di dati.
Infine, avrete a disposizione anche 2 seriali UART, 1 SPI ed il modulo CAN.
Insomma se volete controllare i motori bene, altrimenti ci potete fare un sacco di altre applicazioni.
Quei due partitori che vedete nella prima parte dello schema elettrico, con etichette AD_28V e AD_12V sono gli ingressi per l'ad converter del micro, per monitorare le tensioni di 28V in genere usata per alimentare i motori e dei 12V in genere usata per l'elettronica.
Dimenticavo, è presente anche un regolatore di tensione per fornire i 5V al dsPIC, si è ancora uno dei pochi micro (di una certa potenza di calcolo) a 5V.
Ed è presente il connettore per debuggare con l'ICD2.

Circuito stampato Yourduino

Ambiente di sviluppo Microchip MPLAB
Per sviluppare con Yourduino dovete scaricarvi (è gratis) il software MPLAB da sito microchip.com. Tramite MPLAB potrete programmare, emulare e debuggare il vostro firmware.
Di base MPLAB contiene inoltre un editor di testo per scrivere software ed il compilatore assembler. Con un modulo aggiuntivo è possibile utilizzare anche il C
(ci dovrebbe essere ancora la versione student edition).
Il dsPic si presta bene anche al C, considerate comunque che scrivere in assembler con le istruzioni e la potenza del dsPic è tutta un'altra storia rispetto ai famosi PIC o al famosissimo PIC16F84, che pur essendo molto noti, hanno anche molte limitazioni che i progettisti conoscono bene.
Yourduino esempio firmware in linguaggio C
Ecco un esempio di firmware in C per testare le 2 porte seriali (uart) a bordo del modulo dsPIC. Possono essere modificate in routine oppure usate tramite delle istruzioni al compilatore, la classica IF, che se TRUE, obbligherà il compilatore a compilare appunto la parte di codice indicata dall'IF.
#if TEST_UART1 == 1 // UART 1 TEST unsigned long delayU1; sprintf(comTxBuf,"YOURDUINO TEST UART1:\r\n"); printUART1(comTxBuf); delayU1=250000; while(1) { if(DataRdyUART1()) { rx=ReadUART1() ; sprintf(comTxBuf,"%c\r\n",rx); printUART1(comTxBuf); }else{ delayU1--; if(delayU1==0) { PORTC^=0x4000; sprintf(comTxBuf,">\r\n"); printUART1(comTxBuf); delayU1=250000; } } } #endif #if TEST_UART2 == 1 unsigned long delayU2; sprintf(comTxBuf,"YOURDUINO TEST UART2:\r\n"); putsUART2 ((unsigned int *)comTxBuf); delayU2=250000; while(1) { if(DataRdyUART2()) { rx=ReadUART2() ; sprintf(comTxBuf,"%c\r\n",rx); putsUART2 ((unsigned int *)comTxBuf); }else{ delayU2--; if(delayU2==0) { PORTC^=0x4000; sprintf(comTxBuf,">\r\n"); putsUART2 ((unsigned int *)comTxBuf); delayU2=250000; } } } #endif
Yourduino esempio firmware in Assembler
Questa invece è la gestione della porta seriale U1 (stampa i dati da un buffer nella sezione psv) in assembler.
U1TX_psv: mov [W1], W2 ; lower byte and #0x00FF, W2 mov #'@', W0 ; end of text cp W0, W2 bra Z, U1TX_psv_end mov W2, W0 btsc U1STA, #UTXBF ; wait buffer clear bra $-2 mov.b WREG, U1TXREG mov [W1], W2 ; upper byte swap W2 and #0x00FF, W2 mov #'@', W0 ; end of text cp W0, W2 bra Z, U1TX_psv_end mov W2, W0 btsc U1STA, #UTXBF ; wait buffer clear bra $-2 mov.b WREG, U1TXREG inc2 W1, W1 bra U1TX_psv U1TX_psv_end: RETURN
Yourduino USB
Yourduino è presente anche nella versione USB. Il modulo è formato sempre da un dsPIC e poi da un microcontrollore Microchip PIC18F2550 che gestisce la porta USB. La comunicazione tra i 2 micro è affidata alla uart e può supportare trasferimenti ad alta velocita (sempre relativamente alle capacità della uart).
L'idea è di sfruttare il modulo per applicazioni USB, dove il PIC18 gestisce sia l'interfaccia seriale usb che il protocollo ed una prima elaborazione dati e buffer mentre al dsPIC saranno affidati tutti gli altri controlli.


Trovo interessante che ci sia anche la possibilità di collegare una linea CAN, è sicuramente un bel prodotto e poi è open source.
Inoltre il firmware per prodotti microchip è molto comprensibile e le routine di facile riutilizzo.
Non saprei ancora che applicazione proporre…magari nel prossimo contest sarà un premio!:-)
Mantiene la compatibilità con i moduli dell’arduino? ovvero posso innestare un modulo progettato per l’arduino mantenendo le stesse funzionalità. Comunque sia è un bel progetto, nel vederlo più attentamente, mi son chiesto perché sia stato utilizzato LM340 invece del classico LM7805.
Ciao fra83,
forse lo vedrai in un prossimo Review4U
Il CAN è gestibile via software dalla periferica interna al DSPIC (controller CAN), poi ovviamente, esternamente va implementato il driver del tipo MCP2551
La scheda non è compatibile pin to pin con Arduino, l’ho assimilata ad Arduino perche è Open Source e perche sposa lo stesso concetto di modulo-cpu.
Certo avrei potuto renderla compatibile con Arduino, un Arduino con DSPIC, ma sarebbe stato l’ennesimo tentativo di clonare un’idea riuscita, cosa che già stanno facendo in molti, senza successo 🙂
La scelta del regolatore è stata dettata, oltre che dalle specifiche, anche dalla reperibilità e dal package smd, infatti il 7805 è piu facile trovarlo nel classico TO220. L’LM340 comunque è quasi del tutto identico al 7805, condividono addirittura lo stesso datasheet.
Trovo interessante il progetto, e condivido la scelta di non imitare (a parte il nome duino) il super clonato Arduino in tutte le sue salse.
Certamente hai ragione che yourduino non sia un clone dell’ Arduino, ma forse non mi sono spiegato molto bene, la mia era solo una considerazione di carattere pratico nel poter utilizzare senza particolari problemi anche le shield dell’Arduino, in modo da avere un prodotto differente ma ‘compatibile’ con le varie shield già in commercio, del resto si comprende già dal progetto stesso che è un approccio diverso dalla realizzazione di un clone.
Si, anche perche quando ho progettato la prima versione di YourDuino le Arduino_Shield erano veramente poche (forse non esistevano ancora)… piu di 6 anni fa 🙂
Personalmente trovo che l’anima di Arduino sia il suo sistema di sviluppo integrato,
Questo personalmente non mi attira più di tanto.
Con Arduino hai una semplicità d’uso avanzata, a discapito però di alcune caratteristiche come il debug, che in ambito professionale è necessario. Se vuoi debuggare con una scheda Arduino devi avere un debugger Atmel (o terze parti) e quindi siamo alle stesse condizioni di YourDuino.
Con YourDuino, per avere uno strumento professionale, devi acquistare solo il debugger Microchip (Ad esempio ICD2), poi il software è gratuito MPLAB IDE ed anche il compilatore C (esiste la Student Edition).
P.S. a proposito, hai visto il nuovo MPLAB X V1.0 cross-platform
http://ww1.microchip.com/downloads/mplab/X_Beta/index.html