ARDUINO DUE ultimo aggiornamento 6 agosto 2017 |
|
Disponibile dal 22 ottobre 2012 questa versione di
scheda Arduino è denominata Arduino DUE
Si tratta di una scheda a 32bit ed è equipaggiata con un processore
ARM Cortex-M3 tipo
AT91SAM3X8E
che viaggia a 84MHz
Presentazione
originale della Scheda Arduino DUE
Schema elettrico della scheda
Schema della scheda in formato EAGLE
Mappa
dei pin del processore SAM3X
Software IDE Arduino versione 1.5.0
Guida
introduttiva al Arduino Due
Microcontroller |
AT91SAM3X8E |
Velocità di Clock |
84 MHz |
Tensione di funzionamento |
3.3V |
Tensione d'ingresso (raccomandata) |
7-12V |
Limiti tensione d'ingresso |
6-20V |
Numero di pin digitali di I/O |
54 (di cui 16 con PWM ) |
Pin di Input analogico |
12 |
Pin di uscita analogici |
2 (DAC) |
Corrente continua totale in uscita da tutte le linee I/O |
130 mA |
DC Current for 3.3V Pin |
800 mA |
DC Current for 5V Pin |
teorici 1A, realistici 800 mA |
Flash Memory |
512 KB completamente disponibili per le applicazioni |
SRAM |
96 KB (64 + 32 KB) |
Memoria DataFlash |
2 Mbit (250 KB) |
La
Arduino Due è una scheda
basata sulla CPU Atmel ARM Cortex-M3 SAM3X8E e, la prima della famiglia Arduino,
basata su un microcontrollore a 32 bit con core ARM.
La scheda contiene tutto la circuiteria necessaria a supportare il nuovo
microprocessore, per iniziare è sufficiente disporre di un PC con sistema
operativo Windows XP oppure Windows 7, Windows 10, la connessione USB sarà utilizzata sia
per lo scambio dati sia per l'alimentazione, ovviamente rimane la possibilità di
alimentare la scheda con un alimentatore esterno utilizzando l'apposito
connettore jack previsto a bordo scheda.
Questa scheda è stata oggetto di un mio articolo pubblicato sul numero 331 della rivista Fare Elettronica
dal titolo "Arduino
Due senza veli"
|
|
|
M7 - SMD diodo rettificatore 1A | ||
|
||
Piedinatura | Datasheet | Foto |
CD1206-S01575 Switching Chip Diode | ||
|
||
Piedinatura | Datasheet | Foto |
SS1P3L Low VF High Current Density Surface Mount Schottky Barrier Rectifiers | ||
|
||
Piedinatura | Datasheet | Foto |
Led smd 0805 | ||
|
||
Piedinatura | Datasheet (Verde, Giallo) | Foto |
LMV 358 General Purpose, Low Voltage, Rail-to-Rail Output - Operational Amplifiers | ||
|
||
Piedinatura | Datasheet | Foto dell'integrato |
LM2734 Step-Down DC-DC Regulator 1A | ||
Piedinatura | Datasheet | Foto dell'integrato |
LM2736 Step-Down DC-DC Regulator 750mA | ||
Piedinatura | Datasheet | Foto dell'integrato |
NCP1117ST33T3G Low-Dropout Positive Fixed Voltage Regulators 1.0 A | ||
|
||
Piedinatura | Datasheet | Foto dell'integrato |
FDN340P Single P-Channel, Logic Level, PowerTrench MOSFET | ||
|
||
Piedinatura | Datasheet | Foto del transistor |
Transistor NPN BC847B/BC847C SMALL SIGNAL TRANSISTORS | ||
Piedinatura | Datasheet | Foto del transistor |
Processore ATSAM3X8EA-AU - ARM® Cortex®-M3 revision 2.0 running at up to 84 MHz | ||
|
||
Piedinatura | Datasheet | Foto dell'integrato |
ATmega16U2 8-bit Microcontroller with 16 K Bytes of ISP Flash and USB Controller | ||
|
||
Piedinatura | Datasheet | Foto dell'integrato |
SN74LVC1G125 Single bus buffer gate with 3-state output | ||
|
||
Piedinatura | Datasheet | Foto dell'integrato |
MH2029-300Y MH Series High Current Chip Ferrite Beads | ||
|
||
Piedinatura | Datasheet | Foto della ferrite |
SRR0604-100ML Shielded Power Inductors | ||
|
||
Piedinatura | Datasheet | Foto dell'induttore |
CG0603MLC-05E ChipGuard MLC Series - ESD Protectors | ||
|
||
Piedinatura | Datasheet | Foto dell'induttore |
MF-MSMF Series - PTC Resettable Fuses | ||
|
||
Piedinatura | Datasheet | Foto del PTC |
FC 135/145 thin smd low frequency cristal unit | ||
Piedinatura | Datasheet | Foto del quarzo |
Quarzo smd 12MHz KX-7 20pF | ||
Piedinatura | Datasheet | Foto del quarzo |
Presa USB tipo micro AB | ||
Piedinatura | Datasheet | Foto del quarzo |
DC Power Jack connector | ||
Piedinatura | Datasheet | Foto del connettore |
Come per le precedenti versioni della scheda l’alimentazione può avvenire da due fonti: tramite le porte USB o tramite un alimentatore esterno collegato al connettore X2, in ogni caso la fonte di alimentazione sarà scelta automaticamente dalla scheda.
Dettaglio schema elettrico sezione di alimentazione
Esaminando il circuito si nota che la tensione in
ingresso della presa polarizzata X3 viene prima
filtrata tramite la ferrite L6 tipo MH2029-300Y
e i due condensatori PC1 e C41 per poi arrivare al circuito IC2 che può essere
un LM2734Y o LM2736Y,
la differenza è nella massima corrente fornita.
A differenza delle precedenti versioni di Arduino che prevedevano dei regolatori
a basso dropout, in questa versione è stato utilizzato un regolatore DC-DC di
tipo step-down con un’efficienza del 90%, alimentati con una tensione minima di
3V e una massima di 18-20 V garantiscono una tensione d’uscita di 5V con una
corrente che varia tra i 750 mA (LM2736Y) e 1A (LM2734Y)
.
La tensione di 5V raggiunge poi l’integrato IC4 tipo
NCP1117ST33T3 regolatore a basso dropout, con un’uscita a 3.3V con una
corrente massima di 1A.
Integrati sezione di alimentazione
La tensione di +5V come detto in precedenza può
derivare dalle prese USB presenti sulla scheda USB AB e USB B (USBVCC,
USBVCCU2), la tensione arriva ai due MOSFET a canale P , T1 e T2 tipo
FDN340P che opportunamente pilotati attraverso il uno
dei due amplificatori operazionali contenuti nell’integrato IC1 tipo
LMV358 permette di selezionata automaticamente la
fonte di alimentazione.
Sull’uscita delle porte USB sono presenti dei fusibili tipo
MF-MSMF050-2 da 500mA, questi sono di tipo auto
ripristinante, in pratica sono costituiti da un resistore "PTC" (Positive
Temperature Coefficient) ovvero un resistore il cui valore di resistenza aumenta
con la temperatura. Al superamento di un valore di corrente, l'aumento di
temperatura causa un aumento di resistenza, che a sua volta causa un aumento
dell'effetto Joule e così via, con effetto valanga.
Nel circuito è anche presente il transistor NPN Q2 tipo
BC847B la cui base è pilotata dalla porta PB10
del processore U1, questo permette di forzare ad OFF l'alimentazione alla porta
USB quando la porta è in modalità USB HOST (scheda alimentata da alimentatore
esterno).
Porte USB
La presenza della tensione è data dall’accensione
del verde con la scritta ON connesso alla tensione di +3.3V
I vari pin di alimentazione sono raggruppati e sono
VIN alimentazione generale qualora sia utilizzato un alimentatore esterno.
GND riferimento di massa
5V su questo pin è presente una tensione a 5V stabilizzata e fornita dal regolatore presente sulla scheda, l'assorbimento non deve superare gli 800mA.
3,3V su questo pin è presente una tensione a 3,3V stabilizzata e fornita dal regolatore presente sulla scheda, l'assorbimento non deve superare gli 800mA. Questa tensione è la medesima che alimenta il microcontrollore AT91SAM3X8E, si raccomanda la massima cautela nell'utilizzo.
IOREF questo pin fornisce la tensione di riferimento utilizzata dal microcontrollore, uno shield configurato correttamente è in grado di leggere questo valore per settare la corretta tensione di lavoro o per attivare dei traslatori di livello.
Pin alimentazione. |
Il SAM3X dispone di 512 KB (2 blocchi di 256 KB) di
memoria Flash (anche chiamata flash memory, è una tipologia di memoria a stato
solido, di tipo non volatile) per la memorizzazione del codice. Il
bootloader è programmato in una memoria ROM (acronimo di Read Only
Memory
Memoria di sola lettura) dedicata.
La SRAM (acronimo di Static Random Access Memory, è un tipo di RAM volatile che
non necessita di refresh) a disposizione è di 96 KB in due banchi contigui di 64
KB e 32 KB.
E' possibile cancellare la memoria Flash del SAM3X con il tasto di cancellazione
presente bordo. Questa operazione rimuoverà il programma attualmente caricato
dalla MCU.
Per cancellare, premere e tenere premuto il pulsante ERASE per alcuni secondi,
mentre la scheda è alimentata.
Vedere anche:
- Per la memoria tipo ROM
http://it.wikipedia.org/wiki/Read_Only_Memory
- Per la memoria tipo SRAM
http://it.wikipedia.org/wiki/SRAM
- Per la memoria Flash
http://it.wikipedia.org/wiki/Memoria_flash
Pulsante per la cancellazione memoria FLASH |
Il comando può anche essere attivato tramite l’attivazione del MOSFET a canale P , T3 un FND 340P tramite la linea ERASE_CMD connessa al pin 23 dell’integrato IC6 tipo ATMEGA16U2.
Ciascuno dei 54 pin disponibili può essere
utilizzato sia come ingresso sia come uscita, utilizzando le funzioni PinMode
(), digitalWrite (), e digitalRead ().
Ogni pin può fornire (source) una corrente compresa tra i 3 e 15 mA, o ricevere
(sink) una corrente tra i 6 i 9 mA, la corrente di source e sink dipende dalla
funzione del pin. Su ogni pin è presente una resistenza interna di pull-up
da 100 Kohm (disconnessa per impostazione predefinita). Alcuni pin hanno
funzioni specializzate
Pin porte di Ingresso/Uscita
Nel connettore con i pin numerati da 22 a 53 i due pin in alto sono connessi a +5V mentre i due pin in basso a GND.
La scheda Arduino DUE dispone di 4 gruppi di pin per la comunicazione seriale, diversamente dai modelli precedenti che erano TTL a 5V queste sono TTL a 3,3V. I pin N.0 e N.1 sono collegati direttamente ai corrispondenti pin del chip IC6 tipo ATmega16U2 utilizzato come convertitore USB/Seriale
Seriale |
Pin RX |
Pin TX |
Seriale N.0 |
0 |
1 |
Seriale N.1 |
19 |
18 |
Seriale N.2 |
17 |
16 |
Seriale N.3 |
15 |
14 |
Pin porte Seriali TTL
I pins dal 2 al 13 sono utilizzati come uscite
PWM (acronimo di Pulse Width Modulation) a 8 bit
utilizzando la funzione analogWrite(). La risoluzione delle uscite PWM
può essere variata con l'utilizzo della funzione analogWriteResolution().
Vedere anche
http://it.wikipedia.org/wiki/Pulse-width_modulation
PWM
Questi pin supportano la comunicazione SPI (acronimo
di Serial Peripheral Interface) con il
processore SAM3X, il connettore è
denominato ICSP sule precedenti schede Arduino.
Per la comunicazione si utilizza la libreria SPI e sono resi disponibili sul
connettore a 6 pin presente al centro scheda, questo connettore è fisicamente
compatibile con le versioni Uno, Leonardo e mega2560. La connessione SPI
può essere utilizzata solo per comunicare con altri dispositivi SPI non per la
programmazione del SAM3X con la modalità "In-Circuit-Serial-Programming.
Vedere anche
http://it.wikipedia.org/wiki/Serial_Peripheral_Interface
Pin |
Funzione |
1 |
MISO (Master Input Salve Output) |
2 |
+5V |
3 |
SCK (Serial Clock Signal) |
4 |
MOSI (Master Output Slave Input) |
5 |
RESET |
6 |
GND |
Connettore SPI |
Nelle vicinanze del Processore IC6 un ATmega16U2 che fa da convertitore USB-to-serial è presente un connettore ICSP acronimo di In Circuit Serial Programming per la sua programmazione senza rimozione dal circuito. I pin del connettore sono collegati ai relativi pin del processore
Pin |
Funzione |
1 |
MISO (Master Input Salve Output) |
2 |
+5V |
3 |
SCK (Serial Clock Signal) |
4 |
MOSI (Master Output Slave Input) |
5 |
RESET |
6 |
GND |
|
|
Connettore ICSP per IC6
La scheda Arduino DUE dispone di un connettore denominato
JTAG acronimo di Join
Test Action Group, creato da un associazione di produttori di circuiti
integrati, che hanno voluto definire uno protocollo standard per effettuare i
test funzionali di tali dispositivi.
Questo protocollo ha la funzione di bloccare il funzionamento normale di tutti i
pin del dispositivo ponendolo in uno stato speciale di funzionamento, che
permette la sua programmazione diretta.
Vedere anche
http://it.wikipedia.org/wiki/JTAG
Pin |
Funzione |
Nome del pin SAM3X |
1 |
+3V3 – Alimentazione |
|
2 |
TMS (Test Mode Select) Selezione del modo test |
PB31 |
3 |
GND |
|
4 |
TCK (Test Clock) Pin di clock dei dati |
PB28 |
5 |
GND |
|
6 |
TDO (Test Data Out) Pin di uscita dei dati |
PB30 |
7 |
NC – non collegato |
|
8 |
TDI (Test Data In) Pin di ingresso dei dati |
PB29 |
9 |
GND |
|
10 |
TRST (Test Reset) Segnale di reset del test |
NRSTB |
Connettore JTAG
A fianco del connettore JTAG è presente il connettore DEBUG, in esso sono presenti i segnali: TCK, TMS e Reset
Pin |
Funzione |
Nome del pin SAM3X |
1 |
GND |
|
2 |
TCK (Test Clock) Pin di clock dei dati |
PB28 |
3 |
TMS (Test Mode Select) Selezione del modo test |
PB31 |
4 |
TRST (Test Reset) Segnale di reset del test |
NRSTB |
Connettore DEBUG
Questi pin supportano il protocollo di comunicazione
CAN (acronimo di Controller Area Network), noto anche come
CAN-bus, è uno
standard seriale per bus di campo, ideato allo scopo di collegare diverse unità
di controllo elettronico. Il protocollo per il momento non è ancora supportato
dalle API di Arduino. I pin sono connessi alle porte PA0, PA1 del SAM3X
Vedere anche
http://it.wikipedia.org/wiki/Controller_Area_Network
Pin comunicazione CAN
Sulla scheda in alto a sinistra è presente il tasto RESET che permette premendolo di riavviare l’esecuzione del programma presente nella memoria del processore.
Pulsante RESET
Sulla scheda Arduino DUE sono presenti in totale 6 led
Nome |
Connesso a |
Colore |
RX |
PC30 SAM3X |
Giallo |
TX |
PA22 SAM3X |
Giallo |
L |
IC1A – Pin 13 PWM |
Giallo |
ON |
+3v3 |
Verde |
RX |
PD4 ATMEGA16U2 |
Giallo |
TX |
PD5 ATMEGA16U2 |
Giallo |
Due coppie si occupano del monitoraggio del traffico seriale (un gruppo connesso al processore SAM3X e uno all’ ATMEGA16U2), uno mostra se la scheda è alimentata mentre il led L è di servizio ed è collegato al pin 13, quando il pin è HIGH il led è acceso, quando il pin è LOW, il led è spento Interessante la possibilità di "dimmerare", cioè cambiare la luminosità del led sfruttando il fatto che il pin 13 è anche una uscita PWM.
Led della scheda Arduino DUE
La scheda ha due gruppi di porte per connessione secondo il protocollo hardware TWI detto anche I2C formato da due linee seriali di comunicazione. La porta 2 dispone già di resistori di pull-up da 1,5 kΏ. Il piedino supporta la connessione TWI utilizzando la libreria Wire
SDA (Serial DAta line) per i dati
SCL (Serial Clock Line) per il clock
Vedere anche http://it.wikipedia.org/wiki/I%C2%B2C
TWI |
Pin SDA |
Pin SCL |
1 |
SDA -20 (PB12) |
SCL-21 (PB13) |
2 |
SDA 1 (PA17) |
SCL 1 (PA18) |
Pin SDA, SCL
La Arduino Due possiede 12 ingressi analogici (Pin
da A0 a A11)) ogni pin presenta una risoluzione a 12 bit (4096 livelli), per
mantenere la compatibilità con le altre schede Arduino la risoluzione è fissata
a 10 bit ma è possibile variarla con la funzione analogReadResolution()
Su questi pin è ammessa una tensione massima pari a 3,3V, l'applicare una
tensione superiore potrebbe danneggiare il chip.
Nella Arduino Due la funzione analogReference() viene ignorata.
Il pin AREF è collegato al riferimento analogico del SAM3X attraverso una serie
di resistenze, per utilizzare questo pin occorre dissaldare dalla scheda la
resistenza siglata BR1.
Porte analogiche
Il pin AREF è collegato al riferimento analogico del SAM3X attraverso una serie di resistenze, per utilizzare questo pin occorre dissaldare dalla scheda la resistenza siglata BR1
Posizione resistenza BR1
Arduino DUE ha due porte di uscita Analogiche segnate come DAC1 (PB16) e DAC2 connesse alle porte PB16 e PB15 del SAM3X. Questi pin forniscono delle uscite analogiche con 12-bit di risoluzione (4096 livelli) con l'utilizzo della funzione analogWrite (). Possono anche essere utilizzati per creare un output audio utilizzando la libreria audio.
Uscite analogiche
Sulla scheda sono presenti anche il pin AREF utilizzato come tensione di riferimento per gli ingressi analogici ed il pin RESET attivo basso.
Per la gestione degli ingressi e delle uscite analogiche sono state inserite nelle API del programma due nuove funzioni: analogReadResolution() e analogWriteResolution(), vediamo in breve a cosa servono:
analogReadResolution ()
Imposta la dimensione (in bit) del valore restituito da analogRead(). Il
valore predefinito è 10 bit (restituisce i valori tra 0-1023) per garantire la
compatibilità con le altre schede basate su AVR. Come abbiamo visto però
la Arduino DUE può operare con una risoluzione a 12 bit, in questo caso la
funzione analogRead() restituirà un numero compreso tra 0 e 4095.
La sua sintassi è: analogReadResolution (bit)
Dove (bit) determina la risoluzione in bit del valore restituito dalla funzione
analogRead (). È possibile impostare questo 1 e 32. È possibile impostare
una risoluzione superiore a 12, ma i valori restituiti da analogRead ()
subiranno un’approssimazione.
analogWriteResolution ()
La funzione analogWriteResolution() imposta la risoluzione della funzione
analogWrite(). Il valore predefinito è 8 bit (valori compresi tra 0-255)
per garantire la compatibilità con le altre schede basate su AVR.
Come abbiamo visto la Arduino DUE possiede:
• 12 pin con 8-bit PWM (come le schede basate su altri AVR)
• 2 pin con 12-bit DAC (Digital-to-Analog Converter)
Impostando la risoluzione di scrittura a 12, è possibile utilizzare
analogWrite() con valori compresi tra 0 e 4095 e sfruttare la piena
risoluzione DAC o per impostare il segnale PWM senza approssimazione.
La sua sintassi è: analogWriteResolution (bit)
Dove (bit) determina la risoluzione in bit dei valori utilizzati nella funzione
analogWrite(). Il valore può variare da 1 a 32. Se si sceglie una
risoluzione superiore o inferiore alle caratteristiche hardware il valore
utilizzato nella analogWrite() viene troncato se è troppo alto o riempito
con zeri, se è troppo bassa.
Utilizzo RTC interno alla scheda Arduino DUE
All'interno del processore ARM Cortex-M3 tipo AT91SAM3X8E che equipaggia la Arduino Due è presente una periferica Real-Time Clock( RTC) che è stato progettata per il consumo di energia molto basso, sfortunatamente nella scheda Arduino Due non è presente una batteria tampone, per cui i dati memorizzati non possono essere salivati
|
Il modulo RTC interno combina un completo orologio giornaliero con sveglia e un calendario gregoriano, completato da un interrupt programmabile periodico. I registri di allarme e di calendario sono accessibili da un bus a 32 bit di dati. I valori di tempo e il calendario sono codificati in codice binario decimale (BCD). Il formato del tempo di può essere in modalità 24 ore o 12 ore con un indicatore AM/PM. L'aggiornamento del tempo e i campi del calendario come la configurazione dei campi di allarme sono effettuate da parallel capture del bus a 32 bit di dati. Un controllo viene eseguito per evitare che i registri siano caricati con dati in formato BCD incompatibili o con una data incompatibile in base al corrente mese/anno/secolo.
Processore ATSAM3X8EA-AU - ARM® Cortex®-M3 revision 2.0 running at up to 84 MHz | ||
|
||
Piedinatura | Datasheet | Foto dell'integrato |
Uscita su display LCD
Utilizzando il modulo RTC interno, l'unico collegamento esterno necessario è quello con il display LCD. Sono utilizzati in questo progetto.
Arduino DUE | Display LCD |
Per l'utilizzo viene utilizzata una speciale versione di libreria che può essere scaricata a questo link https://github.com/MarkusLange/Arduino-Due-RTC-Library
Sono utilizzati i seguenti pin
Pin | Funzione |
Pin +5V | +5V LCD |
Pin GND | GND LCD |
TX1 (D18) | RX LCD |
La scheda Arduino DUE dispone di 4 gruppi di pin per la comunicazione seriale, diversamente dai modelli precedenti che erano TTL a 5V queste sono TTL a 3,3V. I pin N.0 e N.1 sono collegati direttamente ai corrispondenti pin del chip IC6 tipo ATmega16U2 utilizzato come convertitore USB/Seriale
|
|
|
Uscita su display Monitor seriale
Se non si possiede il display LCD è possibile visualizzare ora e data nella finestra di Debug. Controllare che la velocità della porta seriale sia settata a 57600 baud
Arduino DUE |
|
|
Mancata presenza della scheda Arduino Due nell'IDE
Può accadere che sia impossibile trovare Arduino Due
sul menu e quindi non è possibile caricare lo sketch sulla scheda.
Le schede sono elencate sotto Strumenti→
Schede nell'IDE di Arduino, per inserire la scheda è necessario
installare un software aggiuntivo
La scheda Arduino due non è mostrata nell'elenco
L'Arduino Due per funzionare ha bisogno di installare il
software extra per poter essere programmato.
Per fare questo occorre seguire questi semplici passi:
Selezionare la voce di menu Gestione schede dal menu IDE di Arduino, che si trova sotto Strumenti → Schede→ Gestione schede
Nell'elenco che apparirà ricercare Arduino SAM Board (32-bits ARM Cortex M3) By Arduino e fare clic sul pulsante Installa.
Ci vorrà un po 'di tempo per installare il software, a seconda della velocità di connessione Internet. Dopo l'installazione, fare clic sul pulsante Chiudi nella finestra di dialogo.
Dopo l'installazione, il pannello Schede Arduino ARM (32-bits), selezionare Arduino Due (Programming Port) per consentire agli sketches di essere caricati sulla scheda. In questo caso, il cavo USB deve essere collegato alla porta USB denominata PROGRAMMING sul fondo della scheda.
Quando collegate il cavo, potrebbe essere necessario installare il driver necessario al sistema operativo nel vostro PC
Filmati sulla scheda Arduino Due
Elenco revisioni | |
06/08/2017 | Aggiornato pagina, inseriti filmati |
05/03/2017 | Aggiornato pagina |
08/12/2012 | Emissione preliminare |