DOMOTICA
Dolci risvegli
Alba programmata
In natura i nostri orologi biologici sono controllati dalla luce del sole. L’orologio descritto
qui imita l’alba per svegliarvi dal sonno dolcemente e in modo naturale.
Iniziate meglio la giornata svegliandovi con la luce invece che con il solito allarme.
Tutti hanno provato la spiacevole sensa- caso è più attraente di ciò che si ottiene con può vedere che l’inter--
zione di svegliarsi bruscamente dal sonno un LED controllato in PWM. Volendo otte- faccia utente è un econo- o-
con un ronzio, un beep o il suono di un nere questo effetto con dei LED bisognava mico (e facile da trovare) re) mod lo LCD di
modulo
allarme. Questo accade quando si è nel usare LED RGB o LED con colori diversi. Le due righe per 16 caratteri (LCD1) insieme a
sonno più profondo, e si traduce spesso nel cose diventerebbero ancora più complicate quattro pulsanti (S1-S4) che sono collegati
non sentirsi perfettamente svegli o addirit- volendo variare la luminosità di questi LED. alla scheda del circuito principale (figura 2)
tura rimbambiti per tutto il giorno. Il risparmio energetico ottenibile con i LED è con connettori (K7 e K8) e un cavo a 5 vie.
Ma si può essere svegliati anche in modo comunque molto limitato, perché la sveglia Ogni pulsante collega a massa un pin di I/O
diverso. Se si dorme in estate con le finestre non tiene la lampada accesa molto tempo. dell’ATmega168 (IC2). Le resistenze di pull-
semiaperte spesso ci risvegliamo spontane- Oltre alla lampada la sveglia per funzionare ha up (R7-R10) forniscono la tensione corretta
amente quando fuori fa luce. bisogno di sapere l’orario preciso. Un modulo quando i pulsanti sono aperti.
Quando ci si risveglia in questo La sveglia è controllata da cin-
modo ci si sente bene per tutta
la giornata. Non avendo sempre
Caratteristiche que pulsanti in tutto. Il quinto
“pulsante” è un sensore capaci-
a disposizione un tramonto vero • Connettore di uscita per una o più lampade dimmerabili 230 tivo basato su un’idea scovata in
e proprio meglio iniziare allora la V / 115 V (80 W max.) un forum tedesco di microcon-
giornata con uno simulato. • Sincronizzazione via radio dell’ora DCF77 trollori[1]. Il sensore è costituito
• Sensore a sfioramento per spegnere l’allarme da una superficie metallica colle-
Luce e tempo gata all’ingresso (vicino a R13),
• Microcontrollore ATmega168
La sveglia a luce qui descritta è quest’ultimo è collegato ad un pin
costruita attorno ad un micro- • PCB e microcontrollore programmato disponibili da Elektor di I/O (PC5) del microcontrollore
controllore e può accendere e • Firmware e codice sorgente disponibili gratuitamente da Elektor ATmega tramite R13 e una rete di
regolare una o più lampade a • Può funzionare anche a 115 V protezione costituita da D2, D3
230 V dotata di una lampadina a e R15. Il firmware del microcon-
incandescenza (normale o alogena). Anche ricevitore DCF77 è qui una buona soluzione in trollore (scritto in C con ambiente di svi-
se potrebbe sembrare più logico utilizzare quanto ci permette di utilizzare una semplice luppo WinAVR) attiva periodicamente l’u-
dei LED di potenza, ci sono buone ragioni base dei tempi per far funzionare il microcon- scita di questo pin da livello 1 (alto) a livello
che spingono all’utilizzo di una lampada trollore. Non c’è bisogno di un orologio in 0 (basso) e poi campiona più volte il livello
ad incandescenza. Oltre al basso costo tempo reale dal momento che la frequenza del pin di I/O mentre sta tornando alla con-
(denaro e fatica) e alla possibilità di utiliz- di clock del microcontrollore (controllata da dizione di livello alto. La capacità della linea
zare una lampada che già si possiede (come un quarzo esterno) è sufficientemente precisa di segnale e la superficie del sensore metal-
una lampada da comodino), le tonalità di da consentire il corretto funzionamento della lico vengono caricati tramite la resistenza
colore delle lampade ad incandescenza sveglia anche in assenza del segnale radio. R15 e il livello logico ritorna a 1 quando
sono le migliori per questo scopo. Il colore la tensione supera il livello di soglia. Il sof-
della luce di una lampada ad incandescenza Sensori tasti e dimmer tware è in grado di determinare la capacità
varia al variare della tensione, cambiando Non serve solo un circuito di allarme e un del circuito del sensore collegato al pin di
gradualmente dal rosso al bianco all’aumen- microcontrollore. Sono necessari un display I/O misurando quanto tempo richiede que-
tare della luminosità. Questo assomiglia a e i pulsanti per l’interfaccia utente. Nello sto processo. Se si tocca la superficie del
ciò che accade al sorgere del sole e in ogni schema elettrico (figura 1) della sveglia, si sensore la capacità aumenta e aumenta di
DOMOTICA
c
conseguenza anche il tempo di carica.
Tabella 1. Funzioni del sensore a sfioramento
LL’autore ha utilizzato il pannello fron-
ttale in alluminio della sveglia come Stato Durata del tocco Azione
ssuperficie del sensore. Le funzioni elen- Retroilluminazione del display spenta < 1 secondo Accendere la retroilluminazione
ccate nella tabella 1 possono essere atti- del display per 1 minuto
vvate toccando la superficie del sensore. Lampada off, allarme non attivo < 3 secondi Accendere la lampada
UUna di queste funzioni è di accendere alla massima luminosità
la retroilluminazione del display che è
Lampada accesa (compresa la fase < 3 secondi Spegne la lampada
ccontrollata dal piedino PD6 del micro-
ccontrollore ATmega e dal transistor T3. di allarme)
LLa lampada da 230V o da 115V colle- Sveglia < 1 secondo Spegnere lallarme (con funzione
ggata a K1 (potenza massima 80W) è snooze opzionale)
re
regolata da un circuito con triac clas-
ssico, anche se qui l’innesco del triac
(T
(TRI1) è controllato non con un diac V). A questi terminali si deve collegare un Il segnale DCF77 può essere ricevuto attra-
mma dal microcontrollore tramite il foto- adeguato cavo di alimentazione. verso gran parte dell’Europa centrale e del
a
accoppiatore (IC2) per l’isolamento K3 è una porta seriale per la programma- Regno Unito.
di rete. Il circuito dimmer è basato zione e il debugging. È compatibile con il A K5 può essere collegato un piccolo alto-
su uno schema open source deno- cavo adattatore FTDI USB e TTL[3]. parlante (8 Ω) o un buzzer piezoelettrico.
minato “Semitone Crystal”[2]. Nel Il modulo ricevitore DCF77 è collegato a Questo serve come sicurezza per quelli che
nostro circuito però abbiamo elimi- K4. Questa porta è predisposta per il noto dormono con la benda negli occhi o come
nato il fotoaccoppiatore per il rileva- modulo ricevitore Conrad Electronics alternativa all’allarme luminoso. K6 è un con-
mento del zero crossing e abbiamo DCF77 (codice 641138) mostrato in figura nettore a sei vie per la porta ISP e può essere
utilizzato un semplice transistor (T2). 3. Il data sheet e lo schema elettrico di que- utilizzato per esempio in combinazione con
sto modulo sono disponibili nel sito web di l’interfaccia USB AVRprog di Elektor[4] per la
Collegamenti Conrad. Solo i pin da 1 a 3 del modulo rice- programmazione e il debugging.
Come abbiamo già detto la lampada vitore DCF77 sono utilizzati e sono con-
da 230V è collegata al connettore K1 e i nessi ai pin da 1 a 3 di K4. L’uscita negata Alimentazione
pulsa
pulsanti a K7 e K8. Rimangono i connettori del modulo (inverted output) non viene Il trasformatore di rete saldato sulla scheda
da K2 a K6. utilizzata. Il pin 4 di K4 è connesso a PD5 (TR1) riceve tensione tramite il connettore
K2 fornisce la connessione per l’alimenta- del microcontrollore e fornisce un segnale di alimentazione K2. Questo trasformatore
zione della scheda di allarme (115 V o 230 di Enable necessario per moduli differenti. dispone di due avvolgimenti primari da
+5V +5V
K3
R1
C7
10k
100n T2
+5V
+5V
S1 S2 S3 S4
K8 BC547 K4
R10 R9 R8 R7 R12
20 7 21
10k
10k
10k
10k
10k
23
PC0 (ADC0) IC3 R16 R2
24 DCF
PC1 (ADC1)
ATmega168
10k
1k
L1 25
K1 PC2 (ADC2) R18
100uH 26 -20PU 2
PC3 (ADC3) PD0 (RXD)
22R
27 3
5A PC4 (ADC4/SDA) PD1 (TXD)
TRI1 R5 R4 28 4
+5V 1
PC5 (ADC5/SCL) PD2 (INT0)
5
330R
R19 K5
1k5
IC2 14 11
100k
JP2 MOC3023 6 5
TR1 C12 GND XTAL1 XTAL2 GND
ISP LCD1
115
10n
C15 C13 IC1 22 9 10 8
P1
LM2940CT-5.0 +5V C5 C6
JP1 10n 10n BC547 T1 1
D1 X1 VSS
1 3 2
B1 220u
230
VDD
25V 100n 10k 3
C16 C14 1N4004 C11 R20 R21 4
VL
C10 C9 C8 C1
JP3 2 C2 10MHz C3 RS
5
100k
10n 10n
10k
15p 15p 6
2x8V/1VA5 B40C1500 25V 35V
7
E
* 8
D0
D1
9
D2
10
B1 R14 D3
11
D4
6k8
B40C1500 12
D5
13
D6
14
D7
15
R6 LED+A
16
15R LED-C
T3
R3
470R
2 x 16 (DEM16217)
BC639
080850 - 11
Figura 1. Il circuito dell’orologio combina essenzialmente le funzioni di un dimmer controllato da un microcontrollore e di un orologio.
Entrambe queste funzioni sono implementate nel firmware del microcontrollore.
DOMOTICA
1,2A, Semikron tipo SKBB40C1500L5B S1, S2, S3, S4 = pulsante, SPNO, ad esempio
LISTA COMPONENTI T1, T2 = BC547B Multicomp MCDTS6-5N
Resistenze: T3, T4 = BC639 X1 = 10MHz quarzo, contenitore HC-49/S,
R1, R2, R7, R8, R9, R10, R12, R20 = 10kΩ TRI1 = BTA16-600BW (ad esempio STMicroe- 50ppm, capacità di carico 12pF, ad esempio
R3, R17 = 470Ω lectronics BTA16-600BWRG) AVX HC49SFWB10000H0PESZZ
R4 = 330Ω IC1 = LM2940CT-5.0 (National F1 = fusibile, 2,5A slow, 5x20 mm, con cap-
R5 = 1,5kΩ Semiconductor) puccio protettivo e supporto da PCB
R6 = 15Ω IC2 = MOC3023 (Fairchild) TR1 = trasformatore di alimentazione, 2x8 V
R11 = 4,7Ω IC3 = ATmega168-20PU, programmato, sec. 2x115 V prim., 1,5 VA (es. Block AVB
R13 = 100Ω Elektor # 080850-41* 1.5/2/8) o 1x9 V sec., 1x230 V prim., 1,5 VA
R14 = 6,8kΩ (es. Block VB 1.5/1/9, vedi testo)
R15, R21 = 100 kΩ Varie LCD1 = 2 x 16 caratteri (DEM16217), ad esem-
R16, R19 = 1kΩ K1, K2 = terminale PCB 2 vie, passo 7,5 pio Elektor # 030451-72
R18 = 22Ω millimetri Piezo buzzer = cicalino piezo-elettrico, ad
P1 = 10kΩ trimmer K3, K4 = connettore SIL 4-pin, passo 0,1 pollici esempio Kingstate KPEG827, o altoparlante
K5 = connettore a 2 poli, passo 0,1 pollici 8Ω (min. 0,1W)
Condensatori: K6 = connettore 6 pin (2x3), passo 0,1 pollici PCB # 080850-1*
C1, C6, C7, C9, C10 = 100nF, ceramico, K7, K8, K9 = connettore a 5-pin SIL, passo 0,1
passo piedini 5mm pollici
C2, C3 = 15pF 2%, ceramico, LCD1 = Connettore SIL da 16-pin, passo 0,1 pollici * Elektor Shop, www.elektor.com/080850
passo piedini 5mm
C4 = 100nF, classe X2, 275VAC
nominali, passo piedini 15mm
C5, C11 = 220μF 25V radiale, pas-
so piedini 3,5mm
C8 = 22μF 35V radiale,
passo piedini 2,5mm
C12, C13, C14, C15, C16 = 10nF
ceramico, passo piedini5mm
Bobine:
L1 = 100μH 5,4A bobina soppres-
sione disturbi per triac
(ad esempio Murata Power
Solutions tipo 1410454C)
Semiconduttori
D1 = 1N4004
D2, D3, D4 = 1N4148
D5 = LED a basso assorbimento,
diam. 5mm, Kingbright tipo
L-53LSRD
B1 = 40V ponte raddrizzatore Figura 2. Il circuito stampato (disponibile presso l’Elektor Shop) dispone di una piccola basetta
per i quattro pulsanti che può essere separata dalla scheda principale.
115 V e può essere configurato per 115 V o Montaggio dei piedini compatibile. In questo caso non
230 V attraverso ponticelli. Per funzionare L’ATmega168 programmato e lo stam- serve saldare i tre jumper. Nell’elenco dei
a 230 V JP1 deve essere chiuso mentre JP2/ pato per questo progetto sono disponibili componenti viene riportato un trasforma-
JP3 devono essere lasciati aperti; in questo presso l’Elektor Shop (vedere l’elenco dei tore da 230 V adatto, ma può essere uti-
modo si collegano i due avvolgimenti pri- componenti). Naturalmente potete pro- lizzato qualsiasi trasformatore EI 30 con
mari in serie. Per i 115 V lasciare JP1 aperto grammare l’integrato da soli, il codice sor- potenza da 1,3 o 2 VA con i 230 V sui pie-
e JP2/JP3 chiusi in modo da collegare i due gente e il file hex possono essere scaricati dini 1 e 5 e i 9 V sui piedini 7 e 9.
avvolgimenti primari in parallelo. gratuitamente dal sito web di Elektor[5]. Il
I due avvolgimenti secondari da 8 V del tra- PCB è composto da due parti. Oltre al PCB Messa in funzione
sformatore sono collegati in parallelo. Il principale dell’orologio c’è una piccola La tensione di rete (230 V o 115 V) è pre-
resto del circuito di alimentazione è clas- basetta progettata per contenere i quat- sente sia sul PCB che su alcuni componenti,
sico con ponte raddrizzatore, condensatore tro pulsanti e un connettore (vedi figura quindi la sveglia deve essere montata in un
elettrolitico e regolatore di tensione a 5 V. 2). Non sono utilizzati in questo progetto contenitore di protezione contro i contatti
L’unico elemento insolito è il diodo D1 tra componenti SMD e si può saldare tutto il diretti prima che sia collegata alla rete. Il
il ponte raddrizzatore e il condensatore di circuito come si faceva 30 anni fa. Come contenitore deve essere conforme alle
memoria C11. Questo permette di determi- al solito si deve fare attenzione all’orienta- norme di sicurezza. A questo proposito
nare il passaggio per lo zero della tensione mento e alla polarità dei componenti. Que- vedere le istruzioni sulla sicurezza elettrica
unidirezionale pulsante presente all’uscita sto vale in particolare per il ponte raddriz- pubblicate sul sito di Elektor all’indirizzo
del ponte raddrizzatore per mezzo del tran- zatore che può essere confuso con com- www.elektor.com/electrical-safety.
sistor T1 e il piedino di I/O PD2. ponenti dalla forma simile. La disposizione Con la scheda montata correttamente e il
Anche il modulo LCD è alimentato dalla corretta è mostrata in figura 1. microcontrollore programmato appena si
linea a 5 V. Il trimmer P1 fornisce una ten- I nostri lettori europei possono montare un dà tensione si vedrà l’ora ‘00:00:00’ appa-
sione variabile per la regolazione del contra- trasformatore con un solo primario da 230 rire sul display. Se non si vede nulla sul
sto del display. V e secondario da 9 V con la disposizione display verificare innanzitutto che il con-
DOMOTICA
Tabella 2.
Funzioni dei pulsanti
Pulsante Funzione
S1 Back (ritorno al menu precedente)
S2 OK (conferma)
S3 > (Maggiore o verso l'alto)
S4 < (Minore o verso il basso)
trasto sia regolato correttamente (con P1). - with sound Le vostre idee
Dopodiché la sveglia tenta di ricevere l’ora - Dimmer advance Il software per questo progetto, compreso
corrente dal modulo DCF77. Dopo aver rice- il codice sorgente, può essere scaricato dal
vuto correttamente i dati appare una pic- Debug sito web di Elektor ed è stato creato con un
cola torre ricevente sul display per indicare Con il menu Alarm si attiva l’allarme e compilatore C gratuito (GCC), quindi non
la corretta ricezione dei dati. Questo pas- si imposta l’ora di intervento. Quando si c’è nulla che impedisca di modificarlo a pia-
saggio può richiedere diversi minuti prima imposta la sveglia ricordarsi che il sorgere cere - per esempio è possibile rifare comple-
che il simbolo appaia perché il programma del sole simulato è programmato per ter- tamente il menu di controllo e aggiungere
(per sicurezza) aspetta fino a quando non minare all’ora impostata e quindi la sveglia nuove funzioni.
ha ricevuto due set di dati corretti prima di inizia prima dell’ora impostata. Per questo Una modifica molto interessante potrebbe
aggiornare l’ora. motivo la luce rimane spenta se l’intervallo essere quella di sostituire lo sgradevole
Se si tocca ora brevemente la superficie del di tempo non è sufficiente per visualizzare segnale acustico d’allarme con un segnale
sensore si accende la retroilluminazione del un ciclo completo. più dolce la cui ampiezza aumenta gra-
display per circa un minuto. Se si tocca la Con il menu Settings si configurano le impo- dualmente con l’intensità della luce. Per i
superficie del sensore per più di tre secondi stazioni base della sveglia. Nel submenu “Set dormiglioni più incalliti si potrebbe anche
la lampada collegata a K1 si accende. Per alarm” è possibile attivare o disattivare la pensare di aggiungere una voce nel menu
disattivarla ripetere questa operazione. lampada, attivare o disattivare l’allarme acu- di tipo “Maximum volume” con le opzioni
stico supplementare e specificare la durata “Hurricane” o “Jet fighter take-off”.
Menu dell’allarme luminoso. Questa fase di allarme
Le impostazioni del menu possono essere (‘Dimmer advance’) può essere impostato (080850)
impostate con i quattro pulsanti le cui fun- nel menu “Settings”. L’impostazione di
zioni sono elencate nella tabella 2. default è di 15 minuti ma è anche possibile
Iniziare premendo S2 per fare apparire il selezionare 30, 45 o 60 minuti.
menu. Poi premere S2 nuovamente per aprire Il menu Debug viene visualizzato solo
il submenu Alarm, oppure premere S3 per quando l’orologio sta funzionando in
aprire il menu Settings. È disponibile una user modalità debug. Tra le altre cose questo
guide dettagliata del menu all’indirizzo[5]. La menu mostra il numero di bit rilevati dopo
struttura base del menu è la seguente: l’ultimo marcatore di inizio del segnale
DCF77 e l’ultimo bit ricevuto. Se in moda-
Alarm lità debug non viene visualizzata nessuna
Link internet:
Alarm active informazione c’è qualche problema con la [1]www.mikrocontroller.net/topic/25045
Alarm time ricezione del DCF77. Ciò può essere dovuto [2] www.engbedded.com/semitone
alla posizione del ricevitore o all’orienta-
[3] www.elektor.it/080213
Settings mento dell’antenna, o può essere causato
Set alarm da falsi collegamenti o da un modulo rice- [4] www.elektor.it/080083
- with light vitore difettoso. [5] www.elektor.it/080850
TERMOMETRO A INFRAROSSI
I l n os t r o ter m o m e -
Specifiche tecniche tro misura allo stesso o
• Termometro a infrarossi tempo sia la temperatura ra
• Microcontrollore PIC16F876A ambientale che la tempe- e-
• Display LCD quattro linee x 20 rature di qualsiasi oggetto tto
nel suo “campo visivo”. vo”.
caratteri
Anche se il range di tempera-pera-
• Visualizzazione temperatura
tura ambientabile misurabile rabile
ambiente e oggetto
è “limitato” da -40 a +125°C, 25°C,
• Salvataggio temperatura massima la temperatura degli oggetti getti è
e minima misurabile da -70 a +380°C, 0°C con
• Funzionamento con due celle a 1,5 V una tolleranza di 0,5°C e una scala Sensore MLX90614
• Software open-source di misurazione di 0,02°C. Il sensore scelto è il MLX90614 della Mele-
Per garantire la comodità d’uso e la porta- xis, ed è proprio questo sensore a dare al
bilità, il termometro funziona con batterie nostro termometro la sua performance
o celle ricaricabili e, per il massimo comfort, eccellente. Questo IC, che viene venduto
memorizza automaticamente la tempera- in un contenitore di metallo TO-39 con una
tura massima e minima registrata, visua- finestrella, non deve essere considerato un
lizzando il tutto su un display LCD retroillu- vecchio sensore di temperatura come un
minato con quattro linee composte da 20 termistore, per esempio, perché include un
caratteri. intero sistema di circuiti di una certa com-
Grazie ai sensori usati sono necessari solo plessità (figura 1).
due IC: un normale microcontrollore PIC e Il sensore è una termopila a infrarossi (o
un regolatore switch per alimentarlo. due, a seconda della versione dell’IC) che
TERMOMETRO A INFRAROSSI
t°
TERMOMETRO A INFRAROSSI
LISTA COMPONENTI
Resistenze (0,25 W 5 %) :
R1, R4, R6 = 10 kΩ
R2, R5 = 100 Ω
R3 = 1,5 kΩ
P1 = 10 kΩ trimpot, orizzontale
Condensatori:
C1,C3 = 100μF 16V, radiale, lead pitch 2.5mm
C2 = 470nF 63V, MKT, lead pitch 5 or 7.5mm
C4 = 10μF 25V, radiale, lead pitch 2.5mm
C5, C8 = 22pF ceramica, lead pitch 0.2’’
(5.08mm)
C6 = 100nF ceramica, lead pitch 5 o 7.5mm
C7 = 10nF ceramica, lead pitch 5 o 7.5mm
Induttori:
L1 = 10μH, Panasonic tipo ELC08D100E
(Componenti RS)
Semiconduttori:
IC1 = LT1300 Varie se compatibile con il PCB
IC2 = PIC16F876A-10E/SP, programmato, Sensore di tipo MLX90614ESF-BAA S2 = switch, changeover o filo di collegamento
Elektor # 100707-41 o MLX90614ESF-AAA (vedi testo) Socket IC DIL: 1 pz 8-way; 1 pz 28-way
D1 = 1N5817 (Schottky) LCD1 = LCD, 4 linee di 20 carattere, Pin con pinheder, lead pitch 0.1’’ (2.54mm)
D2 = 3.3V 0.4W diodo zener p.e. Displaytech 204A Socket con pinheder, lead pitch
X1 = 20MHz cristallo di quarzo, case HC18/U 0.1’’ (2.54mm)
S1 = pulsante, 1 per contatto, ITT tipo D6 PCB, Elektor # 100707-1
Come mostrato nella figura 3, il nostro PIC Le due line bus provenienti dal sensore ter- all’input PIC. Ma non c’è nessun rischio per l’
è usato in modalità crystal clock (20 MHz) minano sul RC4 e RC3 del PIC, gli input alla MLX90614 dato che ha diodi interni limitatori.
e ha un comando reset tramite bottone porta parallela C, che è condivisa con la sua
S1, incluso per permettere il reset delle interfaccia interna I²C. Il circuito è alimen- Software
memorie della temperatura registrata tato a 5 V da due celle da 1,5 V (o da due Il software (con codice sorgente e file HEX
massima e minima. NiMH ricaricabili da 1,2 V) da parte del con- annotati con cura) è disponibile per il down-
Il display utilizzato è di tipo LCD, retroillumi- vertitore DC-DC LT 1300. Questo IC offre un load gratuito da [1] e [2]. È stato scritto in
nato o meno a seconda della preferenza se output stabilizzato a 5 V da qualsiasi voltag- MikroBasic dalla Mikroelektronika, che ha
lo switch S2 sia chiuso o meno. Idealmente gio input tra i 2 e i 5 V. È inoltre in grado di il vantaggio di avere una libreria I²C perfet-
dovrebbe essere usato un tipo standard con fornire una corrente di 400 mA, molto di più tamente funzionante. Notare che la dimen-
quattro linee di venti caratteri, ma il circuito di quanto necessaria al nostro termometro. sione del software compilato è di più di 2 KB
funziona anche con un display pin-compa- Anche se il sensore esiste in versione a 5 V, e quindi non può essere compilato usando
tibile a due linee e sedici caratteri. In que- quello più facilmente utilizzabile è disponibile la versione di prova del compilatore.
sto caso però le due linee che visualizzano la nella versione a 3 V. Questo spiega la ragione Giudicando dal contenuto dei forum su
massima e minima temperatura registrata della presenza della resistenza R2 e il diodo internet dedicati all’ MLX90614, certi utenti
non sono visibili, il che sarebbe un peccato. zener associato (D2). Notare che le resistenze hanno incontrato alcune difficoltà, quindi
Il display è usato in modalità a 4 bit, dalla R4 ed R6 ritornano nei 5 V allo stesso modo cercheremo di commentare in questo arti-
porta B del microcontrollore. per garantire i corretti livelli di elettricità colo le sezioni rilevanti del codice:
TERMOMETRO A INFRAROSSI
LCD1
L1
LC DISPLAY
10uH
D1
VDD
VSS
R/W
VO
RS
D0
D1
D2
D3
D4
D5
D6
D7
A
+3V
K
E
C3 C6
6 7 1N5817 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
V IN IC1 SW
10k
10k
20
GND PGND
R3 VDD R5
1 8 1 P1
1k5 MCLR 100R
21 10k
IC2 RB0
2 22
RA0/AN0 RB1 CONTRAST
3 23
C1 S1 C2 RA1/AN1 RB2
4 24
RA2/AN2 RB3
100u IC3 470n 5 RA3/AN3 RB4
25
RESET
25V MXL90614 3 6 26
RA4/TOCKI RB5
VDD 7 27
RA5/AN4 RB6
4 2 28
VSS SDA RB7
SDA 15
PIC16F876A
RC4/SDA
SCL SCL 14 16
RC3/SCL RC5/SDO
1 13 17
RC2 RC6/TX
12 18
RC1 RC7/RX
K1 11
SCL RC0
SDA VSS OSC1 OSC2 VSS
VDD 8 9 X1 10 19
VSS
D2
C4 C7
C5 20MHz C8
10u 10n
3V3 25V 22p 22p
400mW 100707 - 11
La procedura per la lettura della tempera- variabile “com” (0x06 per la tempera-
ture è chiamata usando il parametro “com” tura ambiente e 0x07 per la temperatura
per il comando scelto. La procedura aderisce dell’oggetto);
scrupolosamente alle istruzioni della Mele- • inviare un segnale start ripetuto;
xis, e comprende: • inviare l’indirizzo slave dell’IC, questa
• inviare un segnale start per iniziare volta con la modalità Lettura selezionata
la transazione I²C/SMBus; (R/W=1);
• inviare l’indirizzo slave dell’IC (la Melexis • ricevere una serie di tre byte: l’LSB
specifica nella scheda tecnica che tutti gli e l’MSB della temperatura, poi il PEC
IC rispondono all’indirizzo 0x00) con la (non usato nella nostra applicazione);
modalità Scrittura selezionata (R/W=0); • inviare un segnale stop per terminare
• inviare il commando contenuto nella la transazione I²C/SMBus;
TERMOMETRO A INFRAROSSI
• e infine ricostruire la parola da 15-bit orientato il termometro, ovvero la media tuare modifiche solo se si sa quello che si sta
contenente la temperatura attraverso la delle temperature degli oggetti nel campo facendo, una scrittura incorretta potrebbe
concatenazione dei due byte ricevuti. visivo del sensore. L’angolo di vista della distruggere o modificare i parametri di cali-
versione standard (MLX90614ESF-XAA) brazione predefiniti, rendendo inaccurata
Lasceremo a voi l’analisi del resto del nostro non è indicato, per l’ MLX90614ESF-XAC qualsiasi misurazione.
programma con l’aiuto delle note, ora è di 35°, mentre per l’ MLX90614ESF-XAF (100707)
andiamo avanti con gli aspetti pratici della è di 10°.
costruzione. La temperatura massima e minima degli
oggetti sono memorizzate automatica-
Costruzione mente e visualizzate nelle ultime due linee
Con lo scopo di semplificare l’aspetto mec- del display. Per resettare questi valori basta
canico della costruzione del termometro, premere il pulsante reset.
abbiamo disegnato un PCB della stessa misura Puoi adattare il software ai tuoi scopi e
del display, in modo che possa essere mon- modificare il comportamento del termo- Link internet
tato dietro di esso. Trovare le componenti metro. Comunque, se si vuole modificare
[1] www.elektor.it/100707
non dovrebbe essere un problema. Il display la procedura della gestione della comuni-
è un Displaytech 204A, ma in teoria può cazione con il sensore, è consigliabile effet- [2] www.tavernier-c.com
essere usato qualsiasi display LCD 4 linee x 20
caratteri con interfaccia standard (ST7066,
HD44780 o controller KS066 controller), o un Advertentie
display LCD con due linee e 16 caratteri come
indicato sopra, con la perdita dell’indicazione
delle temperatura minima/massima.
L’ MLX90614 esiste in numerose versioni e
si distinguee dal suffisso. Il più comune e
meno costoso è l’ MLX90614ESF-BAA. La
lettera B indica che lavora a 3 V. Se invece
trovi un MLX90614ESF-AAA, questa è la ver-
sione a 5 V, che può essere usato nel nostro
circuito rimuovendo D2, C4 e C7 e rimpiaz-
zando R2 con un filo di collegamento.
Nota che L1 deve essere in grado di gestire
una corrente di 800 mA senza saturare,
altrimenti l’LT1300 funzionerà molto male
o non funzionerà per niente.
Il sensore può essere collegato al case
con i due pin connettori forniti per questo
scopo, ma per evitare possibili interferenze
e distorsioni del segnale SMBus è preferibile
non estendere le sue connessioni di più di
qualche decina di cm.
Abbiamo usato socket con un pitch di 2.54
mm (0,1”) sul retro del display e pin con
lo stesso pitch sul lato di rame del PCB. In
questo modo si forma un sistema facile da
smontare in caso di problemi.
Uso e adattamento
Il termometro funziona al momento della
fornitura dell’alimentazione e la prima
linea del display visualizzerà la tempe-
ratura ambiente, ovvero quella del case
del sensore. La seconda linea mostra la
temperatura del soggetto verso di cui è
GEOLOCALIZZAZIONE
Oggi il sistema più semplice per trovare la propria posizione geografica è quello di usare un ricevitore GPS
o “navigatore”. Il GPS (trascuriamo il “ricevitore”) è preciso e funziona ovunque nel mondo. I GPS stanno
diventando sempre più piccoli, mentre le prestazioni migliorano di continuo e vengono costantemente ideate
nuove applicazioni. Ma a dispetto delle sue potenzialità, il GPS non è la soluzione per tutti i problemi
di geolocalizzazione. Là dove i segnali dai satelliti GPS non possono arrivare, come al coperto o in luoghi circondati
da alti edifici, i ricevitori GPS non funzionano in modo corretto. Fortunatamente vi sono altre soluzioni.
Come spesso abbiamo visto nei film poli- Breve storia della geolocalizzazione rare la precisione di questi approcci alla
zieschi, è possibile trovare la posizione di Prima di addentrarci nella descrizione del- navigazione e di ridurre significativamente
qualcuno utilizzando il suo telefono cellu- l’LPS, vale la pena di viaggiare a ritroso nella il rischio di arenarsi. Con questo genere di
lare. Conoscendo la posizione delle torri storia, dato che le tecniche di navigazione cronometro è possibile misurare la longi-
della rete mobile (“ripetitori”) con le quali che usiamo al giorno d’oggi furono svilup- tudine usando il principio della differenza
è in contatto, possiamo trovare la posi- pate per i primi marinai che hanno navigato temporale. Successivamente la precisione
zione approssimativa del telefono. E se que- mari e oceani. Fino al 15° secolo, i viaggi in di questi metodi fu migliorata e i sistemi di
sti ripetitori sono in grado di comparare la mare avvenivano per lo più lungo le coste: calcolo raffinati. Utilizzata per la prima volta
potenza del segnale o l’ora di collegamento si viaggiava da porto a porto senza allonta- durante la Prima Guerra Mondiale, la bus-
dell’apparecchio, sarà possibile una stima narsi troppo dalla terraferma. Si navigava sola giroscopica rese possibile sormontare
molto accurata della posizione stessa. osservando le stelle, il vento, il mare, la terra le difficoltà incontrate con la declinazione
Funziona anche al contrario. Se il telefono e il comportamento di uccelli e mammiferi del magnetismo terrestre e l’influenza delle
ha un database contenente le posizioni dei marini. Semplici strumenti come la carta masse metalliche presenti a bordo, le quali
ripetitori, può calcolare la propria posizione stellare (usata dagli arabi) o la rosa dei venti distorcevano e complicavano le misure.
usando i segnali di quelli più prossimi. Gli (nel mediterraneo) hanno fatto sì che si svi- La Seconda Guerra Mondiale portò ad emer-
operatori telefonici sfruttano questa carat- luppasse una certa esperienza in proposito. gere dispositivi di esplorazione via radio,
teristica per offrire sistemi di guida pedo- Nell’emisfero settentrionale la Stella Polare quali il radar ed i cosiddetti sistemi di naviga-
nale o d’informazione locale. permetteva la navigazione a ”latitudine zione radio “iperbolici” come i GEE, LORAN
E tutto ciò che funziona con i cellulari e costante”; nell’emisfero meridionale, si uti- e DECCA. Questi resero possibile una pre-
i ripetitori può essere utilizzato con altri lizzavano altre stelle e costellazioni. Quindi cisione variabile da pochi metri a pochi chi-
sistemi di comunicazione wireless quali apparve il primo strumento in grado di lometri. Essi furono a loro volta soppiantati
Wi-Fi, ZigBee o reti Bluetooth. Il GPS fun- misurare l’angolo di una stella: il “kamal”, la dai più accurati sistemi di localizzazione
ziona in tutto il mondo — è un sistema glo- barra incrociata (“barra di Jacob”), l’astrola- satellitare. Il primo satellite GPS fu lanciato
bale (ricordate che GPS significa “Global bio nautico, il quadrante, l’ottante, e infine il nel 1978 dagli Stati Uniti. L’attuale sistema
Positioning System”); sulla stessa falsariga, sestante. Questi strumenti hanno reso pos- comprende 30 satelliti orbitanti a un’altezza
un sistema di posizionamento che impiega sibile il calcolo della latitudine con la neces- di 20.200 Km. L’equivalente Russo GLONASS,
una rete locale viene chiamato Sistema di saria precisione. Verso la fine 12° secolo, si comprende al momento della scrittura, 26
Posizionamento Locale o LPS. usava già la magnetite per trovare il Nord satelliti (20 dei quali operativi) in orbita a
In questo articolo daremo uno sguardo ad magnetico e conseguentemente dedurre 19.130 km. L’Europa sta arrivando con Gali-
alcuni sistemi che rendono possibile loca- l’orientamento della nave. Aggiungendo leo, che si suppone sarà operativo nel 2014,
lizzare un oggetto (o persona) in qualsiasi una rosa, si otteneva una vera bussola, ren- ma fino ad ora nessun satellite è stato man-
momento, cioè in tempo reale, e in qualsi- dendo possibile la lettura diretta della dire- dato in orbita. I sistemi di posizionamento
asi punto entro l’area coperta dalla rete cel- zione della vascello. La misura della velocità satellitare offrono una grande precisione,
lulare. Questo sistema è conosciuto come arrivò con l’invenzione del registro di bordo. fino al metro o anche migliore.
“Real Time Location System” o RTLS (in que- Questi due elementi, direzione e velocità,
sto contesto, real time significa periodica- permettevano la “navigazione alla cieca”, Triangolazione, trilaterazione,
mente). Perciò questo esclude quei sistemi ma non erano ancora sufficientemente o multilaterazione?
che usano, per esempio, etichette RFID o precisi per i viaggi più lunghi. Nel 1759, LPS e GPS (non solo i sistemi USA) usano
codici a barre per stabilire la posizione di un un Inglese, John Harrison, inventò il crono- molti trasmettitori per consentire a un rice-
oggetto, o sistemi di radiolocalizzazione che metro marino, capace di eseguire accurate vitore di calcolare la propria posizione geo-
rendono possibile il ritrovamento mediante misurazioni durante i lunghi mesi a bordo. grafica. Sono possibili svariate tecniche,
un trasmettitore mobile. Questo strumento ha permesso di miglio- ognuna delle quali possiede vantaggi e
GEOLOCALIZZAZIONE
svantaggi. La cosa importante in tutte que- È anche possibile utilizzare un’antenna direttiva trasmettitori si intersecano. L’aggiunta di un
ste è la nozione di una traccia diretta (Linea per determinare la posizione di un trasmetti- terzo trasmettitore ci permette di eliminare
di Vista o LoS). In effetti , se il segnale del tore. L’orientamento che fornisce il segnale più una di queste due possibilità (figura 4).
trasmettitore non ha seguito la via più breve intenso indica la direzione del trasmettitore. Estendendo la trilaterazione alle tre dimen-
verso il ricevitore, la distanza calcolata da Tutto ciò che dovremo fare sarà quindi pren- sioni, le circonferenze diventano sfere. Ora
quest’ultimo sarà sbagliata, dato che il rice- dere due misure da trasmettitori conosciuti per per trovare la posizione del ricevitore dob-
vitore non conosce il percorso seguito dal poter applicare la triangolazione. biamo aggiungere un ulteriore trasmetti-
segnale radio. Per calcolare la posizione di Trilaterazione tore, dato che l’intersezione tra due sfere
un ricevitore attraverso i segnali ricevuti da Questa tecnica richiede che sia misurata la non sono più i due punti ma una circonfe-
vari trasmettitori, si utilizzano di solito tre distanza tra il trasmettitore e il ricevitore. renza, (volendo ignorare l’unico punto di
algoritmi matematici: la triangolazione, la Ciò si può ottenere mediante un Indicatore di contatto in condizioni di tangenza). Questo
trilaterazione o la multilaterazione. Gli ultimi Intensità di Segnale Ricevuto o RSSI, o piutto- spiega perché un GPS deve “vedere” almeno
due sono molto simili, ma non devono sto dal Tempo di Arrivo (ToA, o Tempo di Volo, quattro satelliti per funzionare.
essere confusi.
Triangolazione
La Triangolazione (figura 1) è una tecnica C
molto antica, visto che risale ad oltre 2500
anni or sono, quando era usata dall’astro-
nomo e filosofo Greco Talete di Mileto per
β L sin(α) sin(β)
misurare, con sorprendente precisione, il
A d L d=
raggio dell’orbita della Terra attorno al Sole. sin(α+β)
Consente a un osservatore di calcolare la
loro posizione misurando le direzioni verso α
due punti di riferimento. Poiché le posizioni
dei punti di riferimento sono conosciute, è B 100809 - 12
possibile costruire un triangolo del quale
si conoscono uno dei lati e due angoli, con Figura 1. Triangolazione: vi trovate in A, da dove potete vedere B e C. Se conoscete la loro posizione
l’osservatore al terzo punto. Queste infor- geografica, potete trovare la vostra posizione con l’aiuto di una bussola. Certo che potete!
mazioni sono sufficienti per definire com-
pletamente il triangolo e quindi dedurre la ToF, figura 3) del segnale stesso, a condi- Multilaterazione
posizione dell’osservatore. Usare la trian- zione che il trasmettitore e il ricevitore siano Usando un singolo ricevitore in ascolto di due
golazione con i trasmettitori richiede la sincronizzati - ad esempio, tramite una base segnali (impulsi, per esempio) provenienti
misurazione dell’angolo di incidenza del dei tempi comune, come avviene nel GPS. da altrettanti trasmettitori sincronizzati, è
segnale radio (angolo di arrivo o AoA). Ciò In questo modo, ricevendo un segnale da possibile misurare la differenze tra i tempi di
può essere ottenuto usando alcune antenne un singolo trasmettitore, possiamo situarci arrivo (Differenza del Tempo di Arrivo o TDoA)
affiancate (una batteria di antenne, per su una circonferenza con il trasmettitore al dei segnali al ricevitore. Quindi il principio
esempio, figura 2) e misurando la differenza centro (per semplicità, confiniamoci in due è simile a quello della trilaterazione, tranne
di fase tra i segnali ricevuti dalle antenne. Se dimensioni e in condizioni ideali di trasmis- per il fatto che non ci troviamo più su di una
la distanza fra le antenne è ridotta, il fronte sione). Non è un sistema molto preciso. circonferenza o una sfera, ma su un iperbole
incidente del segnale può essere conside- Va meglio con due trasmettitori — dove (2D) o un iperboloide (3D). Anche in questo
rato ugualmente diretto e il calcolo dell’an- abbiamo soltanto due possibili posizioni: caso avremo bisogno di quattro trasmettitori
golo sarà piuttosto preciso. i punti ove le due circonferenze attorno ai per consentire al ricevitore di calcolare accu-
GEOLOCALIZZAZIONE
P
d A il sistema di localizzazione deve operare. Il
progetto RADAR della Microsoft usa que-
sto principio. Il ricevitore misura l’RSSI e
quindi cerca la posizione che meglio lo rap-
presenta sulla mappa (o in una tabella). Per
GEOLOCALIZZAZIONE
WPS
Un sistema per utilizzare i punti di accesso Wi-Fi (APs) per la geolocalizzazione su larga scala
è stato sviluppato da Skyhook[6]. Così come Google sta facendo con il suo Street View, anche
Skyhook invia vetture nelle varie città, ma sono alla ricerca di punti di accesso Wi-Fi. Le posi-
zioni geografiche e gli identificativi (SSID) vengono memorizzati in un database che contiene
già più di 250 milioni di AP! Così facendo, questa azienda ha creato il Sistema di Localizzazio-
ne Wi-Fi (WPS). Per trovare la nostra posizione, tutto ciò che dobbiamo fare è inviare al WPS
i dati dell’the AP “visto” dal nostro computer o telefono cellulare. Il database ci dirà (approssi-
mativamente) dove ci troviamo.
Per migliorare il sistema, sono state aggiunte al database anche le posizioni geografiche delle
celle della rete telefonica. A detta della società, la precisione del WPS varia tra i 10 e i 20 me-
tri (30 e 60 piedi).
PROGRAMMAZIONE
LeggeroFAT
Una libreria open source per il file system
FAT dedicata ad applicazioni embedded
Di Stephen Bernhoeft (UK)
L’idea base elemento FAT è il 14, allora il cluster number è il (14-2) = 12 (0xC).
La tabella di allocazione dei file (File Allocation Table - FAT) Così in figura 1 FAT[14] punta anche al cluster 12 che contiene la prima
memorizza una lista di liste collegate tra loro. Esiste una lista parte del file di dati, e FAT[11] punta al cluster 11 – 2 = 9 che contiene
associata ad ogni file ed ogni elemento delle liste successive descrive la parte finale del file di dati esaminato.
dove è possibile trovare la successiva parte di un file e dove trovare Questa può essere considerate la base del sistema FAT, in ogni caso
il prossimo elemento della lista. molti dettagli supplementari sono da aggiungere per descrivere la
La lista è pensata in modo semplice. Ogni elemento consiste in un reale implementazione.
puntatore all’elemento successivo senza includere i dati. Poiché
il dato non è compreso nella FAT come è possibile utilizzarlo? La Punto d’ingresso della FAT
risposta è che il dato è sottointeso. Ogni valore non riservato nella Come è navigata la FAT? L’idea è di iniziare dal direttorio radice. Un
catena della FAT ha due significati, uno è il puntatore al prossimo direttorio è un singolo file che contiene una serie di elementi a 32
elemento della lista, l’altro è il puntatore al file di dati. byte ( vero sia per la FAT16 che per la FAT32).
La FAT può essere considerata come un vettore (figura 1). Dato Ogni elemento a 32 byte racchiude una struttura che descrive un
il valore di FAT[x] è possibile trovare l’elemento successivo. Per altro file o un direttorio. L’elemento include la data di creazione , gli
esempio, se la catena della attributi e un ‘puntatore
FAT per un determinato nella FAT’. Il mdo con cui
file inizia a FAT[3] e questo si memorizza la directory
memorizza ‘14’ (0xE), il FAT utilizza il formato little endian radice si differenzia tra i
successivo elemento della sistemi FAT16 e FAT32.
lista è FAT[14]. Ora FAT[14] può Con la FAT16 si calcola la
contenere il valore ‘4’ in tal caso l’elemento successivo è FAT[4] . Se posizione e la dimensione del direttorio radice usando il Volume
FAT[x] contiene il valore riservato ‘EOC’ (End Of Cluster) allora è la Boot Record (VBR). Nel sistema FAT32, la VBR fornisce l’indice
fine della catena. di partenza della catena FAT del file del direttorio radice – un file
Le prime due posizioni della FAT (FAT[0], FAT[1]) sono riservate. Nessun direttorio radice nel sistema FAT32 può crescere senza limiti. In
elemento può puntare a queste due posizioni. La prima posizione entrambi i casi l’informazione su come recuperare il direttorio radice
FAT[0] contiene un campo detto ‘media byte’. La seconda, FAT[1], è passa per il VBR.
utilizzata dal sistema operativo per registrare un arresto ‘clean’ Il primo elemento FAT in una catena non è reperibile nella FAT, si
o ‘dirty’. Un corollario importantissimo è il seguente: quando trova in una elemento direttorio. La singola eccezione a questa
interpretato come cluster number ossia numero di un gruppo, regola è il campo VBR FAT32 BPB_RootClus che contiene il primo
un elemento FAT deve prima essere sottratto del valore 2. Se un elemento FAT nella catena per il direttorio radice.
PROGRAMMAZIONE
Media
FAT32
FAT16
FAT
0 1 2 3
Typical X X 0000 000E
FAT chain 4 5 6 7
for 000B 0000 0000 0000
one file 8 9 A B
0000 0000 0000 FFFF
C D E F
0000 0000 0004 0000
0003-2 = 0001
First file
cluster
000E-2 = 000C
0004-2 = 0002 Cluster of sectors
000B-2 = 0009
Last file Cluster of sectors (First sector @0001)
cluster
Cluster of sectors (First sector @000C)
Figura 1. Vista del file system FAT e dell’organizzazione dei supporti di memria. (0xFFFF è la fine della catena FAT di esempio).
I supporti partizionati contengono un Master Boot Record (MBR), non collocato in una partizione,
che contiene la tabella di partizione primaria. Ogni elemento in questa tabella ci dice il tipo di partizione (FAT, OS/2, Linux, ecc...),
il settore di partenza e il conteggio dei settori nella partizione.
La spazio del disco è allocato in cluster di settori hardware contigui. Librerie FAT open source
Poiché la dimensione del cluster è nota e i cluster sono composti Moltissime implementazioni della FAT sono disponibili in rete, sia
di settori contigui, la FAT necessita solo di sapere il settore di gratuite che a pagamento, in alcuni casi fanno parte di progetti
partenza di un determinato cluster. La dimensione di un settore molto ampi. Abbiamo deciso di concentrarci su una libreria FAT open
è abitualmente di 512 byte, ma la FAT supporta le dimensioni di source indipendente dalla piattaforma utilizzata. I requisiti minimi
512,1024,2048 e 4096 byte. per i test sono:
• Accesso ai file del direttorio radice;
Qual è lo scopo dei cluster? Quello di mantenere il numero di regioni • Creazione/Apertura/Lettura/Scrittura/Troncamento;
indirizzabili nella FAT ad un valore ragionevole: con un cluster size di • Supporto FAT32 (per la massima compatibilità);
1, un file grande avrebbe una catena FAT lunghissima; un elemento • ANSI C (C90 preferibilmente).
per ogni settore logico occupato dal file. Con una dimensione
del cluster di 64, ci serve solo un singolo elemento nella FAT In aggiunta esprimiamo anche la seguente preferenza:
ogni 64 settori logici, con lo svantaggio che un file che utilizza
complessivamente 65 settori logici, ne spreca 63. • Nessun obbligo di pubblicare il codice utente.
PROGRAMMAZIONE
Formattazione
Come programmatori embedded solitamente non necessitiamo di una funzione di formattazione. Se serve formattare un supporto, è sicuro
che si sbaglia ad utilizzare una delle utilità standard del PC. La ragione è che ognuna delle diverse strutture di file system (partizioni, cluster,
ecc…) devono essere allineate ai cosiddetti erase blocks. Non è possibile eliminare un byte. Invece un intero erase block (solitamente 64
settori) deve essere cancellato. Un attento posizionamento delle strutture FAT effettuato dai costruttori delle schede SD assiste la logica
interna alla scheda per soddisfare questi compiti:
• Bilanciamento d’utilizzo — assicura longevità alla scheda.
• Accessi in lettura e scrittura veloci
Se il programma di formattazione non è ‘SD-Card aware’, ossia attento alle esigenza di una scheda SD, le prestazioni e la durata della scheda ne soffrono.
Solamente due delle librerie analizzate supportano una funzione di formattazione:
• EFSL – Potrebbe essere! La funzione mkfs_makevfat non è documentata dall’autore, e alcuni riferimenti trovati sul web non sono
incoraggianti. Forse l’etichetta di volume di default, ‘DISCOSMASH!’ è un avvertimento...
• FatFs – Adeguato per i supporti Flash.
In alter parole, dovremmo essere liberi di utilizzare il codice • Una funzione di lettura per il settore.
come ci pare. Non è coerente con lo spirito dell’open source?
Non necessariamente: Sarei felice di condividere i sorgenti come Sara presente un file di configurazione per la libreria dove la
modulo (come la libreria FAT), ma sarebbe un suicidio commerciale dimensione del buffer per i file può essere regolata (più RAM
condividere il codice di un applicazione completa, sarebbe come significa un accesso veloce ai file) e la tipologia di operazioni sui file
condividere un pezzo di un romanzo ancora da adattare. (più ROM significa più funzionalità).
Per agevolare la fase di test, una ‘library test suite’ è stata sviluppata.
L’interfaccia è di tipo DOS (figura 2) e permette all’utente di testare Il destinatario dell’applicazione è il PIC18F Starter Kit 1 (DM180021)
iterativamente la libreria usando dei comandi DOS da un terminale della Microchip, con un codice generato dal compilatore C18
di emulazione come Realterm. La suite di test è disponibile alla con tutte le ottimizzazioni attive. La compilazione è stata anche
pagina web dell’articolo[1]. effettuata per il PIC24FJ256GB110 utilizzando il compilatore C30.
Quando si personalizza una libreria generica bisogna definire: Questo compilatore consente un ottimizzazione tra dimensione
del codice e velocità: la scelta è stata quella di minimizzare la
• Una funzione per inizializzare i supporti di comunicazione; dimensione del codice. Nessun hardware per testare il risultato è
• Una funzione di scrittura di un settore; comunque disponibile.
Schede SD e licenze
Molte schede di sviluppo per microcontrollori moderne hanno un connettore per schede SD. In molti di questi sistemi il connettore della
scheda SD è semplicemente agganciato al bus SPI de microcontrollore, senza l’utilizzo di un controllore host dedicato. Lo standard delle schede
SD è gestito dall’SD Card Association, “un organizzazione industriale che utilizza uno standard per promuovere prodotti SD in numerevoli
applicazioni”. La SD Card Association richiede che tutte le compagnie che progettan o costruiscono prodotti SD di tipo host (ad esempio
cellulari, fotocamera, computers) o accessori per prodotti SD ( adattatori, SD I/O cards) si aggreghino all’associazione ed entrino nella Host/
Ancillary Product License Agreement (HALA) con la SD Card Association e la SD-3C, LLC. Questo riguarda l’utilizzo della scheda SD, solo in SPI
mode oppure no. Così, se progetto o costruisco un circuito, devo pagare per la licenza? Anche se alla SD Card Association piacerebbe , la risposta
probabilmente è no. In accordo con il documento SD Host Controller Simplified Specification Version 2.00 February 8, 2007 un prodotto SD
host è un sistema contenente un host controller che rispetta queste specifiche. Secondo la SD Card Association l’host controller è situato tra il
connettore SD host e il driver del bus SD.
$IILGDELOLWjHSUHFLVLRQH
QHOSDOPRGLXQDPDQR
FRQLOQXRYR
+36
cod. HPS140
ACCESSORI OPZIONALI:
Micro adattatore presa accendisigari/USB (cod. CARSUSB1 • € 6,70)
Sonda oscilloscopio 60 MHz x1-x10 (cod. W • € 19,00) Sonda 60MHz (non inclusa) Micro adattatore presa
accendisigari/USB (non incluso)
7XWWLLSUH]]LVRQRGDLQWHQGHUVL,9$LQFOXVD
9LD$GLJH*DOODUDWH9$ 0DJJLRULLQIRUPD]LRQLVXTXHVWLSURGRWWLHVXWXWWHOHDOWUHDSSDUHFFKLDWXUHVRQRGLVSRQLELOLVXOVLWR
Personal
7HO)D[
Download for a, a | copyright Elektor
ZZZIXWXUDVKRSLWWUDPLWHLOTXDOHqDQFKHSRVVLELOHHIIHWWXDUHDFTXLVWLRQOLQH
794107
PROGRAMMAZIONE
EFSL
Lo stato dell’arte con la EFSL è difficile da valutare. Il download più
ovvio da sourceforge.net/projects/efsl/ è la efsl-0.3.6. Il manuale
accompagnatorio avverte che la versione non è utilizzabile, la
versione stabile è la 0.2.8. L’albero del codice è accompagnato da
alcuni target di esempio e una buona documentazione.
Per utilizzare l’EFSL prima è necessario modificare l’header file di
esempio per adattarlo al nostro target. Per il PIC modificarlo così:
config-sample-avr.h
//#define HW_ENDPOINT_ATMEGA128_SD
#define HW_ENDPOINT_PIC_SD
//#define DEBUG
interface.h
#elif defined(HW_ENDPOINT_PIC_SD)
#include “pic_efsl.h”
types.h
Confirm euint16 etc are correct. Figura 2. Schermata di una sessione di test della libreria.
PROGRAMMAZIONE
Licenza FAT
Microsoft ha depositato una serie di brevetti per alcuni punti chiave
del file system FAT alla metà degli anni 90. il 3 dicembre 2003
Microsoft ha annunciato che avrebbe offerto delle licenze per utilizzare
le proprie specifiche FAT e le “proprietà intellettuali associate” con
una royalty di 0.25$ per unità venduta,con un massimo di 250,000$
per contratto di licenza. A questo punto Microsoft ha citato quattro brevetti sul file system FAT come basi della loro proprietà intellettuale. Tutti e
quattro fanno riferimento al FAT con lunghezza dei nomi dei file estesa, vista per la prima volta in Windows 95. Molti commentatori tecnici hanno
concluso che questi brevetti coprono soltanto l’implementazione della FAT con il supporto per i nomi dei fili lunghi, e che i supporti rimuovibili a
stato solido e i dispositivi consumer che utilizzano nomi dei file corti non ricadono all’interno di quanto brevettato. (fonte: Wikipedia)
Licenza SD-Reader
Nessuna restrizione all’utilizzo. Il sito web
we da un ottima impressione.
Questa libreria differisce
d dalle altre per almeno
Conclusioni tre cose importanti:
FatFs è piuttosto diffusa è correntemente 1. I sorgenti richiedono il compilatore
co C99. Il compilatore
mantenuta. Sembra essere la libreria più C18 è quindi inutilizzabile
inutilizzabile.
popolare e priva di bug. Il range di target 2. Specialmente indicata per schede SD.
disponibili e le statistiche permettono a questa libreria di emergere. 3. L’interfaccia utente è molto diversa dalle altre librerie FAT. Non
Il codice sorgente non è facile da seguire, ed è molto illeggibile. La è basata su settori; piuttosto è basata su un offset a byte, dove
documentazione è ragionevole, ma non così chiara come potrebbe l’offset non è allineato al limite dei 512-byte. In ogni caso il file
sembrare. Il forum degli utenti è fornito, sd_raw.c, forniste gran
utile ma ancora abbastanza giovane. parte del codice richiesto per
utilizzare la libreria.
Internet Un problema è che sembra non
elm-chan.org/fsw/ff/00index_e.html ci sia modo per il codice utente di
Si tratta di una versione ridotta di accedere alla posizione del file,
FatFs destinata ai microcontrollori poiché il campo ‘field pos’ è definito
a 8-bit. Offre delle funzionalità di in un file C e non in un file H.(Inoltre
scrittura molto limitate: non c’è una funzione ftell). Un
ulteriore aspetto da considerare è
1. Si può solo sovrascrivere un file che l’apertura dei file non utilizza
esistente; il classici attributi tipo ‘a+’ e simili.
2. Non si può creare un file; Nel testo, del codice personalizzato
3. Non si può ampliare un file. deve essere scritto per replicare la
In breve non soddisfa I nostri modalità ‘a+’ (aggiungi se esiste,
requisiti minimi. altrimenti crea).
PROGRAMMAZIONE
Licenza RAM. La libreria richiede 2256 bytes di RAM troppo oltre i 3.8 KB
GPLv2 oppure LGPLv2.1. disponibili sul chip. Inventando ulteriore RAM attraverso il C18 linker
script, alcune statistiche si sono potute stimare.
Conclusioni
Un progetto interessante, ma attualmente con funzionalità inferiori Licenza
ai precedenti esempi, in più è specifico per SD/MMC piuttosto che GPL. Se si include del software GPL nel proprio progetto, è
per supporti generici. I requisiti per Dati e variabili sono i più piccoli necessario rendere pubblico il progetto stesso. Se si desidera una
di tutte le soluzioni analizzate. versione con licenza più permissiva per l’utilizzo in dispositivi
commerciali è necessario contattare l’autore per maggiori dettagli.
Internet
www.roland-riegel.de/sd-reader/index.html Conclusioni
Una libreria molto semplice e immediata, ma un po’ troppo
FAT File IO Library voluminosa.
Come spesso accade con I progetti open source, questa libreria è
venuta meno proprio quando l’articolo è stato scritto. Abbiamo Internet
deciso di pubblicarla comunque nel caso ritornasse disponibile. Solitamente la FAT File I/O library si trova qui: www.robs-projects.
La versione utilizzata è inclusa nel download sulla pagina web com/filelib.html
dell’articolo[1]. Utilizzare e configurare questa libreria è piuttosto
immediato. L’unica richiesta di codice utente è relativa alla routine (100569)
di lettura/scrittura dei settori (è tua responsabilità invocare il tuo
codice di inizializzazione).
In fat_opts.h, si può scegliere se supportare I nomi di file estesi, il
Link internet
numero di buffer, e il numero di file simultaneamente aperti.
Non è stato possibile testare il codice sul PIC18 a causa della poca [1] www.elektor.com/100569
TimeClick
Controllore programmabile
per macchina fotografica
Di Carlos Ladeira (Portogallo)
TimeClick è il nome di questo dispositivo che permette di controllare una macchina fotografica reflex
tramite una connessione via filo e senza il diretto intervento di un essere umano.
TimeClick scatta fotografie a scadenze temporali fisse o casuali
oppure in risposta agli input del sensore, rendendo così
possibili tutta una serie applicazioni che vanno dalle foto
HDR allo scatto attivato da suoni.
Dopo aver scat- • Uso manuale nostro dispositivo e alla macchina foto, si
tato troppe foto nel per sfruttare l’atti- può realizzare un sistema di ripresa attivo
momento sbagliato in vazione remotizzata addirittura per giorni.
varie occasioni quali ad • Controllo manuale dell’ot-
esempio feste, è nata l’idea di turatore (modo B o Bulb mode) Attrezzatura utilizzata
questo progetto. • Modalità blocco dello specchio Il circuito è nato su di una piastra per spe-
Il modo di usare una macchina fotografica • Modalità esposizione a forcella rimentazione ma si è presto evoluto in un
offerto da TimeClick può portare il diverti- • 12 memorie per salvare differenti impo- circuito stampato completo. Per la proget-
mento ed i risultati al loro massimo livello. stazioni o configurazioni tazione dell’hardware (schema elettrico
Dall’inizio dello sviluppo del progetto, l’au- e circuito stampato) è stato utilizzato un
tore ha avuto numerose idee ed aggiunto Le operazioni sono incredibilmente semplici CAD open-source chiamato Kicad. È sem-
molte prestazioni per aumentare le funzioni e una volta che il dispositivo è configurato plicissimo da usare anche per i principianti.
disponibili, quali: e connesso alla macchina fotografica è suf- Dato che l’autore ha realizzato tutto in casa
• Ritardo fisso tra due foto ficiente scegliere l’inquadratura della mac- (circuito stampato utilizzando il metodo
• Ritardo casuale tra due foto china sul treppiede e lasciar fare al disposi- della pellicola con trasferimento a caldo),
• Foto scattate in seguito a evento rilevato tivo tutto il lavoro. non sono stati necessari fori metallizzati
dal sensore Con l’opportuna alimentazione fornita ma tutte le connessioni tra le due facce
LCD1
V+ IC1 +5V
BT1 S1 LP2954
1 3
LCDisplay 2 x 16
LED+A
LED-C
VDD
VSS
C5 C6 C7 C4
R/W
K4
RS
VL
D0
D1
D2
D3
D4
D5
D6
D7
E
3 +5V
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1 10u 100n 100n 10u
25V 16V
2
R2 T2
1k
BS170
P1 R8
DB4
DB5
DB6
DB7
R/W
10R
RS
BL
E
10k
4k7
1M
MOSI 4
programmazione del microcontrollore è
15
RST 5
5
stata effettuata mediante un Atmel AVR 6
AVCC
VCC
R12
1 DB4 MOSI
Dragon utilizzando la modalità ISP. Inizial- PB0
470k
RST 10 2 DB5 MISO
RESET PB1
3 DB6 SCK
mente l’autore ha avuto qualche problema 9
IC2 PB2
4 DB7
PB6 PB3
con entrambi gli strumenti. Ad esempio il
20 RS
caso in cui la connessione del PC con AVR S2 R16
ATtiny861 PA0
19 R/W
PA1
12 18 E
dragon era possibile ma non era possibile 68k
11
PA6 PA2
17 BL
PA7 PA3
comunicare col microcontrollore. Il pro- S3 R17 R15
+5V
PA4
14
13 IC4
15k 10k
blema è stato risolto temporaneamente XTAL1
PA5
XTAL2
AGND
K11 K10 R13
GND
1 7
1k
riavviando il PC e poi, definitivamente, S4 R18 K9
16
7
8
6
5k6 X1 2 8
reinstallando AVR studio. Da quanto si è R14
4 6
S5 R19 1k
potuto capire, esplorando i post in Inter- 1k5
C10
C1 C2
3 5
net di altri utenti con problemi similari, 100p
22p 8MHz 22p
CNY74-2
possiamo immaginare si tratti di un bug di
AVR Studio connesso all’esecuzione di pro-
C8 8
cedure inappropriate. La procedura sugge- IC3 = LM358P IC3 D1
100n
rita per la programmazione del microcon- K6 R7
4
K7 K5
5
47k
trollore è riportata nel capitolo Montaggio IC3B
7 R4 R5 R3
6 K2
& Programmazione.
100k
10k
10k
R6
R9 470k
2
100k
P2 D2 R10 1 T1
IC3A K3
Descrizione dell’Hardware 3
C3
4k7
Guida a
alle macchine fotografiche compatibili
TimeClick è sstato provato con successo con la Canon 500D, che ha un jack da 2.5 mm
predisposto per il controllo remoto (E3-type) e con la Canon 7D che ha un connettore Canon
N3 per lo stesso
ste uso. Ne risulta che tutte le macchine fotografiche della Canon con il jack
s
da 2.5 mm saranno compatibili con TimeClick. Questo include i modelli 1000D, 550D, 500D,
350D 300D e 60D.
450D, 350D,
Il connettore N3 è presente nelle Canon modello EOS 1D, 5D, 5Dmk2, 7D ,10D, 20D, 30D, 40D
quin anche questi modelli risultano compatibili. Ovviamente, in questo caso - dato
e 50D e quindi
connet
che il connettore N3 è difficile da trovare - il modo più semplice di procedere è di acquistare
appo
una apposito cavo di connessione oppure uno scatto remoto a basso costo e poi utilizzarne
il cconnettore N3. Cavi di collegamento possono essere acquistati, per esempio, su[3]
(andare su ‘Remote Accessories’ nella sezione ‘Remote Cords/Wireless/Infrared’).
Altre marche non sono state testate ma una ricerca con effettuata con Google
ha evidenziato che tutte le macchine fotografiche Pentax usano lo stessa
piedinatura delle Canon ed è quindi molto probabile che anche queste siano
compatibili con TimeClick. Le macchine Nikon hanno un connettore differente
ma hanno lo stesso principio di funzionamento. Queste usano un connettore
di tipo MC-DC1sui modelli D70, D70s e D80, un connettore di tipo MC-DC2
sui modelli D90, D3100, D5000 e D7000 ed un connettore a 10 pins con
nomi differenti (MC-20, MC-22, MC-30, MC-36) sui modelli sui modelli D200,
D300, D700, D3 e D3x... Presumibilmente anche questi modelli possono
essere usati con TimeClick. Ci piacerebbe sentire da voi se i suddetti modelli
sono compatibili o no quindi siete caldamente invitati a riferire delle vostre
sperimentazioni sul forum di Elektor.
Il protocollo è piuttosto rudimentale e stato scritto completamente in linguaggio Montaggio & Programmazione
usa tre pin: 1-massa; 2-anello e 3-punta. C ed utilizzando l’efficientissimo compila- Il circuito stampato e il microcontrollore
Quando i pins 1 e 2 sono cortocircuitati, la tore avr-gcc. Circa il 99% degli 8K di flash pre-programmato possono essere acqui-
macchina foto funziona esattamente come del microcontrollore sono utilizzati per il stati su Elektor Shop[1]. Cominciate il mon-
quando il pulsante per lo scatto è portato programma. È stata dura riuscire a compri- taggio della scheda dai componenti con la
a metà corsa. Quando il pin 1 e 3 sono cor- mere tutte le prestazioni del dispositivo nel minore altezza e proseguite man mano pro-
tocircuitati la macchina foto funziona esat- microcontrollore. Si sono rese necessarie cedendo con i più alti.
tamente come quando il pulsante per lo parecchie ottimizzazioni del codice. Tutti La figura 2 mostra la disposizione dei com-
scatto è portato a fine corsa. i dati di configurazione sono salvati nella ponenti sul circuito stampato. [any notes,
EEPROM del microcontrollore. Luc?]Il display LCD e gli interruttori devono
Azionamenti da sensore Le operazioni implementate nel programma essere montati sul lato componenti del circu-
Il modo in cui opera il sensore è molto sono chiaramente commentate nel sorgente ito stampato.
facile da capire. Il microcontrollore legge stesso; il programma effettua le impostazioni Una volta ‘popolata’ la scheda è giunto il
l’ingresso dell’ADC ovvero la tensione che iniziali e poi entra nel ciclo infinito. momento di completarla con l’intelligenza!.
il sensore genera. Indipendentemente dal All’interno di questo ciclo avvengono tutte La programmazione del microcontrollore è
tipo di sensore utilizzato, il microcontrollore le operazioni. effettuata attraverso il connettore di pro-
attende una transizione (salita o discesa) TIMER0 è configurato per generare un grammazione ISP CONK1. Assumendo che
?? attraverso il valore di soglia impostato. impulso ogni secondo al fine di permettere si stia utilizzando l’AVR Studio e un pro-
Quando questa condizione si verifica, il una accurata gestione di tutte le tempisti- grammatore AVR Dragon o AVR ISP, ecco le
dispositivo si attiva concordemente alle che basate su multipli di secondo. fasi da seguire:
impostazioni e per esempio, attende un Per consentire la massima flessibilità sono Prima di tutto selezionare il dispositivo nel
tempo prestabilito ed espresso in ms per previsti 12 differenti profili nei quali l’utente menù Project -> Configuration options.
poi attivare lo scatto. può salvare le varie impostazioni. Ogni pro- Quindi connettere il programmatore al
Spegnere sempre il dispositivo prima di con- filo può essere rinominato per indicare più TimeClick. Dato che l’autore ha sperimen-
nettere e sconnettere un sensore. chiaramente le funzioni per le quali è stato tato alcune misteriose evenienze durante
In questo modo saranno evitati cortocircuiti creato. Per esempio, un utente potrebbe le varie fasi di questo passo, lui consiglia il
all’interno del connettore mini-jack. avere il profilo ‘Fulmini’, un profilo ‘Gocce’ seguente ordine:
e così via. Incluso nel codice sorgente in[1] 1 Connettere il TimeClick e l’AVR Dragon/
Descrizione del Software c’è anche un file EEPROM contenente sva- ISP, entrambi disalimentati, mediante il
Il sorgente, liberamente scaricabile da[1], è riati modi di operare pre-configurati. cavo usato per la programmazione.
Figura 3. Collegamenti del dispositivo. Figura 4. Impostazione corretta dei fusibili. Figura 5. Programmazione del microcontrollore.
MICROCONTROLLORI
All-Soft-555
Un ATtiny nelle vesti di un 555 in
configurazione monostabile e astabile
Il chip del “triplo-5” è uno degli IC più venduti di tutti i tempi, sebbene oggi il suo diagramma interno,
vista la quantità di segnali analogici, ne rivela la sua età. Non solo: per farlo funzionare è necessario
calcolare il valore dei componenti esterni e si devono utilizzare condensatori e resistenze reali!
E se ancora non bastasse, non è per niente flessibile. Vi presentiamo una riedizione del 21° secolo
di questo chip, un 555 virtuale realizzato con un micro controller a 8 bit.
Alle prese con la modifica del controller Scelta del controller Meglio dell’originale
per la mia bici elettrica è sorta la necessità Oggi sono presenti sul mercato un gran Il vero 555[3] può essere configurato come
di aggiungere un monostabile al circu- numero di potenti microcontroller di vari multivibratore monostabile o astabile. La
ito. Sapevo bene di potere contare su una costruttori. Nel cassetto dell’autore erano temporizzazione degli impulsi è stabile
delle varie edizioni del timer 555 presenti presenti alcuni microcontroller ATtiny25[1], e relativamente immune dalle variazioni
nel mio laboratorio. Il monostabile però ATtiny45 e ATtiny85 AVR che potevano della tensione di alimentazione. In funzio-
doveva essere ‘retriggerabile’ e per que- essere adatti allo scopo. I tre micro, oltre ad namento monostabile può generare impulsi
sto motivo il 555 aveva bisogno di qual- avere lo stesso numero di pin (nella versione da qualche microsecondo a centinaia di
che altro componente esterno. Una delle DIL) contengono anche un timer hardware e secondi. Come astabile può funzionare da
buone caratteristiche del 555 è che occupa un convertitore A/D, di che altro si potrebbe qualche centinaio di kHz a pochi milliHertz.
poco spazio sulla scheda. avere bisogno ? L’unica differenza tra i tre Un emulazione del 555 dovrebbe come
Ma quando lo spazio comincia a diventare controller è la capacità della memoria FLASH minimo soddisfare questi requisiti.
ridotto, bastano i soli componenti esterni (2, 4 oppure 8 kByte) e della RAM/EEPROM. Nonostante la sua popolarità, il vero 555 ha
al 555 a rendere questa soluzione meno Per lo sviluppo del software per questi micro sempre avuto qualche limite, ossia:
interessante. In alternativa al 555 avrei controller è stato utilizzato BASCOM_AVR, un • sono necessari componenti esterni
potuto utilizzare un CD4098, un mono- compilatore BASIC semplice ed efficace pro- • il monostabile non è retriggerabile
stabile della serie CMOS 4000, ma già da dotto dalla MCS-Elektronic. Per la creazione • l’ingresso di trigger risponde esclusiva-
solo, con i suoi 16 pin, era grande il dop- delle routine relative alle temporizzazioni mente al fronte di discesa dell’impulso
pio 555. Una soluzione ancora meno inte- l’autore ha utilizzato sia codice assembler che • il duty-cycle del multivibratore non è
ressante. Scartato l’uso del CD4098, pensa codice compilato, senza che si sia potuta rile- semplice da calcolare.
e ripensa sono giunto alla conclusione: vare alcuna differenza apprezzabile sui risul-
un All-Soft-555, ossia un “555 tutto-sof- tati. Sul sito di Elektor, alla pagina dedicata a Non sarebbe certamente stato utile inclu-
tware”, una versione digitale del 555 quest’articolo[2], troverete la versione gratu- dere tutti i difetti del 555 nella versione a
basata sull’impiego di un microcontroller ita e liberamente scaricabile di questo com- micro controller. La funzione del multivibra-
a 8-bit. Con questa soluzione tutte le carat- pilatore. L’unica restrizione nel suo utilizzo è tore è adesso configurabile via software. Sia
teristiche del 555 sono ora programmabili il limite di 4 kByte di codice compilato. Per il il trigger che gli altri parametri di funziona-
via software e non è più necessario utiliz- nostro progetto è più che sufficiente, inclusa mento possono essere definiti nel firmware
zare componenti aggiuntivi. qualunque futura espansione. (vedi ‘Caratteristiche’).
MICROCONTROLLORI
Caratteristiche
Monostabile (iMono): Astabile (iMulti):
MICROCONTROLLORI
però sufficienti a coprire la maggior parte utilizzata sia per variare la frequenza del • veloce: alta frequenza con uscita ad
delle necessità. Senza aggiungere nulla segnale in uscita (di più di un’ottava) o per onda quadra 50:50.
il funzionamento si spinge fino ai 4 MHz, variarne il rapporto mark/space (tra l’1% e • fissa: frequenza e duty-cycle regolabili
semplicemente un sogno per il vero 555. il 99%, per la modulazione di frequenza e di via software.
Il pin 5 è l’ingresso di gate, che serve ad larghezza di impulso PWM). • VCO: frequency via CV (1:2.56) e duty
accendere e a spegnere il segnale di uscita. cycle regolabile via software.
L’onda quadra di uscita è disponibile al pin Complessivamente, il programma multivi- • PWM: duty cycle via CV (dall’1%
6. L’ingresso CV sul pin 7 è una tensione in bratore astabile (iMulti) offre quattro moda- al 99%) e frequenza regolabile via
c.c. compresa tra 0 e Vcc che può essere lità di funzionamento: software.
MICROCONTROLLORI
20MHz Ticks: 2 100 256 2 100 256 2 100 256 2 100 256 2 100 256
Cl.div feff (Hz) Prescale: 1 (Hz) Prescale: 8 (Hz) Prescale: 64 (Hz) Prescale: 256 (Hz) Presc.: 1024 (Hz)
1 20 M 10 M 200 k 78,1 k 1,25 M 25 k 9,77 k 156 k 3,13 k 1,22 k 39,1 k 781 305 9,77 k 195 76,3
2 10 M 5M 100 k 39,1 k 625 k 12,5 k 4,88 k 78,1 k 1,56 k 610 19,5 k 391 153 4,88 k 97,7 38,1
4 5M 2,5 M 50 k 19,5 k 313 k 6,25 k 2,44 k 39,1 k 781 305 9,77 k 195 76,3 2,44 k 48,8 19,1
8 2,5 M 1,25 M 25 k 9,77 k 156 k 3,13 k 1,22 k 19,5 k 391 153 4,88 k 97,7 38,1 1,22 k 24,4 9,54
16 1,25 k 625 k 12,5 k 4,88 k 78,1 k 1,56 k 610 9,77 k 195 76,3 2,44 k 48,8 19,1 610 12,2 4,77
32 625 k 313 k 6,25 k 2,44 k 39,1 k 781 305 4,88 k 97,7 38,1 1,22 k 24,4 9,54 305 6,1 2,38
64 312,5 k 156 k 3,13 k 1,22 k 19,5 k 391 153 2,44 k 48,8 19,1 610 12,2 4,77 153 3,05 1,19
128 156,25 k 78,1 k 1,56 k 610 k 9,77 k 195 76,3 1,22 k 24,4 9,54 305 6,1 2,38 76,3 1,53 596 m
256 78,125 k 39,1 k 781 305 k 4,88 k 97,7 38,1 610 12,2 4,77 153 3,05 1,19 38,1 763 m 298 m
8MHz Ticks: 2 100 256 2 100 256 2 100 256 2 100 256 2 100 256
Cl.div feff (Hz) Prescale: 1 (Hz) Prescale: 8 (Hz) Prescale: 64 (Hz) Prescale: 256 (Hz) Presc.: 1024 (Hz)
1 8M 4M 80 k 31,3 k 500 k 10 k 3,91 k 62,5 k 1,25 k 488 15,6 k 313 122 3,91 k 78,1 30,5
2 4M 2M 40 k 15,6 k 250 k 5k 1,95 k 31,3 k 625 244 7,81 k 156 61 1,95 k 39,1 15,3
4 2M 1M 20 k 7,81 k 125 k 2,5 k 977 15,6 k 313 122 3,91 k 78,1 30,5 977 19,5 7,63
8 1M 500 k 10 k 3,91 k 62,5 k 1,25 k 488 7,81 k 156 61 1,95 k 39,1 15,3 488 9,77 2,81
16 500 k 250 k 5k 1,95 k 31,3 k 625 244 3,91 k 78,1 30,5 977 19,5 7,63 244 4,88 1,91
32 250 k 125 k 2,5 k 977 15,6 k 313 122 1,95 k 39,1 15,3 488 9,77 2,81 122 2,44 954 m
64 125 k 62,5 k 1,25 k 488 7,81 k 156 61 977 19,5 7,63 244 4,88 1,91 61 1,22 477 m
128 62,5 k 31,3 k 625 244 3,91 k 78,1 30,5 488 9,77 2,81 122 2,44 954 m 30,5 610 m 238 m
256 31,25 k 15,6 k 313 122 1,95 k 39,1 15,3 244 4,88 1,91 61 1,22 477 m 15,3 305 m 119 m
128kHz Ticks: 2 100 256 2 100 256 2 100 256 2 100 256 2 100 256
Cl.div feff (Hz) Prescale: 1 (Hz) Prescale: 8 (Hz) Prescale: 64 (Hz) Prescale: 256 (Hz) Presc.: 1024 (Hz)
1 128 k 64 k 1,28 k 500 8k 160 62,5 1k 20 7,81 250 5 1,95 62,5 1,25 488 m
2 64 k 32 k 640 250 4k 80 31,3 500 10 3,91 125 2,5 977 m 31,3 625 m 244 m
4 32 k 16 k 320 125 2k 40 15,6 250 5 1,95 62,5 1,25 488 m 15,6 313 m 122 m
8 16 k 8k 160 62,5 1k 20 7,81 125 2,5 977 m 31,3 625 m 244 m 7,81 156 m 61 m
16 8k 4k 80 31,3 500 10 3,91 62,5 1,25 488 m 15,6 313 m 122 m 3,91 78,1 m 30,5 m
32 4k 2k 40 15,6 250 5 1,95 31,3 625 m 244 m 7,81 156 m 61 m 1,95 39,1 m 15,3 m
64 2k 1k 20 7,81 125 2,5 977 m 15,6 313 m 122 m 3,91 78,1 m 30,5 m 977 m 19,5 m 7,63 m
128 1k 500 10 3,91 62,5 1,25 488 m 7,81 156 m 61 m 1,95 39,1 m 15,3 m 488 m 9,77 m 2,81 m
256 500 250 5 1,95 31,3 625 m 244 m 3,91 78,1 m 30,5 m 977 m 19,5 m 7,63 m 244 m 4,88 m 1,91 m
Inoltre: L’intera gamma di ticks, da 2 a 256, è valida timer. La frequenza di uscita viene data dalla
• gate: pilota il segnale di uscita (alto o solo per il funzionamento in modalità seguente formula:
basso) veloce. Le modalità che generano un duty
• lunghezza periodo: da 2 a 256 o da 100 a cycle variabile devono avere un minimo Frequenza = clock / (ticks x clock-prescaler
256 Timer-Ticks di 100 ticks in un periodo. Il timer 8-bit x timer prescaler)
• duty cycle: dall’1% al 99 % dell’ATtiny’s viene utilizzato nella moda-
• clock prescaler: 1/2/4/8/16/32/64/256 lità fast-PWM. La frequenza feff è derivata Ad esempio, utilizzando un clock di 8 MHz
• timer prescaler: 1/8/64/256/1024 del’oscillatore e dal prescaler del clock dal ed un clock prescaler di 8 otteniamo una
• tipo di oscillatore: interno/esterno quale sono pilotati il timer ed il prescaler del feff = 1 MHz. Scegliendo un timer prescaler
MICROCONTROLLORI
Punti generali
Per ottenere il meglio dall’All-Soft-555
è utile tenere a mente i seguenti punti
quando si seleziona dalla tabella una par-
ticolare larghezza di impulso o frequenza:
• Più grande è il valore del timer presca-
ler più precisa sarà la temporizzazione.
Ossia, con un valore di prescaler di 256 il
timer è molto preciso.
• Quando per l’iMono si utilizza un valore
di prescaler pari a 8 ed un basso valore
di Ticks (<16) la temporizzazione non è
particolarmente precisa.
• Il consumo di corrente dell’ATtiny è pro-
porzionale alla sua frequenza di clock.
Figura 3. Dispositivo in prova su una piastra per prototipi. Un controller che lavora a 5 V e con una
feff = 8 MHz ha bisogno di una corrente
di circa 8 mA. A 3.3 V e ad 1 MHz la
corrente crolla a 0.7 mA. A 128 kHz e
di 64 e impostando 156 ticks si ottiene per- iMono, comunque, utilizza le opzioni stan- a 2.5 V sono invece sufficienti appena
ciò una frequenza di uscita di: dard per il timer0. 0.1 mA, molto vicino al consumo di un
Tutti i pin non impostati come uscite sono vero 555 in versione CMOS.
f = 8 MHz / (8 × 64 × 156) = 100.1602564 Hz di default un ingressi dotati di resistenza di Ci auguriamo che questo timer chip vir-
pull-up interna per evitare che gli ingressi tuale vi sia utile. Se questo esempio vi ha
In questo caso sarà generato un segnale alla non collegati siano soggetti a tensioni inde- ispirato nella realizzazione di qualche altro
frequenza di 100 Hz (presupponendo che finite (fatta eccezione per il pin CV nell’i- chip virtuale standard, l’autore e gli editori
l’oscillatore interno sia sufficientemente Multi). Ciò vale anche per l’ingresso di reset. di Elektor saranno lieti di saperne di più.
preciso). La tabella 2 mostra il campo di Tramite la definizione ‘Const Int_osc = False’ (100691)
frequenze dell’astabile ottenibili in funzione si possono scollegare i pull-up interni dai pin
della selezione delle quattro variabili. di collegamento del quarzo XTAL1 e XTAL2
per permetterne l’utilizzo. Il clock viene
Programma & Chip selezionato scegliendo i ‘fuse’ appropriati.
Il sorgente di entrambi i firmware, iMono Il prescaler 8, che normalmente viene impo-
(monostabile) e iMulti (astabile), insieme stato tramite ‘fuse’, non avrà effetto perché
ai file .hex, con i quali si possono di default il prescaler viene impostato nel firmware.
realizzare un monostabile da 100 ms ed E’ necessario tenere presente che per otte-
un multivibratore da 100 Hz con un duty nere uscite a bassissima frequenza o per
cycle del 25 %, possono essere scaricati produrre impulsi lunghi è necessario sele-
gratuitamente dalla webpage di Elektor[2]. zionare l’oscillatore interno a 128 kHz. L’in-
Il firmware iMono è di 694 bytes. Resta terfaccia seriale di programmazione ISP ha
perciò sufficiente spazio anche su un pic- bisogno di una frequenza minima seriale di
colo ATtiny25 per future espansioni. La 1,2 kHz e la reale velocità di clock del pro- Link internet:
situazione è invece diversa per il firmware cessore deve essere come minimo 4 volte [1] ATtiny25-Datenblatt:
iMulti, che occupa fino a 2022 bytes. In que- la velocità seriale di clock. Il limite pratico www.atmel.com/dyn/resources/
sto caso rimangono solamente 24 bytes per la programmazione ISP si raggiunge
prod_documents/doc2586.pdf
liberi nella memoria dell’ATtiny25. Que- con il clock prescaler impostato a 16, che
[2] Webseite zu diesem Artikel:
sto è dovuto principalmente alle routine di dà una feff = 8 kHz. Con un prescaler di 32,
www.elektor.it/100691
gestione del convertitore A/D. Scorrendo il o più alto, accadrà che il chip non si potrà
[3] Download der BASCOM-AVR-Demoversion:
sorgente di iMulti si noterà che la procedura più riprogrammare. Su Internet è possibile
per la configurazione dei registri del timer0, trovare la soluzione al problema ed è possi- www.mcselec.com/index.
inclusi i comandi di start e stop, sono stati bile recuperarlo. Il metodo più sicuro è l’im- php?option= com_docman&task=cat_
scritti “a mano”. Ciò è dovuto al fatto che la piego di un “programmatore seriale ad alta view&gid=99&Itemid=54
versione corrente di BASCOM (1.12.0.0) non tensione” (ad esempio l’STK500 dell’ATMEL) [4] Wikipedia zum 555:
gestisce le modalità PWM veloci. Il firmware che è indipendente dal clock. http://de.wikipedia.org/wiki/NE555
080805 - 12
Référence Contre-réaction
référence
terie agli ioni di litio del tipo a bottone. Ma adatti gli operazionali OPA237 utilizzati per traggio più a valle. Se poi si riesce a trovarlo
in fase di sviluppo potrebbero anche essere la realizzazione dei filtri. Il punto di riferi- in formato SMD, si potrebbe anche usare
usate le classiche pile da 9 V, con l’aggiunta mento dell’elettronica è fissato a 1,2 V dal un riferimento a 1,5 V. I filtri passaalto (del
di un regolatore a 3,3 V. L’alimentazione a MAX6120, che è un riferimento di tensione. primo ordine, costruito intorno all’inte-
3,3 V condiziona la scelta dei componenti grato IC5) e passabasso (costruito intorno
per le funzioni analogiche. Questa tensione viene applicata diretta- ad IC3) selezionano ed amplificano la banda
mente al corpo umano tramite l’elettrodo utile del segnale.
L’amplificatore di strumentazione AD623, di riferimento ed impone ai segnali elettrici,
di basso costo, che funziona anche con a livello degli elettrodi di misura, un modo Il passabasso ha anche la funzione antialia-
alimentazione singola o asimmetrica, è comune che permette di salvaguardare la sing prima del campionamento del segnale.
particolarmente indicato, così come sono dinamica degli stadi di amplificazione e fil- Prima di essere inviato per la conversione sul
IC6
LM317/CYL 3.3V
D1
3.3V
R1
1 2 C3
10k
R4 10n
ADJ R2 R19 R20
1N4004
240R
K1 4 K2 1M
K4 XB1
10k
10k
3V3 A 4 17
cable DO8 AD3/DIO3
5 16
100n * 6
RESET RTS/AD6/DIO6
15
1.2V D4
PWM0/RSSI ASS/AD5/DIO5 3.3V
S1 7 14
IC2 3 5 8
PWM1 XBEE_20 VREF
13
MAX6120/SOT [reserved] ON/SLEEP
Contre-réaction 1 RESET 9 12
3.3V 1.2V Référence IC1 DTR/SLEEP-RQ/DI8 CTS/DIO7
1 2 4 10 11
GND AD4/DIO4
2
R18 BAV99
C4 3 OPA237
_SOT
47k
100n R9 R5
Filtre passe-bas Filtre double -T Fc = 50Hz
3.3V
27k
Fc = 102Hz G = 142
27k
Filtre passe-haut
R10 Fc = 0.15Hz G = 1 3.3V
D3 D2
8k2 3.3V R7 R6
33k
33k
C17
3.3V C16
100n
C15 100n C9 C12
1.2V
100n 1.2V 5
3
2x BAV99 3 5 1
100n 100n
R15 1 R12 IC3
3 8 1 4
47k 7 R14 C10 IC5 33k R13 R16
K3 6 4 2
R17 IC4 1M 33k 33k
Connecteur Corps
2 4 2 OPA237
47k 1u
5
AD623 OPA237 _SOT
REF _SOT
R3 C8 C11
Amplification G = 7
R11 470k
1M C5 100n 100n
1.2V
3n3
080805 - 17
Cosa misuriamo?
La nostra realizzazione misura l’attività elettrica del cuore R
per mezzo di tre elettrodi, due per ogni polso e il terzo
sulla caviglia della gamba sinistra. Gli elettrodi sui polsi prelevano
il segnale elettrico, quello sulla gamba sinistra serve per fissare ECG T
la tensione di riferimento dei primi due (vedi in figura la corrispondenza P
tra attività elettrica misurata e fasi di un ciclo cardiaco):
• Onda P, contrazione degli atri, il sangue viene prelevato Q S
dalle vene e spinto nei ventricoli.
• Complesso QRS, contrazione dei ventricoli, il sangue viene
contenuto viene spinto nelle arterie.
• Queste due fasi P e QRS provocano il classico suono “tum tum”
del cuore.
• Onda T, ripolarizzazione dei ventricoli, i muscoli dei ventricoli
ritornano a riposo.
Riferirsi a[2] per maggiori informazioni sull’ECG.
Systole auriculaire Diastole (repos)
Gli elettrodi
Un buon ECG potrà essere ottenuto solo con buoni elettrodi, ben piazzati e ben cablati. Per limitare l’influenza di segnali indesiderati,
raccomandiamo di utilizzare cavi schermati.
Dal punto di vista elettrico i cavi “audio” rispondono perfettamente a queste caratteristiche, ma sono troppo fragili. Vi suggeriamo quindi
di realizzare dei piccoli adattatori sui quali dei serra-cavi eliminano praticamente tutti i rischi di rottura (vedi Figura A e B).
Avrete notato che il blindaggio non è collegato che dal lato scheda d’acquisizione e che è isolato dal lato elettrodi per evitare ogni contatto
con la pelle. I puntali di tipo 4 mm permetterebbero di utilizzare degli elettrodi commerciali (vedi Figura C), ma il loro costo potrebbe
scoraggiare alcuni lettori (più di 10 € l’uno e ce ne vogliono tre).
Si potranno invece realizzare da soli con una vecchia moneta (precedente all’euro), come mostrato in Figura D. Usando monete di nichel,
vi si salderà una bussoletta da 4 mm e l’elettrodo sarà pronto all’uso. Tre braccialetti elastici li potranno tenere fermamente
in posizione sui polsi e sulla caviglia. Questi braccialetti potrebbero essere realizzati tagliando opportunamente elastici per bretelle
ed incollandone le estremità con del nastro biadesivo, oppure con dei ritagli di camere d’aria.
A B C D
470k
VCC RST
sione diretta di valori da tastiera. Una volta 7
DIS
Rb
immessi, i nuovi valori dei registri sono IC1 C6 R6 C7 K2
2 3 VECGplus
122k
150k
150k
LISTA COMPONENTI
Resistenze (CMS 0805): Semiconduttori:
R1, R19, R20 = 10 kΩ D1 = 1N4148 CMS Minimelf
R2, R11, R14 = 1 MΩ D2, D3, D4 = diodo doppio BAV99 (SOT23)
R3 = 470 kΩ IC1, IC3, IC5 = OPA237NA/250 (SOT23-5)
R4 = 240 Ω IC2 = MAX6120EUR+T (SOT-23)
R5, R9 = 27 kΩ IC4 = AD623ARZ (SOIC-8)
R6, R7, R12, R13, R16 = 33 kΩ IC6 = LM317LM (SOIC-8)
R8 = 360 Ω
R10 = 8,2 kΩ Varie:
R15, R17, R18 = 47 kΩ K1, K2 = barrette a 2 contatti con passo
di 2,54 mm
Condensatori (CMS 0805 ceramici, K3 = barrette a 5 contatti con passo
escluso C1 & C7): di 2,54 mm
C1, C7 = 47 μF / 10 V, CMS, Kemet K4 = barrette a 6 contatti con passo
B45196E2476K409 di 2,54 mm
Montaggio dei componenti
C2, C4, C8, C9, C11, C12 = 100 nF XB1 = modulo XBee ZB ZigBee,
Digi XB24-Z7CIT-004 della scheda ECG senza fili.
C3, C6, C13 = 10nF
C5 = 3,3 nF Circuiti stampati 080805-1, veder [1]
C10 = 1 μF
indirizzo esclusivo. In effetti ciascun modu- Configurazione del modulo della scheda (2-ADC). Il modulo XBee dispone di sei
letto possiede ben due indirizzi, uno lungo di acquisizione entrate per la conversione analogico digi-
64 bit, rigorosamente esclusivo ed asse- • Dalla sezione Networking & Securty: il tale, da AD0 a AD5, sui pin da 20 a 17, 11 e
gnato dal costruttore (serial number high modulo è configurato come un nodo ter- 15 rispettivamente. Il periodo di campio-
SH, serial number low SL) ed uno corto da 16 minale lasciando CE (Coordinator Enable) namento è scelto a 3 ms mettendo IR a 3.
bit assegnato dall’utilizzatore. a 0. In seguito si configura il suo indirizzo
È quest’ultimo codice da 16 bit che usiamo settando DL=0x1234 (indirizzo destina- Questo periodo è sufficiente per la digita-
in questo progetto ponendo a zero il zione) e MY=0x5678 (indirizzo sorgente). lizzazione del segnale ECG amplificato e
registro DH (Destination Address High) e • Dalla sezione I/O Settings: l’attivazione filtrato, in arrivo sul pin 20 del modulo. Poi
ponendo ad un valore minore di 0xFFFF il della conversione analogico digitale IR viene messo a 1 per trasmettere i cam-
registro DL (Destination Address Low). sul pin 20 è ottenuta mettendo DO a 2 pioni in un secondo momento.
Realizzazione
La realizzazione non presenta grandi dif-
ficoltà, ma il modulo XBee possiede una
impronta non convenzionale con una spa-
ziatura dei pin da 2 mm e pin di sezione
quadrata, per i quali esistono però speciali
connettori. Il modulo dalla parte ricevitore,
collocato sulla scheda di ricezione, ha già
il suo connettore. Il modulo della scheda
di acquisizione ha bisogno di cinque sole Figura 6 Segnale preso dopo filtraggio passabasso dal pin PWM del ricevitore (canale 1)
connessioni di pin (Vcc, GND, Reset, Vref e e il segnale ECG simulato prima della riduzione di ampiezza (canale 2).
ADC). Si possono dunque utilizzare dei sem-
plici tulipani per ciascuno di questi pin.
E’ preferibile di non saldare i moduli per
facilitare la loro programmazione, ripro- Link internet
grammazione ed utilizzazione per altri [1] www.elektor.it/080805 [4] www.digi.com/support
progetti. Per quanto riguarda gli elettrodi,
si possono utilizzare quelli a stimolazione, [2] GBECG, Marcel Cremmel, [5] www.enseignement.ensicaen.fr/
Elektor no 340, ottobre 2006, pp 32, claroline/course/
oppure orientarsi verso le soluzioni propo- www.elektor.it/050280 index.php?cid=PRJECGXBEE
ste nel Riquadro 1.
[3] Transceiver ZigBee, Fabrice André,
Elektor no 344, febbraio2007, pp 68,
Osservazione del segnale ECG www.elektor.it/060348
Per motivi di sicurezza non bisogna mai col-
legare l’oscilloscopio acceso alla scheda di
acquisizione per la rilevazione di un segnale
ECG. Se si desidera, il segnale ECG potrà
essere osservato a livello del ricevitore, sia
dalla uscita PWM (dopo un banale filtrag-
gio) se essa è attivata (esempio della figura
6), oppure sul monitor del PC attraverso una
interfaccia programmata che recuperi e dia
forma ai dati trasmessi via RS-232. La figura
7 presenta un esempio di acquisizione di
ECG con una interfaccia sviluppata sotto
LabVIEW. Questa è disponibile in forma
eseguibile sul sito del progetto[1][5]. Questa
semplice realizzazione permette di visualiz-
zare rapidamente il segnale ECG.
TERMOMETRO
Termometro
a tubo nixie
Display di temperatura retrò
Di Dieter Laues (Germania)
I tubi nixie hanno un fascino speciale tutto Il voltaggio output del regolatore è dato da: per leggere i valori di temperatura e con-
loro. L’orologio digitale in stile Sputnik venrirli in format BCD per l’output con i
apparso sul numero di Elektor del gennaio Vo = Vref × R9 / R10 suoi 2 KB di memoria di programma. L’o-
2007 usava questi tubi e molte variazioni e con i valori dati dal diagramma del circu- rologio a 12 MHz è prodotto usando X1,
sul tema sono state pubblicate su internet. ito abbiamo che è un risuonatore con condensatori
Questo termometro digitale, che usa solo incorporati.
due tubi, è leggermente diverso. La misura V0 = 1.25 V × 820k / 5.6k = 183 V Il network RC che comprende R6 e C1 ha
della temperatura è effettuata da un sen- una funzione power-on reset e l’IC4 (un
sore 1-wire DS1820, mentre un microcon- Questo voltaggio, relativamente alto, Maxim-Dallas DS1820) è il sensore della
troller AT89C2051 processa le informazioni ha il vantaggio di mantenere luminoso il temperatura stesso. Il dispositivo è calibrato
di temperatura e gestisce i tubi nixie. display. Nel suo prototipo, l’autore ha usato al momento della fabbricazione e compie
un valore di 680 kΩ per la R9 nell’ottica di letture seriali della temperatura dal suo bus
Hardware riduzione della dissipazione della potenza: 1-wire al P1.3 sul microcontroller. Se il jum-
È stata prestata particolare attenzione in questo caso il voltaggio su C4 è di circa per JP1 (sul P3.4) è adattato, la temperatura
durante la progettazione del circuito per 152V. Usando valori tra i 680 e gli 820 kΩ sarà mostrata in gradi Fahrenheit.
rendere la costruzione la più semplice pos- per la R9 si può regolare il voltaggio e quindi
sibile. Ci sono solo alcuni componenti, nes- la luminosità del display secondo il proprio Opzioni
sun SMD e nessun aggiustamento necessa- gusto personale. I LED da D1 a D4 e le relative resistenze in
rio. Il circuito è mostrato nella figura 1 ed è La R4 e R5 portano l’alimentatore agli anodi serie R2, R3 e R7 sono opzionali e possono
organizzato come segue. dei tubi IN-16, dando un voltaggio opera- essere evitati se si vuole. D1 e D2 mostrano
tivo di circa 143 V (con 180 V sul C4), e una l’andamento della temperatura, mentre D3
L’alimentazione esterna fornisce tra 12 e corrente all’anodo di circa 1.72 mA. Questo e D4 aggiungono dei piccoli effetti luminosi
15 V al circuito. Da questo voltaggio l’IC6 è un buon punto operativo per i tubi Nixie di addizionali ai tubi.
genera il voltaggio da 5 V per il microcon- fabbricazione russa, che sono meno costosi D1 e D2 indicano se la temperatura è in
troller IC1 e per i driver nixie IC2 e IC3. e facili da trovare. Inoltre, il driver Nixie di crescita o in diminuzione. Il led rosso D2
Il generatore ad alto voltaggio richiesto tipo IC K155ID1 russo può essere il sostituto si accende quando la temperatura sale,
per i tubi è generato usando un converti- del 74141, che è al giorno d’oggi più difficile mentre il LED blu D1 si accende quando la
tore step-up basato sull’IC5. Il dispositivo da trovare. temperatura diminuisce. Se la temperatura
MC34063 usato è un controller PWM usato è invariata da una lettura all’altra, non si
e testato facile da trovare, economico e Essendo interessati alla massima lumino- accenderà nessuno dei due LED.
disponibile in package di piombo. Il tran- sità è stato deciso di non dotare i display di La letteratura della temperatura è effet-
sistor MOSFET esterno T1, la bobina L1 e multiplex. tuata più di una volta al secondo, quindi
il diodo Schottky D6 generano e regolano Il piccolo microcontroller compatibile con può succedere che il display alterni abba-
l’output ad alta tensione. l’MCS-51 soddisfa tutti i requisiti software stanza rapidamente due valori molto vicini.
TERMOMETRO
Caratteristiche
Range display: 0 °C a +99 °C (32 °F a 202 °F)
Sensore temperatura: Maxim-Dallas DS1820, precisione 0.5 K
Alimentazione: Adattatore AC, 12 V a 15 V DC
Consumo: 170 mA a 12 V
Tubi: IN-16 di fabbricazione russa, connessione 13-way
Microcontroller: Atmel AT89C2051 (disponibile già pre-programmato)
Firmware: BASCOM (codice sorgente e files disponibili
per il download gratuito)
Opzioni: Display in Celsius o in Fahreneit
Illuminazione del tubo
Indicatori LED del trend della temperatura
(più caldo/più freddo)
+180V *
R4 R5
22k
22k
V1 V2
Nixie IN16 Nixie IN16
1
2
9
4
6
7
8
3
2
9
4
6
7
8
3
13
11
12
10
13
11
12
10
+5V
16
15
13
14
11
10
16
15
13
14
11
10
D1 C1 D2 C2
8
9
1
2
8
9
1
2
O0
O1
O2
O3
O4
O5
O6
O7
O8
O9
O0
O1
O2
O3
O4
O5
O6
O7
O8
O9
10u 5 5
100n VCC VCC
* *
R3 63V R2 C3
IC2 IC3
20
220R
220R
GND GND
12 12
A0
A1
A2
A3
A0
A1
A2
A3
R1 1
RST/VPP
3
IC1
4k7
12 16
IC4 AIN0/P1.0 P1.4
13 17
3
AIN1/P1.1 P1.5
14 18
P1.2 P1.6
2 15 19
DQ P1.3 P1.7
AT89C2051
8 2
P3.4/T0 P3.0/RXD
DS1820 9 3
1
P3.5/T1 P3.1/TXD
6
P3.2/INT0
11 7
P3.7 P3.3/INT1
GND
X1
X2
10
5
R6 JP1 X1
+180V *
10k
F
L1 D6
12MHz
330uH
D5 IC6 +5V BYV26
1N4004
6
7805 R9
1 3 1 5
*
VCC
SC CI T1
820k
R7
IC5 C4
K1 7 2
1k
IS SE
2
C10 C9 C8
MC34063 IRF820 10u
D3 8 3 250V
GND
DC TC R8 R10
100u 100u 100n C5
25V 25V C7 C6
150R
5k6
D4
4
100n
100n 470p
090784 - 11
Figura 1. Semplicità è la parola chiave: solo una manciata di componenti, nessun SMD e nessun aggiustamento.
TERMOMETRO
Semiconduttori: IRF820PBF)
LISTA COMPONENTI D1,D3,D4 = LED, 3mm, blu IC1 = AT89C2051-24PU, programmato,
D2 = LED, 3 mm, rosso Elektor # 090784-41*
Resistenze D5 = 1N4004 IC2,IC3 = 74141 or K155ID1
R1 = 4.7kΩ D6 = BYV26 (p.e. Vishay) (In russo:R155BL1)
R2,R3 = 220Ω T1 = IRF820 (Vishay, International Rectifier IC4 = DS18S20 (Maxim/Dallas)
R4,R5 = 22kΩ IC5 = MC34063
R6 = 10kΩ IC6 = 7805 (TO220)
R7 = 1kΩ
R8 = 150Ω Induttori
R9 = 820kΩ L1 = 330 μH, 1A, axial, D x L = 11 x
R10 = 5.6kΩ 32,5 mm max., z.B. Epcos B82500CA8
oder Fastron 77 A-331 M-00
Condensatori
C1 = 10μF 63V, radiale, lead pitch Varie:
2,5 mm X1 = risuonatore 12MHz, 3-pin, p.e. AEL
C2,C3,C5,C7,C8 = 100nF ceramica, Crystals type C12M000000L003
lead pitch 5 mm JP1 = pin header a 2 pin, lead pitch 2,5
C4 = 10μF 250V, radiale, lead pitch 5 mm mm (jumper facoltativo, vedi testo)
C6 = 470pF, lead pitch 5 mm K1 = terminale PCB 2-way PCB, lead pitch
C9,C10 = 100μF 25V, radiale, lead pitch 5mm
2,5 mm V1,V2 = Tubo Nixie tipo IN-16
(e.g. Sovtek BY-16)
Bobina PCB # 090784-41*
L1 = 330μH, 1A, assiale, DxL = 11x32.5 (download gratuito su[1])
mm max., p.e. Epcos B82500CA8 Figura 2. Questo semplice circuito stampato
or Fastron 77 A-331 M-00 è disponibile nel negozio Elektor. * vedi www.elektor.it/090784 o la pagina
del Negozio Elektor.
Per rendere il display meno frenetico si pos- stato scritto usando il compilatore BASCOM Comunque nessuno di queste problema-
sono distanziare maggiormente le letture: i 8051 della MCS Electronics, che include tiche deve preoccupare il costruttore, che
lettori potrebbero essere interessati a spe- comandi di support per l’interfaccia bus può semplicemente usare il software sca-
rimentare questa possibilità, ci sono alcuni 1-wire. ricabile su[1] o un microcontroller già pro-
bytes di memoria del programma da usare Dopo l’inizializzazione di tutte le variabili grammato disponibile nel negozio Elektor.
e il codice sorgente commentato può essere e del sensore, il software funziona con un Se la temperatura dovesse essere negative
scaricato da[1] gratuitamente. loop infinito che porta a una nuova lettura il display semplicemente mostrerà il valore
Il LED D3 e D4 illuminano i tubi Nixie dal della temperatura all’incirca ogni 750 ms. ‘00’ (la lettura minima) e per temperature
basso, un LED per ciascun tubo. I buchi sono Il valore è convertito in gradi Fahrenheit, sopra i 100 °C sarà visualizzato il valore ‘99’
piazzati in punti dedicati sul circuito stam- se richiesto, i valori frazionari sono cancel- (la lettura massima). Il display mostrerà il
pato per permettere il passaggio della luce, lati e i risultati convertiti in decine e unità valore ‘99’ a intermittenza in caso di sen-
con i LED saldati sulla parte bassa del circu- in formato BCD per essere passati ai driver sore non collegato o guasto.
ito a puntare in su. dei tubi Nixie. I risultati sono immagazzinati
La luminosità dei LED può essere aggiustata e usati nella successiva iterazione del loop Costruzione e operatività
cambiando il valore della R7, e ovviamente dagli indicatori del trend D1 e D2. Tutti i componenti, ad eccezione dei tubi
si possono scegliere i LED della misura e del A dispetto della semplicità della struttura Nixie, sono inseriti sul circuito stampato
colore desiderati. Nel prototipo dell’autore del software, trovare il giusto timing nelle (figura 2), disponibile nel negozio Elektor.
sono stati usati LED blu, particolarmente comunicazioni con il DS 1820 è stato più dif- In primo luogo bisogna saldare i socket per
efficaci al buio insieme al bagliore arancione ficile del previsto. Il bus deve essere reset- IC1, IC2 e IC3. Controllare sempre la pola-
dei tubi. Sfortunatamente i tubi IN-16 usati tato tra le diverse richieste e il chip non rità dei condensatori elettrolitici, e in par-
per il prototipo di Elektor lab avevano una deve essere disturbato da una richiesta ticolare di C4, prima di attaccare l’alimen-
base di plastica grigio opaco e non è stato mentre sta effettuando una misurazione. A tazione. Ora collegare gli adattatori e con-
possibile ricreare l’effetto di illuminazione volte una richiesta effettuata in un cattivo trollare che appaia un voltaggio intorno ai
dei LED. momento può portare il chip a uno stato in 180 V su C4 (se la R9 è di 820 kΩ). Prestare
cui smette completamente di rispondere e molta attenzione agli alti voltaggi e non toc-
Software quindi deve essere resettato. care il circuito stampato quando l’alimenta-
Il software utilizzato nel microcontroller è zione è collegata.
TERMOMETRO
ENERGY HARVESTING
In questo articolo vi mostreremo diversi modi per alimentare i vostri buffer. Il livello di energia nel buffer deve essere monitorato per
circuiti con una fonte di energia alternativa invece che con batterie o capire quando è sufficiente per l’utilizzo. A questo punto può essere
reti elettriche. In questo caso ci concentreremo sull’energia solare, aggiunto al carico – un circuito che realizza qualcosa con l’energia.
ma i metodi qui descritti possono essere sicuramente usati anche Questo continua fino a che l’energia immagazzinata viene esaurita.
con altri metodi di energia alternativa. Come puoi vedere si possono A questo punto il ciclo ricomincia da capo.
ottenere risultati di tutto rispetto Se volete mettere in pratica questa
con un costo modesto e con un’in- idea immediatamente, si può usare
telligente combinazione di compo- un kit pronto all’uso della Texas
nenti moderne e meno moderne. ottime prestazioni Instruments (EZ-2500-SEH [1]). È
basato sul modulo harvesting
Praticamente tutte le fonti di ener-
gie alternative hanno tre difetti
per pochi Euro! ad energia solare Cymbet Ener-
Chip EH[2] e offre una piattaforma
pratici: non sono disponibili in completa per un sistema di sen-
modo continuativo, o se lo sono sori wireless casalingo autonomo.
non riescono a fornire un ammontare costante di energia e spesso Questo kit è primariamente inteso per un uso di prova rapido. Se
la corrente disponibile è troppo poca per l’uso diretto. La disciplina invece volete fare qualcosa voi stessi, continuate a leggere…
che regola queste problematiche (e cerca delle soluzioni ad esse) è
chiamata energy harvesting, letteralmente conservazione dell’ener- Energia eterna
gia, che consiste appunto nel conservare energia fino al momento Come detto in precedenza, in questo articolo ci concentriamo sull’e-
in cui è sufficiente ad essere usata per uno scopo concret. Fortuna- nergia solare, quindi il trasduttore è una cella ad energia solare.
tamente l’energy harvesting sta ricevendo sempre più attenzione Abbiamo cercato piccoli pannelli solari disponibili in un range di 30
negli ultimi anni. sterline/euro. Tutti i produttori specificano le dimensioni e i valori
Il diagramma a blocchi di un sistema energy harvesting è mostrato massimi di voltaggio e corrente. Se calcolate le cifre corrispondenti
nella figura 1. È necessario un trasduttore per convertire una parti- (corrente in volt divisa per l’area in centimetri quadrati), vedrete
colare forma di energia in elettricità. Il voltaggio deve essere alzato che c’è un grande varietà – da appena più di 2 W/cm2 per un pan-
a un livello utilizzabile e l’energia deve essere immagazzinata in un nello con un area di meno di 25 cm2 fino a un considerevole valore
ENERGY HARVESTING
gramma a blocchi, che può essere grande quanto volete. Tra poco a
1 8
parleremo ulteriormente di questo argomento. 2 7 VOUT = 2(V+) - 2VD
3 6
MAX1044
Retro technology 4 5 C1 C2
100533 - 13
mentato in modo soddisfacente con componenti a buon mercato.
In breve funziona nel modo seguente (vedi figura 4): X e X sono
segnali clock antifase. Quando X è basso, il voltaggio sul primo nodo
è Vin – Vd, dove Vd è la caduta di tensione ai capi del diodo. Quando Figura 3. Un MAX1044 configurato come raddoppiatore
X si alza, il voltaggio sarà Vx + (Vin – Vd), dove Vx sarà l’ampiezza di voltaggio (a) e come moltiplicatore di voltaggio (b).
ENERGY HARVESTING
x © C I out ¹
x
Vout " Vin N ª Vx Vd º Vd
C1 C2 C3 C4 Cn
« C C p
C C s osc »
f
Dn D n+1
Oltre a Vx, Vd e Vin, i termini di questa formula sono N (il numero di
Vi D1
1
D2
2
D3
3
D4
4 n Vo
stadi), C (il valore dei condensatori C1, C2, etc), Cp (la capacitanza
Cp Cp Cp Cp Cp Cs parassita), Iout (la corrente output), e fosc (la frequenza clock). Per i
più entusiasti la derivazione di questa formula può essere trovata
nei riferimenti[4] cercando un po’.
100533 - 14
Matematica applicata
La formula mostra chiaramente diverse cose. In primo luogo i nor-
Figura 4. Diagramma di base di un convertitore a iniezione mali diodi con caduta di tensione ai capi (Vd) di 0.6 V hanno un
di carica di Dickson. effetto fortemente dannoso sul risultato, ma questo problema può
essere mitigato usando diodi Schottky, che hanno una caduta di
tensione ai capi di soli 0.2 V (o 75 mV a bassi livelli di corrente).
C2
In secondo luogo la capacitanza parassita (Cp) di qualche dozzina
di picofarad è difficilmente irrilevante. Se il valore di C è mante-
Vi D1 D2 Dn D n+1 Vo nuto basso la pompa avrà bisogno di meno tempo per arrivare a
Ra Rb Rb Ra una capacità più elevata, ma d’altro canto riduce il contributo di
C1 Cn
Vx. Dato che Vx è uguale al voltaggio input, deve essere usato con
560R
560R
5k6
5k6
Cm Cm C1, C2 = 100n ... 200n parsimonia. È quindi meglio avere un valore C di molto superiore
a Cp (per esempio di 100 pF o 220 pF) in modo the il rapporto tra
5n6 5n6
T1 T2 C e C + Cp sia quasi pari a 1. In terzo luogo gli effetti di Iout possono
Cs
del segnale clock. Questo porta D2 a condurre finchè il voltaggio al Spazio di immagazzinamento cercasi
nodo 2 è Vin + (Vx – Vd) – Vd. Se diversi stadi di questo tipo si connet- Incoraggiati da questo risultato abbiamo incontrato una nuova
tono in serie, si può aumentare un basso voltaggio input a qualsi- sfida: l’immagazzinamento dell’energia. Per farla breve i conden-
asi livello desiderato. Abbiamo utilizzato un multivibratore astabile satori elettrolitici hanno bisogno di diverse ore per caricarsi, le bat-
(AMV) formato da transistor bipolari come fonte del segnale clock. terie diversi giorni ed entrambi perdono la maggior parte della loro
Il risultato è mostrato nella figura 5. I valori delle componenti pos- carica in una notte. Un condensatore elettrolitico è quindi un’op-
sono essere calcolati dalla formula per il voltaggio output: zione migliore, la domanda è quanto grosso dovrebbe essere.
La risposta potrebbe venire da questo calcolo:
I = C × dV/dt
V+ C = I × dt/dV
Ri
Per esempio, se Cs deve fornire una corrente di 1 mA e il voltaggio su
5M8
4M7
4u7 compiti più impegnativi. Caro? Per niente. Abbiamo trovato un dispo-
1%
sitivo 0.15-F per circa 6 sterline in una fiera dell’elettronica.
100533 - 16
Cane da guardia
Figura 6. Questo circuito monitora il voltaggio dei buffer (V+) e Gli ultimi passi del diagramma a blocchi sono il monitoraggio dei
accente il MOSFET quando è stata immagazzinata volt e l’interruttore dell’alimentazione. La difficoltà qui è che Cs deve
energia sufficiente. essere costantemente monitorizzato per vedere se ha accumulato
ENERGY HARVESTING
Conclusioni
In questo articolo abbiamo esaminato diverse idee che possono
essere utilizzate in accordo con i propri progetti. I transistor a ger-
manio sono ancora disponibili in quantità limitate, ma non sono
più prodotti (a meno che qualcuno non riscopra questa nicchia di
mercato). Tutti i circuiti possono essere costruiti facilmente come
prototipi, quindi non ci sono layout PCB in questo articolo.
(100533)
Link internet
1. http://focus.ti.com/docs/toolsw/folders/print/ez430-rf2500-seh.html Figura 9. Un pannello
solare offre da 0.2 a
2. www.cymbet.com/content/products-energy-harvesting.asp
1 V a un convertitore
3. www.maxim-ic.com/datasheet/index.mvp/id/1017 a iniezione di carica
4. Louie Pylarinos et al., Charge Pumps: An Overview, Department di Dickson a 17
of Electrical and Computer Engineering, University of Toronto stadi. Il motorino
inizia a funzionare
(www.scribd.com/doc/21060516/Charge-Pumps)
approssimativamente
5. http://www.maxim-ic.com/datasheet/index.mvp/id/1219 a 5 V.
FOTOGRAFIA
In quanto appassionato di orchidee, volevo fotografare questi bellissimi fiori durante la fase di apertura dei
petali, per capire ed ammirare la loro fioritura. Inizialmente ho provato utilizzando il telecomando della
mia macchina fotografica ma mi sono reso conto che non era abbastanza pratico. Leggendo le istruzioni
dell’apparecchio fotografico ho notato che i comandi per otturatore e messa a fuoco erano accessibili
attraverso un connettore a jack. Era proprio ciò di cui avevo bisogno…
FOTOGRAFIA
D2
1N4004
LCD1
IC1 +5V
D1 7805 K6
1 3 FOCUS
K1 4 x 20
1N4004 C1 C2 C3 C4
TRIGGER
2
8V - 12V
LED+A
LED-C
R/W
RS
POWER INPUT
VL
D0
D1
D2
D3
D4
D5
D6
D7
E
GND
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
GND
+5V
+5V +5V
C5 P1 R3
R1 C6
100n
10R
4k7
0W5
100n
20
10k
K2
1
+5V GND +5V
2
GND
1
MCLR/Vpp RC0
11 +5V
3 2 12
T1 BC337
RA0 RC1 TRIGGER
4 3 13
RA1 RC2 R7
5 4 14 R4 RE1 K4
14
RA2 RC3
3
1k
6 5 15
2
RA3 RC4
2k7
7 6 16
RA4 RC5
8 7 IC2 17
6
18
K3 RC7
PIC16F886
1 25 21 T2
RB4 RB0 R5
2 26 22
+5V RB5 RB1 68k
3 27 23
GND RB6/ICSPCLK RB2
4 28 24 BC547
100k
RB7/ICSPDAT RB3 R2 R9
5
100R +5V
OSC1
OSC2
ICSP C9
+5V
19
10
GND
4u7 FOCUS
X1 BZ1
R8
GND RE2 K5
14
3
S1 S2 S3 S4 IC3
1k
2
4 MHz
C7 C8 3
6
D4
8
22p 22p
+5V TSOP1138
1
T3
GND GND GND R6
3
4
68k
S5
BC547
100k
R10
2
1
FOTOGRAFIA
FOTOGRAFIA
LISTA COMPONENTI
Resistenze IC3 = TSOP1138, 38 kHz IR receiver
(5%, 0.25 W unless otherwise indicated) (e.g. Farnell # 4913036)
R1 = 4.7kΩ T1 = BC337
R2 = 100Ω T2,T3 = BC547
R3 = 10Ω, 0.5 W
R4 = 2.7 kΩ Varie
R5,R6 = 68kΩ BZ1 = piezo buzzer, lead pitch 7.62mm
R7,R8 = 1kΩ (e.g. Farnell # 1502726)
R9,R10 = 100kΩ RE1,RE2 = relay, miniature SPST-NO, 5 VDC
P1 = 10kΩ trimpot, horizontal (e.g. Farnell # 9561757)
K1,K4,K5 = PCB terminal block, lead pitch
Conduttori 5mm
C1 = 470μF 25V radial K2 = 8-pin pinheader, lead pitch 0.1 inch
C2,C3,C5,C6 = 100nF ceramic K3 = 5-pin pinheader, lead pitch 0.1 inch
C4 = 47μF 16V radial K6 = 2.5mm 3-way jack socket
C7,C8 = 22pF ceramic NP0 (e.g. Farnell # 1308867)
C9 = 4.7μF 16V radial LCD1 = LCD, 4x20 (e.g. Elektor # 050176-73)
S1-S4 = SPNO pushbutton
Semiconduttori (e.g. Farnell # 1555982)
D1,D2 = 1N4004 S5 = 2-element DIP switch
D3,D4 = LED, red, low current, 3mm X1 = 4MHz quartz crystal
IC1 = 7805, TO-220 case SPDIP28 socket for IC2
IC2 = PIC16F886-I/SP, SPDIP28 PCB, Elektor # 081184-1 [1]
Non è difficile costruire una rete di strumentazione wireless utiliz- definite come
zando la piattaforma Arduino. Useremo due stazioni per formare ingressi od
una rete (si veda la figura 1). La prima stazione è il nodo, che esegue uscite e viene
le letture dai sensori ed invia i risultati alla seconda stazione, che è inizializzata la
il gateway. Il nodo consiste in un modulo Arduino ed un modulo por t a seriale. L a
shield XBee. Il gateway consiste anch’esso di questi due moduli, più comunicazione seriale è
un modulo EtherShield per comunicare con Internet. I dati risultanti una parte importante degli
dalle misurazioni possono essere letti dal sito web Pachube[1]. sketch di Arduino. La maggior
parte dei dispositivi periferici la usa per
Arduino comunicare con il PC. La routine loop con-
Arduino è una piattaforma per microcontrollore open-source con tiene il programma vero e proprio, che controlla la lettura dei dati
un ambiente di sviluppo facilitato, basato su un microcontrollore o dei segnali dai singoli ingressi, la risposta ai segnali d’ingresso, ed
ad 8 bit AVR di Atmel. è usato principalmente da hobbisti ed artisti il pilotaggio delle uscite.
per creare progetti interattivi. La piattaforma Arduino ha una soglia
d’ingresso bassa. Non avete bisogno di sapere come programmare XBee
in linguaggio assembly o scrivere il vostro bootloader. Il linguaggio I moduli XBee rappresentano un modo comodo per aggiungere
di programmazione che si usa è molto simile al C, ma tutti i compiti la comunicazione wireless ad un progetto. I moduli prodotti da
difficili come ‘inizializzazione del microcontrollore e la comunica- MaxStream sono un’implementazione della tecnologia ZigBee svi-
zione con un PC sono già assolti. L’ambiente di sviluppo di Arduino luppata dalla ZigBee Alliance, un consorzio no-profit di fabbricanti
è basato su un programma detto Processing, usato da artisti grafici di chip, fornitori di tecnologia, OEM ed utilizzatori finali. La tecno-
per creare dei capolavori visuali. Include una libreria maneggevole logia ZigBee è pensata per facilitare la creazione di reti wireless di
con molte routine per aiutarvi ad ottenere velocemente dei risul- sensori poco costose ed a basso consumo. I moduli trasmettono i
tati utili. Il modulo Arduino possiede diverse porte digitali e degli dati con velocità fino a 250 kbps su distanze comprese tra i 30 ed i
ingressi analogici. 100 metri, a seconda della versione (1 mW o 10 mW) e delle condi-
Gli ingressi analogici usano il convertitore A/D del microcontrol- zioni ambientali. I moduli possono essere usati per rimpiazzare un
lore AVR. Alcune delle uscite possono essere pilotate nella moda- cavo di comunicazione seriale, ma possono anche essere controllati
lità pulse width modulation (PWM modulazione della larghezza tramite la modalità Application Programming Interface (API) per
d’impulso) Se aggiungete un piccolo filtro RC, il risultato è un bel formare delle reti wireless più complesse. I moduli sono configurati
segnale analogico. Le funzionalità di base possono essere estese con utilizzando dei comandi AT. Per l’emulazione di una linea seriale, è
dei moduli detti shields, che possono essere innestati nei connet- importante che entrambi i moduli siano configurati con lo stesso ID
tori del modulo Arduino. Sono disponibili shields per ogni sorta di di rete e lo stesso canale (CH).
applicazione, come video ed audio, joystick, MP3 e così via. Un pro- Per default, il parametro MY (l’indirizzo a 16 bit del modulo), il para-
gramma per il modulo Arduino è detto sketch, ed include una rou- metro DL ed il parametro DH sono posti a “0”. Ciò significa che
tine di setup ed una routine loop. Nella routine setup, le porte sono entrambi i moduli possono identificarsi l’un l’altro. I parametri DL
Questa sezione contiene articoli redatti dai lettori a scopo sperimentale e informativo.
I circuiti presentati in queste pagine non sono stati testati da Elektor.
XBee XBee
Arduino EtherShield
GND AN0 +5V Arduino
Sensor
10k
e DH specificano l’indirizzo di destinazione (DL = i 32 bit inferiori,
Router
DH = i 32 bit superiori). Questi determinano le opzioni di ricezione.
pachube Internet
Questi parametri possono essere configurati in vari modi. Se DH è
”0” e DL è meno di “0xFFFF”, qualsiasi modulo il cui parametro MY
corrisponde al valore di DL riceve i dati dal modulo trasmittente. Se
091092 - 13
DH è “0” e DL è “0xFFFF”, qualsiasi modulo riceve i dati trasmessi
da questo modulo. Se DH non è “0” o DL è maggiore di “0xFFFF”, i
dati sono ricevuti solo dai moduli il cui numero seriale corrisponde
all’indirizzo di destinazione del modulo trasmittente (SH del modulo
ricevente = DH del modulo trasmittente e SL del modulo ricevente
= DL del modulo trasmittente). Figura 1. La rete di strumentazione consiste in un nodo,
un gateway ed una piattafomra dati su www.pachube.com.
Shield d’espansione
In questo progetto usiamo uno shield già pronto detto EtherShield,
che fornisce al modulo Arduino le funzionalità per accedere ad Inter-
net. Questo modulo possiede un connettore RJ45 e può essere
collegato ad un router o ad un switch tramite un cavo UTP. Per il S2 Arduinoshield
JP3
modulo EtherShield è disponibile una libreria software separata. RX
RX
+5V A5
XBEE/USB IC1
Solitamente è possibile innestare diversi shield Arduino uno sopra TX
D2
78L03 +3V3
A4
A3
l’altro, fintanto che non vi siano conflitti tra gli ingressi e le uscite D3 S1
JP1
JP2 A2
D4 A1
utilizzati. Sebbene sia disponibile uno shield standard per il modulo D5
TX
XBEE/USB
C1 C2 C3
A0
D6
Arduino, esso pone un problema in quanto non può essere innestato D7
10u 10u 100n
6 15
PWM0/RSSI ASSOC/AD5/DIO5
regolatore integrato nel modulo Arduino. R2 R4 7
VREF
14 R3
8 13
1k
1k
15k
pin 1 (RX) e 2 (TX). Il modulo Arduino utilizza questi pin anche per RSSI ASSOC
Tipi di sensori
ANALOG IN
In questo progetto useremo gli ingressi analogici del modulo Ardu-
ino, il che significa che possiamo usare dei semplici sensori, come
una fotoresistenza per misurare l’intensità della luce. Un’altra appli- R1
10k
digitali è possibile misurare molte altre grandezze. Il numero delle di fabbrica di default in modo da operare nella modalità di emula-
porte può essere espanso tramite un dispositivo avente un bus I2C, zione seriale. Potete configurarli utilizzando una utility di emula-
come il PCA9535 di Texas Instruments. zione terminale in ambiente Windows, Minicom o Linux per inviargli
dei comandi Hayes AT, o utilizzando il programma X-CTU fornito da
Mettiamo insieme il tutto MaxStream[3]. Ciò non richiede nessun hardware particolare. Ponete
Come già menzionato, il nostro sistema consiste in due stazioni: entrambi i commutatori nella posizione USB e rimuovete il micro-
il nodo formato dal modulo Arduino e dallo shield XBee (figura controllore AVR dal modulo Arduino. Ora potete usare il collega-
4) ed il gateway formato dal modulo Arduino, dallo shield XBee mento USB per comunicare con il modulo XBee tramite il PC.
e dal modulo EtherShield (figura 5). Per primo inserite il modulo
EtherShield nel gateway Arduino, quindi inserite in cima ad esso Il firmware
il modulo shield XBee così che i suoi pin ed i commutatori siano Questo ci porta al firmware, o come vengono chiamati, gli sketch.
facilmente accessibili. Ponete entrambi i commutatori nella Lo sketch eseguito nel nodo (si veda il codice del programma nel
posizione USB quando volete programmare il modulo Arduino, package da scaricare[2]) è il più semplice. Brevemente, attende per
e poneteli nella posizione XBee quando volete trasmettere o un certo tempo, fa un’istantanea dei valori sugli ingressi analogici,
ricevere dati con il modulo XBee. Se volete solo ricevere dati dal e li invia tramite il collegamento seriale al modulo XBee. La descri-
modulo XBee, ponete il commutatore RX nella posizione XBee ed zione seguente è basata sul listato con le linee numerate fornito in
il commutatore TX nella posizione USB. Ciò vi permette di visua- un documento a parte. L’intervallo di tempo di lettura e di inoltro
lizzare le informazioni di debug nell’IDE tramite la porta console dei dati misurati è specificato alla linea 10. Qui è posto a 5 secondi,
seriale del modulo Arduino. che è l’intervallo più breve per l’invio di dati tramite Pachube avendo
Può essere utile inserire nella scheda dei connettori e dei ponticelli un account per uso non professionale. La linea 11 assegna un nome
al posto dei commutatori così che possiate interrompere il percorso unico al nodo. Questo nome non è al momento utilizzato, ma potete
del segnale TX tra i moduli Arduino ed XBee, il che è comodo per il usarlo nel gateway per distinguere tra nodi differenti. Nella routine
debug. I moduli XBee devono essere opportunamente configurati setup, alla linea 42 viene posta la velocità di trasmissione a 9600
per poter comunicare fra loro. Sono forniti con una configurazione baud (il valore standard per i moduli XBee). Inoltre, la comunica-
volta che è richiamata. Come risultato, quando il loop for alle linee
78-82 ha completato la sua esecuzione, è stata analizzata una linea
completa ed i valori corrispondenti dei sensori si trovano nella strut-
tura sensor. La funzione atoi converte un numero ASCII in un valore
intero. La connessione al sito Pachube è stabilita dalla funzione
pachubePost (linea 36) . Questa riceve la struttura sensor come
parametro d’ingresso. Il nome non è usato, ma potete usarlo per
selezionare un feed differente. Le linee 42-46 convertono i valori dei
sensori in valori separati da virgole. Il formato consiste nel numero
sequenziale del sensore e nel valore, separati da una virgola. Ciascun
sensore è su una linea separata. Le linee 49-61 gestiscono il trasferi-
mento effettivo dei dati tra il gateway ed il sito Pachube. La linea 49
stabilisce una connessione al sito Pachube a livello TCP.
Una volta disponibile questa connessione, le funzioni print e println
possono inviare dati al sito Pachube. La linea 52 emette un comando
PUT verso Pachube, insieme al nome del feed (FEED_ID). Il dato è
inviato come file CSV, che è il motivo per cui la chiave ha estensione
.csv. Per far ciò è usato il protocollo HTTP 1.1. Sono inviate anche
diverse linee header. La linea 53 invia l’header host, che indica che
il dato è inteso per l’host pachub.com. Questo costrutto permette
di ospitare più di un dominio su un singolo indirizzo IP. La linea 54
Figura 5. Il gateway, con una scheda adattatrice che permette di invia la API key. Pachube usa questa chiave unica invece di un nome
usare uno shield XBee insieme ad un modulo EtherShield.
utente e di una password. La linea 59 termina l’header con una linea
vuota, dopo la quale sono inviati i dati dei sensori tramite le linea
60. La lunghezza dei dati dev’essere la stessa del valore dichiarato
prima cosa riserva 256 byte dello stack come stringa C nella varia- nell’header Content-Length. Dopo questa operazione, il feed è stato
bile m. Ciò è seguito da un comando di stampa formattata (snprintf) fornito con i nuovi dati e dal sito web Pachube possono essere rica-
della stringa. Come la funzione printf (ed snprintf), questa macro vati i dati correnti e precedenti (l’history).
può ricevere un numero variabile di parametri. Ciò è indicato al com-
pilatore dalle parentesi (...) nella definizione della macro. Il costrutto Considerazioni finali
##__VA_ARGS__ espande questo numero variabile di parametri nel È facile mettere insieme una rete di strumentazione wireless unendo
codice che richiama snprintf. Se disabilitate la funzione di debug i moduli Xbee di Maxstream con i moduli Arduino. L’emulazione
commentando la linea 20, la macro _LOG viene espansa in una linea seriale permette di inviare e ricevere i dati con relativa facilità. Un
vuota (linea 25). Le linee 27 e 28 collegano la libreria Ethernet . Que- modulo EtherShield gestisce la connessione Internet. Sebbene sia
sta libreria è necessaria per usare il modulo EtherShield. La libreria possibile usare più di un nodo di sensori, dovete fare attenzione alle
string (linea 29) è necessaria per snprintf ed strncat, tra le altre cose. interferenze quando due nodi inviano i dati nello stesso momento.
La linea 30 specifica che devono essere letti sei sensori, e le linee È quindi preferibile passare all’uso dell’API e configurare una rete
31-34 definiscono la struttura sensor. mesh o a stella. Ciò richiede del software notevolmente più com-
Il dato ricevuto dal sensore remoto è trasformato in questa strut- plesso, sebbene l’hardware rimanga lo stesso.
tura. La linea 35 crea un oggetto client EtherShield: il client TCP, che (091092-I)
stabilisce una connessione a server sulla porta 80 all’indirizzo IP di
Pachube. Il nucleo dello sketch è la funzione loop alle linee 103-112,
che viene eseguita iterativamente. Le linee 105 e 106 definiscono
un buffer di caratteri (buf) per i dati letti dal nodo remoto. Il dato
è letto richiamando la funzione readRemoteSensors (linea 109).
Una volta ricevuta una linea completa, viene analizzata alla linea
110. La funzione parse converte il dato nella struttura sensor. La
funzione pachubePost alla linea 111 invia i dati convertiti al sito
Pachube. La funzione readRemoteSensors definita alle linee 85-97
legge i dati dalla porta seriale e li pone nel buffer (buf) finché non Internet links
viene ricevuto il carattere “newline” \n od il buffer è pieno (ciclo
while alla linea 90). La linea 91 controlla se ci sono nuovi dati sull’in- [1] www.pachube.com
gresso seriale. Se è presente un nuovo dato, è letto alla linea 92 e [2] www.elektor.com/091092
posto nel buffer, ed il puntatore al buffer i viene spostato di una
[3] www.digi.com/support/kbase/kbaseresultdetl.jsp?kb=125
posizione verso destra. Quando sono stati letti tutti i dati del buf-
fer, la routine pone l’indirizzo corrente del buffer a ‘0’ ed esce. La [4] www.arduino.cc/en/Main/ArduinoXbeeShield
funzione parse alle linee 67-84 usa la funzione strtok per analizzare [5] www.ladyada.net/make/xbee/arduino.html
i dati nella variabile buf. Questa suddivide la stringa ogni volta che
[6] www.faludi.com/projects/common-xbee-mistakes
incontra uno dei caratteri definiti nella variabile sep (separatore),
che in questo caso sono i due punti (:) e la virgola (,). [7] www.adafruit.com/index.
La funzione strtok ritorna il token od il carattere successivo ogni php?main_page=product_info&cPath=29&products_id=126
Hexadoku
Il puzzle con un pizzico di elettronica
Ecco un altro Hexadoku per mantenere in esercizio il vostro cervello. Inserite nello schema i numeri
esadecimali da 0 a F in modo che appaiano una sola volta in ogni riga e in ogni riquadro di 4x4.
Non arrendetevi subito, è un gioco che richiede molta pazienza...
70 02-2011 elektor
794103
rEtroniCS
Chauvin-Arnoux MD7
of the two currents: we have created an
analogue multiplier. The stationary coil
consists of a small number of turns of
large-diameter wire and is connected in
series with the device under test (DUT).
The moving coil has a large number of
turns of fine wire and is connected, via a
series resistor, in parallel with the DUT.
The first is called a ‘current winding’,
the second a ‘voltage winding’. This
very special voltmeter is the heart of
the commonest analogue wattmeters:
electrodynamic wattmeters.
76 11-2010 elektor
rEtroniCS
Retronics is a monthly column covering vintage electronics including legendary Elektor designs. Contributions, suggestions and
requests are welcomed; please send an email to editor@elektor.com
elektor 11-2010 77