Sei sulla pagina 1di 5

SOLUZIONE PRIMO PUNTO

 Condizionamento dei segnali provenienti dal trasduttore di


posizione
Il trasduttore di posizione è formato da una coppia emettitore ‐ ricevitore di
luce infrarossa, ha un’uscita in tensione con caratteristica lineare come
descritta:
a. alla distanza massima di 80 cm eroga 0,4 V
b. alla distanza minima di 5 cm eroga 2,3 V

SOLUZIONE SECONDO PUNTO


Il circuito ammette un errore massimo nella valutazione della posizione
dell’oggetto di 2mm, ed un errore massimo nella valutazione della forza
peso di 0,2 N.

Si è scelto di utilizzare una scheda Arduino Uno poiché dispone di un


convertitore Analogico-Digitale integrato avente 6 canali di conversione
analogico-digitale (da A0 ad A5) con una risoluzione di 10 bit.
Un convertitore Analogico-Digitale è un circuito elettronico che converte un
segnale analogico in un segnale digitale. Uno tra i più importanti parametri
di un convertitore Analogico-Digitale è la sua risoluzione (R). Essa è tanto
migliore quanto maggiore è il suo numero di bit. La risoluzione corrisponde
alla minima variazione del segnale di ingresso che il convertitore è in
grado di percepire. Tale variazione è definita come quanto (Q).
Q=V FS /2n

V FS = Valore di Fondo Scala. Esso individua il massimo valore del segnale


in ingresso convertibile in binario.
n = Valore, espresso in bit, della risoluzione del convertitore Analogico-
Digitale.
Avendo fatto le dovute premesse, possiamo introdurre l’Errore di
quantizzazione Emax .
Emax =Q/ 2

Che può anche essere espresso come:


Emax =V FS /2n+1

Da questa formula è facilmente intuibile che l'errore di quantizzazione


diminuisce all'aumentare del numero di n bit del convertitore.
Detto questo, possiamo procedere nel calcolare i valori dell’errore
massimo nella valutazione della posizione dell’oggetto e dell’errore
massimo nella valutazione della forza peso dell’oggetto.

 Errore massimo di posizione


L’errore massimo di posizione è dato da:
D 75 cm
Emax = = 11 =0,036 cm=0,36 mm
2n+1 2

L’errore massimo di posizione corrisponde a 0,36 mm che è al di sotto


della soglia massima di errore di 2mm.

 Errore massimo di forza peso


L’errore massimo di forza peso è dato da:
Fp 80 N
Emax = n+1
= =0,039 N
2 211

L’errore massimo di forza peso corrisponde a 0,039 N che è al di sotto


della soglia massima di errore di 0,2 N.

La notazione usata nelle formule è la seguente:


n è il valore della risoluzione del convertitore Analogico-Digitale integrato nel
microcontrollore Arduino Uno. Tale valore corrisponde a 10 bit.
D è l’intervallo di misurazione della posizione dell’oggetto, cioè 80cm – 5cm,
che corrisponde al Valore di Fondo Scala V FS di 5V.
F p è l’intervallo di misurazione della forza peso dell’oggetto, cioè 80N – 0N,
che corrisponde al Valore di Fondo Scala V FS di 5V.

SOLUZIONE TERZO PUNTO


Il software si deve occupare dell’acquisizione dei dati provenienti dai
trasduttori di forza peso e posizione, ed inoltre, della relativa visualizzazione
di tali dati su un display LCD. Il diagramma di flusso del software è riportato
nella figura che segue.
Il software viene sviluppato tramite Wiring cioè il linguaggio di
programmazione, derivato dal C++, utilizzato per codificare i programmi
installabili sul microcontrollore ATmega328 che equipaggia Arduino uno. Il
microcontrollore segue le istruzioni contenute in uno sketch cioè un
programma scritto in Wiring, e compilato attraverso l’IDE, un ambiente di
sviluppo gratuito operante su pc.
La conversione da digitale ad analogico dei dati acquisiti è necessaria poiché
il convertitore interno di Arduino, operante con una risoluzione a 10 bit, rende
disponibili per la forza peso e la distanza valori digitali compresi tra 0 e 1023.
Per la visualizzazione dei dati di forza peso e distanza, si utilizza un Display
LCD 16x2, cioè avente 2 righe da 16 caratteri l’una.
Il display LCD utilizzato presenta vari PIN tra cui:
 VSS: Il pin da connettere al Ground.
 VDD: Il pin da connettere alla sorgente di voltaggio +5 V.
 VO: Pin in grado di regolare il contrasto del display, spesso usato
tramite l’utilizzo di un potenziometro.
 RS: Pin che permette di controllare su quale area del display LCD si
andrà a scrivere il nuovo carattere.
 R/W: Pin utilizzato per selezionare la modalità di lettura o scrittura.
 E: Pin utilizzato per abilitare il display LCD.
 D0-D7: Pin in grado di leggere e scrivere dati.
 A e K: I Pin che controllano la retroilluminazione.

Per la codifica software del display LCD è necessario utilizzare la libreria


LiquidCrystal, già presente su l’IDE di Arduino, che permette il controllo del
display LCD.
La codifica del segmento di visualizzazione dei dati è riportata di seguito.

#include <LiquidCrystal.h> //Libreria per gestire il Display LCD.

const int rs=12, en=11, d4=4, d5=5, d6=6, d7=7;

LiquidCrystal LCD(rs, en, d4, d5, d6, d7);

void setup() {

LCD.begin(16, 2);

int forzapeso; //dichiarazione della variabile forzapeso.

int distanza; //dichiarazione della variabile distanza.

void loop() {

forzapeso = random(0, 81); //generazione di un numero tra l'intervallo 0, 80.

LCD.setCursor(0,0);

LCD.print("Forza peso:");

LCD.setCursor(12,0);

LCD.print(forzapeso);

LCD.setCursor(14,0);

LCD.print("N.");

distanza = random(5, 76); //generazione di un numero tra l'intervallo 5, 75.

LCD.setCursor(0,1);

LCD.print("Distanza:");

LCD.setCursor(10,1);

LCD.print(distanza);

LCD.setCursor(12,1);

LCD.print("cm.");