Sinonimo di incubatrice = cova uova -...

38
Progettazione e realizzazione di un’incubatrice programmabile per volatili INDICE  L’idea 1.1  Il problema 1.2  Cenni sull’incubazione 1.3  Comprarla o auto costruirla?   Sistema di acquisizione dati (S.A.D) 2.1  Trasduttore 2.2  Il circuito di condizionamento 2.3  ADC: Analog to Digital Converter 2.4  Il dispositivo di acquisizione ed elaborazione dati 2.5  DAC: Digital to Analog Converter 2.6  L’Attuatore  Autocostruzione: il primo prototipo  Autocostruzione: il progetto finale 4.1  Obiettivi del progetto 4.2  Analisi degli obiettivi e idee risolutive di massima 4.3  Possibili metodi risolutivi 4.3.1  Soluzione per via analogica 4.3.1.1  Il trigger di Schmitt 4.3.2  Soluzione per via digitale  Soluzione scelta: quella digitale  Realizzazione del progetto 6.1  Strumenti e componenti utilizzati 6.2  Schema elettrico 6.3 Tabella dei componenti 6.4  Fasi svolte 6.4.1  Il disegno del circuito 6.4.2  Il software 6.4.3  Il dimensionamento delle piste 6.4.4  Disegno del PCB 6.4.5  Realizzazione della scheda stampata 6.4.5.1  La fotoincisione 6.4.5.2  Lo Sviluppo 6.4.5.3  Incisione chimica 6.4.5.4  Foratura delle piazzole e saldatura dei componenti  Conclusioni 7.1  Conclusioni finali 7.2  Costi di realizzazione 7.3  Software utilizzati  Zoom 8.1  Il girauova 8.2  Gli alimentatori 8.3  Le ventole 8.4  La resistenza 8.5  Architettura del microcontrollore PIC16F876A 8.5.1 Porte di I/O 8.5.2  Memoria dati (RAM) e memoria programmi 8.5.3  Registri di memoria 8.6  Programma per il PIC 16F876A 8.7  Approfondimento sugli ADC Pagina 1 di 38 Francesco Cencioni   5°B Informatica   A.S. 2009/2010

Transcript of Sinonimo di incubatrice = cova uova -...

Progettazione e realizzazione di un’incubatrice programmabile per volatili

INDICE1  L’idea1.1  Il problema1.2  Cenni sull’incubazione1.3  Comprarla o auto costruirla?2   Sistema di acquisizione dati (S.A.D)2.1  Trasduttore2.2  Il circuito di condizionamento2.3  ADC: Analog to Digital Converter2.4  Il dispositivo di acquisizione ed elaborazione dati2.5  DAC: Digital to Analog Converter2.6  L’Attuatore3  Autocostruzione: il primo prototipo4  Autocostruzione: il progetto finale4.1  Obiettivi del progetto4.2  Analisi degli obiettivi e idee risolutive di massima4.3  Possibili metodi risolutivi4.3.1  Soluzione per via analogica4.3.1.1  Il trigger di Schmitt4.3.2  Soluzione per via digitale5  Soluzione scelta: quella digitale6  Realizzazione del progetto6.1  Strumenti e componenti utilizzati6.2  Schema elettrico6.3 Tabella dei componenti6.4  Fasi svolte6.4.1  Il disegno del circuito6.4.2  Il software6.4.3  Il dimensionamento delle piste6.4.4  Disegno del PCB6.4.5  Realizzazione della scheda stampata6.4.5.1  La fotoincisione6.4.5.2  Lo Sviluppo6.4.5.3  Incisione chimica6.4.5.4  Foratura delle piazzole e saldatura dei componenti7  Conclusioni7.1  Conclusioni finali7.2  Costi di realizzazione7.3  Software utilizzati8  Zoom8.1  Il girauova8.2  Gli alimentatori8.3  Le ventole8.4  La resistenza8.5  Architettura del microcontrollore PIC16F876A8.5.1 Porte di I/O8.5.2  Memoria dati (RAM) e memoria programmi8.5.3  Registri di memoria8.6  Programma per il PIC 16F876A8.7  Approfondimento sugli ADC

Pagina 1 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

In questo testo descriverò   i  procedimenti  svolti  per  la realizzazione dell’incubatrice illustrata di seguito.

Pagina 2 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

1  L’IDEA

1.1  IL PROBLEMA

L’idea di realizzare un’incubatrice è  nata  dal problema pratico rappresentato  dal fatto  che,  non potendo allevare un gallo per motivi di vicinato (fa troppi schiamazzi), le mie galline non fanno mai la chioccia. In quella condizione ero costretto ad allevare esclusivamente galline ovaiole. Grazie all’incubatrice da me realizzata potrò finalmente far nascere tutti i pulcini di cui ho bisogno per ottenere un produzione propria anche di polli da carne.

1.2  INCUBAZIONE

Nell’uovo deposto bisogna distinguere:­ la cellula uovo, o tuorlo, o rosso d’uovo;­ l’albume o bianco d’uovo;­ il guscio, che comprende anche le membrane testacee.

All’interno della cellula uovo si trova il disco germinativo, che nell’uovo fecondato prende il nome 

di disco blastula o blastoderma, ed  appare come un dischetto di colore grigio chiaro del diametro di circa 4 mm.Per quanto riguarda le uova di gallina,   l’incubazione dura ventuno giorni (le uova covate dalla gallina­chioccia possono schiudersi uno o due giorni prima o dopo a seconda della temperatura nel periodo di cova).L’incubatrice  deve  essere  munita  di  vaschetta  per   l’acqua  e  di  un   sistema  di  ventilazione  che servono a  fornire   l’umidità  e   l’ossigeno richiesto  dalle  uova e  a   rimuovere   la  CO2 e   il  calore prodotto dalle uova stesse.L’umidità  deve rimanere costante per tutto il periodo di incubazione (circa il 60%), tranne negli ultimi   tre   giorni   quando   deve   essere   portata   al   75%,   altrimenti   possono   nascere   pulcini   con malformazioni (ad es. zampe divaricate).Dopo sette – otto giorni dall’inizio dell’incubazione si può già vedere se la cellula si è sviluppata. Questo è possibile grazie ad un piccolo strumento detto sperauova che emettendo un fascio di luce 

concentrata sull’uovo,  permette di vedere l’embrione.Dal diciottesimo giorno le uova non vanno più girate, in quanto il pulcino si è già sviluppato e riesce  da solo  a  posizionarsi  con   il  becco   rivolto  verso  l’alto   in  modo da  rompere  il  guscio e nascere.I  pulcini  vanno  tenuti  ancora per circa 24 ore nell’incubatrice  in modo da ripararli  dal  freddo, affinché     le   piume   si   asciughino   completamente;   dopo   si   possono   togliere   e   cominciare   ad alimentarli con gli appositi mangimi.

Pagina 3 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

1.3  COMPRARLA O AUTOCOSTRUIRLA?

Convinto della necessità di un’incubatrice, mi sono trovato davanti ad un bivio: comprarla oppure autocostruirla?  Mi   sono  quindi   informato  presso  un  consorzio  agrario   e   su   internet   sul  valore commerciale di una cova uova industriale. Ho potuto constatare che sono necessari circa 150/200€ per un’incubatrice con capacità  di 20 uova. Con il girauova automatico si arriva a 250/300€.  A questi prezzi, seppur elevati, si possono comprare solo i modelli base.Non   essendo   rimasto   entusiasta   dei   modelli   commerciali,   mi   sono   indirizzato   verso l’autocostruzione.

2 SISTEMA DI ACQUISIZIONE DATI (SAD)

Per   acquisire  dei  dati  è   necessari  oche   le  grandezze   fisiche  vengano   trasformate   in  grandezze elettroniche.   Un   sistema   di   acquisizione   dati   lega   la   variazione   della   grandezza   fisica   con   la variazione di una grandezza elettrica.2.1)  Per effettuare questa conversione è necessario un trasduttore. Esistono vari tipi di trasduttori, 

che   si   dividono   in   primari   (temperatura,   fotoelettrici,   estensi   metrici,   magnetici)   e   secondari (velocità,   forza,   accelerazione,   pressione,   posizione).   Il   trasduttore   di   temperatura   utilizzato   è l’LM35. Questa sonda termica ha una caratteristica lineare (la relazione che lega la grandezza fisica a quella  elettrica è  di  proporzionalità  diretta).  Esistono anche sensori  con una curva di risposta esponenziale o logaritmica. 2.2)    Il  circuito di  condizionamento  è  un circuito  analogico  che ha  la   funzione di  adattare   il 

segnale informativo alle caratteristiche del sistema, come convertire il segnale elettrico contente l’informazione di una temperatura in gradi Kelvin in Centigradi, oppure, espandere all’interno del range misurabile il segnale informativo. Con la larga diffusione di sistemi digitali molto potenti, in 

Pagina 4 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

grado anche di eseguire la FFT (Fast Fourier Transform), il circuito di condizionamento non viene più utilizzato per eseguire le varie trasformazioni, che vengono effettuate via software.2.3)  ADC (Analog to Digital Converter = convertitore da analogico a digitale): è un dispositivo in 

grado   di   convertire   una   grandezza   analogica   (tensione)   in   una   digitale,   espressa   tramite   una combinazione binaria. Il numero dei bit con la quale esegue la conversione dipende dal convertitore. Ogni ADC per funzionare necessita di una tensione di riferimento con la quale confrontare quella da convertire. La minima tensione in ingresso rilevabile è detta Quanto. Si ricava quindi la formula:

Q=V FS

2n

Dove n è il numero di bit con cui opera il convertitore e VFS è la tensione di fondo scala (la tensione di riferimento).La   conversione   consiste   nel   confrontare   quante   volte   il   quanto   è   contenuto   nel   segnale   da convertire. Quindi il risultato della conversione R è dato da:

R=ViQ

L’   errore   di   quantizzazione     è   definito   come   l’   errore   massimo   che   si   può   compiere   nellaε  conversione A/D, ed è dato da:

=εQ2

Per un approfondimento riguardo gli ADC rimando alla sezione “ZOOM” punto 8.72.4)  Il dispositivo di acquisizione ed elaborazione dati è un apparecchio che, ricevuto come input 

il   segnale   di   un   ADC,   lo   elabora   e   in   base   ai   risultati   ottenuti   è   in   grado   di   prendere   delle “decisioni”, che serviranno a modificare la grandezza fisica e riportarla entro i valori desiderati. Spesso  è   un  Microcontrollore.  Quest’ultimo  può   inglobare   le   funzioni   di   condizionamento  del segnale, di ADC e di DAC. 2.5)  DAC: Il segnale elaborato dal microcontrollore giunge al DAC (Digital ti Analog Converter), 

che contrariamente a quanto faceva l’ADC, trasforma un segnale digitale in uno analogico.2.6)  L'attuatore è un dispositivo in grado di effettuare un passaggio di energia per poter agire sulla 

grandezza   fisica  (scaldare   l'ambiente).  La  resistenza  può   essere  considerata  un'attuatore  perchè, ricevuta un'energia elettrica, la trasforma in energia termica. Anche le ventole sono degli attuatori.

3  AUTOCOSTRUZIONE: IL PRIMO PROTOTIPO

Un primo prototipo di  incubatrice  risale  all’anno passato (marzo 2009).  Come involucro avevo utilizzato delle tavole di truciolato ricavate da un mobilino riciclato. La parte elettrica era molto approssimativa. Per controllare la temperatura avevo utilizzato un termostato da caldaia, collegato ad  una  comunissima   lampadina  ad   incandescenza  da  60W che   forniva  calore.  La  ventilazione avveniva mediante una ventola da PC collegata direttamente ad un alimentatore con quest’ultimo collegato ad una presa di corrente con timer. Avevo riposto le uova all’interno di un cassetto di legno, che ruotava su un asse che proseguiva all’esterno dell’incubatrice. Il cassetto veniva perciò 

Pagina 5 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

ruotato manualmente per  3 volte al giorno dall’esterno dell’incubatrice. I risultati furono deludenti. Di 20 uova se ne schiusero solo 7. Sfortunatamente dei 7 pulcini nati solo uno riuscì a sopravvivere e   a  crescere   sano.  Gli   altri   6  avevano   le   zampe   troppo  fragili   e,  non  riuscendo a   camminare, morirono dopo pochi giorni.Avevo seguito tutto il ciclo dell’incubazione (avevo addirittura portato l’incubatrice in camera mia). Mediante   una   sonda   igrometrica   e   una   di   temperatura   controllavo   le   condizioni   ambientali all’interno   del   dispositivo.   L’umidità   era   sempre   rimasta   costante   (intorno   al   60%),   come   da programma. Artefice della sfortunata fine fu il termostato, che era troppo poco sensibile e causava sbalzi di temperatura di anche 5°C. Già in partenza avevo dei dubbi sull’applicabilità di quel tipo di termostato, ma non ero riuscito a trovarne di migliori in commercio (per sensibilità dell’ordine di 0.5/1°C si doveva spendere intorno agli 80€). Capii che per costruire qualcosa di serio e funzionante non potevo utilizzare strumenti “arrangiati” perché la precisione doveva essere molta.Da qui la necessità di ricominciare tutto da capo, con l’intenzione di realizzare tutto, dalla “scatola” al circuito di condizionamento su misura.

4  AUTOCOSTRUZIONE: IL PROGETTO FINALE

4.1  OBIETTIVI

Per realizzare un progetto abbastanza complesso, è indispensabile effettuare un’ottima analisi prima di ogni altra cosa.Ho deciso di dividere il progetto in più parti, in modo tale da poterne affrontare solo una alla volta così da isolare eventuali problemi.Per prima cosa è stato necessario stilare una lista degli obiettivi da raggiungere, in modo tale da poter scegliere, fra i vari metodi risolutivi, quello migliore.L’incubatrice doveva infatti soddisfare queste specifiche:

1. Ospitare almeno 15/20 uova per ogni ciclo di incubazione;2. Ridurre al minimo gli sprechi di energia;3. Garantire una buona ventilazione interna per favorire la distribuzione del calore;4. Garantire   un   buon   ricambio   dell’aria   con   l’esterno   (non   dimentichiamoci   che   le   uova 

respirano e come ogni essere vivente hanno bisogno di aria ricca di ossigeno);5. Mantenere l’umidità costante;6. La temperatura deve essere stabile (può scostarsi dalla temperatura ideale di max ±0,75°C) e 

regolabile;7. È preferibile un girauova automatico per ridurre la manutenzione durante l’incubazione.8. Sarebbe utile predisporre il circuito per l’utilizzo di un display LCD che visualizzi varie 

informazioni (temperatura istantanea, umidità, temperatura massima raggiunta…..)

Pagina 6 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

4.2  ANALISI

Per  i  punti  1 e 2  la  soluzione  ideale  non poteva che essere  l’utilizzo di un vecchio frigorifero (rigorosamente recuperato da una stazione ecologica) di dimensioni 35x45x53. Un frigorifero offre infatti un’ottima coibentazione.La ventilazione (punto 3) verrà garantita da due ventole da PC, che assorbono poca corrente (circa 0.12A) e sono alimentabili a 12VDC.Per   il   ricambio   dell’aria   (punto   4)   dovrebbe   essere   sufficiente   praticare   2/3   fori   di   circa   un centimetro di diametro nel frigorifero. Se ciò non dovesse bastare, sarà necessario aprire ogni 2/3 giorni   lo   sportello  dell’incubatrice.  Un’altra   soluzione,   sebbene  più   complessa,  potrebbe  essere quella di forzare lo scambio dell’aria con l’esterno mediante l’utilizzo di ventole molto piccole (es. quelle da processore) applicate direttamente sulla parete dell’incubatrice in prossimità dei fori.Per mantenere l’umidità  costante  (le  uova di gallina necessitano di un’umidità  di  circa il  65%) (punto 5) è sufficiente tenere una vaschetta piena d’acqua sul fondo dell’incubatrice (variando la dimensione della vaschetta e la mole d’acqua in modo empirico fino a raggiungere la condizione desiderata).La questione del controllo della temperatura  (punto 6) è sicuramente quella da considerare con la maggiore attenzione. Il sistema di acquisizione dati deve prevenire i bruschi sbalzi di temperatura. Par fare ciò, sarà sufficiente utilizzare più sonde di temperatura (userò 4 trasduttori di temperatura LM35 con sensibilità a 25°C di ±0,5°C con variazioni di 10mV/°C). I trasduttori di temperatura verranno situati nei punti critici (accanto alla resistenza, in alto, in basso, vicino alle uova…). Per quanto riguarda l’elemento riscaldante, verrà utilizzata la resistenza a filo ricavata da un vecchio un copri sedile riscaldante da auto, che ha una potenza di 60W. La potenza non è molta, ci vorrà quindi tanto tempo per arrivare a regime. Il vantaggio sarà però quello di poterla controllare più facilmente (si prevengono meglio gli sbalzi di temperatura).Per quanto riguarda il girauova (punto 7), la soluzione più immediata sarebbe quella di utilizzare un semplicissimo  ripiano  su  cui  posizionare   le  uova per  poi  girarle  manualmente  una  ad  una  per almeno tre volte al giorno. La realizzazione di un modello motorizzato sarebbe da preferirsi per aumentare  la  praticità  d’uso (ma non è  affatto   facile   realizzarne  uno automatizzato).  Un giusto compromesso  potrebbe  essere  quello  di   costruire  un  modello   a   in   cui   le  uova  vengono  girate manualmente ma tutte insieme, magari dall’esterno, senza dover aprire lo sportello dell’incubatrice.Esistono vari tipi di display LCD (punto 8). In prima analisi di dividono in Display a segmenti e Display grafici.  Dal momento che devo rappresentare solo dei caratteri,  è   intelligente orientarsi verso un Display a segmenti. Un modello 4x20 (20 caratteri per ognuna delle 4 righe) permetterà di visualizzare molte informazioni utili.

Pagina 7 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

4.3  POSSIBILI SOLUZIONI

Rimanendo in un contesto generale, il progetto può essere realizzato per via analogica o digitale.

4.3.1 SOLUZIONE ANALOGICA

Utilizzare   componenti   analogici   ha   il   grande   vantaggio   di   semplificare   notevolmente   la progettazione   e   l’implementazione   del   circuito   elettrico.   Per   la   gestione   della   temperatura     è sufficiente   fare   la   media   delle   tensioni   di   uscita   dei   sensori   di   temperatura   utilizzando   un amplificatore operazionale TL081 o TL082 in configurazione non invertente o invertente + buffer. La temperatura di utilizzo è sicuramente compresa fra 10 e 50 gradi centigradi.  L’amplificatore permette di rapportare l’uscita dei sensori in nel dato range di temperatura in modo tale da ottenere un segnale di (0;5)VDC da comparare con le due tensioni di soglia di un comparatore a finestra (= a doppia soglia). Per esempio sarebbe possibile utilizzare un Trigger di Schmitt [figura in basso]. Con due   trimmer   si   agisce  sulle   tensioni  di   soglia  per   regolare  così   le   temperature   alle  quale accendere/spegnere la resistenza (ovviamente verrà utilizzata un’interfaccia di potenza=relè).Con un amplificatore in configurazione differenziale si può trovare la differenza fra la tensione di uscita della sonda situata più in alto (dove si presume ci sarà più calore) con quella della sonda situata più in basso (dove la temperatura sarà minore). Il risultato può essere confrontato con una tensione di riferimento mediante un comparatore a singola soglia. Quando la differenza fra le due suddette sonde supera il valore massimo stabilito, le ventole si accenderanno.Il problema di questo tipo di circuito è quello di non poter gestire il motore per il girauova, che dovrebbe venire azionato ogni un certo intervallo di tempo. Il tempo non può essere contato per vie analogiche (si parla di ore). Il girauova dovrebbe quindi essere forzatamente manuale.Per lo stesso motivo del girauova, lo scambio d’aria con l’esterno non potrà essere forzato con le ventole da processore. Non sarei in grado di gestire un Display LCD.

Pagina 8 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

4.3.1.1  Trigger di Schmitt

Riassumendo, i vantaggi della soluzione analogica sono:• Economico• Progetto relativamente semplice da realizzare

Gli svantaggi sono:• Alcuni degli obiettivi non possono essere implementati, o sarebbe comunque molto difficile 

farlo (ventole per il ricambio dell’aria, girauova automatico);• Il Display LCD non potrà essere installato• È poco preciso regolare le tensioni di soglia analogicamente con i trimmer (una volta saldati 

sulla   scheda   risulterà   difficoltoso   misurare   il   loro   valore   ed   ottenere   una   proiezione attendibile della temperatura);

• La regolazione delle tensioni di soglia con i trimmer sarebbe anche poco pratica qualora si volesse cambiare la specie da incubare (galline, faraone, fagiani...)

• Difficoltà nell’apportare modifiche al sistema

Pagina 9 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

4.3.2  Soluzione digitale 

L’utilizzo   di   un   microcontrollore   della   famiglia   PIC   permette   di   perfezionare   il   modo   in   cui l’attuatore (la resistenza, le ventole) agisce sulla grandezza fisica. La gestione del microcontrollore richiede tuttavia una certa esperienza nel campo della programmazione. Un microcontrollore è un dispositivo  elettronico   integrato  su un singolo  chip.  È  dotato  di  un centro  di  elaborazione  dati (CPU), una memoria di programma flash, una memoria dati (per l’esecuzione=ram), e di un numero variabile di PIN che fungono da porte di I/O programmabili. L’utilizzo di un PIC permette di gestire, oltre alla resistenza e alle ventole,  anche un eventuale girauova. L’incubatrice potrà ospitare qualunque tipo di uovo, poiché la temperatura di utilizzo, la frequenza   di   accensione   delle   ventole   e   del   girauova   saranno   gestite   direttamente   dal microcontrollore. Questi parametri potranno essere modificati via software. Anche il taraggio della cova uova potrà avvenire con maggiore cura, poiché le regolazioni vengono fatte via software e non tramite i trimmer.Vantaggi:

• Possibilità di soddisfare tutti gli obiettivi preposti• Facilità nel modificare la temperatura di utilizzo• Precisione nelle regolazioni• Possibilità   di   apportare   modifiche   al   programma   in   modo   tale   da   correggere   eventuali 

problemi non previsti• Possibilità di visualizzare la temperatura su un Display LCD

Svantaggi:• Costo più elevato• Necessità di conoscenze anche in ambito informatico (nel mio caso non è un problema).

5  SOLUZIONE SCELTA: DIGITALE

Ho deciso di affidare la gestione del mio sistema di acquisizione dati ad un microcontrollore PIC.Il PIC scelto è della famiglia 16F ed in particolare è il modello 16F876A. Il PIC da me scelto ha 28 pin. Le sue 22 porte di I/O permettono una  completa versatilità.È molto utile la presenza di 5 porte in grado da rilevare in ingresso segnali analogici (fungono da ADC). Grazie a questa funzione sarà sufficiente collegare ognuna delle ad una porta ADC del PIC (ovvero alle PortA). Il PIC rileverà la tensione del segnale emesso dalle sonde di temperatura e la trasformerà in un segnale digitale utilizzabile dal microcontrollore. In pratica la tensione in ingresso su ogni porta ADC verrà trasformata in un numero fra 0 e 255 (nel caso di un convertitore a 8bit). Come ho già detto, è obbligatorio utilizzare le PortA del PIC per poter accedere alla funzione di ADC.L’elemento  riscaldante verrà  pilotato da una porta  del  PIC attraverso un’interfaccia  di potenza. Quest’ultima servirà a proteggere il microcontrollore da correnti troppo elevate.

Pagina 10 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

Il display LCD diventa facilmente gestibile. Se pilotato a 4bit, il display richiede che gli vengano dedicate 7 porte di I/O del PIC (4 porte per i bus dati + Enable + R/W + RS). La ventilazione interna verrà garantita da due ventole. Entrambe verranno azionate quando la porta del PIC alla quale sono collegate attraverso un’interfaccia di potenza (Mosfet IRF540) passerà allo stato logico alto (5V).Per   le  eventuali  ventole  adibite  al   ricambio   forzato  dell’aria  vale   lo   stesso  discorso  per  quelle adibite alla ventilazione.La questione del girauova è più complicata, soprattutto sotto il punto di vista meccanico. Dal punto di vista elettronico, il motore del girauova verrà controllato da una porta del PIC attraverso un relè. Per approfondimenti dal punto di vista meccanico rimando a zoom.

Sarà necessario un alimentatore molto potente, dal momento che la resistenza assorbe 5A (60W a 12V). Verrà utilizzato un alimentatore da PC.

Pagina 11 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

6  REALIZZAZIONE DEL PROGETTO

6.1  STRUMENTI E COMPONENTI UTILIZZATI

Strumenti/Dispositivi Casa Costruttrice

Modello

Alimentatore stabilizzato da computerAlimentatore +15VAC S­tech ATX 12V P4 SWITCHING 

POWER SUPPLYDMM (Digital Multi Meter) METRIX MX45Una scheda PCB // Double layerUn Saldatore a stagnoTrapano a colonna per forare il PCB // //Cavi di collegamento // Diametro 0,75cm e 2,50 cm 

e cavi flatBromografo // Singola facciaSoda caustica diluita al 7% Cloruro ferrico

Componenti utilizzati

Quarzo 4MhzStabilizzatore tensione LM7805CTMicrocontrollore PIC 16f876ADisplay LCD 4X20 segmenti4 x Transduttori di temperatura LM35DZ2 X Mosfet IRF540Relays 12V 16ARelays 12V 5ADue condensatori ceramici da 22 pFUn condensatore elettrolitico da 470 nFUn condensatore elettrolitico da 220nFun trimmer da 100 K  Ω  Electron 1/4W 10% 

3 X diodo 1N40072 x Diodo led2 resistenze da 470 Ω2 resistenze da 3,9KΩ5 morsettiere a 2 pin

Pagina 12 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

6.2  SCHEMA ELETTRICO

RA0/AN02

RA1/AN13

RA2/AN2/VREF­/CVREF4

RA4/T0CKI/C1OUT6

RA5/AN4/SS/C2OUT7

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI/CCP2 12

RC2/CCP1 13

RC3/SCK/SCL 14

RB7/PGD 28RB6/PGC 27

RB5 26RB4 25

RB3/PGM 24RB2 23RB1 22

RB0/INT 21

RC7/RX/DT 18RC6/TX/CK 17

RC5/SDO 16RC4/SDI/SDA 15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 11

MCLR/Vpp/THV1

U1

PIC16F876AVDD=+5VVSS=GND

27.0

3

1

VOUT 2

A­S

LM35

27.0

3

1

VOUT 2

A­D

LM35

27.0

3

1

VOUT 2

B­S

LM35

27.0

3

1

VOUT 2

B­D

LM35

Q2IRF540

Q1IRF540

D1

1N4007

D3

1N4007

D7

14D

613

D5

12D

411

D3

10D

29

D1

8D

07

E6

RW5

RS

4

VS

S1

VD

D2

VE

E3

LCD1LM044L

R/W è a massa (zero) perchè va usato in modalità scrittura

Q3BC548

Q4BC548

RESISTENZA

GIRAUOVA

VENTOLA

VI1 VO 3

GN

D2

U27805

D51N4007

RICIRCOLO

D4

LED

D2

LED

X1CRYSTAL

ResisOUTResisIN

GiraOUTGiraIN

Aria

­ Aria+

Ventola­

Ventola+

R2

470Ohm

R1

470Ohm

R4

3.9k

R3

3.9k

C422p

C322p

C1

470n

C2

220n

GND

+12V

+5V

12

J1

VENTOLA

12

J2

RICIRCOLO

12

J3

GIRAUOVA

12

J4

RESISTENZA

12

J5

ALIMENTAZIONE

RL1G2R­1E­DC12

RL2G2R­1E­DC12

RV1

1K

R510k

C5100n

R6

470R

Pagina 13 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

6.3  TABELLA DEI COMPONENTI

J1 Morsettiera per collegamento ventole di movimento ariaJ2 Morsettiera per collegamento ventole del ricambio ariaJ3 Morsettiera per collegamento dell’elemento scaldante e relativa 

alimentazioneJ4 Morsettiera per collegamento del motore girauova e relativa alimentazioneJ5 Morsettiera per alimentazione +12V per la schedaRV1 Trimmer per regolazione del contrasto del display LCDU2 Stabilizzatore tensione a 5V  LM7805CTC1 Condensatore per stabilizzatore di tensioneC2 Condensatore per stabilizzatore di tensioneX1 Quarzo per oscillatoreC3 Condensatore per oscillatoreC4 Condensatore per oscillatoreA­S Trasduttore di temperatura LM335DZ 10mv/°CA­D Trasduttore di temperatura LM335DZ 10mv/°CB­S Trasduttore di temperatura LM335DZ 10mv/°CB­D Trasduttore di temperatura LM335DZ 10mv/°CQ1 Mosfet IFR540 per interfacciamento di potenzaQ2 Mosfet IFR540 per interfacciamento di potenzaQ3 Transistor BC548Q4 Transistor BC548RL1 Relè per interfacciamento di potenzaRL2 Relè per interfacciamento di potenzaU1 Microcontrollore PIC 16F876ALCD1 Display LCD 4X20 segmenti

Componente Valore Componente 

Valore

R1 = 470Ω C1 = 470 nFR2 = 470Ω C2 = 220 nFR3 = 3,9KΩ C3 = 22 pFR4 = 3,9KΩ C4 = 22 pF

RV1 = 1KΩ      

Pagina 14 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

6.4  FASI SVOLTE

Mi limiterò a descrivere le operazioni svolte per realizzare il circuito stampato e il programma per il microcontrollore,   tralasciando   la   parte   relativa   alla   realizzazione   dell’involucro   e   al   fissaggio meccanico di componenti quali elemento scaldante, ventole e girauova.

6.4.1  DISEGNO DEL CIRCUITO

Prima   di   concentrarmi   alla   realizzazione   del   circuito   PCB   mi   sono   voluto   accertare   del funzionamento e della corretta progettazione dello schema elettrico e del programma di controllo.Per prima cosa ho disegnato lo schema elettrico di principio utilizzando il programma ISIS Proteus.Questo software permette di testare il funzionamento del circuito grazie ad una particolare funzione di simulazione che consente di emulare un qualunque microcontrollore caricandoci un programma in formato .hex.È   possibile   effettuare   una   simulazione   in   real   time   e   modificare   i   parametri   dei   sensori   di temperatura per verificare la risposta del sistema. Il fatto che in fase di simulazione il programma e il circuito abbiano risposto a dovere, garantisce una buona possibilità di riuscita all’atto pratico.

6.4.2  IL SOFTWARE

Per stilare il programma ho utilizzato il software MikroBasic, che si è rivelato semplice e intuitivo. Ho riscontrato alcuni problemi nell'implementazione delle condizioni IF, poiché inizialmente avevo utilizzato i connettivi logici AND e OR per legare più condizioni insieme con una sintassi simile alla seguente:

if ((condizione1=x)and(condizione2=y)) then

....codice....

end ifDurante   la   compilazione   non   si   verificava   alcun   errore,   ma   nel   simulare   il   programma   con l'applicativo ISIS Proteus, tali istruzioni venivano saltate.Il problema è  stato risolto creando un annidamento di IF, anche se in questo modo non è  stato possibile raggiungere il massimo dell’ottimizzazione. L’esempio di prima è stato trasformato così:

if (condizione1=x) then

if (condizione2=y) then

...codice....

end if

end if

Il listato può essere consultato nella sezione “ZOOM” al punto 8.6.

Pagina 15 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

6.4.3  IL DIMENSIONAMENTO DELLE PISTE

Quando si realizzano  circuiti stampati per alte correnti e/o alte tensioni è necessario usare maggiori larghezze delle piste e maggiori distanze di isolamento rispetto al minimo tecnicamente possibile. Per  quanto   riguarda   la  massima corrente   il  parametro   fondamentale  da  considerare  è   legato  al surriscaldamento delle piste.Avendo utilizzato una basetta ordinaria (cioè con uno spessore di rame pari a 35 micron), ho potuto utilizzare il seguente grafico per poter scegliere la larghezza adeguata in funzione della temperatura raggiunta  dalla  pista   stessa;  per  ottenere   la   temperatura   superficiale  occorre   sommare  a  quella indicata sul grafico la temperatura dell'ambiente in cui il circuito stampato è posto. Si noti che la corrente indicata è quella media efficace (RMS) e non quella di picco che spesso è molto superiore.

6.4.4  Disegno del PCB

Per realizzare il PCB ho utilizzato l'applicativo ARES. Quest'ultimo crea automaticamente le netlist partendo  dal  progetto  disegnato  con  ISIS.  Dispone   inoltre  della  caratteristica  di  autoroute,  che permette di creare automaticamente tutte le piste fra i vari componenti. Questa funzione si è rivelata utile solo in parte, dal momento che le tracce proposte dal software non erano molto funzionali. Per fare un esempio pratico, le piste tracciate con l'autoroute avevano spesso angoli a 90°. Occorre ricordare che in un circuito stampato non ci dovrebbero mai essere curve a 90°, poiché in prossimità di   queste   ultime   si   creerebbe  una   maggiore   presenza   di   capacità   parassite   che  danno   luogo a fenomeni di ringing (Scampanellata) che disturbano il segnale convogliato dalle stesse, pertanto si preferisce utilizzare piste con angoli di curvatura a 45° o inferiori. In buona sostanza il ringing è un campo elettromagnetico generato dalla conformazione della pista che si va ad aggiungere al segnale trasportato dalla stessa.. Tutte gli angoli retti sono quindi stati sostituiti da due angoli a 45°.

Pagina 16 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

È stato necessario ingrandire tutte le piste e impostarle a 60th. Le piste che collegano i piedini dei relè con le relative morsettiere sono state dimensionate a 100th, dal momento che in quella parte della scheda dovrà passare molta corrente (l'elemento scaldante ha una potenza di 60W).Per facilitare le operazioni di foratura e di saldatura, ho leggermente ingrandito le dimensioni di ogni piazzola. Ho inoltre cercato di disegnare più piste possibile nel lato bottom, dove è più facile saldare i componenti.Quella di realizzare il circuito su una scheda double layer è stata una scelta obbligata, dal momento che la presenza di componenti con un alto numero di PIN (come il microcontrollore che ne ha 28 o il display LCD che ne ha 14) rendeva impossibile lo sbroglio su un'unica faccia.Non   avendo  particolari   esigenze  di   spazio,   non  mi   sono   soffermato  molto  nel   “compattare”   i componenti sulla scheda; piuttosto sono stato attento a disporre tutte le morsettiere, le quattro sonde di temperatura e il connettore per il Display nei bordi della basetta per facilitare il cablaggio. È stato necessario creare una nuova libreria poiché il tipo di morsettiera da me posseduta non era presente nell’elenco del Proteus.

Pagina 17 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

Pagina 18 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

6.4.5  REALIZZAZIONE DELLA SCHEDA STAMPATA

Questa fase di divide in cinque parti:1) fotoincisione2) sviluppo3) incisione chimica4) Foratura delle piazzole5) Saldatura dei componenti

6.4.5.1  Fotoincisione

La basetta utilizzata è  di  tipo fotoincisibile.  Lo spessore delle  due lamine di rame è  35 micron ciascuna. Lo spessore totale della basetta è circa 1,6mm.Per   la   stampa   ho   utilizzato   la   comune   tecnica   detta   sottrattiva:   partendo   da   una   superficie completamente   ricoperta   di   rame   viene   tolto   tutto   quello   in   eccesso   per   lasciare   solo   quello necessario  per   creare   i  collegamenti   elettrici.  Per   fare  questa  operazione  ho  proceduto  per  via chimica. Per fare ciò si deve innanzi tutto proteggere la parte del rame che deve rimanere sulla basetta   con  una  pellicola   resistente   alle   sostanze  chimiche,   con   le  quali  verrà  poi  aggredito   il restante rame.La tecnica più pratica per “disegnare” le piste sul rame è quella della fotoincisione. Il materiale di base per utilizzare questo metodo è una semplice basetta presensibilizzata (nota anche come photo­resist coated board), ovvero ricoperta da una vernice resistente alle sostanze chimiche. Se esposto alla luce ultravioletta, il polimero di base di tale vernice diventa solubile in una soluzione basica e quindi risulta facilmente rimovibile. Proprio perché sensibili alla luce, le basette vengono vendute con una pellicola di alluminio protettiva da rimuovere subito prima della fotoincisione.Per   disegnare   le   piste   sulla   basetta  è   necessario   evitare   che  queste   vengano   esposte   alla   luce ultravioletta. A tale scopo deve essere stampato su carta lucida un disegno in scala 1:1 del circuito da realizzare.

Pagina 19 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

Nella stampa del master (ovvero del suddetto foglio lucido) è necessario utilizzare un inchiostro assolutamente non trasparente ai raggi ultravioletti. Il colore è irrilevante anche se spesso si utilizza l’inchiostro nero, poiché ciò che appare nero ai nostri occhi risulta spesso opaco ai raggi UV. Nel mio caso,  avendo scelto di realizzare una scheda double  layer,  è  stato necessario  stampare due master distinti: uno relativo alle piste del lato Top e uno per le piste del lato Bottom. I due master andranno   fatti   combaciare   tra  di   loro  e  nel  mezzo  verrà   sistemata   la  basetta  presensibilizzata. L’inchiostro opaco del master farà si che nel momento dell’esposizione, i raggi ultravioletti non alterino la parte della pellicola immediatamente sottostante alle piste.L’esposizione ai  raggi UV viene effettuata  con un particolare strumento chiamato  bromografo. 

Quest’ultimo  è   appunto  una   sorgente   di   luce  ultravioletta   che   illumina   la   basetta   attraverso   il master, inducendo le modificazioni chimiche solo alla parte di vernice effettivamente illuminata. Ovviamente la luce può passare solo dove il master è trasparente (ovvero dove non c’è l’inchiostro). È necessario che il master sia ben aderente alla basetta. Per questo motivo sopra a master e basetta viene adagiata una lastra di vetro.È buona norma rivolgere il lato stampato della carta lucida verso la scheda. Per questo motivo, nel caso di basetta double layer, al lato top va eseguita un’operazione di mirror via software, per evitare lo spiacevole inconveniente di stampare la basetta al contrario di non far tornare la numerazione dei pin.L’esposizione al bromografo deve durare circa 4 minuti per lato.

6.4.5.2  Lo sviluppo

Una   volta   eseguita   l’operazione   di   fotoincisione,   si   deve   provvedere   ad   asportare   la   vernice precedentemente   illuminata   dai   raggi   UV.   Questa   operazione   viene   svolta   utilizzando   una comunissima sostanza basica come la soda caustica (diluita al 7%). Si deve immergere la basetta nella soluzione di sviluppo (ovvero nella soda) per il tempo necessario a rimuovere il photoresist (circa 2/3 minuti).Per accelerare questo processo si può strofinare delicatamente la basetta con un dito (con i guanti!) o con un pennello. A questo punto le piste inizieranno ad affiorare.

Pagina 20 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

6.4.5.3  Incisione chimica

La scheda è stata poi trasferita in un contenitore plastico contenente cloruro ferrico (FeCl3) diluito in acqua al 40%   per l’operazione di incisione, che permette di togliere chimicamente il rame in eccesso. Per velocizzare il processo, all’interno della vasca il cloruro ferrico, riscaldato a 30°C, è stato   agitato   da   una   pompa.   Dal   momento   che   la   parte   inferiore   risente   maggiormente   della corrosione dell’acido, la basetta è stata capovolta dopo dieci minuti. L’incisione è terminata dopo venti minuti, quando tutto il rame non protetto dalla vernice è stato asportato. Ricordo che i tempi a me citati sono indicativi e possono variare in base ai macchinari e alle sostanza utilizzate.

Per finire, la scheda è stata sciacquata con alcool etilico per rimuovere la pellicola protettiva dalle piste.  Questa  operazione  è  utile  per   facilitare   la   saldatura.  Lo stagno,   infatti,  non attacca  sulla vernice fotosensibile.

6.4.5.4  Foratura e saldatura dei componenti

A questo punto la basetta è stata forata in prossimità delle piazzole con un trapano a colonna. La maggior parte dei fori è stata praticata con una punta di 0,8mm di diametro. Per i componenti con reofori (piedini) più grandi sono state utilizzate punte da 1mm e 1,2mm di diametro.La saldatura è l’operazione che permette il fissaggio dei componenti al circuito stampato. Consiste nella fusione nel punto di contatto tra rame e componente di una lega metallica che, raffreddandosi, permette sia la connessione elettrica che il fissaggio meccanico dei componenti. La lega utilizzata è 

Pagina 21 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

lo stagno, che può essere mischiato con parti di piombo, rame e argento. La temperatura di fusione è leggermente inferiore ai 200°C per le leghe a base di stagno e piombo. Per le leghe a base di stagno e rame o argento la temperatura di fusione si aggira intorno ai 230°C.Questi valori sono indicativi e dipendono dalla percentuale con la quale questi metalli compaiono. L’operazione   di   saldatura   non   è   particolarmente   difficile.   Le   difficoltà   maggiori   sono   state riscontrate nella saldatura dei piedini nel lato Top, poiché la presenza dei componenti ostacola la libertà di movimento di saldatore e stagno.Per  un   risultato   ottimale,   la  quantità   di   stagno  dovrebbe   essere   appena   sufficiente   per   coprire interamente la piazzola e la saldatura dovrebbe assumere la forma di un cono.

Di seguito ho riportato il risultato finale:

Pagina 22 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

7  CONCLUSIONI

7.1)   L’incubatrice da me realizzata è  completamente automatizzata:  gestisce la temperatura e i 

flussi dell’aria; la temperatura può essere costantemente monitorata grazie ad un apposito display LCD; ruota le uova in modo autonomo; è completamente programmabile. Nella maggior parte delle incubatrici commerciali l’utente non può impostare manualmente la temperatura di incubazione. Ne segue che con una certa cova uova è possibile incubare soltanto una predeterminata razza di ovipari (es gallina, quaglia, fagiano, colombo, tacchino…). Ogni razza ha infatti la propria temperatura di incubazione (es le uova di gallina devono essere incubate ad una temperatura di 37.7°C). Il primo vantaggio dell’utilizzo di un’incubatrice programmabile  è  proprio quello di poterla  adattare  alla covata.   Con   un   solo   dispositivo   si   possono   incubare   svariate   specie   animali,   cambiando semplicemente due parametri nel programma che controlla il PIC. Il girauova automatico consente una manutenzione davvero minima durante il periodo di incubazione. Ricordo infatti che le uova devono essere ruotate almeno tre volte al giorno al fine di evitare che il feto si attacchi alla parete dell’uovo portando a deformazioni e, nella maggior parte dei casi, alla morte dell’embrione.

Pagina 23 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

7.2)  COSTI DI REALIZZAZIONEOGGETTO COSTO DESCRIZIONEContenitore (frigorifero) € 0,00 RecuperatoVentole € 0,00 RecuperateElemento riascaldante (resistenza) € 0,00 RecuperatoMotore del girauova € 0,00 RecuperatoAlimentatore da PC € 0,00 RecuperatoAlimentatore a 16V alternati € 0,00 RecuperatoBasetta fotoincisibile doppio strato € 0,00 Laboratorio scolasticoQuarzo 4Mhz € 0,57 acquistatoStabilizzatore tensione LM7805CT € 2,67 acquistatoMicrocontrollore PIC 16f876A € 4,10 acquistatoDisplay LCD 4X20 segmenti € 6,89 acquistato4 x Transduttori di temperatura LM35DZ € 3,60 acquistato2 X Mosfet IRF540 € 3,50 acquistatoRelays 12V 16A € 3,00 acquistatoRelays 12V 5A € 2,50 acquistatoAltri componenti (condensatori, diodi...) € 0,00 Laboratorio scolasticoSpedizioni € 9,00 acquistatoTOT= € 35,83  IVA 20%= € 7,17  TOT= € 43,00  

7.3  SOFTTWARE UTILIZZATI

ISIS proteus v7.6 build 8741 ARES Proteus v7.6 build 8745 Paint v6.1 build 7600 Gimp 2 Microsoft word, EXCEL 2003 OpenOffice v3.0 Adobe reader v9.0 DoPDF v7 Mikrobasic 2009 v3.2 Microchip MPLAB IDEv8.10 PICC

Pagina 24 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

8  ZOOM

8.1  IL GIRAUOVA

Tra le incubatrici commerciali, alcune ruotano le uova facendole ruzzolare e facendogli compiere dei giri completi, altre si limitano ad inclinare le uova rispetto al terreno ponendo come fulcro la punta dell’uovo. Contrariamente a quanto si possa pensare, il secondo tipo è quello più funzionale e viene applicato nei sistemi semi­professionali. Ho scelto di realizzare un girauova del secondo tipo.È  stato realizzato con un semplice sottovaso a base rettangolare.  Sono stati praticati  due fori al centro dei bordi più corti, i quali sono stati rinforzati con delle tavolette di legno. I fori sono la sede dei due assi sul quale il sottovaso dovrà ruotare. La forza motrice proviene dal motore del grill di un forno a microonde. Ho scelto questo tipo di motore perché la sua potenza piuttosto elevata (5W) può permettere di far ruotare 20 e più uova. Non necessita di un riduttore, dal momento che il rotore ha una velocità di rotazione di 5/6 rpm. L’unico inconveniente è la sua tensione di alimentazione: lavora infatti a 16V AC. Questo problema può essere risolto separando questa parte dal resto del circuito e prelevando l’alimentazione da un alimentatore dedicato. Sul rotore è stata applicato un disco ligneo. Uno spigolo del sottovaso è stato collegato al disco di legno una biella. Viene così trasformato il moto rotatorio del motore in un moto oscillatorio che permette di inclinare le uova di ±45° rispetto alla situazione di normalità. Intendiamo   con   normalità   la   situazione   in   cui   lasse   dell’uovo,   passante   per   la   punta,   è 

Pagina 25 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

perpendicolare a  terra.  L’uovo deve essere sistemato nel sottovaso con la punta rivolta verso il basso, per far traspirare la camera d’aria interna (che è situata nella base dell’uovo).Cambiando frequentemente l’inclinazione, si evita che il pulcino in fase di sviluppo rimanga attaccato al guscio dell’uovo. Le uova devono infatti essere mosse almeno tre volte al giorno. Il motore viene pilotato dal PIC mediante un relè. 

8.2  GLI ALIMENTATORI

Per la realizzazione dell’incubatrice sono serviti due alimentatori:1. Un alimentatore per il girauova che fornisce in uscita una tensione di 16V alternati;2. Un alimentatore da PC per alimentare il resto del circuito.

L’alimentatore da PC, in grado di erogare una potenza di 500w, è stato recuperato da una stazione ecologica.Dal momento che l’alimentatore dispone di due uscite distinte a +12V, una linea verrà utilizzata per l’alimentazione principale, l’altro canale verrà dedicato all’elemento scaldante.È stato necessario apportare una piccola modifica all’alimentatore per permetterne il funzionamento al di fuori del case del PC (ovvero per utilizzarlo senza dover premere il pulsante di accensione del computer). Si tratta di cortocircuitare il pin relativo al filo verde (pin 14) con un qualunque filo nero (massa). 

Pagina 26 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

8.3  LE VENTOLE

A   garanzia   di   un’ottima   ventilazione   sono state   impiegate  due  ventole  da  PC,  una  da 8cm e una da 12cm di diametro. Quella più piccola   è   montata   nella   parte   inferiore dell’incubatrice   e   soffia   da   destra   verso sinistra.   L’altra,   posta   nel   lato   superiore, soffia   da   sinistra   verso   destra,   creando   un flusso circolare di aria e permettendo quindi una veloce ridistribuzione del calore. 

8.4  LA RESISTENZA

Per   riscaldare   l'ambiente  di   incubazione  ho utilizzato   la  una  resistenza  a   filo   recuperata  da un vecchio scalda sedile per auto. Utilizzata a 12V, eroga una potenza di 60W.L'elemento scaldante è stato montato in modo tale da ricoprire sia la parete superiore che quella inferiore dell'incubatrice. In questo modo si cerca di migliorare la distribuzione del calore.

Pagina 27 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

8.5  ARCHITETTURA DEL MICROCONTROLLORE PIC16F876A

Lo schema funzionale dell’architettura interna è presentato nella seguente figura:

 

8.5.1  PORTE DI I/O

Il microcontrollore PIC16F876A dispone di  22 linee di I/O (alla destra dello schema) raggruppate in tre gruppi: uno da sei e gli altri da otto, chiamati PORT. Queste linee possono essere impostate per l'input o per l'output utilizzando i registri TRIS. Ponendo TRISx=0 tutte le porte del gruppo x vengono designate come output, al contrario con PORTx=1 potremo sfruttare tutte le porte di x 

Pagina 28 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

come input. Le porte di I/O digitali (sia input che output) funzionano con la logica binaria: stato logico 1  +5V; stato logico 0 0V.Viene fatta un’eccezione per le porte di tipo analogico, che possono svolgere funzioni di ADC (nel caso del PIC16f876A sono le porte A0, A1, A2, A3, A4) o di DAC (caratteristica non presente nel microcontrollore trattato).

8.5.2  MEMORIA DATI (RAM) E MEMORIA PROGRAMMILa RAM è la memoria dati ed è organizzata a 8 bit infatti il Data Bus è a 8 bit) e al suo interno si 

trovano anche i registri di controllo del miroprocessore, che la Microchip chiama File Registers.La memoria programmi   è di tipo Flash ed è quindi riscrivibile elettricamente in tempi brevi. La 

memoria   programmi   è   costituita   da   8000   blocchi   da   14   bit   (che   quindi   rappresenta   il   limite dimensionale ai  programmi che possono essere memorizzati  sul dispositivo.  Gli 8k di memoria sono organizzati in quattro sezioni da 2k ciascuna chiamate pagine (page).

Memoria   programma   e   memoria   dati   (RAM)   sono   separate fisicamente   e   dotate   ciascuna   di   un   proprio   bus   (architettura Harward). In questo modo le prestazioni aumentano. IL Program Bus a 14 bit può caricare un'istruzione in un singolo ciclo: 8 bit servono per l’istruzione vera e propria, mentre gli altri 5 servono per indirizzamento. Il processore è di tipo RISC.

Pagina 29 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

8.5.3  REGISTRI DI MEMORIA

Pagina 30 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

8.6  PROGRAMMA PER IL PIC 16F876A

Per l’interfacciamento con il display ho utilizzato le PortB del PIC.Alle portA, le uniche con funzione di ADC, sono collegati i quattro sensori di temperaturaLe PortC servono per gestire gli attuatori.

Di seguito riporto il listato completo:

program Incubatrice' PIC 16f876A   Fck=4MHz' Declarations sectiondim  MAX_REGISTRATA  as   float      '   ci   salvo   la   temperatura   massima   mai   raggiunta   da visualizzare poi nell'eventuale displaydim MIN_REGISTRATA as float    'ci salvo la temperatura minima mai raggiunta da visualizzare poi nell'eventuale displaydim CICLI as word  ' mi serve a contare il numero dei "giri" del programmadim ALTO_SINISTRA as float      'ci salvo la temperatura letta con il sensore LM35 posizionato in ALTO SINISTRAdim ALTO_DESTRA as floatdim BASSO_SINISTRA as floatdim BASSO_DESTRA as floatdim MEDIA_TOT as float        ' ci salvo la media delle temperature rilevate dagli N sensoridim MEDIA_ALTO as floatdim MEDIA_BASSO as floatdim MINUTI as word' Lcd module connectionsdim  LCD_RS as sbit at RB0_bit  LCD_EN as sbit at RB2_bit  LCD_D7 as sbit at RB7_bit  LCD_D6 as sbit at RB6_bit  LCD_D5 as sbit at RB5_bit  LCD_D4 as sbit at RB4_bitdim  LCD_RS_Direction as sbit at TRISB0_bit  LCD_EN_Direction as sbit at TRISB2_bit  LCD_D7_Direction as sbit at TRISB7_bit  LCD_D6_Direction as sbit at TRISB6_bit  LCD_D5_Direction as sbit at TRISB5_bit  LCD_D4_Direction as sbit at TRISB4_bit' End Lcd module connections  dim txt1 as char[16]       'servono per scrivere nel display  dim txt2 as char[16]  dim txt3 as char[16]  dim txt4 as char[16]  dim txt5 as char[16]

Pagina 31 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

  dim txt6 as char[23]  dim txt7 as char[4] const CONVERTI_IN_GRADI = 1.953   'il valore che va moltiplicato alla misura letta sull'LM35 per convertirla in gradi°C   5/256*100  5 Vfs   256N°livelli const MINUTI_GIRAUOVA = 300 'ogni quanti MINUTI si deve azionare il girauovamain:'   Main program 'AN0;AN1; AN2 AN3­­> PORTE PER INGRESSI ANALOGICI' porte A7 A6 A5 A4 A3 A2 A1 A0'trisa    0    0    0    0    1    1    1    1'(A3,A2,A1,A0 sono a 1 e quindi sono input)ADCON1 = %00000010      'uso AN0 AN1 AN2 AN3 come porte analogichetrisa = %00011111      'uso AN0 AN1 AN2 AN3 per leggere la temperatura (le imposto come input)PortB = 0           'spengo tutte le porte BTrisb = %00000000  'imposto tutte le RB come uscita(output)PortA = 0           'spengo tutte le porte Atrisc = %00000000    'imposto tutte le porte C come outputPortC = 0

' LE porte A servono per l'acquisizione dei dati 'RA0 ­­> sensore di temperatura in ALTO A SINISTRA 'RA1 ­­> sensore di temperatura in ALTO A DESTRA 'RA2 ­­> sensore di temperatura in BASSO A SINISTRA 'RA3 ­­> sensore di temperatura in BASSO A DESTRA' Le porte B servono pe pilorare il Display LCD 'RB0 ­­> RS (dell'LCD) 'RB1 ­­> RW (dell'LCD) va lasciato sempre spento 'RB2 ­­> E (dell'LCD) 'RB4 ­­> D4 (bus dati dell'LCD) 'RB5 ­­> D5 (bus dati dell'LCD) 'RB6 ­­> D6 (bus dati dell'LCD) 'RB7 ­­> D7 (bus dati dell'LCD)'Le porte C servono per azionare i sistemi di condizionamento 'RC3 ­­> Ventola (per muovere l'aria) 'RC4 ­­> Ventolina (per forzare il ricircolo dell'aria con l'esterno 'RC5 ­­> Girauova 'RC6 ­­> Resistenza'INIZIALIZZAZIONE VARIABILIMAX_REGISTRATA = 25.5          'inizializzo MAX  alla temperatura ambienteMIN_REGISTRATA = 38          'inizializzo MIN con una temperatura alta (una volta raggiunta la temperatura di utilizzo andrà A "scalare")CICLI=0MINUTI=0'SEGNALO L'AVVENUTA ACCENZIONE NEL DISPLAYtxt1 = "Buongiorno"txt2="Incubazione"txt3= "iniziata."txt4="Buona fortuna"Lcd_Init()                        ' Initialize LcdLcd_Cmd(_LCD_CLEAR)               ' Clear display

Pagina 32 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

 Lcd_Cmd(_LCD_CURSOR_OFF)          ' Cursor offLcd_Out(1,1,txt1)                 ' Write text in first rowLcd_Out(2,1,txt2)                 ' Write text in first rowLcd_Out(3,1,txt3)            ' Write text in first rowLcd_Out(4,1,txt4)                 ' Write text in first rowdelay_ms(10000)Lcd_Cmd(_LCD_CLEAR)'TESTO IL FUNZIONAMENTO DEL GIRAUOVAPortC.5=1Delay_ms(8000)PortC.5=0' DA QUI INIZIARà UN CICLO INFINITOwhile true    'LEGGO LA TEMPERATURA    'Alto     ALTO_SINISTRA = Adc_Read(0)   * CONVERTI_IN_GRADI ' metto il ALTO_SINISTRA i gradi letti dal sensore di temperatura che nell'incubatrice si troverà appunto in alto a sinistra (o al limite in alto a destra)    delay_ms(250)    ALTO_DESTRA = Adc_Read(1)    * CONVERTI_IN_GRADI    delay_ms(250)    'basso    BASSO_SINISTRA = Adc_Read(2) * CONVERTI_IN_GRADI    delay_ms(250)    BASSO_DESTRA = Adc_Read(3) * CONVERTI_IN_GRADI    delay_ms(250)    FACCIO LE MEDIE        MEDIA_TOT   =     (ALTO_SINISTRA   +   ALTO_DESTRA   +   BASSO_SINISTRA   + BASSO_DESTRA)/4    MEDIA_ALTO = (ALTO_SINISTRA + ALTO_DESTRA)/2    MEDIA_BASSO = (BASSO_SINISTRA + BASSO_DESTRA)/2

    'AGGIORNAMENTO DI TEMPERATURA MASSIMA E MINIMA REGISTRATA   if(MEDIA_TOT > MAX_REGISTRATA) then       MAX_REGISTRATA = MEDIA_TOT     'se la temperatura corrente è quella + alta di sempre, allora aggiorno MAX   end if     if(MEDIA_TOT < MIN_REGISTRATA)   then     'MAX > 37 serve a far aggiornare MIN solo dopo che l'incubatrice è  arrivata  a regime (sennò  min sarebbe sempre la temperatura alla  quale l'accendo)      if(MAX_REGISTRATA>37) then          MIN_REGISTRATA = MEDIA_TOT   'se la temperatura corrente è quella + bassa di sempre e sono già arrivato a regime, allora aggiorno MIN      end if   end if   delay_ms(250)    'ROUTINE PER LA VENTOLA     if ((MEDIA_BASSO ­ MEDIA_ALTO)>1.0)  then       if (PortC.3 = 0) then

Pagina 33 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

        PortC.3 = 1    ' se fra alto e basso c'è una differenza di temperatura di oltre un grado, accende la ventola che muove l'aria       end if    else         if ((MEDIA_ALTO ­ MEDIA_BASSO)>1.0)then            if (PortC.3 = 0) then                 PortC.3 = 1     ' se fra alto e basso c'è una differenza di temperatura di oltre un grado, accende la ventola che muove l'aria            end if         else             if (PortC.3 = 1) then                 PortC.3 = 0    'se la temperatura all'interno dell'incubatrice è omogenea, allora spenge (o, se è già spenta, non accende) la ventola             end if         end if    end if    delay_ms(125)    'ROUTINE PER LA RESISTENZA     if (MEDIA_TOT < 37.2)then        if (MEDIA_ALTO < 38.2)then           if(MEDIA_BASSO < 38.2)then 'se la media totale è minore di 37.2, media alto è minore di 38.2 e media basso è minore di 38.2 allora              if (PortC.6 = 0) then                 PortC.6 = 1 'se è spenta, accendo la resistenza              end if           end if        end if     else         if (MEDIA_TOT > 38.3)then    'se la temperatura media è superiore di x             if (PortC.6 = 1) then                PortC.6 = 0         'se è accesa, spengo la resistenza             end if         else            if(MEDIA_ALTO > 38.6)then   'se la temperatura media fra le due sonde in alto è minore di 38.6, allora               if (PortC.6 = 1) then                  PortC.6 = 0         'se è accesa, spengo la resistenza               end if            else               if(MEDIA_BASSO >38.6)then     'se la temperatura madia è elevata o se uno fra basso e alto è molto più alto dell'altro allora spenge la resistenza                  if (PortC.6 = 1) then                      PortC.6 = 0         'se è accesa, spengo la resistenza                  end if               end if            end if         end if     end if

Pagina 34 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

     delay_ms(125)          'ROUTINE PER IL GIRAUOVA      CICLI = CICLI + 1      if (CICLI = 6) then         MINUTI = MINUTI + 1         CICLI= 0      end if      if (MINUTI = MINUTI_GIRAUOVA) then         PortC.5 = 1         Delay_Ms(8000)         PortC.5 = 0         MINUTI = 0      end if                  'AGGIORNO   IL   DISPLAY   ­­>   MEDIA_TOT,   ALTO_SINISTRA,   ALTO_DESTRA, BASSO_SINISTRA, BASSO_DESTRA, MIN_REGISTRATA, MAX_REGISTRATA      Lcd_Cmd(_LCD_CLEAR)               ' Clear display      Lcd_Cmd(_LCD_CURSOR_OFF)          ' Cursor off      floattostr(MEDIA_TOT,txt6)  'in txt1 ci scrivo la temperatura media istantanea      txt7[0]=txt6[0]           ‘tronco il valore di Media_ToT al quarto carattere      txt7[1]=txt6[1]      txt7[2]=txt6[2]      txt7[3]=txt6[3]      Lcd_Out(1,1,"TEMPERATURA=")                 ' Write text in first row      Lcd_Out(1,13,txt7)      floattostr(ALTO_SINISTRA,txt6) ' in txt2 ci scrivo la temperatura rilevata dalla sonda in ALTO A SINISTRA      txt7[0]=txt6[0]      txt7[1]=txt6[1]      txt7[2]=txt6[2]      txt7[3]=txt6[3]      Lcd_Out(2,1,"AS=")      'nella seconda riga ci scrivo le temperature dei sensori in alto      Lcd_Out(2,4,txt7)      floattostr(ALTO_DESTRA,txt6) ' in txt2 ci scrivo la temperatura rilevata dalla sonda in ALTO A SINISTRA      txt7[0]=txt6[0]      txt7[1]=txt6[1]      txt7[2]=txt6[2]      txt7[3]=txt6[3]      Lcd_Out(2,9,"AD=")      Lcd_Out(2,12,txt7)      floattostr(BASSO_SINISTRA,txt6)      txt7[0]=txt6[0]      txt7[1]=txt6[1]      txt7[2]=txt6[2]      txt7[3]=txt6[3]      Lcd_Out(3,1,"BS=")      'nella terza riga ci scrivo le temperature dei sensori in alto      Lcd_Out(3,4,txt7)      floattostr(BASSO_DESTRA,txt6)      txt7[0]=txt6[0]

Pagina 35 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

      txt7[1]=txt6[1]      txt7[2]=txt6[2]      txt7[3]=txt6[3]      Lcd_Out(3,9,"BD=")      Lcd_Out(3,12,txt7)      floattostr(MIN_REGISTRATA,txt6)      txt7[0]=txt6[0]      txt7[1]=txt6[1]      txt7[2]=txt6[2]      txt7[3]=txt6[3]      Lcd_Out(4,1,"MIN")    'nella quarta riga ci vanno TMAX e TMIN registrate           if (MIN_REGISTRATA<38) then   ' se l'incubatrice è a regime, visualizza la Tmin. Prima di arrivarci non la visualizza          Lcd_Out(4,4,txt7)      end if      floattostr(MAX_REGISTRATA,txt6)      txt7[0]=txt6[0]      txt7[1]=txt6[1]      txt7[2]=txt6[2]      txt7[3]=txt6[3]      Lcd_Out(4,9,"MAX")      Lcd_Out(4,12,txt7)      delay_ms(500)      'PER VISUALIZZARE MEDIA_TOT, MEDIA_ALTO E MEDIA_BASSO    '  Lcd_CMD(_Lcd_CLEAR)     ' floattostr(MEDIA_TOT,txt6)     ' txt7[0]=txt6[0]     ' txt7[1]=txt6[1]     ' txt7[2]=txt6[2]      'txt7[3]=txt6[3]      'Lcd_Out(1,1,"TOT=")      'Lcd_Out(1,6, txt7)      'floattostr(MEDIA_ALTO,txt6)      'txt7[0]=txt6[0]      'txt7[1]=txt6[1]     ' txt7[2]=txt6[2]     ' txt7[3]=txt6[3]     ' Lcd_Out(2,1,"ALTO=")     ' Lcd_Out(2,7, txt7)     '       floattostr(MEDIA_BASSO,txt6)     ' txt7[0]=txt6[0]     ' txt7[1]=txt6[1]     ' txt7[2]=txt6[2]     ' txt7[3]=txt6[3]     ' Lcd_Out(3,1,"BASSO=")     ' Lcd_Out(3,8, txt7)     Delay_Ms(8000) ' aspetta 8 secondi     ' Fra un ciclo e l'altro passano quindi 8 + 2 = 10 secondiwendend.

Pagina 36 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

8.7 CONVERSIONE ANALOGICO – DIGITALE (ADC)

La conversione da analogico a digitale rappresenta il duale della conversione digitale – analogico ed è la tecnica che permette di associare ad una grandezza analogica la sua rappresentazione mediante un codice numerico, normalmente binario.Il convertitore analogico – digitale,   in sigla ADC (Analog to Digital  Converter)  svolge, quindi, questa funzione: a partire da un ingresso analogico Vi produce in uscita una stringa di n bit, cui corrisponde, in codice binario, un valore proporzionale al livello del segnale d’ingresso. In formule:

Bn−1

2

Bn−2

22 . . .. ..B0

2n = V i

V FS

Come nel caso dei DAC, anche per i convertitori A/D viene definito un passo di conversione P, corrispondente   alla   minima   variazione   della   tensione   d’ingresso   necessario   a   produrre   un incremento o decremento unitario del numero binario di uscita. Supponendo che quest’ultimo valga inizialmente zero, il passaggio da zero a uno avviene quando tutti i bit Bi sono nulli, ad eccezione di B0: 

V i=P=V FS

2n

Il valore massimo della tensione di ingresso si ha quando tutti i bit sono a uno:

V iMAX=2n−1

2n ×V FS=V FS−P

Nel  processo  di   conversione  A/D è   intrinseco  un  certo   errore   (errore   di  quantizzazione  =  P), derivante dal fatto che i possibili valori della grandezza analogica d’ingresso sono infiniti, mentre i possibili codici digitali di uscita sono in numero finito e pari a 2n.Nella figura seguente è riportata la caratteristica ingresso­uscita di un ADC con tre bit di uscita, funzionante con una tensione di riferimento di 8V:

Se l’ADC fosse dotato di un numero infinito di bit di uscita la sua caratteristica sarebbe la retta indicata in figura e la conversione sarebbe priva di errori.

Pagina 37 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010

Progettazione e realizzazione di un’incubatrice programmabile per volatili

 Per ridurre l’errore di quantizzazione, tutti i valori d’ingresso vengono traslati di ­1/2 LSB. Questo significa che le commutazioni non avverranno più a 1V, 2V, ecc., ma a 0.5V, 1.5V e così via fino all’ultimo valore corrispondente a 6.5V, come mostrato in figura:

Dalle due figure si osserva che i valori  d’ingresso multipli  del passo sono convertiti  con errore nullo,   mentre   l’errore   massimo   è   stato   ridotto,   nella   seconda   figura,   alla   metà   del   passo   di conversione.

Oltre alla specifica sull’errore di quantizzazione, esistono altre tre specifiche:• Accuratezza:  esprime   la  differenza   tra   il   valore   applicato   in   ingresso  al  convertitore   e 

quello corrispondente al codice digitale presente in uscita;• Errore di isteresi: si verifica quando il valore della grandezza d’ingresso, che produce una 

modifica  del  codice digitale   in  uscita,  è  diverso a  seconda della  direzione  con cui  ci  si avvicina al livello in esame;

• Velocità  di conversione:  esprime il  numero di conversioni complete che possono essere effettuate  nell’unità   di   tempo,  usualmente   in  un  secondo.  Al  posto  delle  conversioni   al secondo,   molti   costruttori   specificano   invece   la   durata   in   microsecondi   di   una   singola conversione.

Pagina 38 di 38 Francesco Cencioni    5°B Informatica   A.S. 2009/2010