ARDUINO ultimo aggiornamento 20 dicembre 2018 |
|
Da una richiesta di un amico è nata questa scheda che permette di comandare vari
led sia di tipo singolo che bicolore.
La scheda è basata su un
Arduino stand-alone in cui cioè non è usato tutta una scheda Arduino ma
solamente il processore e pochi altri componenti. Sulla scheda che misura solo
53x43 mm, oltre all'integrato
Atmega328
in qui è caricato l'interprete Arduino presente una e dei
transistor che interfacciano le porte di
Arduino per permettere una maggior corrente in uscita. Per
la programmazione è presente un connettore a cui collegare un
adattatore di livelli tra
il livello TTL del processore e quello RS232 del PC.
In questo caso abbiamo:
Sezione Processore
Sezione pilotaggio Led
Adattatore di livelli TTL/RS232
|
|
Schema elettrico della scheda Arduino serial
|
L'alimentazione della scheda è formata dalla morsettiera X1 a cui collegare la batterie, la tensione viene regolata tramite il classico LM7805 e filtrata dai condensatori C3 e C4.
LM 7805 Regolatore di tensione | ||
Piedinatura | Datasheet | Foto dell'integrato |
La sezione processore è basata sul processore ATmega328 un microcontrollore con bus a 8 bit prodotto dalla Atmel con architettura di tipo RISC (acronimo di Reduced Instruction Set Computer). Il clock è dato da Q1 un quarzo da 16 MHz con i soliti due condensatori ceramici di supporto. La programmazione del processore in cui sarà già presente il firmware di Arduino è effettuata tramite il connettore JP6 che si connette ai pin del processore TXD, RXD e Reset. Per il reset del processore è presente anche un pulsante il miniatura S1.
Processore ATmega328 8-bit Microcontroller with 32K Bytes In-System Programmable Flash | ||
Piedinatura | Datasheet | Foto dell'integrato |
Il pilotaggio dei led è effettuato con dei semplici transistor NPN di tipo BC337 che pilotati dalle porte del processore si comportano come interruttori, è presente una resistenza sulla base dei transistor e una sull'emettitore per la limitazione della corrente
Transistor NPN BC337 Switching and Amplifier Applications | ||
|
||
Piedinatura | Datasheet | Foto del transistor (contenitore plastico) |
Per interfacciare il processore con la porta seriale del PC si utilizza un modulo LPM232-B. Questo componente è un convertitore seriale che consente di collegare direttamente una porta UART (CMOS o TTL) ad una linea RS232. Il modulo dispone di pin di enable e shutdown (non utilizzati in questa applicazione) , linee dati e controllo di flusso (RX, TX, RTS, CTS). La schedina dispone di un connettore a cui fanno capo i vari segnali, l'alimentazione +5V e prelevata dal modulo principale.
Fasi del test della scheda
|
|
|
||
Realizzazione pratica
Per la costruzione delle scheda si procederà iniziando dalla realizzazione dei circuiti stampato il cui lato rame è riportato sotto. Per la loro realizzazione si utilizzeranno delle basetta in vetronite (monofaccia) delle opportune dimensioni, il metodo potrà essere quello della fotoincisione o del trasferimento termico utilizzando i cosiddetti fogli blu (PRESS-N-PELL),
Circuiti stampati
Una volta inciso il rame Si passerà quindi alla foratura delle stesse, utilizzando principalmente una punta da 0,8 mm, mentre si utilizzeranno una da 1mm per i pin-strip. In seguito si potrà passare al posizionamento e alla saldatura dei componenti seguendo gli schemi visibili sotto.
Fasi di montaggio della scheda di comando
Nella foto la modifica del connettore di programmazione effettuata dopo le prima prove per inserire il segnale DTR, necessario per portare a buon fine la programmazione tramite l'IDE. |
Private Policy Cookie Policy
Esempio di cablaggio della scheda
Costruzione modulo interfaccia
Elenco componenti |
|
IC1 |
LPM232-B + 2 pin strip femmina 1x4 |
X1 |
Pin strip maschio polarizzato 7 poli |
Esempio di programma
Il programma di gestione è molto semplice, si tratta di creare una stringa contenenti lo stato delle uscite del processore per ogni effetto che vogliamo ottenere. Quindi dopo aver settato le porte come uscite, si crea un ciclo che esegue i singoli effetti attivando o disattivando le porte.
// Programma per gestione modulo luci // Nella prima parte si definisce lo schema di accensione // 1 = LED on, 0 = LED off // Arduino pin: 2,3,4,5,6,7,14[A0],8,9,10,11,12,13,15[A1] byte accensione_led[24][14] = {{0,0,0,0,1,1,0,1,0,0,1,0,1,1}, // = 0 {0,0,0,0,1,0,0,1,0,0,1,0,1,1}, // = 1 {0,0,0,0,0,1,1,0,1,0,0,0,0,0}, // = 2 {0,1,0,1,0,0,1,0,1,0,1,0,0,1}, // = 3 {0,1,0,0,0,0,0,1,0,0,1,0,1,0}, // = 4 {0,0,0,1,0,0,0,1,0,0,0,0,1,0}, // = 5 {1,0,0,0,1,0,1,0,1,1,0,1,0,0}, // = 6 {0,0,0,0,1,0,1,0,1,1,0,1,0,0}, // = 7 {1,0,0,0,0,0,0,1,0,0,0,0,1,0}, // = 8 {0,1,1,0,0,0,0,1,0,1,0,1,1,0}, // = 9 {0,1,0,0,0,0,1,0,1,1,0,1,0,0}, // = 10 {0,0,1,0,0,0,1,0,1,0,0,0,0,0}, // = 11 {0,0,0,0,1,1,0,1,0,1,0,0,1,1}, // = 12 {0,0,0,0,1,0,0,1,0,1,0,0,1,1}, // = 13 {0,0,0,0,0,1,1,0,1,0,1,1,0,0}, // = 14 {0,1,0,1,0,0,1,0,1,0,1,1,0,0}, // = 15 {0,1,0,0,0,0,0,1,0,1,0,0,1,1}, // = 16 {0,0,0,1,0,0,0,1,0,1,0,0,1,1}, // = 17 {1,0,0,0,1,0,1,0,1,0,1,1,0,0}, // = 18 {0,0,0,0,1,0,1,0,1,0,1,1,0,0}, // = 19 {1,0,0,0,0,0,0,1,0,1,0,0,1,1}, // = 20 {0,1,1,0,0,0,0,1,0,1,0,0,1,1}, // = 21 {0,1,0,0,0,0,1,0,1,0,1,1,0,0}, // = 22 {0,0,1,0,0,0,1,0,1,0,1,1,0,0}}; // = 23 void setup() { pinMode(2, OUTPUT); //LED 1 - Blu pinMode(3, OUTPUT); //LED 2 - Giallo pinMode(4, OUTPUT); //LED 3 - Verde pinMode(5, OUTPUT); //LED 4 - verde pinMode(6, OUTPUT); //LED 5 - Giallo pinMode(7, OUTPUT); //LED 6 - Blu pinMode(8, OUTPUT); //LED 8 - 2° Giallo (2 led) pinMode(9, OUTPUT); //LED 9 - Lato rosso - serie 6 led pinMode(10, OUTPUT); //LED 10 - lato verde - serie 6 led pinMode(11, OUTPUT); //LED 11 - Lato rosso - 1° serie 3 led pinMode(12, OUTPUT); //LED 12 - Lato verde - 1° serie 3 led pinMode(13, OUTPUT); //LED 13 - Lato rosso - 2° serie 3 led pinMode(14, OUTPUT); //LED 7 - 1° Giallo (2 led) pinMode(15, OUTPUT); //LED 14 - Lato verde - 2° serie 3 led } void ecto_1(byte digit) { byte pin = 2; for (byte Count = 0; Count < 14; ++Count) { digitalWrite(pin, accensione_led[digit][Count]); ++pin; } } void loop() { for (byte count = 24; count > 0; --count) { delay(80); // pausa in millisecondi ecto_1(count - 1); } } |
Elenco revisioni | |
20/12/2012 | Emissione preliminare |