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: