3
Introduzione
Cercherò in queste poche righe di introduzione, di dare un’idea quanto più generale
possibile dello scopo di questa tesi, di cosa ho fatto e di cosa si potrebbe realizzare
in un prossimo futuro, per apportare eventuali migliorie, descriverò inoltre in cosa il
codice che ho realizzato è modulare, in cosa è migliorabile ed in cosa, a mio avviso, è
invece solido.
Il lavoro complessivo dell’intero progetto, lo sviluppo delle sorgenti e l’adeguamento
del programma è stato un lavoro impegnativo, ma alla fine vedere il
microcontrollore generare le forme d’onda tanto attese è stato appagante, e fonte
anche di soddisfazione.
Lo scopo ultimo era la realizzazione di un codice sorgente che potesse adattarsi ad
una scheda elettronica già esistente, precedentemente realizzata, per adattarla ad
un eseguibile lato computer, anche questo esistente, ma in forma basilare, e da
modificare in un prossimo futuro per renderlo in grado di comunicare con il nuovo
standard seriale.
Il codice sviluppato per il microcontrollore, ed il linguaggio con cui lo stesso è stato
implementato, presuppone una profonda conoscenza non solo del microcontrollore
stesso, ma anche un minuzioso studio della scheda elettronica e, a causa del
complesso sistema di gestione e multiplex dei vari segnali, ha reso alquanto prolisse
ed articolate alcune procedure.
Come detto poco sopra, data la complessità dello schema elettrico, che deve
asservire simultaneamente numerosi compiti, si è reso necessario progettare in fase
preliminare un multitasking con tempi molto rigorosi che permettesse la ricezione
dei dati dal computer, la loro elaborazione, interpretazione e trasformazione, per
inviare ai motori i comandi corretti, la lettura dei sensori da parte dello stesso
microcontrollore, la formattazione di tali letture in frame trasmissibili ed
interpretabili dal computer, e la seguente ritrasmissione al computer stesso, ove
previsto.
Benché il principio di funzionamento sia facilmente comprensibile, distillare la
sequenza in una sorgente efficiente e rigorosa correttamente servita dal
microcontrollore non è stato semplice; inoltre era d’obbligo, come anticipato poco
sopra realizzare un codice che fosse facilmente comprensibile ad i futuri
sviluppatori, e quindi ogni parte del codice è profusa di commenti, almeno le parti
4
nevralgiche, in cui ho cercato di spiegare con dovizia di particolari le routine più
delicate del multitasking.
5
Capitolo 1
Principi di funzionamento generali
In questo capitolo, descriveremo innanzi tutto come è stata realizzata la macchina, il
circuito stampato che la controlla, e di conseguenza daremo anche una minuziosa
descrizione circa il principio di funzionamento della stessa.
Rimandiamo ai capitoli seguenti per la consultazione dei codici sorgenti i quali,
essendo molto prolissi data la natura di basso livello del linguaggio di
programmazione scelto, richiedono una trattazione a parte.
Per quanto riguarda i codici sorgenti, cercherò di essere quanto più possibile
esaustivo nello spiegare le principali funzioni delle varie routine, rimandando anche
ad alcune note introduttive per quanto riguarda i principi di funzionamento dei
principali moduli impiegati dallo stesso microcontrollore, quali USART, gestione dei
Timer e delle latenze, Configuration Word ecc.
Queste procedure in un microcontrollore sono molto importanti, e la loro
programmazione in linguaggio Assembly richiede una conoscenza capillare non solo
del microcontrollore e di tutti i registri impiegati nelle rispettive operazioni, ma
anche una doviziosa conoscenza delle sequenze di accensione e di avvio.
Queste ultime vengono accuratamente riportate nei rispettivi datasheet dei
componenti, mentre qui le riassumiamo per un più semplice lavoro di
comprensione, ed eventualmente, di modifica in futuro.
Tornando comunque a parlare della macchina, ne daremo qui di seguito una prima
sommaria descrizione nella forma, nelle dimensioni e nello scopo.
Come vedremo da alcune foto che seguiranno, in particolar modo dell’elettronica
che è la parte che ci compete, potremo avere un idea di massima di come è
costruita la macchina e del suo principio di funzionamento, anche se in realtà noi
concentreremo la nostra attenzione quasi esclusivamente sull’elettronica e sul
codice del microcontrollore, e nella loro azione combinata.
6
1.1: Principali cause di alterazione nei reperti metallici trattati
Uno dei principali problemi di questo genere di trattamento, è che, una volta
completato il processo elettrolitico, ovvero di asportazione della patina che ricopre
la moneta, questa è molto più predisposta alla formazione di una nuova patina, e
dunque l’intero processo si intende realizzabile qualora il reperto trattato, venga in
seguito custodito in appositi vani ad atmosfera controllata, ovvero in ambienti nei
quali variabili come luce, temperatura, umidità e concentrazione di inquinanti
nell’aria, siano quanto meglio tenuti sotto controllo.
Negli oggetti metallici che trattiamo in questa forma di restauro, le patine
superficiali sono, per la maggior parte, derivati di ossidi di piombo (PbO, PbO2…) o di
carbonato di piombo; questo genere di sostanze, in realtà, dal punto di vista
meramente chimico non sono pericolose e sono neutralizzate dal reperto stesso,
anche se in realtà sono la causa della degradazione e sono proprio queste sostanze
che vogliamo asportare tramite l’azione del nostro sistema.
Logicamente, oltre agli agenti chimici che compongono la vera patina che ricopre la
moneta, esiste anche un ulteriore strato esterno di polvere, terriccio, e inquinanti
granulosi che potrebbero ulteriormente ostacolare il processo, quindi si presuppone
che prima di esporre la moneta ad un vero trattamento ossi-riduttivo, si proceda ad
un’accurata pulitura della stessa, per rimuovere, almeno per quanto possibile, lo
strato più grossolano di impurità.
7
Capitolo 2:
La macchina riduttrice ed il suo principio di funzionamento
Come già accennato nei capitoli precedenti, lo scopo ultimo di questa tesi, è quello
di sviluppare un codice sorgente adatto ad un particolare tipo di microcontrollore
con lo scopo di rendere funzionante una macchina che deve eseguire restauri di
piccoli reperti in piombo come piccole monete ossidate, cercando di separare la
patina di ossido dalla superficie della moneta, mantenendone il più possibile
l’integrità, automatizzando il più possibile il processo di riduzione della stessa.
La macchina deve inoltre essere in grado di tenere sempre sotto controllo l’intero
processo, o meglio le variabili più importanti in gioco nel processo chimico, tramite
un link con il computer costantemente attivo, il quale monitora e legge in ogni
momento i livelli delle correnti che generano la riduzione ed anche la posizione degli
elettrodi stessi sopra la moneta.
La macchina è formata da una vaschetta trasparente all’interno della quale si versa
una soluzione lattiginosa, nella quale verrà poi immersa completamente la moneta
da restaurare, che rimane fissata alla struttura attraverso un apposito sostegno; al di
sopra di tale vaschetta trasparente, è montato un ponte mobile, azionato da motori
passo passo in modo da permettere agli elettrodi, percorsi dalla corrente elettrica di
raggiungere ogni punto della moneta secondo percorsi generati e gestiti attraverso
un opportuno programma per computer, che, oltre a generare il percorso dei
motori, genera anche i valori delle correnti di anodo e di fuoco sull’elettrodo, tutti
valori selezionabili dall’utente, anche se entro valori prestabiliti, che, nel caso delle
correnti è di massimo 5 mA.
Prima di addentrarci nella minuziosa descrizione prima della scheda e poi del codice
sorgente ad essa associato, vorrei descrivere quali sono i dati che vengono scambiati
tra il computer ed il dispositivo, ed in seguito, generalizzando il discorso chiarire
l’idea su cui è basato l’intero macchinario.
8
2.1 Il link con il computer, formato e tipo di dati scambiati
Il computer invia ciclicamente alla scheda, dei dati e questa li elabora, estraendone
informazioni utili quali le varie correnti da mandare agli elettrodi, o i passi da
mandare ai motori, e, dove necessario, dopo le opportune elaborazioni, ritrasmette
al computer.
Vediamo qui di seguito in particolare la sequenza esatta dei dati inviati dal computer
alla scheda:
1. Tempo di sosta su ogni posizione, che poi alla fine potrebbe essere trascurato,
in quanto è una costante che si può scegliere a priori.
2. Corrente di anodo massima da imporre sul lato verso del reperto.
3. Corrente di fuoco sempre del verso.
4. Corrente massima di anodo del recto.
5. Corrente di fuoco del recto.
6. Corrente minima di anodo del verso.
7. Corrente minima di anodo del recto.
8. Ascissa del punto iniziale.
9. Ordinata del punto iniziale.
10. Spostamento rispetto l’origine.
11. Posizione sul percorso
La descrizione di tutti i valori passati rende abbastanza semplice la comprensione di
massima del funzionamento, ma vediamoli comunque nel dettaglio.
Il tempo di sosta è una costante numerica, che solitamente è di un secondo, tempo
in cui gli elettrodi si devono fermare su ogni punto prima di poter procedere oltre,
seguono poi i valori delle correnti di anodo e di fuoco di recto e verso, e poi le
posizioni di partenza, di arrivo ed il delta che le separa.
La necessità di tanti parametri inerenti la corrente per l’elettrolisi, sono dovuti al
tipo di sistema impiegato per la riduzione, infatti l’elettrodo è formato da un vero e
proprio anodo di platino, dove viene fatta passare la corrente voluta, e da una
corrente di fuoco che viene usata per aumentare o diminuire la selettività su un
particolare punto del percorso.
9
Come anticipato poco fa, questa tesi sarà incentrata quasi esclusivamente
sull’aspetto tecnico, dunque cominciamo con il dare un’occhiata allo schema
elettrico d’insieme, e poi a commentarlo:
Quello appena proposto è lo schema elettrico impiegato dove le varie selezioni
colorate rappresentano i vari compiti che esegue la scheda.
Vediamo di darne una spiegazione più dettagliata:
1. Sezione BLU rappresenta la parte più importante dell’intero sistema: è il
microcontrollore PIC16F726 che mi sono occupato di programmare in questa
tesi.
2. Sezione ARANCIONE rappresenta il multiplexer siglato 74HC138 che in base ai
comandi che riceve dal microcontrollore sui suoi pin di selezione A0, A1 ed A2,
può abilitare la lettura delle correnti, la rotazione dei motori, la scrittura delle
correnti sui DAC, e, in generale, abilitare tutte le varie sezioni del sistema. In
appendice viene riportato il datasheet di tale componente.
10
3. Sezione VERDE SCURO rappresenta lo stadio di ingresso analogico che si
occupa di leggere le correnti che circolano sugli elettrodi, di convertirle in
valori di tensioni, amplificarli e mandarli al convertitore Analogico-Digitale
interno del microcontrollore.
4. Sezione VIOLA rappresenta il semiconduttore siglato 74HC367 che è il buffer
che si occupa di leggere i finecorsa; anche questo, però, deve essere abilitato
dal multiplexer 74HC138 precedentemente discusso.
5. Sezione AZZURRA rappresenta lo stadio di uscita nonché di potenza che
controlla i motori stepper, ma dato il notevole sistema di multiplexing e
multitasking reso necessario da questa implementazione, i vari sistemi di
controllo sono arbitrati da una particolare logica di controllo che verrà
discussa più nel dettaglio in seguito
6. Sezione ROSSA rappresenta lo stadio dei DAC ovvero quella parte dello
schema elettrico che riceve una costante numerica dal microcontrollore
corrispondente al valore di corrente da applicare all’elettrodo; anche questa
sezione è rappresentata da quattro convertitori DAC, gemelli separatamente,
abilitati dal microcontrollore attraverso il multiplexer 74HC138.
7. Sezione VERDE CHIARO rappresenta lo stadio analogico di uscita, ovvero
quella parte dello schema elettrico che prendendo i valori analogici generati
dai convertitori digitali-analogici, li amplifica e li manda agli elettrodi.
Discuteremo tra poco le varie sezioni che compongono la scheda, ma prima
rendiamo una breve panoramica della scheda montata:
11
La prima foto è una panoramica del circuito stampato montato con tutti i
componenti.
Una seconda immagine con il dettaglio della sezione del solo microcontrollore
12
Segue ora un’immagine della scheda elettronica collegata al circuito satellite, che è
quel circuito su cui si innestano i cavi dei motori, dei finecorsa e di tutti i dispositivi
che arrivano alla macchina.
E di seguito un dettaglio del circuito satellite: