Fare Elettronica - FE 233.pdf

113
LA RIVISTA DI ELETTRONICA APPLICATA, TECNOLOGIE E PRODOTTI www.farelettronica.com N° 233 - NOVEMBRE 2004 - ANNO 20 EDIZIONI 4,50 - Frs 9,00 CONVERTITORE PER LAMPADE FLUORESCENTI SMARTCARD COME FUNZIONA E COME GESTIRE LA SIM DEL VOSTRO TELEFONINO CARICABATTERIE NI-CD/MH A 3 PORTATE CON LM 317 TUTORIAL HARDWARE GENERATORE DI FUNZIONI PROGRAMMABILE GENERATORE PER ARGENTO COLLOIDALE GE.CO.AS. GENERATORE DI CODICE ASSEMBLER PER MICROCONTROLLORI PIC GLI STABILIZZATORI DI TENSIONE: I REGOLATORI DI TIPO SWITCHING. I DC-DC CONVERTER PRATICAMENTE OSCILLATORI AL QUARZO: CONTASECONDI USIAMO LE CPLD GENERATORE DI FUNZIONI PROGRAMMABILE FEBOT IL FIRMWARE DELLA SCHEDA MADRE • SMARTCARD: LA SIM: UN ESEMPIO DI SMARTCARD A MICROPROCESSORE VITAMINA C: STRUTTURA E LEGGIBILITÁ DEL CODICE COSTO ZERO CONVERTITORE PER LAMPADE FLUORESCENTI CARICABATTERIE NI-CD/MH A 3 PORTATE CON LM 317 ROBOMANIA • FEBOT: IL FIRMWARE DELLA SCHEDA MADRE • ASPIRONE: NON PERDE LA BUSSOLA INTRODUZIONE ALLA ROBOTICA: CAPACITÁ SENSORIALE TECNOLOGIE SPERIMENTALI APPLICAZIONI EMBEDDED: IL PROTOCOLLO MODBUS PROGETTIAMO UN RAZZO: ALTIMETRO BAROMETRICO A DOPPIA ESPULSIONE NOTEPAD MEDICINA NATURALE GENERATORE PER ARGENTO COLLOIDALE Poste Italiane Spa - Spedizione in abbonamento Postale - D.L. 353/2003 (conv. In L. 27/02/2004 n. 46) art. 1, comma1, DCB Milano. In caso di mancato recapito, restituire all'editore che si impegna a pagare la relativa tassa presso il CPM di Roserio - Milano
  • Upload

    -
  • Category

    Documents

  • view

    378
  • download

    44

Transcript of Fare Elettronica - FE 233.pdf

Page 1: Fare Elettronica - FE 233.pdf

L A R I V I S TA D I E L E T T R O N I C A A P P L I C ATA , T E C N O L O G I E E P R O D OT T I

www.farelettronica.com

N° 233 - NOVEMBRE 2004 - ANNO 20

N° 2

33

EDIZIONI

€ 4,50 - Frs 9,00

ANNO

20

- NOV

EMBR

E 20

04E

DIZ

ION

I

CONVERTITORE

PER LAMPADE FLUORESCENTI

SMARTCARDCOME FUNZIONA E COME GESTIRE

LA SIM DEL VOSTRO TELEFONINO

CARICABATTERIE NI-CD/MHA 3 PORTATE CON LM 317

TUTORIAL

HARDWARE

• GENERATORE DI FUNZIONI PROGRAMMABILE• GENERATORE PER ARGENTO COLLOIDALE• GE.CO.AS. GENERATORE DI CODICE ASSEMBLER

PER MICROCONTROLLORI PIC• GLI STABILIZZATORI DI TENSIONE:

I REGOLATORI DI TIPO SWITCHING. I DC-DC CONVERTER

PRATICAMENTE• OSCILLATORI AL QUARZO:

CONTASECONDI

USIAMO LE CPLDGENERATORE DI FUNZIONI

PROGRAMMABILE

FEBOTIL FIRMWARE DELLA SCHEDA MADRE

• SMARTCARD:LA SIM: UN ESEMPIO DI SMARTCARDA MICROPROCESSORE

• VITAMINA C:STRUTTURA E LEGGIBILITÁ DEL CODICE

COSTO ZERO

• CONVERTITORE PER LAMPADE FLUORESCENTI• CARICABATTERIE NI-CD/MH

A 3 PORTATE CON LM 317

ROBOMANIA

• FEBOT:IL FIRMWARE DELLA SCHEDA MADRE

• ASPIRONE:NON PERDE LA BUSSOLA

• INTRODUZIONE ALLA ROBOTICA:CAPACITÁ SENSORIALE

TECNOLOGIE SPERIMENTALI

• APPLICAZIONI EMBEDDED:IL PROTOCOLLO MODBUS

• PROGETTIAMO UN RAZZO:ALTIMETRO BAROMETRICO A DOPPIA ESPULSIONE

NOTEPAD

MEDICINA NATURALEGENERATORE PER

ARGENTO COLLOIDALE

Poste

Itali

ane S

pa -

Sped

izion

e in a

bbon

amen

to Po

stale

- D.L.

353/

2003

(con

v. In

L. 27

/02/

2004

n. 46

) art.

1, co

mma1

, DCB

Mila

no.I

n cas

o di

man

cato

reca

pito

, res

tituir

e all'

edito

re ch

e si i

mpeg

na a

paga

re la

relat

iva ta

ssa p

ress

o il

CPM

di R

oser

io -

Milan

o

-Copertina F.E. 233 15-10-2004 16:39 Pagina 1

Page 2: Fare Elettronica - FE 233.pdf

Tiziano [email protected]

Sin dalla sua prima comparsa sulla Rete il sito di Fare Elettronica ha suscitato un grandesuccesso ed interesse. Dopo un periodo di revisione (durato un po' troppo per laverità) è tornato online con rinnovato vigore qualche settimana dopo il mio arrivo inredazione (due anni or sono).Oggi, dopo alcuni cambiamenti di minore entità, siamo finalmente pronti con unanuovissima versione che troverete on line in contemporanea con l’uscita di questonumero: rinnovato il layout, introdotti numerosi servizi (sono troppi per elencarli tutti),rinnovato il forum (molto utilizzato e quindi inadeguato nella precedente versione),aggiunta a grande richiesta una chat.Questi sono solamente quattro dei temi più importanti che hanno caratterizzato ilnostro lavoro. Attendiamo molti commenti al riguardo e, nel prossimo numero,parleremo in un apposito articolo di tutte le nuove funzionalità introdotte.Il sito web è molto importante per noi, poiché moltissimi lettori amano contattarciattraverso internet ed utilizzare il sito per accedere alle risorse a cui, sempre più spesso,nella rivista si fa riferimento; è il valore aggiunto, quella “marcia in più” per noifondamentale per darvi sempre il massimo possibile, utilizzando le tecnologie piùfruibili e disponibili a basso costo.Il nuovo sito avrà anche un rinnovato “shop”, un mercatino con prodotti moltointeressanti a prezzi molto contenuti. Ogni abbonato potrà acquistare utilizzando unbuono sconto (il meglio definito “coupon”) e toccare con mano quanto sia facile econveniente.

Ma le novità, cari lettori, non si fermano al solo sito, abbiamo pronto il piano editorialeper il 2005. Moltissime le novità e tutte di grande rilievo: oltre al già annunciato corsodi elettronica analogica (Elettronicando), dal prossimo numero parte un corsoteorico/pratico sugli alimentatori switching (pagina 101), stiamo preparando un corsosulle CPLD, una serie di articoli dedicati alla costruzione di strumenti di laboratorio, uncorso sul sistema DCC e sull’intelligenza artificiale.Ma vi ho detto troppo e rischio di rovinarvi la sorpresa, molto altro bolle in pentola,quindi vi consiglio di non perdere i prossimi numeri!

Il numero che state per leggere è come ogni mese ricco di contenuti di alta qualità:apre Gianroberto Negri con la terza parte dedicata al mondo embedded in cui illustra unprotocollo molto importante: il MODBUS; sul fronte delle CPLD, argomento sul qualeAgostino Rolando ha grande competenza, presentiamo un bellissimo Generatore difunzioni che andrà ad arricchire il vostro laboratorio; per gli amanti della medicinanaturale Andrea Marani vi guida alla costruzione di un Generatore di argento colloidale.Ritorna dopo due mesi di assenza Eugenio Cosolo con un nuovo strumento necessarioper la costruzione del missile, un Altimetro barometrico; Marco Lento propone duesemplici progetti dedicati a chi è alle prime armi mentre Dario Mazzeo accontentatutti gli appassionati di microcontrollori PIC con un interessante generatore di codiceassembler.Il FEbot, che sta riscuotendo tanto interesse, passa ad un nuovo livello, infatti in questapuntata presentiamo la prima parte relativa al codice per far funzionare il microcontrolloreutilizzato (PICmicro); ma non è il solo articolo dedicato alla robotica, infatti MarcoFabbri aggiunge la bussola ad Aspirone il robot aspirapolvere presentato qualche numerofa e Massimiliano Bracci continua il suo tutorial sulla robotica parlando della capacitàsensoriale.Chiudono il numero le nuove puntate di Vitamina C e Gli stabilizzatori di tensione scrittirispettivamente da Antonio di Stefano e Nico Grilloni e, per finire, una nuova puntata diPraticamente questo mese dedicata agli oscillatori al quarzo.

Vi lascio alla scoperta di questo interessantissimo numero, vi auguro una piacevolelettura e vi invito in edicola a Dicembre con un numero davvero speciale.

WWW.FARELETTRONICA.COM

3

edito

riale

Col-Edi-Som 15-10-2004 16:42 Pagina 3

Page 3: Fare Elettronica - FE 233.pdf

DIRETTORE RESPONSABILE:

GianCarmelo Moroni

DIRETTORE DI REDAZIONE:

Tiziano Galizia ([email protected])

PROGETTO GRAFICO E IMPAGINAZIONE:

Graficonsult - Milano ([email protected])

HANNO COLLABORATO:

Maurizio Del Corso, Andrea Marani, Marco Lento, Marco Fabbri,

Dario Mazzeo, Esteban Mascarella, Eugenio Cosolo, Massimiliano Bracci,

Gianroberto Negri, Antonio Di Stefano, Nico Grilloni, Andrea Marani,

Agostino Rolando, Giuseppe Modugno,

DIREZIONE - REDAZIONE - PUBBLICITÁ

INWARE srl

Via Cadorna, 27/31 - 20032 Cormano (MI)

Tel. 02.66504794 - 02.66504755 - Fax 02.66508225

[email protected] - www.inwaredizioni.it

STAMPA:

ROTO 2000

Via Leonardo da Vinci, 18/20 - 20080 Casarile (MI)

DISTRIBUZIONE:

Parrini & C. S.p.a.

Viale Forlanini, 23 - 20134 Milano.

Il periodico Fare Elettronica è in attesa del numero di iscrizione al ROC

UFFICIO ABBONAMENTI

PARRINI & C. S.p.a. Servizio abbonamenti

Viale Forlanini, 23 - 20134 Milano

Per informazioni, sottoscrizione o rinnovo dell’abbonamento:

Telefono: 02.66504794 - Fax: 02.66508225

Email: [email protected]

Poste Italiane Spa - Spedizione in abbonamento Postale - D.L. 353/2003

(conv. In L. 27/02/2004 n. 46) art. 1, comma1, DCB Milano

Abbonamento per l’Italia: € 39,00

Abbonamento per l’estero: € 99,00

Per la sottoscrizione degli abbonamenti, utilizzare il modulo stampatoin ultima pagina.

Gli arretrati potranno essere richiesti, per iscritto, al seguente costo:

Numero singolo: € 7,50

Numero doppio: € 9,00

Autorizzazione alla pubblicazione del Tribunale di Milano n. 647 del 17/11/2003 INWARE srl.

© Tutti i diritti di riproduzione o di traduzione degli articoli pubblicati sono riser-

vati. Manoscritti, disegni e fotografie sono di proprietà di INWARE srl.

Diritti d’autore: La protezione del diritto d’autore è estesa non solamente al con-

tenuto redazionale di Fare Elettronica ma anche alle illustrazioni e ai circuiti

stampati. Conformemente alla legge sui Brevetti n.1127 del 29-6-39, i circuiti e gli

schemi pubblicati su Fare Elettronica possono essere realizzati solo ed esclusiva-

mente per scopi privati o scientifici e comunque non commerciali. L'utilizzazione

degli schemi non comporta alcuna responsabilità da parte della Società editrice.

La Società editrice è in diritto di tradurre e/o fare tradurre un articolo e di utiliz-

zarlo per le sue diverse edizioni e attività, dietro compenso conforme alle tariffe

in uso presso la società stessa.

Alcuni circuiti, dispositivi, componenti ecc. descritti in questa rivista possono be-

neficiare dei diritti propri ai brevetti: la Società editrice non assume alcuna re-

sponsabilità per il fatto che ciò possa non essere menzionato.

Elenco inserzionisti

Richieste di assistenza

Alterlogix 61Artek 25-55Blu Nautilus 31Elettroshop 67-105Eurocom 53Futura 11-79G.P.E. kit 89Grifo II copIdea Elettronica 17Ital Electronics 47Parsic 39-65Pianeta Elettronica 83-109Pianeta Musica 35Scuola RadioElettra IV cop

Collaborare con Fare ElettronicaLa redazione di Fare Elettronica è alla ricerca dicollaboratori per la stesura di articoli, progetti,tutorials, rubriche e libri.Le richieste di collaborazione vanno indirizzate aTiziano Galizia ([email protected]) eaccompagnate, se possibile, da una brevedescrizione delle vostre competenze tecniche e/oeditoriali, oltre che da un elenco degli argomentie/o progetti che desiderate proporre.

Per richiedere assistenza o chiarimenti sugli articolipubblicati, vi preghiamo di contattare l’autore, ilcui nome ed indirizzo email è sempre riportatosotto il titolo dell’articolo stesso.Nel caso ciò non fosse possibile potete scrivere [email protected], ricordandovi dispecificare il numero della rivista ed il titolodell’articolo per il quale chiedete chiarimenti,oltre al vostro nome, cognome ed indirizzo email.Tutte le richieste con informazioni insufficienti oanonime non saranno prese in considerazione.

Come contattarciIndirizzo email della Redazione:

[email protected] email dell’Ufficio Abbonamenti:

[email protected] nostri numeri telefonici:

Telefono 02.66504794 Fax 02.66508225Il nostro indirizzo postale:

INWARE EdizioniVia Cadorna, 27/3120032 Cormano (MI)

www.farelettronica.com

Col-Edi-Som 1-10-2004 16:40 Pagina 4

Page 4: Fare Elettronica - FE 233.pdf

SOMMARIO

tutorialSmartcard (sesta parte): 54La sim: un esempio di smartcarda microprocessoredi Giuseppe Modugno

Vitamina C (tredicesima parte): 48Struttura e leggibilità del codicedi Antonio Di Stefano

tecnologie sperimentaliApplicazioni embedded (terza parte): 14Il protocollo MODBUSdi Gianroberto Negri

Progettiamo un razzo (nona parte): 66Altimetro barometrico a doppia espulsionedi Eugenio Cosolo e Esteban Mascarella

costo zeroConvertitore per lampade fluorescenti 90di Marco Lento

Caricabatterie NI-CD/MH 92a 3 portate con LM 317di Marco Lento

praticamenteOscillatori al quarzo: Contasecondi 74di Maurizio Del Corso

hardwareGeneratore di funzioni programmabile 32di Agostino Rolando

Generatore per argento colloidale 42di Andrea Marani

GE.CO.AS. 80Generatore di codice assemblerper microcontrollori PICdi Dario Mazzeo

Gli stabilizzatori di tensione (sesta parte): 84I regolatori di tipo switching.I DC-DC converterdi Nico Grilloni

rubricheMailbox 6

News 8

Notepad 12

Le fiere e mostre mercato 72di Novembre 2004

robomaniaFebot (terza parte): 94Il firmware della scheda madredi Maurizio Del Corso e Tiziano Galizia

Aspirone (terza parte): 102Non perde la bussoladi Marco Fabbri

Introduzione alla robotica (quarta parte): 106Capacità sensorialedi Massimiliano Bracci

Col-Edi-Som 1-10-2004 16:40 Pagina 5

Page 5: Fare Elettronica - FE 233.pdf

DALLA TEORIA ALLA PRATICASeguendo gli articoli sugli stabilizzatori di tensione,ho progettato un alimentatore del quale vi invio loschema elettrico (figura 2 n.d.r.). Ho fatto tutti i cal-coli per avere 5V in uscita, ma in realtà ne misurosolo 3,xx. Ho eseguito i calcoli più volte, ma i risultatimi sembrano corretti. Dove ho sbagliato?

Daniele Lombardo

Seguendo gli articoli pubblicati, la tensionedi uscita del circuito è data dalla relazione:

Vout = (Vd1+Vd2+Vd3+Vbe2)(1+R1/R2)Dove Vd1, Vd2 e Vd3 sono le tensioni di soglia deirispettivi diodi e Vbe2 la tensione tra base ed emet-titore di Q2.

R

D Sicuramente nei tuoi calcoli avrai assunto sicura-mente 0,7V come tensione ai capi di ciascun diodo.In realtà quando un diodo è in conduzione non èdetto che la tensione ai suoi capi sia precisamente0,7V, ma dipende dal tipo di diodo utilizzato e duediodi identici possono avere tensioni leggermentediverse. Normalmente i valori della tensione disoglia per un diodo varia da 0,2V (nei diodiSchottky) fino a 1,2V (nei LED). La soluzione è sosti-tuire i tre diodi in serie con un diodo Zener da 2Vcollegando l’anodo alla massa. In alternativa è pos-sibile scegliere tre diodi che abbiano una tensione disoglia vicina agli 0,7V, oppure usare un trimmer alposto di R1 in modo da poter variare leggermente ilguadagno del sistema ed ottenere i 5V in uscita.

Dubbi, perplessità,malfunzionamenti, opinioni,commenti o richieste? Inviateli a: [email protected]

Oppure scriveta a:Mailbox - Redazione di Fare ElettronicaInware srlVia Cadorna, 27/31 - 20032 Cormano (MI)

Le lettere più interessanti saranno pubblicate in queste pagine.Per quanto possibile, inoltre, cercheremo di dare una risposta privata achiunque ci scriverà via email.

mailb

ox

MAILBOX6

Figura 1: L’alimentatore progettato da Daniele

MAILBOX-impaginato 1-10-2004 16:43 Pagina 6

Page 6: Fare Elettronica - FE 233.pdf

PROBLEMI CON IL CD “ANNATA 2003”Ho acquistato recentemente il CD-ROM Fare Elettro-nica “Annata 2003”, ma quando tento aprire il pdfdi una rivista il mio PC si blocca. Ho un Pentium166MHz con 64Mb di RAM. Potete aiutarmi?

Maurizio Vincenti

I file PDF delle riviste contenuti nel CDROM“Annata 2003”, sono stati realizzati utilizzando unaelevata risoluzione al fine di ottenere delle stampedi ottima qualità, per questo motivo le dimensionidi tali file sono di circa 50-60Mb. Aprire un file diqueste dimensioni con un PC avente un quantitati-vo di memoria RAM non troppo elevato (come nelcaso del lettore) provoca un rallentamento delleprestazioni del PC talvolta assimilabile ad un bloccototale del sistema. In realtà il sistema non è blocca-to, ma sta eseguendo un largo numero di opera-zioni di “swapping” (mappatura di pagine dimemoria su hard disk) per poter aprire il file.Consigliamo quindi almeno 128Mb di RAM e diutilizzare versioni di Acrobat Reader aggiornateanche se i pdf contenuti nel CDROM sono statitestati con la versione 6.1 presente nel CD stesso.Il problema segnalatoci dal lettore, non si presentacon il CDROM “PIC microcontroller By Example”disponibile già da settembre, in quanto in questocaso i file pdf sono di dimensioni minori contenen-do ciascuno una singola lezione del corso.

DIODO VARICAPSpettabile redazione, ho sentito parlare di diodi vari-cap. Vorrei sapere cosa sono e come funzionano.Grazie e complimenti per la rivista che seguo semprecon molta attenzione.

Gianfranco Chiarini

Un diodo VARICAP è un diodo che ha la pro-prietà di offrire una capacità diversa a seconda dellatensione inversa applicata ai suoi capi. Il suo com-portamento è quindi assimilabile ad un condensa-tore il cui valore capacitivo è controllabile da unatensione. Un diodo varicap (VARIable CAPacitor) vautilizzato in polarizzazione inversa ovvero con latensione sul catodo maggiore di quella sull’anodo.Il suo funzionamento si basa sulla modulazionedella zona di svuotamento in prossimità della giun-

R

D

R

D zione interna. La zona di svuotamento è una zonain cui non ci sono cariche libere, ma solo ioni fissiquindi la struttura è molto simile ad un condensa-tore a facce piane e parallele. Aumentando la ten-sione inversa, la zona di svuotamento si allarga,quindi la capacità diminuisce. Questo effetto è tipi-co di tutti i diodi, ma per i VARICAP è molto più

accentuato. Nellafigura seguente èriportato il simboloelettrico del diodovaricap.

OSCILLATOREPer eseguire l’allineamento di una coppia di walkie-talkie avrei bisogno di un oscillatore in banda citta-dina che possa coprire i 27MHz che sia economico evelocemente realizzabile. Grazie per la vostra even-tuale risposta.

Marco Celi

È possibile utilizzare il circuito di figura 3 cheè un oscillatore Colpitts in cui il transistor lavora conbase a massa attraverso un condensatore da 4,7nF.La sintonia grossa avviene regolando il nucleo dellabobina, mentre quella fine è stabilita dalla capacitàdei diodi varicap la quale dipende, a sua volta, dallatensione ad essi applicata dal trimmer. Il segnalegenerato si sviluppa ai capi della bobina il cui secon-dario lo mette a disposizione con una impedenza di100 Ohm. Il transistor è al germanio per frequenzeelevate (può essere usato anche un AF239), mentreil primario della bobina è formato da 9 spire di filoda 0,25mm avvolte su un supporto da 6mm connucleo. Il secondario è un link da due spire dellostesso filo avvolte sopra il precedente.

R

D

MAILBOX 7

Figura 2: Simbolo elettrico del diodo Varicap

Figura 3: Oscillatore Colpitts

MAILBOX-impaginato 1-10-2004 16:43 Pagina 7

Page 7: Fare Elettronica - FE 233.pdf

NEWS Tig con corrente conti-nua in uscita da 80 a 200A, dove, a causa dellapresenza di picchi di ten-sione, viene raccoman-dato l’utilizzo di disposi-tivi a 600 V.

readerservice.it 423 - 55

RELÈ DI POTENZAPER PCB

Il nuovo relè di potenzaserie Rx per Pcb di TycoElectronics è realizzatocon contatti senza cad-mio, conformi alle diret-tive RoHs.Ha le stesse portate dicontatto, specifiche dibobina e parametri di iso-lamento dei tradizionalirelè di potenza per Pcbalti 25,5 mm, come laserie Schrack Rp di TycoElectronics stessa, ma sipresenta in un allog-giamento di basso profilo,15,7 mm, come i relè dinuova generazione.Disponibile con “cover”opaco (bianco) oppuretrasparente, ha la piedina-tura standard di 3,5 e 5mm. Proposto in versioniunipolari da 6 o 12 A,bipolare 8 A e bobina inDc e in Ac, temperatura difunzionamento compresatra -40 e +85 gradi C (+70gradi C per le versionibipolari in Ac), è approva-to Ul e Vde.

readerservice.it 423 - 57

423

Questo spazio è gentilmen-te offerto da EONews, ilQuindicinale di notizie ecommenti per l’industriaelettronica di VNU BusinessPublications Italia.

IDEE DI PROGETTO: LANUOVA INIZIATIVASUL WEB DI ELETTRO-NICA OGGI

“Idee di progetto – DesignIdeas” è la nuova rubrica diElettronica Oggi che è statalanciata dal mese diSettembre 2003. Caratteri-stica saliente di questa nuo-va iniziativa è che sarà com-pletamente ed esclusivamen-te on line ed accessibile dalsito www.ilb2b.it.L’obbiettivo principale è crea-re una vera e propria libreriadi idee alla quale tutti coloroche operano in maniera pro-fessionale nel mondo dell’elet-tronica possano “catturare”informazioni e suggerimentiutili per il loro lavoro quotidia-no. Questo nuovo strumentovi permette di scaricare, conun solo click, tutte le risorsenecessarie per risolvere velo-cemente qualsiasi problemae, in ultima analisi, minimiz-zare il time to market.

DRIVE PER MOTORI PASSO-PASSO ELCAM, distributoreesclusivo per il territorioitaliano degli azionamen-ti Copley Controls, intro-duce sul mercatoStepNet, il drive permotori passo-passo coninterfaccia CANopen chepuò essere implementatonelle reti CANopen finoad oggi riservate ai soliservoazionamenti.StepNet offre alte perfor-mances nel controllo deimotori passo-passodando inoltre la possibili-tà di scegliere il case piùadatto all’applicazione(card, panel, module). StepNet può essere uti-lizzato per applicazionimultiasse su reteCANopen (DSP-402 pro-tocol); l’intelligenzaintegrata gli permette dieseguire profili point topoint con curve ad ”S”,profili complessi, coninterpolazioni polino-miali, dando informazio-ni di posizione, velocitàe tempo.StepNet utilizza un con-trollo ad orientamentodi campo per massimiz-zare le prestazioni velo-cità/coppia del motore.Un circuito di dampingpermette lo smorzamen-to delle oscillazioni eriduce i tempi di assesta-mento della velocità. Ildrive pilota il motore apasso intero, mezzopasso e micropassi perincrementare la risolu-zione e diminuire il rip-ple di velocità.

readerservice.it 423 - 53

HIP OTTICIIntense ha in corso la fab-bricazione di chip cheintegrano fino a 100 opiù componenti otticimultifunzione su una sin-gola piastrina. Questo notevole successodi integrazione dimostragli alti rendimenti conse-guibili con l’esclusivoprocesso Qwl di Intense,per mezzo del quale èpossibile rendere disponi-bile una piattaforma percostruire affidabilmentechip ottici in grado di for-nire considerevoli ridu-zioni in termini di dimen-sioni e costi in applicazio-ni quali networking otti-co, stampa e difesa.

readerservice.it 423 - 54

DIODI DIFFUSI ALPLATINOInternational Rectifier haintrodotto i diodi epitas-siali a 600 V diffusi al pla-tino e a ripristino veloce- 60Apu06 e 60Epu06. Il processo di diffusionedel platino controllaaccuratamente il tempodi vita dei portatori dicarica. La capacità di stabilire oregolare le caratteristi-che (velocità) di ripristi-no del diodo permette diottimizzare prestazionied il rendimento. Leapplicazioni per i nuovidiodi comprendono ilraddrizzamento di uscitanegli alimentatori indu-striali a commutazione.Ad esempio, sono moltoadatti alla realizzazionedi saldatrici ad alta fre-quenza, in alternata e

NEWS8

NEWS-233 15-10-2004 16:44 Pagina 8

Page 8: Fare Elettronica - FE 233.pdf

IC CONTROLLER

Isl6227 è il nome di unnuovo Ic controller Pwmdoppio, progettato daIntersil per alimentarememorie Ddr, schedegrafiche, chipset ed altrisistemi nei Pc notebook. La sua ampia gamma ditensioni d’ingresso per-mette la conversionediretta della tensione daun adattatore Ac/Cc, daun accumulatore al litio-ione o da un bus di siste-ma a 5 o 3,3 V. Si pro-pone come un dispositi-vo migliorativo a piedi-natura compatibile perIsl6225.

readerservice.it 423 - 60

MICROCONTROLLORIRISCToshiba ha annunciatol’introduzione di unanuova famiglia di micro-controllori Risc a 32 bit ea chip singolo a tecnolo-gia Mips. I nuovi disposi-tivi Tx19A70 offronocontemporaneamente ilcontrollo vettoriale permotori azionati da inver-ter e il controllo applica-tivo specialistico percondizionatori d’aria,lavatrici e impianti direfrigerazione. È caratte-rizzata da un nucleo dielaborazione Tx19A Risca 32 bit e ad alte presta-zioni di recente sviluppoed include sia l’architet-

tura Misp32 Isa a 32 bitper la velocità e l’Ase diMips16e, un set di istru-zioni ad alta efficienza dicodice e che contieneistruzioni aggiuntive diToshiba.La maggior parte delleistruzioni può essere ese-guita in un solo ciclo di17,8 ns.

readerservice.it 423 - 61

MOSFET DI POTENZAFinalizzato ad interruttoridi batterie, amplificatoridi potenza, interruttori dicarico e applicazioni diricarica, il nuovo Mosfetdi potenza a canale pchipscale Micro FootSi8413Db di Siliconix(Silverstar-Celdis) erogauna resistenza di on maxdi appena 48 mohm adun gate drive di 4,5 V,con tensione di rottura di-20 V. Misurante appena1,54 x 1,54 x 0,62 mm,offre prestazioni compa-rabili a quelli di dispositi-vi racchiusi in packageTsop-6 occupando unquarto dello spazio.Se utilizzato in Pda, tele-foni cellulari ed altri pro-dotti elettronici portatili,consente di rendere piùpiccoli e sottili i prodottifinali, per aggiungervipiù funzioni, e/o perestenderne i tempi diesecuzione tra ricarichedi batterie.

readerservice.it 423 - 63

CONTROLLER PWMTexas Instruments hapresentato un innovativocircuito integrato di

gestione della potenzaper convertitori a bassatensione di uscita e adalta densità. Siglato Ucc2540, con-cerne un nuovo control-ler Pwm sincrono, latosecondario, che semplifi-ca il progetto di applica-zioni con alimentazionidi uscita multiple, qualimoduli di comunicazio-ne dati e telecom, ali-mentatori industriali,computer, strumentazio-ne medicale e di prova ealimentatori mercantili. In grado di supportareun intervallo di tensionidi alimentazione iningresso da 2,7 a 35 V,può funzionare da unbus 3,3 V e pilota dueMosfet a canale N in sin-cronia ad una frequenzadi commutazione fino a1 MHz per erogare cor-renti elevate ad alti ren-dimenti, minimizzandonel contempo le dimen-sioni di induttori e con-densatori.

readerservice.it 423 - 64

IC TRANSPONDEREm Microelectronics (EbvElektronik) propone unafamiglia di circuiti integratiRfid che funziona a 13,56MHz per sistemi di identifi-cazione senza contatto.Lafamiglia è composta daidispositivi: Em4035, Em-4135, Em4034 e Em4094ed è realizzata con la tec-nologia Rfid da 13,56 MHze dimostra l’impegno del-l’azienda nel coprire tuttele frequenze Rfid al fine dioffrire la massima flessi-bilità. Aderente alla

norma Iso15693, è ingrado di leggere 20-40etichette/s.

readerservice.it 423 - 65

MOLTIPLICATOREVETTORIALEAnalog Devices haampliato la sua famigliadi Ic Rf ad alte prestazio-ni con il moltiplicatorevettoriale a due canaliAdl5390 per applicazionidi controllo di fasi e gua-dagni. In grado di sosti-tuire fino a sei compo-nenti discreti in prece-denza necessari per ese-guire controlli di fasi eguadagni in apparecchia-ture di infrastrutturewireless, è particolar-mente adatto per con-nessioni in banda larganell’ultimo miglio qualiLmds, Wll e apparecchia-ture di infrastrutture cel-lulari per Gsm, W-Cdmae Cdma2000.

readerservice.it 423 - 67

POWERMOSFETNec Electronics ha com-mercializzato una nuovaserie di PowerMosfetrealizzata con l’avanzatatecnologia Umos-4.La nota serie Np di Nec èstata ampliata con lo svi-luppo di 15 nuovi pro-dotti, puntando al mer-cato dei dispositivi abassa tensione (30, 40 e55 V) quali il settoreautomotive. Questi nuo-vi prodotti sono disponi-bili in package compati-bili con i popolari To-252e To-263 e sono caratte-rizzati da resistenze

NEWS 9

NEWS-233 1-10-2004 16:45 Pagina 9

Page 9: Fare Elettronica - FE 233.pdf

estremamente basse,alte correnti e stabilità intemperatura fino a 175gradi C. La caratteristicaprincipale è la resistenzadi conduzione Rdsn(on)ultrabassa, fino a 1,7mohm max (a 30 V, To-263Zp).

readerservice.it 423 - 68

SWITCH USBFairchild Semiconductorha annunciato l’imme-diata disponibilità delsuo nuovo Fsusb11, undoppio switch Usb Spdt,a larghezza di banda ele-vata, a bassa potenza,fornente multiplessag-gi/demultiplessaggi arapidi tempi di commu-tazione di segnali Usb1.1 e audio analogici.Progettato specificata-mente per applicazioniUsb, è ideale per applica-zioni di commutazionein telefoni cellulari ultra-portatili, computer eperiferiche, prodottielettronici di consumoed altri dispositivi dotatidi porte Usb 1.1.Fornisce prestazionisuperiori tramite bassoconsumo di potenza,eccezionale protezioneEsd e bassa distorsionedelle armoniche totali.È alloggiato in un packa-ge Micropak che misuraappena 1,6 x 2,1 mm.

readerservice.it 423 - 70

AMPLIFICATORE PERLARGA BANDANational Semiconductorpresenta gli amplificatorihigh-speed LMH6738 e

LMH6739, entrambicreati utilizzando la tec-nologia di processo pro-prietaria di NationalVIP10, sono destinati alleapplicazioni che richie-dono una larga bandapassante e una bassa dis-torsione. Con una bandapassante a piccolo segna-le di 750MHz questi dis-positivi ad alte prestazio-ni trovano applicazionenel pilotaggio di segnalivideo ad alta risoluzionenei proiettori LCD, nelleapplicazioni multimedia-li, nello switching e rou-ting dei segnali video,per conference room eper i sistemi HDTV.

readerservice.it 423 - 71

PROCESSORED’APPLICAZIONESh-Mobile3 (Sh73180) èil prossimo modello adalte prestazioni dellaserie di processori d’ap-plicazione Sh-Mobile persistemi di telefoniamobile annunciato daRenesas Technology.Incorpora il nuovo coreCpu Risc Sh4Al-Dsp a 32bit, che offre prestazionisuperiori di circa 2,3volte rispetto ai prece-denti modelli.Integra, inoltre, unmotore per la graficabidimensionale e tridi-mensionale, un accelera-tore hardware fullMpeg-4 e supporto permodulo fotocamera da 3megapixel.Queste caratteristichepermettono di eseguiresvariate tipologie di appli-cazioni multimediali

NEWS10

COME OTTENERE MAGGIORI INFORMAZIONIEONews offre il servizio “reader service” che vi consente, uti-lizzando l’apposito codice riportato alla fine di ogni news, diricevere maggiori informazioni.

Visitate il sito www.readerservice.it e compilate la cartolinavirtuale con i vostri dati, il numero della rivista, questo mese il423, ed i numeri di reader service presi dalle notizie che vi inte-ressa approfondire.

EONEWS provvederà, tempestivamente, a contattare leaziende interessate, che invieranno al vostro indirizzo tutta ladocumentazione disponibile.

avanzate per i telefoni cel-lulari di prossima genera-zione di alta gamma.

readerservice.it 423 - 73

MEMORIA SDRAMLa Sdram 32 M x 72 diWhite Electronic Designs èuna memoria Dram, Cmosad alta velocità utilizzante5 chip contenenti536.870.912 bit. Ciascunchip è configurato interna-mente come una Dram abanchi quadrupli coninterfaccia singola.Presenta frequenze diclock di 125 e 100 MHz edutilizza architetture cana-lizzate interne per ottene-re funzionamenti ad altavelocità e banchi interniper nascondere precarichee accessi a file, consenten-do cambi di indirizzi dicolonne per ogni ciclo diclock. Lunghezze di burstprogrammabili compren-dono 1, 2, 4, 8 o paginecomplete. Offre 8.192 ciclidi refresh e include moda-lità di autorefresh e refreshautomatici e precaricaautomatica. È racchiusa inun package Pbga, 32 x 25mm, e pesa 2,5 g.

readerservice.it 423 - 74

MEMORIA FLASHLa memoria Flash 3V 64Mbyte (W78M64V-Xsbx)di White ElectronicDesigns è stata proget-tata per complementareprocessori e controlloridi memorie ad alte pre-stazioni. È configurabile dall’u-tente come 8 M x 64, 2banchi di 8 M x 32 o 4banchi di 8 M x 16 edoffre risparmi di spaziodel 31% in confrontocon densità equivalentiin package chip scale,diminuzioni di I/O del50% e conteggi di partiridotti. Presenta tempidi accesso di 70, 90,100 e 120 ns.Funzionalità Read/Writesimultanee consentonootto letture continue daun banco eseguendocontemporaneamentefunzioni erase/program inun altro, con commuta-zione a latenza zero daoperazioni di lettura aquelle di scrittura. Quattrobanchi distinti permetto-no fino a 4 operazionisimultanee/dispositivo. Le opzioni di I/O disponibi-li comprendono 1,8 e 3 V.

readerservice.it 423 - 76

NEWS-233 1-10-2004 16:45 Pagina 10

Page 10: Fare Elettronica - FE 233.pdf

NEWS-233 1-10-2004 16:45 Pagina 11

Page 11: Fare Elettronica - FE 233.pdf

CONTROLLO ELETTRONICO DI VOLUME CON MAX5407Il MAX5407 è un potenziometro digitale idealeper applicazioni audio. Una volta abilitato dal pinCS, è possibile scegliere l’incremento o il decre-

24 mento della resistenza mediante il pin U/D.La funzionalità AERO CROSSING abilitabilemediante il pin ZCEN permette di variare la resi-stenza solo quando la tensione ai capi del poten-ziometro è zero: in questo modo si riduce drasti-camente la distorsione di segnali audio. In figurauna applicazione per il controllo del volume.

MINI AMPLIFICATORE DI POTENZA DA 1WCON NCP2890NCP2890, un amplificatore di potenza partico-larmente adatto ad applicazioni miniaturizzateviste le dimensioni ridottissime ed i minimicomponenti esterni richiesti per il corretto fun-zionamento. È in grado di fornire una potenzadi 1W su un carico di 8 Ohm se alimentato a5V, oppure, 320mW su 4 Ohm con alimenta-zione a 2,6V.

25

Dal blocco note di Fare Elettronicauna raccolta di idee da tenere semprea portata di mano

Questa rubrica ha lo scopo di fornire degli schemi

applicativi o idee di progetto dei componenti

elettronici più interessanti, selezionati per voi

dalla redazione. Tutti gli schemi presentati sono

elaborazioni di quelli ufficiali proposti dai produttori

nella documentazione ufficiale.

note

pad

NOTEPAD12

Notepad-impaginato 1-10-2004 16:46 Pagina 12

Page 12: Fare Elettronica - FE 233.pdf

RS232 IN WIRELESS BLUETOOTH CON ILMODULO HCS-100HCS-100 è un modulo Bluetooth che consente iltrasferimento di segnali RS232 via radio secondolo standard Bluetooth. Dispone di tutti i segnaliRS232 in TTL che invia via radio attraverso l’an-tenna integrata. In figura una tipica applicazioneper la remotizzazione di un pannello operatore suun PLC eliminando così il cavo seriale.

FILTRO ANTI-ALIASING DIGITALE PROGRAMMABILELTC1564 è un filtro digitale anti-aliasing con fre-quenza di taglio e guadagno programmabili. Può

27

26

essere alimentato da 2,7V a 10V. Come mostratoin figura i limiti di programmabilità vanno da unguadagno unitario (0dB) e frequenza di taglio di10KHz fino ad un guadagno di 25dB e frequenzadi taglio di 150KHz.

MAX4734: MULTIPLEXER ANALOGICO A 4 CANALIIl MAX4734 è un multiplexer analogico a 4 cana-li prodotto da Maxim. Consente di riportare inuscita il segnale analogico di uno dei quattroingressi a seconda della combinazione dei dueingressi di controllo. È alimentabile con tensionesingola da 1.6V a 3,6V ed assorbe una potenzainferiore a 4mW se alimentato a 3V. Gli ingressi dicontrollo sono da 1,8V CMOS compatibili e laresistenza di contatto è dell’ordine di 0.8W. Infigura è riportato il pinout, la tabella di verità edil grafico della resistenza di contatto al variaredella tensione di uscita VCOM e della tensione dialimentazione V+.

28

NOTEPAD 13

Notepad-impaginato 1-10-2004 16:47 Pagina 13

Page 13: Fare Elettronica - FE 233.pdf

IL PROTOCOLLO MODBUS

IL PROTOCOLLO MODBUSUno dei protocolli più diffusi in ambito industrialeè quello MODBUS. Vi sono sostanzialmente dueimplementazioni:

• Quella che fa capo ad un collegamento o BUSseriale RS232/RS485.

• Quella che fa capo ad un collegamento o BUS direte TCP/IP od UPD.

In questo articolo ci occuperemo soltanto di quellosu BUS Seriale e delle sue due implementazioni,quella RTU e quella ASCII.

Regole generaliEntrambe le implementazioni sono del tipoMaster/Slave. Solo un Master nel medesimo tempopuò essere connesso ed effettuare una richiesta chetransiterà sul BUS. Più Slave sino ad un massimo di247 possono essere invece connessi al medesimoBUS e rispondere alle richieste fatte dal Master.Solo il Master può iniziare una comunicazione,quindi gli Slave non possono in maniera arbitrariaattivare una comunicazione. Oltretutto nessunoSlave può comunicare con un altro Slave. Come già

detto solo una transazione alla volta può transitaresul BUS.Il Master effettua le richieste agli Salve in due modi:

UNICAST• In esso il Master indirizza un singolo Slave.

Appena ha ricevuto e processato la richiesta delMaster, lo Slave ritorna quanto richiesto.

• Sostanzialmente ogni transazione consiste in duemessaggi o telegrammi, cioè richiesta da partedel master a cui corrisponde una risposta daparte dello Salve.

• Nel medesimo momento soltanto uno Salve puòessere indirizzato tra 1 e 247 possibili.

BROADCAST• In esso il Master invia una richiesta / telegramma

a tutti gli slave presenti sul BUS. Non viene effet-tuata alcuna risposta da parte degli Slave. Si trat-ta essenzialmente di una richiesta di scrittura daparte del master da far eseguire a tutti gli Slavepresenti.

• L’indirizzo utilizzato è 0.

Regole di indirizzamentoGli indirizzi utilizzabili sono 256 e sono così suddivisi:

IL PROTOCOLLO MODBUS

TECNOLOGIE SPERIMENTALI14

TECNOLOGIE SPERIMENTALI

APPLICAZIONI EMBEDDEDAPPLICAZIONI EMBEDDED

Gianroberto [email protected]

Prima di vedere l’implementazione vera e propria dell’applicazione in VisualBasic, vedremo in questa puntata il protocollo ModBus ed introdurremo anchei concetti di formato dati del tipo Big Indian e Little Indian. Nelle puntatesuccessive ne implementeremo un sottoinsieme denominato ASCII che, verràincapsulato nei messaggi UDP che, verranno scambiati tra l’emulatore PLC(emula solo dal punto di vista del comportamento e non riguardoall’implementazione del 6113-3) ed il sistema di controllo e supervisione.

terza parte

NEGRI-impaginato ok 2 col 1-10-2004 16:50 Pagina 14

Page 14: Fare Elettronica - FE 233.pdf

Protocol Data Unit che, è indipendente dal tipo diBUS utilizzato per la trasmissione. Questo vuol direche esso è valido sia per il BUS seriale che TCP/IP. IlPDU è composto da due campi:

• 0 Broadcast.• 1 – 247 Indirizzi individuali Slave.• 248 - 255 Riservati.

L’indirizzo 0 come già detto è riservato al Brodcasted è riconosciuto da tutti gli Slave. Il Master non hauno specifico indirizzo, solo gli Slave lo hanno e lostesso è unico per tutto il BUS seriale Modbus.Descrizione del frameIl ModBus Application protocol definisce un livellobase dello stesso denominato PDU dall’Inglese

TECNOLOGIE SPERIMENTALI

TECNOLOGIE SPERIMENTALI 15

Figura 1: Struttura del ModBus PDU

Figura 3: Diagramma Temporale; Master/Slave

Figura 2: Struttura di un telegramma per il BUS Seriale

NEGRI-impaginato ok 2 col 1-10-2004 16:50 Pagina 15

Page 15: Fare Elettronica - FE 233.pdf

• Codice Funzione• Dati

La mappatura del protocollo nell’ambito del BUSseriale aggiunge alcuni campi al PDU prima visto elo stesso diventa:• Indirizzo• Codice Funzione• Dati• CRC/LRC

Vediamoli in dettaglio. Iniziamo dal campoIndirizzo che, serve come fa comprendere il nomead indirizzare in maniera univoca uno degli Slavecollegati al BUS.Il campo Codice Funzione trasmette allo Slave indi-rizzato una precisa richiesta. Ad esempio uncomando di scrittura di una Word o di uno o piùBit. Ad esso segue una area dati in cui sono conte-nuto i parametri della funzione trasmessa, nel casodi una richiesta da parte del Master oppure i datirichiesti o la conferma dell’avvenuta esecuzionedella funzione trasmessa, nel caso di uno Slave.L’ultimo campo contiene il risultato di un calcoloridondante di controllo effettuato sul contenutodel messaggio. L’algoritmo utilizzato è il CRC per

l’RTU e L’LRC PER L’ASCII.

In figura 3 possiamo osservare un diagramma tem-porale raffigurante 3 tipici esempi di comunicazio-ne Master/Slave.

Nota: la durata delle fasi delle RICHIESE, delle RISPO-STE e del BROADCAST, dipende dalle caratteristichedella comunicazione ( Lunghezza del frame, velocitàdella linea...).La durata delle fasi delle ATTESE e delle PREPARAZIO-NI dipende dal tempo che, lo Slave impiega per ela-borale.

IMPLEMENTAZIONE MODBUS RTUAnalizziamo ora il ModBus RTU. Iniziamo dal signi-ficato di RTU: Remote Terminal Unit.In esso ogni BYTE composto notoriamente da 8 Bit,contiene due caratteri Esadecimali, ciascuno com-posto da 4 Bit, Nibble in gergo informatico.

TECNOLOGIE SPERIMENTALI

TECNOLOGIE SPERIMENTALI16

Figura 4: Struttura di un messaggio/telegramma RTU

Figura 5: Tempificazioni tra i messaggi RTU

Figura 6: Tempificazioni tra i messaggi RTU con evidenziato il messaggio stesso

NEGRI-impaginato ok 2 col 1-10-2004 16:50 Pagina 16

Page 16: Fare Elettronica - FE 233.pdf

3,5 caratteri equivalgono a 1,750 ms, mentre 1,5caratteri equivalgono a 0,750 ms. Tali tempi valgo-no anche per velocità di trasmissioni maggiori di19.200 Bps. Questo significa che tempificazioni piùridotte non vengono richieste anche se la velocitàdel BUS seriale aumenta notevolmente. Vediamo iconcetti espressi in figura 5. In essa possiamo osser-vare orizzontalmente la linea del tempo ed all’iniziodella stessa troviamo un intervallo di tempo diappunto 3,5 caratteri. Segue il messaggio ModBus

È una forma di trasmissione molto compatta e velo-ce rispetto a quella ASCII. In essa ogniMessaggio/Telegramma viene trasmesso inserito inun flusso continuo di caratteri.Per determinare l’inizio o la fine di un messaggio èstato convenuto che deve passare un tempo ugua-le o maggiore a 3,5 caratteri e che nell’ambito dellatrasmissione di ogni carattere del messaggio nontrascorra più tempo di 1,5 caratteri. Traducendoliin millisecondi in una trasmissione a 19.200 Bps

TECNOLOGIE SPERIMENTALI

TECNOLOGIE SPERIMENTALI 17

Figura 7: Tempificazioni tra caratteri nell’ambito di un messaggio

Idea Elettronica: Idea Elettronica: Accendiamo le tue IdeeAccendiamo le tue Idee

LUCI LUCI PSICHEDELICHEPSICHEDELICHE

SISTEMA MODULARE DILUCI PSICHEDELICHECON MICROFONO INTER-NO, FORMATO DA 3 LAM-PADE DA 60W COMPRE-

SE. CONTROLLI: BASSI, MEDI, ALTI - ALI-MENTAZIONE: 230Vac, DIMENSIONI: 320 x240 x 120 mm - PESO: 1.5kg

Cod. MODLIGHT Euro 23,00Cod. MODLIGHT Euro 23,00

Tutti i prezzi si intendono IVA compresa. Per ordini e informazioni:IDEA ELETTRONICA - Via San Vittore n°24/A - 21040 Oggiona con S. Stefano - Varese - ITALY - Tel.0331/502868 Fax 0331/507752.

Visitate il nostro sito: WWW.IDEAELETTRONICA.IT

Mini Elicottero RadiocomandatoMini Elicottero Radiocomandato

Incredibile Elicottero elettrico, ideale per chinon vuole spendere molto. E’ possibile mou-vere l'elicottero in tutte le direzioni. Vola a piùdi 30 metri d’altezza per un massimo di 4minuti, decolla direttamente dalla sua base di

lancio, la base di lancio è usata per ricaricare le batterie ricarica-bili dell’elicottero (bastano solo due minuti). Lughezza Elicottero:45 cm, Lunghezza pale: 37cm, Peso 200g, frequenza di lavororadiocomando ed Elicottero 49MHz, il kit comprende: l'elicottero,il radiocomando, la base di carica (completa di batterie ricaricabi-li), il caricabatteria. Necessarie 8 pile stilo AA da 1,5V per il radio-comando (non incluse).

Cod. MINIELI Euro 130,00 Cod. MINIELI Euro 130,00

VIDEO PLAVIDEO PLAYER e RECORDERYER e RECORDER

Portatile con Hard Disk daPortatile con Hard Disk da

20Gb, Display LCD da 3,5"20Gb, Display LCD da 3,5"Registratore portatile Audio/Video dalledimensioni più che ridotte in grado di regi-strare direttamente dalla TV e dotato di fun-zione di programmazione delle registrazioni.Dispone di un hard hisk da 20GB, displayTFT LCD a colori da 3,5", batterie al litio

ricaricabili removibili, input/output audio, input/output video e interfaccia USB2.0. Funzioni Multimediali: VIDEO: Lettore/Registratore di MP4 in formato DivX e XviD. Può contenere 40 ore di video visualizzabili su monitorLCD integrato o su qualsiasi Televisione. FOTO: Lettore di JPEG e BPM(CompactFlash Reader integrato) visualizzabili su monitor LCD integrato o suqualsiasi TV Color. Può contenere 200.000 immagini. AUDIO: lettore/registra-tore di MP3 e registratore vocale. Può contenere 300 ore di musica e 700 oredi registrazione vocale. DATI: 20GB per qualsiasi tipo di file compatibile PC eMAC. Include: cuffie stereo, cavi audio e video, adattatori scart, cavo USB2.0, Docking station e telecomando. Cod. Cod. AAV420 Euro 600,00V420 Euro 600,00

Micro registratore Micro registratore Audio digitale 96Audio digitale 96ore con porta USB, radio FM eore con porta USB, radio FM e

microfono Wmicrofono Wireless. ireless. Microscopico registratore audio conmemoria digitale che consente diregistrare fino a 96 ore. Si interfacciaad un PC tramite porta USB e vienerilevato come unità removibile ester-na. I messaggi si possono trasferiresull'Hard Disk del computer con un

semplice Copia/Incolla. Alimentazione a normalipile, batterie ricaricabili, (incluse) o mediante adat-tatore da rete. Vasta gamma di accessori tra cuimicrofono wireless, microfono esterno, auricolaresupplementare, radio FM, connettore per lineatelefonica, ecc. Sistema VOR per attivazione auto-matica della registrazione in presenza di segnalisonori.

Cod. RD96USB Euro 300,00Cod. RD96USB Euro 300,00

Mini Carro Mini Carro Armato da Armato da combattimentocombattimento

RadiocomandatoRadiocomandatoI Carriarmati radiocomandati piu piccoli delmondo che sparano un raggio ad infrarossi.Puoi simulare vere battaglie in quattro giocatori,

ogni carro armato reagisce ad ogni colpo ricevuto o sparato, in batta-glia ogni carro che viene colpito 4 volte viene escluso automatica-mente dal gioco, un piccolo led rosso ad intermittenza sulla torrettamostra lo stato di salute del mezzo. Carattestiche: Doppio motorino -Carica 3 minuti/autonomia 10 minuti - Rotazione 360° - Lung. 6 x 3Cm - Si ricaricano attraverso il radiocomando, l'autonomia è di circa10 minuti. Disponibile nelle seguenti versioni: Russian T34, GermanPanter, Sherman M4, German Tiger.

Cod. MINITCod. MINITANKRC Euro 41,00ANKRC Euro 41,00

SFERE SFERE LUMINOSELUMINOSEROTROTANTIANTI

2 SFERE LUMINOSE ROTANTI CONDIAMETRO DI CIRCA 10cm, IDEALIPER CREARE EFFETTI LUMINOSI,DISPONE DI INTERRUTTORE ON/OFF,ROTAZIONE CONTINUA (DESTRA OSINISTRA). 2 LAMPADE DA 12V 5WCOMPRESE, ALIMENTAZIONE 230Vac,DIMENSIONI: Ø360 x 190mm, PESO:0.8Kg.Cod. ROTCod. ROTOLIGHT Euro 20,00OLIGHT Euro 20,00

MACCHINAMACCHINA PER LE BOLLEPER LE BOLLEMacchina per generare grandi quantità diBolle ideale per feste. Alimentazione 220Vac,dimensioni 280x240x240mm, peso 3,2Kg.Utilizza liquido codice BUBBLELIQ5 noncompreso.

Cod. BUBBLEMACH Euro 36,00Cod. BUBBLEMACH Euro 36,00

NEGRI-impaginato ok 2 col 15-10-2004 17:10 Pagina 17

Page 17: Fare Elettronica - FE 233.pdf

RTU, poi un nuovo intervallo di 3,5 caratteri ed unaltro messaggio. L’intervallo che, osserviamodopo tale messaggio non è di 3,5 caratteri ma di4,5 caratteri. Infatti per determinare l’inizio/finedi un messaggio vengono accettati valori anchesuperiori a 3,5 caratteri. Nella figura 6 per riassu-mere troviamo un tempo di 3,5 caratteri cheidentifica l’inizio del messaggio, il messaggio edinfine sempre un tempo di 3,5 caratteri che nedetermina la fine.Come già detto esistono delle precise tempifica-zioni anche nell’ambito del messaggio stesso.Affinché il messaggio possa essere consideratovalido tra la trasmissione di un carattere ed il suc-cessivo non può trascorrere un tempo maggioredi 1,5 caratteri. Questo viene ben evidenziatodalla figura 7 dove troviamo due messaggi di cuiuno non valido (il secondo) a causa del fatto chetra un carattere ed il seguente il tempo trascorsoè maggiore di 1,5 caratteri. Tale messaggio vienescartato, non considerandolo valido.

Poiché si rende necessario essere totalmente sicu-ri che il messaggio sia veramente corretto, oltre letempificazioni è stato introdotto un ulteriore con-trollo il CRC.Si tratta di una verifica di ridondanza ciclica (inInglese cyclical redundancy checking o CRC). Lastessa viene applicata all’intero messaggio ed ilrisultato viene posto negli ultimi 2 Bytes dellostesso nei campi CRC appunto.Ecco come viene calcolato:

1. Caricare con il valore 0xFFFF (tutti 1) un regi-stro a 16 bit (8+8) denominato CRC Register.

2. Fare lo XOR del (primo) byte del messaggio con

il byte basso del CRC Register, e mettere il risul-tato ancora nel CRC Register.

3. Shiftare a destra di uno il CRC Register, carican-do con 0 il bit più significativo (msb).

4. Valutare il bit uscito a destra nell'operazione dishift:a. Se vale 0, ripetere dal punto 3 (altro shift)b. Se vale 1, eseguire lo XOR del CRC Registercol valore 0xA001

5. Ripetere i punti 3 e 4 fino ad effettuare 8 shift:a questo punto è stato elaborato il (primo) bytedel messaggio.

6. Ripetere i punti da 2 a 5 per tutti i byte del mes-saggio.

7. Il contenuto finale del CRC Register rappresen-ta il valore del checksum.

8. Scambiare l'ordine dei due byte del CRCRegister e accodarli al messaggio.

Nel punto 8 viene detto di scambiare i due Bytes,a tale proposito apriamo ora una parentesi sucome i due Bytes ottenuti dal calcolo vengonomemorizzati ed introduciamo i concetti di LittleIndian e Big Indian.

Little Indian e Big Indian sono i termini chedescrivono l'ordine con cui una macchina imma-gazzina i byte di una parola a 16 o 32 bits inmemoria.

Big Indian (l'indiano più grande) è l'ordine percui la parte più significativa viene scritta/memo-rizzata per prima, nel primo Byte o all'indirizzo piùbasso di memoria.

Little Indian (l'indiano più piccolo) è l'ordine percui la parte meno significativa viene scritta/memo-

TECNOLOGIE SPERIMENTALI

TECNOLOGIE SPERIMENTALI18

Figura 8: Struttura di un messaggio/telegramma ASCII

NEGRI-impaginato ok 2 col 1-10-2004 16:50 Pagina 18

Page 18: Fare Elettronica - FE 233.pdf

RTU: 41h Memorizzato in 1 ByteASCII: 4 e 1HEX: 34h e 31h Memorizzati in 2 Bytes

Come per l’RTU anche per l’ASCII esiste un con-trollo necessario per essere totalmente sicuri che ilmessaggio sia veramente corretto. È meno rigidoma altrettanto affidabile la sua sigla è LRC chesignifica Longitudinal Redundancy Checking che,tradotto in Italiano diventa Controllo RidondanteLongitudinale. Vediamo come si calcola:

1. Sommare tutti I Bytes contenuti nel messaggiocon esclusione del primo (:) e degli ultimi 2CR/LF e naturalmente dei due Bytes in cui dovràessere posto il risultato del calcolo LRC.

2. Sottrarre il valore esadecimale FFh (tutti I Bit a1) dal risultato. Questo produce un comple-mento a 1.

3. Sommare 1 al risultato. Questo produce un com-plemento a 2.

4. Porre il primo carattere esadecimale (HI) nelprimo Byte ed il secondo (LOW) nel secondoByte.

rizzata per prima, nel primo Byte o all'indirizzo piùbasso di memoria.

Vediamo un esempio: Ipotizziamo che, abbiamo effettuato il calcolo delCRC richiesto dal ModBus RTU e che il risultato sia1241h. Bene nell’ordine Big Indian i dati sarannoscritti/memorizzati esattamente come sono, senzaeffettuare alcuno scambio. Per cui verrà scrittoprima 12h e poi 41h.Invece nell’ordine Little Indian i dati sarannoscambiati, per cui verrà scritto/memorizzato prima41h e poi 12h. Da quanto detto si comprende cheil protocollo ModBus utilizza l’ordine Little Indianper scrivere/memorizzare i dati. Oltretutto questoformato e tipico dei Microprocessori Intel, mentreil Big Indian è tipico dei Microprocessori Motorola.Nota: attenzione quindi quando scambiamo dati trapiattaforme differenti... Se lo scambio non funzionapotrebbe essere dovuto al fatto che le stesse adottinoun formato di dati differenti!

IMPLEMENTAZIONE MODBUS ASCIIPassiamo ora al ModBus ASCII che, sarà poi l’im-plementazione che adotteremo.

Contrariamente al ModBus RTU nell’ASCII nonsono richieste tempificazioni strette che servono adeterminare la reale dimensione e correttezza delmessaggio. In esso l’inizio e la fine del messaggio èevidenziata da opportuni caratteri.Infatti, mediante il carattere : (3Ah in esadecimale)ha inizio il messaggio e mediante i caratteri CR edLF (0Dh e 0Ah in esadecimale) lo stesso termina.Nel caso arrivi un messaggio che non inizia o ter-mina con i caratteri previsti lo stesso sarà ignorato.

Rispetto il ModBus RTU esiste un ulteriore differen-za: In ASCII occorre un numero doppio di Bytes pertrasmettere lo stesso messaggio rispetto all’RTU.Quindi se per trasmettere l’indirizzo dello Slaveinteressato al messaggio, in RTU bastava un Byte inASCII ne occorrono due. Questo per un ovvio moti-vo, il numero costituito da due cifre esadecimaliche nell’RTU è contenuto in un unico Byte, in ASCIIdiviene due caratteri e quindi due Bytes.

Facciamo un esempio:

TECNOLOGIE SPERIMENTALI

TECNOLOGIE SPERIMENTALI 19

Figura 9: Suddivisione Codici Funzione ModBus

NEGRI-impaginato ok 2 col 15-10-2004 16:38 Pagina 19

Page 19: Fare Elettronica - FE 233.pdf

Codici funzione baseVediamo alcuni Codici Funzione utilizzati per lamaggiore nel protocollo ModBus. Essi permetto-no di accedere alle variabili contenute negliSlave.Normalmente la scambio di dati nel protocolloavviene sotto forma di Word che, per intendercisono variabili a 16 Bit composte da due Bytesposizionati come già detto secondo l’ordine LittleIndian, con cioè la parte meno significativa scrit-ta/memorizzata per prima, nel primo Byte oall'indirizzo più basso di memoria.

In figura 9 possiamo osservare le categorie deiCodici Funzione ModBus e vedere che sostanzial-mente sono suddivise in 2 categorie, vediamole:

Codici Funzione Pubblici• Sono predefini• Garantiti unici• Validati dall’organizzazione modbus.org• Esiste documentazione pubblica• Sottoposti a test di conformità• Documentati in MB IETF RFC• Include anche Codici Funzione non ancora utiliz-

zati ma, riservati per futuri utilizzi• Vanno dal Codice 1 al Codice 64, dal Codice 73

al 99 e dal Codice 111 al Codice 127

Codici Funzione definiti dall’Utilizzatore(Progettista del dispositivo ModBus)• Vanno dal Codice 65 al 72 e dal Codice 100 al 110• Possono essere implementati senza dover chie-

TECNOLOGIE SPERIMENTALI

TECNOLOGIE SPERIMENTALI20

Figura 10: Elenco Codici Funzione ModBus

NEGRI-impaginato ok 2 col 1-10-2004 16:50 Pagina 20

Page 20: Fare Elettronica - FE 233.pdf

ferenza e che, fa riferimento direttamente solo agliI/O Fisici e non eventualmente anche alla memoria.

Codice Funzione 03 (0x03) Leggi dai Registrisino ad un massimo di 125 per voltaQuesta funzione viene utilizzata per leggere il con-tenuto dei blocchi contigui dei registri interni. IlPDU specifica l’indirizzo di partenza ed il numero diregistri contigui da leggere. Come sempre per ilregistro 1 si parte dall’indirizzo 0. La risposta daparte dello Slave è contenuta in un blocco a cuisono assegnati due Bytes per ogni singolo registro.Nel primo Byte è contenuta la parte alta HI del regi-stro, mentre nel secondo Byte la parte bassa LOW.In Figura 13 possiamo vedere in basso un esempiodi richiesta e relativa risposta da parte dello Slave.

dere l’autorizzazione all’organizzazione mod-bus.org

• Rimane ovvio che lo stesso Codice Funzione puòessere utilizzato da più di un costruttore e questopuò portare all’esistenza di medesimi CodiciFunzione per applicazioni differenti.

In figura 10 possiamo osservare l’intero elenco deiCodici Funzione utilizzati dal protocollo ModBus.

Una premessa prima di addentrarci nella spiegazio-ne dei vari codici funzione, occorre evidenziare chei Bits che ad esempio vanno dal Bit 1 al Bit 16 inrealtà vanno indirizzati dal Bit 0 al Bit 15. L’indirizzoiniziale parte sempre da 0 e non da 1. In informati-ca quando si ha a che fare con Bit, Byte ed indiriz-zi il numero zero occupa sempre una posizione eper la precisione, quella iniziale.

Vediamo il funzionamento di alcuni dei CodiciFunzione presenti nell’elenco.

Codice Funzione 01 (0x01) Leggi CoilsQuesta funzione viene utilizzata per leggere lostato dei Bits contigui che vanno da 1 a 2000simultaneamente, con una unica richiesta. Nel PDUche viene inviato allo Slave oltre ovviamente ilCodice Funzione viene anche specificato l’indirizzoda cui iniziare la lettura e per quanti Bits contigui.Nella risposta lo Slave raggruppa i Bits in Bytes,divide cioè i Bits richiesti per 8 e li restituisce sottoforma di Bytes. Nell’esempio riportato nella partebassa della figura 11 possiamo vedere che parten-do dall’indirizzo esadecimale 00 13 (19 in decima-le) che corrisponde al Bit numero 20, viene richie-sto lo stato di 19 Bits consecutivi (00 13 in Hex).Dividendo 19 per 8 otteniamo 2 e rimangono 3Bits che vengono posti in un terzo Byte ponendo azero i restanti 5 Bit che lo compongono.Possiamo anche osservare come i Bits vengonorestituiti dallo Slave, nella forma cioè 27-20, 35-28,38-36.Il Bit più alto rimane a sinistra, come di convenzio-ne vengono normalmente rappresentati gli stessi.

Codice Funzione 02 (0x02) Leggi IngressiDiscreti (Fisici)Funzione molto simile alla precedente, l’unica dif-

TECNOLOGIE SPERIMENTALI

TECNOLOGIE SPERIMENTALI 21

Figura 11: Codice Funzione 01 Leggi Coils

Figura 12: Codice Funzione 02 Leggi Ingressi Discreti

NEGRI-impaginato ok 2 col 1-10-2004 16:50 Pagina 21

Page 21: Fare Elettronica - FE 233.pdf

Codice Funzione 04 (0x04) Leggi RegistroIngressoQuesta funzione viene utilizzata per leggere da 1 a125 Registri di Input da uno Slave. Il PDU specifical’indirizzo del registro di partenza ed il numero diregistri da leggere. L’indirizzo parte da 0. I dati con-tenuti nella risposta sono contenuti in un blocco di2 Bytes per ogni registro, in cui nel primo è conte-nuta la parte alta HI e nel secondo la parte BassaLOW.Codice Funzione 05 (0x05) Modifica/Scrive su diuna Singola Uscita o Bit (Coils)Questa funzione viene utilizzata per scrivere/modi-ficare una singola uscita o Bit. La modifica dellostato ON/OFF dell’uscita avviene mediante la scrit-

tura di una costante nel messaggio di richiestaverso lo Slave. La costante viene scritta in dueBytes. Per lo stato ON la costante da inserire nelprimo e secondo Bytes è 0xFF 0x00, mentre per lostato OFF è 0x00 e 0x00. Qualsiasi altro valore nonha effetto sullo stato dell’uscita. Il PDU specifical’indirizzo del Coil da modificare. Gli indirizzi par-tono da 0. Lo Slave risponde restituendo il coman-do inviato dal Master.

Codice Funzione 06 (0x06) Scrivi SingoloRegistroQuesta funzione viene utilizzata per scrivere/modi-ficare un singolo registro. Il PDU specifica l’indiriz-zo ed il valore da scrivere nel Registro. Anche inquesto caso gli indirizzi partono da 0. Lo Slaverisponde con un eco del comando contenente ilvalore cambiato nello Slave.

Codice Funzione 07 (0x07) Leggi lo Stato(Eccezione) [Solo per Seriale]Questa funzione viene utilizzata per leggere il con-tenuto degli 8 Bits di stato eccezione in un deviceremoto. Essa provvede un semplice metodo peraccedere a tali informazioni non disponibili altri-menti. La normale risposta fornita dal device con-tiene lo stato di tali Bits. Vengono inviati entro unByte.

Codice Funzione 08 – [00 -18] (0x08 – [0x00 –0x12] ) Diagnostica della linea serialeQuesta funzione provvede una serie di test per

TECNOLOGIE SPERIMENTALI

TECNOLOGIE SPERIMENTALI22

Figura 13: Codice Funzione 03 Leggi dai Registri sino ad un massimo di 125 per volta

Figura 14: Codice Funzione 04 Leggi Registri Ingresso Figura 15: Codice Funzione 05 Modifica/Scrive su di una Singola Uscita o Bit (Coils)

NEGRI-impaginato ok 2 col 1-10-2004 16:50 Pagina 22

Page 22: Fare Elettronica - FE 233.pdf

Sottofunzione 00 03Dati Richiesta Carattere ASCIIDati Risposta Eco della richiesta

04 Forza in stato di ascoltoServe per mettere uno Slave in stato di ascolto. In

testare la comunicazione seriale tra il Master e loSlave, permettendo anche di evidenziare eventualierrori interni allo Slave. Essa utilizza due codici fun-zione per definire il tipo di test da effettuare.Possono esserci molteplici cause che possonoimpedire la trasmissione tra il Master ed i vari Slave.Può anche capitare che uno Slave possa resettarsise riceve un codice funzione che non è in grado digestire. Questa funzione può essere utile perrimuovere od individuare delle situazioni di mal-funzionamento.Vediamo le varie opzioni:

00 Ritorna QueryI dati inviati allo Slave vengono restituiti per cui larichiesta da parte del master e la risposta delloSlave sono identiche. Si attiva una condizione diLoopback.Sottofunzione 00 00Dati Richiesta QualsiasiDati Risposta Eco della richiesta

01 Ripartenza opzioni comunicazioneIl device remoto posto sulla linea seriale viene ini-zializzato e fatto ripartire. Tutti gli eventi inerentialla comunicazione sono resettati. Funziona se nonè stata attivato lo stato di Ascolto.Quando il device remoto riceve la richiesta tenta unriavviamento ed esegue le relative prove di test pre-viste dal costruttore dello Slave. Il valore FF 00causa al ricevimento da parte dello Slave un Resetdel LOG degli eventi della comunicazione. Il valore00 00 genera invece un Riavvio.Sottofunzione 00 01 - 00 00Dati Richiesta 00 00 - FF 00Dati Risposta Eco della richiesta

02 Ritorna il registro di diagnosticaIl contenuto del registro diagnostico da 16 Bitsviene ritornato dallo Slave come risposta.Sottofunzione 00 02Dati Richiesta 00 00Dati Risposta 16 Bits Registro Diagnostica

03 Cambia il delimitatore ASCIIServe per cambiare il limitatore LF nell’ambito delprotocollo ASCII. Il codice ASCII che viene trasmes-so allo Slave sostituirà LF.

TECNOLOGIE SPERIMENTALI

TECNOLOGIE SPERIMENTALI 23

Figura 16: Codice Funzione 06 Scrivi/Modifica singolo Registro

Figura 17: Codice Funzione 07 Legge lo stato della Seriale

Figura 18: Codice Funzione 08 Diagnostica della linea seriale

NEGRI-impaginato ok 2 col 1-10-2004 16:50 Pagina 23

Page 23: Fare Elettronica - FE 233.pdf

questo stato lo Slave non risponde ai comandi chegli vengono inviati escluso 08 01 per toglierlo datale stato.Tutto il traffico a lui diretto viene monitorato. Il suowatchdog Timer viene azzerato ed i suoi controllibloccati.Sottofunzione 00 04Dati Richiesta 00 00Dati Risposta Nessuna risposta

10 Azzera contatori e registro diagnosticoAzzera i contatori ed il registro diagnostico a 16Bits.Sottofunzione 00 0ADati Richiesta 00 00Dati Risposta Eco della richiesta

11 Restituisce il contatore dei messaggiRestituisce quanti messaggi il device remoto haindividuato da:• L’ultima ripartenza/reset.• Ultimo Reset dei contatori.• Ultimo Avviamento.Sottofunzione 00 0BDati Richiesta 00 00Dati Risposta Numero Totale dei

Messaggi ricevuti

12 Restituisce il contatore degli errori di comu-nicazione.Restituisce il numero di errori CRC individuati da:• L’ultima ripartenza/reset,• Ultimo Reset dei contatori.• Ultimo Avviamento.Sottofunzione 00 0CDati Richiesta 00 00Dati Risposta Numero Totale degli

errori CRC

13 Restituisce il numero delle eccezioni ModBusRestituisce il numero delle eccezioni ModBus invia-te come risposta dallo Slave da:• L’ultima ripartenza/reset.• Ultimo Reset dei contatori.• Ultimo Avviamento.Sottofunzione 00 0DDati Richiesta 00 00Dati Risposta Numero Totale Eccezioni

TECNOLOGIE SPERIMENTALI

TECNOLOGIE SPERIMENTALI24

Figura 18b:Codice Funzione 08 Sotto opzioni

Figura 19: Codice Funzione 11 Acquisisce il contatore eventi della seriale

Figura 20: Codice Funzione 12 Acquisisce il LOG eventi della linea seriale

NEGRI-impaginato ok 2 col 1-10-2004 16:50 Pagina 24

Page 24: Fare Elettronica - FE 233.pdf

• Ultimo Avviamento.Sottofunzione 00 0FDati Richiesta 00 00Dati Risposta N° Totale dei Messaggi

senza risposta

16 Restituisce il numero di NAK dello SlaveRestituisce il numero di eccezioni NAK (NegativeAcknowledge) inviati dallo Slave come risposta alleRichieste/Messaggi inviati dal Master. Questo da:• L’ultima ripartenza/reset.• Ultimo Reset dei contatori.• Ultimo Avviamento.Sottofunzione 00 10Dati Richiesta 00 00Dati Risposta Numero Totale dei NAK

17 Restituisce il numero di eccezioni di occupa-to dello Slave.Restituisce il numero di messaggi a cui lo Slave ha

14 Restituisce il numero di richieste/messaggiinviati allo SlaveRestituisce il numero di messaggi inviati allo Slavein oggetto del test o di tipo Broadcast da:• L’ultima ripartenza/reset.• Ultimo Reset dei contatori.• Ultimo Avviamento.Sottofunzione 00 0EDati Richiesta 00 00Dati Risposta Numero Totale dei

Messaggi inviati

15 Restituisce il numero di messaggi a cui loSlave non ha rispostoRestituisce il numero di messaggi inviati dal Mastera cui lo Slave non ha risposto. Non sono compresele eccezioni che vengono considerate come rispo-ste. Questo da:• L’ultima ripartenza/reset.• Ultimo Reset dei contatori.

TECNOLOGIE SPERIMENTALI

TECNOLOGIE SPERIMENTALI 25

www.artek.it

Divertirsi è facile

• 4 ingressi• 4 Uscite• 1 Comparatore• Opera con RTX Aurel• Opera con telecomandi TV

Distributors Welcome

TOP MAX

NUTCHIP - PROGRAMMAZIONE ELEMENTARE A STATI LOGICI IN POCHI MINUTI

Sali a bordo e naviga sul sito WEB ARTEK per informazioni Tel. 0542.55900 - Fax 0542.55488

TOP MAX

Programma Professionale diEprom, Micro, Memorie, PLD, FPGA...Oltre 3000 dispositivi supportati

In Offerta fino ad esaurimento scorte

Risparmi oltre 355 Euro,680.000 delle vecchie lire!!in collaborazione con EETOLS USA

NUTCHIP - PROGRAMMAZIONE ELEMENTARE A STATI LOGICI IN POCHI MINUTI

NEGRI-impaginato ok 2 col 1-10-2004 16:50 Pagina 25

Page 25: Fare Elettronica - FE 233.pdf

risposto con occupato (Busy) da:• L’ultima ripartenza/reset.• Ultimo Reset dei contatori.• Ultimo Avviamento.Sottofunzione 00 11Dati Richiesta 00 00Dati Risposta Numero Totale Busy

18 Restituisce il numero di messaggi che hannocausato un sovraccarico.Restituisce il numero dei messaggi che hanno cau-

sato un sovraccarico nell’invio dei caratteri costi-tuenti il messaggio. Questo è causato dal fatto chela velocità a cui vengono inviati i singoli carattericostituenti il messaggio è superiore alla capacitàdello Slave di memorizzarli. Può significare unaerrata configurazione della Seriale o un malfunzio-namento della stessa. Questa da:• L’ultima ripartenza/reset.• Ultimo Reset dei contatori.• Ultimo Avviamento.Sottofunzione 00 12Dati Richiesta 00 00Dati Risposta Numero Totale dei Messaggi

20 Azzera il contatore di sovraccarico ed i flag.Serve per azzerare il contatore di sovraccaricocaratteri ed i flag di errore.Sottofunzione 00 14Dati Richiesta 00 00Dati Risposta Eco della richiesta

Codice Funzione 11 (0x0B) Acquisisci il contato-re eventi della Seriale.Questa funzione ha lo scopo di leggere lo stato edil relativo contatore degli eventi andati a buon finedella seriale. Il contatore viene incrementato perogni messaggio andato a buon fine. Non vieneincrementato per le risposte che contengono delleeccezioni. Il contatore viene resettato mediante lafunzione 08 (00-01) e 08 (00-0A). Lo stato vieneposto a FF FF nel caso che lo Slave sia in stato diOccupato (Busy) facendo capire che sta elaboran-do e quindi non è disponibile, altrimenti contiene00 00 indicante che è pronto a ricevere altrerichieste.

Codice Funzione 12 (0x0C) Acquisisci il LOGeventi della Seriale.Questa funzione legge lo Stato, il contatore diEventi, di Messaggi. Lo Stato ed il contatore degliEventi viene anche restituito dalla precedente fun-zione (11). Si tratta di una funzione che permettedi acquisire molti stati senza dover utilizzare le fun-zioni che vi accedono singolarmente. La dizioneLOG fa comprendere che restituisce uno situazionecomplessiva dei vari stati dello Slave nell’ambitodella comunicazione Seriale. I Bytes che possonosono nell’ordine, 2 per lo Stato, 2 per il contatore

TECNOLOGIE SPERIMENTALI

TECNOLOGIE SPERIMENTALI26

Figura 21: Codice Funzione 15 Scrivi Coils multipli

Figura 22: Codice Funzione 16 Scrivi Registri multipli

NEGRI-impaginato ok 2 col 1-10-2004 16:50 Pagina 26

Page 26: Fare Elettronica - FE 233.pdf

identificato dal Bit 6 posto ad 1 e dal Bit 7 postoa 0. Gli altri Bit sono posti nei rispettivi stati afronte delle condizioni vere o false degli stessi.Bit Contenuto0 Lettura eccezione spedita (ecc. 1-3)1 Lo Slave interrompe la spedizione

dell’eccezione (ecc. 4)2 Lo Slave è occupato nella spedizione di

una eccezione (ecc. 5-6)3 Lo Slave sta spedendo un’eccezione di

tipo NAK (ecc. 7)4 Time Out di scrittura5 Attualmente in stato di Ascolto6 17 0

• Stato di AscoltoViene generato quando lo Slave entra nello statodi Ascolto. Il valore contenuto è 04 Hex.

• Device inizializzato, RipartenzaViene generato quando la porta di comunicazio-ne seriale viene fatta ripartire. Lo Slave vienefatto ripartire/riavviare mediante la funzione 08(00 01). Essa pone lo Slave in uno stato di

degli eventi, 2 per il contatore dei messaggi e da 0a 64 per gli eventi. I valori che vengono restituiti,sono stati precedentemente salvati in ordine cro-nologico con in cima quello più recente ed infondo quello più vecchio sino ad un massimo di 65.Ogni nuovo evento fa scorrere verso il basso di unaposizione.Vediamo ora i vari tracciati di Bits, come si identifi-cano ed il significato dei vari Bits di ogni tracciato.

• Evento di RicezioneViene generato quando la richiesta da parte delMaster viene ricevuta e prima che lo stessovenga elaborato da parte dello Slave. Il Bit 7posto ad 1 lo identifica. Gli altri Bit sono posti neirispettivi stati a fronte delle condizioni vere ofalse degli stessi.Bit Contenuto0 Non Utilizzato1 Errore di Comunicazione2 Non Utilizzato3 Non Utilizzato4 Sovraccarico Caratteri5 Attualmente in stato di

Ascolto6 Ricezione di tipo Broadcast7 1 - Serve ad indicare che il

tracciato è di Ricezione• Evento di Trasmissione

Viene generato quando lo Slave ha elaborato larichiesta ricevuta dal master. Questo avviene sianel caso di una corretta elaborazione che, in casodi eccezione o di non risposta al Master. Viene

TECNOLOGIE SPERIMENTALI

TECNOLOGIE SPERIMENTALI 27

Figura 23: Codice Funzione 17 Legge le caratteristiche dello Slave Via sua ID

Figura 24: Codice Funzione 20 Legge Record File

NEGRI-impaginato ok 2 col 1-10-2004 16:50 Pagina 27

Page 27: Fare Elettronica - FE 233.pdf

Continua per Errore o Fermati per Errore ed ilresto del LOG viene azzerato. Il valore contenutoè 00 Hex.

Nell’esempio riportato in Figura 20 possiamo osser-vare che lo stato contiene 00 00 indicante che loSlave è pronto per altre elaborazioni. Il contatoredegli eventi contiene 01 08 cioè 264 in decimale. Ilcontatore dei messaggi contiene 01 21 che equi-vale a 289 in decimale. Seguono i vari eventi. Inposizione 0 troviamo 20 che indica che il sistemaera entrato in stato di ascolto. Mentre in posizione1, antecedente alla 0 troviamo 00 che, indica cheera stato attivato il riavvio.

Codice Funzione 15 (0x0F) Scrivi Coils multipliUtilizzata per porre a ON o OFF i Coils di unasequenza di Coils. L’indirizzo iniziale parte da 0come anche il Coil da modificare. Lo stato ONequivale a porre il corrispondente Bit a 1, mentre lostato OFF a porre il Bit a 0. La risposta dello Slavecomprende il codice funzione. L’indirizzo di par-tenza e la quantità di Coils da modificare.Nell’esempio riportato in Figura 21 vengono modi-ficati 10 coils a partire dal coil 20 in poi. La richie-

sta da parte del Master pone il Byte HI (Coils 27-20valore CD Hex) per primo ed il Byte LOW (Coils 29-28 valore 01 Hex ) per secondo. I rispettivi Bits rife-riti ai Coils da modificare sono cosi disposti:

1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 1

27 26 25 24 23 22 21 20 - - - - - - 29 28

I Bits non utilizzati sono posti a 0.

Codice Funzione 16 (0x10) Scrivi RegistriMultipliUtilizzata per scrivere un blocco contiguo di registri(da 1 a circa 120). Nel richiesta viene specificatol’indirizzo di partenza, il numero dei registri , ilnumero dei Bytes che compongono i dati ed infinei dati veri e propri.La risposta da parte dello Slave restituisce oltre ilcodice funzione, l’indirizzo di partenza e la quanti-tà dei registri modificati. Ogni registro occupa 2Bytes essendo a 16 Bits.

Codice Funzione 17 (0x11) Legge le caratteristi-che dello Slave Via sua IDLegge la descrizione dello Slave, il tipo, lo stato cor-rente ed altre informazioni.

Codice Funzione 20 - 6 (0x14 – 0x06) LeggiRecord FileUtilizzata per gestire la lettura sottoforma di file erecords. Il file è organizzato in records e può con-tenerne un massimo di 10000, indirizzabili da 0000a 9999 (0x0000 a 0x270F in esadecimale).La richiesta di lettura prevede gruppi multipli edogni gruppo può anche essere non contiguo al pre-cedente.Ogni gruppo è definito da:• Tipo Riferimento: 1 Byte con valore 0x06• Numero File: 2 Bytes• Record da cui iniziare: 2 Bytes• Numero Records: 2 Bytes

La quantità di dati combinati tra di loro non puòsuperare i 256 Bytes previsti come lunghezza mas-sima per una richiesta/Messaggio dal ModBus.La normale risposta prevede una serie di sotto-risposte per ogni serie di sotto-richieste fatte dalMaster.

TECNOLOGIE SPERIMENTALI

TECNOLOGIE SPERIMENTALI28

Figura 25: Codice Funzione 21 Scrive Record File

NEGRI-impaginato ok 2 col 1-10-2004 16:50 Pagina 28

Page 28: Fare Elettronica - FE 233.pdf

Risultato = (Contenuto corrente registro ANDMaschera_AND) OR (Maschera_OR ANDMaschera_AND_NEGATO)

Esempio:Contenuto corrente registro = 12 = 0001 0010Maschera AND = F2 = 1111 0010Maschera OR = 25 = 0010 0101Maschera AND NEGATA = 0D = 0000 1101Risultato = 17 = 0001 0111

Nota: se la maschera OR vale zero, il risultato è sem-plicemente un AND logico con il contenuto correnteed una maschera AND. Se la maschera AND vale zeroil risultato è uguale alla maschera OR.

Codice Funzione 23 (0x17) Leggi/Scrivi RegistriMultipliCombina una operazione di lettura ed una opera-zione di scrittura in un unica transazione ModBus.La scrittura viene fatta prima della lettura. La richie-sta specifica l’indirizzo di partenza della lettura, ilnumero dei registri da leggere, l’indirizzo inizialedella scrittura, il numero di registri in cui scrivere, laquantità in Bytes interessati alla scrittura ed infine ivalori da scrivere.

Codice Funzione 24 (0x18) Leggi Coda FIFOServe per leggere il contenuto della coda FIFO(First-In-First-Out in Italiano Il primo che entra è ilprimo che esce) dei registri dello Slave. Essa ritornail numero dei registri presenti nella coda, seguitodalla coda vera e propria contenente i valori deiregistri. Sino ad un massimo di 32 registri possonoessere presenti nella coda. Se il numero supera 31viene generata una eccezione 03. La lettura dellacoda FIFO non ne azzera il contenuto.

Codice Eccezione risposteIn Figura 29 troviamo il significato dei codici dieccezione restituiti dallo Slave in caso di errore.

CONCLUSIONEQuesto e quanto in riferimento al protocolloModBus. Abbiamo fatto una rapida carrellata diche cosa sia, delle sue caratteristiche e dei codicifunzioni utilizzati nel suo ambito. Questo articolonon ha avuto la pretesa di essere stato esaustivo

Codice Funzione 21 - 6 (0x15 – 0x06) ScriviRecord FileUtilizzata per gestire la scrittura sottoforma di file erecords. Il file è organizzato in records e può con-tenerne un massimo di 10000, indirizzabili da 0000a 9999 (0x0000 a 0x270F in esadecimale). Larichiesta di lettura prevede gruppi multipli ed ognigruppo può anche essere non contiguo al prece-dente.Ogni gruppo è definito da:• Tipo Riferimento: 1 Byte con valore 0x06• Numero File: 2 Bytes• Record da cui iniziare: 2 Bytes• Numero Records: 2 Bytes• I dati che vengono scritti: 2 Bytes

La quantità di dati combinati tra di loro non puòsuperare i 256 Bytes previsti come lunghezza mas-sima per una richiesta/Messaggio dal ModBus.La normale risposta è un eco della richiesta fatta dalMaster.

Codice Funzione 22 (0x16) Maschera Registro diScritturaViene utilizzata per modificare il contenuto di unospecifico registro, utilizzando una combinazione dimaschere AND ed OR. Essa può essere utilizzataper settare o resettare I Bits del registro indirizzato.Lavora con gli Holding register. L’algoritmo su cuisi basa è:

TECNOLOGIE SPERIMENTALI

TECNOLOGIE SPERIMENTALI 29

Figura 26: Codice Funzione 22 Maschera registro di scrittura

NEGRI-impaginato ok 2 col 1-10-2004 16:50 Pagina 29

Page 29: Fare Elettronica - FE 233.pdf

quanti vi si avvicinino per la prima volta, e dato chela documentazione che si trova sotto Internet èprevalentemente in Inglese trovare tale spiegazionein Italiano ne semplifica la comprensione.

Bene per questa puntata e tutto, arrivederci allaprossima dove implementeremo la versione ASCIIin Visual Basic.

riguardo l’argomento anche perchè non abbiamoparlato del ModBus TCP/IP. Esso ha voluto sempli-cemente introdurre cosa sia il protocollo ModBus a

TECNOLOGIE SPERIMENTALI

TECNOLOGIE SPERIMENTALI30

Figura 29: Codici Eccezioni

Figura 27: Codice Funzione 23 Legge/Scrive Registri Multipli Figura 28: Codice Funzione 24 Legge Coda FIFO

NEGRI-impaginato ok 2 col 1-10-2004 16:50 Pagina 30

Page 30: Fare Elettronica - FE 233.pdf

NEGRI-impaginato ok 2 col 4-10-2004 12:15 Pagina 31

Page 31: Fare Elettronica - FE 233.pdf

Il progetto consiste in un gene-ratore di funzioni le cui caratte-ristiche sono configurabili permezzo dell’interfaccia JTAGpresentata sul numero di feb-braio 2004, da collegare al PCtramite la porta parallela.Il circuito e’ in grado di genera-re un set predefinito di formed’onda, che vengono selezio-nate per mezzo di una tastiera edi visualizzare messaggi su undisplay LCD.Contiene inoltre un’interfacciaseriale allo scopo di generare deipattern di test per linee seriali eun driver di potenza in grado dipilotare carichi induttivi, comesolenoidi o motori elettrici.In allegato all’articolo, a disposi-zione sul sito di Fare Elettronica,viene riportato il codice sorgentedella procedura Verilog di con-trollo che gestisce il display, latastiera e consente di generarealcune forme d’onda.

DESCRIZIONE DEL CIRCUITOIn figura 1 è raffigurato lo sche-ma elettrico del generatore difunzioni.

Chip programmabileIl circuito è incentrato sull’ inte-grato IC03, CPLD Xilinx in pac-kage PLCC a 44 pin, alimentataa 3.3 V, la quale è in grado diaccettare anche ingressi a livel-lo TTL.Il dispositivo viene resettatoall’accensione per mezzo dellarete R-C composta da R07 e C10.Il clock di funzionamento è forni-to dall’oscillatore IC04. Per que-sta applicazione ho scelto unafrequenza di 1.843.200 Mhz, mail dispositivo accetta anche valoripiù elevati, fino ad un massimodi 178 Mhz.La programmazione del chipviene fornita attraverso il connet-tore JTAG J04.Ai pin IO11 e IO12 sono collega-

ti due led, per monitorarel’attività del sistema.All’ingresso IO14 della CPLDè collegato il transistor TR01,in funzione di buffer per uneventuale ingresso di triggeresterno, alla morsettieraM01. Su questo ingresso èposta la predisposizione P01che permette di selezionare

un accoppiamento in AC o in DC.

Tastiera 4x4La CPLD ha otto pin dedicati allagestione di una tastiera a matriceX-Y da 16 tasti, che va inserita suiconnettori a striscia J06 e J07. Infigura 1A sono visibili le dimen-sioni e il pin-out della tastiera.

Display lcdL’integrato IC05 è un buffer74AC245 e serve a interfacciarela CPLD con il display LCD (dainserire al connettore J05) e conil convertitore D/A IC07, entram-bi alimentati a 5 V.Il display è del tipo standard a 2righe da 16 caratteri. Viene gesti-to dalla CPLD con un’opportunaprocedura Verilog.

GENERATORE DI FUNZIONIPROGRAMMABILEGENERATORE DI FUNZIONIPROGRAMMABILEdi Agostino [email protected]

Il circuito qui presentato costituisce un utile strumento da laboratorio compattoe versatile, in grado di generare segnali di qualsiasi forma.Ma è anche un’ottima occasione per sperimentare con le CPLD…

HARDWARE32

HARDWARE

ROLANDO-impaginato 1-10-2004 16:54 Pagina 32

Page 32: Fare Elettronica - FE 233.pdf

AlimentazioneL’alimentazione al sistema è dop-pia: al connettore J01 si immettela tensione che alimenta la circui-teria digitale, che è poi la granparte del circuito. La tensione diingresso può variare da 7 a 12 V.Le tensioni a 5 V e a 3.3 V sonoricavate per mezzo dei rispettiviregolatori serie IC01 e IC02.Per quanto riguarda invece lasezione di pilotaggio di potenza,che fa capo all’ integrato driverIC08, questa richiede un’alimen-tazione aggiuntiva, fino a 46 V,che viene fornita per mezzo delconnettore J03.

Integrato driverIl dispositivo L298 (figura 2) è uncircuito integrato monolitico incontenitore Multiwatt a 15 pin. Èun bridge driver da alta tensionee alta corrente, comandabile conlivelli logici TTL ed è in grado dipilotare carichi induttivi come

HARDWARE

HARDWARE 33

Figura 1: Schema elettrico

Figura 1a: Dimensioni e pin-out della tastiera

Figura 2: Schema a blocchi dell’integrato L 298

ROLANDO-impaginato 1-10-2004 16:54 Pagina 33

Page 33: Fare Elettronica - FE 233.pdf

relé, solenoidi, motori in corren-te continua o passo-passo.Possiede due ingressi di abilita-zione (ENABLE A, ENABLE B).Gli emettitori dei transistor latoinferiore di ciascun bridge sonocollegati insieme e i corrispon-denti terminali esterni possono

essere usati per connessione auna resistenza di sensing ester-na (nello schema elettrico, R33e R34). La parte logica vienealimentata a 5 V, al pin di ali-mentazione Vss, distinto daquello di alimentazione dipotenza (Vs).

Per incrementare la correnteerogabile in uscita, ho collega-to insieme i pin di ingresso deitransistor 1 e 4 (IN1, IN4) e lerispettive uscite OUT1, OUT4.Così facendo, IC08 può pilotareun carico di tipo induttivo, conun assorbimento massimo di 2 A.

Convertitore D/AL’integrato CA3338 è un con-vertitore digitale-analogico ditipo flash da 50 megasample alsecondo, funzionante a singolaalimentazione (5 V).Per questa applicazione vieneutilizzata la versione in packageSOIC a 16 pin.Lo schema a blocchi e la caratte-ristica di trasferimento del con-vertitore sono riportati in figura 3.

HARDWARE

HARDWARE34

Figura 4: Circuito stampato in scala 1:1 (lato rame)

Figura 3: Schema a blocchi e curva di trasferimento dell’integrato CA3338

ROLANDO-impaginato 1-10-2004 16:54 Pagina 34

Page 34: Fare Elettronica - FE 233.pdf

potenza, si può prelevare allamorsettiera M03.Per entrambe, come per l’ingres-so di trigger, ho previsto delle

UscitaL’uscita analogica, provenientedal convertitore D/A viene buffe-rata con il transistor TR04, in

configurazione a emitter-follo-wer, ed è riportata alla morsettie-ra M02.Per quanto riguarda l’uscita di

HARDWARE

Figura 5: Schema di montaggio lato componenti

ROLANDO-impaginato 1-10-2004 16:54 Pagina 35

Page 35: Fare Elettronica - FE 233.pdf

predisposizioni a ponticello(rispettivamente P02 e P03) perselezionare l’accoppiamento inAC o in DC.Il circuito contiene anche un

buzzer piezoelettrico (BZ01),attivabile con la predisposizioneP04, per poter ascoltare il segna-le generato, se nel range di fre-quenza udibile.

Interfaccia serialeLo schema contiene un’interfac-cia seriale, realizzata con l’inte-grato IC06, che ha lo scopo digenerare dei pattern per il test di

HARDWARE

HARDWARE36

Elenco componenti

Sigla Valore Sigla Valore

R01 390 Ω (package 0805) TR4 Transistor npn 2N1711

R04, R16,R17

330 Ω (package 0805) IC1, IC2Regolatore di tensione LM1117H(package TO-252)

R02 15 Ω (package 0805) IC3CPLD XC9572XL-10PC44I(package 44 pin PLCC)

R03, R06,R31

270 Ω (package 0805) IC4Oscillatore SUNNY Frequenza1.843200 MHz (SMD)

R05 470 Ω (package 0805) IC5Tri-state buffer 74AC245(package SO20)

R07÷R09,R25, R29,R21

4K7 Ω (package 0805) IC6 Transceiver MAX232 (package SO16)

R35÷R42 4K7 Ω (package 0805) IC7Convertitore D/A Intersil CA3338(package SO16)

R18 100 Ω (package 0805) IC8Driver ST L298HN(package Multiwatt orizz.15 pin)

R20, R26,R28, R30,R33, R34

1 KΩ (package 0805) J1,J3Connettore da alimentazione “plug” M perstampato

R22, R32 10K Ω (package 0805) J2Connettore a vaschetta, 90 gradi, dastampato , M, 9 pin

RBY(12 pezzi)

0 Ω (package 0805) J4Connettore lineare a striscia, 90 gradi,M, 6 pin

C01, C14,C05, C08,C09, C18

0,1 µF 50 V ceramico J5 Connettore lineare a striscia, F, 15 pin

C02, C13,C15, C17

39 µF 20 V tantalio J6, J7 Connettore lineare a striscia, F, 5 pin

C03, C04,C16

2,2 µF 20 V tantalio P1÷P3 Connettore lineare a striscia, M, 3 pin

C06, C07,C10÷C12

1 µF 20 V tantalio P4, P5 Connettore lineare a striscia, M, 2 pin

LED1 Diodo led verde , 3 mm M1÷M3 Morsettiera 2 poli

LED2 Diodo led rosso , 3 mm BZ1 Buzzer piezoel.

D01 Diodo BAV99 (package SOT-23) KB1 Tastiera 4x4 Grayhill serie 83

TR1÷TR3Transistor smd npn 2N2222(package SOT-23)

ROLANDO-impaginato 1-10-2004 16:54 Pagina 36

Page 36: Fare Elettronica - FE 233.pdf

scelto di realizzare una proce-dura in linguaggio Verilog chepotesse stimolare tutte le areefunzionali del circuito.

linee di comunicazione. Puòessere utilizzata anche perimmettere dei comandi da remo-to verso il generatore di funzioni.

REALIZZAZIONE PRATICAIl circuito stampato, visibile infigura 4, è stato realizzato con ilmetodo a trasferimento ditoner, per mezzo di lucidi tra-sparenti per fotocopiatrici e diun comune ferro da stiro.I simboli nello schema elettricodenominati RBY identificanoresistenze di bypass, che sonostate impiegate al fine di realiz-zare uno stampato monofaccia.Come contenitore ho utilizzatoun porta-cassette video. Lostampato è sostenuto da quat-tro distanziatori, saldati al conte-nitore per mezzo di colla calda.

Il risultato è visibile in figura 11.

FUNZIONALITÀPer la gestione del circuito, ho

HARDWARE

HARDWARE 37

Figura 6: Schema di montaggio lato rame

Figura 7: Packages utilizzati

ROLANDO-impaginato 1-10-2004 16:54 Pagina 37

Page 37: Fare Elettronica - FE 233.pdf

Generazione di forme d’ondaLa procedura scandisce la tastie-rina e riconosce la pressione deitasti. In particolare, se vienepremuto il tasto "A", vienegenerata una sinusoide, il tasto"B" invece fa generare un’ondaquadra, mentre il tasto "C" fagenerare un’onda triangolare.La frequenza del segnale è fissa-ta a 1.8 Khz.

Gestione displayIn contemporanea, un altro pro-cesso resetta il display LCD e vi

scrive la stringa di test "ABCD".

Sincronizzazione con triggeresternoPer testare l’ingresso di triggeresterno, i due led presenti sulcircuito vengono accesi secondouna determinata sequenza diconteggio. Il conteggio vieneeffettuato in avanti se l’ingressodel trigger esterno è basso,all’indietro se il trigger è alto.

Generazione di pattern serialiUn’ulteriore applicazione consi-

ste nell’invio di pattern per veri-ficare il corretto funzionamentodi dispositivi dotati di lineaseriale.A questo scopo ho realizzato unsecondo codice Verilog che rea-lizza la funzione di UART, relati-vamente alla parte di trasmis-sione.La procedura scandisce la tastie-ra e, in base al tasto premuto,invia un pacchetto di caratteriASCII (da "0" a "F") sull’uscitaseriale, al connettore J02.Per l’implementazione, ho fattouso di un clock a 9600 Hz, deri-vato dal clock di sistema a1.843200 Hz, che consente diinviare i dati alla velocità di9600 Baud, con 1 bit di stop eparità dispari.Per caricare il dato parallelo, cheviene inviato poi serialmente, sipone alto il segnale load_tx.

La linea seriale, a riposo, vienetenuta alta. All'inizio della tra-smissione, il dato seriale vieneposto a livello basso per la dura-ta di un colpo di clock, per signi-ficare lo start bit d’inizio dellatrasmissione, poi, i bit di datosono inviati uno alla volta, a par-tire dal meno significativo(D0÷D7). Infine, viene inviato ilbit di parità, che viene calcolatocome EXOR negato dei bit dellaparola da inviare. In ultimo, il bitdi stop.Al termine, la linea seriale vieneriportata alta, in attesa dellaprossima trasmissione.

CONCLUSIONIIl circuito è stato pensato perapplicazioni tipiche da laborato-rio ed è suscettibile di migliora-menti. Ad esempio, si può pen-

HARDWARE

HARDWARE38

Figura 9: Prototipo lato componenti

Figura 8: Prototipo lato componenti senza LCD e tastiera

ROLANDO-impaginato 1-10-2004 16:54 Pagina 38

Page 38: Fare Elettronica - FE 233.pdf

cuito in un frequenzimetro.I codici sorgenti allegati al pro-getto sono scaricabili dal sito diFare Elettronica.

sare di sostituire l’oscillatoreIC04 con un VCO da comanda-re con una regolazione manua-le, così da avere un segnale di

uscita a frequenza variabile.Un’altra possibile applicazione,oltre a quella qui descritta, puòconsistere nel trasformare il cir-

HARDWARE

HARDWARE 39

Figura 11: Prototipo assemblato entro uncontenitore per video-cassettaFigura 10: Prototipo lato rame

ROLANDO-impaginato 1-10-2004 16:54 Pagina 39

Page 39: Fare Elettronica - FE 233.pdf

Standard: Il tuo abbonamento personale o aziendale al costo di € 39,00

Regalo: Se sei già abbonato e vuoi regalare un nuovo abbonamento ad un amico,lo pagherai solo € 35,00 (10% di sconto) comunicando il tuo codice

Scuole: Riservato a scuole ed università; ordinando quattro abbonamenti ne riceveraiuno in omaggio, pagherai quindi € 156,00 anzichè € 195,00 (20% di sconto)

Per Posta: scrivere a INWARE Edizioni - Via Cadorna, 27 - 20032 Cormano (MI)

Per Telefono: al numero +39 02.66504794

Per Fax: al numero +39 02.66508225

Via Internet: sul sito www.farelettronica.com alla pagina campagna abbonamenti

Diverse possibilità di abbonamento:

Come abbonarsi:

(è possibile pagare con bollettino postale, bonifico bancario e carta di credito, maggiori dettagli in ultima pagina)

2004-2005Abbonarsi a Fare Elettronica significa ricevere ogni mese, direttamentea casa, tante idee, consigli e progetti di assoluta novità.

CAMPAGNA ABBONAMENTI

Fare Elettronica trasforma il tuo lavoro oil tuo hobby in una vera passione.

ABBONARSI A FARE ELETTRONICA CONVIENE.Abbonarsi subito conviene ancora di più.

Abbonandoti potrai ricevere la rivista ad un prezzo molto convenienterispetto a quello di copertina. Pagherai infatti solo €39,00 invece di€51,00, con un risparmio di ben €12,00 e la sicurezza di un prezzobloccato per un anno.

Inoltre riceverai un buono sconto del 20% utilizzabile per iltuo prossimo acquisto su www.farelettronica.com e, con lamerce ordinata, riceverai un gradito omaggio di benvenuto!

Campagna abbonamentiBundles 1-10-2004 17:02 Pagina 40

Page 40: Fare Elettronica - FE 233.pdf

Elenco dei prodotti disponibili nei Bundles Prezzo normale Cad.

Fare Elettronica N. 220/221 Ottobre/Novembre 2003 – Numero Doppio € 09,00

Fare Elettronica N. 222 Dicembre 2003 € 07,50

Fare Elettronica N. 223 Gennaio 2004 € 07,50

Fare Elettronica N. 224 Febbraio 2004 € 07,50

Fare Elettronica N. 225 Marzo 2004 € 07,50

CD-ROM “Annata Fare Elettronica 2003” € 25,00

Software Abacom “sPlan Disegno schemi elettrici” € 46,80

Software Abacom “sPrint Disegno circuiti stampati” € 46,80

Software Abacom “Front Designer Disegno pannelli frontali” € 46,80

Elenco dei Bundles disponibili Prezzo Bunble Cad.

Bundle “A” : 2 Arretrati (qualsiasi) al prezzo speciale di € 12,00

Bundle “B” : 3 Arretrati (qualsiasi) al prezzo speciale di € 15,00

Bundle “C” : 1 Arretrato (qualsiasi) e il CD-ROM ”Annata FE 2003” al prezzo speciale di € 30,00

Bundle “D”: 1 Arretrato (qualsiasi) e 1 Software Abacom (qualsiasi) al prezzo speciale di € 50,00

Bundle “E” : 2 Software Abacom (qualsiasi) al prezzo speciale di € 84,00

FARE ELETTRONICA BUNDLES È UNA COMBINAZIONEDI PRODOTTI AD UN PREZZO SCONTATISSIMO.

NON LASCIARTI SCAPPARE IL TUO PREFERITO!

Bollettino postale Utilizzare il C/C N. 22790232 intestato ad Inware srl, indicando nella causale “Abbonamento a Fare Elettronica”

Bonifico bancario Appoggiarlo sulla banca: Poste Italiane - CIN: Z - ABI: 07601 - CAB: 01600 - C/C: 000022790232

Carta di credito Titolare: Numero: Scadenza:

Privacy. Il trattamento dei dati, in forma automatizzata e con modalità strettamente connesse ai fini, con garanzia di riservatezza, è finalizzato all’invio del presente periodico allo scopo di informare ed aggiornare i letto-ri e gli operatori del settore elettronico sulle novità che il mercato propone. Potranno essere esercitati i diritti di cui all’articolo 13 della legge 675/96 (accesso, correzione, cancellazione, opposizione al trattamento, ecc.).Il titolare del trattamento dei dati è Inware srl con sede a Cormano (MI) in via Cadorna 27/31. Nel caso si tratti di copia omaggio a titolo promozionale si rende noto che i dati provengono da archivi pubblici. Resta intesoche le informazioni in ns. possesso non saranno in nessun caso cedute a terzi.

Cognome Nome

Azienda

Via CAP Città Prov.

Tel. Fax email

ECCO L’ELENCO AGGIORNATO

Indicare il Bundle e i prodotti prescelti mettendo una croce sulle rispettive caselle.

Tutti i Bundle sono comprensivi di IVA e spese di spedizione. Il pagamento è anticipato, e può essere effettuato tramite:

®

Campagna abbonamentiBundles 1-10-2004 17:02 Pagina 41

Page 41: Fare Elettronica - FE 233.pdf

Molti di voi ricorderannoquando la nonna consigliavaalcune pennellate di argentovivo se la gola eraarrossata, oppurebere un bel bic-chiere di sali diargento per mette-re in quiete unintestino un poconervoso… Ebbenetutto ciò è verissi-mo al punto chemolti sono i casi incui la medicina uti-lizza tale prodotto,in particolare perfavorire la cicatriz-zazione di ferite,garantirne la puli-zia e antisetticità,per curare le pia-ghe tipiche dellabocca o infiammazioni dellemucose e via dicendo.L’argento è di per se un metalloprezioso quindi abbastanza

costoso; per poter disporre diargento sottoforma di precipita-to o colloide dovremo ricorrere

all’elettrolisi utilizzando duebacchette di argento purissimo,non è quindi possibile utilizzareposate o altri oggetti di argen-

to 800 millesimi ma SOLOargento puro 1000/1000 recu-perabile presso negozi di chimi-

ca o farmacie.Le bacchettegenera lmentesono di tipocilindrico, dia-metro 3 o 4 mil-limetri e lunghecirca 5 centime-tri (figura 1).Ad ogni bacchet-ta si collegheràun polo, positivoo negativo chesia ed il tutto sicollegherà aduna fonte di cor-rente continua.Per provare pos-sono essere otti-me tre pile piat-

te da 4,5V in serie tra loro, peravere oltre 12V corrente conti-nua, e generare parecchi litri disoluzione d’argento, per meglio

GENERATORE PERARGENTO COLLOIDALEGENERATORE PERARGENTO COLLOIDALEdi Andrea [email protected]

Un completo ed efficiente circuito concepito per poter produrre in proprioargento colloidale, le cui peculiarità e caratteristiche vanno dalle ben note dotidi antibiotico naturale e disinfettante coadiutore della cicatrizzazione.Queste sono solo un assaggio delle nolteplici capacità dell’argento colloidale,divenuto un best sellers tra i lenimenti naturali..

HARDWARE42

HARDWARE

MARANI-impaginato 1-10-2004 17:04 Pagina 42

Page 42: Fare Elettronica - FE 233.pdf

so in due sezioni principali: laprima relativa al controllo tem-porizzato di inversione di plari-tà e la seconda composta dalgeneratore a corrente costantevero e proprio.Entrambe le parti vengono ali-mentate da rete tramite untrasformatore di tensione da230V a 15V del tipo doppioisolamento a norma CE, quindila tensione alternata giunge alponte B1 di piccola potenza edallo stabilizzatore di tensionecon pi greco capacitivo e resi-stivo con zener a 12V, la ten-sione in uscita da questo sta-dio alimenterà la logica ditemporizzazione dell’inversio-ne di polarità gestita da uncomunissimo C/MOS CD4093B.All’uscita della sua terza porta(NAND) avremo livello oppo-sto che all’ingresso, per cuipotremo agevolmente pilotaredue relè alternativamente tra-mite due transistori pilota.Il circuito provvederà ad eccitarealternativamente, ogni minutocirca, uno dei due relè inmodo tale da invertire i poli di

dire di argento colloidale.Colloide significa, in parolepovere, che l’argento è insospensione nell’acqua. Nonoccorre fare precipitare in quan-tità l’argento che verrebbe in talcaso perduto.Non voglio dilungarmi troppoin dissertazioni mediche o chi-miche non essendo questa lasede ne io esperto in materiaquindi rimando tutto ad unavostra approfondita ricerca suinternet dove brulicano i siti, iforum su questa nuova, se cosìpossiamo definirla, tecnicacurativa. Una descrizione moltointeressante la potete trovaresul sito http://www.naturmedi-ca.com/argentocolloidale.htm.

Ho consigliato la realizzazionedel più semplice generatore dicorrente per produrre il colloi-de ma certamente, noi elettro-nici, non ci fermeremo qui!Vi propongo la realizzazione diun generatore di correntecostante a più step di tipo pro-fessionale con inversione dipolarità sulle bacchette diargento, in modo che non siabbia a consumarsi una bac-chetta più dell’altra: Con que-sto circuito potrete realizzareun bicchiere di soluzione diargento in circa una decina diminuti!.Il circuito ha tre step di regola-zione della corrente in mododa avere produzione minima olenta, media, massima o velo-ce. Un led bicolore indicherà ledifferenti polarità della tensio-ne applicata alla sonda. Il cir-cuito è alimentato a tensionedi rete tramite un trasformato-re a doppio isolamento.

SCHEMA ELETTRICOLo schema elettrico di figura 1può facilmente essere suddivi-

HARDWARE

HARDWARE 43

Figura 1: Bacchette in argento purissimo ed iltappo di gomma per realizzare la sonda

Figura 2: chema elettrico del generatore

MARANI-impaginato 1-10-2004 17:04 Pagina 43

Page 43: Fare Elettronica - FE 233.pdf

uscita della sonda, invertendoil flusso nel liquido e preser-vando le astine di argento dadifferente corrosione tra loro.Sempre dal secondario del tra-sformatore T1 preleveremo latensione per il generatore, uti-lizzando un ponte compostodi quattro diodi 1N5400, livel-lando il tutto con il condensa-tore C1.L’integrato IC2 è impiegatocome regolatore di correntecostante a tre step, preimpo-stabili commutando i resistoriR1, R2 e R3 tramite il piccolodip switch che voi potretesostituire con un comunecommutatore tre posizioniuna via. In questo modo avre-te tre differenti soglie massimedi corrente preimpostabili inmodo da ottenere una produ-zione minima, media o massi-ma di colloide.L’integrato IC2 è un comuneLM317 in contenitore TO220al quale abbiamo inserito resi-store di limitazione tra l’uscitaed il pin di aggiustamentodella tensione, in questomodo abbiamo realizzato ungeneratore di corrente costan-te, ovvero il circuito modifi-cherà la tensione in uscita aseconda della conduttivitàdell’acqua e con un massimodi corrente preimpostato enon superabile.Questo è molto importante per-ché, specie dopo un certo perio-do di trattamento, si potrebbeverificare un aumento di corren-te non controllabile e non auspi-cabile per ottenere una correttaproduzione di colloide.Il led DL2 indica la presenza ditensione al generatore ed il led

HARDWARE

HARDWARE44

Figura 3a: Circuito stampato in scala 1:1 (lato rame)

Figura 3b: Circuito stampato in scala 1:1 (lato componenti)

MARANI-impaginato 1-10-2004 17:04 Pagina 44

Page 44: Fare Elettronica - FE 233.pdf

DL1, di tipo bicolore, la polari-tà della tensione alla sonda.Modificando i valori dei resi-stori di potenza R1, R2 e R3potrete, a vostro piacere, defi-nire differenti soglie di corren-te massima preimpostabili,fino alla massima correnteerogata da IC2 e T1. In questomodo potrete utilizzare il cir-cuito per ottenere cloro dal-l’acqua salata e realizzaremolti processi elettrolitici inte-ressanti.

ISTRUZIONI DI MONTAGGIOPer questo circuito è statoapprontato uno stampatodoppia faccia, realizzato con ilprogramma Sprint Layout chetra l’altro permette di esporta-re il progetto in file Gerber,standard molto apprezzato eutilizzato da tutti i masteristi,ora realizzare un PCB doppiafaccia diviene cosa semplice

HARDWARE

HARDWARE 45

Elenco componenti

Sigla Valore Sigla Valore

R1 22 Ω 2 W LD1 Led bicolore due pin 3 mm

R2 15 Ω 2 W LD2 Led rosso 3 mm

R3 10 Ω 2 W TR1, Tr2 BC337

R4, R5 4,7 KΩ 1\4 W 5% B1 Ponte raddrizzatore 50 V 1 A

R6, R9 1 KΩ 1\4 W 5% DZ1 Diodo Zener 12 V 1 W

R7 120 Ω 1 W D1÷D4 1N5400

R8 2,2 MΩ 1\4 W 5% D5, D6 1N4148

C1 2200 µF 25 V elettrolitico RL1, RL2 Relé doppio scambio miniatura – 3 A bobina 12 V

C2 1 µF 16 V elettrolitico T1 Trasformatore 230\15 V 1,2 A

C3, C4 22 µF 16 V elettrolitico 1 morsettiera 4 posti passo 5 mm con estrattore e serraggi a vite

C5, C6 220 µF 25 V elettrolitico 1 doppio selettore molex 2x3 passo 2,54mm

C7, C8 100 nF 63 V poliestere 1 ponticello singolo passo 2,54 mm

IC1 CD4093B 1 dissipatore verticale per TO220

Figura 4: Posizionamento dei componenti

MARANI-impaginato 1-10-2004 17:04 Pagina 45

Page 45: Fare Elettronica - FE 233.pdf

ed attuabile. Sul circuito sonopresenti solo due ponticelli, daeffettuare con spezzone direoforo da resistenza, uno vici-no ai diodi raddrizzatori, l’al-tro presso IC2.

Per iniziare il montaggio prefe-rite per primi i resistori quindicondensatori ed integrato,possibilmente con zoccolo,quindi il dissipatore con IC2, iled ed infine il trasformatore edi morsetti. L’integrato IC2 seutilizzato per produzione diargento colloidale, nel qualcaso la corrente per la produ-zione non è notevole, non scal-derà eccessivamente è perònecessario per l’utilizzo conti-nuato il dissipatore di calore. Ora non resta che controllare ilcircuito, il lavoro svolto, lepolarità dei componenti chetassativamente non dovrannoessere invertite, dopo l’accura-ta occhiata al circuito potretedare tensione. Non appenacollegato alla rete si accenderàil led DL2 spia di presenza ten-sione de il led DL1 brillerà dirosso o di verde: Questo ledsarà molto luminoso se lasonda non è immersa in acqua,diminuirà luminosità se immer-

sa e dovrà spegnersi se corto-circuitata. Dopo circa un minu-to il led se acceso di verdediverrà rosso o viceversa. Ilciclo si ripeterà finchè il circui-to è alimentato. Dopo avereffettuato queste prove saretesicuri del funzionamento. Nonresterà che racchiudere tutto inuna scatoletta plastica, del tipoareato, realizzare la connessio-ne per la sonda.

REALIZZAZIONEDELLA SONDAPrendete un semplice tappo disughero o gomma poi provve-dete a fare due fori per inserirele bacchette di argento mante-nendole distanziate tra loro dicirca 3 cm oppure utilizzate,come in figura 4, una spiagget-ta plastica che forerete per infi-lare le bacchette in argento.Tanti possono essere i modi diutilizzo e realizzazione dellasonda. Si deve però ricordareche più lontane sono le bac-chette tra loro e maggioredovrà essere la tensione diesercizio per generare colloide.Nel prototipo da me realizzatole bacchette sono distanti traloro circa1 cm e la tensione diesercizio rientra nella finestratra 6 e 12 Vcc.

La sonda in argento è soggettaad usura, bilaterale in questocaso, essendoci inversione dipolarità. Durante il funziona-mento il circuito potrebbe unpoco scaldare. Qualora dopocirca una mezzora di tratta-mento, tempo consigliato, sinotasse un deposito nero sulfondo, o abbiamo usato argen-to non puro o vi è troppo pre-

cipitato, ossia la soluzione ètroppo satura, diminuire la cor-rente di trattamento ed iltempo di erogazione.Qualora invece durante il trat-tamento una o l’altra delle bac-chette o alternativamente ten-desse ad ossidare, dovreteabbassare la corrente di tratta-mento.Per sospendere l’argento utiliz-zate acqua distillata per il 75 %e 25 % di acqua naturale pocomineralizzata da tavola. Soloacqua distillata non permette iltrattamento.

CONCLUSIONIPer poter definire concentra-zioni di argento in sospensio-ne, consiglio l’acquisto di unconduttivimetro digitale e diun buon libro trattante leapplicazioni di colloide d’ar-gento o, se vorrete un pocopazientare, attendete il con-duttivimetro che presenterò inun prossimo articolo.

Buon lavoro a tutti.

HARDWARE

HARDWARE46

Figura 5: Sonda immersa nel bicchiere Figura 6: Generatore commerciale diargento colloidale

MARANI-impaginato 1-10-2004 17:04 Pagina 46

Page 46: Fare Elettronica - FE 233.pdf

MARANI-impaginato 1-10-2004 17:04 Pagina 47

Page 47: Fare Elettronica - FE 233.pdf

VITAMINA C

Una delle maggiori potenzialità del linguaggio Crisiede nella sua grandissima versatilità ed espressi-vità. Esso permette cioè di descrivere il comporta-mento voluto in molti modi diversi e comunquesempre in maniera molto compatta. Questa carat-teristica, di per se positiva, può potenzialmenteessere fonte di diversi problemi se non viene bengestita! Infatti un codice molto compatto, se nonben progettato e scritto può risultare poco leggi-bile, scarsamente testabile e documentabile, pocoportabile, e difficilmente aggiornabile. Al contrarioqueste caratteristiche dovrebbero sempre essereconsiderate importanti almeno quanto il correttofunzionamento del programma stesso. Per facilita-re questo compito il linguaggio C mette anche adisposizione alcuni strumenti, che gestiti con curadal programmatore possono assicurare degli otti-mi risultati. Di seguito analizzeremo alcuni tra que-sti strumenti, nonché alcune regole pratiche daseguire per potere scrivere dei buoni programmi.

LEGGIBILITÀ DEL CODICEProvate a capire a cosa serve il codice C che segue:

char *dtb(char n)

int i; char s[8];

s[8]=0;

for(i=0; i<8; i++)

s[i]=48+(n>>i)&1;

return s;

Provate ora a leggere questo:

/* Conversione decimale -> binario

Parametri:

- dec = numero intero (0-255)

Restituisce:

- “dec” in binario (stringa) */

char *DecToBin(unsigned char dec)

int i; /* indice posizione */

char bin[8]; /* stringa */

bin[8]=0; /* terminatore stringa */

for(i=0; i<8; i++)

VITAMINA C

di Antonio Di Stefano [email protected]

In questa puntata verranno presi in considerazione alcuni aspetti dellaprogrammazione in C che non hanno a che fare direttamente con la sintassidel linguaggio, e forse per questo vengono solitamente poco enfatizzati, mache invece sono fondamentali per la scrittura di buoni programmi. Ad esempiocome va progettato e strutturato un programma completo? Quali accorgimentibisogna seguire nella scrittura del codice?

tredicesima parte

STRUTTURA E LEGGIBILITÀDEL CODICESTRUTTURA E LEGGIBILITÀDEL CODICE

TUTORIAL48

TUTORIAL

DI STEFANO-impaginato 1-10-2004 17:08 Pagina 48

Page 48: Fare Elettronica - FE 233.pdf

/* scorre n a destra di i posti

e considera solo il LSB

(equivale a: n/(2^i) AND 1) */

bin[i]=’0’ + (dec>>i)&1;

return bin;

Le due routine eseguono esattamente le stesseoperazioni, ma nel secondo caso non c’è niente daaggiungere, il codice è autoesplicante.Cosa rende il secondo codice molto più compren-sibile del primo?In primo luogo i commenti, che come detto in Cpossono essere costituiti da testo qualsiasi, anchesu più line, racchiuso tra /* e */.È successo a molti, alle prime esperienze con laprogrammazione di rileggere del codice scrittosolo una settimana prima, e trovarlo assolutamen-te incomprensibile!Esperienze come queste insegnano quanto siaimportante un uso massiccio di commenti nel pro-pri programmi. Un altro accorgimento per rende-re il codice più leggibile è quello di utilizzare l’in-dentazione.Sicuramente l’avrete notata in tutti i programmipresentati, però essa non è mai stata citata esplici-tamente: consiste nell’utilizzare degli spazi (o delletabulazioni) in modo da allineare verticalmente ilcodice che appartiene ad uno stesso blocco o con-testo. Ad esempio nel programma precedentetutto il codice dentro funzione inizia dopo duespazi, così come quello dentro al ciclo for (che sitroverà quindi a circa quattro spazi dal bordo dellapagina). Questo accorgimento permette di suddi-videre logicamente e semanticamente il codice, equindi di poterlo seguire e comprendere più facil-mente.L’indentazione è anche molto utile per rendersiconto in maniera veloce di quante parentesi graffeoccorre chiudere alla fine di una routine.Un ulteriore (e forse decisivo) aiuto alla leggibilitàdel codice è dato dall’utilizzo di nomi significativiper le variabili e le funzioni. È possibile utilizzareanche nomi piuttosto lunghi, composti anche dalettere maiuscole (il C è case sensitive!) o conte-nenti il segno “_” (underscore) per evidenziarediverse parole all’interno dello stesso nome: è

molto più espressivo un nome come vettore_coeffi-cienti[] che non v[]… Questa idea si può estendereal punto da seguire delle precise convenzioni,come quella di utilizzare la prima lettera del nomedi una variabile per indicarne il tipo di dato da essorappresentato, ad esempio per rappresentare unavariabile di tipo float la si chiamerà fLunghezza,mentre una variabile intera potrebbe chiamarsiiContatore…Ovviamente applicare scrupolosamente tutti que-sti accorgimenti comporta un leggero aumentodel tempo necessario alla scrittura del codice, peròi vantaggi che ne derivano sono talmente grandida giustificare sicuramente il maggiore sforzo.

STRUTTURA DEI PROGRAMMICosì come è bene rispettare certe regole nellascrittura delle singole linee di codice e delle routi-ne, è anche opportuno considerare alcuni accorgi-menti nell’organizzazione e nella scrittura dell’in-tero programma. In questo caso gli obbiettivi a cuimirare sono, oltre alla leggibilità, anche la riutiliz-zabilità del codice, la facilità di modifica o aggior-namento e la portabilità (indipendenza dall’hard-ware).Prima di vedere in dettaglio come si possono rag-giungere questi risultati è il caso di introdurre i fileheader. Si tratta di file che hanno lo stesso nomedei file di programma, ma hanno estensione “.h”anziché “.c”.I file header sono quelli che fino ad ora abbiamorichiamato utilizzando la direttiva #include, peresempio nel caso delle librerie. Mentre i file di pro-gramma contengono il codice vero e proprio delleroutine, negli header sono presenti soltanto i pro-totipi delle funzioni e la dichiarazione di macro ecostanti. Per prototipo di una funzione si intendeuna dichiarazione contenente il nome della funzio-ne ed i tipi da essa utilizzati in ingresso ed uscita.L’uso dei prototipi non è strettamente necessario,ma permette di trovare facilmente degli erroripoco visibili nella scrittura del codice. Infatti se nelprogramma viene richiamata una funzione utiliz-zando dei parametri di un tipo diverso da quellodichiarato nel prototipo, il compilatore darà unavvertimento (warning) o addirittura un errore.L’utilizzo dei file header ha lo scopo di separare ladichiarazione delle funzioni (cioè la loro interfac-

TUTORIAL 49

TUTORIAL

DI STEFANO-impaginato 1-10-2004 17:08 Pagina 49

Page 49: Fare Elettronica - FE 233.pdf

cia) dal codice vero e proprio. Conoscendo l’inter-faccia di una funzione (cioè le variabili in ingresso,quelle in uscita ed i rispettivi tipi) è possibile utiliz-zarla senza bisogno di conoscere il suo funziona-mento interno e la sua implementazione. Questoapproccio viene chiamato information hiding, pro-prio perché tende a nascondere le parti più com-plesse e quindi meno leggibili del programma.A prima vista forse questo meccanismo potrebbesembrare un po’ complicato, ma ripensandociesso è lo stesso che utilizziamo ogni volta cheimpieghiamo una funzione di libreria. Anche inquel caso richiamiamo un file header, ed utilizzia-mo delle funzioni di cui conosciamo soltanto l’in-terfaccia, ma non la reale implementazione.Dovrebbe essere chiaro a questo punto che gliheader sono utili sia per aumentare la leggibilità,sia soprattutto per favorire la riutilizzabilità delcodice. Infatti è possibile, ed in molti casi conve-niente, creare delle proprie librerie di funzioni,scrivendo il codice in un apposito file, e creando ilrispettivo header. Ogni volta che si dovranno uti-lizzare quelle funzioni in un programma sarà suffi-ciente solamente includere il file header! Ecco un piccolo esempio relativo al codice di unipotetica libreria che implementa un paio di fun-zioni statistiche.Il file stat.c conterrà il seguente codice:

#include <stat.h>

/* Funzione Sum */

int Sum(char *vettore, int num_elem)

int i, somma=0;

for(i=0; i<num_elem; i++)

somma += vettore[i];

return somma;

/* Funzione Med */

int Med(char *vettore, int num_elem)

int i, media=0;

for(i=0; i<num_elem; i++)

media += vettore[i];

return media/num_elem;

Il file stat.h invece conterrà le seguenti dichia-razioni:

/* *** Sum ***

Restituisce la somma degli elementi

dell’array di byte “vettore” */

int Sum(char *vettore, int num_elem);

/* *** Med ***

Restituisce la media degli elementi

dell’array di byte “vettore” */

int Med(char *vettore, int num_elem);

Per utilizzare le due funzioni nei propri programmibasta includere il file stat.h! (I due file devono risie-dere in una directory nota al compilatore, altri-menti occorre specificarla nella direttiva include).Un’osservazione banale: il file stat.c non ha unmain proprio perché il codice non deve funziona-re da solo, ma deve essere sempre richiamato daun altro programma.

Negli header di solito si dichiarano anche lecostanti ed i tipi definiti dall’utente, che poi ver-ranno usate nel codice. Il vantaggio in questo casorisiede nel fatto che se il valore di queste costantideve essere cambiato, è sufficiente farlo una solavolta senza bisogno di accedere al codice. Questooffre un modo per parametrizzare i propri pro-grammi, e poterli personalizzare a seconda delleesigenze. Alcune costanti tipicamente dichiarate inquesto modo sono quelle legate alle dimensionimassime degli array. Anche per i tipi vale lo stessodiscorso. Nell’esempio precedente per esempioavremmo potuto utilizzare il tipo INTERO_CORTOed INTERO_LUNGO al posto di char ed int, e defi-nirli così nel file header:typedef char INTERO_CORTO;

typedef int INTERO_LUNGO;

In questo modo le nostre funzioni avrebbero potu-to utilizzare anche vettori di long o float, semplice-mente ritoccando queste due righe dell’header!

Suddividere un programma in diversi moduli (cioè

TUTORIAL50

TUTORIAL

DI STEFANO-impaginato 1-10-2004 17:08 Pagina 50

Page 50: Fare Elettronica - FE 233.pdf

diversi file .c ed i rispettivi .h) è sicuramente unabuona pratica, infatti essa permette in primo luogodi partizionare il programma in parti più piccole esemplici da sviluppare (tecnica nota come proget-tazione ”top-down“ o approccio “divide et impe-ra”), ed in secondo luogo favorisce la riutilizzabili-tà del codice. Non solo, in questo modo è anchepossibile ottenere maggiore portabilità del codice,isolando in moduli appositi tutte le funzioni dipen-denti dall’hardware. Se dovesse essere necessarioutilizzare lo stesso programma su un hardwarediverso, sarebbe sufficiente ritoccare soltanto imoduli che vi accedono direttamente, lasciandoinalterato tutto il resto!

ESEMPIO PRATICODi seguito è riportato un esempio di programmacompleto che segue tutti gli accorgimenti citati.Nonostante la sua estrema semplicità (dovuta adesigenze “didattiche”), esso ha una struttura com-pleta e molto simile a quella che potrebbe avereun programma molto più grande e complesso. Ilprogramma dovrebbe gestire un sistema a micro-controllore che ha lo scopo di tenere sotto con-trollo i dati provenienti da alcuni sensori, control-lando che essi si mantengano entro dei valori limi-te stabiliti. La condizione di normalità o di avaria èvisualizzata su un display LCD alfanumerico.Il programma è costituito da 3 moduli: il modulo“main.c”, che contiene le routine principale del pro-gramma, il modulo “sensori.c” che si occupa dellalettura dei dati dai sensori, ed il modulo “display.c”che invece ingloba le funzioni per il pilotaggio deldisplay. Ciascuno dei moduli ha il proprio header. Vanotato che questa struttura rende il programmaabbastanza indipendente dall’hardware, infatti essopotrebbe perfino funzionare su un PC, modificandosoltanto le funzioni dei moduli sensori.c e display.c inmodo che utilizzino ad esempio scanf e printf perleggere i dati e visualizzare l’output.Anche i parametri di funzionamento (limiti impo-stati e coefficienti di conversione) risultano facil-mente modificabili dagli header.

File “main.c”

/* ******************************

* PROGRAMMA DI CONTROLLO *

* Modulo principale *

****************************** */

#include "main.h"

main()

int valore, err_temp, err_press;

/* ciclo infinito */

while(1)

/* Controllo temp. acqua */

err_temp=0;

valore=TempAcqua();

if (valore>MAX_TEMP_ACQUA)

err_temp=1;

/* Controllo press. olio */

err_press=0;

valore=PressOlio();

if ((valore<MIN_PRESS_OLIO)||

(valore>MAX_PRESS_OLIO))

err_press=1;

if ((err_temp==1)||(err_press==1))

Scrivi("Rilavata anomalia!");

Buzzer();

else

Scrivi("Funzionamento normale");

File “main.h”

/* ******************************

* PROGRAMMA DI CONTROLLO *

* Header modulo principale *

****************************** */

#include "sensori.h"

#include "display.h"

/* --- Definizione parametri --- */

/* Massima temperatura acqua */

#define MAX_TEMP_ACQUA 98

/* Minima pressione olio */

#define MIN_PRESS_OLIO 8

/* Massima pressione olio */

#define MAX_PRESS_OLIO 21

TUTORIAL 51

TUTORIAL

DI STEFANO-impaginato 1-10-2004 17:08 Pagina 51

Page 51: Fare Elettronica - FE 233.pdf

File “sensori.c”

/* ***************************

* Modulo gestione sensori *

* - codice - *

*************************** */

#include "sensori.h"

/* --------------------------- */

int TempAcqua(void)

int i;

/* Istruzioni dipendenti

dall’hardware */

return i*COEFF_TEMP;

/* --------------------------- */

int PressOlio(void)

int i;

/* Istruzioni dipendenti

dall’hardware */

return i*COEFF_PRESS;

File “sensori.h”

/* ***************************

* Modulo gestione sensori *

* - header - *

*************************** */

/* -- Definizioni parametri -- */

/* Coeff. di convers. temp. */

#define COEFF_TEMP 1.5

/* Coeff. di convers. press. */

#define COEFF_PRESS 3.2

/* - Prototipi delle funzioni - */

/* Legge il valore del sensore

della temperatura dell'acqua */

int TempAcqua(void);

/* Legge il valore del sensore

della pressione dell'olio */

int PressOlio(void);

File “display.c”

/* ***************************

* Modulo gestione display *

* - codice - *

*************************** */

#include "display.h"

/* --------------------------- */

void Scrivi(char *testo)

/* Istruzioni dipendenti

dall’hardware */

/* --------------------------- */

void Buzzer(void)

/* Istruzioni dipendenti

dall’hardware */

File “display.h”

/* ***************************

* Modulo gestione display *

* - header - *

*************************** */

#include <stdio.h>

/* - Prototipi delle funzioni - */

/* Scrive un rigo di

testo sul display */

void Scrivi(char *testo);

/* Emette un beep */

void Buzzer(void);

CONCLUSIONISono sicuro che acquisita un po’ di esperienza nel-l’uso del linguaggio, apprezzerete ancora di più gliargomenti trattati in questa puntata, e vi rendere-te conto gradualmente di quanto tempo e faticapuò fare risparmiare un programma ben scritto findall’inizio.

Nella prossima puntata cambieremo decisamenteargomento, e ci occuperemo invece dell’ambientedi sviluppo e del compilatore dedicato ad unpopolare microcontrollore.

TUTORIAL52

TUTORIAL

DI STEFANO-impaginato 1-10-2004 17:08 Pagina 52

Page 52: Fare Elettronica - FE 233.pdf

DI STEFANO-impaginato 1-10-2004 17:08 Pagina 53

Page 53: Fare Elettronica - FE 233.pdf

LA SIM: UN ESEMPIO DISMARTCARD AMICROPROCESSORE

RIPRENDIAMO LA NOSTRAPARTITA A CARTECosa ci siamo detti negli arti-coli precedentiPer chi non avesse avuto la pos-sibilità di leggerci sin dall’iniziodel nostro tutorial, facciamo unabreve panoramica dei contenutidegli articoli precedenti.Nella prima parte, abbiamointrodotto il termine smartcard.Abbiamo effettuato alcune clas-sificazioni fondamentali (tra cui,le smartcard a memoria e amicroprocessore) e presentatogli standard internazionali diriferimento, formulati dall’ISO,che le smartcard più diffusedevono seguire. Nel secondo eterzo articolo, sono state appro-fondite rispettivamente le

smartcard a memoria (in parti-colare quelle basate sul chipSLE4442) e le smartcard amicroprocessore (standard e“meno standard”). Nella quartaparte, abbiamo finalmentemesso mano al saldatore, realiz-zando un economico lettoreuniversale di smartcard, deno-minato UniReader, compatibilesia con le smartcard a memoriache con quelle a microprocesso-re. Infine, nel precedente artico-lo (quinta parte), abbiamo utiliz-zato le smartcard a memoria inalcune applicazioni pratiche,realizzando un firmware ad hocper l’UniReader (sia in versionestand-alone, sia in versioneslave).In questa parte e nella successi-

va, descriveremo nei dettagliuna smartcard che, con moltaprobabilità, è già in nostro pos-sesso, magari in più esemplari: laSIM dei telefoni GSM. Il lettoreche ci segue sin dall’inizio sabene che questo oggetto non èaltro che una smartcard a micro-processore che può essere gesti-ta alla stessa stregua delle altresmartcard. Descriveremo glistandard a cui le SIM fanno rife-rimento, le funzioni nel sistemaGSM, i comandi che permettonola gestione dei dati interni, l’or-ganizzazione delle varie informa-zioni utilizzate dal sistema.

Breve panoramica sulle smart-card a microprocessoreConsiglio al lettore che non

LA SIM: UN ESEMPIO DISMARTCARD AMICROPROCESSORE

SMARTCARDSMARTCARD

di Giuseppe [email protected]

In questo articolo, prenderemo tra le mani un tipo molto diffuso di smartcarda microprocessore, le SIM comunemente usate all’interno dei telefonini GSM.Verrà descritto il funzionamento di tali smartcard all’interno del sistema ditelefonia mobile GSM: funzionalità, organizzazione interna dei dati, comandi, ecc.

sesta parte

TUTORIAL54

TUTORIAL

MODUGNO-impaginato 1-10-2004 17:11 Pagina 54

Page 54: Fare Elettronica - FE 233.pdf

TUTORIAL 55

TUTORIAL

avesse letto il nostro tutorial direcuperare almeno la terza parteche contiene una descrizionedettagliata sulle smartcard amicroprocessore (oltre allaprima parte che considero pro-pedeutica). In questo breve para-grafo farò solo una veloce pano-ramica su questo tipo di carte per“rinfrescare” la memoria.Le smartcard a microprocessoresono delle normali smartcardche integrano internamente, adifferenza delle semplici smart-card a memoria, un vero e pro-prio microprocessore, unamemoria volatile e veloce(RAM), una memoria perma-nente più lenta (EEPROM oFLASH) ed un porta seriale.

Possiamo paragonare una diqueste smartcard ad un vero eproprio computer miniaturizza-to, dotato di una CPU, di unamemoria e di una sola perifericadi I/O, la porta seriale ISO7816(da non confondere con la clas-sica RS232 presente sui PC).Attraverso la porta seriale lacarta comunica con il mondoesterno (dispositivo di interfac-cia) ricevendo e rispondendo aicomandi più svariati. Questocollegamento seriale utilizza unpreciso protocollo di trasferi-mento dei dati, tra cui il più dif-fuso e semplice è quello deno-minato “T=0”, descritto nellaparte terza dello standardISO7816. Il microprocessore,

insieme alla memoria RAM,effettua tutte le elaborazioninecessarie per la gestione deidati memorizzati nella carta (let-tura e scrittura) e per la esecu-zione degli eventuali algoritmidi cifratura necessari per lasegretezza delle transazioni. Lamemoria non volatile è natural-mente usata per la memorizza-zione dei dati dell’utente o del-l’applicazione anche ad alimen-tazione assente: numeri seriali,dati anagrafici, chiavi crittografi-che, ecc.Come abbiamo visto nella terzaparte, lo standard ISO7816-3definisce un preciso protocolloper l’invio dei comandi. Questisono formati da una intestazio-

NUTCHIP

Divertirsi è facile

www.artek.it

NUTCHIPdivertirsiè facile

• 4 Ingressi• 4 Uscite• 1 Comparatore• Opera con RTX Aurel• Opera con telecomandi TV

Programmabile in 5 minutiRivenditori Welcome

IL TODDLERIL TODDLERun ROBOT che camminaper voi IN KIT

TAOSTAOSSensore di colore

Discrimina 100 coloriper Basic Stamp oMicrocontroller

LU - LALU - LALogic Analyzer USB200 MHz

16 canali su porta USB1 MByte di memoria per canale

STARTER KIT KIT08STARTER KIT KIT08per Micro MOTOROLAMC68HC908 GP32

HS350 MHZ 12 BIT USBHS350 MHZ 12 BIT USB• Oscilloscopio• Analizzatore di Spettro• Registratore Transitori• Voltmetro• Generatore Forme onda

QV502PLAYER MP3QV502PLAYER MP3con Compact Flashcontrollato via RS232

MINI TELECAMERA CCDA COLORIMINI TELECAMERA CCDA COLORIcon Microfono completa diTrasmettitore eRicevitore a 2,4 GHz

Sali a bordo e naviga sul sito WEB ARTEK per informazioni Tel. 0542.55900 - Fax 0542.55488

MODUGNO-impaginato 1-10-2004 17:11 Pagina 55

Page 55: Fare Elettronica - FE 233.pdf

TUTORIAL56

TUTORIAL

ne di cinque byte, denominatiCLA INS P1 P2 LEN e trasferitisempre dal lettore verso lasmartcard: in altre parole, lasmartcard non può mai decide-re di iniziare un trasferimentodati di sua iniziativa, ma puòsolo rispondere ai comandi rice-vuti dal dispositivo di interfac-cia. Subito dopo l’invio di que-sto comando, la smartcardrisponde con un procedure byteche indica al lettore come gesti-re correttamente la tensione diprogrammazione Vpp: nellamaggior parte dei casi, quandola tensione Vpp non viene usata,il procedure byte coincide con ilbyte INS. Dopo l’invio di questobyte, la smartcard può risponde-re con un pacchetto di byteoppure il lettore può inviareulteriori dati alla smartcard: ilverso del trasferimento dei datidipende dal tipo di comandoinviato (fondamentalmentedalla coppia dei byte CLA eINS). È necessario che sia il let-tore che la smartcard abbiano lastessa conoscenza a priori delsignificato dei vari comandi e,quindi, della direzione di trasfe-rimento dei byte. Se il comandoprevede un trasferimento dallacarta verso il lettore, LEN=0indica l’invio di 256 byte; vice-versa, se il comando indica untrasferimento dal lettore verso lacarta, LEN=0 indica che non cisarà alcun trasferimento di byte.

ISO7816 PARTE 4Nell’articolo sulle smartcard amicroprocessore abbiamo fattoriferimento allo standardISO7816 parte 3. Come abbia-mo visto, questo standard silimita a definire, per le smart-

card asincrone (cioè quelle amicroprocessore), la strutturadell’ATR ed il protocollo T=0 peril trasferimento di dati e coman-di nelle due direzioni. Non entranel merito dell’organizzazioneinterna dei dati né su comedevono essere gestiti all’inter-faccia lettore-smartcard. In altreparole, limitandosi alla terzaparte dell’ISO7816, è possibilecreare smartcard e lettoriincompatibili tra loro. Basti pen-sare, per esempio, ad una diver-sa codifica dei comandi (CLAe/o INS).È per questo motivo che è statapubblicata una quarta partedello standard ISO7816 chedefinisce una organizzazionelogica dei dati alla sezionesmartcard-lettore.L’implementazione interna, cioèl’allocazione dei dati e la lorocodifica nella memoria internadella smartcard, rimane ancoranon definita e può essere libera-mente ideata dallo sviluppatoredell’applicazione.La cosa importante è che questidati possano “apparire” nelmodo standard al lettore.Poiché le SIM GSM seguonoanche questo standard, è utileapprofondirne almeno alcuniaspetti principali.

Organizzazione logica deidati: i fileCosì come in un PC, anche nellesmartcard ISO7816-4 i dati ven-gono organizzati in una struttu-ra gerarchica di file. Lo standarddefinisce i Dedicated File (DF) egli Elementary File (EF): i primisono una sorta di cartelle, spes-so chiamati directory, mentre isecondi assomigliano ai file veri

e propri di un PC. Il DF principa-le viene chiamato Master File(MF) e rappresenta la radicedella struttura gerarchica adalbero. L’MF può contenere altriDF oppure EF. A loro volta, i DFdi primo livello possono conte-nere altri DF oppure EF e cosìvia. Ogni file è individuato da unidentificatore (file identifier) didue byte. L’MF è sempre identi-ficato da ‘3F00’, il valore ‘FFFF’ èriservato per usi futuri, mentre ilvalore ‘3FFF’ è riservato per laselezione di un file mediantepercorso relativo (vedi oltre).Come nel vecchio DOS, ancheper le smartcard c’è una direc-tory (DF) corrente; inoltre, c’èanche un file (EF) corrente.All’inizio della sessione (dopol’ATR) l’MF è la directory corren-te, mentre non c’è alcun fileselezionato. Successivamente, èpossibile selezionare un diversofile (DF o EF) mediante il coman-do SELECT FILE, attraverso leseguenti modalità:

• referenziando il suo identifica-tore a 2 byte;

• referenziando il suo percorsoassoluto (a partire dall’MF) orelativo (a partire dal DF cor-rente) citando gli identificato-ri di tutti i file intermedi;

• referenziando l’identificatorebreve (short file identifier) delfile (se implementato);

• referenziando il nome univo-co (da 1 a 16 byte) associatoal DF che si vuole selezionare(se implementato).

Lo standard prevede due tipi difile: transparent file e record file.I primi sono visti come unasequenza di byte a partire dal-

MODUGNO-impaginato 1-10-2004 17:11 Pagina 56

Page 56: Fare Elettronica - FE 233.pdf

TUTORIAL 57

TUTORIAL

l’indirizzo 0 fino all’indirizzo n-1,dove n è la dimensione dei datidel file. Per esempio, è possibilememorizzare un numero di serieo una chiave crittografica in unfile di questo tipo. I file basati surecord, invece, possono essereletti e scritti solo a gruppi di nbyte, dove n è generalmentecostante e dipende dal file. Peresempio, è possibile utilizzareun file di record per memorizza-re una rubrica di numeri di tele-fono: ogni nominativo occuperàun intero record. Esistono tretipi di file basati su record:linear fixed file, linear variablefile e cyclic file. I linear fixed filesono una sequenza di record alunghezza fissa a cui si puòaccedere mediante un numerodi record. I linear variable filesono identici ai fixed con la dif-ferenza che la dimensione diogni record può essere variabi-le (non sono molto usati nelleapplicazioni comuni). Infine, icyclic file sono sempre basati surecord a lunghezza fissa a cui sipuò accedere ciclicamente: l’ul-timo record aggiunto (in ordinedi tempo) sarà il primo ad esse-re letto.Nei transparent file è possibileaccedere ai dati mediante unoffset relativo al primo byte(indirizzo 0). Nei file strutturati arecord, invece, si può accedereai dati mediante un numero direcord (a partire da 1) oppuremediante un puntatore ad unrecord corrente.Il software di gestione dellasmartcard può conoscere il tipodi file e tutti i suoi attributi(dimensione, numero di record,lunghezza dei record, ecc.) tra-mite la risposta al comando

SELECT FILE che rappresenta ilFile Control Information (FCI). Èuna sequenza di byte che per-mette di risalire al tipo di file eda tutti i suoi parametri.Ad ogni file è associato un mec-canismo di sicurezza che pro-tegge i dati da operazioni di let-tura, scrittura, ecc. Per esempio,se un file è protetto in lettura,sarà necessario inserire corretta-mente un codice segreto (PIN)per abilitare tale operazione.Anche il tipo di protezione èindicato nell’FCI.In realtà, lo standard ISO7816-4è molto complicato e generico edescrive una serie di comandiper l’accesso ai dati memorizza-ti nei file della smartcard:comandi di lettura e scrittura, diautenticazione, di selezione deifile, ecc. Nella maggior parte deicasi pratici, però, sono imple-mentati solo una parte deicomandi e delle funzionalitàdescritte nello standard. Perquesto motivo, non approfon-diamo ulteriormente il contenu-to di queste direttive e rivolgia-mo subito la nostra attenzionealle SIM.

SUBSCRIBER IDENTITYMODULECos’è una SIMLa SIM (Subscriber IdentityModule) è una smartcard utiliz-zata nel ben noto sistema ditelefonia cellulare GSM perscopi di autenticazione dell’u-tente e sicurezza delle conversa-zioni durante le comunicazionicon gli apparati di rete del pro-prio gestore di servizi. Gli innu-merevoli standard che formanoil sistema GSM sono formalizza-ti dall’ETSI e disponibili gratuita-

mente sul suo sito, previa regi-strazione. I più importanti docu-menti relativi alle SIM e al lorofunzionamento, sono:

• GSM 02.17 “SubscriberIdentity Modules, FunctionalCharacteristics”, che descrivele funzionalità (a livello logi-co) ed il ruolo di una SIMall’interno del sistema GSM;

• TS 100 977 (3GPP TS 11.11)“Specification of the SIM-MEInterface”, che descrive l’in-terfaccia (ad un livello tecni-co) tra la SIM ed il telefonocellulare.

Una SIM è una smartcard (o IC-Card, utilizzando i termini stan-dard) che individua un cliente, oun abbonamento, di un deter-minato provider. La responsabi-lità della gestione della carta èdel provider che la fornisce alcliente sottoscrittore di un qual-siasi abbonamento. Il sistema GSM ha introdotto perla prima volta, nell’ambito dellatelefonia mobile, l’idea di sepa-rare logicamente (e fisicamente)il telefono cellulare dall’utente edai suoi dati. Usando la termino-logia degli standard, il telefoni-no viene definito MobileEquipment (ME), mentre il tele-fonino dotato di SIM è definitoMobile Station (MS). L’ME è solol’apparato elettronico che per-mette di effettuare e riceveretelefonate sfruttando la reteGSM, ma ha bisogno della SIMper acquisire i permessi e auten-ticare il cliente presso il gestoretelefonico (solo le telefonated’urgenza possono essere effet-tuate senza una SIM valida inse-rita nell’ME), oppure per deci-

MODUGNO-impaginato 1-10-2004 17:11 Pagina 57

Page 57: Fare Elettronica - FE 233.pdf

TUTORIAL58

TUTORIAL

frare il traffico dati (voce, SMS,ecc.) da e verso la rete.Sono previsti due tipi di smart-card a livello fisico: le IC-Card,che hanno le stesse dimensionidelle smartcard ISO7816 (tipocarta di credito) e le Plug-In SIMche hanno una dimensioneridotta (25x15 mm). Le primepossono normalmente essereestratte dal telefonino in modomolto semplice e possono esse-re delle carte multiapplicazionidi cui il GSM è solo una di que-ste. Il secondo tipo di carta,molto più piccolo delle IC-Card,è stato introdotto per permette-re la miniaturizzazione dei tele-fonini e, normalmente, è semi-permanente. A parte la dimen-sione fisica, elettricamente elogicamente i due tipi di SIMsono identici. Faccio notare chein commercio esistono degliadattatori che permettono ditrasformare una Plug-In SIM inuna IC-Card. Consiglio al lettoreche volesse sperimentare con leSIM mediante l’UniReader, cosìcome descritto nel prossimoarticolo, di procurarsi questoadattatore, dal costo irrisorio,presso tabaccherie o negozi pertelefonia, in quanto il nostro let-tore prevede solo le IC-Card. Inalternativa, è possibile costruir-sene uno facendo del semplicebricolage, ritagliando opportu-namente un cartoncino (o pla-stica) rigido dello spessore diuna SIM e incollando due foglida entrambe le parti, in modoche rimanga esternamente unafinestrella per l’inserimento dellaSIM e per i suoi contatti.

AutenticazioneIl sistema di autenticazione in

una qualsiasi rete di telecomuni-cazioni è estremamente impor-tante poiché potrebbe inficiarneil reale utilizzo e la sua diffusio-ne. Basti pensare alla preceden-te tecnologia di telefonia cellula-re ETACS e ai numerosissimi casidi clonazione dell’identità del-l’utente. Il sistema GSM è com-pletamente digitale e permette,quindi, di utilizzare tecniche piùefficaci di autenticazione (critto-grafia). In questo paragrafo faròun piccolo accenno al meccani-smo utilizzato dalla rete GSMper riconoscere un cliente cheha diritto di usufruire dei servizimessi a disposizione dall’infra-struttura.Ogni SIM rilasciata al cliente dalgestore, proprietario di una retedi telefonia cellulare GSM(PLMN, Public Land MobileNetwork), è individuata univoca-mente da un numero, chiamatoIMSI (International MobileSubscriber Identity) formato alpiù da 15 cifre decimali: MCC(Mobile Country Code) di 3 cifre,che individua la nazione dell’o-peratore (222 per l’Italia); MNC(Mobile Network Code), che indi-

vidua l’operatore all’internodella nazione (10 per Vodafonein Italia); MSIN (Mobile StationIdentification Number) al più di10 cifre, che rappresenta ilnumero seriale creato dal provi-der e che individua univoca-mente un suo cliente. Non è unnumero segreto, tant’è che èpossibile leggerlo, come faremonel prossimo articolo, diretta-mente dalla SIM selezionando ilfile relativo.Associato all’IMSI c’è un altroidentificatore di 16 byte, deno-minato Ki, che individua univo-camente il cliente. Il numero Kiè memorizzato segretamenteall’interno della SIM, da cui èimpossibile leggerlo e all’internodegli apparati di rete del gesto-re. Infine, la SIM ha la possibilitàdi eseguire un algoritmo critto-grafico (definito A3) che per-mette di trasformare un numerocasuale di 16 byte (RAND) in unnumero di 4 byte (SRES), utiliz-zando come chiave la Ki. In figu-ra 1 è mostrato il flusso di infor-mazioni tra la rete GSM e la SIMdel cliente (tramite l’ME) duran-te la fase di autenticazione alla

Figura 1: Procedura di autenticazione alla rete GSM

MODUGNO-impaginato 1-10-2004 17:11 Pagina 58

Page 58: Fare Elettronica - FE 233.pdf

TUTORIAL 59

TUTORIAL

rete del gestore.All’accensione (o quando ènecessaria l’autenticazione),l’ME richiede l’IMSI alla SIM e loinvia alla rete dell’operatoremediante l’interfaccia radio. Gliapparati di rete controllano l’esi-stenza dell’IMSI all’interno di unproprio database e, in caso affer-mativo, trasmettono alla SIM(tramite l’ME) un numero casua-le di 16 byte denominato RAND.Indipendentemente, la SIM e larete calcolano il numero di 4byte SRES a partire dal numerocasuale RAND e dalla chiave crit-tografica segreta Ki, utilizzandol’algoritmo comune A3. A questopunto, l’ME richiede alla SIM ilvalore SRES calcolato e lo tra-smette al gestore che può con-trollare la coincidenza tra l’SREScalcolato dalla SIM e quello cal-colato dagli apparati di rete. Se idue numeri sono uguali, vuoldire che la SIM è autentica(conosce sia l’algoritmo A3 chela chiave segreta Ki) e può esse-re abilitata ai servizi di rete.Faccio notare che lo standardGSM non definisce i dettagli del-l’algoritmo A3 ma solo l’input (lachiave Ki di 16 byte ed il nume-ro RAND di 16 byte) e l’output (ilnumero di 4 byte SRES); l’opera-tore telefonico può utilizzare unqualsiasi algoritmo e, possibil-mente, tenerlo segreto.Questo sistema di autenticazio-ne è molto efficace, poiché sibasa sulla segretezza della chia-ve Ki memorizzata nel databasedel gestore e nella SIM del cellu-lare. Essendo la SIM una smart-card a microprocessore, è possi-bile effettuare elaborazioni(come l’esecuzione dell’algorit-mo A3) e rendere invisibli i dati

(come la Ki), rendendo il siste-ma molto più sicuro.In realtà, il meccanismo descrit-to in precedenza è semplificatorispetto al caso reale. Per esem-pio, non è stata presa in consi-derazione la possibilità chel’IMSI ricevuto dalla rete appar-tenga ad un altro provider,magari di un’altra nazione. Inquesto caso, è necessario deci-dere se è possibile effettuare ilroaming consultando le infra-strutture del provider del clien-te, mediante uno scambio diinformazioni ben più comples-so. Accenno solo al fatto che l’au-tenticazione alla rete avviene dicontinuo durante l’operativitàdell’ME, sfruttando spesso unnumero seriale temporaneo(TMSI) piuttosto che l’IMSI peraumentare l’efficienza del sistema.

SegretezzaOltre al classico problema diautenticazione, una rete di tele-comunicazioni deve anchegarantire la segretezza delleinformazioni scambiate. Ciò èancor più importante nelle retidi telefonia mobile, poiché ilmezzo trasmissivo, cioè la trattaradio tra l’ME e la stazione base(comunemente detta cella o,più tecnicamente, BTS) è “didominio pubblico”. Anche inquesto caso, la tecnologia digi-tale ci permette di utilizzare tec-niche di crittografia per cifrare leinformazioni in transito e ren-derle illeggibili ad eventuali“ascoltatori non autorizzati”.Nel vecchio sistema di telefoniamobile analogico ETACS erapossibile, con appositi strumen-ti, demodulare il segnale tra-smesso in chiaro (per esempio,

mediante un analizzatore dispettro evoluto) ed ascoltare letelefonate in corso.Il sistema GSM, invece, prevedela cifratura di tutti i messaggiscambiati tra l’MS (il telefonino)e la BTS (l’antenna più vicinacon cui l’MS comunica) median-te un algoritmo standardizzatoed implementato in ogni cellula-re GSM e denominato A5.Durante la comunicazione traMS e BTS, i dati vengono cifratimediante l’algoritmo A5, utiliz-zando una chiave crittograficatemporanea di 8 byte, memoriz-zata nella SIM del cellulare edenominata Kc. Quello che normalmente acca-de è che la SIM esegue sia l’al-goritmo A3, descritto preceden-temente ed utilizzato in fase diautenticazione per la generazio-ne del numero SRES, sia un altroalgoritmo, detto A8, per lagenerazione della chiave di deci-frazione dei messaggi Kc.Spesso, la coppia degli algoritmiA3 e A8 vengono implementaticome un unico algoritmo,comunemente detto A38, all’in-terno della SIM, in modo chevengano generati automatica-mente sia il numero SRES, sia lachiave Kc. Tutte le informazioniche il telefonino scambia conl’antenna sono codificate contale chiave. Essa viene cambiatanumerose volte durante una ses-sione (per esempio, una chiama-ta telefonica) per evitare che sipossa risalire alla chiave Kc,intercettando una lungasequenza di dati codificati conlo stesso codice.

Struttura logica di una SIMLe SIM GSM sono delle smart-

MODUGNO-impaginato 1-10-2004 17:11 Pagina 59

Page 59: Fare Elettronica - FE 233.pdf

TUTORIAL60

TUTORIAL

card a microprocessore cheseguono gli standard ISO7816-3e ISO7816-4. Per questo moti-vo, i dati sono organizzati logi-camente in file, così comedescritto in precedenza. Comeal solito, esiste un MF con iden-tificatore ‘3F00’ e numerosi DFed EF figli. Nelle SIM, i DF diprimo livello (figli direttidell’MF) sono identificati da“7Fxx”, mentre i DF di secondolivello sono identificati da“5Fxx”. Gli EF contenuti diretta-mente nell’MF sono identificatida ‘2Fxx’, quelli contenuti neiDF di primo livello sono identifi-cati da “6Fxx”, infine quelli con-tenuti nei DF di secondo livelloda ‘4Fxx’. In altre parole, ilprimo byte dell’identificatorepermette di risalire alla posizio-ne (livello) del file all’internodella struttura gerarchica.Nell’assegnazione degli identifi-catori è necessario che nessunfile abbia lo stesso identificatoredi un altro contenuto nella stes-sa directory (DF), così come nonpossono esserci due file con lostesso nome in una stessa cartel-la di un PC.Ad un EF è associato un header,che indica il tipo di file ed i suoiattributi ed un corpo dati didimensione variabile. Un DF,invece, ha solo funzioni di con-tenitore (directory), quindi hasolo un header senza dati. Perpoter accedere correttamente aidati contenuti in un file, è neces-sario leggere e interpretarel’header associato.In una SIM sono previsti tre tipidi EF:

• transparent file: una sequenzadi byte a cui si può accedere

mediante un offset relativo(indirizzo), rispetto al primobyte del file (indirizzo 0);

• linear fixed file: una sequenzadi record a lunghezza fissa acui è possibile accederemediante un numero direcord (a partire da 1), unpuntatore o una ricerca;

• cyclic file: una sequenza cicli-ca di record a lunghezza fissain cui esiste un collegamentotra il primo record e l’ultimorecord, in modo da memo-rizzare dati in ordine crono-logico.

Selezione dei fileCosì come descritto nello stan-dard ISO7816-4, esiste uncomando apposito per la sele-zione dei file in una SIM, defini-to SELECT FILE. Dopo l’ATR,viene automaticamente selezio-nata la directory MF.Selezionando un DF (o di nuovol’MF), viene modificata la direc-tory corrente. Dopo questa ope-razione, non c’è alcun EF corren-te. Selezionando un EF, vieneimpostato come DF corrente ladirectory padre dell’EF seleziona-to. Ovviamente, l’EF corrente

risulta quello appena selezionato.In qualsiasi momento, in funzio-ne dell’ultimo file selezionato, èpossibile selezionare:

1 un qualsiasi file contenutonella directory corrente;

2 un qualsiasi DF contenuto nelDF padre della directory cor-rente;

3 il padre della directory corren-te;

4 il DF corrente;5 il Master File.

Per rendere più chiaro il mecca-nismo, più semplice da capireche da spiegare, consideriamol’esempio in figura 2, dove èmostrato una possibile strutturagerarchica di file memorizzata inuna SIM (l’esempio è identico aquello presente sullo standard).

In Tabella 1 sono mostrati tutti ifile che è possibile selezionare,mediante un singolo comandoSELECT FILE, a partire da unaltro file corrente. Per esempio,se il file corrente è l’EF2, saràpossibile selezionare MF (5),DF1 (4), DF2 (2), DF3 (1). Traparentesi è indicata la regola

Figura 2: Possibile struttura di file in una SIM

MODUGNO-impaginato 1-10-2004 17:11 Pagina 60

Page 60: Fare Elettronica - FE 233.pdf

TUTORIAL 61

TUTORIAL

relativa che permette la selezio-ne di quel file.

Anche se non è stato messo inevidenza, è sempre possibileselezionare il file corrente, cioèl’ultimo file selezionato.

Modalità d’accesso ai fileOgni EF in una SIM ha unamodalità d’accesso relativo adogni comando (lettura o ricerca,scrittura, abilitazione, ecc). Talemodalità assume un valore interoda 0 a 15, secondo la Tabella 2.

I due codici segreti CHV1 e CHV2rappresentano dei meccanismi disicurezza che permettono soloall’utente, che conosce tali codi-ci, di accedere alle informazionipiù sensibili della SIM (rubrica,SMS, IMSI, impostazioni, ecc). IlCHV1 (Card Holder Verification 1)è il PIN (vecchia terminologia)formato da un minimo di 4 ad unmassimo di 8 cifre decimali, ilCHV2 (Card Holder Verification 2)è un altro codice segreto che puòessere utilizzato per altri scopi

(blocco chiamate in entrata e/oin uscita, ecc).Tali condizioni per l’accesso alfile non sono da considerare inmodo gerarchico: in altre paro-le, l’aver inserito correttamenteil CHV2 non permette di effet-tuare comandi su file che preve-dono l’inserimento del CHV1.Come molti sapranno, è possibi-le inserire fino a tre volte unCHV1 errato dopo le quali ilcodice viene bloccato. Per poter

essere sbloccato, sarà necessarioutilizzare un altro codice segretodenominato UNBLOCK CHV1(PUK nella vecchia terminolo-gia). Lo stesso vale anche per ilCHV2 che ha un suo relativoUNBLOCK CHV2 (PUK2). È pos-sibile inserire in modo erratol’UNBLOCK CHV1 o 2 un massi-mo di 10 volte consecutive,dopo le quali il codice bloccatonon può più essere sbloccatodal cliente e la SIM deve essere

Ultimo file selezionato Selezioni valide

MF DF1, DF2, EF1

DF1 MF, DF2, DF3, EF2

DF2 MF, DF1, EF3, EF4

DF3 MF, DF1, EF5

EF1 MF, DF1, DF2

EF2 MF, DF1, DF2, DF3

EF3 MF, DF1, DF2, EF4

EF4 MF, DF1, DF2, EF3

EF5 MF, DF1, DF3

Tabella 1: Selezioni valide per la struttura di file mostrata in Figura 2.

MODUGNO-impaginato 1-10-2004 17:11 Pagina 61

Page 61: Fare Elettronica - FE 233.pdf

riportata al gestore.Il CHV1 può essere anche disabi-litato dall’utente: in questo caso,la modalità d’accesso CHV1 saràsempre soddisfatta.Nessuna condizione per l’accesso èassociata alle directory (DF e MF).

ComandiCosì come per tutte le smart-card ISO7816-3, il dispositivod’interfaccia (nel caso GSM èrappresentato dall’ME) collo-quia con la carta mediante deicomandi trasmessi e dellerisposte ricevute. Tali comandie risposte non sono altro cheuna sequenza di byte trasporta-ta mediante un preciso proto-collo, per esempio il già citatoT=0.Tutte le SIM prevedono almenoquesto protocollo, ma possonooffrire altri sistemi di trasmissio-ne più evoluti (indicati, come alsolito, nell’ATR). Per i nostriesperimenti utilizzeremo sem-pre il protocollo standard T=0.Usando la terminologia dellostandard ISO, la sequenza dibyte che forma un comandotrasmesso dall’interfaccia o larisposta della SIM viene chia-mata APDU (Application

Protocol Data Unit). Nel primocaso si parlerà di commandAPDU (o semplicementecomando), nel secondo diresponse APDU (o semplice-mente risposta).Normalmente, ad ogni coman-do c’è sempre una risposta daparte della SIM.Come già detto nella terzaparte del tutorial, un comandoè formato da una intestazione(header) di cinque byte edeventualmente dei dati. Nelcaso siano presenti dei dati, ilbyte LEN (il quinto dell’intesta-zione) coincide con il numerodei byte trasferiti alla SIM.Quest’ultima risponde con duebyte che rappresentano laStatus Word, cioè il risultatodell’elaborazione del comando.Se, invece, deve avvenire untrasferimento opposto di dati(dalla SIM all’ME), il comandosarà formato dalla sola intesta-zione (cinque byte) dove il byteLEN indicherà il numero di byteche la SIM dovrà trasmettere,mentre la risposta sarà formatada LEN byte di dati, più i duebyte della Status Word. È danotare che, in questo caso, seLEN=0, ci sarà un trasferimento

di 256 byte dalla SIM all’ME.In realtà, la casistica è piùcomplicata per i seguenti duemotivi:

• un solo comando potrebbeprevedere il trasferimentosimultaneo di dati in entram-be le direzioni;

• l’ME potrebbe non sapere apriori il numero dei byte chela SIM dovrà trasmettere,quindi non può “riempire”correttamente il byte LEN delcomando relativo.

Per risolvere entrambe le situa-zioni, è previsto un comandodedicato (GET RESPONSE) chepermette all’ME di ottenereuna nuova risposta dalla SIM.Per maggiore chiarezza, in figu-ra 3 sono rappresentati tutti icinque casi possibili di trasferi-mento dati tra ME e SIM.Il primo caso è semplice e pre-vede l’invio di un comandodall’ME alla SIM senza alcundato né in uscita né in entrata.Il byte LEN sarà quindi nullo ela risposta della SIM conterràsolo i due byte della StatusWord (90 00, nel caso non cisiano errori).

TUTORIAL62

TUTORIAL

Livello Modalità d’accesso

0 ALW (always, sempre): operazione sempre permessa

1CHV1: operazione permessa solo dopo la verifica del codice segreto CHV1(o se il codice CHV1 è disabilitato)

2 CHV2: operazione permessa solo dopo la verifica del CHV2

3 Riservato per usi futuri

da 4 a 14 ADM: operazione permessa solo durante la fase amministrativa (riservata al gestore)

15 NEV (Never, mai): operazione mai permessa

Tabella 2: Modalità d’accesso di un file

MODUGNO-impaginato 1-10-2004 17:11 Pagina 62

Page 62: Fare Elettronica - FE 233.pdf

TUTORIAL 63

TUTORIAL

Il secondo caso è relativo alsolo trasferimento di dati, dilunghezza nota, dalla SIMverso l’ME. Il comando è for-

mato solo dall’header di cin-que byte dove LEN rappresentail numero di byte da trasferire(se LEN=0, i dati trasferiti

saranno 256).L’APDU di risposta sarà formatodai LEN byte richiesti più i duebyte della Status Word.Nel terzo caso, l’ME richiedealla SIM dei dati di cui nonconosce la lunghezza.L’ME trasmette un comandocon il byte LEN=0 e la SIMrisponde con una Status Word9F L1, dove L1 rappresenta lalunghezza dei dati. A questopunto, l’ME può trasmettere uncomando GET RESPONSE perottenere i dati richiesti, dovespecifica correttamente il byteLEN=L2, normalmente ugualea L1 (in alcuni casi potrebbeessere inferiore).Anche il quarto caso è moltosemplice e prevede un trasferi-mento di dati solo dall’MEverso la SIM. Infine, l’ultimo caso è il piùcomplicato, poiché prevede untrasferimento di dati dall’MEalla SIM, ma anche un trasferi-mento nella direzione opposta(di lunghezza conosciuta omeno). In questo caso l’ME tra-smette un comando in cui inviai propri dati ed aspetta unaStatus Word del tipo 9F L1,dove L1 rappresenta la lun-ghezza dei dati di risposta.Successivamente, l’ME invia ilcomando GET RESPONSE in cuiriempie correttamente il byteLEN con L2, normalmente pariad L1 o inferiore.In Tabella 3 è mostrato l’elencodi tutti i comandi che una SIMriconosce, insieme alla codificadei parametri INS, P1, P2 eLEN. Il verso di trasmissione deidati è indicato nella colonnaS/R dove S indica che i datisono trasmessi (Send) dall’ME

Figura 3: Rappresentazione dei cinque casi di trasferimenti ME-SIM

MODUGNO-impaginato 1-10-2004 17:11 Pagina 63

Page 63: Fare Elettronica - FE 233.pdf

TUTORIAL64

TUTORIAL

ed R indica che i dati sono rice-vuti (Received) dall’ME.Ovviamente, alcuni comandipossono prevedere entrambe ledirezioni (grazie al comandoGET RESPONSE).Per l’applicazione GSM, il byteCLA del comando è semprepari ad ‘A0’.Alcuni comandi gestisconodirettamente i file (EF o DF)

memorizzati nella SIM, altrihanno scopi diversi (per esem-pio, l’esecuzione degli algorit-mi A3 e A8). In Tabella 4 sonoelencati tutti i comandi cheriguardano i file, specificando-ne il tipo su cui possono essereeseguiti. Per esempio, il coman-do SELECT e STATUS possonoessere effettuati su tutti i tipi difile, mentre il comando READ

BINARY può essere eseguitosolo su un transparent file.

STANCHI DI GIOCARE?Cosa ci aspetta nel prossimoarticoloTerminiamo qui questo articoloper non renderlo troppo lungoe noioso. Nel prossimo conti-nueremo la nostra analisi sulfunzionamento delle SIM, in

COMANDO INS P1 P2 LEN S/R

SELECT A4 00 00 02 S/R

STATUS F2 00 00 lunghezza R

READ BINARY B0 indirizzo alto indirizzo basso lunghezza R

UPDATE BINARY D6 indirizzo alto indirizzo basso lunghezza S

READ RECORD B2 n. record modalità lunghezza R

UPDATE RECORD DC n. record modalità lunghezza S

SEEK A2 00 tipo/modalità lunghezza S/R

INCREASE 32 00 00 03 S/R

VERIFY CHV 20 00 n. CHV 08 S

CHANGE CHV 24 00 n. CHV 10 S

DISABLE CHV 26 00 01 08 S

ENABLE CHV 28 00 01 08 S

UNBLOCK CHV 2C 00 00 o 02 10 S

INVALIDATE 04 00 00 00 -

REHABILITATE 44 00 00 00 -

RUN GSM ALGORITHM 88 00 00 10 S/R

SLEEP FA 00 00 00 -

GET RESPONSE C0 00 00 lunghezza R

TERMINAL PROFILE 10 00 00 lunghezza S

ENVELOPE C2 00 00 lunghezza S/R

FETCH 12 00 00 lunghezza R

TERMINAL RESPONSE 14 00 00 lunghezza S

Tabella 3: Elenco dei comandi di una SIM

MODUGNO-impaginato 1-10-2004 17:11 Pagina 64

Page 64: Fare Elettronica - FE 233.pdf

TUTORIAL 65

TUTORIAL

particolare descriveremo in det-taglio i comandi ed i file piùimportanti. Inoltre, tramite unapposito firmware perl’UniReader vedremo come èpossibile sperimentare diretta-mente con le SIM senza l’utiliz-zo di un telefonino. Con unsemplice software per PC, sare-mo quindi capaci di leggere esalvare sul nostro computer larubrica e gli SMS memorizzatinella scheda.

Comando MF DF Transparent Linear-fixed Cyclic File

SELECT

STATUS

READ BINARY

UPDATE BINARY

READ RECORD

UPDATE RECORD

SEEK

INCREASE ¸

INVALIDATE

REHABILITATE

Tabella 4: Comandi relativi ai file.

BIBLIOGRAGIA E LINK

Normative GSM (in inglese):www.etsi.orgStandard ISO7816 (in inglese,a pagamento): www.iso.org

VISUAL PARSIC Compilatore grafico per Microchip Picmicro

Telecamere a colori e b/ntrasmittenti e via cavo

Gruppi di continuitàda 500 VA fino a 160 KVA

Programmatori PICICD Debugger

Programmatori Willemoriginali olandesi

Schede PLC per PICmicro

Display LCD/VFDNoritake Cristallfontz

Display a carattere scorrevolein offerta speciale

WWW.PARSICITALIA.ITVia Rovereto, 13 - 48020 Savio (RA) - Tel 0544.927468 - Fax 178.6040078 - Email: [email protected]

Per chi vuole scrivere un programma in Assembler senza scrivere un solo rigo di codice

MODUGNO-impaginato 1-10-2004 17:11 Pagina 65

Page 65: Fare Elettronica - FE 233.pdf

ALTIMETRO BAROMETRICOA DOPPIA ESPULSIONE

PRINCIPIO DIFUNZIONAMENTOCome sappiamo, la pressioneatmosferica varia in funzionedell’altitudine, perciò possia-mo sfruttare questo fenome-no fisico per misurare la quotaa cui siamo, misurando conprecisione la pressioneambientale.Purtroppo le cose sono legger-mente più complesse, in quantoper motivi meteorologici, la pres-

sione teorica ricavata dalla tabelladell’ATMOSFERA STANDARDvaria notevolmente in funzione

delle condizioni meteorologiche,come il susseguirsi delle alte ebasse pressioni. È perciò indispensabile prima

tarare l’altimetro ad una quotaconosciuta e poi effettuare la let-tura a quote diverse. La taratura è

ovviamente destinata a dete-riorarsi in poco tempo maper le nostre esigenze è suffi-ciente conoscere la pressioneiniziale del punto di lancio.Il processore svolge automa-

ticamente questa funzione: almomento dell’accensione cam-piona la pressione ambientale e lamemorizza come “quota zero”.

ALTIMETRO BAROMETRICOA DOPPIA ESPULSIONEdi Esteban Mascarella ([email protected]) e di Eugenio Cosolo ([email protected])

(si ringraziano per la collaborazione Stefano Innocenti e Alessio Cosolo)

In questa nuova puntata della rubrica di missilistica amatoriale illustreremo unprogetto tecnologicamente molto avanzato, che ha richiesto diversi mesi dilavoro per la scrittura del software in quanto impiega algoritmi molto sofisticati.Si tratta di un altimetro elettronico computerizzato in grado di rilevare la quotamassima raggiunta da un razzo e di attivare due distinti sistemi di espulsionedei paracadute, uno all’apogeo ed uno alla quota di 200 metri. Il valore dellaquota massima viene memorizzato per essere poi rivelato con una serie di beepcodificati. È un dispositivo indispensabile per i razzi più evoluti e per quelli nondotati di un sistema di espulsione autonomo, come quelli propulsi da un motoreibrido. Le dimensioni molto contenute lo rendono comunque adatto per qualsiasimodello di razzo, anche quelli più piccoli. La semplicità costruttiva ed il costomodesto permettono la realizzazione a chiuque.

TECNOLOGIE SPERIMENTALI66

TECNOLOGIE SPERIMENTALI

PROGETTIAMO UN RAZZOPROGETTIAMO UN RAZZOnona parte

COSOLO-impaginato 1-10-2004 17:46 Pagina 66

Page 66: Fare Elettronica - FE 233.pdf

rallentare la discesa ad una veloci-tà di sicurezza. Al termine del voloil processore inizia una sequenzaacustica in codice per informarcisulla quota massima raggiunta(vedi i dettagli in seguito).

LA PRESSIONEATMOSFERICA IN FUNZIONEDELLA QUOTAAbbiamo visto che un altimetro

Se ad esempio siamo a quota 30metri sul livello del mare e la pres-sione rilevata è di 1000 millibar,questo valore sarà consideratocome base (quota zero) per i suc-cessivi campionamenti per stabili-re la quota differenziale. Dopol’azzeramento il processore verifi-ca le letture successive per stabili-re se effettivamente è iniziato ilvolo. Se la pressione diminuisceper l’equivalente di 100 metri diquota, decide che il volo è inizia-to e “arma” il dispositivo di espul-sione del paracadute. Questa faseserve a introdurre un fattore disicurezza in modo da non rischia-re di espellere il paracadute pererrore. Lievi variazioni di pressio-ne possono essere causate ad

esempio da refoli di vento, chepotrebbero trarre in inganno ilsistema facendogli credere diessere già in volo.A questo punto il microprocesso-re attende che il decremento dipressione termini, il che significache la quota massima è stata rag-giunta. In questo istante attiva ilcanale collegato all’espulsione delparacadute “drogue” e poi conti-nua a rilevare la pressioneambientale, questa volta inaumento, visto che siamo in fasedi discesa.Quando secondo i suoi calcoli laquota raggiunge i 300 metri atti-va la seconda uscita, quella colle-gata all’espulsione del paracaduteprincipale che ha il compito di

TECNOLOGIE SPERIMENTALI

TECNOLOGIE SPERIMENTALI 67

Figura 1: Foto del paracadute

Tel. 02 66504794 - Fax 02 66508225

i n f o @ e l e t t r o s h o p . c o m

www. e l e t t r o shop . c om

La migliore Documentazione Tecnica

CD-ROM ECAUna collana completa che comprende migliaia di dati

tecnici sui componenti elettronici e tabelle di equivalenti.Tutti modelli dispongono di funzioni di ricerca molto avanzate,è quindi possibile trovare il componente desiderato anche

disponendo di alcune sue caratteristiche.

VRT bookÈ la versione cartacea in due volumi delVRT-Disk. Contiene le tabellecomparative di oltre130.000 componenti traTransistori, Tiristori, Diodi,circuiti integrati, ecc...

COSOLO-impaginato 1-10-2004 17:46 Pagina 67

Page 67: Fare Elettronica - FE 233.pdf

barometrico stabilisce la quotain funzione della pressioneatmosferica.Possiamo ricavare la pressioneteorica (valida fino a circa 6000metri) dalla seguente formula:Pq = P0 * (EXP ((H / 8000 * - 1 )))

Dove:

• Pq = pressione atmosferica inquota (mBar)

• P0 = pressione atmosferica allaquota di lancio (mBar)

• H = quota (metri)

La formula che ci permette dirisalire alla differenza di pressio-ne in base al codice audio emes-so dal microprocessore è laseguente:

delta P = codice altimetro *1,0845

Il valore di 1,0845 è ricavato dallecaratteristiche del sensore di pres-sione e dalla conversione AD delmicroprocessore.Se ad esempio l’altimetro emetteil codice 75, possiamo calcolareche la variazione della pressioneatmosferica tra la quota zero e l’a-pogeo è di:

delta P = (75 * 1,0845 ) == 81,34 mBar

Considerata P0 la pressione dellaquota di lancio (supponiamo1013,25 mBar), la pressione asso-luta all’apogeo è di:Pq = P0 – delta P = 1013,25 –

81,34 = 931,91 mBar

(La leggera differenza di valoririspetto alla tabella del ATMO-SFERA STANDARD è dovuta agliarrotondamenti introdotti neicalcoli).

La pressione ottenuta può essereconvertita in metri di quota appli-cando la seguente formula:H = 8000 * ( log e ( P0 / Pq ))

Per comodità abbiamo allestitoun semplice foglio Excel per il cal-colo immediato di tutti i parame-tri, con step di 25 metri, da scari-care dal nosto sito Web:www.farelettronica.comLa tabella può essere stampata eusata “sul campo” per ottenereil valore effettivo della quotaraggiunta.

SISTEMI DI ESPULSIONEEsistono diversi metodi per espel-lere il paracadute dal razzo, il piùsemplice, usato soprattutto suimodelli di piccole dimensioni,consiste nel far esplodere unamicro carica di polvere nera cheserve a pressurizzare il vano con-

tenente il paracadute ed eiettarloall’esterno previa separazione del-l’ogiva. La quantità di polverenera generalmente usata è di ungrammo o anche meno, aseconda del volume interno dapressurizzare.La reperibilità della polvere (usataper le armi ad avancarica da col-lezione, che negli USA chiamanoFFFF o 4F) è piuttosto difficoltosain quanto per acquistarla pressole armerie è necessario essere inpossesso del porto d’armi.Questa polvere sviluppa unaenorme quantità di gas, ed èabbastanza “lenta”; per questimotivi viene usata per la pressu-rizzazione dei volumi.L’altra soluzione sarebbe quelladi prepararsela da soli ma perovvi motivi non è possibile indi-care in questa sede le modalitàdi confezionamento ed in ogni

TECNOLOGIE SPERIMENTALI

TECNOLOGIE SPERIMENTALI68

Figura 2: Schema elettrico

COSOLO-impaginato 1-10-2004 17:46 Pagina 68

Page 68: Fare Elettronica - FE 233.pdf

diversi, come ad esempio l’aper-tura di portelli e l’espulsione mec-canica per mezzo di molle.In questo caso l’impulso dicomando servirà ad attivare deiservomotori o dei meccanismielettromagnetici.In qualsiasi caso, la sorgente di

energia per l’accensione o attiva-zione dovrà essere fornita ester-namente al circuito dell’altimetro,in quanto i mosfet agiscono dasemplici interruttori e la micro-batteria di alimentazione non è ingrado di erogare forti correnti. Èperciò necessario prelevare l’ali-

caso la procedura richiederebbedei requisiti di sicurezza non inpossesso dello sperimentatoreamatoriale.Possiamo invece accennare alfunzionamento degli accenditorielettrici (e-match) che vengonousati per attivare la carica. Si trat-ta di dispositivi composti da unsottile filamento di nikelcromoche sottoposto ad una correnteelettrica diventa incandescente. Ilcalore prodotto è sufficiente adinnescare la combustione dellapolvere nera o dell’appositomateriale pirogeno che circondail filamento.Un metodo molto semplice èquello di fissare sui terminali diuna coppia di fili isolati in plastica(va benissimo il filo citofonico)uno spezzone lungo qualche mil-limetro di capillare in nikelcromo,recuperato ad esempio da unaresistenza elettrica di bassapotenza.Una soluzione alternativa è quelladi rompere la punta di una lam-padina per alberi di natale funzio-nante a bassa tensione (3 volt) edintrodurla nella polvere nera, rac-colta in un sacchetto di carta.Per i razzi di maggiori dimensionivengono usati dei dispositivi diespulsione basati su principi

TECNOLOGIE SPERIMENTALI

TECNOLOGIE SPERIMENTALI 69

Figura 3: Circuito stampato scala 1:1 (lato rame) Figura 4: Piano di montaggio dei componenti

Elenco componenti

Sigla Valore Sigla Valore

R1, R4, R6 10 KΩ 1/4 W T3 BC337

R2, R8 270 Ω 1/4 W Bz1 Buzzer piezoelettrico 5 V

R3 1 KΩ trimmer multigiri LD1 LED verde 3 mm

R5, R7, R9 470 Ω LD2 LED rosso 3 mm

C1, C2, C5, C6 100 nF poliestere LD3 LED giallo 3 mm

C3 10 µF elettrolitico U1 PIC12F675

C4 1000 pF ceramico U2 Sensore barometrico Fujikura XFPM-115kpa

T1, T2 Mosfet BUK8524-55 Reg1 LM317L

COSOLO-impaginato 1-10-2004 17:46 Pagina 69

Page 69: Fare Elettronica - FE 233.pdf

mentazione da una batteria da 9volt, alcalina.

PRINCIPIO DIFUNZIONAMENTOIl cuore del sistema è un micro-controller PIC12F675. Pur nelledimensioni ridotte (ha solo 8 pie-dini) questo chip dispone di 6 pinprogrammabili I/O (entrata / usci-ta), un convertitore analogico a 10bit, un oscillatore interno, timerprogrammabili, 1K words dimemoria a tecnologia Flash (ripro-grammabile), 64 Bytes di memo-ria RAM, 128 Bytes EEPROM ealtre periferiche minori.La pressione atmosferica vienemisurata da un sensore di pressio-ne XFPM-115KPA Fujikura cheeroga in uscita una tensione pro-porzionale alla pressione ambien-tale, l’unico componente esternonecessario a questo trasduttore èun condensatore.L’uscita analogica di questo sen-sore è collegata al pin 7 (GP0,programmato come entrata ana-logica) del PIC attraverso un filtrocomposto da R1 e C1.I pin 2, 3, 4, 5, 6 (GP5, GP4, GP3,GP2 e GP1) sono invece pro-grammati come uscite.Il programma effettua una letturainiziale dopo 5 secondi dall’ac-censione per determinare laquota zero, considerata comequota di riferimento.Raggiunta la quota minima pre-stabilita di 100 metri, il sistemasi “arma” e si accende il LEDverde (armed), questo serve alsistema per sapere che il razzo èdecollato.Poi il microcontroller determinase il razzo ha raggiunto l’apogeo(la quota massima dell’inviluppodi volo) e per far questo il PIC

continua a calcolare la quotaattuale e la compara con la lettu-ra precedentemente memorizza-ta, in modo da capire se il razzo èancora in fase di salita.Se per un certo numero di volte lalettura è inferiore all’ultimo valorememorizzato significa che il razzoha raggiunto l’apogeo e perciò èiniziata la discesa.A questo punto viene attivato perun secondo il pin 3, sul quale ècollegato ad un mosfet di poten-za che ha lo scopo di attivare lacarica di espulsione per aprire ilparacadute secondario (Drogue).Poi il programma continua a leg-gere la quota e quando viene rag-giunta un’altra quota predetermi-nata, minore a quella di apogeo,viene attivato il pin 5 per unsecondo, anche questo collegatoun mosfet di potenza che fungeda interruttore per attivare l’e-spulsione del paracadute princi-pale (Main).Infine il programma comincia ariferire il valore della quota massi-

ma per mezzo di una serie dibeep audio emessi dal buzzer.La codifica usata è la seguente: 1beep per la cifra uno, 2 beep peril due, ecc. 10 per lo Zero.Dopo ogni cifra è inserita unapausa, mentre una pausa piùlunga indica l’inizio dellasequenza.Il gruppo di quattro cifre (il valo-re massimo della lettura è 1023)rappresenta il valore memorizza-to nel microprocessore, ma deveessere convertito in metri diquota utilizzando la tabella 2.La lettura viene ottenuta sottraen-do dalla quota rilevata la quotazero, pertanto la lettura è relativaalla quota di lancio.L’alimentazione viene fornita dauna minibatteria a 12 V oppureda una pila rettangolare da 9 V,regolata a 5 V dallo stabilizzatoreLM317L. Il trimmer multigiri R3da 1K serve a regolare questovalore con precisione.Il motivo per cui è stato usato unLM317 al posto del classico

TECNOLOGIE SPERIMENTALI

TECNOLOGIE SPERIMENTALI70

Numero beep Cifra equivalente

10 0

1 1

2 2

3 3

4 4

5 5

6 6

7 7

8 8

9 9

Ad esempio, la sequenza acustica: beep-beep-beep-beep-beep-beep-beep-beep-beep-beep-PAUSA-beep-PAUSA-beep-beep-beep-beep-PAUSA-beep-beep, fornisce il codice 0142, che in base alla tabella di conversione corri-sponde alla quota di 1325 metri.

Tabella 1: Codice sonoro

COSOLO-impaginato 1-10-2004 17:46 Pagina 70

Page 70: Fare Elettronica - FE 233.pdf

potrebbe essere quella prossimaall’ogiva.La cosa migliore sono tre fori da 4o 5 mm di diametro angolati di120 gradi, ad almeno 100 mmdall’inizio della sezione cilindricadel razzo.

CONCLUSIONIIl codice per programmare ilmicroprocessore, come il foglio dicalcolo per la conversione sono-ro/metri, possono essere libera-mente scaricati dal sito di FareElettronica.In caso di difficoltà, è anche pos-sibile richiedere il microprocesso-re già programmato direttamen-te all’autore.

78L05 è la maggiore deriva ter-mica di quest’ultimo e poichè latensione di 5 V serve anche comeriferimento per il convertitoreanalogico interno al PIC. Se que-sto non è preciso anche la con-versione perderà in precisione.

LA REALIZZAZIONE PRATICAL’assemblaggio del circuito è faci-litato dal circuito stampato illu-strato in figura 3 e 4, da realizza-re con le solite tecniche.Le dimensioni sono davveroridotte in modo da poter installa-re l’altimetro anche su modelli dipiccole dimensioni.Le saldature dovranno esseremolto accurate poichè il circuito

sarà sottoposto a violente accele-razioni in fase di decollo e atter-raggio e questo potrebbe causaredei guasti nel caso queste fosseroprecarie.Il sensore barometrico non è pro-prio di facile reperibilità ma unaricerca su internet vi permetteràdi rintracciare diversi distributoridella Fujikura.È importante che l’interno delvano nel quale viene installatol’altimetro non sia ermetico, inquanto la pressione interna deveequivalere a quella esterna.Per ottenere questo è necessariopraticare dei fori sul perimetro delvano payload, in una zona nondisturbata da turbolenze, come

TECNOLOGIE SPERIMENTALI

TECNOLOGIE SPERIMENTALI 71

Codice Metri Codice Metri

3 25 59 525

6 50 62 550

8 75 65 575

11 100 67 600

14 125 70 625

17 150 73 650

20 175 75 675

23 200 78 700

26 225 81 725

28 250 83 750

31 275 86 775

34 300 89 800

37 325 91 825

40 350 94 850

43 375 97 875

45 400 99 900

48 425 102 925

51 450 104 950

54 475 107 975

56 500 109 1000

Tabella 2: Tabella semplificata di conversione codice sonoro/metri di quota (la tabella completa, in formato Excel, è possibile scaricarla dal sito Web di Fare elettronica)

COSOLO-impaginato 1-10-2004 17:46 Pagina 71

Page 71: Fare Elettronica - FE 233.pdf

ALCUNE DELLE DATE INDICATE POTREBBERO SUBIRE VARIAZIONI

Le fiere e mostre mercatodi NovembreLe fiere e mostre mercatodi Novembre

2004La Fiera A.B.C. dell'Elettronica si svolge due volte all'anno, in primavera ed in autun-no. Oltre alle merceologie "tradizionali" proposte da questo tipo di manifestazioni,quali computer, elettronica in genere, radiantismo, telefonia, surplus... nonché radiod'epoca, dischi e CD da collezione.Inoltre l'A.B.C. dell'Elettronica propone, in primavera, il Salone dell'Astronomia ePhoto Cine video, con macchine ed attrezzature per la fotografia , mentre in autun-no i protagonisti sono i radioamatori grazie al CB Day, a loro dedicato.

Certamente non mancano i buoni motivi per andare a dare un'occhiata; ci saranno buoni affari sia per gli esperti siaper i neofiti! La Fiera A.B.C. dell'Elettronica appartiene al circuito Expo Elettronica.

LUOGO: Lario Fiere – Viale Resegone – Erba (CO)

ORARI: 9.00/18.00

ORGANIZZATORE: Blu Nautilus

(www.blunautilus.it Tel. 0541-53294)

INGRESSO: Intero € 7,00 - ridotto € 6,00

06-07 Novembre 2004FIERA ABC DELL’ELETTRONICA

Il ROMA HI-END 2004 è una manifestazione dedicata agli appassionati del "solo audio Hi-Fi" (non home-theatre), aiprofessionisti del settore, ai venditori, ed è promossa dalle case produttrici di alta fedeltà e dalle riviste del settore.L'obbiettivo è quello di offrire ai visitatori la possibilità di venire in contatto e di confrontarsi in diretta con gli opera-tori del settore, ascoltare le apparecchiature hi-end, fare esperienza delle tecnologie dell'audio di alta qualità, cono-scere e ascoltare la musica "alla sorgente".

LUOGO: Centro Congressi Midas Jolly Hotel

Via Aurelia, 800 - ROMA

ORARI: 9.00/18.00

ORGANIZZATORE: The Sound Of The Valve

(www.thesoundofthevalve.it)

INGRESSO: Gratuito

06-07 Novembre 2004ROMA HI-END 2004

FIERE-impaginato 1-10-2004 17:57 Pagina 72

Page 72: Fare Elettronica - FE 233.pdf

LUOGO: Fiera Adriatica – Silvi Marina (TE)

ORARI: 9.00/19.00

ORGANIZZATORE: A.R.I. Pescara

(www.aripescara.it Tel. 085-4714835)

INGRESSO: n.p.

27-28 Novembre 2004XXXIX MOSTRA MERCATO NAZIONALE DEL RADIOAMATORE

La Grande Fiera dell'Elettronica di Forlì, con due edizioni annuali, è fra le manifesta-zioni più famose e frequentate a livello nazionale. L'edizione di primavera propone,oltre all'elettronica, il Flight simulator show: gare e dimostrazioni di volo simulato perprovare l'ebbrezza di essere alla guida di un veivolo... con i piedi ben a terra! Per gli

appassionati di collezionismo radio d'epoca, dischi e CD da collezione. L'appuntamento di dicembre invece è una verae propria kermesse con oltre 350 aziende partecipanti: elettronica, fotografia tradizionale e digitale, radio d'epoca,dischi e cd da collezione, il concorso nazionale dell'inventore elettrico ed elettronico e il Salone dell'Astronomia chein pochi anni ha conquistato il consenso di espositori e pubblico.

LUOGO: Fiera di Forlì – Via Punta di Ferro – Forlì (FC)

ORARI: 9.00/18.00

ORGANIZZATORE: Blu Nautilus

(www.blunautilus.it Tel. 0541-53294)

INGRESSO: Intero € 7,00 - ridotto € 6,00

4-5 Dicembre 2004GRANDE FIERA DELL'ELETTRONICA

Mostra mercato di radiantistica, elettronica, componentistica, impianti radio e di teletrasmissione. Spazio all'home computer e a tutte le applicazioni dell'informatica ad uso personale: hardware, softwa-re, videogiochi, internet. I numeri di Radioamatore 2 dello scorso anno: 9.000 mq coperti di superficieespositiva, 139 espositori diretti ed oltre 16.943 visitatori.

LUOGO: Quartiere Fieristico – Pordenone

ORARI: 9.00/18.00

ORGANIZZATORE: Pordenone Fiere

(www.fierapordenone.it Tel. 0434-232111)

INGRESSO: n.p.

21 Novembre 2004RADIOAMATORE 2

33^ Mostra mercato di elettronica, radiantismo, strumentazione, componenti-stica informatica. Settori merceologici: Materiale radiantistico per CB e radio-matori, apparecchiature per telecomunicazioni, telefonia, antenne e paraboleper radiomatori e tv Sat, radio d'epoca, stampa specializzata.

LUOGO: Quartiere Fieristico - Verona

ORARI: 9.00/18.00

ORGANIZZATORE: Verona Fiere

(www.veronafiere.it Tel. 045-8298111)

INGRESSO: n.p.

13-14 Novembre 2004ELETTROEXPO

FIERE-impaginato 1-10-2004 17:57 Pagina 73

Page 73: Fare Elettronica - FE 233.pdf

ANALISI E SPECIFICHE DELPROBLEMASi vuol realizzare un circuito ingrado di scandire i secondi e for-nire il conteggio in forma binariasu 4 bit. I secondi dovranno esse-re scanditi con una precisionepiuttosto elevata. Il dispositivodovrà consentire la modularitàovvero la possibilità di espandereil conteggio oltre i 10 secondi.

LA SOLUZIONE PROPOSTALa soluzione proposta è ripor-tata in figura1 e si basa sull’uti-lizzo di un quarzo per garantireuna grande precisione nel con-teggio dei secondi. Il circuitointegrato IC1 è un divisore difrequenza a 14 bit, ciò significache la frequenza del segnale diingresso può essere divisa per

un fattore massimo di214=16384. Inserendo iningresso un segnale a frequen-

za di 32,768KHz si ottiene inuscita un segnale di frequenzapari a 2Hz (dato appunto da

Come può un cristallo di quarzo oscillare aduna determinata frequenza? Quale spiegazionefisica c’è dietro a questo fenomeno? Perché siusano i quarzi per la realizzazione di onde quadre?Queste sono solo alcune delle domande che troveranno risposta nella puntata di questo mese. Cercando di capire come funzionano questi dispositivi, realizzeremo un semplice “contasecondi”.

PRATICAMENTE74

di Maurizio Del Corso [email protected]

PRATICAMENTE

PRATICAMENTE...

OSCILLATORI AL QUARZO:CONTASECONDI

PRATICAMENTE...

OSCILLATORI AL QUARZO:CONTASECONDI

Figura 1: La soluzione proposta

DELCORSO-impaginato 4-10-2004 9:13 Pagina 74

Page 74: Fare Elettronica - FE 233.pdf

ria, 9 se decimale). La modularitàsi ottiene collegando il pin Coutdi IC2 all’ingresso di clock di unsecondo contatore decimale,come mostrato in figura 2. Inquesto modo si può espandere ilconteggio fino al numero di cifrevolute.Se avete seguito la rubrica“Praticamente” fin dalla primapuntata, non avrete difficoltà acollegare, alle uscite dei conta-tori, un driver per display a 7segmenti in modo da visualizza-re le varie cifre del conteggio(vedi “Praticamente” FE 224 -Febbraio 2004).

E IL QUARZO?Eccoci al punto… il quarzo. Ilquarzo è un materiale piezoelet-trico ovvero ha la caratteristicadi generare una piccola tensio-ne se sollecitato meccanica-mente e, viceversa, deformarsise sottoposto ad una tensioneesterna. Fisicamente un quarzoè costituito da una lamina dimateriale piezoelettrico (quar-zo, appunto) ai cui estremi sonostati ricavati due elettrodi inmodo da poter applicare una

32768/16384). Il segnale cosìottenuto viene inviato all’ingres-so di clock di IC2 che è un con-tatore decimale il quale scandisceil conteggio dei secondi. Il pin 16 di IC2 (U/D) determinail verso del conteggio: se collega-to a livello alto il conteggio è inavanti, viceversa il conteggioviene effettuato all’indietro. Il pin

9 (B/D) permette di selezionarela modalità di conteggio: se alivello alto il conteggio è binario(quindi da 0 a 15), mentre se alivello basso è decimale (da 0 a9). Q1÷Q4 sono le uscite, di cuiQ4 è la più significativa. Cout è alivello alto durante il conteggio ecommuta a zero alla fine del con-teggio (15 se la modalità è bina-

PRATICAMENTE

PRATICAMENTE 75

Figura 2: Espansione del numero di cifre

Figura 3: Struttura di un quarzo per applicazioni elettroniche. Figura 4: Circuito equivalente di un quarzo.

DELCORSO-impaginato 4-10-2004 9:13 Pagina 75

Page 75: Fare Elettronica - FE 233.pdf

tensione dall’esterno (figura 3).Elettricamente il quarzo puòessere considerato come un cir-cuito risonante RLC comemostrato in figura 4. Poiché nelcircuito equivalente del quarzovi sono induttanze e condensa-tori, è evidente che la sua impe-denza dipende dalla frequenzadei segnali che lo attraversano.Tracciando un grafico dell’im-pedenza (più correttamentedella reattanza) al variare dellafrequenza si ottiene un anda-mento come quello riportatonella figura 5.Il grafico di figura 5 deve essereinterpretato nel seguentemodo: nell’intervallo di fre-quenze in cui il grafico sta al disopra dell’asse orizzontale(quindi tra F1 ed F2), il circuito difigura 4 ha un comportamentoprevalentemente induttivo (sicomporta come una induttan-za), mentre per gli altri interval-li di frequenza il circuito ha uncomportamento capacitivo (sicomporta come un condensa-tore). È importante notare che

l’intervallo di frequenze in cui ilcomportamento è di tipo indut-tivo, è molto ristretto.

OSCILLATORE DI PIERCEUn circuito in grado di genera-re un’onda quadra impiegandoun quarzo, è detto oscillatore diPierce ed ha la struttura riporta-ta in figura 6. Tralasciando lateoria che sta dietro ai circuitioscillanti (elaborata da un certosignor Barkhausen), il circuitodi figura 6 può oscillare solo setra i due condensatori si trovaun’induttanza. Poiché il quarzosi comporta come induttanzasolo in un range di frequenzamolto stretto, la frequenza del-l’onda quadra di uscita saràsenz’altro compresa tra i valoriF1 ed F2.La precisione di un oscillatoredi questo tipo è dell’ordine diuna parte su un milione (il chesignifica commettere un erroredi 1Hz su una frequenza di1MHz). La porta NOT unita allaresistenza Rf, forma un amplifi-catore ad alto guadagno, men-

tre la resistenza R limita la cor-rente di uscita della porta.Sostituendo uno dei due con-densatori con un condensatorevariabile, è possibile agire,anche se in minima parte, sulvalore della frequenza di uscita.Esaminando attentamente ilcircuito di figura 1 è possibilericonoscere quello di figura 6:la porta NOT è infatti internaad IC1, R2 svolge la funzione diRf, R1 limita la corrente di usci-ta della porta (funzione svoltada R in figura 6) e C1, C2 eXTAL sono i due condensatori(di cui uno variabile) ed il quar-zo che costituiscono il cuoredell’oscillatore. Normalmenteper C1 e C2 si scelgono valoridi qualche decina di picoFarad.Se avete avuto a che fare con imicrocontrollori PIC, avretesenz’altro riconosciuto il circui-to formato dai due condensato-ri ed il quarzo usati per il clockdel micro. Un generatore di clock realizza-to con un quarzo ha alcuni van-taggi rispetto ad uno realizzatocon un multivibratore astabilead operazionale o con timer

PRATICAMENTE

PRATICAMENTE76

Figura 5: Impedenza di quarzo da 32,768 KHz in funzione della frequenza.

Figura 6: Oscillatore di Pierce

DELCORSO-impaginato 4-10-2004 9:13 Pagina 76

Page 76: Fare Elettronica - FE 233.pdf

uscente dal condensatore (scorreverso l’alto) quindi D1 è in con-duzione e D2 interdetto. In que-sto caso le resistenze coinvoltesono ancora Ra ed Rb, ma questavolta sono quelle in serie a D1.Questa modifica permette quindidi ottenere un’onda quadra conduty cycle del 50%.Come quesito del mese propon-go di modificare il circuito difigura 1 in modo da accendereper un istante un LED ogni 10secondi.

555. Il primo è la precisione e lastabilità della frequenza delsegnale ottenuto che, come giàdetto, è dell’ordine di una partesu un milione. Altro vantaggioè la possibilità di cambiare lafrequenza di oscillazione sem-plicemente sostituendo il quar-zo con uno di diversa frequen-za caratteristica oltre al fattoche con un oscillatore quarzatosi possono ottenere frequenzemolto più elevate rispetto aquelle ottenute con un astabile.

IL QUESITO DEL MESERisolviamo prima il quesito delnumero 231. La presenza dei duediodi D1 e D2 fa sì che nel pro-cesso di carica e scarica del con-densatore C siano coinvolti diver-se resistenze. Durante la fase dicarica la corrente fluisce da Vccverso il condensatore per cui D2sarà in conduzione e D1 interdet-to quindi saranno coinvolte laresistenza Ra (connessa a +Vcc) ela resistenza Rb (in serie a D2).Nella fase di scarica la corrente è

PRATICAMENTE

PRATICAMENTE 77

CD4029BC – PRESETTABLE BINARY/DECADE UP/DOWN COUNTER

DELCORSO-impaginato 4-10-2004 9:13 Pagina 77

Page 77: Fare Elettronica - FE 233.pdf

PRATICAMENTE

PRATICAMENTE78

CD4060B – CMOS 14-STAGES RIPPLE CARRY BYNARYCOUNTER/DIVIDER AND OSCILLATOR

DELCORSO-impaginato 4-10-2004 9:13 Pagina 78

Page 78: Fare Elettronica - FE 233.pdf

DELCORSO-impaginato 4-10-2004 9:13 Pagina 79

Page 79: Fare Elettronica - FE 233.pdf

Il software illustrato in questo arti-colo, consente di programmareun microcontrollore PIC senza lanecessità di conoscere un lin-guaggio di programmazione ocompetenze di base.Prima di procedere alla descrizio-ne del software, sarà utile definireil concetto di Tabella di verità. Datidegli ingressi, e fissate delle usci-te, si definisce Tabella di veritàuna tabella che mette in relazionead ogni combinazione degliingressi un determinato valoredelle uscite. Pertanto, il numerodi righe che costituiranno latabella, sarà rappresentato da 2nmintermini della funzione (righedella tabella), dove n è il numerodegli ingressi.A titolo di esempio, si immaginidi voler realizzare una rete logica

come quella illustrata di seguito.

Come si può notare, il circuitologico è caratterizzato dagliingressi A÷E e dall’uscita OUT. Perrisolvere tale rete, occorrerannodue circuiti integrati AND e ORconnessi opportunamente.Com’è noto, ogni rete logicadeve essere resa in forma minimamediante opportuni metodi diminimizzazione. Per ridurre tali

inconvenienti, è possibile utilizza-re il software Ge.Co.As. e realizza-re in pochi minuti un integratoche realizzi tale funzione.Nella figura 1, l’uscita (OUT) dellafunzione assume valore logicoalto quando gli ingressi ABCD oABCE sono affermati e valore logi-co basso in tutti gli altri casi.

ESEMPIO DI RETE LOGICAPrima dell’avvio del software, sarànecessario associare gli ingressi ele uscite della rete in esame, agliingressi e le uscite fisiche delmicrocontrollore. In questo con-testo, verrà scelto RA0, RA1, RA2,RA3, RA4, per gli ingressi A, B, C,D, E e RB0 per l’uscita OUT.Avviando il software, basterà sele-zionare gli ingressi e le uscite peri mintermini ABCD e ABCE, come

GE.CO.AS.GENERATORE DI CODICEASSEMBLER PERMICROCONTROLLORI PIC

GE.CO.AS.GENERATORE DI CODICEASSEMBLER PERMICROCONTROLLORI PICdi Dario [email protected]

Ge.Co.As. è un software pensato per soddisfare le esigenze degli hobbysti nellaprogrammazione dei microcontrollori. Grazie alla sua interfaccia semplice dausare, chiunque potrà programmare un microcontrollore in poco tempo esenza alcuna spesa.

HARDWARE80

HARDWARE

MAZZEO-impaginato 4-10-2004 9:20 Pagina 80

Page 80: Fare Elettronica - FE 233.pdf

Bisogna specificare che i livelli ditensione per gli ingressi RA0:RA4,dovranno essere posti ad un valo-re logico alto tramite una rete dipull-up. In questo caso, ad unvalore logico affermato, rappre-sentato sull’interfaccia del softwa-re, corrisponderà un livello di ten-sione basso. Viceversa, in caso direte di pull-down, sarà sufficiente

mostrato in figura 2, e premere ilpulsante “Aggiungi”.

Sulla parte destra dell’interfacciaè possibile notare la Tabella diverità con le 32 righe (25 dei rela-tivi 5 ingressi) e nella parte infe-riore il codice generato che realiz-za la funzione sopra descritta.A questo punto sarà sufficientepremere il bottone “Genera codi-ce assembler” e “Compila codiceassembler”, per generare il firm-ware e compilarlo in formato HEXper la programmazione.

ESEMPIO DI DECODERIn questo esempio ci prefiggiamodi personalizzare le funzionalità didecodifica offerte dall’integrato4511, mediante l’uso del micro-controllore.Volendo realizzare un decoderche fornisca una rappresentazio-ne decimale mediante un ingres-so binario a 5 bit, sarà possibiledefinire la tabella di verità di tuttii mintermini e delle relative usci-te, tenendo presente i segmentidel display da illuminare e il valo-re decimale corrispondente agliingressi binari.Prima di procedere con l’inseri-mento dei valori, sarà necessarioche le uscite del microcontrolloresiano collegate ai relativi segmen-ti del display LCD (a catodocomune) e che gli ingressiRA0÷RA4 siano predisposti inmodo tale che RA0 abbia un pesopari a 20, RA1 a 21, RA2 a 22 e cosìvia.L’interfaccia presenta dei toolsper agevolare tali operazioni diprogettazione e definizione dellatabella di verità, come mostratoin figura 4. È possibile definire ilvalore decimale assunto dagli

ingressi, mediante la formula:

N = RA0 x 20 + RA1 x 21 + RA2 x22 + RA3 x 23 + RA4 x 24

dove gli ingressi RA0÷RA4potranno assumere valore 1 o 0se presenteranno all’ingressorispettivamente un valore logicoaffermato o negato.

HARDWARE

HARDWARE 81

Figura 2: Selezione degli ingressi e delle uscite

Figura 3: GE.CO.AS. Schermata principale

MAZZEO-impaginato 4-10-2004 9:20 Pagina 81

Page 81: Fare Elettronica - FE 233.pdf

disabilitare l’opzione“Complementa ingressi” in“Compilazione”.

Collegando le uscite RB0÷RB7 airispettivi segmenti A÷H del dis-play LCD, sarà possibile visualiz-zare sull’interfaccia del softwareun’anteprima di come questi siillumineranno.

Si selezionerà quindi: RA0, RB1 eRB2 per abilitare i segmenti relati-vi al valore decimale 1; RA1, RB0,RB1, RB3, RB4, RB6 per abilitare isegmenti relativi al valore deci-male 2, e così via, fino al comple-tamento della Tabella di verità.

AGGIUNTA DI RIGHEPer aggiungere una o più righenella Tabella di verità, sarà neces-sario specificare il valore delleuscite in corrispondenza dei valo-ri degli ingressi e premere sultasto “Aggiungi”.Abilitando l'opzione “Azzeracampi dopo inserimento”, sottola voce di menù “Modifica”, èpossibile azzerare tutti i valori ad

ogni inserimento.Esempio, per abilitare le usciteRB0, RB1 e RB2 in corrispondenzadel valore logico affermato RA0,bisognerà:

• Abilitare l'ingresso RA0.• Abilitare gli ingressi RB0, RB1

e RB2.• Premere il tasto “Aggiungi”.

Successivamente la riga verràinserita opportunamente nellaTabella di verità.

MODIFICA DI RIGHEPer modificare una riga presen-te nella Tabella di verità, ènecessario:

• Cliccare due volte su di essa.• Applicare le modifiche volute.• Cliccare sul tasto “Aggiungi”.

CANCELLAZIONE DI RIGHEPer cancellare la Tabella di veritàcliccare sulla voce di menù:“Modifica” e “Cancella Tabella”,oppure sulla relativa icona comemostrato in figura 5.

SALVATAGGIO DELLATABELLA DI VERITÀÈ possibile salvare la Tabella diverità cliccando sulla voce dimenù “File” e “Salva tabella...”,oppure sulla relativa icona(figura 5).In tutti e due i casi sarà necessariospecificare il percorso e il nomedel file, seguito dall'estensione“.gca” su cui salvare il risultato.

SALVATAGGIO DEL CODICEASSEMBLERÈ possibile salvare il risultato dellagenerazione del codice Assembler,cliccando sulla voce di menù“File” e “Salva codice...”, oppuresulla relativa icona (figura 5).In tutti e due i casi sarà necessariospecificare il percorso e il nomedel file seguito dall'estensione“.asm” su cui salvare il risultato.

RIPRISTINO DEL LAVOROSALVATOÈ possibile recuperare il lavoro sal-vato cliccando sulla voce di menù“File” e “Apri”, oppure cliccandosulla relativa icona (figura 5).In tutti e due i casi sarà necessariospecificare il percorso e il nome delfile (.gca) precedentemente salva-to. L’utente non verrà avvisatodella perdita del lavoro corrente.

GENERAZIONE CODICEASSEMBLERDalla Tabella di verità è possibile

HARDWARE

HARDWARE82

Figura 4: Configurazione degli ingressi e delle uscite

MAZZEO-impaginato 4-10-2004 9:20 Pagina 82

Page 82: Fare Elettronica - FE 233.pdf

del file. Ovvero, per la directorypredefinita il testo da inserire è:“C:\Programmi\GeCoAs\”.

• Nella directory predefinita diGe.Co.As., aprire il file“path.txt” e controllare che ilpercorso del software MPLAB,contenuto nel file, coincidacon quello presente sul com-puter.

CONCLUSIONIIl software mostrato in questoarticolo è in grado di generare ilcodice assembler per i microcon-trollori PIC della serie 16x84 edestendersi a qualsiasi serie modifi-cando opportunamente il firm-ware.È adatto alla risoluzione di reticombinatorie e rappresenta unottimo supporto per il circuitoTinyPLC, presentato nei numeriprecedenti di Fare Elettronica.

Il software è Freeware ed è distri-buibile su qualsiasi supporto ocomputer.Può essere scaricato liberamentedal sito di Fare Elettronica.

generare il codice Assembler peril microcontrollore, cliccandosulla voce di menù“Compilazione” e “Genera codi-ce Assembler”, oppure sulla rela-tiva icona (figura 5).Il risultato della compilazioneverrà visualizzato nel campo ditesto in fondo alla finestra.

COMPILAZIONE CODICEASSEMBLERLa compilazione del codiceAssembler avverrà mediante ilcompilatore “MPASM.exe”presente nella directory“C:\Programmi\MPLAB\” escaricabile gratuitamente dalsito internet www.micro-chip.com.Per avviare la compilazione, saràsufficiente cliccare su “Compilacodice Assembler” nella voce dimenù “Compilazione”, oppuresulla relativa icona (figura 5).In tutti e due i casi bisogneràspecificare il percorso e il nomedel file Assembler (.asm) su cuisalvare il risultato della compi-lazione.

OPZIONI DI COMPILAZIONEL'opzione “ComplementaIngressi” nella voce di menù“Compilazione” deve essere abili-tata qualora il microcontrollorelavorasse in logica negata, ovve-ro, se i terminali di ingresso sonoposti al valore logico affermato(+5V) tramite una rete di pull-up.Per default l'opzione“Complementa ingressi” è abili-tata.

INSTALLAZIONEInstallare il software Ge.Co.As. e ilsoftware della MicroChip MPLABnelle directory predefinite.Ad installazione ultimata control-lare che la guida in linea e la com-pilazione del software Ge.Co.As.funzionino correttamente. In casocontrario procedere in questomodo:

• Con il tasto destro del mousesull’icona di Ge.Co.As., cliccaresu Proprietà ed inserire nelcampo “Da:” lo stesso percor-so contenuto nel campo“Destinazione:” senza il nome

HARDWARE

HARDWARE 83

MAZZEO-impaginato 4-10-2004 9:21 Pagina 83

Page 83: Fare Elettronica - FE 233.pdf

GLI STABILIZZATORI DI TENSIONE

Fino ad ora sono stati presi inconsiderazione gli stadi stabiliz-zatori di tipo lineare nei quali ilcomponente regolatore in serieal carico, un BJT per esempio,lavora costantemente in zonaattiva. Ciò comporta, come si èvisto, una dissipazione dipotenza non certo trascurabileper il BJT che, nella quasi totali-tà dei casi, dev’essere dotato diun robusto radiatore atto a dis-sipare all’esterno i relativi incre-menti termici. Questo è essen-zialmente il motivo per cui glistadi stabilizzatori lineari nontrovano applicazione perpotenze maggiori di una cin-quantina di watt presentandocomunque, anche a potenze diqualche decina di watt, un ren-dimento mediamente nonsuperiore al 40 o 50 %.

Per poter dissipare potenze piùelevate è necessario ricorrere airegolatori definiti di tipo swit-ching nei quali il componenteattivo, un BJT per esempio, nonlavora più nella zona linearedella sua caratteristica, ma incommutazione, passando quin-di alternativamente dalla zonadi interdizione (stato OFF) allazona di saturazione (stato ON),e viceversa, con una frequenzain genere compresa fra qualchedecina e alcune centinaia di kHz.Ciò comporta un elevato rendi-mento del circuito (anche supe-riore al 90 %) dal momento che,come è noto, un BJT negli statiON e OFF presenta una dissipa-zione minima. Nello stato disaturazione infatti, la corrente,comunque funzione del carico,è elevata ma è minima la caduta

di tensione collettore-emettitoreVCE (dell’ordine di qualche deci-mo di volt). Nello stato di inter-dizione la VCE approssima il valo-re della tensione di alimentazio-ne ma la corrente Ic di collettoreè prossima a zero. Pertanto, poi-ché è comunque valida la giànota espressione:

PQ = (Vi – Vo) Ic = VCE Ic

la potenza PQ dissipata dal BJTsarà sempre modesta: nellostato ON di saturazione, infatti,è minima la VCE, mentre nellostato di interdizione è minima(prossima a zero) la Ic di collet-tore. Il prodotto (VCE x Ic) daràquindi sempre un risultato note-volmente modesto. Per effettodel basso valore dalla potenzadissipata dal BJT si può ritenere

GLI STABILIZZATORI DI TENSIONE

I REGOLATORI DI TIPOSWITCHING.I DC–DC CONVERTER

I REGOLATORI DI TIPOSWITCHING.I DC–DC CONVERTERdi Nico [email protected]

Sono sempre più utilizzati prevalentemente per l’alto rendimento, notevolmentepiù elevato dei regolatori lineari fin qui analizzati e perché, se ben dimensionati,presentano un’eccezionale affidabilità.

sesta parte

HARDWARE84

HARDWARE

GRILLONI-impaginato 4-10-2004 9:22 Pagina 84

Page 84: Fare Elettronica - FE 233.pdf

ampiezza (ampiezza qui intesacome durata dell’impulso) o infrequenzaRicordando che il duty cycle diun’onda quadra è dato dalrapporto:

δ = tON / T

ossia dal rapporto fra l’intervallodi tempo in cui il segnale è alivello alto (tON) e il periodo T, sicomprende come l’opportunosegnale di pilotaggio dovràessere a duty cycle variabile.Dalla precedente espressione sivede che per ottenere la variabi-lità di δ, si può o mantenerecostante l’intervallo tON variandola durata del periodo T o mante-nere costante il periodo Tvariando la durata del tON.

IL CONVERTITORE DC-DCLa figura 2 riporta quindi il prin-cipio di funzionamento di unostadio switching di tipo step-down. Qui la funzione di BJT èsimulata dal deviatore S. Allachiusura di questo la corrente,data la disposizione del diodo D,passa attraverso l’induttanza L eil carico RC. L’induttanza si cari-ca, quindi, tramite la resistenzaRC e la tensione ai suoi estremi èpositiva al punto K e negativaall’estremo opposto (segni + e –disegnati all’esterno del circui-to). Quando S cambia stato pas-

che la potenza di ingressovenga quasi totalmente trasferi-ta in uscita.Un ulteriore pregio della tecnicaswitching risiede nella possibilitàdi realizzare i convertitori DC-DC che altro non sono che sta-bilizzatori in grado di realizzarecircuiti sia di tipo step-down (obuck), ossia stadi in cui la Vo diuscita è inferiore alla Vi di ingres-so, sia stadi stabilizzatori di tipostep-up (o boost), ossia stadi neiquali la Vo di uscita è maggioredella Vi di ingresso, sia stadiinverter (o buck-boost), ossiastadi nei quali la tensione Vo diuscita ha polarità oppostarispetto alla Vi applicata.Unico neo dei regolatori swit-ching risiede nell’elevato resi-duo in alternata che comunquepuò essere utilmente ridottoanche solo ricorrendo a piùopportuni valori di alcuni com-ponenti passivi.

SCHEMA DI PRINCIPIOLo schema di principio del rego-latore switching è riportato nellafigura 1 dove si suppone che ilBJT passi dallo stato ON allostato OFF e viceversa tramite unopportuno segnale Vp di pilotag-gio inviato in base. In pratica ilpilotaggio può eseguirsi tramiteimpulsi di frequenza fissa ricava-ti da un oscillatore o con impul-

si di ampiezza costante e fre-quenza variabile o tramite unmodulatore PWM (Pulse WidthModulator) che determina unopportuno segnale trigger.Il controllo tramite PWM fa sìche nel caso in cui la tensionedi uscita subisce, per esempio,un decremento ci sarà un’e-stensione dell’intervallo tON delsegnale che comanda il pas-saggio in conduzione del com-ponente attivo in serie al caricoin modo che la minore cadutadi tensione VCE esegua la com-pensazione. Mentre, viceversa,nel caso in cui la tensione Vo

subisce un incremento il mede-simo intervallo tON del segnaledi comando si contrarrà inmodo che la conseguentemaggiore caduta di tensioneVCE esegua l’opportuna com-pensazione.Ciò implica che in ogni caso, alfine di mantenere stabile la ten-sione di uscita sia nei confrontidelle sempre possibili fluttua-zioni della tensione Vi di ingres-so che nei confronti delle flut-tuazioni del carico RL, è comun-que necessario inserire un cir-cuito di reazione che, confron-tando la tensione di uscita conuna tensione di riferimento,determini l’opportuno segnaledi pilotaggio della base del BJTin funzione delle variazionidella Vi e del carico RL. La diffe-renza fra i regolatori lineari e iregolatori switching è, a questoproposito, solo dovuta al fattoche nei primi si ha un controllolineare del pilotaggio dell’ele-mento in serie al carico, mentrenei secondi il pilotaggio avvie-ne tramite un oscillatore cheproduce un segnale variabile in

HARDWARE

HARDWARE 85

Figura 1: Nei regolatori switching si ha uncontrollo dalla conduzionedell’elemento attivo (il BJT) in serieal carico tramite impulsi (Vp) generatida un apposito oscillatore

Figura 2: Circuito a componenti passiviche simula un DC/DC converter ditipo step-down

GRILLONI-impaginato 4-10-2004 9:22 Pagina 85

Page 85: Fare Elettronica - FE 233.pdf

sando da chiuso ad aperto lepolarità ai capi di L si invertono(segni – e + disegnati interna-mente all’area del circuito) e lastessa induttanza si comportapertanto come un generatoreche trasferisce l’energia imma-gazzinata al carico. La presenzadel diodo, che adesso è polariz-zato direttamente, consente allacorrente di fluire nel carico.La frequenza f con cui il deviato-re S si apre e si chiude, ovvero,con riferimento alla figura 3, lafrequenza del segnale che pilotail BJT alternativamente in ON ein OFF, è in genere compresa,come si è detto, fra qualchedecina e alcune centinaia di kHz.Si comprenderà come il ripplepresente nella Vo di uscita saràtanto minore quanto più elevatarisulterà la frequenza f.Per il convertitore di tipo step-down per la tensione Vo di usci-ta si ha l’espressione:

Ma poiché tON / T, rapporto fral’intervallo di tempo in cui ilsegnale di pilotaggio è a livelloalto (tON) e il periodo T = tON + tOFF

del medesimo segnale, è rap-presentativo del duty cycle δdello stesso segnale, l’espressio-ne precedente può scriversi:

Vo = Vi x δ

Da questa si vede come la ten-sione di uscita dipenda dal dutycycle del segnale di comando(che è un numero minore di 1).Noto quindi δ si può immediata-mente ricavare di quanto la ten-sione Vo di uscita è inferiore allatensione Vi di ingresso.La figura 3 riporta il medesimocircuito ma con il deviatore Ssostituito da un BJT comandatoin base dal segnale Vp.

REGOLATORI SWITCHINGINTEGRATIPer realizzare stadi switching siricorre ormai ai circuiti integratiper il cui funzionamento sonosufficienti pochi componentiesterni. La figura 4 espone, peresempio, uno stadio stabilizza-tore di tipo switching step-down realizzato con l’IC LH1605per il cui corretto funzionamen-to sono necessari soltanto unaresistenza, un’induttanza e duecondensatori. L’IC è posto incommercio in involucro TO-3(lo stesso involucro, tanto perintenderci, del ben noto BJT dipotenza 2N3055) nel cui inter-no vi è una sorgente per la ten-sione Vref di riferimento compen-sata termicamente, un amplifi-catore di errore con relativocomparatore, un oscillatore afrequenza programmabile e uncommutatore. Le caratteristichedell’LH1605 sono:

• tensione di ingresso: (10 ÷35) V

• tensione di uscita: (3 ÷ 30) V• corrente di carico: 5 A• corrente di riposo: 20 mA (per

IL = 200 mA)

• dissipazione di potenza: 16 W(per Vo = 10 V e IL = 5 A)

• regolazione di linea: 20 mV• efficienza: 70 %• resistenza termica Rthj-c = 5 °C / W

La figura 5 espone quindi il cir-cuito analogico che semplifica ilfunzionamento dell’IC. Qui sivede un deviatore che, commu-tando alternativamente con fre-quenza f determinata dal con-densatore CT, dallo stato ON allostato OFF e viceversa, connettee sconnette il carico RL alla ten-sione di ingresso Vi. Ciò consen-te di modificare il ciclo di lavorodi un BJT in serie al carico (inter-no all’IC) in funzione della ten-sione presente al pin 3 (figura 4)che è connesso al positivo diuscita tramite la resistenza Rs. Latensione di errore, pari alla diffe-renza fra la tensione presente alpin 3 e la tensione di riferimen-to presente al pin 2 viene com-parata con un segnale a rampaprodotto da un oscillatore inter-no. Il risultato della compara-

HARDWARE

HARDWARE86

Figura 3: Il BJT Q o altro componete attivo (un Mosfet, per esempio) è il componenteattivo che, in serie al carico, lavora incommutazione e che nella praticasostituisce quindi il deviatore S di cuialla figura 2

Figura 4: Stadio regolatore di tensione di tiposwitching realizzato con l’IC LH1605

Figura 5: Circuito a cui è riconducibile ilfunzionamento dell’IC LH1605 dicui alla figura 4

GRILLONI-impaginato 4-10-2004 9:22 Pagina 86

Page 86: Fare Elettronica - FE 233.pdf

mina il passaggio in saturazionedel BJT Q2. Il collettore di que-st’ultimo, e quindi il pin 2, siporta ad un potenziale assaiprossimo al potenziale di massae l’uscita dell’IC si porta in OFF.Indicando con ILmax il valoredella corrente di carico al qualesi vuole l’intervento della prote-zione, si calcolerà il valore daattribuire alla resistenza Rs conl’espressione:

Rs = 0,6 / ILmax

Un ulteriore e recente IC checonsente di realizzare un otti-mo regolatore step-down adaltissimo rendimento èl’LM2678 della National.Questo integrato è in grado difornire una corrente di 5 Amantenendo un’ottima regola-zione sia a fronte di variazionidella Vi che del carico RL. Il com-ponente è particolarmente ver-satile sia perché realizzato pertensioni fisse (3,3 V, 5 V e 12 V)e per tensioni variabili da 1,2 Va 37 V, sia perché utilizza indut-tanze di valore standardizzato equindi di facile reperibilità. Atale proposito vale la penaricordare come la pratica realiz-zazione dell’induttanza sia lanota dolente per lo sperimenta-tore che voglia costruire unbuon alimentatore di tipo swit-ching. La possibilità di utilizzareinduttanze di valore standardnon è quindi di secondariaimportanza.La serie LM2678 è dotata dishutdown termico e di un pinON/OFF che consente la messain standby del regolatore che, inquesta condizione, assorbe unacorrente (corrente di riposo)

zione determina un più omeno breve intervallo di per-manenza del BJT in ON o inOFF. Il BJT pertanto, rimane ininterdizione o in saturazioneper il tempo necessario a com-pensare la variazione della ten-sione Vo di uscita.Per il dimensionamento di unostadio del tipo riportato nellafigura 4 si inizia col determinareil valore da attribuire alla resi-stenza Rs per il quale si ricorreràall’espressione:

Poiché lo stadio di cui alla figura4 è stato dimensionato per Vo =5 V, dall’espressione precedentesi ricava Rs = 2 kΩ.Il valore da attribuire all’indut-tanza L si calcolerà con l’e-spressione:

Poiché lo stadio di cui alla figu-ra 4 è stato dimensionato perVimax = 18 V, Vo = 5 V, ILmin = 1 Ae f = 27 kHz per l’induttanza Lsi ricava:

Resta infine da calcolare il valoreda attribuire al condensatoreposto in uscita in parallelo alcarico. Se si è in possesso di tuttii dati utili si applicherà l’espres-sione:

dove Vr è la massima tensione diripple voluta in uscita e ESR(Effective Series Resistance) è iltermine che indica in sostanzale perdite nel condensatore che,come è noto, si rappresentanocon una resistenza in serie almedesimo. In pratica, per la dif-ficoltà di disporre di tutti i dati,si farà ricorso ad un condensa-tore elettrolitico al tantalio lacui capacità sarà di qualchemigliaio di microfaraday aven-do l’accortezza di disporvi inparallelo un condensatore cera-mico da 0,1 µF al fine di ridurrei transitori nella commutazioniON ÷ OFF e OFF ÷ ON.

CIRCUITO DI PROTEZIONE ALIMITAZIONE DI CORRENTELa figura 6 riporta quindi lasoluzione circuitale per realizza-re un’efficace protezione dalsovraccarico per il convertitoredi cui alla figura 4. Questa solu-zione sfrutta la caratteristicadell’IC LH1605 per la quale siinibisce l’uscita una volta chesia portato a massa il pin 2.Nelle condizioni di normalefunzionamento sono in interdi-zione entrambi i BJT Q1 e Q2. Sesi verifica un incremento di cor-rente oltre il valore prestabilito,la caduta di tensione sulla resi-stenza Rs porta in conduzione ilBJT Q1 che, a sua volta, deter-

HARDWARE

HARDWARE 87

Figura 6: I BJT Q1 e Q2, unitamente alle dueresistenze da 10 k e alla resistenza Rs,realizzano un’efficace protezione per lostadio regolatore di cui alla figura 4

GRILLONI-impaginato 4-10-2004 9:22 Pagina 87

Page 87: Fare Elettronica - FE 233.pdf

non superiore a 50 µA. Il rendi-mento è maggiore del 90 %mentre la frequenza dell’oscilla-tore interno è pari a 260 kHz.

La figura 7 propone la versione atensione Vo fissa e pari a 5 V peruna corrente di carico di 5 A. Sinoti come siano sufficienti solopochi componenti esterni per larealizzazione di un affidabileswitcher.Si noti altresì la presenza delpin ON/OFF, pin 7, che, con-nesso a massa o comunque aun potenziale inferiore a 0,8V, porta il regolatore instandby. La massima tensio-ne da applicare al pin 7 perla condizione ON non deveeccedere i 6 V. Nel caso incui il comando ON/OFF nonsi utilizzi, si lascerà sconnes-so il pin relativo.La capacità complessiva posta iningresso (3 x Ci) è di 45 µF men-tre la capacità complessiva deicondensatori Co posti in uscita èpari a 360 µF. Il ricorso a piùcondensatori in parallelo piutto-sto che ad un singolo condensa-tore di eguale capacità consentedi pervenire ad una minore ESR.La presenza del diodo Schottky,diodo veloce a bassa caduta ditensione anodo-catodo, ènecessaria per fornire una via diestinzione alla corrente che con-tinua a fluire nell’induttanza

quando il regolatore viene postoin OFF (intendendo per statoOFF, in questo caso, la disinser-zione dell’alimentazione Vi).

La figura 8, infine, mostra laconfigurazione a cui fare riferi-mento per ottenere in uscitauna qualsiasi tensione Vo com-presa fra 1,2 V e 37 V. Si puòconstatare come questo regola-tore si differenzi dal precedentea tensione fissa solo per la pre-senza delle due resistenze R1 e R2

il cui valore, unitamente al valo-re della tensione di reazione VFB

(per il quale la Casa impone ilvalore di 1,21 V), determinaappunto la Vo desiderata. Perquest’ultima si ha infatti:

Fissato il valore della resistenzaR1 (la Casa suggerisce R1 = 1 kΩ)si calcolerà il valore della R2 conl’espressione:

CONSIDERAZIONECONCLUSIVASi sono già poste in evidenza ledifferenze più significative fra iregolatori lineari e i regolatori

- 1

switching. In conclusione sivuole soltanto evidenziare comei circuiti integrati atti alla realiz-zazione dei secondi presentioggi sul mercato della compo-nentistica attiva, abbiano note-volmente semplificato i relativicriteri di dimensionamento. LeCase costruttrici, infatti, oltre adaver realizzato IC a configurazio-ne circuitale anche notevolmen-te sofisticata ma di facile applica-zione (si è già fatto notare comesiano sufficienti pochi compo-nenti passivi all’esterno dell’ICper un ottimale funzionamentodel medesimo), sono solite forni-re dati, diagrammi, formule eutili suggerimenti (anche per ilcablaggio) che conducono rapi-damente alla realizzazione di unregolatore switching. Ben diver-so è il discorso nel caso si vogliaeseguire il dimensionamento diquesti circuiti con componentidiscreti ai quali restiamo affezio-nati ma che, nella fattispecie,sono ormai da non tenersi inalcuna considerazione.Si fa infine presente che qui,per ovvi motivi, si è fatto riferi-mento, nel trattare i convertito-ri DC-DC, solo al tipo step-down. Si rimane comunque adisposizione del Lettore perqualunque quesito inerente iregolatori step-up e buck-booste per qualsiasi ulteriore appro-fondimento.

HARDWARE

HARDWARE88

Figura 8: Stadio regolatore switching realizzatocon l’IC LM2678 nella versione pertensioni variabiliFigura 7: Stadio regolatore switching realizzato col versatile IC LM2678 nella versione per tensioni fisse

GRILLONI-impaginato 4-10-2004 9:22 Pagina 88

Page 88: Fare Elettronica - FE 233.pdf

GRILLONI-impaginato 4-10-2004 9:22 Pagina 89

Page 89: Fare Elettronica - FE 233.pdf

CONVERTITORE PERLAMPADE FLUORESCENTI

In più di una situazione puòrisultare utile accendere unalampada al neon da 36 Wdisponendo di una tensionedi soli 12 Volt; si pensi adesempio alle esigenze delcampeggiatore oppure all’al-lestimento di una luce diemergenza per la casa.Malgrado negli ultimi anni, gra-zie alla tecnologia PWM, il ren-dimento degli inverter a 50 Hzsia notevolmente aumentato(anche il 90 % della potenzaassorbita viene reso in uscita),servirsi di simili apparati solo peraccendere una lampada fluore-scente appare superfluo; megliorealizzare un semplice dispositi-vo come quello che passo adescrivere.

LO SCHEMAIl circuito sfrutta la capacità deitubi fluorescenti di accendersiistantaneamente, quando siapplica sui catodi dell’alta ten-sione ad una frequenza più ele-vata dei 50 Hz di rete. Questoprincipio, largamente utilizzatonelle lampade portatili, consen-

220V-50Hz.I tre transistori visibili nelloschema formano quindi unsemplice generatore di altatensione. Il multivibratoreastabile TR1-TR2 fornisceun treno di onde quadrealla frequenza di circa 600

Hz; questo segnale, applicatosulla base del Darlington TR3,può pilotare il primario di T1, un

CONVERTITORE PERLAMPADE FLUORESCENTIdi Marco [email protected]

Pochi componenti di facile reperibilità per costruire un semplice convertitore utilead accendere con 12 Volt i normali tubi fluorescenti da 36 W; ideale per ilcampeggio o in casa come complemento di sistemi anti black-out.

COSTO ZERO90

COSTO ZERO

te l’accensione dei tubi senzafare uso di reattore e starter,indispensabili se li si alimenta a

Figura 1: Schema elettrico del convertitore

LENTO-Convertitore 4-10-2004 9:23 Pagina 90

Page 90: Fare Elettronica - FE 233.pdf

modesta ma non appaiati; èinoltre possibile l’accensione dipiù tubi di potenza minore, col-legandoli tra di loro in serie.Approntato il cavo di alimenta-zione, dotato a monte di fusibi-le da 3A, si può procedere al col-laudo del modulo; in assenza dipunti di taratura, il funziona-mento, accompagnato da unacuto sibilo proveniente dal tra-sformatore, deve essere imme-diato. L’alta tensione presente inuscita, suggerisce di alloggiare iltutto in una plafoniera di mate-riale plastico; ricordo inoltre dinon collegare al convertitoreapparati funzionanti a 220 V,pena la loro distruzione.Attenzione alle tensioni ingioco che possono essere peri-colose, quindi utilizzare uncontenitore plastico e ponetemolta attenzione nel maneg-giare il circuito.

normale trasformatore 9V-2Autilizzato alla rovescia. In virtùdell’elevata frequenza di funzio-namento, la tensione prelevabilesarà dell’ordine degli 800 V avuoto, che scenderanno a circa300 V subito dopo l’innescodella lampada.Il circuito è completato da D1che protegge l’intero moduloda accidentali inversioni di pola-rità, interrompendo il fusibileposto a monte del cordone dialimentazione; l’assorbimentodel circuito è dell’ordine dei 2 Ae può essere variato modifican-do il valore di R5 alla ricerca delmiglior compromesso tra consu-

Elenco componenti

Sigla Valore

R1 470 Ω 1/4 W

R2 1,5 KΩ 1/4 W

R3 1,5 KΩ 1/4 W

R4 470 Ω 1/4 W

R5 100 Ω 1/2 W

C1 100 Kpf 50 V poliestere

C2 100 Kpf 50 V poliestere

C3 100 Kpf 50 V poliestere

C4 2.200 µF 25 V elettrolitico

TR1 BC337

TR2 BC337

TR3 MJ3001 (con dissipatore)

D1 1N4007

F1 Fusibile 3 A

T1 Trasformatore 9 V 2 A

mo, facilità di innesco e lumino-sità della lampada.

COSTRUZIONE ED UTILIZZORealizzato il circuito stampato,il montaggio dei pochi compo-nenti è dei più semplici. Unanota merita il finale TR3 chedeve essere adeguatamenteraffreddato, applicandolo suun dissipatore di generosedimensioni.Riguardo al trasformatore, qual-siasi modello con nucleo lamel-lare o toroidale si presta alloscopo; per alimentare i catodidella lampada conviene servirsidi due fili dalla sezione anche

COSTO ZERO

COSTO ZERO 91

Figura 3: Posizionamento componenti

Figura 2: Circuito stampato scala 1:1 (lato rame)

LENTO-Convertitore 4-10-2004 9:23 Pagina 91

Page 91: Fare Elettronica - FE 233.pdf

CARICABATTERIE NI-CD/MHA 3 PORTATE CON LM 317

L’utilizzo di batterie ricaricabilinegli apparati portatili è oramaidi uso comune. Agli indubbivantaggi di tipo economico, sisommano i benefici ecologici equelli legati alle migliori presta-zioni elettriche ottenibili; se glielementi NI-CD erano in gradoerogare picchi dicorrente impensabi-li per le normali pilezinco-carbone, talicaratteristiche sonou l t e r i o r m e n t emigliorate con latecnologia NI-MH(Metal-Hydride) conla quale, oltre adevitare il fastidiosoeffetto memoriatipico delle NI-CD,si ottengono capa-cità più elevate chepossono raggiunge-re già per il formato“stilo” AA i 2300mA. In ogni caso, per procede-re alla ricarica degli elementiNI-CD e NI-MH, occorre dis-porre di un caricatore a corren-te costante, come quello chepasso a descrivere.

LO SCHEMAImprontato alla massima sem-plicità, il circuito proposto sibasa su un integrato LM317. Ilcomponente, più noto comestabilizzatore di tensione, si tra-sforma in generatore di corren-te costante collegando tra i ter-

minali R (regolazione) ed U(uscita) un resistore di adegua-to valore, consentendoci diprelevare dal terminale R la cor-rente richiesta.La formula per calcolare il valo-re de questa resistenza è la

seguente:

R (in Ω) = 1250 : mA uscita

I valori così ottenuti potrannoessere arrotondati senza pro-blemi al più vicino valore stan-dard; ricordo di non oltrepassa-

re gli 1,5 Ampere,massima correnteerogabile da un LM317 correttamenteraffreddato. Il com-mutatore S2 con-sente la selezione di3 portate di corren-te (terminali C, 1, 2e 3) mentre il cir-cuito è completatodall’indicatore diricarica in corso (DL2); questo LED, ali-mentato dalla diffe-renza di potenzialeintrodotta da D1,D2, e D3, si accen-

derà soltanto ad elementi cor-rettamente collegati.Il trasformatore di alimentazio-ne consigliato (24 V 0,5 A) con-sente di collegare in uscita finoa 10 elementi da porre in serie.

CARICABATTERIE NI-CD/MHA 3 PORTATE CON LM 317di Marco [email protected]

Con un integrato LM317 e pochi altri componenti costruiamo un caricabatteriea corrente costante per elementi nickel-cadmio e nickel-metal hydride.

COSTO ZERO92

COSTO ZERO

LENTO-CARICABATTERIE 4-10-2004 9:24 Pagina 92

Page 92: Fare Elettronica - FE 233.pdf

COSTRUZIONE ED UTILIZZORealizzato il circuito stampatoqui proposto, il montaggio deipochi componenti tutti di facilereperibilità è dei più semplici.Ricordo di raffreddare adeguata-mente l’integrato LM317 che,qualora si colleghino in uscitasoli 2-4 elementi, sarà chiamatoa dissipare, per caduta di tensio-ne, una discreta quantità dicalore.Prima di procedere alla ricaricadi elementi NI-CD è necessarioprovvedere alla loro scaricacompleta per annullare l’effettomemoria che ne ridurrebbenotevolmente l’autonomia; que-sta operazione, che può essere

effettuata tramite una semplicelampadina, non è invece richie-sta per le più recenti NI-MH.Le portate 450 mA (terminali Ce 1) e 260 mA (terminali C e 2)sono utilizzabili per la ricarica in5/8 ore di pile formato AA da2100 mA, mentre la portata 15mA (terminali C e 3) risulta utileper elementi di bassa capacitàche accettano solo la modalitàdi ricarica lenta, come quelliimpiegati nei telefoni cordless.Per un migliore trattamentodelle pile ricordo di azionare ilcommutatore S2 solamente acaricatore spento.

Buona ricarica!

COSTO ZERO

COSTO ZERO 93

Figura 2: Circuito stampato scala 1:1 (lato rame) Figura 3: Piano di montaggio

Figura 1: Schema elettrico del caricabatterie

Elenco componenti

Sigla Valore

R1 2,7 KΩ 1/2 W

R2 82 Ω 1/2 W

R3 4,7 Ω 2 W

R4 2,7 Ω 5 W (a filo)

R5 47 Ω 1/4 W

C11000 µF 50 Velettrolitico

C2 100 Kpf 50 V poliestere

IC1 LM317T

D1 1N4007

D2 1N4007

D3 1N4007

DL1 LED 3 mm

DL2 LED 3 mm

S1 Interruttore

S2Commutatore 1via 3posizioni

T1 Trasformatore 24 V 0,5 A

P1 Ponte 4 Ampere

F1 Fusibile 300 mA

LENTO-CARICABATTERIE 4-10-2004 9:24 Pagina 93

Page 93: Fare Elettronica - FE 233.pdf

FEBOTFEBOT

IL FIRMWARE DELLASCHEDA MADREIL FIRMWARE DELLASCHEDA MADREdi Maurizio Del Corso ([email protected])

e Tiziano Galizia ([email protected])

UN FIRMWARE IN CONTINUAEVOLUZIONECome in tutti i dispositivi elettro-nici intelligenti, il firmware è unacomponente in continua evolu-zione ed anche per la schedamadre del FEbot non ci sonoeccezioni. Benché il firmware checi accingiamo a descrivere siatestato e funzionante, solo utiliz-zando la scheda madre con altreschede nelle diverse configura-zioni potranno emergere even-tuali miglioramenti e revisioni,che vi invitiamo comunque aproporre, effettuare e segnalarciin modo che il sistema sia sempreoperativo nel modo più ottimale.

Il firmware è stato scritto inAssembler e questo anche secomplica un po’ la comprensio-ne, consente la modifica e laricompilazione senza disporre diparticolari strumenti software.Per la compilazione è sufficientedisporre del compilatore MPASMche è parte del pacchetto softwa-re gratuito MPLAB di Microchipche potete scaricare gratuita-mente dal sito Microchip, mache trovate anche all’interno delCDROM allegato a FareElettronica n.231 (Settembre2004) o anche nel CDROM delcorso “PICmicrocontroller® byexample”.

Una comprensione del firmwarenei minimi dettagli, vi darà lapossibilità di utilizzare il codiceadattandolo al vostro microanche se diverso dal PIC16F876utilizzato sulla scheda madre. Laversione del firmware a cui fare-mo riferimento in questo artico-lo è la prima assoluta: V.1.0 –ottobre 2004.Inutile dire che contiamo sullavostra collaborazione per il rila-scio delle versioni successive!

SEMPLIFICHIAMO LE COSEAffinché il firmware sia com-prensibile, è necessario che siastrutturato in maniera ben defi-

ROBOMANIA94

terza parte

ROBOMANIA

Il mese scorso abbiamo sviscerato il progetto hardware della scheda madre equesto mese analizzeremo il firmware nel dettaglio in modo che possiateadattarlo ai vostri progetti nella maniera più semplice possibile. Verrannodescritte le routines facendo largo uso dei diagrammi di flusso in modo che siachiara la loro funzione e possano essere “tradotte” facilmente anche in altrilinguaggi di programmazione. Visto il livello di approfondimento, l’analisi delfirmware verrà completata con il prossimo numero anche se fin da adessopotrete scaricare il codice completo sul nostro sito Internet.

DEL CORSO-impaginato 4-10-2004 9:26 Pagina 94

Page 94: Fare Elettronica - FE 233.pdf

nita in modo da creare una sortadi standard per la stesura delcodice. In questo modo, anchese cambiano i contenuti, lastruttura rimane sempre la stes-sa, facilitando la comprensionedel codice anche se si analizzanoprogrammi scritti da altri utenti.Per fare questo utilizzeremo ladirettiva INCLUDE nomefile la

quale fa sì che in fase di compi-lazione venga inserito il filenomefile nella posizione occupa-ta dalla direttiva INCLUDE.Chi progetta un modulo delFEbot deve creare due file:main.asm e var.inc. Il filemain.asm contiene il program-ma principale e la sua struttura èriportata in figura 1. Si noti che

in main.asm vengono inclusi ifile variabili.inc e library.inc chevengono forniti da FareElettronica e contengono le rou-tines di gestione del bus secon-do le specifiche e le relativedichiarazioni delle variabili.variabili.inc a sua volta include ilfile var.inc che è il file, prodottodagli utenti, contenente la

ROBOMANIA

Figura 1: : Struttura del programma assembler

ROBOMANIA 95

DEL CORSO-impaginato 4-10-2004 9:26 Pagina 95

Page 95: Fare Elettronica - FE 233.pdf

dichiarazione delle variabilinecessarie alle routines createdai lettori. Sul sito di FareElettronica sono disponibili imodelli dei vari file e, ovviamen-te, library.inc e variabili.inc.Dunque, come tutti gli altrimoduli, anche per la schedamadre si deve scrivere il filemain.asm e var.inc. Sul filevar.inc non ci soffermeremo alungo in quanto contiene ladichiarazione delle variabili edalcune definizioni. Le definizionirisultano particolarmente utili inquanto permettono di associaredei nomi logici a costanti o aipin fisici delle porte del PIC: inquesto modo possiamo utilizza-re tali nomi nel programmaprincipale ed eventuali modifi-che possono essere effettuatecambiando semplicemente ledefinizioni e lasciando inalteratoil codice del programma.Consigliamo sempre di inserireun gran numero di commentinel codice (ricordiamo che icommenti sono preceduti da unpunto e virgola) al fine di rende-re il programma leggibile e

comprensibile anche da chi nonha partecipato alla stesura.Nell’analisi del codice che inizie-remo nel prossimo paragrafo,faremo largo uso dei diagrammidi flusso in modo da capire qualisono le operazioni principali ese-guite dalle varie routines.Faremo riferimento alle linee dicodice assembler solo quandostrettamente necessario, al finedi non appesantire troppo latrattazione.

IL FILE ‘VAR.INC’Come già accennato, il filevar.inc contiene le dichiarazionidelle variabili definite dall’utentee alcune definizioni utili persemplificare la comprensionedel codice. Nel riquadro chesegue sono riportate le defini-zioni contenute nel file var.inc:

La prima parte delle definizioniriguarda i segnali elettrici, quin-di ad esempio l’istruzione bsfERR per accendere il led ERROR,sarà equivalente a bsf PORTC,5.La seconda parte è relativa aidati tipici della scheda madre,

come l’indirizzo, il codice diidentificazione, i comandi rico-nosciuti, ecc. Le definizioni sonoparticolarmente utili: se adesempio volessimo cambiarel’indirizzo ADDR da 01H a 02H,basterebbe associare 02H allacostante ADDR con la riga #DEFI-NE ADDR 02H e lasciare invariatotutto il resto del programma.

IL PROGRAMMA PRINCIPALEUn ciclo infinito…Il programma principale iniziaall’etichetta start e, come primacosa, configura i pin di I/O delPIC come ingressi o come uscitea seconda della funzione asse-gnata. In particolare vengonoimpostati per la PORTA RA1come uscita e gli altri comeingressi, la PORTB come ingres-si, mentre per la PORTC vieneimpostato RC7 ed RC1 comeingresso e gli altri come uscite.Vengono inoltre abilitate leinterruzioni, delle quali parlere-mo più avanti. In realtà, comemostra la figura 2, il programmaprincipale è un ciclo continuo(l’inizio del ciclo è contrassegna-

ROBOMANIA96

ROBOMANIA

VAR.INC

;definizioni dei segnali della scheda madre#DEFINE LOWBAT PORTA,1 ;LED segnalazione batt. scarica#DEFINE ERR PORTC,5 ;LED segnalazione errori di comunicazione#DEFINE RX PORTC,7 ;linea ricezione RS232#DEFINE TX PORTC,6 ;linea trasmissione RS232#DEFINE VBAT PORTA,0 ;linea di monitoraggio della tensione di alimentazione

;indirizzo della scheda madre e comandi riconosciuti#DEFINE ADDR 0x01 ;l'indirizzo della scheda madre è 00000001#DEFINE MM 0x0A ;mese di convalida (fornito da FE)#DEFINE AA 0x04 ;anno di convalida (fornito da FE)#DEFINE POWERON 0XFF ;Comando di accensione (standard)#DEFINE STANDBY 0X00 ;Comando di standby (standard)#DEFINE RESET 0X01 ;Comando di reset (standard)#DEFINE ID 0XFF ;Comando di identificazione (standard)#DEFINE L_BAT 0XFF ;Comando di batteria scarica (standard)#DEFINE PC_CONN 0XFF ;Comando di notifica connessione PC (standard)

DEL CORSO-impaginato 4-10-2004 9:26 Pagina 96

Page 96: Fare Elettronica - FE 233.pdf

to dall’etichetta ciclo1) che com-pie le seguenti azioni:

• Analisi della linea BUSY_S.Prosegue solo se BUSY_S è alivello alto.

• Ricezione dei dati (mediantela routine Ricevi_CMD).

• Controllo della correttezzadei dati ricevuti: in casonegativo si torna all’analisidella linea BUSY_S.

• Analisi dell’indirizzo del pac-chetto dati ricevuto: se è ilproprio (per la scheda madreè 01H) o è broadcast (FFH) sianalizza il comando altri-menti si torna all’analisi dellaline BUSY_S.

• Analisi ed esecuzione delcomando.

• Torna all’inizio del ciclo.

Vediamo in dettaglio in chemodo avviene il controllo del-l’indirizzo di destinazione delpacchetto ricevuto. Nell’ipotesiche il pacchetto sia stato ricevu-to correttamente, nella variabileindir si troverà l’indirizzo che dob-biamo analizzare. La figura 3riporta il frammento di codice

che esegue questo controllo. Perprima cosa viene controllato sel’indirizzo è broadcast (FFH) quin-di un pacchetto destinato a tutti imoduli. Per eseguire questo con-trollo viene incrementato di uno ilvalore di indir mediante l’istruzio-ne incfsz indir,0. Questa istruzioneincrementa il contenuto di indirmemorizzando il risultato in w el’istruzione successiva viene ese-guita solo se il risultato è diversoda zero. Se indir contiene il valoreFFH, l’incremento azzererà w everrà eseguita l’istruzione gotosi_addr che provoca un salto allasezione di codice dedicata all’a-nalisi del comando. Se indir noncontiene FFH, l’incremento daràun risultato non nullo per cuiverrà eseguita l’istruzione gotono_broad che salta alla sezione dicodice dedicata all’analisi dell’in-dirizzo. L’analisi dell’indirizzoavviene confrontando il valore diindir con la costante ADDR allaquale, nella sezione di definizio-ne, è stato associato l’indirizzodella scheda madre (01H). Il con-fronto viene fatto memorizzandoindir in w e sottraendoci il valoreADDR: se il risultato è zero il pac-

ROBOMANIA 97

chetto era destinato proprio allascheda madre, altrimenti si tornain ascolto della BUSY_S.Ricordiamo che quando unaistruzione dà zero come risultato,viene portato ad 1 il bit Z delregistro STATUS (noto appuntocome Zero Flag).La stessa tecnica viene usata perl’analisi del comando, confron-tando la variabile cmd con i vari

ROBOMANIA

Figura 2: Il diagramma di flusso delprogramma rincipale

Incfsz indir,0; controllo se indir=ff (broadcast)goto no_broadgoto si_addr ;ricevuto un pacchetto broadcast

no_broadmovf indir,w ;metto in w il campo indirizzo del pacchetto ricevutosublw ADDR ;non era un pacchetto broadcast, allorabtfsc STATUS, Z ;controllo se l'ind ricevuto è quello della scheda madre

(01H)goto si_addr

no_addrgoto ciclo1 ;il pacchetto non era destinato alla scheda madre

;- torna all’inizio del ciclosi_addr

;sezione di analisi del comando...

Figura 3: Struttura del programma assembler

DEL CORSO-impaginato 4-10-2004 9:26 Pagina 97

Page 97: Fare Elettronica - FE 233.pdf

comandi supportati (si veda ildiagramma di flusso di figura 4).I comandi supportati sonomemorizzati nelle relativecostanti e, per la scheda madre,sono: RESET e ID. Il primo pro-voca il reset della scheda ripor-tando il programma al punto dipartenza, mentre il secondoprovoca l’identificazione dellascheda. Per la scheda madre iparametri di identificazione (6byte) sono memorizzati nellecostanti ADDR (=01H), MM(=0AH), AA (=04H) e gli altri 3byte sono zero.

Le interruzioniLa scheda madre ha il compitodi monitorare il livello della ten-sione di alimentazione e notifi-care eventualmente lo stato dibatteria scarica. Per fare questo,viene acquisito il valore dellatensione di alimentazione ogniminuto e se questo è inferiore acirca 4,7V viene inviato un pac-chetto broadcast di notifica,

contenente tale valore. Il primoproblema è dunque capirequando è trascorso un minuto.Per questo si utilizza la perifericaTimer0. Con il quarzo da 4MHze tenendo conto che l’esecuzio-ne di una istruzione occupa 4cicli di clock, Timer0 effettuerà1000000 di conteggi al secon-do. Ogni volta che Timer0 rag-giunge il suo valore massimo(256 conteggi) genera unainterruzione, per cui avremo1000000/256=3906,25 interru-zioni prima che sia trascorso unsecondo. Le variabili TimerH:TimerL ven-gono incrementate ad ogniinterruzione per cui quando illoro valore raggiunge 3906,25siamo sicuri che è trascorso unsecondo. Poiché le variabiliTimerH:TimerL non possonocontenere valori decimali, pos-siamo assumere, con buonaapprossimazione, che sia tra-scorso un secondo quando ilconteggio raggiunge il valore3907 (=0F43H). Una volta rag-giunto tale valore, viene incre-mentata la variabile secondi esolo quando secondi raggiungeil valore 60, viene letta la tensio-ne di alimentazione ed azzeratoil conteggio dei secondi. Il dia-gramma di flusso della routinedi interruzione relativa al Timer0è riportato nella figura 5.

Vediamo ora in che modo avvie-ne la lettura della tensione di ali-mentazione. Il conduttore di ali-mentazione è stato collegatoalla porta RA0 del PIC che vieneconfigurato come ingresso ana-logico. Per gestire la conversio-ne AD dobbiamo fare uso deiregistri ADCON1 e ADCON0 del

PIC. Il risultato della conversioneverrà memorizzato nei registriADRESH:ADRESL. In figura 6 èriportato il codice della routineLeggi_V che opera appunto lalettura della tensione.

Come si può vedere, per primacosa vengono azzeratiADRESH:ADRESL che potrebberocontenere eventuali risultati diprecedenti conversioni, quindiviene caricato il valore 10001110nel registro ADCON1. Il bit piùsignificativo (l’1 più a sinistra) è ilbit ADFM ed indica che il risultatodella conversione sarà allineato adestra. Questo perché il converti-tore AD del PIC è a 10 bit, mentreil risultato viene memorizzato inADRESH:ADRESL che sono dueregistri ad 8 bit. Allineando il risul-tato a destra, i 6 bit più significati-vi di ADRESH saranno posti tutti a0 (figura 7).

ROBOMANIA98

ROBOMANIA

Figura 4: Analisi ed esecuzione del comando Figura 5: Interruzione del Timer0

DEL CORSO-impaginato 4-10-2004 9:26 Pagina 98

Page 98: Fare Elettronica - FE 233.pdf

I successivi tre bit a 0 di ADCON1non sono significativi, mentre gliultimi quattro bit di ADCON1selezionano il canale analogicoRA0 con tensioni di riferimento+Vcc e GND.

Successivamente viene inizializ-zato il valore di ADCON0 met-tendo a zero i bit 3, 4 e 5 (sele-zione del canale RA0), mettendoi valori 1 e 0 rispettivamente neibit 6 e 7 (imposta la frequenzadi campionamento a Fosc/8quindi 500KHz) quindi vieneattivato il convertitore ponendoad 1 il bit 0.La routine delay160 provoca unritardo di 160 microsecondi perconsentire il completamento del-l’acquisizione del valore da con-vertire quindi ponendo ad 1 il bit2 di ADCON0 si da inizio all’ope-razione di conversione. Quandola conversione è terminata il bit 2di ADCON0 viene riportato auto-maticamente a zero per cui laroutine entra in un ciclo in cuiesamina il bit 2 di ADCON0 edesce solo quando tale bit vale 0.Terminata la conversione vienedisattivato il convertitore ADriportando a zero il bit 0 diADCON0.

Come avviene i controllo delvalore della tensione di alimenta-zione? Come già detto il conver-titore AD del PIC16F876 è a 10bit e, poiché sono state sceltecome tensioni di riferimento Vcce GND, significa che il range di5V consentito per la conversione,viene suddiviso in 210=1024 parti.La minima risoluzione è dunquepari a 5/1024 ovvero circa4,88mV. Se la tensione di alimen-tazione vale 4,7V il risultato della

conversione sarà dato da :

4,7 * 1024/5=962,56

Possiamo assumere dunque chese ADRESH:ADRESL contiene 962(in binario 00000011:11000010)la tensione vale 4,7V. La routineTimer_int provvede a fare questaverifica e se il valore inADRESH:ADRESL è inferiore a962, invia un messaggio broad-cast di batteria scarica contenen-te il valore della tensione di ali-

mentazione. Questo messaggiopotrebbe essere interpretatodagli altri moduli eventualmentepresenti, provocandone lo spe-gnimento oppure da un modulodi visualizzazione che potrebbevisualizzare un messaggio parti-colare su un display LCD o su undisplay led a 7 segmenti.Non abbiamo ancora esaminatoin che modo si risale all’eventoche ha scatenato l’interruzione.Ricordiamo che le interruzionipossono essere provocate da

ROBOMANIA 99

ROBOMANIA

Leggi_VClrf ADRESHbsf STATUS,RP0clrf ADRESLbcf STATUS,RP0bsf STATUS,RP0movlw B'10001110'movwf ADCON1bcf STATUS,RP0bcf ADCON0,3bcf ADCON0,4bcf ADCON0,5bsf ADCON0,6bcf ADCON0,7bsf ADCON0,0call delay160bsf ADCON0,2nopbtfsc ADCON0,2goto $-2call delay160call delay160bcf ADCON0,0return

Figura 6: Lettura della tensione di alimentazione

Figura 7: Allineamento del risultato nei registri ADRESH:ADRESL

DEL CORSO-impaginato 4-10-2004 9:26 Pagina 99

Page 99: Fare Elettronica - FE 233.pdf

diversi eventi che si verificanointernamente o esternamente almicrocontrollore. Per prima cosaè dunque opportuno abilitaresolo le interruzioni che ci servono.Esiste un registro per la gestionedelle interruzioni, mediante ilquale è possibile sia abilitare omeno determinate periferiche allagenerazione di interrupt, sia veri-ficare quale periferica ha scatena-to l’interruzione. Il registro è INT-CON e la sua struttura è quella difigura 8.

GIE consente di abilitare (se ad 1)o meno le interruzioni in sensoglobale. PEIE abilita o meno leinterruzioni per le periferiche,TMR0IE abilita timer0 ad richie-dere interruzioni, mentre INTE eRBIE abilitano le interruzioniesterne ed in particolare INTEquelle su RB0/INT mentre RBIEquelle sul cambiamento di statodi uno dei bit sulla PORTB. I trebit meno significativi sono i flagdi interruzione che permettonodi risalire alla periferica che hagenerato l’interruzione. Questifalgs vengono messi ad 1 almomento dell’interruzione edevono essere azzerati via soft-ware al momento in cui vieneservita l’interruzione.Quando si scatena una interru-zione, il programma salta auto-maticamente all’indirizzo 04H alquale deve trovarsi il codice digestione delle interruzioni. È fon-damentale salvare lo stato deiregistri prima di servire l’interru-zione, in modo da ripristinare iltutto una volta terminata la rou-tine di servizio. Per questo moti-vo all’indirizzo 04H (individuabiledalla direttiva ORG 04) viene,come prima cosa, salvato il valo-

re di w, del registro STATUS e delregistro PCLATH rispettivamentenelle variabili w_safe, status_safee pclath_safe. Questi valori ver-ranno successivamente ripristina-ti dalla routine di interruzione.Successivamente vengono ana-lizzati i flags di interruzione percapire chi ha scatenato l’evento,quindi saltare alla routine di ser-vizio opportuna. In figura 9 èrappresentato un diagramma diflusso per l’analisi delle interru-zioni. A titolo di esempio sono

riportate diverse interruzioni chenon necessariamente sarannousate nel nostro codice.

Lasciamo alla prossima puntatal’analisi delle routine di lettura escrittura di un pacchetto sul buse quelle di gestione della comu-nicazione con un PC mediante laporta seriale. Ci occuperemoanche di come interpretare i datiinviati al PC e come interrogarela scheda madre sfruttando alporta seriale RS232.

ROBOMANIA100

ROBOMANIA

Figura 9: Gestione delle interruzioni: un esempio con interruzioni di timer0, esterne su RB0/INT e sucambiamento di stato di un pin della PORTB.

Figura 8: Struttura del registro INTCON

DEL CORSO-impaginato 4-10-2004 9:26 Pagina 100

Page 100: Fare Elettronica - FE 233.pdf

PRIMA PARTE (FE-234)• Introduzione;• Alimentatori lineari: cenni• Alimentatori switching,

charge-pump e magnetici;• Tipologie di switching:

la tipologia boost;• Progetto n.1: switching di

tipo boost senza regolazione.

SECONDA PARTE (FE-235)• Tipologie di sistemi di

controllo: la tipologia PFM;• Perdite negli switching:

generalità;• Perdite nei condensatori;• Progetto n.2: sistema di

controllo PFM per switching boost.

TERZA PARTE (FE-236)• Perdite nei MOSFET;• Tipologie di switching:

la tipologia buck;• Un circuito integrato PFM

commerciale: l'MC34063;• Progetto n.3: switching di tipo

buck ad alta corrente concontrollo PFM.

QUARTA PARTE (FE-237)• Perdite nei diodi;• MC34063: analisi dettagliata;• Tipologie di switching:

la tipologia inverting;• Progetto n.4: switching di tipo

inverting con controllo PFM.

QUINTA PARTE (FE-238)• Perdite negli induttori:

prima parte;• Tipologie di sistemi di controllo:

la tipologia PWM Voltage-Mode;• Tipologie di switching:

la tipologia buck-boost;• Progetto n.5: switching di tipo

buck-boost con controllo PWMV-Mode.

SESTA PARTE (FE-239)• Circuiti integrati PWM

commerciali: SG3524/5;• Isolamento ingresso-uscita negli

switching: trasformatori magnetici;• Materiali ferromagnetici;• Perdite magnetiche negli

induttori e nei trasformatori.

SETTIMA PARTE (FE-240)• Tipologie di switching a

trasformatore: la tipologiaforward single-ended;

• Tipologie di switching atrasformatore: la tipologiaforward push-pull;

• Progetto n.6: switching di tipoforward push-pull con controlloPWM V-Mode.

OTTAVA PARTE (FE-241/242)• Tipologie di sistemi di controllo:

la tipologia PWM Current-Mode;• Circuiti integrati PWM commer-

ciali: famiglie UC380x e UCC380x.

NONA PARTE (FE-243)• Tipologie di switching a

trasformatore: la tipologiaflyback;

• Progetto n.7: switching di tipoflyback ad uscita singola concontrollo PWM C-Mode;

• Il problema dell’isolamentoingresso-uscita;

• Isolamento tramite trasformatori;• Isolamento tramite optoisolatori.

DECIMA PARTE (FE-244)• Switching multiuscita: generalità;• Switching multiuscita:

considerazioni avanzate;• Progetto n.8: switching

di tipo flyback ad uscitamultipla con controlloPWM C-Mode.

UNDICESIMA PARTE (FE-245)• Alimentatori switching da rete:

generalità;• Alimentatori switching da rete:

sicurezza elettrica;• Alimentatori switching da rete:

stadi di ingresso.

DODICESIMA PARTE (FE-246)• Alimentatori switching da rete:

stadi di potenza;• Alimentatori switching da rete:

stadi di uscita;• Cenni su Power Factor

Correction.

INDICE DELLE USCITE

A p

artir

e da

DIC

EMB

RE

2004

A p

artir

e da

DIC

EMB

RE

2004

Grazie a particolari tecniche, gli alimentatori switching possono raggiungere rendimenti

altissimi se paragonati agli alimentatori lineari.

Per questo motivo gli switching trovano largo impiego nell’elettronica di tutti i giorni:

l’alimentatore del PC, il caricabatteria del cellulare, del palmare, del notebook…

Ma quali sono le tecniche utilizzate negli switching?Quali configurazioni esistono e quali caratteristiche presentano?

A queste ed altre domande potrete trovare risposta seguendo il nostro corso dedicatoagli alimentatori switching che, oltre alla parte teorica, presenterà una serie di progettipratici per concretizzare ciò che avrete appreso, ed alla fine...

gli alimentatori switching per voi non avranno più segreti!

GLI ALIMENTATORISWITCHING

DEL CORSO-impaginato 4-10-2004 9:26 Pagina 101

Page 101: Fare Elettronica - FE 233.pdf

ASPIRONE:

Non riesco a pensare cheAspirone vaghi per casa, sveglia-to solo dagli urti dei suoi bafficontro un mobile o una sedia,come ogni appassionato dirobotica vivo il forte desiderio difornire sempre più sensori allemie creature, in fondo la diffe-renza tra una macchina e unrobot nel nostro immaginario èben chiara: il robot ha cognizio-ne di dov’è e di cosa fa, la mac-china no, è solo sapendo econoscendo l’ambiente in cui siopera che un robot può decide-re cosa fare.Vagando per la rete mi ero piùvolte imbattuto in schede cherilevassero il campo magneticoterrestre e alla fine ho ceduto,acquistata.La scheda a cui mi riferisco è laCMPS03 basata su un integratodella Philips sensibili al campomagnetico terrestre, con due diquesti integrati, il circuito forni-sce attraverso il protocollo I2Cun valore che può essere com-preso tra 0 e 255 oppure 0 e

3599, tale valore è proporziona-le ai gradi rispetto al polo nordmagnetico.La scheda reperibile in rete sia inItalia che oltre oceano viene for-nita montata e collaudata comela vedete in figura 1, è in tecno-logia SMD e le dimensioni sonoveramente ridotte, solo 3x3 cm,il lavoro da fare non è molto, sitratta di trovargli una collocazio-ne adeguata e collegare oppor-tunamente i 6 pin necessari alfunzionamento.

Posizionarla in realtà si è rivelatacosa ardua, tenendo conto della

sensibilità ai campi magnetici,sarebbe piuttosto intelligentetenerla lontana dai motori.La posizione migliore che hotrovato è stata di fissarla sopra lacamera di espansione del circui-to aria sfruttando una vite giàpresente nel plexiglas, una vali-da alternativa era di appoggiarlasopra la batteria con un po’ dibiadesivo. In figura 2 vedete lasistemazione che ho scelto

Diciamo subito che non èimportante la direzione in cui lamontate, ne che sia perpendi-colare al robot, dovremo

ASPIRONE:

NON PERDE LA BUSSOLANON PERDE LA BUSSOLAdi Marco [email protected]

Dotiamo il nostro robot aspirapolvere di una bussola elettronica e attraverso ilBus I2C e qualche modifica al programma facciamo in modo che sappia dovesta andando.

terza parte

ROBOMANIA

ROBOMANIA102

Figura 2: Fissaggio della bussola sopra il circuito ariaFigura 1: La scheda CMPS03, viene fornita

montata e collaudata

FABBRI-impaginato 4-10-2004 9:27 Pagina 102

Page 102: Fare Elettronica - FE 233.pdf

comunque gestire dei riferimen-ti relativi e matematici, per noi èpiù facile capire che 180 gradisignifica Sud, per il robot 180,128, 32768 o 430 sono la stes-sa cosa se gli diciamo che quel-lo è il Sud.Passiamo al collegamento, intabella 1 vedete riportata ladenominazione dei pin.

Tralasciando I pin non collegati,il modulo necessita ovviamentedi una alimentazione (pin 1 e 9),il pin 7 dice al circuito qual è lafrequenza di rete in modo da eli-minarne i disturbi, nel nostrocaso 50Hz questo pin va colle-gato a massa, nel caso dei 60Hzpuò essere lasciato scollegatovisto che è dotato di una resi-stenza di pull-up.Il pin 6 serve per la calibrazione,la procedura è piuttosto sempli-ce e non va ripetuta ad ogniaccensione, procedete così: conil circuito alimentato e paralleloal pavimento ruotatelo con illato opposto a quello dove sonoi pin verso Nord, collegate a

massa il pin 6, scollegatelo eruotate la bussola verso Est, dateun altro impulso al pin 6 comeprima e ripetete in direzione Sude quindi Ovest.Finito, la bussola è calibrata,potete ovviamente ripetere laprocedura se lo ritenete oppor-tuno, nella puntata precedentevi avevo fatto notare un pulsan-te sulla basetta del circuito di ali-mentazione, serve appunto aquesto scopo.Per prelevare i dati dalla bussolaabbiamo due possibilità, o ilsegnale PWM sul pin 4 o utilizza-re i pin 2 e 3 per il protocollo I2C.Il segnale PWM ha le seguenticaratteristiche:

0° = 1ms359,9° = 36,99ms

In altre parole abbiamo 100microsecondi per ogni gradopiù 1ms, il timer interno ha unarisoluzione di 10 microsecondiper cui si possono apprezzarevariazioni dell’ordine del deci-mo di grado; tra un impulso e il

successivo il segnale va a zeroper 65ms.Visto che la scheda montata suAspirone è dotata del connetto-re per il bus I2C la cosa miglioreè di utilizzarlo, per fare questo èsufficiente collegare i pin SCL eSDA della bussola agli omonimidella scheda del Mark.Il protocollo prevede che ogniperiferica collegata abbia unindirizzo, nel caso della CMPS03questo è scritto nel firmware edè fisso 0XC0, se avete esperien-ze con le memorie tipo 24C04troverete che non ci sono diffe-renze, diversamente eccovi unpezzo di codice in PICbasic chelegge l’angolo e lo mette nellavariabile BEAR:

‘Dichiarazioni'I2C SCL for slavescl var PORTC.3'I2C SDA for slavesda var PORTC.4'The control code for' the slave 11000000ctrl con $C0addr=$01.........'SUB lettura bussolareadbussola:I2CREAD'read the datasda,scl,ctrl,addr,[BEAR]return

Come vedete il PICbasic preve-de un comando per leggeredirettamente il bus, è sufficientepassare al comando i parametrirelativi alle porte SCL e SDA, el’indirizzo per avere nella varia-bile indicata il valore.Nell’esempio ho utilizzato il

ROBOMANIA 103

ROBOMANIA

Pin 1 + 5V Alimentazione (5 Volt)

Pin 2 SCL Segnale del protocollo I2C

Pin 3 SDA Segnale del protocollo I2C

Pin 4 PWM Uscita PWM del dato riferito ai gradi

Pin 5 Non collegato

Pin 6 CalibrazionePin per la procedura di calibrazione dellabussola

Pin 7 50/60HzFiltro per I disturbi della rete elettrica50 o 60 Hertz

Pin 8 Non collegato

Pin 9 0V Alimentazione (massa)

Tabella 1: Denominazione dei pin della scheda CMPS03

FABBRI-impaginato 4-10-2004 9:27 Pagina 103

Page 103: Fare Elettronica - FE 233.pdf

valore in un solo byte (0-255).Non serve altro, la bussola e ilnostro robot, lo vedete comple-to in figura 3 sono pronti anuove missioni.

Avrete sicuramente idee sucome sfruttare questa nuovacaratteristica, prima di farlo leg-gete il paragrafo che segue…non c’è rosa senza spine.

I PROBLEMI DEL CAMPOMAGNETICO TERRESTRE

Devo confessarvi che è statauna amara sorpresa vedereAspirone apparentemente ubria-co vagare per casa con continuie inspiegabili cambiamenti dirotta, il programma era statomodificato in modo da leggereall’avvio la direzione nella qualeveniva acceso e da questa pro-cedere correggendo eventuali

errori monitorando con conti-nuità la bussola, a nulla eravalso creare delle bande di tol-leranza.Durante una delle tante proveho avuto la fortuna di far passa-re Aspirone davanti ad una dellecasse dello stereo e, ovviamen-te, Aspirone è impazzito pun-tando la cassa, era chiaro, incasa il debole campo magneti-co terrestre è influenzato datantissimi oggetti (metallici).Potete verificare questo effettocon una bussola tradizionalecamminando in casa.È chiaro che il robot non facevaaltro che seguire queste pertur-bazioni, che fare?La soluzione non è poi difficile,anche se non mi permette digestire la correzione del moto.Lascio andare avanti il robot e aquesto punto il fatto che vada

diritto è affidato solo alla tara-tura dei servo, rilevato un osta-colo con i baffi fermo il robotche a questo punto legge labussola, ad esempio il valore40, se sono nella condizione didover ruotare di 180° inizierò larotazione e leggendo la bussolafino ad arrivare a 40+128=168.In questo modo infatti l’even-tuale errore dovuto ad interfe-renze in quel punto della casa ècostante, poco importa se il 40iniziale è vero o sbagliato.La bussola nasce per la naviga-zione in mare aperto e anche lìsono necessarie verifiche ecompensazioni dovute allastruttura della nave, è facilepertanto capire come possarisultare inaffidabile entro lemura domestiche questo tipodi navigazione; detto questoperò posso assicurarvi che,vedere il robot iniziare a ruota-re e fermarsi o correggere finoad ottenere i 180° desiderati, èestremamente confortanterispetto alla soluzione di tararedei tempi che non tengonoconto del livello di carica dellabatteria o dello sforzo deimotori, rischiando quindi errorigrossolani.

Abbiamo aggiunto una cono-scenza al nostro robot, per chi siè appassionato dell’argomentovoglio svelare che Aspirone ènato quasi come prototipo diun progetto simile, ilGiardiniere, un robot che dove-va occuparsi di tagliare l’erbadel prato, se ci pensate, la mec-canica e i concetti visti insiemepossono adattarsi bene e lanostra bussola diventa sicura-mente più affidabile.

ROBOMANIA

ROBOMANIA104

Figura 3: Aspirone nella sua versione definitiva

FABBRI-impaginato 4-10-2004 9:27 Pagina 104

Page 104: Fare Elettronica - FE 233.pdf

Ses

sio

ne

Mat

tuti

na

(09.

00-1

3.00

)

Nome e Cognome Azienda

Via Cap Città Prov.

Tel. Fax E-mail

Sessione Workshop: Mattutina (€ 99,00 + Iva compreso un sistema HD1100)

Pomeridiana (€ 99,00 + Iva compreso un sistema LS100)

Entrambe (€ 189,00 + Iva compreso un sistema HD1100 e un LS100)

Evento di*: Roma Milano Padova Torino

Organizza

ISCRIVITI AD ENTRAMBE LE SESSIONI AL PREZZO IRRIPETIBILE DI € 189,00 +Ivacompresi 2 sistemi del valore complessivo di € 250,00 +IVA (1 mod. HD1100 + 1 mod. LS100)

SCHEDA DI PREREGISTRAZIONEDa compilarsi in ogni sua parte ed inviare via fax al n. 02 66508225 o per e-mail ad [email protected]È possibile iscriversi online all’indirizzo www.elettroshop.com/academy

Il corso permetterà al partecipante diapprendere nozioni sulla configurazioneed integrazione dei dispositiviSena Technologies (www.hellodevice.it)serie HD1x00, Serie Super SS110, SS400, SS800

QUOTA DI PARTECIPAZIONE € 99,00 + IVA*COMPRESO UN MICRO WEB SERVER MOD. HD1100 DEL VALORE DI € 125,00 + IVA

QUOTA DI PARTECIPAZIONE € 99,00 + IVA*COMPRESO UN SERIAL/ETHERNET CONVERTERMOD. LS100 DEL VALORE DI € 125,00 + IVA

Il corso permetterà al partecipante diapprendere nozioni sulla configurazione edintegrazione dei dispositivi Sena Technologies(www.hellodevice.it) serie Lite, Pro, STS, VTS.

L’INTERFACCIAMENTODEI DISPOSITIVI SERIALIALLE RETI LAN

EMBEDDEDINTERNET

Argomenti principali della sessione:

• la conversione Seriale/Ethernet semplice ed economica

• bridge di dispositivi seriali mediante LAN

• interfacciamento di dispositivi con diversi livelli di

integrazione (dal modulo all’apparato multiporta)

• il console management

• domande e risposte

Argomenti principali della sessione:

• problematiche di connessione di apparecchiature

e dispositivi elettronici alle reti TCP/IP

• i micro web servers Sena Technologies ed

i loro possibili campi di applicazione

• tecniche per il controllo remoto e via web

• domande e risposte

In collaborazione con: SENA TECHNOLOGIES

* Seguiranno dettagli sulle date degli eventi (I Workshop si terranno nei mesi di Ottobre/Novembre/Dicembre 2004) e sulle modalità del saldo della quota di partecipazione

Ses

sio

ne

Po

mer

idia

na

(14.

00-1

8.00

)

I° WORKSHOP SUL

DEVICE NETWORKING

Autorizzo il trattamento dei dati personali ai sensi della Legge 675/96

Firma

FABBRI-impaginato 4-10-2004 9:27 Pagina 105

Page 105: Fare Elettronica - FE 233.pdf

CAPACITÀ SENSORIALE

Sempre più simili a noi i robot,anche se non nelle sembianzema almeno nelle capacità, inte-ragiscono ancor di più con ilnostro mondo.Sia che si tratti di robot indu-

striali, quindi robot complessiinseriti in un ambiente semplicee noto, oppure, di robot auto-nomi (umanoidi) cioè robotsemplici inseriti in un ambientecomplesso, il sistema robot può

essere rappresentato medianteuna schema logico semplificato(figura 1) dove si identificanotre sotto-sistemi: un sistemameccanico identificato median-te una carrozzeria (locomozio-ne e manipolazione), un siste-ma sensoriale per interfacciarsicon l’esterno (e interno) e unsistema di governo conglome-rante sia hardware che il soft-ware (linguaggio di program-mazione, azione di controllo ediagnosi) il tutto mediato dauna connessione ad anellochiuso (retroazione).

I SENSORI

Le competenze su cui si basa larobotica sono di natura interdi-sciplinare:

CAPACITÀ SENSORIALE

INTRODUZIONE ALLA ROBOTICAINTRODUZIONE ALLA ROBOTICA

di Massimilinao [email protected]

“…Affinché ogni macchina subordinata a un ambiente esterno variabile possafunzionare efficacemente, è necessario sia fornita ad essa l’informazione relativaai risultati della sua stessa azione, come parte dell’informazione in base allaquale essa deve continuare ad operare…Questo comando della macchina sullabase del suo funzionamento effettivo anziché del suo comportamento previstoè conosciuto come retroazione (feedback), e implica che i membri sensori, messiin azione dai membri motori, svolgano una funzione di rilevatori o segnalatori,cioè di elementi che indicano il comportamento…”[“Introduzione alla cibernetica”, Norbert Wiener]

quarta parte

ROBOMANIA

ROBOMANIA106

Figura 1: Sistema robot - Schema logico semplificato

BRACCI-impaginato 4-10-2004 10:00 Pagina 106

Page 106: Fare Elettronica - FE 233.pdf

• La meccanica dove si utilizza-no le conoscenze della mec-canica razionale e meccanicaapplicata per tutto quello checoncerne la cinematica e ladinamica.

• La elettrica che interessa gliazionamenti dei motori elet-trici e quelli idraulici o pneu-matici.

• La competenza elettronica uti-lizzata per il controllo dellesuccessive posizioni mediantei sensori.

• L’informatica necessaria per laprogrammazione della dina-mica realizzata mediante uncalcolatore, con l’ausilio di unopportuno linguaggio di pro-grammazione.

Da questo punto di vista allora ilsistema robot può essere rappre-sentato secondo uno schema ablocchi più dettagliato. (figura 2).

Il sensore riceve dall’esterno unsegnale di input che trasdottoviene elaborato dal calcolatoreelettronico. In uno schema ablocchi si possono riassumeretutte le operazioni svolte, dal-l’acquisizione all’elaborazionedei dati (figura 3).

Il segnale acquisito dal sensore èdi tipo analogico e di conse-guenza per essere elaborato dalcomputer deve essere tradottoin digitale; risulta quindi neces-sario utilizzare dei convertitoriA/D (Analogico/Digitale).Una volta ricevuti ed interpreta-ti i segnali digitali dal computerli si riconverte nuovamente inanalogici per trasmettere ilcomando all’attuatore. Lo sche-ma è quello di figura 4.

Nel suo complesso la capacitàsensoriale del robot può essererappresentata mediante unoschema a blocchi come in figu-ra 5. Mediante un sistema dicontrollo ad anello chiuso ivalori delle grandezze in uscita

vengono prima misurati e poiconfrontati con quelli dellegrandezze in ingresso. Il valore

ROBOMANIA 107

ROBOMANIA

Figura 2: Sistema robot - Schema logico più dettagliato

Figura 3: Schema a blocchi delle varie operazionisvolte, dall’acquisizione all’elaborazionedei dati

Figura 4: Schema a blocchi: dal ricevimento delsegnale alla trasmissione dei dati.Dall’attuatore e di nuovo al sensoretramite feedback

BRACCI-impaginato 4-10-2004 10:00 Pagina 107

Page 107: Fare Elettronica - FE 233.pdf

ottenuto da questo confronto,mediante un “segnale di riferi-mento”, viene utilizzato comenuova grandezza in ingressodel sistema di controllo. Inbase a tale nuovo valore iningresso, il sistema di controllofarà sì che la grandezza in usci-ta sia modificata fino a quandonon raggiungerà un valorecirca uguale a quello dellagrandezza di riferimento (entrodeterminati limiti prefissati infase di progetto).

Gli elementi caratterizzanti unsensore si possono indicarecome di seguito:

• Rivelatore: parte del sensorecapace di captare il segnaleinteressato. La capacità diacquisizione del rilevatore èlimitata dalla sensibilità dellostesso e dalla sua prontezzacorrelata all’intervallo di fre-

quenze che lo strumento è ingrado di apprezzare. Datenere presente che sensibili-tà e prontezza vanno in dire-zione opposta l’una rispettoall’altra cioè l’elevata pron-tezza limita la sensibilità eviceversa.

• Trasduttore: parte del sensoreche opera la conversione diuna grandezza fisica diingresso in una grandezzafisica di uscita di naturauguale o diversa da quellaacquisita.Tutti i segnali di ingressosono convertiti in segnali ditensione o corrente.

• Sistema di acquisizione: partedel sensore che è in grado diacquisire il segnale tradotto erenderlo leggibile per i passisuccessivi (usualmente ilsegnale tradotto è piuttostodebole così che necessita unamplificatore).

• Sistema di elaborazione: parteterminale del sensore che sioccupa della elaborazionedel segnale uscente. Nellamaggior parte dei casi ilsegnale viene convertito daanalogico in digitale.

I sensori più utilizzati nell’ambi-to della robotica sono i sensoridi posizione, sensori di velocità,sensori di forza e pressione, ditatto, di distanza e sensori divisione.

SENSORI DI POSIZIONE E

DI VELOCITÀ

L’encoder è un trasduttore diposizione e di velocità angolareche fornisce in uscita un segnaledigitale. È un apparato elettro-meccanico che converte la posi-zione angolare del suo asserotante in un segnale elettricodigitale. I trasduttori sugli enco-der impiegano un rilevamento

ROBOMANIA

ROBOMANIA108

Figura 5: Capacità sensoriale

BRACCI-impaginato 4-10-2004 10:00 Pagina 108

Page 108: Fare Elettronica - FE 233.pdf

di tipo fotoelettrico. Gli encoderpossono essere di due tipi: incre-mentali oppure assoluti.

Encoder incrementaleSegnala unicamente gli incre-menti (variazioni) rilevabilirispetto a un'altra posizioneassunta come riferimento.Questi incrementi sono indipen-denti dal verso di rotazione. Èsostanzialmente un disco dimateriale plastico, sul qualesono stati ricavati dei fori o, piùcomunemente, alcune zone par-ticolarmente trasparenti attra-verso le quali è possibile il pas-saggio di un fascio luminoso.L'attraversamento del fascioluminoso nei fori comporta l'at-

tivazione dell'uscita. I compo-nenti che lo compongono quin-di sono un disco, un fotoemetti-tore e un fotorilevatore (figura 6e figura 7).Il disco è generalmente di plasti-ca ed è calettato sull' albero dell'organo da controllare, diviso inzone chiare (trasparenti) e scure(opache).Il fotoemettitore fornisce ilsegnale di input attraverso unsegnale luminoso che passanelle zone trasparenti del disco.Il fotorilevatore riceve il segnaleluminoso e a sua volta invia unsegnale di output (logico 1 sepassa la luce, logico 0 se nonpassa).La rilevazione dello spostamentoangolare avviene mediante il"conteggio" degli impulsi gene-rati dal fotorilevatore alla pro-pria uscita.Fissiamo l’attenzionesu un disco costituito da N fori(figura 8).La rilevazione dello spostamentoangolare può essere così descrit-ta: quando l'encoder si trovanella posizione di riferimento, il

flusso luminoso attraversa il foro0. In tal modo viene attivata l'u-scita del fotorilevatore la quale siporta a livello alto, restandovifino a quando il fascio luminosoviene interrotto. L'encoder iniziaa ruotare e il fascio luminosoviene interrotto. Il fotorilevatore,quindi, risulta diseccitato e lasua uscita diventa bassa, fino aquando il foro 1 viene a trovarsinella posizione occupata dalforo 0. Quando questo avvieneil fascio luminoso attraversa ilforo 1 eccitando nuovamente ilfotorilevatore la cui uscita divie-ne nuovamente alta. Di conse-guenza risulta noto lo sposta-

ROBOMANIA 109

ROBOMANIA

Figura 6: Encoder incrementale

Figura 7: Encoder incrementale nelle sue parti:(1) o-ring, (2) disco, (3) elettronica,(4) custodia, (5) testine di lettura,(6) cuscinetti, (7) albero.

BRACCI-impaginato 4-10-2004 10:01 Pagina 109

Page 109: Fare Elettronica - FE 233.pdf

mento angolare 1 (=360° /(Numero di fori dell'encoder)).

Proseguendo nella rotazione ildisco interrompe nuovamente ilfascio luminoso diseccitando ilfotorilevatore la cui uscita ritor-na bassa.Il processo descritto si ripete inmodo perfettamente uguale neipassi successivi consentendo larivelazione degli spostamentiangolari.Il dispositivo digitale che rileva ilnumero di impulsi è un contato-re, di conseguenza il numerodegli impulsi contati è diretta-mente proporzionale allo spo-stamento angolare dell’encoder,cioè allo spostamento angolaredell’organo a cui è calettato.L'encoder incrementale è adattoa rilevare rotazioni, velocità edaccelerazioni in base al conteg-gio degli impulsi inviati dal cir-cuito in output.

Encoder assolutoNel caso dell' encoder assoluto ildisco è suddiviso in settori cheandranno a comporre un codice(binario oppure Gray).Il disco è diviso in n corone cir-colari e in 2 n spicchi. Ogni set-tore (spicchio) avrà n areole chea seconda se opacizzate o tra-sparenti corrisponderanno a 1logico o 0 logico. Ogni areolaavrà il valore di un bit.Per evitare errori di lettura inve-ce del codice binario puro ven-gono utilizzati altri codici, tra iquali il più importante è il codi-ce Gray. Nel codice Gray il pas-saggio da un numero al succes-sivo avviene sempre variandoun'unica cifra binaria, evitandocosì che nel passaggio tra la let-tura di un numero e del succes-sivo possano aversi letturecasuali. In questo caso ci sarà unfotoemettitore e un corrispon-dente fotorilevatore per ognicorona circolare del disco.

Gli encoder per la loro vastissi-ma gamma di modelli, qualità erobustezza, sono validamenteapplicati in tutto il mondo su:controlli di processo industriale,robot industriali, macchineutensili, strumenti di misura,plotters, divisori, laminatoi,macchine per lamiera, bilance ebilici, antenne e telescopi, mac-

chine per la lavorazione delvetro, marmo, cemento, legno,impianti ecologici, macchinetessili, conciarie, gru, carriponte, presse, macchine dastampa, imballaggio, ecc.In figura 10 vi sono riportati esem-pi di applicazione di encoder.

SENSORI DI FORZA E

PRESSIONE

Questi sensori sono degli estensi-metri, trasduttori capaci di ese-guire la deformazione locale del-l’elemento meccanico a cui sonorigidamente collegati. La defor-mazione viene poi legata aglisforzi tramite una relazione elasti-co-lineare di sforzi e deformazio-ni. Usualmente sono posizionatisui giunti delle pinze per misura-re appunto la deformazione deiriscontri mobili durante il movi-mento e risalire inoltre anche allaforza applicata. (figura 11).

In modo analogo funzionano isensori di pressione. Nella figura11 vi è una schematizzazione diuna pinza con dei sensori dipressione il cui posizionamentoè solo su uno dei due riscontri.Questi sono necessari per capirese l’oggetto in presa sta scivo-lando o meno. Si può constata-re inoltre che i sensori di pres-sione sono due: uno è adibitoalla misurazione della risultantenormale e l’altro per misurare larisultante tangenziale, questo inseguito alla legge di Coulombnota dalla meccanica razionale.

SENSORI TATTILI

Il sensore del tatto può essereimitato utilizzando sia dei senso-ri in cui occorre il contatto fisicotra sensore ed oggetto, banal-

ROBOMANIA

ROBOMANIA110

Figura 10: Esempi di applicazioni di Encoder

Figura 8: Spostamento angolare

Figura 9: Codice binario – Codice Gray

BRACCI-impaginato 4-10-2004 10:01 Pagina 110

Page 110: Fare Elettronica - FE 233.pdf

mente dei fine-corsa a contattomeccanico utilizzati ad esempioper verificare la posizione trami-te una grandezza off-on, oppureutilizzando dei sensori di prossi-mità. Questi ultimi, più sofistica-ti, sono sensori utilizzati percontrollare la presenza di unoggetto o di un ostacolo in unintervallo di distanze specificatoe comunque entro distanzebrevi. Possono essere principal-mente suddivisi nei seguentitipi: sensori induttivi, sensori adeffetto Hall e sensori capacitivi.Gli induttivi sono utilizzati perrilevare la presenza di oggettiferromagnetici dotati di movi-mento relativo rispetto al senso-re. La presenza di un oggetto dimateriale ferromagnetico nelleimmediate vicinanze del sensoreprovoca un variazione dellelinee di flusso del campomagnetico generato dal magne-te permanente.Tale variazione viene sentita inmodo dinamico, cioè durante lospostamento relativo oggetto-sensore, come un impulso dellacorrente indotta nella bobina,con ampiezza proporzionale allavelocità di variazione del flusso.Il sensore e' efficace solo a brevidistanze (dell'ordine di qualchemillimetro).I sensori ad effetto Hall solo uti-lizzati per rilevare la presenza dimateriali ferromagnetici e nonnecessitano di un moto relativodi questi. I sensori ad effettoHall si servono di particolaricomponenti elettronici a semi-conduttore sensibili ad uncampo magnetico. Il principiodi funzionamento si basa sulnoto effetto Hall che di seguitoviene brevemente richiamato.

In un conduttore sagomato aforma di lamina percorso dacorrente e soggetto ad uncampo magnetico, si originauna differenza di potenziale inuna direzione perpendicolaresia alla corrente che al campomagnetico. Il valore di tale dif-ferenza di potenziale è propor-zionale all'intensità di corrente eall'intensità del campo magneti-co, mentre è inversamente pro-porzionale allo spessore dellalamina. Questo sensore inassenza di un oggetto da rivela-re capta un forte campomagnetico emesso dal magnetepermanente, mentre capta uncampo più debole quando unoggetto ferromagnetico si trovanelle immediate vicinanze evaria in questo modo la confor-mazione delle linee di forza.I sensori capacitivi possono rile-vare oggetti di qualsiasi mate-riale, fermi o in movimentorispetto al sensore. Si basanosulla variazione di capacitàgenerata dalla prossimità di unoggetto al sensore. L'elementosensibile e' un condensatore for-mato da un elettrodo a forma didisco ed un elettrodo di riferi-

mento di forma anulare. Il restodel sensore è costituito da uncircuito elettronico che ha ilcompito di rilevare le variazionidi capacità generate dalla vici-nanza di un oggetto, per esem-pio mediante circuiti oscillanti lacui frequenza varia con la capa-cità. Anche in questo caso lasensibilità massima del sensoresi ha nell'ambito di pochi milli-metri e varia con il variare delmateriale dell'oggetto rilevato.

SENSORI DI DISTANZA

Questi sensori hanno prestazio-ni superiori a quelli di prossimi-tà; sono in grado di fornire ladistanza di un oggetto con unasuperiore precisione di quelleappena trattati.Esistono essenzialmente duemetodi per la realizzazione diquesti sensori: il primo si basasull'utilizzo di ultrasuoni, men-tre il secondo fa uso di una sor-gente a luce laser.In un sensore a ultrasuoni l'ele-mento principale è un trasdut-tore elettroacustico, piezoelet-trico, o ceramico. Misurandocon particolari circuiti elettroni-ci il tempo intercorrente tra l'in-

ROBOMANIA 111

ROBOMANIA

Figura 11: Schematizzazione dei sensori in una pinza

BRACCI-impaginato 4-10-2004 10:01 Pagina 111

Page 111: Fare Elettronica - FE 233.pdf

vio di un impulso e la ricezionedell'eco, il sensore può fornirenon solo informazioni sulla pre-senza di un oggetto ma anchesulla sua distanza. Oltre almetodo precedentementedescritto, esistono altri duesistemi basati rispettivamentesull'emissione di impulsi di lucelaser e sull'emissione di unfascio continuo con slittamentodi fase.Nel primo caso la misura delladistanza avviene misurando iltempo che intercorre tra l'emis-sione di un impulso di luce lasere il suo ritorno dopo che questaè stata riflessa dalla superficie del-l'oggetto di cui si intende misura-re la distanza. Questi sisteminecessitano campionature dellamisura in intervalli di tempo del-l'ordine dei pico secondi.Il secondo metodo si basa vice-versa sull'emissione di un fasciolaser continuo. Questo fascioviene diviso da una superficiesemiriflettente in due fasci: unfascio di riferimento, che vaimmediatamente a colpire unsistema per la misurazione dellafase; un fascio di misura, che vaa colpire l'oggetto, torna indie-tro e arriva anch'esso al misura-tore di fase.Misurando lo sfasamento tra idue fasci è possibile risalire alladistanza dell'oggetto.

SENSORI DI VISIONE

I sensori di visione hanno loscopo di identificare la posizionee l’orientamento dell’oggettoche si trova nel campo del sen-sore, al fine di guidare il robotverso l’oggetto. Essi sono impie-gati anche per riconoscereoggetti sia per forma che per

colore. La struttura tipica di unsistema di visione è illustratanella figura 12.

Il compito di riprendere leimmagini è affidato a una tele-camera a stato solido. Il rileva-mento avviene mediante unreticolo di elementi fotosensibilisu un chip CCD (CoupletCharge Device) dove su ciascunelemento si produce una tensio-ne proporzionale all’intensità diluce che lo colpisce, quindi pro-porzionale alla luminosità delcorrispondente punto dellascena ripresa. Dopo una conver-sione analogico/digitale i valoridella tensione associati a ciascun

elemento (pixel) proporzionalial suo livello di grigio, vengonomemorizzati sotto forma dimatrice numerica in un buffer dimemoria RAM.Successivamente la matricenumerica viene elaborata perevidenziare il profilo deglioggetti rispetto allo sfondo dellascena e confrontati con quelliprecedentemente memorizzati.In base al profilo rilevato il siste-ma di visione determina la posi-zione dell’oggetto e il suo orien-tamento. Queste informazionivengono successivamente tra-smesse al controllo del robot.Da tenere presente che l’occhioumano può distinguere una

ROBOMANIA

ROBOMANIA112

Figura 12: Schema funzionale di un sistema di visione

BRACCI-impaginato 4-10-2004 10:01 Pagina 112

Page 112: Fare Elettronica - FE 233.pdf

trentina di livelli di grigio mentrei sistemi di visione operano sualmeno sessantaquattro livelli.

La procedura di ricerca del pro-filo degli oggetti consiste nor-malmente nella scansione dellamatrice numerica in cui sonostati memorizzati i valori di gri-gio di ciascun elemento diimmagine. Per eseguire taleoperazione esistono vari algorit-mi, tra questi quello basato su diun livello di soglia di grigio.Tale algoritmo consiste nel fissareun valore soglia di grigio (figura13), al di sopra del quale il pixeldeve considerarsi parte dell’og-getto così da essere associato alvalore “0”. Se il pixel è parte

dello sfondo allora ad esso vieneassociato il valore “1” (figura 14).La successiva elaborazione verràeffettuata sugli elementi di valore1 e porterà l’identificazione deglioggetti presenti nella scena.

L’archivio delle immagini è unabase dati residente nella memo-

ria RAM del sistema, nella qualesono registrate alcune dellecaratteristiche geometriche(come l’area oppure il perime-tro…) tale che i loro valorigarantiscano l’identificazioneunivoca degli oggetti.

ROBOMANIA 113

ROBOMANIA

Figura 13: Valore di soglia Figura 14: Associazione del valore 0 oppure delvalore 1 in funzione della luminositàrispetto al valore della soglia per illivello di grigio

Finalmente è disponibile il CD-ROM conil corso completo PIC® Microcontroller By Example

in formato ACROBAT (PDF).

Tutte le lezioni pronte per la consultazionecon i sorgenti dei progetti immediatamente utilizzabilinelle tue applicazioni.

Il modo migliore per avere sempre sottomanola soluzione per il tuo progetto con i PICmicro®.

Il CD-ROM PIC® Microcontroller By Example contieneuna sezione “Contenuti Speciali” tutta da scoprire.

Ordinalo subito suwww.farelettronica.com/pbeoppure telefonando allo 02.66504794

PIC® Microcontroller By ExampleUn CD-ROM che non può mancare alla tua collezione!

Inware EdizioniVia Cadorna, 27/31 - 20032 Cormano (MI)

BRACCI-impaginato 4-10-2004 10:01 Pagina 113

Page 113: Fare Elettronica - FE 233.pdf

Pagherò con: (barrare la casella prescelta)

Abbonamento: (barrare la casella prescelta)

Privacy. Il trattamento dei dati, in forma automatizzata e con modalità strettamente connesseai fini, con garanzia di riservatezza, è finalizzato all’invio del presente periodico allo scopo diinformare ed aggiornare i lettori e gli operatori del settore elettronico sulle novità che il mer-cato propone. Potranno essere esercitati i diritti di cui all’articolo 13 della legge 675/96(accesso, correzione, cancellazione, opposizione al trattamento, ecc.). Il titolare del tratta-mento dei dati è Inware srl con sede a Cormano (MI) in via Cadorna 27/31. Nel caso si trattidi copia omaggio a titolo promozionale si rende noto che i dati provengono da archivi pubbli-ci. Resta inteso che le informazioni in ns. possesso non saranno in nessun caso cedute a terzi.

Bollettino Utilizzare il C/C N. 22790232 intestato ad Inware srl, postale indicando nella causale “Abbonamento a Fare Elettronica”

Bonifico Appoggiarlo su: Poste Italiane bancario CIN: Z - ABI: 07601 - CAB: 01600 - C/C: 000022790232 intestato ad Inware srl

Carta Titolare: di credito Numero: Scadenza:

Standard: Mi abbono a Fare Elettronica per un anno (11 uscite) a soli € 39,00 anziché € 51,00

Rinnovo: Sono già abbonato ed intendo rinnovare il mio abbonamento in scadenza. Fare Elettronica per un anno(11 uscite) a soli € 39,00 anziché € 51,00, il mio codice abbonamento è

Regalo: Regalo ad un amico Fare Elettronica per un anno (11 uscite) a soli € 35,00 anziché € 51,00Riservato agli abbonati, il mio codice abbonamento è

Scuole: Cinque abbonamenti a Fare Elettronica per un anno (11 uscite) a soli € 156,00 anziché € 195,00Riservato a Scuole ed Università

Cognome Nome

Azienda

Via CAP Città Prov.

Tel. Fax email

Si, desidero abbonarmi a a partire dal primo numero raggiungibile

Per completare l’attivazione dell’abbonamento, prego comunicare gli estremi (data e modalità prescelta)dell’avvenuto pagamento via telefono al numero (+39) 02.66504794 o via fax al numero (+39) 02.66508225

Firma

Abbonati subito!

• Compila il coupon e invialo via fax al numero 02.66508225• Abbonati on-line: www.farelettronica.com

• Spedisci questo coupon in una busta chiusa a INWARE Edizioni• Via Cadorna, 27/31 - 20032 Cormano (MI)• Chiamaci al numero 02.66504794

S c h e d a d i r i c h i e s t a a b b o n a m e n t o

EDIZIONI

FE - 233

BRACCI-impaginato 4-10-2004 10:01 Pagina 114