SEQUENCER Un altro circuito realizzato dal nostro
Sergione Salvitti.
L'attuale centralina per poter disporre anche della parte
multimediale deve essere collegata a un personal computer, anche
vecchio modello.
Molte persone hanno chiesto più volte se era possibile poter costruire
qualcosa che potesse funzionare senza computer.
Questo sequencer, con lettore MP3 incorporato, è stato progettato per
poter essere sostituito al personal computer e poter programmare
autonomamente la centralina e gli altri circuiti elettronici quali la
scheda relé per la porta parallela e il controller per stelle fuochi e
relé. Inoltre può eseguire dei brani in formato MP3 registrati su MMC/SD
card.
Queste sono le sue caratteristiche:
- Interfaccia per memory card MMC/SD per memorizzare suoni
e rumori in formato MP3
- Decoder MP3 incorporato
- Due interfacce seriali per connettere fino a due centraline
classiche
e due controller luci a bassa tensione
- Una interfaccia parallela per connettere l'interfaccia relé
- Microcontrollore programmabile da interfaccia seriale
Una volta programmato tramite la porta seriale di un PC, il
sequencer funziona autonomamente e mantiene memorizzato il programma
nella sua memoria FLASH anche dopo l'assenza della tensione di
alimentazione.
L'idea iniziale di utilizzare un lettore CDROM per il sequencer è
stata scartata per problemi di ingombro e consumo di energia. Inoltre
essendo dotati di parti meccaniche in movimento, è facile che vadano
soggetti a guasti.
I presepi esposti spesso lavorano continuativamente per ore e per
giorni e capita di frequente che, sul più bello, il lettore CDROM si
ferma per un guasto meccanico o perchè il laser si è sporcato.
I lettori a stato solido non hanno questo tipo di inconveniente e,
visto l'attuale basso costo delle memory card, l'utilizzo di questi
dispositivi è ormai alla portata di tutti.
Il circuito e' basato sul microcontroller ATMEGA162 alimentato a 3,3
Volt.
A questo sequencer è possibile (consigliabile) abbinare:
Utilizzando questo sequencer in abbinamento con: 2 centraline, 2
controller luci a bassa tensione e 1 interfaccia relé é possibile
creare un sistema multimediale per Presepi con le seguenti
caratteristiche:
-
16 USCITE PER LAMPADE CON 4+4 FASI GIORNALIERE
-
28 USCITE PROGRAMMABILI IN 4 GRUPPI DA 7 USCITE
ON-OFF/FUOCHI/STELLE
-
7 USCITE A RELE' PER CARICHI FINO A 10 A
-
PLAYER MP3 PER MUSICHE E RUMORI AMBIENTALI
DESCRIZIONE DEL CIRCUITO:
Nella Fig. 1 è possibile ammirare un'immagine
del primo prototipo filato.
Nella parte superiore a sinistra possiamo intravedere l'alimentatore a
3,3 Volt.
In alto al centro il connettore della porta parallela di colore scuro.
A destra possiamo notare il decoder MP3 con il connettore per l'uscita
audio.
Al centro spicca il microcontrollore ATMEGA162 nella versione DIL 40.
A fianco il buffer non invertente 74HC541.
In basso a sinistra l'integrato MAX232 con i due connettori per la
COM1 e COM2.
In basso a destra s'intravede la memory card.
Il connettore relativo e' stato montato dal lato saldature della
scheda.
I collegamenti sono stati realizzati con fili saldati nella parte
sottostante della board.
L'unico componente SMD e' il decoder MP3 siglato VS1001K che e' stato
saldato alla piastrina millefori tramite un piastrino di adattamento
da SOIC28 a DIL20.
Nella Fig. 8 e nella Fig. 9 è visibile
un'immagine del prototipo montato.
Nella Fig. 8 si può notare sulla destra l'asola per
l'inserimento della MMC/SD card e il jack stereo di uscita per
l'audio.
Nella Fig. 9, pannello posteriore, vediamo:
A sinistra l'ingresso della tensione di alimentazione.
Al centro il connettore della porta parallela per la scheda relé.
A destra i due connettori relativi alla COM1 e COM2 alle quali
connettere fino a due centraline classiche e due controller luci a
bassa tensione mediante l'utilizzo dell'apposito cavo splitter.
DOCUMENTI:
Per via della complessità del circuito lo schema elettrico e' stato
disegnato su 4 diversi fogli e precisamente:
MICROCONTROLLORE |
Fig. 2 |
DECODER MP3
E SD |
Fig. 3 |
INTERFACCE
SERIALI E PARALLELA |
Fig. 4 |
CIRCUITO
D'ALIMENTAZIONE |
Fig. 5 |
Fig.2 - Microcontrollore:
Il circuito e' basato sul microcontroller ATMEGA162 alimentato
a 3,3 Volt.
Il clock e' stato fissato a 8 MHz ed e' costituito dalla rete: CC1,
CC2 e X1 collegata ai pin 18 e 19 del microntrollore.
Il circuito di reset e' costituito dalla rete RC: CE1, R4 per un tempo
di reset di circa 100 ms.
Il reset può essere controllato manualmente tramite il pulsante e la
resistenza R1 da 100 ohm.
Il circuito di reset può anche essere controllato dalla interfaccia di
programmazione connessa al connettore SIP1.
Tramite questa interfaccia e l'apposito connettore è possibile
programmare il microcontrollore attraverso l'interfaccia parallela del
PC usando il programma Ponyprog.
Tramite questa interfaccia e l'apposito connettore e' possibile
programmare il microcontrollore attraverso l'interfaccia parallela del
PC usando il programma Ponyprog.
Questo tipo di programmazione viene usato soltanto la prima volta per
inserire il programma BOOTLOADER.
Una volta che il programma di bootloader e' stato installato, le
modifiche sul programma applicativo in FLASH possono essere effettuate
più agevolmente mediante l'impiego della porta seriale e della feature
AVRPROG disponibile all'interno di AVR STUDIO della ATMEL.
Il connettore SIP2 e' stato introdotto per poter utilizzare
l'interfaccia JTAG.
Fig. 3 - Decoder MP3 e SD
Il decoder MP3 e' costituito dal noto VS1001K che
comprende al suo interno sia il decoder che il convertitore DAC.
Il decoder usa un quarzo da 24 MHz e dispone delle alimentazioni
analogica e digitale separate per ridurre il rumore.
Particolare attenzione deve essere prevista per la realizzazione del
circuito stampato nel separare le alimentazioni relative alla parte
digitale e alla parte analogica.
Fig. 4 - Interfacce seriali e
parallela
Il sequencer dispone di 2 interfacce seriali: COM1 e COM2 e un'
interfaccia parallela: LPT1
L'interfaccia LPT1 può essere facilmente collegata all'interfaccia
relé tramite un flat a 16 fili.
La COM1 viene usata come interfaccia seriale primaria dalla quale
scaricare il file per la programmazione del microcontrollore.
Nel normale funzionamento viene usata per il collegamento della prima
coppia di centralina classica e controller luci a bassa tensione.
La COM2 permette di collegare una seconda coppia di centralina
classica e controller luci a bassa tensione.
Fig. 5 - Alimentazione
Il circuito di alimentazione converte la tensione continua
d'ingresso compresa tra 5 e 15 Volt nella tensione a 3,3 Volt.
E' stato deciso di utilizzare un'unica tensione a 3,3 Volt per il
fatto che sia il decoder MP3 che la memory card devono essere
alimentati necessariamente a bassa tensione.
Per semplicità anche gli altri componenti del circuito sono alimentati
a 3,3 Volt, microcontrollore compreso.
L'alimentatore di tipo lineare e' basato sull'integrato LM317H.
Il diodo D1 serve a proteggere il circuito dalle inversioni di
polarità.
I due condensatori CF2 e CE2 realizzano il circuito di filtraggio
della tensione d'ingresso.
La rete R5, R6, R7 predispone l'integrato U2 a generare una tensione
d'uscita secondo la seguente formula:
VO = 1,25 X (R5 + R6 + R7) / R5
Due circuiti LC: (L1, CF3, CE3) e (L2, CF4, CE4) separano la tensione
digitale VDD dalla tensione analogica VAA per eliminare eventuali
disturbi che potrebbero deteriorare la qualità di riproduzione
dell'audio.
FIRMWARE
Il firmware è stato scritto usando il linguaggio C per micro AVR e
precisamente:
WINAVR |
Compilatore C per
i micro della seria AVR |
DEV-CPP |
Ambiente di
compilazione MINGW |
AVR
STUDIO |
Ambiente di debug
e programmazione ATMEL |
PONYPROG |
SW di
programmazione per inserire il bootloader |
E' stato diviso in due parti: BOOTLOADER e SEQUENCER.
IL BOOTLOADER
E' così composto:
COMPOSIZIONE DEL BOOTLOADER: |
main.c |
|
E' il programma
principale |
serial.c |
serial.h |
Driver della
seriale |
assembly.s |
assembly.h |
Parte del
programma in linguaggio assembler |
|
defines.h |
Definizioni |
makefile |
|
Makefile |
setenv.bat |
|
Batch file per
impostare le variabili di ambiente WINAVR |
IL SEQUENCER
Ovviamente il programma del SEQUENCER è più
complesso ed è così composto:
COMPOSIZIONE DEL SEQUENCER |
sequencer.c |
|
E' il programma
principale |
prova.c |
|
E' il programma
principale di prova |
uart.c |
uart.h |
Driver per
l'interfaccia seriale |
timer.c |
timer.h |
Driver del timer 1 |
ports.c |
ports.h |
Driver
dell'interfaccia parallela |
vs1001k.c |
vs1001k.h |
Driver del decoder
mp3 |
spi.c |
spi.h |
Driver
dell'interfaccia spi |
mmc.c |
mmc.h |
Driver della
memory card |
mp3.c |
mp3.h |
Player MP3 |
decode.c |
decode.h |
Decoder del
pseudo-code |
code.c |
|
File contenente il
pseudo-code |
schedule.c |
schedule.h |
Scheduler |
|
avrlibdefs.h |
Definizioni per il
nuovo compilatore winavr |
|
cpuclock.h |
Definizione del
clock CPU |
|
encode.h |
Definizione dei
pseudo-code |
dummy.c |
|
File dummy usato
da prova.c al posto di code.c |
|
global.h |
Definizione
globali |
|
types.h |
Definizione dei
tipi |
makeprova |
|
Makefile per la
generazione di prova.hex |
makeseq |
|
Makefile per la
generazione di sequencer.hex |
setenv.bat |
|
Batch file per
impostare le variabili di ambiente di WINAVR |
compila.bat |
|
Batch file per
compilare separatamente un file *.c |
IL COMPILATORE ENCODE
Per la programmazione del sequencer è necessario
generare mediante script un file contenente un codice intermedio di
nome code.c.
Per creare il file code.c viene utilizzata l'utility ENCODE.
Una volta creato il file code.c, dobbiamo compilarlo e linkarlo con
l'ambiente WINAVR in modo da generare il file sequencer.hex.
Questo file deve essere poi caricato nella FLASH del microcontrollore
tramite la porta seriale utilizzando l'utility AVRPROG disponibile
all'interno dell'ambiente integrato AVR STUDIO.
COMPOSIZIONE DEL COMPILATORE ENCODE |
encode.c |
encode.h |
E' il programma
principale |
parser.c |
parser.h |
parser per il
riconoscimento dei tokens |
tokens.c |
|
Funzioni relative
ai tokens individuati |
|
types.h |
Dichiarazione dei
tipi |
makefile |
|
Makefile |
setenv.bat |
|
Batch file per
settare le variabili di ambiente di DEV-CPP |
INSTALLAZIONE E TEST
Il controller dispone di un programma per effettuare il
boot tramite la porta seriale COM1.
Al momento del restart viene avviato il programma bootloader che
rimane attivo per un periodo di 5 secondi in attesa di ricevere i
comandi da AVRPROG.
Se al termine dei 5 secondi non viene ricevuto alcun criterio, il
programma effettua il restart nella maniera classica e parte l'ultima
applicazione che era stata caricata nella memoria FLASH.
Prima di effettuare ogni prova bisogna generare il file applicativo
sequencer.hex e scaricarlo nella FLASH del microcontrollore.
La generazione di questo file viene effettuata tramite il PC.
Prima di tutto devono essere installati i seguenti programmi:
WINAVR
AVR STUDIO 4
SCRIPT DI BASE
Il file sorgente può essere scritto con un semplice editor di testo
sullo stile dei file batch usati per il controllo da PC.
Il file/files prodotti vanno compilati per generare il file
sequencer.hex che verrà utilizzato per il caricamento della Flash
del sequencer.
PROGRAMMAZIONE
Come già detto la programmazione del microcontrollore viene
realizzata scrivendo prima dei batch file di testo. Una volta che li
abbiamo scritti dobbiamo eseguire i seguenti passi:
1) Compilazione dei batch file e generazione del
file sequencer.hex
2) Programmazione del microcontrollore
Per la compilazione del batch file usare lo script: genera.bat <nomefile.bat>
Il file sequencer.hex prodotto viene scaricato tramite la porta
seriale del PC collegata all'interfaccia COM1 del sequencer usando il
tool AVRPROG contenuto in AVR STUDIO 4.
Nella directory presepio del CDROM e' contenuto una serie di file di
esempio.
PREPARAZIONE DELLA MEMORY CARD
La memory card deve contenere i file in formato MP3 per
la riproduzione audio.
E' possibile utilizzare sia memory card del tipo MMC che memory card
del tipo SD a partire da 32 Mbytes fino a 1 Gbytes.
Nella Fig. 10 possiamo vedere i due tipi di memoria usata per i
tests: una MMC da 32 Mbytes e una SD da 128 MBytes
Nella Fig. 11 possiamo vedere le due cards viste dal retro. Notare la
stretta somiglianza.
Le memory card devono essere formattate in modalità FAT16 e non
devono contenere sottodirectory. Tutti i file devono quindi
risiedere nella directory principale.
Ogni file deve essere nominato con le prime due lettere numeriche da
01 a 99.
Il formato del nome del file deve essere 8+3 (DOS) con l' estensione
uguale a: "MP3".
COME
PREPARARE I FILES IN FORMATO MP3
E' possibile estrarre i files audio da un CD e convertirli nel formato
MP3 usando il tool : CD-DA EXTRACTOR.
Una volta creati, rinominare i files come 01xxxxxx.mp3, 02xxxxxx.mp3... ecc.
Con l'ausilio di un lettore di memory card per PC (in Fig. 12 è
visualizzato un modello), eseguire le seguenti operazioni:
1)
Formattare la memory card con file system FAT16
2)
Copiare tutti i file mp3 generati nella directory principale della
memory card
3)
Togliere la memory card dal lettore del PC e inserirla
nel sequencer
Verificare che il sequencer riproduca correttamente i brani mp3
DOCUMENTAZIONE COSTRUTTIVA
Tutti i documenti, manuale, schemi, pcb ecc. si possono scaricare
dalla finestra 'downloads'.
Chi vuole tutto pronto può richiedere all'autore il progetto già montato
e funzionante.
L'indirizzo web è il seguente: www.salvitti.it.
E' disponibile anche un CDROM (da richiedere sempre all'autore)
contenente:
- Musiche in formato MP3
- Tools per la programmazione del microcontrollore
- Script di base
- Documentazione
Per chi ha realizzato la centralina, il sequencer montato è già
pronto all'uso.
Seguire la seguente procedura:
- Collegare il cavo seriale della centralina classica all'ingresso
COM1 del sequencer.
- Inserire la memory card nello slot del sequencer.
- Accendere la centralina
- Accendere il sequencer
Il led verde del sequencer si accende all'inserzione
dell'alimentazione.
Dopo 5 secondi il led rosso del sequencer si accende e il programma
dovrebbe partire in automatico.
|