In uno stabilimento alimentare è presente una linea di inscatolamento e pesatura automatica del prodotto. I barattoli aperti arrivano su di un nastro trasportatore incorrispondenza del punto di riempimento dove sono poste due elettrovalvole
( le elettrovalvole sono attuatori )
che convogliano contemporaneamente il prodotto prelevato da un serbatoio. La prima elettrovalvola permette di introdurre 1,4 litri al secondo, la seconda elettrovalvola 0,15 litri al secondo. Al di sotto del punto di riempimento è presente una cella di carico che permette di valutare il peso raggiunto dal barattolo durante l’operazione di riempimento. La cella di carico ha una portata massima a fondo scala di 50 N e in corrispondenza di questa forza produce una tensione di uscita differenziale pari a 20 mV se alimentata con 10 VDC . Il sistema deve svolgere le seguenti funzioni: Rilevare l’arrivo del barattolo nel punto di riempimento e fermare il nastro trasportatore.
Per rilevare il punto di arrivo del barattolo possiamo impiegare un sensore di posizione ad ultrasuoni tipo HC-SR04 utilizzato a scuola. E' chiaro che in una situazione reale si puo' pensare di utilizzare dei sensori Laser ben più costosi.
Attivare entrambe le elettrovalvole fino al raggiungimento del peso di 10 N. Bloccare la prima elettrovalvola e lasciare attiva solo la seconda fino al riempimento completo (peso pari a 12 N). Riavviare il nastro trasportatore.
Si fanno le seguenti ipotesi aggiuntive:
Si considera trascurabile la differenza di peso di ciascun litro di alimentare che esce dalle due elettrovalvole
Si ipotizza per la cella di carico una caratteristica lineare con una uscita nulla in assenza di peso
1) Ecco il disegno dello schema a blocchi del sistema di controllo dell’intera apparecchiatura.
Schema a blocchi dell'intero sistema di Acquisizione e Distribuzione dati
Conviene spiegare il comportamento e il significato dei vari blocchi, nella soluzione da consegnare alla commissione d'esame.
2) Come già detto si è scelto come tipo di sensore di posizione da impiegare un sensore ad ultrasuoni, perché abbinato ad Arduino o ad un microcontrollore è estremamente preciso ed economico
Qui il candidato puo' approfondire le caratteristiche del sensore di posizione scelto anche con esempi di uso con Arduino o con Microcontrollori
3) Si deve dimensionare il circuito di condizionamento del segnale proveniente dalla cella di carico. Si puo' usare un amplificatore differenziale
Qui il candidato puo' indicare lo schema elettrico e progettare le resistenze e spiegare come funziona in modo da ottenere in uscita il segnale desiderato
Si possono operare diverse scelte. Considerare o meno la "tara" del barattolo, oppure togliere la "tara" via Software.
Comunque l'amplificazione deve essere circa 1000 per sfruttare al massimo la dinamica di ingresso dell'ADC integrato di Arduino o del PIC.
Si preferisce usare il circuito integrato INA111 e dal datasheet si trova la formula di progetto.
La formula $$A=1+\frac{50000}{R_G} = 1000 $$
permette di ricavare la RG=50 Ω.
4) Si indica l’algoritmo di gestione del segnale proveniente dalla cella di carico, dei segnali di comando delle elettrovalvole e del motore del nastro trasportatore, utilizzando un sistema di controllo a propria scelta.
Ecco il diagramma di flusso che descrive l'algoritmo scelto
Diagramma di Flusso - Flowchart
Si mette qui una porzione di codice per Arduino:
/* Hardware Connections:
* Arduino | HC-SR04
* -------------------
* 5V | VCC
* 9 | Trig
* 8 | Echo
* GND | GND
*/
#include <LiquidCrystal.h>
// Pins
const int TRIG_PIN = 9;
const int ECHO_PIN = 8;
// Anything over 400 cm (23200 us pulse) is "out of range"
const unsigned int MAX_DIST = 23200;
LiquidCrystal lcd(6, 7, 2, 3, 4, 5);
int EV1 = 13;
int EV2 = 12;
int Motore = 11;
int Lettura = 0;
unsigned long t1;
unsigned long t2;
unsigned long pulse_width;
int mm;
float inches;
void setup() {
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("Distanza");
lcd.setCursor(0,1);
lcd.print("mm: ");
pinMode(Motore, OUTPUT);
pinMode(EV1, OUTPUT);
pinMode(EV2, OUTPUT);
// The Trigger pin will tell the sensor to range find
pinMode(TRIG_PIN, OUTPUT);
digitalWrite(TRIG_PIN, LOW);
// We'll use the serial monitor to view the sensor output
Serial.begin(9600);
}
void loop() {
analogWrite(Motore,255);
DistanceCounter();
// Print out results
if ( pulse_width > MAX_DIST ) {
Serial.println("Out of range");
} else {
lcd.setCursor(8,8);
lcd.print(" ");
lcd.setCursor(8,8);
lcd.print(mm);
Serial.print(mm);
Serial.print(" mm");
if (mm <=10) // this part have to be tested in a real prototype
{
analogWrite(Motore,0);
digitalWrite(EV1, HIGH);
digitalWrite(EV2, HIGH);
do
{}
while(analogRead(A1)< 865);
digitalWrite(EV1, LOW);
do
{}
while(analogRead(A1)< 1023);
digitalWrite(EV2, LOW);
}
// Wait at least 60ms before next measurement
delay(60);
}
void DistanceCounter(){
long duration;
// The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
// Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);
// The same pin is used to read the signal from the PING))): a HIGH
// pulse whose duration is the time (in microseconds) from the sending
// of the ping to the reception of its echo off of an object.
pinMode(pingPin, INPUT);
duration = pulseIn(pingPin, HIGH);
mm = duration * 0.345/2;
}
5) La strumentazione più idonea per collaudare il funzionamento del circuito di condizionamento è quella normalmente presente in un laboratorio di elettronica: multimetro, oscilloscopio, analizzatore di spettro.
Qui occorre spiegare come funziona, a grandi linee, il collaudo dell'amplificatore scelto
Soluzione della Seconda Parte.
Si devono risolvere solo due quesiti. Per completezza in questo sito riporto la soluzione a tutti e quattro i quesiti, fermo restando che in una prova d'esame, per evitare discussioni e penalizzazioni solo due dei quesiti devono essere risolti dal candidato.
Quesito n°1
Con riferimento al tema proposto nella prima parte, ipotizzando che sia necessario visualizzare il peso del barattolo su un display a cristalli liquidi, il candidato proponga una soluzione relativa al tipo di collegamento con la scheda di controllo e ne descriva l’algoritmo software per la rappresentazione.
Il collegamento puo' essere fatto tra un PIC (in figura il PIC16F887) oppure Arduino e un display 16x2 da due righe di 16 caratteri. In rete esistono numerose librerie di software preconfezionate che gestiscono la scrittura di caratteri in tali display. E' sufficiente importarle nel progetto ed utilizzare le funzioni già collaudate
Collegamento ad un display 16x2 del microcontrollore standard Hitachi HD44780
Quesito n°2
Con riferimento al tema proposto nella prima parte, avendo la necessità di misurare il peso del barattolo con un errore massimo di 0,2 %, il candidato indichi il tipo di convertitore analogico - digitale da impiegare e determini la relativa risoluzione.
La necessità di misurare il peso del barattolo con un errore massimo dello 0,2% è soddisfatta con un convertitore ADC a 10 bit come quello di Arduino. Con esso, avendo come fondo scala VFS=5V il valore del "quanto" espresso in millivolt è 5/1024 = 4,8mV.
Tale valore va diviso per il fattore di amplificazione del circuito di condizionamento, ossia 1000.
L'ingresso del circuito di condizionamento minimo rilevabile è dunque 4,8μV.
Nel caso del peso di 12N a cui corrispondono 1223,242 grammi la tensione che fornisce la cella di carico supposta lineare sarà 4,8mV.
Lo 0,2% di 12N sono 0,024N a cui corrispondono 2,446 grammi ed una tensione 9,6μV.
Dunque l'errore dello 0,2% è rispettato.
Quesito n°3
Dell’impianto lineare rappresentato in figura, utilizzando l’algebra degli schemi a blocchi, calcolare: la funzione di trasferimento ad anello chiuso, il valore dell’uscita a regime quando in ingresso è applicato un segnale a gradino unitario.
Esame Supplettiva 2016 quesito 3
Dove:
$$ H1 (s)= \frac {1}{s} $$
$$ H2 (s)= \frac {1}{s+5} $$
$$ H3 (s)= \frac {1}{s+8} $$
$$ H4 (s)= 2 $$
Per prima cosa occorre ricavare la funzione di trasferimento FdT ad anello chiuso nel dominio di Laplace utilizzando le regole dell'algebra degli schemi a blocchi. Da essa poi si puo' ricavare l'uscita a regime quando l'ingresso è un gradino unitario utilizzando il teorema del valor finale di Laplace (vedere la pagina in fondo)
Si indica con E(s) nel dominio di Laplace l'uscita del sommatore più interno, con I(s) il suo ingresso, con R(s) l'uscita di H3(s).
Pertanto
$$ E (s)= I (s) + R (s) $$
$$ R (s)=\frac {1}{s+8} Y(s) $$
$$ E (s)= I (s) + \frac {1}{s+8} Y(s) $$
$$ Y (s)=\frac {1}{s+5} [I (s) + \frac {1}{s+8} Y(s)] $$
$$ Y (s)=\frac {1}{s+5} I (s) + \frac {1}{(s+5)(s+8)} Y(s)] $$
$$ Y (s) - \frac {1}{(s+5)(s+8)} Y(s)=\frac {1}{s+5} I (s) $$
$$ Y (s) [1 - \frac {1}{(s+5)(s+8)} ] =\frac {1}{s+5} I (s) $$
Chiamo G2(s) la funzione di trasferimento ad anello chiuso più interna della reazione "positiva"
Per la verifica finale ci si puo' servire di Multisim con uno schema tipo quello in figura:
Uso di Multisim per la verifica del Diagramma Di Bode
I componenti da usare sono:
AC_VOLTAGE
TRANSFER_FUNCTION_BLOCK
GROUND
e come strumento virtuale usare BODE_PLOTTER.
E' conveniente consultare il sito Wolfram Alpha per vedere il diagramma di Bode. Nel testo si chiede quello asintotico ed approssimato e non quello reale che viene disegnato con Multisim o Wolfram Alpha