Introduzione
Su Internet esistono
alcuni progetti di oscilloscopi digitali autocostruiti che vanno
dall'abbozzo al lavoro semi-professionale. Guardate ad esempio uno dei più
famosi, il BitScope; un
lavoro pulito e razionale. Tutti i progetti del genere hanno però alcuni difetti, o almeno io li ritengo
tali. Ad esempio sempre riferendomi al BitScope ho individuato questi:
- Il costo. Il prezzo
del BitScope varia da 290$ (kit completo da assemblare) a 400$ (dispositivo
completamente assemblato). Poi ci sono da aggiungere la spedizione, i dazi
doganali e via dicendo. Penso che per noi italiani il kit da assemblare
verrebbe a costare perlomeno attorno ai 400 €. Non è male per un
oscilloscopio doppia traccia da 50-75 MHz (anche se in ETS),
ma a quel prezzo si iniziano a trovare degli oscilloscopi usati molto
interessanti. Inoltre in tante occasioni potrebbe essere sufficiente
disporre di un oscilloscopio di prezzo (e prestazioni) inferiore, ma con
caratteristiche diverse.
- Documentazione, schemi
e descrizione del funzionamento. Gli autori definiscono il BitScope open
source, ma questa è una mezza verità. È vero, perché
effettivamente gli schemi sono resi pubblici; è falso, perché manca ciò
che rende davvero utile un progetto open: un'estensiva ed esauriente
documentazione tecnica di tutte le parti, che permetta a chiunque di
estendere e migliorare il progetto a tutti i livelli o di riutilizzarne
delle sezioni per i propri scopi. A parte qualche schema a blocchi di
insieme e la descrizione "qualitativa" di alcuni aspetti teorici,
la cosiddetta documentazione tecnica del BitScope si limita appunto agli
schemi elettrici. Troppo poco.
- Sorgenti firmware e
software. Questo è un altro motivo per cui non reputo "open source"
il BitScope: per stessa definizione di open source, ciascuna parte di un
progetto aperto deve esserlo a sua volta. Dato che il BitScope senza il
firmware della CPLD e del PIC non è altro che un innalzatore dell'entropia
dell'universo, ritengo che questi elementi facciano parte del progetto a
pieno titolo e debbano essere completamente documentati. Un discorso simile
si può fare per il software: è vero che il protocollo di comunicazione è
documentato e che quindi chiunque può sviluppare un software di pilotaggio
per il BitScope, ma è anche vero che (sempre nell'ottica open)
fornire dei sorgenti di riferimento per gli altri eventuali sviluppatori
può essere molto utile.
- Reperibilità dei
componenti. Gli americani sono fortunati, fanno una telefonata a Digikey e
in un paio di giorni gli arriva a casa il componente più strano e assurdo
che l'azienda di microelettronica meno nota al mondo abbia mai fatto. Noi
dobbiamo accontentarci di RS, Distrelec e Farnell, e questo la dice lunga.
Nella fattispecie, parecchi componenti del BitScope non sono facilmente
reperibili (almeno, io non li ho trovati con i normali canali ai quali può
accedere un hobbista): la SRAM, gli ADC, alcuni operazionali, la PLD e altri
ancora. E non voglio dipendere esclusivamente dal loro servizio: se mi si
brucia la CPLD, cosa faccio? Me la faccio spedire dagli USA?
- Porta seriale. Una
delle scelte progettuali del BitScope è stata quella di utilizzare la porta
seriale (il progetto originale risale a qualche anno fa). Ritengo che la
seriale abbia fatto il suo tempo; sta scomparendo da tutti i portatili e da
un po' di tempo latita persino su alcuni computer desktop. È inutile
sviluppare un progetto su seriale e costringere una fetta di utenti a
doversi comprare un adattatore; meglio sviluppare subito su USB, anche
considerando che esistono produttori
che rendono l'interfacciamento USB persino più semplice di quello seriale!
- Due canali. Il
BitScope ha due canali analogici e otto canali digitali (per l'analizzatore
di stati logici). Queste due caratteristiche - specialmente la prima -
possono essere limitanti in alcuni casi o sovrabbondanti in altri. Può
essere necessario disporre di più canali digitali, oppure di più canali
analogici, oppure di pochi canali di entrambi i tipi ma a un costo
inferiore. Sviluppare una struttura modulare, che supporti potenzialmente un
numero molto ampio di canali di vario genere, è una soluzione decisamente
più flessibile.
- Divertimento. Montare
un BitScope è sicuramente più divertente dei soliti lavori di
assemblaggio: è più complesso e ciò che si ottiene è una cosa che
servirà davvero. Però progettare qualcosa da zero, o comunque conoscere il
progetto fino al più piccolo dettaglio, da' sicuramente un altro grado di
soddisfazione. Chi ha la fortuna di farlo per lavoro sa quanto sia
gratificante vedere i suoi "pargoli" che si fanno onore in giro
per il mondo... ;-)
Premesse
Anche se è superfluo
precisare che nemmeno il mio progetto sarà esente da difetti, faccio comunque
una carrellata delle caratteristiche e limitazioni principali che lo
contraddistingueranno (per quanto io possa attualmente supporre):
- Tempo:
mi duole sottolinearlo così spesso, ma negli ultimi mesi sono stato
parecchio impegnato col lavoro e ho avuto delle difficoltà a sviluppare
diversi miei progetti aperti da sempre. Questa è una situazione destinata a
protrarsi ulteriormente, almeno per qualche mese. Quindi potrebbe capitare
(leggete: capiterà) che passino lunghi periodi vuoti e privi di sviluppi.
Ma presumo che anche voi siate impegnati, quindi non verrete sulla mia home
page esigendo tutti i giorni dei progressi, giusto? ;-)
- Lavoro a più mani.
Queste righe le butto giù anche per attirare l'attenzione di tutti quelli a
cui piacerebbe dare un contributo a questo progetto. Non sono un progettista
di oscilloscopi digitali, posso soltanto fare delle ipotesi sul loro
funzionamento in base a qualche documento tecnico e a ciò che vedo (in
particolare mi baserò molto, specialmente per quanto riguarda l'interfaccia
utente, su uno degli oscilloscopi
che utilizzo quotidianamente). Qualsiasi suggerimento o critica sono
bene accetti; anzi, sono richiesti!
- Hobbisti. Questo
progetto è interamente pensato da hobbista e per gli hobbisti; ciò impone
necessariamente delle restrizioni di carattere tecnico, logistico ed
economico. Le restrizioni economiche e logistiche sono ovvie: gli hobbisti
hanno pochi soldi e scarse possibilità di accesso ai canali di
approvvigionamento dei dispositivi elettronici. Per me sarebbe un po'
oneroso (sia in termini di costi che di tempo perso a gestire il tutto)
sfruttare i canali ai quali posso attingere come professionista per passarvi
ciò che non si trova comunemente in giro; cercherò quindi di avvalermi
sempre di distributori che vendono anche ai privati, come RS,
Distrelec o Farnell.
Inoltre cercherò di evitare i componenti costosi. Il costo e la
reperibilità saranno i fattori limitanti principali del progetto, ma sono
convinto che anche con "quel poco" che si trova facilmente si
possano fare delle ottime cose.
Per quanto riguarda invece le restrizioni sul piano tecnico, temo che
l'hobbista medio (me compreso) disponga di attrezzature insufficienti per
portare avanti col massimo successo un progetto di una certa complessità.
Ultimamente l'elettronica professionale si è evoluta in modo così violento
da lasciare sul campo parecchie vittime; cercherò di tendere la mano a
tutti questi hobbisti riducendo al minimo le operazioni che richiedono
attrezzature costose (per testing, assemblaggio ecc...). Vi avverto comunque
che imporrò due scelte praticamente irrinunciabili: (1) Userò
estensivamente (e preferenzialmente) la tecnologia SMT; (2) Userò circuiti
stampati come minimo in doppia faccia, e con via, isolamenti e spessori di
pista che saranno molto difficili da ottenere con metodi casalinghi.
Quest'ultima è potenzialmente l'unica situazione che potrebbe richiedere un
impegno collettivo: potrà essere necessario farci produrre un certo numero
di circuiti stampati da un'azienda specializzata. Comunque anche in questo
caso non c'è nulla da temere, ormai i prezzi per fare una cosa del genere
sono alla portata di tutti.
- Natura
"open" del progetto. Non sono così idealista da pensare che
l'intero progetto si potrà definire "Open Source" in ogni sua
parte, ma farò ogni sforzo possibile per farlo avvicinare il più possibile
a questo status. In alcuni casi l'utilizzo di alcuni strumenti quotidiani
del mio lavoro, "closed" e a volte costosi (Orcad, Visual C++,
ecc...), sarà quasi irrinunciabile; cercherò in tutti i modi di fornire la
possibilità di accedere o utilizzare il materiale con strumenti gratuiti o
quasi (conversione di tutti gli schemi in PDF o altri formati da stabilire,
strumenti di design gratuiti per le CPLD, compilatori gratuiti per il
firmware, utilizzo di librerie open source per un facile porting del
software sotto altri ambienti o piattaforme, ecc...).
- Prestazioni. Questo
oscilloscopio non sarà un fulmine di guerra. L'ADC scelto è da otto bit,
più che sufficienti per una degna visualizzazione su un monitor o un
display ma modesti per effettuare misurazioni molto accurate. Molte delle
funzioni degli oscilloscopi digitali (zoom, oversampling, memorizzazione di
lunghi intervalli, utilizzo degli ADC dei canali inutilizzati per aumentare
la banda dei canali utilizzati, canali matematici, analisi in frequenza,
ecc...) saranno implementate quando possibile via software, ma trascurate
via hardware: non è che siano complesse da implementare, ma renderebbero
necessaria una potenza di calcolo maggiore (leggi CPU più potenti, CPLD
più capienti, ecc...) e quindi un aumento esponenziale dei costi.
- Modularità. Come già
specificato, il progetto sarà modularizzato il più possibile; sarà
possibile (entro certi limiti, ovviamente) implementare il numero e il tipo
di canali necessari e con le prestazioni necessarie. Questo permetterà di
soddisfare ogni esigenza e ridurre i costi al minimo.
- Linux. Anche se la
piattaforma di sviluppo principale del progetto sarà Windows, cercherò da
subito di utilizzare strumenti che permettano un porting il più semplice
possibile verso Linux. Non ci sono veri e propri ostacoli insormontabili che
rendano difficile tale porting: i driver per i dispositivi FTDI sono
disponibili, ed esistono diverse librerie free per sviluppare interfacce
grafiche portabili fra Linux e Windows, come pure diversi compilatori free
per i microcontrollori più famosi. L'unica cosa che devo verificare è
l'esistenza di strumenti di sviluppo (o almeno compilatori) per le CPLD.
Indice
(prossimo) Principio
di funzionamento di un oscilloscopio
|