Sei sulla pagina 1di 56

794104

DOMOTICA

Dolci risvegli
Alba programmata

Di Terjung Aike (Germania)

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

Personal Download for a, a | copyright Elektor


12 02-2011 elektor
794104

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

AVCC VCC AREF


K7 D5

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

K2 PC6 (RESET) PD3 (INT1) D4


BTA16- R15 6
C4 D2 PD4 (XCK/T0)
600BW
1k

IC2 14 11
100k

4 1 1N4148 PB0 (ICP) PD5 (T1)


F1 15 12
100n Sensor R13 PB1 (OC1A) PD6 (AIN0)
X2 16 13 1N4148
100R PB2 (SS/OC1B) PD7 (AIN1) +5V T4
17 R17
D3 K6 PB3 (MOSI/OC2)
2 1 18 470R
2A5 T 6 2 1N4148 PB4 (MISO) R11
4 3 19
PB5 (SCK) BC639
4R7

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

220u 100n 100n 22u 100n R/W


115

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.

Personal Download for a, a | copyright Elektor


elektor 02-2011 13
794104

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-

Personal Download for a, a | copyright Elektor


14 02-2011 elektor
794104

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)

Figura 3. Il modulo ricevitore DCF77 utilizzato


per la sincronizzazione precisa dell’ora.
Questo modulo è basato sul collaudato
integrato ricevitore Temic DCF77. Figura 4. Un prototipo completamente assemblato da Elektor.

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

Personal Download for a, a | copyright Elektor


elektor 02-2011 15
794111

TERMOMETRO A INFRAROSSI

Termometro senza contatto


Siete pronti a usare un termometro
a infrarossi?
Di Christian Tavernier (Francia)

È facile al giorno d’oggi


trovare sensori economici
per termometri senza contatto,
chiamati anche termometri
a infrarossi. Questi sensori,
che misurano la radiazione
infrarossa degli oggetti,
rende possibile la costruzione
casalinga di termometri senza
contatto con prestazioni
paragonabili a quelle
delle versioni commerciali.

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

Personal Download for a, a | copyright Elektor


16 02-2011 elektor
794111

TERMOMETRO A INFRAROSSI

OPA ADC DSP PWM

rilascia un segnale molto basso, non line- 81101 STATE MACHINE


are, quindi difficilmente utilizzabile in modo
diretto. Questo segnale è prima amplificato
Voltage
da un amplificatore operazionale stabiliz- Regulator
90302
zato, poi convertito a digitale in un con-
verter di tipo delta-sigma prima di essere 100707 - 12

applicato a un processore di segnale digi-


tale (DSP). Dopo un filtraggio rumore e il
lavoro del DSP i valori di temperatura pos- Figura 1. Diagramma a blocchi del sensore MLX90614
sono essere utilizzati in forma digitale.
Per realizzare una semplice interfaccia, il
sensore può fornire le informazioni con un 1 7 1 1 8 1 1 7 1 1
SMBus a due vie (virtualmente identico all’
S Slave Address Wr A Command A Sr Slave Address Rd A
I²C) o in forma di un segnale PWM (modu-
lazione a variazione della leggerezza d’im-
pulso). Anche se quest’ultimo modo è
più semplice da gestire con l’MLX90614, i 8 1 8 1 8 1 1
segnali PWM sono più difficili da proces- Data Byte Low A Data Byte High A PEC A P
sare. Inoltre in modalità PWM la scala 100707 - 13
è di 0,14°C e no
non 0,02°C come nella
modalità SMB
SMBus.
A seconda d della versione questo Figura 2. Uno dei sensori di lettura RAM.
IC può fun
funzionare a 3 o a 5 V ed
è oppor
opportuno decidere quale
utilizz
utilizzare prima di iniziare
– sf
sfortunatamente noi
l’a
l’abbiamo deciso a Tabella 1. Comandi principali di lettura temperatura.
la
lavori in corso e vi Comando Codice (esadecimale)
la
lasciamo immaginare Temperatura ambiente 0x03
i risultati…
Temperatura, sensore IR 1 0x04

Parlare Temperatura, sensore IR 2 0x05


al sensore Temperatura ambiente linearizzata 0x06
Se decidiamo di Temperatura sensore 1 linearizzata 0x07
com
comunicare con il sen-
Temperatura sensore 2 linearizzata 0x08
sore in m
modalità SMBus – che
abbiam fatto nel nostro
è quello che abbiamo
sintas da usare è relati-
termometro – la sintassi
vamente semplice dato che non volevamo tura, seguiti da un polinomio di controllo, noto bus I²C, ci sono solo delle sottili diffe-
modificare i parametr
parametri interni, stabiliti in PEC nella figura 2, che non verrà utilizzato. renze nel protocollo, senza alcuna impor-
perfettam
fabbrica ma perfettamente adatti a questo Le temperature, espresse in Kelvin, sono tanza nel nostro caso, e da qualche piccola
uso. Il sensore è programmato per leggere rappresentate da parole a 15-bit. Se chia- diversità nei livelli elettrici che, fortunata-
la temperatura ambientare e la temperatura miamo la parola da 15-bit di output N, e mente, i microcontrollori PIC con interfaccia
degli oggetti, tutto quello che bisogna fare consideriamo la scala del sensore in moda- I²C sono in grado di gestire se si programma
è leggere da due diversi posti nella sua RAM lità SMBus, la temperatura misurata T correttamente un bit nei registri di controllo
interna quale è realizzata usando un SMBus espressa in K è data da: T = 0.02 × N dell’interfaccia MSSP.
simile a quello nella figura 2. Ma è decisamente più comodo leggere una
Dopo aver inviato al sensore l’indirizzo temperature in gradi centigrade (Celsius), e Circuito del termometro
slave, tutto ciò che bisogna fare è inviargli il software del termometro usa la formula: Chiaramente l’alto grado di integrazione
un comando scelto tra quelli indicati nella del sensore semplifica il circuito del nostro
tabella 1 finchè si considera la sola misura T = 0.02 x N − 273.15 termometro, che può quindi essere basato
della temperatura. Inviare nuovamente su un semplice microcontroller PIC con
l’indirizzo slave permette di ricevere due Non c’è motive di preoccuparsi se non si un’interfaccia I²C. In questo articolo è stato
bytes, contenenti LSB e MSB della tempera- conosce l’SMBus, è identico al 99% al più scelto il 16F876A.

Personal Download for a, a | copyright Elektor


elektor 02-2011 17
794111

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:

Personal Download for a, a | copyright Elektor


18 02-2011 elektor
794111

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

2 4 100u 25V 100n


SELECT SENSE S2
R6 R4 R2 R1
3 LT1300 5
SHDN I LIM
100R BACKLIGHT
10k

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

Figura 3. Circuito completo del nostro termometro.

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;

Sub procedure Read_temp(dim com as byte)


I2C1_Start() ‘ issue I2C start signal
I2C1_Wr(0x00) ‘ send address (device address + W)
I2C1_Wr(com) ‘ send command
I2C1_Repeated_Start() ‘ issue I2C signal repeated start
I2C1_Wr(0x01) ‘ send address (device address + R)
SensorLow = I2C1_Rd(1) ‘ Read temp. low byte (acknowledge)
SensorHigh = I2C1_Rd(1)‘ Read temp. high byte (acknowledge)
PEC = I2C1_Rd(1) ‘ Read PEC (not used)
I2C1_Stop() ‘ issue I2C stop signal
SensorRaw = SensorLow + (SensorHigh << 8) ‘ Build temp. word
End sub

Personal Download for a, a | copyright Elektor


elektor 02-2011 19
794111

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 è

Personal Download for a, a | copyright Elektor


20 02-2011 elektor
794106

GEOLOCALIZZAZIONE

Geolocalizzazione senza GPS


Dove sono? Dove sto andando?
Di Clemens Valens (Editore di Elektor Francia)

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

Personal Download for a, a | copyright Elektor


22 02-2011 elektor
794106

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-

Personal Download for a, a | copyright Elektor


elektor 02-2011 23
794106

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

ANT ANT 100809 - 14 100809 - 13 B aumentare le probabilità di ottenere la posi-


zione corretta, il sistema tiene conto della
storia recente dei movimenti del ricevitore
e dei fattori ambientali che hanno un’in-
Figura 2. Un gruppo di antenne Figura 3. La lunghezza delle frecce fluenza diretta sulla mappa RSSI, come il
rende possibile la misura dell’angolo corrisponde al tempo di arrivo al ricevitore
numero di persone presenti o la tempera-
di incidenza di un segnale radio e, del segnale inviato dai tre trasmettitori A,
tura ambiente. Su Internet potete vedere
conseguentemente, B, e C. Rappresenta la misura delle distanze
un’animazione di RADAR[1].
della sua direzione. tra i trasmettitori e il ricevitore.
Per produrre quest’ animazione (basata su
vere misurazioni), è stato necessario garan-
tire che il ricevitore ricevesse almeno quat-
ratamente la posizione. da un trasmettitore che emette uniforme- tro trasmettitori Wi-Fi (punti di accesso)
Il vantaggio della multilaterazione è che il mente in tutte le direzioni è inversamente alla volta. Ekahau, un’azienda destinata alla
ricevitore non deve tener conto dell’ istante proporzionale al quadrato della distanza (in ricerca all’Università di Helsinki (Finlandia),
in cui sono stati trasmessi i segnali — ovvero effetti l’area di una sfera equivale a 4πr²). offre un’applicazione software gratuita[2] ,
trasmettitore e ricevitore non richiedono la Quindi più ci allontaniamo dal trasmetti- basata sull’RSSI, per produrre facilmente
sincronizzazione. I segnali, e quindi l’elet- tore, più debole sarà il segnale. una mappa della copertura Wi-Fi di casa
tronica, si possono mantenere semplici. I Così il segnale RSSI ci dà una misura della vostra. Con una griglia o con l’aiuto di una
sistemi LORAN e DECCA, ad esempio, lavo- distanza tra ricevitore e trasmettitore, e può mappa preparata precedentemente, il sof-
rano in questo modo. quindi essere utilizzato per la trilaterazione. tware (ben 100 MB — è arduo capire perchè
In realtà, la trilaterazione RSSI non è così debba pesare così tanto) traccia un’imma-
LPS con l’impiego di Wi-Fi e RSSI semplice, dato che questo segnale non è gine ricca di colori mentre andate a spasso
Con l’avvento del Wi-Fi, oggi troviamo reti sufficientemente preciso. Infatti la dipen- per casa con il vostro computer (figura 5).
ovunque e qualcuno ha pensato di utiliz- denza dell’RSSI dall’intensità del segnale Potete usarlo per fare esperimenti con un
zarle per creare un LPS. In questi casi spesso radio non necessariamente è inversamente robot dotato di ricevitore Wi-Fi che forni-
la “L” di locale è limitata a un edificio o giu- proporzionale al quadrato della distanza dal sce l’RSSI.
sto a poche stanze. Quasi tutti questi pro- trasmettitore; inoltre l’RSSI è influenzato da
getti utilizzano l’indicatore di intensità ostacoli quali pareti o soffitti. LPS commerciali
segnale RSSI disponibile nella maggior parte Un modo per rimediare è costruire una Alcune aziende vendono LPS o RTLS basati
dei ricevitori. L’energia in un segnale radio mappa dell’RSSI sull’intera area nella quale su reti wireless. Gli RTLS sono stati standar-
dizzati nella ISO/IEC 24730. Sono spesso uti-
lizzati per rilevare oggetti o persone (come
nel Grande Fratello). In questo scenario la
posizione del ricevitore non si determina
C per la navigazione, ma per poter essere tra-
smessa a un sistema principale. Gli ospedali,
ad esempio, sono molto interessati a questi
P2 P tipi di sistema per evitare di perdere traccia
A A A
dei propri pazienti o della strumentazione.
Di seguito vi sono alcuni esempi.
B B
P1 RTLS Ekahau[3], il prodotto di punta dell’a-
zienda menzionata in precedenza, utilizza
il Wi-Fi per determinare la posizione di per-
A B C sone e oggetti. Il sistema lavora a grandi
100809 - 11
linee come il RADAR di Microsoft, usando la
mappatura RSSI, ma è stato esteso, tra l’al-
Figura 4. Trilaterazione bidimensionale. In 3D si deve aggiungere un terzo trasmettitore tro, con la nozione di “percorsi problema-
per determinare la posizione senza ambiguità. tici” (un oggetto non può passare attraverso

Personal Download for a, a | copyright Elektor


24 02-2011 elektor
794106

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).

le pareti) e “ punti di rilievo” (un oggetto


non può essere in più posti nello stesso
tempo).
Inoltre, ciò rende possibile limitare la
potenza di calcolo richiesta, dato che lo
stesso sistema è capace di tracciare migliaia
di oggetti alla volta. Il fabbricante vende
anche tag Wi-Fi per consentire la traccia-
tura remota di un oggetto o di una persona.

Zeb ra Te ch n o l o g i e s [4] è proprieta-


ria di WhereNet, che distribuisce l’RTLS
WhereLAN.
Questo prodotto è compatibile con il Wi-Fi,
ma aggiunge dei punti di accesso proprie-
tari che utilizzano la differenza nel tempo di
arrivo del segnale radio (DToA), invece del
segnale RSSI. Il sistema WhereLAN è com-
patibile con lo standard ISO/IEC 24730-2.
Zebra offre anche una tecnica radio pro-
prietaria a banda Ultra-Larga (UWB): il Dart Figura 5. copertura Wi-Fi all’interno e attorno alla casa dell’autore, disegnata con l’ausilio
UWB. Questo sistema lavora come un radar del software HeatMapper. Sorprende scoprire che i vicini hanno un punto di accesso Wi-Fi
con i transponder. Una rete di trasmettitori nascosto in giardino (“nascosto” significa che l’ SSID è mascherato)!
invia brevi impulsi di onde elettromagneti-
che UWB per “svegliare” dei tag attivi RFID
in modo che possano essere letti. Questo La rete di rilevatori tiene sotto controllo
sistema offre una precisione di 30 cm (12 anche le condizione del segnale RF adat-
pollici) e distanze di lettura fino a 100 m tandosi automaticamente alle variazioni
(300 piedi). ambientali.
(100809-I)
Un RTLS basato su ZigBee viene venduto
da Awarepoint [5]. In questo sistema, l’edi-
ficio è equipaggiato con dei rilevatori la cui
posizione viene indicata su una mappa. Gli Link Internet
oggetti da controllare sono equipaggiati [1] research.microsoft.com/en-us/
con un trasmettitore che invia periodica- um/people/bahl/MS_Projects/
mente un segnale – ogni 5 secondi se vi è RadarDemo/demo.htm
movimento, ogni minuto se il dispositivo [2] www.ekahau.com/products/
heatmapper/overview.html
è stazionario. Il rilevatore utilizza quindi
[3] www.ekahau.com
questo segnale per determinare accura- Figura 6. Questo tag RTLS Wi-Fi
[4] zes.zebra.com/technologies/
tamente la posizione del trasmettitore. (802.11 b/g/n) attaccato a un oggetto,
location/index.jsp
La posizione viene riportata all’unità cen- permette di farlo localizzare nell’intervallo
[5] www.awarepoint.com
trale, dove il database di tutti gli oggetti di circa 50 m (150 ft.) all’interno e fino
[6] www.skyhookwireless.com
sotto controllo può essere consultato. a 150 m (450 ft.) all’aperto.

Personal Download for a, a | copyright Elektor


elektor 02-2011 25
794107

PROGRAMMAZIONE

LeggeroFAT
Una libreria open source per il file system
FAT dedicata ad applicazioni embedded
Di Stephen Bernhoeft (UK)

Il file system FAT sta diventando


universalmente il file system de facto
ctto
per la lettura. Un numero crescente
te
e
di architetture e implementazioni
open-source ne fanno uso.
Prima di decidere di utilizzarlo
però è necessario per lo sviluppatore
r capire
re
come funziona il meccanismo del sistema di File
Allocation Table. Prima di decidere, leggete qui!

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.

Personal Download for a, a | copyright Elektor


26 02-2011 elektor
794107

PROGRAMMAZIONE

Media

VBR FAT chain


[Optional MBR]

FAT32
FAT16

MyFile txt 20 0003


Sub0 10
modbus c 20

Root Directory File

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)

Cluster of sectors (First sector @0002)

(First sector @0009)


100569 - 11

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.

Personal Download for a, a | copyright Elektor


elektor 02-2011 27
794107

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.

Sarà molto probabile che il vostro sistema non rispetti


p le specifi
p che sull’host controllor e che in tal modo il
vostro circuito non sia considerato
un SD host product. Per carità,
non prendete per buone le
nostre parole; questo è quello
che abbiamo capito. Nel dubbio,
chiedere alla SD Card Association.
Elektor non accetta nessuna
responsabilità per qualsiasi
perdita o problema causato
dall’interpretazione impropria
della regolamentazione dell’ SD
Card Association.
www.sdcard.org/developers

Personal Download for a, a | copyright Elektor


28 02-2011 elektor
794107

$IILGDELOLWjHSUHFLVLRQH
QHOSDOPRGLXQDPDQR
FRQLOQXRYR
+36

cod. HPS140

Oscilloscopio palmare adatto per tutte le esigenze,


dal laboratorio professionale, ai servizi di assistenza tecnica,
all impiego hobbistico. Ideale quando la praticità
è un requisito essenziale!

• Display LCD con retroilluminazione bianca


• 10 MHz di banda passante
• Frequenza di campionamento a 40 MS/s
Display LCD retroilluminato Caricabatterie USB
• 0,1 mV di sensibilità
• Da 1 mV a 20 V/div regolabile in 14 passi
• Base dei tempi da 250ns a 1h/div
• Funzione di memorizzazione del segnale (2 memorie)
• Auto set up dei parametri
• Batteria ricaricabile NiMH integrata
• Fornito con caricabatterie USB

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‡*DOODUDWH 9$  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.

Delle opzioni di configurazione sono disponibili per bilanciare le


prestazioni per l’utilizzo della RAM. In ogni caso non esiste nessuna
configurazione che esegue l’ottimizzazione rispetto alla dimensione Conclusioni
del codice. Per esempio la scrittura dei file è sempre disponibile. EFSL è piuttosto diffusa – per esempio di vede AN10916 di NXP
Il grosso del contributo da parte dell’utente è di definire e AN3102 di ST. Non sembra pero essere lo standard per FatFs.
una struttura e quattro funzioni (vedi esempi atmega128.h, Preoccupa il fatto che la nuova versione, 0.3.6, sembra abbandonata.
atmega128.c). Dei file equivalenti per il PIC (pic_efsl.h, sd.c) sono Dall’altra parte, il codice sorgente attuale e la documentazione sono
stati scritti per questo articolo. di ottima qualità e il fatto che molti produttori famosi citino EFSL
nei loro application note è rassicurante.
Nel config.h, abbiamo biamo scelto
“#define IOMAN_ Internet
NUMBUFFER sourceforge.net/projects/efsl/file
les/
1 ”. Il manuale
raccomanda FatFs
un buffer per FatFs ha una collezione impressionante
imp di progetti.
oggetto del File- Oltre al codice,
cod ci sono gli schemi
System, due l’inte
per l’interfaccia a MMC/SD, Hard
buffer per file, I e Compact Flash. Le
Disk IDE
un extra buffer pi
piattaforme gestite sono
per operazioni di ATMega, H8, LPC2368,
ricerca/riscrittura PIC24, μPD70F3706 e
e tre buffer extra w
win32 (per PC). Ci sono
per facilitare le d
dettagliate statistiche
operazioni su riguard
riguardanti le dimensioni del
liste di file. Per il codice e i ben
benchmarks di prestazione
nostro programma di test (una apertura di file con ricerca e listato), per queste piattaforme con le varie configurazioni di libreria
equivale a circa 7x512 = 3584 bytes. Questo non è supportabile dal sul sito web FatFs. C’è la possibilità di privilegiare la dimensione
target del nostro esempio, così utilizziamo un solo buffer. del codice oppure le funzionalità, sebbene alcune funzioni siano
raggruppate. Così (f_truncate, f_stat, f_getfree, f_unlink, f_
Licenza mkdir, f_chmod, and f_rename) non possono essere abilitate
“…you are allowed to statically link against the library without having to individualmente.
license your own code as GPL as well”. Possiamo liberamente utilizzare Adattare FatFs alla proprie esigenze è simile al processo eseguito
la libreria senza che il risultato debba essere liberamente disponibile. per EFSL. L’attività chiave è definire sei funzioni – dichiarate in

Personal Download for a, a | copyright Elektor


30 02-2011 elektor
794107

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)

diskio.h. Quattro di queste sono identiche a quelle necessarie per Licence


EFSL. Quando si testa FatFs con il compilatore C18 è necessario Nessuna restrizione di utilizzo.
correggere il codice in ff.c per evitare errori run time:
Conclusioni
int chk_chr (const char* str, int chr) Petit FatFs è utile sui piccoli sistemi ai quali serve principalmente la
capacità di lettura, come lettori MP3 e
deve essere ridefinito come cor
cornici digitali.

tr, int chr)


int chk_chr (static char rom *str, Internet
elm-chan.org/fsw/
Questa è una specifica del compilatore. ff/00index_p.html

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).

Personal Download for a, a | copyright Elektor


elektor 02-2011 31
794107

PROGRAMMAZIONE

Tabella 1. Un confronto fra alcune librerie FAT open source


Libreria Compilatore Target Codice Dati Commenti
C18 v3.35 PIC46J50 34292 1258
EFSL0.2.8 C30 v3.23 PIC24FJ256GB110 15516 1266
ARMCC STM32F107xx 8338 ¾
C18 v3.35 PIC46J50 21572 658
Read & Write, _FS_MINIMIZE = 1.
C30 v3.23 PIC24FJ256GB110 9099 826
8386 /
WinAVR AVR
12700
6980 /
CH38 H8
10686
7395 /
C30 PIC24
11376
FatFs R0.08
4930 /
V850ES CA850 ~600 Read & Write, _FS_MINIMIZE = 3/0
7730
5600 /
SHC SH-2A
8592
6636 /
WinARM ARM7TDMI
10520
4923 /
VC6 x86
7545
La dimensione del codice appare notevolmente ridotta.
Questo è probabilmente dovuto alla mole di lavoro fatta
nel codice di interfaccia che effettua l’accesso al supporto
sd-reader C30 v3.23 PIC24FJ256GB110 5616 204
specifico. Il file sd_raw.c utilizza 4341 byte. Per confron-
to, il codice di interfaccia EFSL era 2649 byte, e quello per
FatFs era 1071 byte.
C18 v3.35 PIC46J50 24648 2256
File i/o library Spazio per i dati considerevole.
C30 v3.23 PIC24FJ256GB110 35958 2258

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

Personal Download for a, a | copyright Elektor


32 02-2011 elektor
794113

AUDIO & VIDEO

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

Prodotti e Servizi di Elektor • Firmware (free download): • Link nell’articolo


• Circuito stampato: # 100371-1 # 100317-11.zip
• Microcontrollore ATtiny861 program- • Manuale (free download): 100317-W.pdf Oggetti raggiungibili attraverso www.
mato: # 100371-41 • Piano di montaggio del PCB: # 100371-1.pdf elektor.it/100371

Personal Download for a, a | copyright Elektor


elektor 02-2011 33
794113

AUDIO & VIDEO

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

del CS sono state realizzate mediante filo +5V


+5V +5V
o mediante gli stessi pins dei componenti. K1
V+
Lo strumento utilizzato per lo sviluppo del C9
MISO 1
2
software è la suite AVR Studio 4 mentre la K8 R11 R1
SCK 3
100n

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

Cominciando dall’alimentazione, si può 100k 5V1 100n

dire che ci sono due possibilità di alimentare 400mW BC237 100371 - 11

il dispositivo: utilizzando la batteria interna


da 9V oppure utilizzando una alimentazione Figura 1. Schema
esterna. Un apposito switch è stato aggiunto
in questa sezione del circuito come visibile ai data sheets è stata però necessaria un Tip 1602H) ha una caratteristica relativa
in figura 1. Il prototipo dell’autore utilizza 6 immediata revisione della scelta perché il alla tensione utilizzata per regoalre il con-
batterie tipo AAA anziché una batteria 9V 7805, per stabilizzare correttamente la sua trasto del display stesso: è necessaria una
per avere una autonomia maggiore rispetto tensione di uscita, necessita di una tensione tensione negativa. In questo caso, una ten-
a quella ottenibile con le 9V tipo IEC 6LR22. di ingresso di almeno 7V. Ovviamente que- sione di -1.4V sul pin di regolazione contra-
Nelle normali condizioni operative, il cir- sta non è una buona cosa se si pensa di ali- sto è risultata essere quella che dà i migliori
cuito consuma 10mA con la retroillumina- mentare il circuito a batteria. Inoltre il 7805 risultati. Un oscillatore basato su di un 555,
zione del display LCD spenta. Con la retroil- non è famoso per la sua lata efficienza... un paio di diodi e condensatori elettrolitici
luminazione accesa il consumo passa a circa Come conseguenza di tutto ciò, un LP2954 costituiscono il circuito utilizzato per gene-
100mA. Per risparmiare energia, la retroillu- è sembrato molto più appropriato. Questo rare una tensione di -5V poi connessa al
minazione viene automaticamente spenta è un regolatore protetto contro l’inversione potenziometro di regolazione contrasto
se nessun pulsante è premuto per almeno della tensione di batteria ed ha una bassa quando JP1 è in posizione 1-2. Invece, se si
10 secondi. Per riaccenderla, basta premere caduta di tensione; caratteristiche che aiu- utilizza un LCD ‘normale’ con una tensione
uno dei pulsanti del dispositivo. tano ad aumentare la durata delle batterie. di regolazione contrasto positiva, sarà pos-
Dato che il display ed anche il resto del circu- Altro particolare legato alla alimentazione sibile non montare la parte di circuito indi-
ito sono alimentati a 5V, l’autore si è orien- è la progettazione di un circuito aggiuntivo cata sopra e lasciare JP1 in posizione 2-3.
tato verso un regolatore di tensione stan- richiesto dalla scelta dell’autore di utiliz-
dard. Ovviamente la prima scelta è stata il zare un display LC. Sfortunatamente, il tipo Una misurazione dello stato di carica delle
ben noto 7805. Dopo una prima occhiata di display scelto sul catalogo Farnell (Power- batterie è realizzata utilizzando R11, R12 e

Personal Download for a, a | copyright Elektor


34 02-2011 elektor
794113

AUDIO & VIDEO

LED è gestita dal microcontrollore tramite


LISTA COMPONENTI il FET a canale N T2.
La gestione della tastiera è implementata
Resistenze T1 = BC547
R1,R10 = 4.7kΩ T2 = BS170 utilizzando un ingresso ADC (ADC6) invece
R2,R13,R14 = 1kΩ IC1 = LP2954IT di svariati pin di input digitali. In questo
R3,R4,R15 = 10kΩ IC2 = ATTINY861-20SU, programmato, modo è stato sufficiente utilizzare un micro-
R5,R9 = 100kΩ Elektor # 100371-41 controllore con un basso numero di pin e di
R6,R12 = 470kΩ IC3 = LM358P
conseguenza con un package più piccolo.
R7 = 47kΩ IC4 = CNY74-2
R8 = 1Ω La tensione che l’ADC legge dipende dal
R11 = 1MΩ Varie tasto premuto e quando nessun tasto è pre-
R16 = 68kΩ K1 = 6-pin (2x3) connettore, muto, l’ADC rileva 5V. Tutti i canali ADC lavo-
R17 = 15kΩ passo 2.54mm (0.1’’) rano a 10 bit e questo significa che qualun-
R18 = 5.6kΩ K2,K3,K4,K5,K7,K10,K11 = 3-pin connettore, que valore letto sarà compreso tra 0 e 1023.
R19 = 1.5kΩ passo 2.54mm (0.1’’)
P1 = 10kΩ trimpot K6,Bt1 = connettore a 2 pin , Con 5V all’ingresso, l’ADC leggerà 1023.
P2 = 100kΩ trimpot passo 2.54mm (0.1’’) Se un tasto viene premuto, la tensione che
S1 = deviatore SPST leggerà l’ADC è calcolabile con la seguente
Condensatori S2,S3,S4,S5 = interruttore a pulsante tipo formula:
C1,C2 = 22pF MC32830 da 6mm
C3,C6,C7,C8,C9 = 100nF K8 = connettore da stampato per jack
C4,C5 = 10μF 25V radiale da 3.5 mm, stereo, tipo Lumberg 1503 09
VADC = VCC – (R15 × VCC) / (R15 + RSW)
C10 = 100pF K9 = connettore da stampato per jack
da 2.5 mm, stereo, tipo Lumberg 1501 06 dove VCC = 5 V, R215 = 10 kΩ and RSW =
Semiconduttori X1 = quarzo da 8MHz 1.5 kΩ, 5.6 kΩ, 15 kΩ or 68 kΩ in funzione
D1 = BPW16N foto transistor LCD1 = LCD, 2 x 16 caratteri tipo Lumex del tasto premuto.
D2 = 5.1V 400mW diodo zener LCM-SO1602DSF/A
I quattro pulsanti hanno le seguenti fun-
zioni: MENU, MINUS, PLUS e ENTER, con le
quali è possibile regolare le impostazioni del
TimeClick.
ADC5 è utilizzato per la lettura del sensore.
Il sensore è connesso mediante una presa
jack da 3.5-mm. Sulla punta è presente il 5V
per alimentare il sensore mentre sull’anello
esterno sarà presente il segnale di uscita del
sensore. Lo schermo è messo a massa.
Nello schema sono inclusi tre tipi di sensori:
un sensore di luce, un sensore di suono, e un
sensore di vibrazioni (piezo). Ovviamente il
tipo di sensori utilizzabili può essere esteso
a qualunque sensore desiderato. Per evi-
tare errori di connessione il connettore di
ingresso e quello di uscita del sensore hanno
dimensioni differenti.
Il segnale di uscita è disponibile su di una
presa jack da 2.5 mm, come in alcune
Figura 2. Disposizione dei componenti macchine fotografiche Canon. Per ragioni
di sicurezza, l’uscita del microcontrol-
una porta libera dell’ADC (ADC9) presente sto microcontrollore lavora a 1MHz. Per lore è connessa al jack mediante un
all’interno del microcontrollore. questa scelta sono disponibili due opzioni: fotoaccoppiatore.
Il cuore di tutto il dispositivo è un ATMEL usare un quarzo a 1MHz o uno a 8MHz Il dispositivo può essere usato con molti tipi
Attiny861 che soddisfa perfettamente le e impostare il fuse CKDIV8 durante la di macchina fotografica (vedere l’elenco
esigenze. La ragione principale per cui l’au- programmazione. Guida alle macchine fotografiche compa-
tore ha scelto questo microcontrollore è la Il display LCD 2X16 è utilizzato per visualiz- tibili); sarà necessario avere solamente il
disponibilità della versione SOIC-20. Questo zare le informazioni e consente all’utente di giusto cavo di adattamento e la macchina
‘package’ non è troppo difficile da saldare configurare il dispositivo. Il display è usato fotografica sarà in grado di funzionare con
ma è ancora relativamente piccolo. Que- in modalità 4 bit a la retroilluminazione a il protocollo implementato.

Personal Download for a, a | copyright Elektor


elektor 02-2011 35
794113

AUDIO & VIDEO

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.

Personal Download for a, a | copyright Elektor


36 02-2011 elektor
794113

AUDIO & VIDEO

Figura 3. Collegamenti del dispositivo. Figura 4. Impostazione corretta dei fusibili. Figura 5. Programmazione del microcontrollore.

2 Quindi connettere l’AVR Dragon/ISP ad • Livello batteria espresso in passi da 25%


una porta USB del PC in grado di fornire Battery level • Modo Sensore
più di 300mA. Sensor mode • Modalità operativa
3 Alimentare il TimeClick. Operation mode • Profilo attivo
Selezionare la voce di menù Tools -> Pro- Active profile • Numero di foto scattate
Frames count
gram AVR -> Connect per scegliere la corretta • Impostazioni di misura
porta di comunicazione col programma- • Impostazioni modo B
tore e premere Connect. La figura 3 rappre- • Impostazioni blocco dello specchio
senta la figura che dovreste vedere in questo • Impostazioni modalità esposizione a
momento. È importante che la modalità di forcella
programmazione selezionata sia ISP e che la Message area
frequenza per l’ISP sia 125KHz (< ¼ del clock Metering mode Alcune di queste informazioni sono presen-
del microcontrollore). Se tutto è configurato Bulb mode tate utilizzando caratteri non standard e
come descritto, alla richiesta di Read Signa- Mirror lock definiti nel software. Premere il tasto MENU
ture verrà risposto OK. Exposure Bracket mentre è visualizzata la videata principale
100371 - 12
Ora è possibile l’impostazione dei fusibili permette all’utente di accedere al menu
al loro valore corretto come evidenziato in Figure 6. Information shown on display. dove è possibile effettuare le configura-
figura 4. SPIEN attivo è un default di fab- zioni. Il menu è intuitivo e la sua navigazione
brica. Se si utilizza un quarzo da 8 MHz occor- predefinite, selezionare, per caricare l’area molto semplice. Premere MENU per tornare
rerà attivare anche il fusibile CKDIV8 come relativa alla memoria EEPROM, il file Time- indietro, PLUS e MINUS per cambiare i valori
mostrato nella immagine. È anche impor- Click_Configured_eeprom.hex (anch’esso e ENTER per andare avanti.
tante impostare correttamente la sorgente contenuto all’interno del file ZIP) e premere Per avere indicazioni più complete sulle
del clock che in questo caso deve essere il tasto Program. operazioni possibili con TimeClick vedere
‘External Crystal 3.0-8.0MHZ’. Il Brown-out il manuale utente disponibile presso[1] e
detection permette di evitare la corruzione Operazioni Software presso il sito dell’autore[2].
dei dati in EEPROM quando le batterie sono Quando il microcontrollore è programmato,
quasi scariche e quindi la soglia è impostata a il dispositivo è pronto per l’utilizzo. È possi-
4.3V. Infine è quindi possibile programmare bile ricaricare una configurazione di default (100371)
il microcontrollore. Tutti i files necessari sono per l’intero dispositivo tenendo premuto il
contenuti nel file ZIP associato a questo arti- tasto ENTER mentre si accende il TimeClick.
colo (100371-11.zip, vedere[1]). Scaricare Questa operazione cancellerà tutte le con-
e scompattare questo file. Nell’area della figurazioni precedentemente salvate com- Link nternet
memoria flash selezionare il file TimeClick. presa quella impostata utilizzando il file di [1] www.elektor.it/100371
hex e premere il tasto Program (figura 5). cui prima.
Alla fine del processo il dispositivo ripartirà. Nella videata principale sono visibili le [2] http://timeclick.no.sapo.pt
Se volete utilizzare le impostazioni EEPROM seguenti informazioni: [3] www.enjoyyourcamera.com

Personal Download for a, a | copyright Elektor


elektor 02-2011 37
794100

MICROCONTROLLORI

All-Soft-555
Un ATtiny nelle vesti di un 555 in
configurazione monostabile e astabile

Del Dr. Thomas Scherer (Germania)

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’).

Personal Download for a, a | copyright Elektor


38 02-2011 elektor
794100

MICROCONTROLLORI

Caratteristiche
Monostabile (iMono): Astabile (iMulti):

• Multivibratore monostabile digitale • Multivibratore astabile digitale


configurabile configurabile
• 3 modalità: non retriggerabile, • 4 modalità: Veloce, valore fisso, VCO e
retriggerabile ed impulso esteso VCDC
Se si tentasse di replicare tutte le funzio-
nalità del 555 in un unico programma cer- • Fronte di trigger programmabile: salita • Ingresso di gate definito via software,
tamente la capacità di memoria del micro o discesa attivo alto o attivo bass
diventerebbe un problema (in particolare • Uscite invertenti e non invertenti • Forma d’onda reale o invertita
nel caso dei controller meno potenti). In • Larghezza impulso da 0.8 μs a 524 s • Frequenza regolabile via software o
qualunque applicazione si vorrà utilizzare • Sorgente BASIC documentato tramite tensione di controllo
l’All-Soft-555, lo si utilizzerà unicamente o • Duty-Cycle regolabile via software o
come monostabile o come astabile, quindi tramite tensione di controllo
è meglio suddividere il programma in due • Frequenza da 10 MHz a 1.91 MHz
parti distinte. Nel nostro caso i 2 programmi • Sorgente BASIC documentato
si chiameranno iMono e IMulti (quest’ul-
timo suona tecnicamente bene all’orec-
chio, sebbene si tratta in ambedue i casi
dell’emulazione di un multivibratore). L’u- iMono iMulti
nica cosa che non è purtroppo possibile
replicare è la piedinatura del 555: l’ATtiny 1 RESET VCC 8 1 RESET VCC 8
utilizza il pin 4 per la massa, mentre il 555
utilizza il pin 1. Per questa ed altre ragioni 2 XTAL1 TRIGGER 7 2 XTAL1 CV 7
si è quindi preferito non mantenere la pie-
3 XTAL2 OUT- 6 3 XTAL2 OUT 6
dinatura originale.
4 GND OUT+ 5 4 GND GATE 5
Programma iMono
La piedinatura del monostabile mostrato ATtiny25 ATtiny25
in figura 1 è abbastanza convenzionale.
Quando è necessario utilizzarlo in circu- Figura 1. Assegnazione dei pin Figura 2. Assegnazione dei pin
iti che necessitano di una grande preci- di un ATtiny25 programmato di un ATtiny25 programmato
sione e/o la generazione di impulsi stretti come monostabile. come astabile.
si può collegare ai pin 2 e 3 un quarzo. Le
capacità parassite del quarzo fanno si che
si possono omettere gli usuali condensa- Tramite software di possono programmare t = 98 × 1024 × 8 / 8 MHz = 100.352 ms
tori da 10..15pF di carico su ognuno dei 2 le seguenti funzionalità:
pin, riducendo così il numero di compo- • fronte del trigger: salita o discesa. In questo modo si ottiene, con ragione-
nenti aggiuntivi. Per la maggior parte degli • ticks: da 2 a 255 oppure da 1 a 256 vole precisione, un impulso monostabile di
impieghi saranno sufficienti gli oscillatori timer ticks 100 ms, sebbene non possa essere garantita
presenti all’interno del micro (da 8 MHz e • clock prescaler: 1/2/4/8/16/32/64/256 la precisione dell’oscillatore interno. Nella
da 128 kHz). I test dell’autore ci dicono che • timer prescaler: 8/64/256/1024 tabella 1 vengono mostrati gli impulsi che si
possiamo aspettarci una precisione della • oscillatore: interno/esterno possono ottenere utilizzando diverse com-
frequenza entro il 10%. Il pin 7 rappresenta binazioni dei quattro parametri. La prima
l’ingresso di trigger, mentre i pin 5 e 6 sono, L’ATtiny25 dispone solamente di un timer colonna in corsivo, che utilizza un timer
rispettivamente, le uscite normale e inver- 8-bit e può quindi contare da 1 a 256 ticks prescaler di 8, non fornisce risultati di pre-
tita. I commenti nel codice sorgente iMono del timer. Un prescaler divide l’oscillatore cisione e, a causa della sua limitata capacità
indicano con esattezza quali valori devono per generare la frequenza effettiva di clock di elaborazione, può contare un minimo di 2
essere modificati per adattare il funziona- (feff). Il timer ha un prescaler che, a sua volta, tick invece di 1 come negli altri casi.
mento del programma alle vostre neces- è pilotato dal clock effettivo. La lunghezza
sità. Il firmware non accetta parametri non dell’impulso di uscita è perciò data da: Programma iMulti
validi. L’utente può scegliere tra le seguenti La piedinatura dell’astabile iMulti viene
3 modalità di funzionamento: lunghezza impulso = ticks × clock prescaler mostrata in figura 2. Non è identica a
• non retriggerabile x timer prescaler / clock quella della versione monostabile e rivela la
• retriggerabile differenza dei ruoli delle 2 versioni. Anche
• estesa Utilizzando l’oscillatore a 8 MHz e impo- qui si può collegare un quarzo ai pin XTAL1
stando il prescaler clock a 8 si ottiene una e XTAL2 quando è necessaria una fre-
Nell’ultima modalità, l’ingresso di trig- feff di 1 MHz. quenza di uscita più elevata o di maggiore
ger aumenta la larghezza dell’impulso Impostando il prescaler del timer a 1024, con- precisione. I 2 oscillatori interni, che gene-
monostabile. tando 98 ticks, sarà generato un impulso di: rano 8 MHz e 128 kHz dovrebbero essere

Personal Download for a, a | copyright Elektor


elektor 02-2011 39
794100

MICROCONTROLLORI

Tabella 1. i555 alias iMono

20 MHz extern Ticks: 2 256 1 256 1 256 1 256


Clockdiv feff (Hz) Delay Prescale: 8 Prescale: 64 Prescale: 256 Presc.: 1024
1 20 M 0,5 μs 0,8 μs 102 μs 3,2 μs 819 μs 12,8 μs 3,28 ms 51,2 μs 13,1 ms
2 10 M 1 μs 1,6 μs 205 μs 6,4 μs 1,64 ms 25,6 μs 6,56 ms 102 μs 26,2 ms
4 5M 2 μs 3,2 μs 410 μs 12,8 μs 3,28 ms 51,2 μs 13,1 ms 205 μs 52,4 ms
8 2,5 M 4 μs 6,4 μs 819 μs 25,6 μs 6,56 ms 102 μs 26,2 ms 410 μs 105 ms
16 1,25 k 8 μs 12,8 μs 1,64 ms 51,2 μs 13,1 ms 205 μs 52,4 ms 819 μs 210 ms
32 625 k 16 μs 25,6 μs 3,28 ms 102 μs 26,2 ms 410 μs 105 ms 1,64 ms 419 ms
64 312,5 k 32 μs 51,2 μs 6,56 ms 205 μs 52,4 ms 819 μs 210 ms 3,28 ms 839 ms
128 156,25 k 64 μs 102 μs 13,1 ms 410 μs 105 ms 1,64 ms 419 ms 6,56 ms 1,68 s
256 78,125 k 125 μs 205 μs 26,2 ms 819 μs 210 ms 3,28 ms 839 ms 13,1 ms 3,36 s
8 MHz intern Ticks: 2 256 1 256 1 256 1 256
Clockdiv feff (Hz) Delay Prescale: 8 Prescale: 64 Prescale: 256 Presc.: 1024
1 8M 1,2 μs 2 μs 256 μs 8 μs 2,05 ms 32 μs 8,19 ms 128 μs 32,8 ms
2 4M 2,3 μs 4 μs 512 μs 16 μs 4,10 ms 64 μs 16,4 ms 256 μs 65,6 ms
4 2M 4,5 μs 8 μs 1,02 ms 32 μs 8,19 ms 128 μs 32,8 ms 512 μs 131 ms
8 1M 9 μs 16 μs 2,05 ms 64 μs 16,4 ms 256 μs 65,6 ms 1,02 ms 262 ms
16 500 k 19 μs 32 μs 4,10 ms 128 μs 32,8 ms 512 μs 131 ms 2,05 ms 524 ms
32 250 k 38 μs 64 μs 8,19 ms 256 μs 65,6 ms 1,02 ms 262 ms 4,10 ms 1,05 s
64 125 k 75 μs 128 μs 16,4 ms 512 μs 131 ms 2,05 ms 524 ms 8,19 ms 2,10 s
128 62,5 k 150 μs 256 μs 32,8 ms 1,02 ms 262 ms 4,10 ms 1,05 s 16,4 ms 4,19 s
256 31,25 k 300 μs 512 μs 65,6 ms 2,05 ms 524 ms 8,20 ms 2,10 s 32,8 ms 8,39 s
128 kHz intern Ticks: 2 256 1 256 1 256 1 256
Clockdiv feff (Hz) Delay Prescale: 8 Prescale: 64 Prescale: 256 Presc.: 1024
1 128 k 80 μs 125 μs 16 ms 500 μs 128 ms 2 ms 512 ms 8 ms 2,05 s
2 64 k 160 μs 250 μs 32 ms 1 ms 256 ms 4 ms 1,02 s 16 ms 4,10 s
4 32 k 320 μs 500 μs 64 ms 2 ms 512 ms 8 ms 2,05 s 32 ms 8,19 s
8 16 k 640 μs 1 ms 128 ms 4 ms 1,02 s 16 ms 4,10 s 64 ms 16,4 s
16 8k 1,25 ms 2 ms 256 ms 8 ms 2,05 s 32 ms 8,19 s 128 ms 32,8 s
32 4k 2,5 ms 4 ms 512 ms 16 ms 4,10 s 64 ms 16,4 s 256 ms 65,5 s
64 2k 5 ms 8 ms 1,02 s 32 ms 8,19 s 128 ms 32,8 s 512 ms 131 s
128 1k 10 ms 16 ms 2,05 s 64 ms 16,4 s 256 ms 65,5 s 1,02 s 262 s
256 500 20 ms 32 ms 4,10 s 128 ms 32,8 s 512 ms 131 s 2,05 s 524 s

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.

Personal Download for a, a | copyright Elektor


40 02-2011 elektor
794100

MICROCONTROLLORI

Tabella 2. i555 alias iMulti

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

Personal Download for a, a | copyright Elektor


elektor 02-2011 41
794100

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

Personal Download for a, a | copyright Elektor


42 02-2011 elektor
794105

ELETTROCARDIOGRAFO SENZA FILI

ECG senza fili


« Ti mando il mio cuore...con lo ZigBee »

M. Denoual, O. Clouard, M. Sligard, B. Hu, N. Bessot, S. Moussay (Francia)

L’integrazione tra elettronica e biologia è da sempre


una sfida entusiasmante. Il progetto qui proposto
è abbastanza semplice da realizzare e dovrebbe
permettere di familiarizzare con alcuni aspetti
dell’ultima nata tra le tecnologie senza fili, la ZigBee.

pericoli per il paziente. Questa particolare L’elettronica


Caratteristiche aspetto ha ispirato il nostro progetto, utile La realizzazione si compone di due parti
tecniche per monitorare in diretta l’attività degli principali: una scheda di acquisizione del
• Risoluzione ECG a 8 bit sportivi. segnale ECG ed una di ricezione, connessa
ad un PC, per la sua visualizzazione. Un terzo
• Comunicazione tramite ZigBee
Scelta della tecnologia senza circuito è proposto per la messa a punto e la
• Portata di 100 metri in campo aperto
fili ZigBee validazione del sistema di acquisizione e di
• Utilizza moduli XBee
Sviluppato per motivi di costo, per sempli- trasferimento senza fili del segnale e consi-
• Niente codice da scrivere cità di implementazione e per i suoi con- ste in un generatore elettronico di segnale
• interfaccia computer tramite seriale sumi contenuti, lo standard ZigBee è subito ECG simulato.
• Circuiti stampati identici apparso perfetto per questo progetto.
per trasmettitore e ricevitore Le schede di acquisizione/
La velocità di 250 kbit/s è ampiamente ricezione
sufficiente per la trasmissione del segnale Le figure 1 e 2 danno rispettivamente la
cardiaco, che non ha una larga banda pas- sinottica della scheda d’acquisizione ed
Tutti i numerosi progetti per l’acquisizione e sante. Inoltre la portata dei moduli XBee[3] il suo schema elettrico. A partire dai tre
la visualizzazione del segnale ECG che sono che abbiamo scelto, che è di 100 metri elettrodi (due di misura ed uno di riferi-
stati fino ad oggi proposti hanno in comune in terreno aperto e di 30 metri in luoghi mento, vedere il riquadro sul segnale ECG),
il vincolo della sicurezza dell’utilizzatore. chiusi, è sufficiente per monitoraggi in un primo stadio analogico è incaricato di
palestre e stadi. amplificare e filtrare il segnale prima della
Come abbiamo fatto anche noi, lo stadio sua digitalizzazione da parte del converti-
di alimentazione deve essere sempre rea- Tale portata potrebbe poi essere estesa tore A/D a 8 bit, integrato nel modulo XBee.
lizzato con batterie o pile, ma in più l’ado- anche a 1 Km, scegliendo dei moduli più Per semplicità, abbiamo fatto la scelta di ali-
zione di una trasmissione senza fili risolve potenti e un collegamento in rete con dei mentare tutti i componenti a 3,3 V, che è la
di fatto il problema dell’isolamento galva- ripetitori, per poter addirittura seguire tensione richiesta dal modulo XBee stesso,
nico, eliminando alla radice tutti i potenziali manifestazioni sportive all’aperto. scegliendo per motivi di compattezza bat-

Personal Download for a, a | copyright Elektor


44 02-2011 elektor
794105

ELETTROCARDIOGRAFO SENZA FILI

Amplification Filtre Filtre Module


Entrée passe-haut passe-bas de
G=7 G = 1 Fc = 0.15Hz G = 142 Fc = 102Hz communication

080805 - 12
Référence Contre-réaction
référence

Figura 1 Vista della scheda di acquisizione.

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

C7 C1 C2 3.3V 3.3V 1 20 RB0


VCC AD0/DIO0
2 19
R8 DOUT AD1/DIO1
47u 47u 100n 3 18
C14 FTDI DIN/CONFIG AD2/DIO2
360R

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

Figura 2 schema elettrico della scheda di acquisizione.

Personal Download for a, a | copyright Elektor


elektor 02-2011 45
794105

ELETTROCARDIOGRAFO SENZA FILI

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)

Relazione fra l’attività elettrica misurata e le fasi di un ciclo cardiaco.


Il picco R misura solo pochi millivolt. Il range di frequenze utile Systole ventriculaire 080805 - 11

del segnale ECG va da 0,1 a 100 Hz.

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

Personal Download for a, a | copyright Elektor


46 02-2011 elektor
794105

ELETTROCARDIOGRAFO SENZA FILI

pin 20 del modulo XBee, è stato anche inse-


rito uno stadio passivo di reiezione della 50
Hz, che in realtà potrebbe essere saltato
se ci troviamo in un ambiente non molto
disturbato. L’alimentazione a 3,3 V serve
anche come riferimento per il convertitore
ADC da portare al pin 14 del modulo XBee.

Il ricevitore è costituito da una scheda di


acquisizione senza la parte acquisizione. In
effetti basta un cavetto convertitore USB-
TTL (ad esempio vedi e-choppe rif. 080213-
72, ma attenti che si tratta della versione a
3,3 V) e un moduletto XBee per portare i
dati al PC. Questo cavetto sarà poi utile per
programmare il modulo XBee stesso. La Figura 3 Interfaccia del programma X-CTU di configurazione dei moduli Xbee.
parte ricezione consiste quindi unicamente
nel configurare questo modulo per mezzo
di un cavetto seriale.

Configurazione dei moduli XBee Filtre Diviseur Signal ECG


La configurazione si effettua, come detto, Circuit passe-haut de tension
astable de 2500 simulé
con un cavetto USB_TTL e con il programma G = 1 Fc = 3.2Hz
gratuito X-CTU[4]. Per default la comunica-
080805 - 13
zione seriale si instaura a 9600 bit/s ed è
sufficiente collegare il moduletto, alimen- Figura 4 Vista del simulatore di segnale ECG.
tarlo e lanciare il programma (figura 3).
La scheda Modem Configuration dà accesso
diretto anche in modifica ai contenuti dei
registri del modulo. In questa stessa scheda
c’è anche il tasto Read, che permette la let- +5V
tura della configurazione corrente dei regi-
stri, che possono essere modificati diret-
Ra
tamente per mezzo di un menù a discesa R7 R10
680k

dell’interfaccia oppure per mezzo di immis- 8 4


470k

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

TRIG OUT 330k


memorizzati definitivamente sul moduletto 555 150n 1u
VECGmoins
6
tramite il comando Write. THR
GND CV R4 R5 R8 R9
D2
1 5
120R
330k

150k

150k

Nota: al primo avvio, il programma X-CTU C4 C5


1N4148
potrebbe richiedere di scaricare una ver- 2u2 10n
sione aggiornata del Modem, secondo
il modello di XBee in vostro possesso. Il GND +5V
bottone Download new version… gestisce
automaticamente questo aggiornamento, K1
C8 C9
lasciando a voi il compito successivo di
scegliere, tra le nuove versioni di Modem, 100n 10u
quella che vi permetterà di comunicare col K5 K3 K4

vostro moduletto per mezzo dei menù a


080805 - 18
discesa Function Set e Version. Ma prima di GND

configurare i moduletti è necessario identi-


ficarli per poterli riconoscere anche visiva-
mente, provvedendo poi ad assegnargli un Figura 5 Schema elettrico del simulatore di segnale ECG.

Personal Download for a, a | copyright Elektor


elektor 02-2011 47
794105

ELETTROCARDIOGRAFO SENZA FILI

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.

Configurazione del modulo della scheda


di recezione.
• Dalla sezione Networking & Security: que-
sto modulo agisce da master nella tra-
smissione e va posto CE=1. Il suo indirizzo
è configurato da DL=0x567 e MY=0x1234.
• Dalla sezione I/O Settings : IU (I/O Output
Enable) viene abilitato il comando di atti-
vazione degli I/O (1-ENABLED).
• Dalla sezione I/O Line Passing : IA (I/O
input address) è settato a 0x5678, che
corrisponde all’indirizzo del modulo della
scheda di acquisizione. PO (PWMO con-
figuration) può essere attivato (2-PWM
OUTPUT), ciò che permette di osservare
con l’oscilloscopio il segnale ECG in tran-
sito a livello della scheda di recezione,
dopo un filtraggio passivo a 200 Hz sull’u-
scita PWM sul pin 6.

Simulatore di segnale ECG


Questo circuito (figure 4 e 5) permette
di caratterizzare e validare l’insieme della
catena in tutta sicurezza durante lo svi-
luppo. Esso genera un segnale le cui carat-
teristiche, in termini di periodo, durata
dell’impulso ed ampiezza sono comparabili
a quelle del segnale ECG reale.

Personal Download for a, a | copyright Elektor


48 02-2011 elektor
794105

ELETTROCARDIOGRAFO SENZA FILI

Questo segnale ECG artificiale è generato


a partire da un NE555 in configurazione
astabile con l’aggiunta di pochi compo-
nenti passivi. I segnali di uscita sono posti
intorno ad un potenziale medio di 1,2 V gra-
zie ai ponti di resistenze R10-R9 e R7-R8, in
modo da poter essere interfacciati diret-
tamente con la scheda di acquisizione. Gli
impulsi sono creati con la capacità C6 a par-
tire dal segnale d‘uscita del 555.
Il diodo seleziona uno dei picchi la cui
ampiezza è portata nell’ordine dei millivolt
dalle resistenze R6 ed R5.

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.

(080805) Figura 7 Segnale ECG reale visualizzato su un PC con un programma LabVIEW.

Personal Download for a, a | copyright Elektor


elektor 02-2011 49
794110

TERMOMETRO

Termometro
a tubo nixie
Display di temperatura retrò
Di Dieter Laues (Germania)

In questo articolo descriveremo l’unione di un moderno microcontroller


con la classica tecnologia dei display in un nuovo indicatore
di temperatura. In questa chiusa trasparente il dispositivo abbellirà
qualsiasi camino e può anche fungere da luce notturna.
Un sensore esterno permette la visualizzazione della temperatura
in qualsiasi luogo.

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.

Personal Download for a, a | copyright Elektor


50 02-2011 elektor
794110

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)

Dispositivo campione dell‘autore

+180V *
R4 R5
22k

22k
V1 V2
Nixie IN16 Nixie IN16
1

+5V 0123456789 0123456789


5

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

74141 100n 74141


VCC

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.

Personal Download for a, a | copyright Elektor


elektor 02-2011 51
794110

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.

Personal Download for a, a | copyright Elektor


52 02-2011 elektor
794110

TERMOMETRO

Ora bisogna permettere


mettere a C4 di scaricare Figura 3. Il circuito stampato prototipo testato
e sistemare i tubi. bi. Sulla parte posteriore da Elektor Labs.
ttamente al centro dietro
di ogni tubo, esattamente
al vetro c’è una striscia che
indica pin 1 (vedi anche la
scheda tecnica). Può uò essere Conclusioni
nserire
un po’ difficile inserire Il circuito genera alti vol
voltaggi interna-
tica lun-
tredici fili di identica mente, ed è quindi
quin importante
ghezza nei buchi del usare una custodia
circuito stam- isolan senza parti
isolante
pato, quindi è di me
metallo esposte.
una buona idea Si dovrebbero
ffe-
tagliare i fili a diffe- usare socket
renti lunghezze in modo isolanti e viti
che ognuno di essi ssi sia leg- d nylon o,
di
germente più corto rto del succes- alt
in alternativa, gli
sivo, come le canne ne di un organo. A adattato e il sensore
adattatori
questo punto è facileacile inserire i fili uno tempe
della temperatura pos-
ndo dal più lungo. Infine
alla volta, iniziando colle
sono essere collegati in modo
posizionare i tubi bi verticalmente e saldare permanente usando cavi ben iso-
le connessioni. Ora inserire i driver IC dei lati con un occhiello per i buchi nella
icrocontroller nei rispet-
tubi Nixie e i microcontroller per ss
custodia e una fascetta di fissaggio. Anche
tivi socket. Quando do si riattacca l’alimenta- un socket dovre
le connessioni al DS1820 dovrebbero essere
atura dovrebbe comparire
zione, la temperatura jack per il sen- disp
isolate o in alternativa il dispositivo con il
sui display. sore della tem- sensore può essere richiuso in un termo-
perature e l’altro per retraibile La ricompensa per tutto questo
retraibile.
Custodia la presa dell’alimentazione. I bordi laterali sforzo sarà il piacere di vedere dei numeri di
Il prototipo è stato montato in un tubo sono provvisti di una sede per viti M3 all’al- un arancione caldo, a volte tremolante che
acrilico di 80 mm di diametro tagliato a tezza esatta per il braccio di supporto, che illumineranno il vostro soggiorno!
75 mm di lunghezza. Questo tipo di tubo deve essere filettato almeno da un lato. (090784)
è difficile da trovare nei negozi fai da te, Poi i socket sono stati collegati ai rispettivi
ma è possibile comprare attraverso negozi punti sul circuito stampato del sensore e
online un’ampia selezione di dimensioni e dell’alimentazione e il tutto è stato posto
spessore. È importante tagliare il tubo in nel tubo. I bordi laterali sono stati avvitati
Link internet
modo perfettamente perpendicolare agli ai supporti interni da fuori usando viti M3 e
assi perché qualsiasi imprecisione può poi uniti al tubo in acrilico. Con un piccolo, [1] www.elektor.it/090784
risultare spiacevole alla vista, anche se è ma efficace, aggiustamento del dispositivo (pagine web per questo progetto)
relativamente facile lavorare sull’acrilico si riesce afare in modo che il tutto sia leg- [2] www.atmel.com/atmel/acro-
con della carta vetro. germente inclinato verso l’alto, in modo che
bat/doc0368.pdf (Scheda tecnica
sia più facile vedere i tubi Nixie da una posi-
AT89C2051)
Una sega circolare è il miglior strumento zione superiore.
per tagliare il tubo, ma se necessario l’ope- [3] http://datasheets.maxim-ic.com/en/ds/
razione può essere effettuata a mano, per A causa del calore generato dai tubi e dai DS18S20.pdf (Scheda tecnica DS1820)
esempio usando un seghetto con lama di regolatori del voltaggio non è consigliabile [4] http://www.tube-tester.com/sites/nixie/
metallo. Un porta stampo a forma di U è inserire i sensori della temperatura sul circu-
data/in16.htm (informazioni sul tubo
una buona guida per il taglio. ito stampato o dentro la custodia. Per misu-
IN-16)
I bordi laterali sono stati effettuati con delle rare la temperatura ambientale è meglio
ruote in legno comprato in un negozio fai piazzare il sensore lontano dal dispositivo [5] http://gadget.mda.or.jp/pdf/K155ID1
da te, con diametro pari a 100 mm. Con un all’estremità di un filo. Ovviamente il ter- (Scheda tecnica K155ID1)
singolo taglio si è creato un piano, dove si mometro può essere usato anche per altri [6] www.onsemi.com/pub_link/
appoggia l’unità. I bordi laterali possono scopi come, per esempio, misurare la tem- Collateral/MC34063A-D.PDF (Scheda
essere pitturati o effettuati in acrilico con peratura all’interno di un altro dispositivo
tecnica MC34063)
spessore di circa 4 mm. (magari quell’amplificatore a tubi che hai lì
Verranno poi fatti due buchi nel tubo, uno di fianco?). [7] www.die-wuestens.de/ (Per i tubi Nixie)

Personal Download for a, a | copyright Elektor


elektor 02-2011 53
794109

ENERGY HARVESTING

Risparmiare con l’Energy Harvesting


Anche una piccola
quantità può essere
importante
Di Rolf Blijleven (Olanda)

L’energia alternativa è argomento di grandi


discussioni. In questo articolo descriveremo diverse
opzioni per alimentare circuiti con l’energia solare.
Come si può vedere è possibile arrivare a risultati
soddisfacenti con un investimento modesto
e un po’ di luce solare. E inoltre, una volta
che funziona, l’energia è gratuita.

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

Personal Download for a, a | copyright Elektor


54 02-2011 elektor
794109

ENERGY HARVESTING

di 12 W/cm2 per un pannello all’incirca della stessa misura. Se date


un’occhiata ai prezzi potrete vedere che non sempre i modelli con Vi
Transducer k * Vi Storage Load
prezzi più alti sono i migliori. Quindi sarebbe meglio visitare diversi Vs
negozi online e usare un po’ delle conoscenze matematiche di base.
La produzione per unità di luce incidente (watt/lux) è raramente
specificato, ed è un peccato perché è un parametro molto impor-
Vs > x ?
tante. Dalle misure su un pannello con un prezzo di 4 euro abbiamo
notato che il valore di 200 mA a 1 V promesso sulla confezione era 100533 - 11

raggiungibile solo con illuminazione perpendicolare in un giorno


senza nubi. Con luce artificiale o tempo coperto non era in grado di Figura 1. Diagramma a blocchi di un sistema di energy harvesting.
produrre circa 0.02 mA a 0.2 V.

Attenzione alla differenza


La maggior parte delle componenti elettroniche necessitano di a b
almeno 3 V per funzionare, mentre i motori di piccola dimensione Vi Vi
necessitano almeno 5 V. Quindi la differenza tra ciò che un pannello
solare può fornire e quello che serve per l’uso pratico e da circa 3 Ce Cs Ce Cs
V in su. Ovviamente si può colmare questo spazio usando un pan-
nello solare di dimensioni maggiori o collegandone diversi in serie
o in parallelo, il che farà arrivare comunque al voltaggio necessa-
rio. Comunque sono possibili anche altre soluzioni, che ci porte-
ranno al secondo blocco del diagramma descritto in precedenza. 100533 - 12

Due opzioni sono descritte sotto.


Figura 2. Principio operativo di moltiplicazione del voltaggio
La prima è basata sul convertitore IC di voltaggio Maxim Max1044[3]. con un condensatore. Ce è collegato all’alimentazione
Come illustrato nella figura 2a e 2b, collega un condensatore nella fase ‘a’ e in serie con Cs nella fase ‘b’. Il voltaggio output
esterno Ce alternativamente in parallelo con il voltaggio input Vin e risultante è –Vi, e il voltaggio totale tra input
in serie inversa con il condensatore Cs. La corrente operativa dell’IC e output è raddoppiato.
è approssimativamente 30 μA, che è circa 50 μA in meno del suo
predecessore l’ICL7660, che è completamente pin-compatible. Il
circuito illustrato nella figura 3 raddoppia il voltaggio dal pannello
solare e, con più MAX1055 operanti a cascata potrete moltiplicare
ulteriormente il voltaggio di input (figura 4). In questo caso Ce ha
un valore di 10 μF e Cs è il dispositivo di immagazzinamento nel dia- V+

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

Non eravamo soddisfatti di un voltaggio input di soli 1.5 V.


Dovrebbe essere possibile raccogliere voltaggi più bassi di 1 V e pre-
feribilmente anche meno del voltaggio soglia del transistor, cioè 0.6
b
V. Dopo un certo lavoro da detective abbiamo scoperto la soluzione
mostrata nella figura 5. Il principio non è nuovo. È basato sull’o- V+

pera di Cockroft e Walton negli anni ’30, con ulteriori modifiche di


1 8 1 8 1 8
Dickson negli anni ’70. La tecnica porta il nome di Dickson. Il con- 2 7 2 7 2 7

vertitore a iniezione di carica di Dickson sta avendo un rinnovato 10u


3 MAX1044 6
10u
3 MAX1044 6
10u
3 MAX1044 6
4 1 5 4 2 5 4 3 5 VOUT = -n(V+)
interesse negli ultimi anni perchè può essere usato (in una forma
migliorata) come unità separata in un IC per aumentare il voltag-
gio al resto dell’IC al livello desiderato[4]. Inoltre, può essere imple- 10u 10u 10u

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).

Personal Download for a, a | copyright Elektor


elektor 02-2011 55
794109

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

essere minimizzati scegliendo una frequenza clock più alta possibile.


* * *
Con un AMV costruito usando transistor BC550C l’energia utile può
100533 - 15 essere immagazzinata a voltaggi di 0.6 V e più. Possiamo fare ancora
meglio? Su eBay abbiamo trovato transistor di tipo AC175 e con essi
Figura 5. Moltiplicazione del voltaggio con un AMV il circuito inizia a lavorare a circa 200 mV (grazie a un’idea di Vladi-
e un convertitore a iniezione di carica di Dickson. mir Mitrovic pubblicata nel numero di Elektor del Dicembre 2009).
Voltaggi di 200 mV possono essere raccolti se l’AMV è costruito Una volta che l’AMV inizia a lavorare continuerà ad operare finchè il
con transistor di germanio. voltaggio input non si abbasserà a circa l’80% del livello necessario
per iniziare a funzionare.

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

Rt Cs può scendere da 5 V a 2.5 V nel processo, ci serve un condensatore


1% 10M Load
1% elettrolitico con un valore di 0.8 mF (1 mA ´ 2 s ¸ 2.5 V), quindi due
T3 condensatori da 4700 μF collegati in parallelo sono più che sufficienti.
D
* Due secondi possono sembrare pochi, ma tenete a mente che un ATtiny
Hys
Ref 1N4148 * (per esempio) può operare con anche solo 200 μA e può sicuramente
Rh
fare qualcosa di utile in due secondi, come riportare una lettura in un
MAX931
Cs network ZigBee. Supercaps e altri dispositivi possono essere usati per
1M

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

Personal Download for a, a | copyright Elektor


56 02-2011 elektor
794109

ENERGY HARVESTING

abbastanza energia, ma allo stesso tempo questo processo non deve


sprecare energia. Abbiamo pensato che una batteria separata per
questa fase fosse inaccettabile. Ancora una volta abbiamo trovato
la soluzione con un dispositivo Maxim: il MAX931 è un comparatore
low cost con un 2% di riferimento, che praticamente non usa energia
se Vcc è più basso di 2.5 V. Oltre questa soglia il nostro IC consuma
solamente 2.5 μA. Inoltre la perdita di corrente input è di soli 0.03
nA. Questo significa che si possono usare resistenze con valori alti
per fare si che il consumo di corrente rimanga nell’ordine di gran-
dezza dei microampere. La figura 6 mostra il diagramma. Il valore
della resistenza selezionata ha una soglia superiore di circa 5 V e una
soglia minore approssimativamente pari a 2 V. Questa ampia isteresi
è necessaria per assicurarsi che il livello output del comparatore sia Figura 7. Il circuito della
sempre basso o alto. Il calcolo dei valori delle resistenze è spiegato figura 6 implementato
nella scheda tecnica[5]. La resistenza e il condensatore sull’output con un IRF3708 e
sono facoltativi; mantengono il MOSFET acceso più a lungo possibile. un condensatore
Il MOSFET deve avere un basso voltaggio gate-source (Vg-son) e una elettrolitico da 0.15 mF
resistenza più bassa possibile (Rd-son). Abbiamo trovato il ZVN4424A fa funzionare la piccolo
che può essere usato per correnti fino a 260 mA e il IRF3708 che può pompa. Il connettore è
essere usato per i compiti con corrente più alta. Entrambi i dispositivi per il pannello solare.
sono disponibili (da Farnell e altre fonti).

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.

Ovviamente vi starete chiedendo cosa possono fare questi circuiti in


pratica. La risposta dipende in gran parte dalla posizione dei pannelli
solari rispetto al sole, dal tempo atmosferico e dalla tensione richie-
sta. Con un pannello da circa 10 sterline siamo stati in grado di cari-
care un condensatore da 0.15 F fino a circa 9 V ed usarlo come ali-
mentatore per una piccola pompa da 12 V. Il tempo di questo ciclo è
di circa 5 minuti con il sole e circa 30 minuti con la pioggia, il che non Figura 8. Il sistema della
è un grande problema per una piccola pompa che fornisce acqua alle figura 7 in un setup
piante in giardino. Abbiamo anche piazzato un campanello con un sperimentale.
motorino da 5 V sul davanzale. Nelle giornate più nuvolose suonava
un paio di volte al giorno, ma con il sole lo potevamo sentire ogni
ora. L’energia solare è gratis ma, specialmente d’inverno, è scarsa.
Ricordatevi che grandi organismi come gli alberi passano l’intero
inverno aspettando tempi migliori. In un certo senso, questi circuiti
sono comparabili a questi organismi.

(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.

Personal Download for a, a | copyright Elektor


elektor 02-2011 57
794115

FOTOGRAFIA

Timer ad intervalli per fotocamera


Con telecomando a infrarosso

Di Jean-Pierre Gauthier (Francia)

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…

Il sistema a scatto descritto nel seguito,


Caratteristiche tecniche rende possibile scattare fotografie ad
• Microcontrollore PIC16F886 intervalli predefiniti oppure “agganciare”
• Compatibile con telecomandi Sony SIRC due macchine fotografiche per foto stere-
• Numero di fotografie, programmabile tra 1 e 100 oscopiche. Con questo dispositivo è possi-
• Intervallo programmabile tra 1 and 3,599 s bile, ad esempio, scattare ad un fiore una
• Standby automatico serie di fotografie ogni 30 minuti durante
• Ottimizzato per fotocamera Canon EOS camera, ma può essere adattato per ogni altro uso. la fase di apertura dei petali, la cova di
cuccioli di uccelli, eccetera, ed includere le

Personal Download for a, a | copyright Elektor


58 02-2011 elektor
794115

FOTOGRAFIA

immagini catturate in un video. Il sistema numero di scatti effettuati e mediante un


è stato originariamente progettato per menu è facile configurare il dispositivo.
macchina fotografica Canon EOS ma può La retroilluminazione è controllata dal
essere prontamente essere adattato per microcontrollore. FOCUS

altre fotocamere in grado di essere con- Se necessario, è possibile regolare la


trollate a distanza. messa a fuoco e il tempo di scatto in ogni GND TRIGGER
Il timer è in grado di catturare da 1 a 100 momento, tra uno scatto e il successivo,
fotografie con intervalli da 1 secondo a 59 grazie all’utilizzo di un telecomando com-
minuti e 59 secondi, con o senza messa a patibile con protocollo Sony SIRC[3]. Quando
fuoco preventiva. I parametri vengono sal- tutte le fotografie sono state scattate, il
vati in EEPROM. Un display LCD alfanume- timer si porta in modo stand-by, per rispar- Figura 2. Ecco come cablare il jack
rico quattro linee e 20 caratteri mostra il miare energia. di controllo per fotocamera Canon.

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

- 470u 100n 100n 47u


VDD
VSS

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

RA5 RC6 GND D3


8

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

GND 081184 - 11 GND

Figura 1. Il timer è un progetto di base per microcontrollere.

Personal Download for a, a | copyright Elektor


elektor 02-2011 59
794115

FOTOGRAFIA

Figura 3. Impostazione del tasto 1


sul telecomando. Un semplice circuito numero di foto da catturare (figura 5). In
Grazie all’utilizzo di un microcontrollore, questi menu, premendo S2 si diminuisce
il circuito (figura 1) è di per sé molto sem- il valore visualizzato, mentre premendo S3
plice: quattro pulsanti, un display LCD lo si aumenta. S2 dà la possibilità di salvare
e pochi altri componenti sono tutto ciò i dati in EEPROM e di passare al menu suc-
che serve per controllare la fotocamera. cessivo. S4 è utilizzato solamente soltanto
I comandi per la messa a fuoco e per l’ot- nel terzo menu, dove è possibile abilitare
turatore sono ottenuti mediante i due relè la retroilluminazione. In modo normale, il
RE1 e RE2, pilotati dai transistor T2 e T3. I menu visualizzato (Figure 6) mostra lo stato
due relè si collegano ai contatti della presa del buzzer (S3) e pre-messa a fuoco (S2),
Figura 4. Impostazione del tasto 2 jack K6 verso terra attraverso gli switch S5. Premendo S4 si accede ad un nuovo menu
sul telecomando. La figura 2 mostra come collegare il jack dove S2 ed S3 sono utilizzati per impo-
così da renderlo compatibile con una foto- stare il ritardo tra due scatti successivi, da
camera Canon. Sono stati messi a disposi-
zione anche due morsetti aggiuntivi (K4 e
K5) nel caso in cui il progetto venga utiliz- Tabella 1:
zato con altre fotocamere non Canon. In tal I codici di alcuni tasti su telecomandi SIRC,
caso, la posizione degli switch S5 dipende visti dal timer. Accetta solamente
dal tipo di applicazione. codici tra 128 e 137, per esempio i pulsanti
Ogni uscita dispone di un LED, così da poter da ‘0’ a ‘9’.
Figura 5. Impostzione del numero osservare da distante se ciascun relè è ON
oppure no, Il buzzer BZ1 dà la possibilità di HEX decimal key
di foto da catturare.
produrre un suono udibile a distanza, nel 0x80 128 1
caso in cui non sia possibile vedere i LED. Il 0x81 129 2
segnale del telecomando viene ricevuto dal
0x82 130 3
detector IC3. Il transistor T1 è utilizzato per
abilitare la retroilluminazione del display, 0x83 131 4
solo quando è necessario - una funzione 0x84 132 5
utile che troppo spesso viene ancora trascu- 0x85 133 6
rata. Grazie al regolatore IC1, il circuito può
essere alimentato con tensione compresa 0x86 134 7
Figura 6. Il primo menu in modalità tra 8 e 12V DC. 0x87 135 8
“Normale”. 0x88 136 9
Software 0x89 137 0
Come per tutti i circuiti a microcontrollore,
il software è ciò che rende tutte le funzioni 0x8C 140 1-
possibili. In questo caso il software (scari- 0x8D 141 2-
cabile gratuitamente da[1]) è stato scritto in 0x90 144 Program+
linguaggio C e compilato utilizzando la ver-
0x91 145 Program-
sione gratuita “lite” del compilatore Hi-Tech
C per PIC10/12/16 (versione 9.70[2]. L’inte- 0x92 146 Volume+
Figura 7. Impostazione dell’intervallo razione con il software avviene tramite una 0x93 147 Volume-
tra due scatti. serie di menu, dentro al quale si naviga con
0x94 148 Mute
l’aiuto dei quattro pulsanti S1–S4. La loro
funzione dipende dal menu selezionato ed 0x95 149 Standby
è mostrata su LCD utilizzando piccole icone. 0x96 150 Normal
Se all’accensione viene premuto il pulsante 0xA5 165 TV/Video
S1, il software si porta in modalità configu-
0xB4 180 +
razione, prima di andare in modalità nor-
male. Una serie di menu vengono visualiz- 0xB5 181 -
zati e consentono di configurare i tasti del 0xB6 182 Sleep
telecomando (figure 3 e 4) che saranno 0xBA 186 Display
riconosciuti dal timer (vedi tabella 1, non
Figura 8. Lo schermo durante lo scatto. utilizzare lo stesso codice due volte!) ed il 0xBC 188 Select

Personal Download for a, a | copyright Elektor


60 02-2011 elektor
794115

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]

Se la tua versione del timer funziona


al primo tentativo, è merito di Daniel
del laboratorio di Elektor. Se invece non
funziona allora è per qualche tuo errore.

0 a 3,599 secondi (1 ora meno 1 secondo,


Figure 7). Per convenienza di utilizzo, se
uno di questi due pulsanti resta premuto, il
valore si incrementa o decrementa automa-
ticamente. Questa funzionalità è disponibile
anche negli altri menu.
Premendo S4 si avvia la cattura delle imma-
gini. L’uscita della messa a fuoco resta attiva
per 400 ms dieci secondi prima che ciascuna
foto è catturata (se la funzione di pre-messa
a fuoco è stata abilitata, ovviamente). In
funzione di come il buzzer è configurato,
questo evento può essere accompagnato
da un suono acustico. Il comando dell’ottu-
ratore, anch’esso per 400 ms, attiva il buz-
zer (se abilitato).
Il tempo trascorso viene visualizzato bre-
vemente e, premendo S3, si zittisce il buz-
zer. Il numero di fotografie catturate viene
aggiornato e mostrato su LCD dopo cia- Telecomando sibile mediante l’uso dell’intertupt esterno,
scuno scatto (Figure 8). La pressione di S4 Come indicato in precedenza, il timer può fornito da IC3. La tabella 1 mostra la corri-
per almeno 2 secondi, permette di inter- essere controllato con un telecomando spondenza tra i numeri del telecomando
rompere il conteggio e di tornare al menu di Sony oppure un qualsiasi altro telecomando (come è visto dal timer) e la sua funzione
avvio. Se il timer termina il suo programma in grado di comunicare con protocollo SIR [3] come prevista da Sony.
senza essere mai interrotto, emette un - per esempio, un telecomando universale. (081184)
breve tono acustico e si porta in modo Il telecomando permette di avviare ottu-
stand-by. Lo si riavvia, o lo si “sveglia” utiliz- ratore o autofocus manualmente, in ogni Link internet
zando il telecomando, facendo poi seguito momento (eccetto che in stand-by) senza [1] www.elektor.it/081184
una pressione a lungo (almeno 2 secondi) alterare il programma attualmente in ese-
[2] www.htsoft.com/downloads/
del pulsante S4 per iniziare una nuova serie cuzione. Inoltre permette di “svegliare” il
di fotografie. circuito, contestualmente a S4. Ciò è pos- [3] picprojects.org.uk/projects/sirc/

Personal Download for a, a | copyright Elektor


elektor 02-2011 61
794116

CIRCUITI DEI LETTORI

Una rete wireless per strumentazione


Misurazioni con Arduino ed XBee
Di Johan van den Brande (Belgio) (johan@vandenbrande.com)

In questo articolo descriveremo come


mettere insieme una rete wireless per
strumentazione tramite la piattaforma
Arduino ed i moduli XBee di MaxStream.
La rete utilizza un modulo EtherShield per
rendere accessibili automaticamente i dati delle
misurazioni tramite Internet.

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.

Personal Download for a, a | copyright Elektor


62 02-2011 elektor
794116

CIRCUITI DEI LETTORI

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

insieme al modulo EtherShield. Per tale motivo, abbiamo sviluppato D8 VIN


+3V3 +5V
uno shield in grado di accettare un modulo XBee e che può essere D9
D10
GND1
GND2
XB1
anche innestato in cima ad un modulo EtherShield. Il progetto del D11 +5V
D12 XBee +3V3

nostro modulo è ragionevolmente semplice (si veda la figura 2). D13


1
2
VCC AD0/DIO0
20
19
RESET
AGND DOUT AD1/DIO1 S3
Abbiamo incluso il regolatore di tensione in quanto la versione Pro AREF R1
3
4
DIN/CONFIG AD2/DIO2
18
17
10k CD/DOUT_EN/DO8 COORD_SEL/
del modulo XBee può assorbire fino a 100 mA, che è troppo per il 5
RESET
AD3/DIO3
RTS/AD6/DIO6
16
RESET

6 15
PWM0/RSSI ASSOC/AD5/DIO5
regolatore integrato nel modulo Arduino. R2 R4 7
VREF
14 R3
8 13
1k

1k
15k

Il modulo XBee richiede inoltre una tensione d’alimentazione di 9


DTR/SLEEP_RQ/DI8
ON/SLEEP
CTS/DIO7
12
10 11
3.3 V. Il modulo XBee comunica con il modulo Arduino tramite i LED2 GND RF_TX/AD4/DIO5 LED1

pin 1 (RX) e 2 (TX). Il modulo Arduino utilizza questi pin anche per RSSI ASSOC

la comunicazione seriale con il PC. Dato che vogliamo poter pro-


091092 - 11
grammare il modulo Arduino con lo shield XBee inserito, abbiamo
aggiunto un paio di commutatori sul percorso dei segnali. Il modulo
Arduino comunica normalmente con dei livelli TTL sui pin 1 e 2, così
che un partitore di tensione riduce a 3 V il livello del segnale d’in- Figura 2. Lo schema elettrico del nostro shield per Arduino
è ragionevolmente semplice.
gresso sul pin RX del modulo XBee. Nell’altra direzione non è neces-
sario aggiustare il livello, dato che Arduino vede i 3.3 V come livello
alto. Il layout del circuito stampato è stato mantenuto semplice, e
tutti i componenti (eccetto il pulsante) sono del tipo a foro passante.
I file Eagle e PDF del layout del PCB sono inclusi nel file scaricabile
allegato all’articolo[2]. VCC

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

cazione interessante è la misurazione dell’umidità relativa. Potete


realizzare un semplice sensore a questo scopo inserendo due sbar- 091092 - 12
rette di scagliola (gesso di Parigi) separate fra loro di circa mezzo
centimetro dentro un tubo di plastica. Collegate una delle due sbar-
rette ai +5 V e l’altra ad un ingresso analogico ed a massa tramite Figura 3. Si può realizzare un semplice sensore di umidità
un resistore di 10 kΩ (si veda la figura 3). Utilizzando gli ingressi inserendo due sbarrette di scagliola in un tubo di plastica.

Personal Download for a, a | copyright Elektor


elektor 02-2011 63
794116

CIRCUITI DEI LETTORI

L’Internet delle cose


Negli ultimi tempi c’è stato molto interesse riguardo ad ‘Internet of (corpo), separati da una linea vuota. La prima linea header contiene la
Things’, che significa connettere oggetti della vita quotidiana ad Inter- versione del protocollo, il tipo di comando (GET, POST, PUT o DELE-
net. Piattaforme dedicate a dati di sensori come il sito web Pachube ne TE) e la risorsa, vale a dire dove deve operare il comando. Può essere
sono un buon esempio. Su questo sito potete conservare e recupera- seguita da altre linee header che forniscono vari parametri al server
re dati di sensori per poter ad esempio visualizzare un diagramma o web, come il tipo di contenuto che il client può elaborare. Una linea
mantenere un log. Un’altra applicazione potenziale è il controllo dei header consiste di un nome e di un valore. Per l’applicazione descritta
valori di sensori e l’esecuzione di azioni opportune qualora superino in questo articolo, la API key relativa al feed è posta in una linea header.
certi livelli predefiniti, come l’invio di una e-mail o di un messaggio di L’header è seguito dai dati. Il seguente è un esempio di una richiesta
testo. Pachube è un sito accessibile pubblicamente con un semplice PUT al sito web Pachube:
protocollo per inviare dati al sito. Potete assegnare delle coordinate ge-
ografiche ai vostri sensori, che sono quindi mostrati su una mappa del
PUT /v2/feeds/FEED_ID.csv HTTP/1.1
mondo. I dati possono essere visti sotto forma di diagrammi, e potete
anche permettere ad altre persone di accedere ai vostri dati. Invece di Host: api.pachube.com
inviare direttamente i dati ad altri destinatari, potete pubblicarli una X-PachubeApiKey: PACHUBE_API_KEY
volta sola sul sito Pachube, dove gli altri destinatari possono registrar- Content-Length: 10
si per ricevere il vostro flusso di dati. Dopo la registrazione sul sito di
Connection: close
Pachube, avete creato un feed. Dovete cliccare su ‘Manual Update’
0,100
quando configurate il feed, dato che ciò permette al microcontrollore
di stabilire quando rendere pubblici dei nuovi dati. Con l’altra opzio- 1,244
ne, ‘Automatic’, il sito Pachube invia attivamente dei comandi Web di
richiesta per prelevare i dati. Perché ciò sia possibile, dovete include- Il protocollo HTTP è facile da implementare in uno sketch (un pro-
re un server web nel microcontrollore e configurare la vostra rete per tocollo di questo tipo basato su HTTP è detto un’API REST) è anche
permettere l’accesso al microcontrollore tramite Internet. Dopo aver possibile testare tramite console come il feed viene adattato, ad
creato il vostro feed, vi viene assegnata una API key. Il microcontrollore esempio con il comando curl: curl --request PUT --header “X-Pa-
usa il protocollo HTTP per l’invio manuale. Questo è un protocollo te- chubeApiKey: PACHUBE_API_KEY” --data “0,100” “http://www.pa-
stuale molto semplice che supporta i compiti usuali di recupero di dati chube.com/api/feeds/FEED_ID.csv”. La funzione curl è disponibile
(comando GET), così come l’invio di dati (comando PUT), la modifica nell’installazione standard di OS X e può essere facilmente instal-
di dati (comando POST), e la cancellazione di dati (comando DELETE). lata in Linux. Gli utenti Windows possono scaricarla da http://curl.
Una richiesta HTTP consiste di un header (intestazione) e di un body haxx.se/download.html.

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-

Personal Download for a, a | copyright Elektor


64 02-2011 elektor
794116

zione seriale è posta ad 8 bit, nessuna parità ed un bit di


stop senza nessun altro parametro aggiuntivo.
La routine loop è piuttosto semplice. Richiama la routine
intervalPassed , che determina se è trascorso l’intervallo
stabilito (5 secondi). Se lo è, viene richiamata la routine
measure. Per primo inviamo il nome del nodo al modulo
Xbee (linee 29 e 30), seguito dai due punti (:). Il loop for
nelle linee 32-35 interroga le porte analogiche ed invia i
loro valori al modulo Xbee (linea 32). La linea 34 inserisce
una virgola dopo ciascun valore analogico (eccetto l’ul-
timo) per separare i valori. La linea 37 termina il tutto con
un newline. Lo sketch per il gateway è più complesso in
quanto si occupa anche del collegamento Internet verso
il sito web Pachube (si veda il riquadro ‘The Internet of
Things’). Il gateway attende fino a quando non viene rice-
vuta una linea completa dal collegamento seriale e quindi
invia la denominazione del metodo di misurazione ed i
valori dei sensori al sito Pachube. Prima di usare questo
scketch, dovete modificarlo con i parametri corretti del
vostro account Pachube e della vostra rete. Nella linea
13, inserite l’ID del feed che avete creato e nella linea 14,
inserite la vostra API key (da My Profile > Settings in [1]).

Figura 4. Il nodo per la lettura dei sensori consiste


in un modulo Arduino ed in uno shield XBee.

Collegate il gateway ad un router o ad un switch in modo


che possa accedere direttamente ad Internet. Configu-
rate i parametri di rete nelle linee dalla 16 alla 18 inse-
rendo il MAC del modulo EtherShield alla linea 16 ed il
suo indirizzo IP alla linea 17. L’indirizzo MAC identifica
uno specifico dispositivo in una rete Ethernet. Potete
usare pressoché qualsiasi valore per il MAC fintanto che
non causi un conflitto con altri dispositivi connessi al rou-
ter od al switch. Scegliete un indirizzo IP non usato nello
spazio degli indirizzi della vostra rete locale ed inseri-
telo nella linea 17. Qui dovete sostituire i punti nell’in-
dirizzo IP con delle virgole, dato che il codice alle linee
16-18 definisce un insieme di array. L’indirizzo IP del sito
Pachube è specificato alla linea 18. In un software più ela-
borato potete usare il Domain Name Service (DNS), che
traduce i nomi a dominio in indirizzi IP, ma l’approccio
qui usato è adeguato per i nostri scopi.
La linea 20 vi permette di settare un flag di debug che
attiva la macro _LOG alla linea 23. Questa macro per

Personal Download for a, a | copyright Elektor


elektor 02-2011 65
794116

CIRCUITI DEI LETTORI

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

Personal Download for a, a | copyright Elektor


66 02-2011 elektor
INFOTAINMENT

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...

F 7 3 A 6 0 5 C 2 1 9 D B 8 4 E Le regole per completare lo schema Hexadoku sono piuttosto


semplici.
C D 1 4 A B 2 7 8 F E 5 9 0 3 6
Nello schema di 16x16 caselle dovrete inserire tutti i numeri esade-
B E 2 0 D 9 8 1 C 6 4 3 F 7 A 5 cimali da 0 fino a F (0-9e A-F).
9 5 6 8 E F 3 4 7 A 0 B 1 C 2 D Uno stesso simbolo può apparire una sola volta nella riga, nella
D F A 3 7 C E B 5 9 6 1 8 2 0 4 colonna e nei box 4x4 evidenziati.
Per facilitare l’inizio del gioco sono state già compilate una serie di
5 8 C 2 1 A F 0 D B 7 4 3 6 E 9 caselle. Gli schemi sono anche disponibili per il download gratuito
E 6 7 1 2 4 9 D 3 0 8 A 5 F B C su www.elektor.it.
0 4 9 B 8 3 6 5 E C F 2 D A 1 7
1 2 B 5 F 7 4 E 0 8 A C 6 9 D 3
3 9 D C B 8 A 6 4 2 1 F 7 E 5 0
4 0 8 E 9 D 1 2 6 3 5 7 C B F A
6 A F 7 C 5 0 3 9 D B E 2 4 8 1
8 3 5 D 0 6 B A F E C 9 4 1 7 2
A B E 6 5 2 7 9 1 4 3 8 0 D C F
2 1 4 9 3 E C F B 7 D 0 A 5 6 8
7 C 0 F 4 1 D 8 A 5 2 6 E 3 9 B

Soluzione del numero di


novembre 2010

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.

Unlike the ferromagnetic voltmeter,


the magneto-electric voltmeter can
only operate on direct current, since
the sense of the deviation depends
on the direction of the current. But in the case
of a wattmeter, the fact that the polarities to both stationary and
moving windings are inverted together means that it works just
By Jean-Marc Dubrunfaut (France) as well on AC as DC, and without the user even needing to change
ranges! Better still, the value obtained in AC is inherently the active
Since the famous compass that Ampère christened a power. The deviation is linked to the product of the instantaneous
‘galvanometer’, two successive types of voltmeter have held sway. values of voltage and current. This product is smoothed by the
The first of these combined the idea of having the conductor wire inertia of the moving element and by the air damper, hence we
make several turns around the needle with Ampère’s astatic system obtain the mean value of the instantaneous power, which is what
(the idea of using two mechanically-coupled magnetic needles is measured by the supply authority’s meter, i.e. U × I × cos(φ) in the
with opposing poles, with only one of the needles subject to the case of a pure sinewave.
influence of the electrical current, in order to get round the problem
of the Earth’s magnetic field). The second was the moving-coil And we don’t need to do anything further to obtain a value that
voltmeter, where it is no longer a magnet that moves within a coil, integrates both AC and DC components, as this is what happens
but a coil that moves within a magnet. by default. However, one real limitation compared to digital
wattmeters is that the frequency of the current to be measured
If we combine these two principles by placing one moving coil must remain within narrow limits. If it’s too low, the mechanical
within another coil, the deviation obtained depends on the product smoothing would be insufficient; if it’s too high, the measurement
will be distorted by the self-inductance of the coils. The usable
operating frequency range of this type of device never exceeds
a few hundred hertz (the dial of the MD7 indicates 50 Hz, but
our experiments show that it manages ten times that). So this
bandwidth excludes high-frequency signals if they are too
fixed distorted, because of their harmonics. But at low frequencies, and
coil
1 in particular at 50 Hz, the measurement is accurate for signals of any
shape (including squarewaves and clipped sinewaves).

The separate I and U circuits (they are even electrically isolated)


offer several advantages. Firstly, they allow a choice between
upstream and downstream measurement, which is useful, given the
5A 5A Zin of 5 kΩ. Then, when making measurements on a transformer,
fixed
coil
10A 2 10A there’s nothing to stop you measuring the current in the primary
and the voltage on the secondary, or vice-versa (not forgetting to
CC CC
take the transformer ratio into account), with the object of making
100381 - 12 the best use of the input ranges of the device depending on the
values to be measured. Lastly, the four terminals makes it possible
to significantly extend the range of measurements possible. In this
The switch wiring. way, it can be adapted to very high currents by using a measuring

76 11-2010 elektor

Personal Download for a, a | copyright Elektor


794103

rEtroniCS

Precision Astatic Wattmeter


transformer (the principle of the current clamp), measure just the
reactive power, etc.
Astatism requires the moving element to be doubled up: two
moving coils fitted head-to-tail react in an opposing fashion when
they are subjected to the same magnetic field. So that they move
when under the influence of the current to be measured, each is
placed within a dedicated stationary coil, both of which are also
wired head-to-tail. So for the system to be astatic, i.e. very little
influenced by the Earth’s magnetic field or polluters like motors,
dynamos, or high-current conductors, we need four coils. So why
this costly astatism when just some good magnetic shielding would
have sufficed? Probably because the manufacturer knows, because
of their long experience, that such an instrument can lose a great
deal of its accuracy because of Foucault currents. In the presence
of a massive metallic element, and even more so if it is enclosed in a
metal case, a device generating a variable magnetic field will induce
Foucault currents into the conductive mass, which will create a
magnetic field in opposition to the field that induced them, whence
a measurement that is disrupted in a not very predictable manner. The stationary windings are offset to reduce mutual coupling.
“All wood and Bakelite” is not only an aesthetic choice: minimizing
the amount of metal as much as possible is also the best technical
option, even though that may not be intuitively obvious. the phase angle cos(φ)), we can unwittingly burn out both U and
I circuits at the same time when the phase angle gets close to 90°.
What’s more, the designers have taken advantage of this And with a ‘single-/3-phase’ selector switch connected directly
doubling-up of the windings and offered the possibility of wiring to the voltages being measured, we’re a long way from IEC1010
the stationary windings in parallel or series, in order to have two measuring instruments!
current ranges available: 5 A and 10 A. But the selector switch (100381)
offers a mysterious third position ‘CC’ to that is not described in
the instructions and with no maximum current value.

In fact, in the ‘CC’ position the current measurement inputs are


simply bypassed. So ‘CC’ doesn’t stand for ‘DC’ (French CC: courant
continu), but rather, ‘short circuit’! The astatic operation means that
the MD7 works as a real synchronous demodulator, i.e. even when
placed in a noisy electromagnetic environment, it only extracts that
which is at the exact frequency of the current passing through the
DUT. It does not react to either static fields or those at different
frequencies. But if the DUT itself radiates, the MD7 will include this
unwanted field into its measurement. In this event, the ‘CC’ position
makes it possible to measure the spurious field alone. A simple
subtraction and the measured value becomes accurate again!
But there’s a price to be paid for the accuracy of this fine device. It
would be out of the question to subject such a delicate mechanism
to any kind of shock. Or to use it without first using a spirit-level
to check it is level. What’s more, it’s obvious that compensating
for spurious fields using the famous ‘CC’ position is only valid
if one is careful not to move the instrument at all between the The range resistors are wound flat so as to have negligible self-
two measurements, nor to change its orientation. And the most inductance and hence an extended frequency response, and are
important thing of all: be wary of ‘invisible’ range overloads. You trimmed to the nearest ohm. There are 14 of them (for six ranges),
can merrily burn out your collector’s piece while the needle is which makes it possible to reduce the power dissipated in each of
innocently showing very modest values. Not only can the current them (never more than 1.5 watts) and hence the thermal drift — all
exceed the set range if the voltage is very low (and vice-versa), but, the more so, since they are particularly well ventilated: accuracy,
since what we see is the product of three value (the third being accuracy, accuracy!

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

Personal Download for a, a | copyright Elektor

Potrebbero piacerti anche