YourDuino realizza con il dsPic il tuo modulo CPU in stile Arduino

YourDuino realizza con il dsPic il tuo modulo CPU in stile Arduino

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 progetto YourDuino è disponibile a soli 9 euro. Potete realizzarlo da soli (fai-da-te) scaricando tutti i codici sorgenti (Schema elettrico, lista parti, circuito stampato, file gerber, esempi di codice sorgente sviluppato su piattaforma Microchip).   Download Yourduino

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

Schema elettrico con 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.

Dspic per controllo motori - Yourduino

Circuito stampato Yourduino

Yourduino CPU con DSPIC circuito stampato

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.

Yourduino CPU con DSPIC

Il progetto YourDuino è disponibile a soli 9 euro. Potete realizzarlo da soli (fai-da-te) scaricando tutti i codici sorgenti (Schema elettrico, lista parti, circuito stampato, file gerber, esempi di codice sorgente sviluppato su piattaforma Microchip).   Download Yourduino

9 Comments

  1. fra83 7 marzo 2012
  2. linus 7 marzo 2012
  3. Emanuele 7 marzo 2012
  4. Emanuele 7 marzo 2012
  5. telegiangi61 7 marzo 2012
  6. linus 7 marzo 2012
  7. Emanuele 7 marzo 2012
  8. Fabrizio87 7 marzo 2012
  9. Emanuele 7 marzo 2012

Leave a Reply