Progettato da Terraneo Federico
Introduzione
Questo progetto consente di sperimentare diversi tipi di controllori in anello chiuso con l'obbiettivo di
mantenere costante la temperatura di un transistor. Il progetto è composto da due parti:
• Un circuito, realizzabile su breadboard, basato sul microcontrollore ATmega8535, su cui gira il
software temp_ctrl
• Un programma, wxTempCtrl, che comunica con il microcontrollore tramite una porta seriale (o un
adattatore USB->seriale). Tale programma implementa quattro tipi di regolatori: uno proporzionale,
uno integrale, uno di tipo PI, e un PID. É inoltre presente un simulatore che si attiva automaticamente
se il circuito non è connesso al computer.
Compilare wxTempCtrl da Linux
• Dipendenze
Per compilare wxTempCtrl occorrono i seguenti pacchetti:
gcc g++ libc libstdc++ libwxbase libwxbase­dev libwxgtk libwxgtk­dev wx­headers wx­common
per installarli è possibile usare tool come apt­get.
• Compilazione
Aprire un terminale, spostarsi nella cartella wxTempCtrl e digitare
ln ­s makefile_linux makefile
make
make clean­temp
appena terminata la compilazione è possibile provare il programma digitando
./wxTempCtrl
Non è prevista una procedura di installazione all'interno delle cartelle di sistema (per esempio in
/usr/local o in /opt). Si consiglia di copiare la cartella wxTempCtrl nella home directory ed
eseguire il programma da lì.
NOTA: Il programma wxTempCtrl deve essere eseguito con il working path all'interno del quale sia
presente il file config, altrimenti non riuscirà a caricare i parametri di configurazione. È questo il
motivo per cui il programma restituisce un errore se lanciato facendo doppio clic sull'eseguibile. Per
ovviare a questo inconveniente è possibile procedere in molti:
1) Copiare il file config nella home directory
2) Lanciare wxTempCtrl aprendo un terminale nella cartella dove si trovano l'eseguibile e il file
config e digitando ./wxTempCtrl.
3) Usare il file wxTempCtrl.desktop, che è un file di tipo “Application launcher” da mettere sul
desktop. Tale file va però configurato aprendolo con un editor di testo e editando le righe exec e path in modo da riflettere il percorso dove si trova il file.
Compilare temp_ctrl da Linux
• Dipendenze
Per compilare temp_ctrl occorre installare il cross-compiler per l'architettura AVR:
binutils­avr gcc­avr avr­libc avrdude
per installarle tali pacchetti è possibile usare tool come apt­get.
• Compilazione
Aprire un terminale, spostarsi nella cartella temp_ctrl e digitare
make
• Trasferimento del firmware nel microcontrollore
Per programmare il microcontrollore è necessaria un'apposita interfaccia da connettere alla porta
parallela del computer. Per avere lo schema basta inserire in un motore di ricerca “stk200 schematic”,
dove stk200 è il nome del programmatore.
Supponendo che il microcontrollore sia connesso al programmatore ed alimentato, e supponendo che il
programmatore sia connesso al computer tramite la porta parallela, per programmarlo occorre aprire un
terminale nella cartella temp_ctrl e digitare
sudo chmod ugo+rw /dev/parport0
//Per avere accesso alla porta parallela
make program
Poiché i microcontrollori della Atmel di default utilizzano un oscillatore interno a 1MHz, mentre in
questo progetto occorre usare un quarzo esterno, bisogna riconfigurare i fuses del micro.
Nota: occorre effettuare questa operazione con il microcontrollore connesso al programmatore e con il
quarzo già connesso agli appositi piedini del micro, altrimenti il micro si bloccherà e non sarà possibile
portare a termine l'operazione.
Aprire un terminale e digitare
sudo chmod ugo+rw /dev/parport0
//Per avere accesso alla porta parallela
avrdude ­p m8535 ­c stk200 ­P /dev/parport0 ­t
A questo punto avrdude verrà eseguito in modalità terminale, pronto ad accettare comandi, digitare
write lfuse 0 0xfd
dump lfuse
quit
//Controllare che il valore sia corretto
Test del circuito
Ecco un'esempio di realizzazione. Si noti che il sensore di temperatura LM35 deve essere fissato alla
parte metallica del transistor BUX84 tramite colla o nastro biadesivo sottile.
Connettere il circuito al computer tramite la porta seriale o un adattatore USB->seriale.
Aprire la cartella wxTempCtrl, e editare il file config inserendo il percorso della porta che si sta
effettivamente utilizzando. Per esempio inserire
/dev/ttyUSB0
per un adattatore USB-> seriale, oppure
/dev/ttyS0
per una porta seriale.
Alimentare il circuito, aprire un terminale, spostarsi nella directory wxTempCtrl e digitare
sudo chmod ugo+rw /dev/ttyUSB0 //Per accedere alla porta seriale
./wxTempCtrl
Se tutto funziona correttamente il programma dovrebbe riconoscere il circuito.
Taratura del circuito
• Strumenti necessari
Per effettuare la taratura è necessario un tester in grado di misurare tensioni e correnti.
• Compensazione dell'offset di misura
Facendo riferimento allo schema del circuito, scollegare l'uscita del sensore di temperatura LM35
e collegare il piedino 3 dell'LM358 a massa. Alimentare il circuito e far partire il programma
wxTempCtrl, leggere la temperatura, che dovrebbe essere circa zero. Chiudere il programma, aprire il
file config e riportare tale valore alla riga temp offset. Connettere nuovamente l'uscita
dell'LM35 all'ingresso dell'LM358.
• Calibrazione del misuratore di temperatura
Collegare il tester tra il pin 3 dell'LM358 e massa, impostare il tester per leggere tensioni con una
risoluzione di almeno 1mV. Alimentare il circuito e far partire il programma wxTempCtrl. La
temperatura effettiva si legge dal tester, per esempio se la tensione è di 215mV, la temperatura è di
21.5°C. Ruotare lentamente il trimmer multigiri connesso tra i piedini 1 e 2 dell'LM358 fino a far
coincidere la temperatura che appare sullo schermo con quella attuale.
• Calibrazione del generatore di corrente
Facendo riferimento allo schema del circuito, collegare il tester in serie al collettore del transistor
BUX84, impostato come misuratore di corrente con un fondo scala di almeno 400mA. Alimentare il
circuito e far partire il programma wxTempCtrl. Assicurarsi che sia in modalità manuale e impostare la
potenza al 100%. Ruotare il trimmer multigiri connesso al piedino 5 dell'LM358 in modo da leggere
sul tester una corrente di 150mA
Importare i dati relativi a risposte a scalino in Scilab
Ogni volta che si esegue il programma wxTempCtrl viene creato un file di nome Log.txt nella stessa
cartella del file config, che contiene il log delle temperature, delle potenze e dei set point.
Per importarlo in Scilab è sufficiente editarlo, per eliminare la prima riga
Temp:Set_point:Power
dopodiché si può usare la funzione Scilab fscanfMat.
Nota: se il file Log.txt esiste già, verrà sovrascritto. Occorre quindi rinominare tale file se si intende
utilizzarlo in seguito.
Cambiare i parametri del regolatore/simulatore
Tutti i parametri si trovano nel file config.
Ottenere automaticamente l'accesso alla porta seriale
Ogni volta che si riavvia il computer (o si disconnette e riconnette l'adattatore USB->seriale) occorre
ridigitare
sudo chmod ugo+rw /dev/ttyUSB0
per avere accesso alla porta seriale.
Per ovviare a questo inconveniente è possibile seguire questa procedura:
digitare
ls ­la /dev/ttyUSB0
ottenendo un risultato simile a
crw­rw­­­­ 1 root uucp 188, 0 2008­01­22 19:30 /dev/ttyUSB0
da cui si ottiene il gruppo di appartenenza del device, in questo caso uucp.
Poi digitare
sudo nano /etc/group
e aggiungere il proprio nome utente al gruppo uucp. Come in ogni caso in cui occorre modificare un
file di configurazione, si consiglia di farne un backup prima di editarlo.
Known bugs
• La compensazione dell'offset nella misura della temperatura, causato dell'amplificatore operazionale
funziona solo se l'errore è di segno positivo. Tuttavia, data la natura didattica del circuito, l'offset non
produce un errore rilevante.
• Il codice dell'evento OnPaint (nel file wxTempCtrl.cpp) che si occupa di disegnare il grafico non è
molto ottimizzato. Infatti il grafico viene ridisegnato completamente ogni volta, invece che aggiornare
solo la parte di grafico che è cambiata. Questo causa un leggero aumento dell'utilizzo di cpu.
Scarica

Istruzioni per compilazione e taratura