{jcomments on}In questa occasione Scratch viene usato per realzzare la simulazione del funzionamento di un convertitore Analogico Digitale (o ADC).

Il risultato è disponibile in questo video che ne illustra il funzionamento. Una scheda di supporto al video è disponibile qui.

Il cuore della simulazione è costituito dalla procedura svolta dallo sprite "convertitore"

 

Convertitore A-D

converterADC converti 

Il convertitore A-D funziona così:

 

a) viene azzerato il "numero" che sarà utilizzato per memorizzare il livello raggiunto dalla grandezza in ingresso denominata "misura" fornita dalla sonda

b) viene posto il valore della prima "soglia" da usare per digitalizzare la "misura"

c) si confronta la grandezza in ingresso, detta "misura" con la "soglia": se "misura" > "soglia" allora "numero" aumenta di uno

d) viene innalzata la soglia e si ripete la verifica del punto c) fino al completamento di tutte le soglie esistenti.

Al termine del ciclo si ha un numero che rappresenta il livello corrispondente alla grandezza "misura" digitalizzata. 

 

La base logica del funzionamento è la seguente.

soglie livelli

Quantizzazione

Una grandezza continua (nota 1) denominata qui "misura", disegnata in blu nella figura, assume valori che variano tra zero ed un valore considerato massimo per il convertitore, che qui è fissato a 100.

Lo script del convertitore assegna il livello in base ad una comparazione fra la "misura" e le soglie.

 

 

Se "misura" è inferiore a "soglia", il numero di livello è quello del livello sotto la soglia,

se "misura" è superiore a "soglia", il numero di livello è quello del livello sopra la soglia.

Quando la curva atttraversa la soglia, si crea un innalzamento o abbassamento repentino della curva (questa è l'alzata del gradino di una scala) dovuto al passaggio di livello; per il resto il livello rimane costante (questa è la pedata del gradino di una scala) fino ad un altro superamento di soglia.

 

Campionamento

controllorePer eseguire la conversione A-D occorre bloccare la "misura" in un dato istante e mantenerla (nota 2) fino a quando la conversione non sia stata completata. Poichè occorre attivare più strumenti in ordine logico, il compito è assunto dal controllore.

Lo sprite controllore coordina in questo modo:

controller main

 

controller chiedia) all'inizio (avvia la procedura "chiedi")

- chiede all'utente di di inserire i parametri di risoluzione (che diventa la variabile numBit) e intervallo di campionamento (che diventa la variabile periodo

- calcola numIntervalli che è il numero di intervalli da utilizzare

- quindi comanda l'inizio per mettere in mostra tutti gli strumenti e aspetta 3 secondi, nel frattempo fa cancellare tutti i valori conservati nelle due liste record e digit

 

 

 

b) calcola la variabile intervallo (l'ampiezza dell'intervallo o se si vuole l'altezza minima dello scalino) fissato nella gamma 0-100, azzera le variabili tempo e x

c) manda a tutti il messaggio "pronto" per accendere gli strumenti ed inizializzare i parametri

d) ripete per 440 volte (tanti sono i punti scelti da disegnare sullo stage che ne ammette 480 in tutto) ed in successione i comandi per fare eseguire:

- la conversione

- il disegno della curva digitalizzata

- il disegno della curva in ingresso

- la registrazione del valore analogico nella tabella dei record e del livello assegnato nella tabella dei digit (in queto modo sono tutti recuperabili anche alla fine del ciclo)

quindi

- incrementa il tempo di una misura pari al periodo e la variabile x di 1

-si pone in attesa per un tempo pari al perodo (nota 1) prima di comandare la nuova conversione

  

Gli altri strumenti utilizzati nella simulazione sono gli stessi che sono serviti per la simulazione del data logger a cui rimando per una loro conoscenza

- uno sprite per il generatore di segnali che produce un segnale a rappresentare il mondo fisico (che qui è solo simulato ma con S4A può essere reale)

- una sonda per raccogliere e trattare il segnale e fornire la grandezza denominata "misura"

- due sprites per i due oscillografi o plotter che servono a disegnare sullo stage la curva analogica in ingresso (blu) e la curva digitale in uscita (rossa)

- uno sprite per disegnre gli assi ed uno per disegnare le soglie

 

Nella figura si vede il risultato per la conversione di una grandezza analogica costituita (in blu) con risoluzione a 2 bit (4 livelli, 3 intervalli).


quarta arm 2bit s

notare:

- una grandezza in ingresso (in blu) che varia con continuità 

- l'approssimazione a scalini della stessa grandezza digitalizzata (in rosso) (nota 3)

- la presenza di quattro livelli della conversione a due bit e le corrispondenti tre soglie a metà di ciascuno dei tre intervalli

quando la grandezza in ingresso, su denominata "misura", supera il valore massimo il convertitore satura e non fa più vedere elteriori variazioni (è piatto in alto)

In questo esempio il generatore di segnali ha riprodotto la funzione armonica composta dal valore assoluto di una sinusoide fondamentale più una quarta armonica.

quarta arm 03

 

Per approfondire le basi teoriche vai a questo link.

 

note

nota 1: si dovrebbe usare un altro metodo per scandire il tempo, qui si tratta di un ritardo che in realtà si aggiunge a tutti i ritardi computazionali delle istruzioni da eseguire nel ciclo. Qui lo scopo è didattico e non vale la pena complicare ulteriormente lo script.

nota 2: in inglese il nome del circuito che fa detto lavoro si chiama "sample and hold", campiona e mantieni

nota 3: qui la durata della conversione è trascurabile rispetto alla scala dei tempi della grandezza in ingresso per cui lo scatto di livello avviene proprio nel momento del passaggio di soglia. Nella realtà c'è sempre un ritardo del passaggio di livello a causa del ritardo dovuto ai tempi di converisone.