ARDUINO
stand-alone
Modulo luci

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:

homotix

PCBONLINE

 

 

Schema elettrico della scheda Arduino serial

 

Sigla

Valore

C1,C2

22pF ceramico

C3

100 µF 25V elettrolitico verticale

C4

10 µF 25V elettrolitico verticale

D1,D6

Led Blu

D2,5,7,8 6

Led Giallo

D3,4

Led Verde

D9,10,11

12 Led bicolore 5mm L-59EGW

R1,2,3,4,18,19

4,7 kΏ 1/4W 5%

R5,7,8,10

390 Ώ 1/4W 5%

R6,9

470 Ώ 1/4W 5%

R11,12

82 Ώ 1/4W 5%

R13,14,20,21

150 Ώ 1/4W 5%

R15,16

220 Ώ 1/4W 5%

R17

10 kΏ 1/4W 5%

IC1

Arduino Atmega328

IC2

Regolatore LM 7805

TR1,2,3,4,5,6

Transistor NPN BC337

Q1

Quarzo 16 MHz tipo HC49/S

S1

Micro swicth

JP1

Pin head femmina 1x07

JP 2,3,4,5

Pin head femmina 1x03

SV 1

Pin head femmina 1x7

SV 2,3,4,5

Pin head femmina 1x03

X1

Morsettiera 2 poli passo 2,54mm

X2

Pin head polarizzata maschio 1x4


Files formato EAGLE

Sezione alimentazione

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

Sezione processore

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

Pilotaggio dei Led

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)

L-59EGW Led bi-polare e bi-colore 3 pin catodo comune

Piedinatura Datasheet Foto

Convertitore RS232/TTL

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.

LPM232/B Serial converter
modulo_lpm232_1.jpg
Piedinatura Datasheet Foto del modulo

Fasi del test della scheda

Foto del test della scheda

Il montaggio è stato fatto utilizzando in parte una breadboard e in parte volante

Nella foto la scheda di controllo connessa con il convertitore TTL/RS232

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

Prima fase del montaggio, saldatura delle resistenze montate in verticale per ridurre lo spazio. Quindi lo zoccolo, il quarzo e i suoi condensatori

Seconda fase del montaggio, saldatura dei transistor

Quarta fase del montaggio, saldatura dei pin strip

Ultimazione del montaggio, con saldatura del regolatore, la morsettiera, i condensatori elettrolitici. Per ultimo inserimento del processore rispettando la tacca di orientamento

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.

 

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

Files formato EAGLE

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