LIBRO_SISTEMI

Page 1


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Sommario: TIMER ............................................................................................................................................. 6 TIMER0: ......................................................................................................................................... 6 COME SI FA AD OTTENERE TEMPI PRECISI MODIFICANDO IL PERIODO T0 E IL NUMERO DI INTERRUPT? ........................... 8 ESERCIZI: ....................................................................................................................................... 9 TIMER1: ....................................................................................................................................... 12 ESERCIZI: ..................................................................................................................................... 13 TIMER2: ....................................................................................................................................... 15 ESERCIZI: ..................................................................................................................................... 16 GESTIONE RIMBALZI ................................................................................................................... 18 PWM ............................................................................................................................................. 22 PWM NEL MICRO 877: ....................................................................................................................... 23 ONDA QUADRA: ................................................................................................................................ 24 DENTE DI SEGA: ............................................................................................................................... 26 ONDA TRIANGOLARE: ....................................................................................................................... 29 ONDA SINUSOIDALE: ........................................................................................................................ 31 MODULAZIONE AMPIEZZA DI UN'ONDA SINUSOIDALE: ....................................................................... 35 PROGRAMMI SVOLTI IN LABVIEW .............................................................................................. 42

ESERCIZIO: modulazione ampiezza di una sinusoide ....................................................................... 42 ESERCIZIO: Accensione Led su PicBoard tramite comunicazione seriale ............................................ 44 ESERCIZIO: gestione e realizzazione di un protocollo ...................................................................... 51 CONVERSIONE ANALOGICO/DIGITALE ....................................................................................... 62 ESERCIZI: ..................................................................................................................................... 66 EEPROM ........................................................................................................................................ 72 TRASMISSIONE SERIALE ............................................................................................................. 73 RS232: ............................................................................................................................................. 73 CONNESSIONE DI UN MICROCONTROLLORE CON UN PC TRAMITE RS232: ............................... 76 MAX232: ........................................................................................................................................... 79 RS-422: ............................................................................................................................................ 80 RS-485: ............................................................................................................................................ 80 RS-423: ............................................................................................................................................ 80 CONVERTITORE A LOOP DI CORRENTE A 20 MA ......................................................................... 81 SCHEMA DEL LOOP DI CORRENTE PER L’ACCENSIONE DI UN RELÈ: ....................................................................... 82 INTER INTEGRATED CIRCUIT ...................................................................................................... 84 PROTOCOLLO I2C: ................................................................................................................................ 85

Esempio di programma EEPROM con I2C: ....................................................................................... 87

SPI ................................................................................................................................................ 93 TRANSCEIVERS ............................................................................................................................ 97 SENSORISTICA ............................................................................................................................. 99 TERMOCOPPIE ........................................................................................................................... 101

2


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, CARATTERISTICHE DELLE TERMOCOPPIE: ................................................................................ 102 TIPOLOGIE DI TERMOCOPPIE: .................................................................................................. 102 CIRCUITI DI CONDIZIONAMENTO: ................................................................................................... 104 AD594: ....................................................................................................................................... 104 LT1025: ...................................................................................................................................... 106 PIEDINATURA LT1025: .................................................................................................................... 107 RTD (RESISTANCE TEMPERATURE DIPENDENT) ....................................................................... 111 TABELLA DI LOOK UP: .......................................................................................................................... 113 INTERPOLAZIONE LINEARE ..................................................................................................................... 114 RTD A 2 FILI: .................................................................................................................................. 115 RTD A 3 FILI ................................................................................................................................... 116 RTD A 4 FILI: .................................................................................................................................. 117 CIRCUITI DI CONDIZIONAMENTO PER RTD: ..................................................................................... 117 CIRCUITO DI CONDIZIONAMENTO PER UN RTD A 3 FILI: .................................................................. 119 CIRCUITO DI CONDIZIONAMENTO PER UN RTD A 4 FILI: .................................................................. 121 GENERATORI DI CORRENTE COSTANTI:........................................................................................... 122 GENERATORE DI CORRENTE COSTANTE CON OPAMP E PNP: ............................................................. 122 GENERATORE DI CORRENTE COSTANTE CON BJT NPN: ..................................................................... 124 GENERATORE DI CORRENTE COSTANTE CON OPERAZIONALE E RETE RESISTIVA:.............................. 126 ALCUNI ESEMPI DI RTD: ...................................................................................................................... 129 CASE PIU’ COMUNI:......................................................................................................................... 132 ESERCIZI (CON AMPLIFICATORI OPERAZIONALI RELATIVI A RTD): ....................................... 132 TERMISTORI .............................................................................................................................. 148 NTC: ............................................................................................................................................ 149 PTC: ............................................................................................................................................ 157 STRAIN GAUGE (ESTENSIMETRI) .............................................................................................. 161 COMPENSAZIONE IN TEMPERATURA DI UNO STRAIN-GAUGE: .......................................................................... 166 ESERCIZI CON PONTE DI WHEATSTONE: .................................................................................. 167 TRASDUTTORE PIEZOELETTRICO ............................................................................................. 171 TRASDUTTORI A RILUTTANZA VARIABILE ................................................................................ 172 LVDT (LINEAR VARIABLE DISPLACEMENT TRANSDUCER) ........................................................ 173 CONDIZIONAMENTO LVDT: ................................................................................................................... 174 TRASDUTTORE AD INDUTTANZA VARIABILE ............................................................................ 175 TRASDUTTORI OTTICI ............................................................................................................... 176 FOTOSENSORI:................................................................................................................................... 176 FOTOTRANSISTOR: .............................................................................................................................. 177 FOTODIODO: ..................................................................................................................................... 177 FOTO-ACCOPPIATORI O OPTOISOLATORI: .................................................................................................. 178 ESERCIZI: ................................................................................................................................... 179 CTR (CURRENT TRANSFER RATIO) ............................................................................................ 184 SENSORI AD EFFETTO HALL ....................................................................................................... 185 REGOLA DELLA MANO DESTRA: ............................................................................................................... 186 SENSORI DI CORRENTE: ........................................................................................................................ 187 LEM :.............................................................................................................................................. 188 TRASDUTTORI DI VELOCITÀ ...................................................................................................... 189

3


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, DINAMO TACHIMETRICHE: ..................................................................................................................... 189 ALTERNATORI TACHIMETRICI: ................................................................................................................ 190 TRASDUTTORI DI VELOCITÀ E POSIZIONE: ................................................................................................. 191 ENCODER TACHIMETRICO: ..................................................................................................................... 191 ENCODER INCREMENTALI: ..................................................................................................................... 191 ENCODER ASSOLUTI: ........................................................................................................................... 194 SENSORI DI UMIDITÀ ................................................................................................................ 198 TRASDUTTORE DI UMIDITÀ CAPACITIVO: ................................................................................................... 198 TRASDUTTORE DI UMIDITÀ RESISTIVO: ..................................................................................................... 202 SENSORE DI PRESSIONE KP100 ................................................................................................ 203 APPLICAZIONI DEL KP100: ................................................................................................................... 207

1°applicazione: ........................................................................................................................... 207 2° applicazione: .......................................................................................................................... 208

TGS813 SENSORE DI GAS .......................................................................................................... 211 CIRCUITI DI CONDIZIONAMENTO .................................................................................................... 214 EFFETTI SULL'UOMO DEL MONOSSIDO DI CARBONIO: ................................................................................... 218 SCR ............................................................................................................................................. 219 COME SI USA UN SCR ...................................................................................................................... 222 CONTROLLO DI FASE PARZIALIZZAZIONE DELL’ONDA ...................................................................... 223 TRIAC ......................................................................................................................................... 229 REGOLATORE DI TENSIONE .................................................................................................................... 230 20100316 – TEORIA FUNZIONAMENTO SCR TRIAC ............................................................................ 235 ATTUATORI ................................................................................................................................ 239 MOTORI PASSO – PASSO: ...................................................................................................................... 239 TIPOLOGIE DI PILOTAGGIO: ................................................................................................................... 240 DRIVER PER MOTORI PPM (BIPOLARI):..................................................................................................... 245 DRIVER PER MOTORI PPM (UNIPOLARI):................................................................................................... 246 TIPI DI MOTORI PPM: ......................................................................................................................... 246 CARATTERISTICHE: ............................................................................................................................. 246 I CAMBI DI VELOCITÀ: .......................................................................................................................... 247 SISTEMI LINEARI ....................................................................................................................... 248 SCHEMI A BLOCCHI:............................................................................................................................. 249 ANALOGIE MECCANICHE: ....................................................................................................................... 250

Massa......................................................................................................................................... 250 Molla .......................................................................................................................................... 250 Smorzatore ................................................................................................................................. 251 Attrito viscoso e coppia motrice.................................................................................................... 251 Sistema termico .......................................................................................................................... 251

DOMINIO DEL TEMPO ................................................................................................................ 255 TRASFORMATA DI LAPLACE. ................................................................................................................... 256 SCHEMI A BLOCCHI .............................................................................................................................. 256 FUNZIONE DI TRASFERIMENTO................................................................................................................ 258 ESERCIZI: ................................................................................................................................... 263 TRASFORMATA DI LAPLACE ....................................................................................................... 266 APPLICAZIONE DELLA TRASFORMATA DI LAPLACE SUI CIRCUITI ELETTRICI: ......................................................... 267 TEOREMA DEL VALORE FINALE ................................................................................................................ 270 SCOMPOSIZIONE IN FRATTI SEMPLICI ....................................................................................................... 270 STABILITÀ .................................................................................................................................. 273

4


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, GENERICA DI UN SISTEMA: .................................................................................................................... 274 BODE .......................................................................................................................................... 275 FUNZIONE DI TRASFERIMENTO IN FORMA NORMALE ...................................................................................... 275 DIAGRAMMI LOGARITMICI/SEMILOGARITMICI: ............................................................................................ 276 CRITERIO DI STABILITÀ: ....................................................................................................................... 285 MARGINE DI FASE & GUADAGNO: ............................................................................................................ 287 RETI CORRETTRICI: ............................................................................................................................. 289

Ritardatrice:................................................................................................................................ 289 Anticipatrice: .............................................................................................................................. 293 Rete ritardo - anticipatrice (o rete a sella): ................................................................................... 297 Rete ritardo - anticipatrice (o rete a sella): ................................................................................... 297

SCHEMA RIASSUNTIVO SUI DIAGRAMMI BODE: ........................................................................................... 299 SISTEMI DEL II ORDINE ............................................................................................................ 300 FUNZIONI DI INGRESSO .................................................................................................................. 302 CRITICAMENTE SMORZATA ............................................................................................................. 303 SOVRASMORZATA ........................................................................................................................... 303 CONTROLLO PROPORZIONALE .................................................................................................. 305 INTEGRATORE .................................................................................................................................... 309 DERIVATORE ..................................................................................................................................... 311 ESERCIZI BODE: ......................................................................................................................... 315 VERIFICHE ................................................................................................................................. 323 ESERCIZI SVOLTI NEGL’ANNI PRECEDENTI: ............................................................................. 347 CONVERSIONE A/D: .................................................................................................................... 347 DISPLAY 7 SEGMENTI: .................................................................................................................. 347 ESERCIZI CON MPLAB: ................................................................................................................ 347 GESTIONE & CONDIZIONAMENTO: ................................................................................................... 347 OPERAZIONALI: .......................................................................................................................... 347 MOTORI PASSO-PASSO: ................................................................................................................ 347 FUNZIONI DI TRASFERIMENTO: ....................................................................................................... 347 TRASFORMATA DI LA PLACE:.......................................................................................................... 347

5


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

TIMER In un microcontrollore come il PIC16F877 o il PIC16F628A esiste la possibilità di generare un timer di periodo prefissato a seconda della configurazione dei bit interni al microcontrollore in questione. I timer possono essere utilizzati per generare delle routine di interrupt o come timer per il Watchdog. I timer possono essere a decremento o a incremento. Esistono tre tipi di timer per PIC16F628A e PIC16F877: TIMER0, TIMER1, TIMER2.

TIMER0: TIMER0 è un tipo di timer/contatore a incremento presente sia nel PIC16F628A che nel PIC16F877 e presenta le stesse caratteristiche in entrambe i microcontrollori. TIMER0 è un timer a 8 bit che può essere utilizzato anche come timer per il WATCHDOG. Nella figura è rappresentato lo schema a blocchi di TIMER0 per il PIC16F628A. Come si può vedere si possono configurare vari bit con i quali si possono scegliere le varie caratteristiche da attribuire a TIMER0 a seconda del suo impiego.

Figura 1: schema a blocchi del timer0 (http://ww1.microchip.com/downloads/en/devicedoc/30292c.pdf)

Dallo schema a blocchi si può osservare che TIMER0 può essere utilizzato con l’oscillatore interno al microcontrollore oppure può essere utilizzato con un oscillatore esterno. Per quanto riguarda il PIC16F628A il clock è interno ma c’è la possibilità di agganciare il funzionamento del timer a una frequenza di oscillazione generata esternamente mentre il PIC16F877 funziona solamente con un oscillatore esterno e tuttavia è possibile implementare un altro oscillatore legato solamente al funzionamento del timer. Quindi regolando il bit T0CS si può scegliere se avere un oscillatore esterno al microcontrollore o utilizzare la frequenza di oscillazione Fosc/4 interna al microcontrollore stesso. L’oscillatore esterno andrebbe collegato al pin T0CKIN ovvero il pin 3 del microcontrollore. TIMER0 dispone anche di un prescaler e di un postscaler con i quali

6


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, posso regolare con maggiore precisione il periodo dell’onda in uscita. Oltre alla maggiore precisione utilizzando prescaler e postscaler posso ottenere molti più valori per il periodo dell’onda di uscita. PSA è il bit che regola l’attivazione del prescaler o del postscaler di TIMER0. Se il bit PSA vale 0 TIMER0 non sarà né “prescalato” né “postscalato” mentre se PSA è uguale a 1 si devono regolare i bit PS0, PS1 e PS2. Una volta regolati i bit di prescaler e postscaler di TIMER0 il microcontrollore sincronizza l’onda di uscita del timer con la frequenza di oscillazione interna al microcontrollore. TIMER0 conta da 256 a 0 in modo incrementale. Una volta che il timer inizia a contare e quindi a incrementare il suo valore precedentemente prefissato e scritto nel registro chiamato TMR0 (qui devo scrivere il valore che si vuole attribuire al timer) e una volta che è arrivato al massimo il microcontrollore attiva la flag di TIMER0 chiamata TMR0IF. TIMER0 è utilizzato generalmente per la generazione di interrupt che devono entrare in tempi precisi e ripetutamente durante l’esecuzione del normale programma. Regolazione di TIMER0 a 1mS on e 1mS off:    

TIMER0 inizialmente vale 256 Prendo un valore compreso tra 0 e 255 e lo sottraggo da 256  Es: 256-250= 6 Il valore che ottengo dalla sottrazione sarà da scrivere nel registro chiamato TMR0 (TMR0= 6) Sapendo che la frequenza interna del microcontrollore ha un periodo di 1uS regolo il prescaler a ¼ ovvero: PS0=1, PS1=0, PS2=0 Nella scrittura del programma, nella funzione di interrupt, si farà in modo di attivare un’uscita ogni volta che l’interrupt entra in esecuzione, quindi ogni volta che TIMER0 conta 1mS, di modo da poter verificare con un oscilloscopio digitale a memoria che il tempo di on/off del TIMER0 sia effettivamente 1mS

Routine di interrupt: static void interrupt isr_code (void){ if(T0IF){ TMR0=6; */ imposto il registro di TIMER0 al valore desiderato /* T0IF=0; */ azzero la flag del conteggio di RA0^=1

modo da far entrare l’interrupt al prossimo ciclo del programma /* */ attivo e disattivo l’uscita RA0 ogni mS /*

} } TIMER0 bit: T0CS: scelgo se utilizzare la frequenza di oscillazione interna o se utilizzare un oscillatore esterno. PS1, PS2, PS0: bit di prescaler. PS2 0 0 0 0 1 1 1 1

PS1 0 0 1 1 0 0 1 1

PS0 0 1 0 1 0 1 0 1

Valore di prescaler 1:2 1:4 1:8 1:16 1:32 1:64 1:128 1:256

TMR0: registro dove viene scritto il valore iniziale di TIMER0. PSA: scelgo se utilizzare il prescaler. T0IE: bit che attiva gli interrupt legati a TIMER0 (TIMER0 interrupt enable) GIE: abilitazione globale degli interrupt da attivare per rendere effettivo il lavoro dell’interrupt.

7


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Come si fa ad ottenere tempi precisi modificando il periodo T0 e il numero di interrupt?

1 microsec/256= 1/256 MHz Voglio sapere quanto vale il periodo T1 sapendo che vale la relazione f1= 1/256 f fra le frequenze associate ed i periodi. T1=1/f1= 1/(1/256T)= 256T Quindi quanti microsecondi vengono?

Vengono 256 microsecondi. T1=256 microsecondi

Devo trovare T2. Come si fa? In 8 bit 256, quindi 256 *256= 65536 microsecondi Quindi ho un interrupt ogni 65536 microsecondi. Quanti interrupt ci vogliono per fare un secondo? Se scelgo T0= 15 che errore commetto?

65536 microsecondi= 0,065536 secondi 1/0,065536= 15,258789 non va bene perché viene fuori un numero decimale e perdiamo 0,258789. T0*T1= 1 secondo T1= 1/15 0,065536*15= 0,98304 non va bene perché deve venire 1 secondo. Tclock*Prescaler*T0*CONTA_INTERRUPT=1 secondo T0*Prescaler*CONTA_INTERRUPT=1 secondo/1 microsecondo= 1000000 Prescaler= 256

8


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, T0*CONTA_INTERRUPT=1'000’000/256= 3906,25 numero decimale non va bene Rivedo il Prescaler con 64: T0*CONTA_INTERRUPT=15625 Proviamo a dividere 15625 con vari numeri per ottenere un numero intero: - con 252 15’625/252= 62,00396 - con 125 15’256/125= 125 T0= 125 CONTA_INTERRUPT= 125 Prescaler= 64

ESERCIZI: 1. ESERCIZIO: Realizzare un programma che generi un interrupt a 1 secondo facendo lampeggiare un LED (1Sec ON 1Sec OFF) connesso sul pin RA0 utilizzando TIMER0. 2. ESERCIZIO: realizzare un programma che faccia lampeggiare un LED (1Sec ON 1Sec OFF) connesso sul pin RA0 solo se viene premuto un pulsante di start connesso sul pin RB0.

9


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio 1: Obiettivo: Realizzare un programma che generi un interrupt a 1 secondo facendo lampeggiare un LED (1Sec ON 1Sec OFF) connesso sul pin RA0 utilizzando TIMER0. Per realizzare interrupt con periodi elevati occorre creare una variabile unsigned short che in questo caso è chiamata conta di modo da contare il numero di volte che l’interrupt legato a TIMER0 entra nel programma. Se ho generato un interrupt con TIMER0 a 1mS e voglio un lampeggio ad esempio di un LED 1Sec ON e 1Sec OFF dovrò porre la variabile conta in modo da contare fino a 1000 perché se moltiplico 1mS*1000 ottengo 1Sec. A questo punto la stesura del programma è la seguente: #include <htc.h> unsigned short conta; /*creazione della variabile unsigned short conta */ static void interrupt isr_code (void){ if (T0IF){ TMR0=0; conta=conta++; /*incremento di 1 della variabile conta ogni volta che if(conta>=1000){ RA0^=1; conta=0; } T0IF=0; }

la flag T0IF è uguale a 1 */ /*se conta arriva a 1000 attivo l’uscita RA0 */

/*azzero la flag legata a TIMER0 */

} void main (void){ CMCON=7; TRISA=0x00; PORTA=0x00;

T0CS=0; T0SE=0; PSA=0; PS0=1; PS1=0; PS2=0; TMR0=6; conta=0; T0IE=1; GIE=1; while(1){ }

/*regolazione di ingressi e uscite */ /* regolazione dei bit legati a TIMER0: prescaler, valore del registro TIMER0, abilitazione Interrupt globali e legati a TIMER0 */ /*utilizzo il clock interno*/ /*imposto il prescaler del timer 0*/ /*imposto il prescaler a 1/4*/

/*abilito gli interrupt*/

*/chiudo ciclo while(1) */ */chiudo funzione void main (void) */

}

10


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio 2: Obiettivo: realizzare un programma che faccia lampeggiare un LED (1Sec ON 1Sec OFF) connesso sul pin RA0 solo se viene premuto un pulsante di start connesso sul pin RB0. La successiva pressione di un pulsante di stop connesso sul pin RB1 comporta la cessione del lampeggio del LED. #include <htc.h> #define start RB0 #define stop RB1 unsigned char start_stop; unsigned short conta;

/*denominazione del pin RB0 start */ /*denominazione del pin RB1 stop */ /*variabile

unsigned

short

conta

per

fare

l’interrupt a 1Sec */

static void interrupt isr_code (void) { if (T0IF) { TMR0 = 0; conta=conta++; if (conta>=1000) { /*condizione

della

variabile

conta

vista

anche

nell’esercizio precedente */

if (start) { /*condizione del pulsante start connesso su RB0, se è attivo(livello logico 1, 5V) attivo il lampeggio del LED connesso su RA0 */ RA0^=1; } else { RA0=0; } conta=0;

/*se non è stato premuto non parte il lampeggio */

} T0IF=0;

/*azzero la flag legata a TIMER0 */

} } void main (void) { CMCON=7; TRISA=0x00; PORTA=0; PORTB=0; TRISB=0xFF;

/*regolazione di ingressi e uscite */

/* regolazione dei bit legati a TIMER0: Interrupt globali e legati a TIMER0 */

prescaler,

T0CS=0; PS1=0; PS2=0; PS0=1; TMR0=6; PSA=0; T0SE=0; T0IE=1; GIE=1; while (1) { if (stop==0) { start_stop = 0; } else { if (start==0) { start_stop=1; } } }

valore

del

registro

TIMER0,

abilitazione

/*imposto il prescaler a 1/4*/

/*imposto il prescaler del timer 0*/ /*abilitazione degli interrupt*/

} Con TIMER0 quindi per ottenere degli interrupt di svariati secondi ON/OFF posso regolare il valore di conta: per 1Sec ON/OFF conta sarà uguale a 1000, per 2Sec ON/OFF conta assumerà il valore 2000 e così via. Tutto questo con un TIMER0 di base a 1mSec.

11


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

TIMER1: TIMER1 è un timer/counter a incremento a 16 bit presente sia nel PIC16F628A che nel PIC16F77. Questo timer non può essere utilizzato come timer per il Watchdog. Nella figura sotto riportata è presente lo schema a blocchi del funzionamento di TIMER1 per il PIC16F877.

Figura 2: schema a blocchi del timer1 (http://ww1.microchip.com/downloads/en/devicedoc/30292c.pdf)

Come per TIMER0 si può scegliere se utilizzare il clock interno del microcontrollore o se utilizzare un clock esterno connesso sul pin RC0 (nel caso del PIC16F877 il clock è esterno ma si può implementare come nel caso di TIMER0 un oscillatore esterno connesso appunt0 sul pin RC0, da utilizzare solo per TIMER1). La separazione dei clock è utile se voglio una frequenza di lavoro del timer diversa da quella di oscillazione che utilizza il microcontrollore per eseguire le varie operazioni. Il bit che permette di scegliere il tipo di clock è TMR1CS, se è uguale a 0 utilizzo il clock interno se è uguale a 1 utilizzo un clock esterno al microcontrollore. Nel caso del PIC16F877 a TIMER1 è legata anche una modalità chiamata CCP2 (capture compare) ovvero al pin RC1. Per poter utilizzare questa modalità devo attivare il bit TMR1CS. Una volta stabilito se il clock da utilizzare è interno o esterno, il timer entra nel blocco di prescaler. I bit che regolano il prescaler di TIMER1 sono T1CKPS0, T1CKPS1, T1CKPS2. Le divisioni possibili sono 1/2, ¼, 1/8. Successivamente il timer entrerà nel blocco di sincronizzazione e il bit che regola la sincronizzazione del timer è T1SYNC che sarà messo a 1. L’ultimo bit da regolare è TMR1ON che attiva semplicemente l’uscita di TIMER1. I registri nei quali si scrive il valore che TIMER1 deve assumere sono TMR1H (high) e TMR1L (low). Quando TIMER1 conta fino al valore prefissato la flag chiamata TMR1IF commuta a 1. Questa flag è utilizzata per eventuali routine di interrupt. Esempio di regolazione del TIMER1 1Sec ON e 1Sec OFF:       

Il periodo al quale lavora il microcontrollore è 1uSec TIMER1 può contare fino a 65535 Fisso un valore di TIMER1 ad esempio 50000 (50mSec) Eseguo una sottrazione: 65535-50000=15535 Il numero ottenuto sarà da scrivere nei registri di TIMER1 ovvero TMR1H e TMR1L in codifica esadecimale. In questo caso 15535 è 3C-AF Il valore a destra (AF) ovvero le cifre meno significative sono da scrivere nel registro TMR1L mentre le cifre più significative a sinistra sono da scrivere in TMR1H (3C) Per far si che il timer sia 1Sec ON e 1Sec OFF avendo fissato il valore iniziale a 50000 (50mSec) devo assegnare 20 alla variabile conta: 50mS * 20= 1Sec

12


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, TIMER1 bit: Bit di selezione prescaler di Timer1: T1CKPS1 1 1 0 0

T1CKPS0 1 0 1 0

Valore di prescaler 1:8 1:4 1:2 1:1

T1OSCEN: bit che abilità TIMER1 come oscillatore. T1SYNC: bit che sincronizza TIMER1 con il clock interno: Quando TMR1CS (TIMER1 clock source) = 1: 1 = non sincronizzo il timer con il clock. 0 = sincronizzo il timer con il clock interno. TMR1CS: TIMER1 Clock Source 1 = External clock from pin RC0/T1OSO/T1CKI (on the rising edge) 0 = Internal clock (FOSC/4) TMR1ON: bit che abilita e disabilita TIMER1 1 = TIMER1 abilitato 0 = TIMER1 disabilitato TMR1IE: TIMER1 interrupt enable, abilita l’interrupt legato a TIMER1

ESERCIZI: 1. ESERCIZIO: Realizzare un programma che consenta di far lampeggiare un LED connesso sul pin RA0 1Sec ON e 1Sec OFF. Esercizio 1: Obiettivo: Realizzare un programma che consenta di far lampeggiare un LED connesso sul pin RA0 1Sec ON e 1Sec OFF. #include <htc.h> unsigned short conta; /*dichiarazione della variabile unsigned short conta */ static void interrupt isr_code (void){ if(TMR1IF){ TMR1ON=0; TMR1H=0x3C; /*valore del timer */ TMR1L=0xAF; TMR1ON=1; /*attivazione del TIMER1 */ conta=conta++; if(conta>=20){ /*imposto la variabile conta*/ RA0^=1; conta=0; } TMR1IF=0; } } void main (void){ CMCON=7; /*inizializzazione porte */

13


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, TRISA=0x00; PORTA=0x00; TMR1H=0x3C; TMR1L=0xAF; T1CKPS1=0; T1CKPS0=0; T1OSCEN=0; T1SYNC=1; TMR1CS=0; TMR1IE=1; TMR1ON=1; PEIE=1; GIE=1; conta=0; while(1){ }

/*regolazione bit di TIMER1 */ /*imposto registri ti timer 1*/ /*imposto il valore del prescaler a 1*/ /*abilitazione oscillatore*/ /*oscillatore esterno disabilitato*/ /*abilitazione interrupt e TIMER1 */ /*abilitazione timer1*/ /*abilitazione interrupt*/

} Da questo programma si può notare che TMR1ON è inizialmente a 0 poi una volta caricati i valori del TIMER1 nei registri TMR1H e TMR1L si attiva il bit di abilitazione del TIMER1. Questo perché se il timer fosse stato attivato prima che i valori dello stesso fossero stati caricati nei registri il conteggio sarebbe partito senza aspettare che entrambe i valori dei registri TMR1H e TMR1L fossero stati memorizzati. Ad esempio, come in questo esercizio, se non avessi disabilitato il timer prima di caricare il valore che gli era stato attribuito, il conteggio di TMR1H sarebbe partito senza che prima fosse stato memorizzato il valore di TMR1L, per cui una volta che la flag TMR1IF si attiva, in realtà il tempo di attivazione è della flag è errato. È anche evidente che se il valore in TMR1H ad esempio è FF e non si ha l’accortezza di attivare il TIMER1 solo dopo la memorizzazione del valore dei registri, una volta partito il conteggio TMR1H riparte e diventa 00, falsando di molto il valore prefissato. Per ovviare a questo problema inizialmente TMR1ON è da porre a 0 e successivamente, solo una volta che il microcontrollore ha memorizzato il valore di TIMER1 scritto nei registri TMR1H e TMR1L, lo si riattiva facendo partire il conteggio con i valori esatti prefissati.

14


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

TIMER2: TIMER2 è un timer/contatore a 8 bit a incremento presente sia nel PIC16F628A che nel PIC16F977. Nella figura qui sotto è riportato lo schema a blocchi del funzionamento di TIMER2

Figura 3: schema a blocchi timer 2 (http://ww1.microchip.com/downloads/en/devicedoc/30292c.pdf)

TIMER2 ha un funzionamento più semplice rispetto agli altri due timer. Questo timer dispone di un prescaler e di un postscaler. Il prescaler è regolato da 3 bit: T2CKPS0, T2CKPS1, T2CKPS2; il postscaler è regolato invece da altri 3 bit: T2OUTPS0, T2OUTPS1, T2OUTPS2 e TOUTPS3. Per questo timer il valore da prefissare è da scrivere nel registro PR2. Una volta avviato il timer conterà fino ad arrivare al valore di PR2. TIMER2 funziona solamente con il clock interno. La flag legata a TIMER2 è TMR2IF. TIMER2 bit: Bit di prescaler di TIMER2: TOUTPS3 TOUTPS2 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1

TOUTPS1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

TOUTPS0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

TMR2ON: Bit che abilita il TIMER2 1 = TIMER2 è abilitato 0 = TIMER2 è disabilitato Bit che regolano il prescaler di TIMER2 T2CKPS1 0 0 1

T2CKPS0 0 1 x

Valore di prescaler 1:1 1:4 1:16

15

Valore di postscaler 1:1 1:2 1:3 1:4 1:5 1:6 1:7 1:8 1:9 1:10 1:11 1:12 1:13 1:14 1:15 1:16


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

ESERCIZI: 1. ESERCIZIO: realizzare un programma che consente di far lampeggiare tre LED connessi uno a RA0, uno a RA1 e uno a RA2. Esercizio 1: Obiettivo: realizzare un programma che consente di far lampeggiare tre LED connessi uno a RA0, uno a RA1 e uno a RA2. Il LED connesso su RA0 è legato a TIMER0 e lampeggia 1Sec ON e 1Sec OFF, il LED connesso su RA1 è legato a TIMER1 e lampeggia 2Sec ON e 2Sec OFF, il LED connesso su RA2 è legato a TIMER2 e lampeggia 3Sec ON e 3Sec OFF. #include <htc.h> unsigned short CONTA;

/*dichiarazione delle variabili conta legate a ogni timer */

unsigned short US_CONTA; unsigned short US0_CONTA; static void interrupt isr_code (void) { if (T0IF){ TMR0=0; CONTA=CONTA++; if (CONTA>=1000){ RA0^=1; CONTA=0; } T0IF=0; } if (TMR1IF){

/*interrupt legato a TIMER0 */ /*imposto la variabile conta*/

/*interrupt legato a TIMER1 */

TMR1ON=0;

TMR1H=0x3C; TMR1L=0xAF; TMR1ON=1; US_CONTA=US_CONTA++; if (US_CONTA>=40){ RA1^=1; US_CONTA=0; } TMR1IF=0; } if (TMR2IF){ US0_CONTA=US0_CONTA++; if (US0_CONTA>=3000){ RA2^=1; US0_CONTA=0; } TMR2IF=0; } } void main (void) { CMCON=7; TRISA=0x00; PORTA=0; T0CS=0; PS1=0; PS2=0; PS0=1; TMR0=6; PSA=0; T0SE=0;

/*imposto registri ti timer 1*/

/*imposto conta a 40*/

/*interrupt legato a TIMER2 */ /*imposto conta a 3000*/

/*inizializzazione porte */ /*regolazione dei bit di tutti i timer */ /*imposto il prescaler*/

/*imposto il registro di timer 0 a 6*/

16


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, T0IE=1; TMR1H=0x3C; TMR1L=0xAF; T1CKPS1=0; T1CKPS0=0; T1OSCEN=0; T1SYNC=1; TMR1CS=0; TMR1IE=1; TMR1ON=1; PEIE=1; T2CKPS1=0; T2CKPS0=1; TOUTPS3=0; TOUTPS2=0; TOUTPS1=0; TOUTPS0=0; PR2=250; TMR2ON=1; TMR2IE=1; GIE=1; CONTA=0; US_CONTA=0; US0_CONTA=0; while(1){

/*stabilisco quali devono essere i valori dei registri di timer1*/ /*decido il prescaler di timer 1 a 1*/ /*disabilitazione dell'oscillatore*/ /*abilitazione di timer1*/

/*abilitazione interrupt*/ /*prescaler timer 2 impost. a 4*/ /*imposto il prescaler di timer2 a 1*/

/*abilito timer 2 e gli interrupt*/

/*azzero tutte le variabili conta*/

} }

17


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

GESTIONE RIMBALZI Quando viene premuto un pulsante si possono verificare dei rimbalzi e questo porta il circuito in esamine ad avere dei problemi legati all'indecisione del livello al quale il pulsante fa riferimento. Ecco come risolvere gli antirimbalzi via software:

Figura 4: 1° flow chart con temporizzazione

18


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 5: 2° flow chart con temporizzazione e chiarimenti

19


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Considero Pflt: valore filtrato del pulsante P. è una flag software che creo dentro il programma VERSIONE SEMPLICE

Figura 6: versione semplice

20


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

VERSIONE AUTOMA:

Figura 7: automa

Come evento di retrigger considero solo il fronte di salita del segnale filtrato

Figura 8: gestione pulsante

21


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 9: gestione interrupt

PWM PWM è la modulazione a larghezza d'impulso. In questo tipo di modulazione è la larghezza (durata) degli impulsi che varia in funzione dell'informazione; il periodo e l'ampiezza degli impulsi sono mantenuti costanti. La modulazione PWM offre il vantaggio di un più alto rendimento, potendo il trasmettitore lavorare a livelli di saturazione; richiede però un intervallo fra gli impulsi, che tenga conto del tempo di salita non nullo degli impulsi stessi e del tempo di risposta del sistema, e questo limita l'utilizzazione del canale. Il PWM è utilizzato per regolare gli alimentatori switching, i motori elettrici....ecc....

Figura 10 PWM (http://ww1.microchip.com/downloads/en/devicedoc/30292c.pdf)

Il duty cycle è uguale al rapporto tra la durata di un impulso τ ed il periodo T. Il valor medio della funzione risulterà essere uguale all'ampiezza per il τ fratto il periodo T.

22


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

PWM NEL MICRO 877: Esistono due modi per generare segnali PWM con i Pic: • Il primo (PWM software) consiste nello scrivere un codice di programmazione che generi un'onda quadra, di opportuna frequenza e duty cycle, assegnata su un certo piedino di uscita, • Il secondo (PWM hardware) consiste nell'utilizzare delle periferiche apposite dei PIC, i moduli CCP (capture compare PWM), per generare l'onda. I moduli CCP hanno una risoluzione fino a 10 bit. Grazie a questa risoluzione noi possiamo cambiare la durata di un impulso tenendo in considerazione solo 10 bit. Il pic 16F877 dispone di due moduli CCP (CCP1 e CCP2), che utilizzano rispettivamente i piedini RC2 (pin 17) ed RC1 (pin 16) Il datasheet del PIC16F877 fornisce tutte le indicazioni necessarie per poter generare un PWM Al suo interno il blocco del PWM si presenta nel seguente modo:

Figura 11 Blocco del PWM all'interno del micro (http://ww1.microchip.com/downloads/en/devicedoc/30292c.pdf)

Figura 12 rappresentazione grafica del PWM (http://ww1.microchip.com/downloads/en/devicedoc/30292c.pdf)

23


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Da questi due blocchi si possono fare varie considerazioni: 

Tramite il blocco CCP1 e' possibile generare un PWM sul pin RC2/CCP1

PR2 di TIMER2: registro che definisce la frequenza del segnale (periodo)

CCPR1L (8bit) insieme con i bit 5 e 4 di CCPICON (totale 10 bit) stabiliscono la durata a livello alto del segnale

Tosc: periodo di oscillazione interna 4MHz

Il periodo del segnale generato è: T = [PR2 + 1] * 4 * Tosc * (fattore di prescaler di TMR2)

ONDA QUADRA: Una possibile realizzazione del programma con assembler potrebbe essere: ; esempio: si vuole generare una froma d'onda di periodo T = 1mS e TH = 0,8mS ; A 10MHz di clock si ha un Tosc = 250nS. Con fattore di prescaler di TMR2 pari a 4 ; ottengo i seguenti valori da scrivere nei registri: ; ; KPRD = [1mS / (4 * 250nS * 4)] - 1 = 0F9H (valore da mettere in PR2) ; KDC = (0,8mS / (250nS * 4)) = 320H (1100 1000 00) che significa che CCP1RL deve essere ; caricato con 1100 1000 (0C8H) mentre CCP1CON<5:4> vanno ; caricati con 00H ;-------------------------------------------------------------include "P16F877.INC" ORG 000H goto startMain ORG 004H goto ISR_code

; interrupt Service Routine

startMain: ; ; inizializzazioni varie per gestire ; PORT_B come output sulla porta RB0 ; ....... ;...... bcf STATUS,6 bsf STATUS,5 ; seleziono il banco 1 bcf PIE1,1 ; disabilita interruzioni da TIMER 2 bcf TRISC,2 ; RC2/CCP1: USCITA movlw 0F9H ; movwf PR2 ; carico il valore del periodo T del PWM bcf STATUS,5 ; SELEZIONO banco 0 movlw 0C8H ; carica il byte alto del TON movwf CCPR1L ; movlw 05H ; movwf T2CON ; TIMER2 con prescaler N = 4; ; TMR2 = ON movlw 0CH ; devo caricare CCP1CON<5:4> CON 00

24


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ; e avviare la generazione della quadra ; 0CH: metto in modalita' PWM ciclo add .100,.90 goto ciclo ISR_code: nop nop nop retfie end L'obiettivo però è quello di realizzare un'onda quadra in C. Per l’uso di un modulo CCP bisogna eseguire i seguenti steps: 1. Definire il periodo del segnale PWM generato andando a scrivere un opportuno valore nel registro PR2 del PIC 2. Definire il modulo CCPx come modulo PWM 3. Abilitare il timer Tmr2 con opportuno prescaler 4. Definire il Duty cycle del segnale generato Vogliamo ottenere un periodo del segnale pari a 5 KHz. Per fare questo dobbiamo agire sul periodo del segnale, considerando che la frequenza è l'inverso del periodo. Nel programma in C imposto un valore di PR2 pari a 249 (per avere la massima risoluzione), il prescaler di timer2 lo imposto ad un valore pari a 1, in modo che non influenzi il mio periodo. Facendo gli opportuni calcoli, utilizzando la formula per trovare il periodo riportata sopra, la frequenza risulta essere pari a 5 KHz. Bisogna dire inoltre, che l'ampiezza di tutti i segnali in uscita al micro sarà di 5 volt. #include <htc.h> void main (void){ PR2=0xF9; CCPR2L=0x7D; CCP2CON=0x0C; TRISC=0x00; T2CKPS1=0; T2CKPS0=0; // T2CON = TMR2ON=1; PIE1= 0; PEIE=0; GIE=0; while(1){ asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); } }

/*imposto il valore di PR2 a 249*/

/*imposto il valore di TRISC*/ /*imposto il prescaler a 1*/

/*abilito timer2*/ /*abilitazione degli interrupt*/

Ovvio che i valori assegnati non sono numeri decimali, ma bensì numeri esadecimale che corrispondo ai valori riportati prima della scrittura del programma.

25


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

DENTE DI SEGA: Se vogliamo generare, invece, un dente di sega, ovviamente useremo gli stessi valori dell'onda quadra. Dovremo, stavolta, andare ad abilitare anche il timer2 in modo che il valore di CCPR2L aumenti di una unità all'interno dell'interrupt.....secondo questa ipotesi, il valore ci CCPR2L aumenta fino a che non andiamo a tagliare l'onda mediante un filtro passa-basso, in modo da ricavare la continua (valor medio) del segnale, quindi in questo caso un dente di sega. Il programma in C si presenta in questo modo: #include <htc.h> static void interrupt isr_code (void){ if(TMR2IF){ CCPR2L++; TMR2IF=0; } } void main (void){ PR2=0xF9; CCPR2L=0x7D; CCP2CON=0x0C; TRISC=0x00; T2CKPS1=0; T2CKPS0=0; TMR2ON=1; TMR2IE=1; TMR2IF=0; PEIE=1; GIE=1; while(1){ asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); }

/*imposto il valore di PR2 a 249*/

/*imposto il valore di TRISC*/ /*imposto il prescaler a 1*/ /*abilito timer2*/

/*abilito gli interrupt*/

} Quando TMR2IF è a 1 il valore di CCPR2L aumenta progressivamente. L'uscita del micro la dobbiamo filtrare con un filtro passa basso (componenti passivi: resistenza e condensatore) dimensionando opportunamente i valori di questi due componenti. Lo schema circuitale si presenta così:

Figura 13: Schema del filtro

26


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

27


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Il filtro al suo interno è molto semplice:

Figura 14 Filtro passa basso passivo

Ponendo quindi questo tipo di filtro in uscita al micro, andiamo a filtrare l'uscita, ricavando soltanto il valore medio del segnale (componente continua). Il valore medio si può definire come: A*τ/T. Un valore generalizzato della resistenza può essere: 3KΩ Un valore generalizzato del condensatore può essere: 220nF Questo perchè il prodotto tra capacità e resistenza deve essere uguale al periodo del mio segnale, che è 200*10-6, proprio perchè la mia frequenza è 5KHz e quindi il periodo (1/f) è uguale a questo valore. Dico generalizzato perchè questo tipo di filtro lo posso usare per tutti gli altri tipi di segnali in questione in questa relazione.

28


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

ONDA TRIANGOLARE: Per ottenere, invece, un'onda triangolare è necessario fare prima degli utili ragionamenti ed impostare il flow chart per il programma che mi consentirà di ottenere l'onda triangolare appunto.

Figura 6 flow chart per il dente di sega

29


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Il programma in C è stato impostato in questo modo: #include <htc.h> unsigned char rise_fall; static void interrupt isr_code (void){ if(TMR2IF){ /*seguo filo e per segno quanto riportato sopra dal flowchart*/ if(rise_fall==0){ CCPR2L++; if(CCPR2L==PR2){ rise_fall=1; } } else{ CCPR2L--; if(CCPR2L==0){ rise_fall=0; } } } TMR2IF=0; } void main (void){ PR2=0xF9; CCPR2L=0x7D; CCP2CON=0x0C; TRISC=0x00; T2CKPS1=0; T2CKPS0=0; TMR2ON=1; TMR2IE=1; TMR2IF=0; rise_fall=0; PEIE=1; GIE=1; while(1){ asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); }

/*imposto il valore di PR2 a 249*/

/*imposto il valore di TRISC*/ /*imposto il prescaler a 0*/ /*abilito timer2*/

/*azzero rise_fall*/ /*abilito gli interrupt*/

}

RISEFALL è una unsigned char che mi sta ad indicare quando sono arrivato in alto, oppure quando mi trovo in basso nell'onda triangolare. Nella routine di interrupt se RISEFALL è a 0 significa che mi trovo in basso, perciò devo incrementare CCPR2L fino al valore di PR2, in questo modo arrivo al massimo valore in altezza. Mentre se RISEFALL è a 1, significa che mi trovo già nella parte alta dell'onda, perciò devo decrementare il valore di CCPR2L fino ad un valore pari a 0, in questo modo RISEFALL sarà a zero, quindi significa che sono nella "parte bassa" dell'onda. Ovvio che anche in questo caso l'onda deve essere filtrata, con le ipotesi del filtro che sono state fatte in alto all'inizio de questa relazione.

30


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

ONDA SINUSOIDALE: Ottenere un'onda sinusoidale è molto più complicato perchè vanno fatte varie considerazioni. Innanzitutto dobbiamo considerare che su un segmento un seno ha un valore di 2. Dato che il nostro PR2 arriva ad un valore di 255, dobbiamo fare in modo che il nostro segmento "sinusoidale" di valore 2 sia uguale ad un segmento lungo 255 unità. Divido il segmento di 2 in 255 parti:

Quindi quando ho (1 + sen x) devo discretizzare o campionare il valore di x. Discretizzare significa: dato un valore di x a quale numero compreso fra 0 e 255 corrisponde? Imposto una proporzione e trovo che:

Se divido la mia x in 100 valori da quantizzare ottengo che:

Questa formula tratta da un ragionamento indica i valori quantizzati che mi permetteranno di ottenere una sinusoide estesa in un intervallo di 100 step. Per calcolare tutti i singoli valori (dato che sono 100 valori) posso usare excel. In excel è stato impostato così:

CCPR2Lmax 249

STEP 100

i 0

125

PI.GRECO 3,14

la formula impostata in excel per trovare i vari valori è .......=(1+SEN(A5*2*$C$2/$B$2))*$A$2/2 (formula sopra riportata) Con i che va da 0 a 100 Ecco una piccola parte del programma in excel:

31


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

CCPR2Lmax 249

STEP 50

i 0 1 2 3 4 5

125 140 155 170 184 198

PI.GRECO 3,14

, , , , , ,

125, 140, 155, 170, 184, 198,

La quarta colonna unisce il contenuto della seconda colonna con quello della terza colonna in modo concatenato. Questo può tornare utile nel momento in cui dobbiamo andare ad inserire nel programma in C i valori ottenuti.... per unire la virgola al singolo numero ed ottenere così i numeri riportati nella quarta colonna, abbiamo immesso la seguente funzione: =CONCATENA(TESTO(B5;"##0");C5) Ecco come usare la funzione concatena:

CONCATENA Unisce due o più stringhe di testo in un'unica stringa di testo. Sintassi CONCATENA (testo1;testo2; ...) Testo1; testo2; ... sono da 2 a 255 elementi di testo da unire in un unico elemento di testo. Gli elementi di testo possono essere stringhe di testo, numeri o riferimenti di celle singole. Osservazioni Per unire gli elementi di testo è inoltre possibile utilizzare l'operatore di calcolo e commerciale (&) della funzione CONCATENA. Ad esempio, =A1&B1 restituisce lo stesso valore di =CONCATENA(A1;B1). Esempio Per facilitare la comprensione dell'esempio, è possibile copiarlo in un foglio di lavoro vuoto. 1.

Creare una cartella di lavoro o un foglio di lavoro vuoto.

2.

Selezionare l'esempio nell'argomento della Guida.

32


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Non selezionare le intestazioni di riga o di colonna.

NOTA

3.

Premere CTRL+C.

4.

Nel foglio di lavoro selezionare la cella A1, quindi premere CTRL+V.

5.

Per passare dalla visualizzazione dei risultati alla visualizzazione delle formule che restituiscono i risultati, premere CTRL+' (apostrofo) oppure fare clic sul pulsante Mostra formule nel gruppo Verifica formule della scheda Formule. A 1

Dati

2

trota

3

specie

4

32 Formula

Descrizione

=CONCATENA("La popolazione fluviale relativa alla ";A2;" ";A3;" è uguale a ";A4;"/km")

Concatena una frase dai dati indicati (La popolazione fluviale relativa alla specie trota è uguale a 32/km)

(esempio tratto dalla guida di EXCEL) In C il programma è così: #include <htc.h> unsigned char putt_vett; unsigned char rise_fall; const unsigned char VETTSIN[]={ 125, . . . . 116 }; static void interrupt isr_tim (void){ putt_vett++; if(putt_vett>99){ putt_vett=0; } CCPR2L=VETTSIN[putt_vett]; }

33


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, void main (void){ PR2=0xF9; CCPR2L=0x7D; CCP2CON=0x0C; TRISC=0x00; T2CKPS1=0; T2CKPS0=0; TMR2ON=1; TMR2IE=1; TMR2IF=0; rise_fall=0; PEIE=1; GIE=1; putt_vett=0; while(1){ asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); } }

/*imposto il valore di PR2 a 249*/

/*imposto il valore di TRISC*/ /*imposto il prescaler a 0*/ /*abilito timer2*/

/*azzero rise_fall*/ /*abilito gli interrupt*/ /*azzero putt_vett*/

Tutti i vari valori li inseriamo in un vettore di 100 elementi e per ogni valore di CCPR2L si associa un valore di x ottenuto con excel per formare appunto l'onda sinusoidale. Infatti in base al valore di puttvett (unsigned char) io vado a prelevare dal vettore il rispettivo valore che deve assumere CCPR2L in un determinato punto. All'oscilloscopio la forma d'onda si presenta in questo modo: RIFLESSIONI AL RIGUARDO: è da notare che tutti i segnali di uscita dal micro sono stati filtrati dal filtro passa basso passivo. Il filtro è stato progettato in modo che tagliasse ad una frequenza di 5 KHz. Ciascuna onda è stata programmata attraverso una serie di diversi ragionamenti spiegati sopra. Dal punto di vista pratico, è stato utilizzato MPlab. Per ogni segnale è stato creato un progetto, con il rispettivo programma in C. Dopo la compilazione del programma si passava (nel programma) in modalità MPlab ICD2. Grazie a questa modalità è possibile interfacciare il computer con una picboard e di conseguenza programmare l'877 presente al suo interno. Una volta programmato il micro si passava in simulazione e si faceva partire il programma. Dal micro si portava l'uscita sulla breadboard, all'ingresso del filtro. Ottenuta la componente continua (valor medio), l'uscita del filtro si portava per l'appunto all'oscilloscopio. In tutte le foto riportate sopra dell'scilloscopio è stata utilizzata una scala per la tensione di 1V/div. Deve essere considerato inoltre che in tutti i casi riportati (foto) i segnali avevano una frequenza di 5 KHz, che era la richiesta dell'obiettivo di questa esperienza. è stato indispensabile anche l'utilizzo del datasheet per poter configurare al meglio tutte le varie impostazioni dei vari registri.

34


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

MODULAZIONE AMPIEZZA DI UN'ONDA SINUSOIDALE: Il programma in C si presenta in questo modo: #include <htc.h> #define MAX_DIM_VETT 50 unsigned char punt; unsigned char conta; unsigned char stato; unsigned char i; unsigned char vett[10]; unsigned short somma; unsigned char media; unsigned char mediaOLD; bank2 unsigned char vettsin_pwm[MAX_DIM_VETT]; bank1 unsigned char vettsin_pwm_img[MAX_DIM_VETT]; const unsigned char vettsin[] = { 125,140,155,170,184,198,210,220,230,237, 243,247,249,249,247,243,237,230,221,210, 198,185,170,156,140,125,109,94,79,65,52, 39,29,20,12,6,2,0,0,2,6,12,19,28,39,51,64, 78,93,109, }; static void interrupt isr_tim (void){ if (TMR2IF){ if(punt>=MAX_DIM_VETT - 1){ punt = 0; if (stato == 2){ stato = 3; } } else{ punt = punt + 1; } if(stato == 3){ vettsin_pwm[punt] = vettsin_pwm_img[punt]; conta = conta + 1; if (conta>=MAX_DIM_VETT){ stato = 0; conta = 0; } } CCPR2L = vettsin_pwm[punt]; } TMR2IF = 0; } void main (void){ PR2=0xF9; /*imposto il valore di PR2*/ CCPR2L=0x7D; /*imposto i valori di CCPR2*/ CCP2CON=0x0C; TRISC=0x00; /*impostazione di TRISC*/ T2CKPS1=0; /*prescaler a 1*/ T2CKPS0=0; TMR2ON=1; /*abilitazione del timer 2*/ TMR2IE=1; TMR2IF=0; /*disabilitata la flag di TMR2*/ PCFG3=0;

35


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, PCFG2=0; /*configurazione dei bit di controllo*/ PCFG1=0; PCFG0=0; ADFM=0; /*formato bit (giustificazione a sinistra*/ CHS2=0; /*selezione dei canali*/ CHS1=0; CHS0=0; ADCS1 = 1; /*clock utilizzato per la conversione*/ ADCS0 = 1; ADON = 1; /*abilitazione dell'AD*/ PEIE = 1; /*abilitazione interrupt*/ GIE = 1; while(1){ somma = 0; for(i=0; i <= 9; i++){ //salvo i risultati in un vettore di 10 elementi ADGO = 1; while(ADGO != 0) {}; // ASPETTO fino a che non e' terminata la conversione vett[i] = ADRESH; somma = somma + vett[i]; } media = somma / 10; switch (stato){ case 0: if(media != mediaOLD){ mediaOLD = media; } stato = 1; break; case 1: for (i=0; i < MAX_DIM_VETT; i++){ vettsin_pwm_img[i] = (unsigned char)(((unsigned short)(media * vettsin[i])) / 255); } stato = 2; break; case 2: break; case 3: break; } } }

36


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, SVOLGIMENTO:

Figura MAIN

Il programma concettualmente è molto semplice. Innanzi tutto vanno inizializzate tutte le variabili e le porte. Per esempio inizializziamo il puntatore punt, la variabile conta, stato, il vettore, le media (tutte unsigned char) ed anche somma che invece deve essere una unsigned short. Per quanto riguarda i 2 vettori (il vettore di PWM e quello della sua immagine) li andiamo ad inserire attraverso l'istruzione bank1 o bank2 all'interno di tali banchi. Ognuno di questi due banchi è di 80 Bytes. Ciascuno quindi, può contenere solo un vettore, dato che nel nostro caso un vettore è di 50 elementi. Imponiamo al programma di memorizzare il loro contenuto in tali banchi… In base al datasheet ho la possibilità di gestire (come di consuetudine) ben 4 banchi. Inoltre andiamo a fare tutte le inizializzazioni del PWM (realizzazione dell'onda sinusoidale) e della conversione AD, che mi permetterà di andare a modificare l'ampiezza della mia sinusoide.

37


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Una volta che è stato inizializzato tutto il necessario si può procedere con l'acquisizione. Effettuiamo 10 conversioni AD e le inseriamo all'interno di un vettore (vett) di 10 elementi. Fatte tutte le acquisizione sarà fatta la media. In base alla media ottenuta l'ampiezza dell'onda sinusoidale ne sarà modificata. Girando un trimmer (sul'ingresso AN1) vado a variare i valori dell'acquisizione AD. Di questi valori, come è già stato detto, ne faccio la media. Siccome i valori acquisiti dipendono dal trimmer, e di conseguenza, in base a questi valori, è possibile gestire il vettore della sinusoide, si può concludere che l'ampiezza della sinusoide varia proprio in base a come giro il trimmer

Figura Collegamento del trimmer all'ingresso di AN1

Dopodichè realizzo un case, nel quale, nel primo stato, vado a fare il confronto tra mediaOLD (vecchio valore della media effettuata) e della nuova media che è stata calcolata. dopo che è stato fatto questo passaggio vado nello stato 1 dove devo andare a calcolare i nuovi valori da inserire nell'immagine del vettore del PWM. Quindi tutti i nuovi valori li vado ad inserire nel vettore immagine di PWM. Questo dà il tempo al programma, ma soprattutto al risultato finale (variazione dell'ampiezza dell'onda sinusoidale), di variare nel modo più uniforme possibile. E il programma ha il tempo di fare tutte le acquisizioni necessarie ed i calcoli necessari,. che sicuramente utilizzano un tot di tempo. Lavorando su due vettori è possibile, quindi, lavorare molto meglio.

38


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 1ÂŞ soluzione dell'interrupt

39


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 2ª soluzione dell'interrupt

La differenza tra queste due soluzioni di interrupt è nel fatto che nella 1ª soluzione il valore del vettore del pwm lo vado a mettere in CCPR2L all'inizio, mentre nella seconda soluzione lo vado a mettere alla fine. Quindi nella seconda soluzione vado a mettere dentro CCPR2L i nuovi valori che sono stati passati al vettore del pwm. In questo modo questa soluzione risulta migliore. Nella prima soluzione vado a mettere il valore del vettore PWM dentro CCPR2L, prima che il main abbia fatto il confronto tra i valori delle medie e le varie acquisizioni. Mentre nella seconda soluzione il valore di CCPR2L lo imposto dopo aver fatto tutto il necessario (media e nuove acquisizioni). Proprio per questo la seconda soluzione risulta essere più efficace. Il vettore immagine di PWM quindi è un supporto, "una via di transito". Risulta essere un appoggio delle nuove acquisizioni, perché poi questi valori verranno trasferiti all'interno del vettore PWM. Quindi, intanto

40


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, che l'immagine del vettore viene riempita, nel vettore del pwm ci sono tutti i valori dell'ampiezza della sinusoide. Per quanto riguarda i valori che sono all'interno di vettsin[] vengono impostati in base ad un campionamento di 50 elementi. I valori che vengono inseriti all'interno dell'immagine del vettore sono:

Girando il trimmer, variano tutte le acquisizioni AD. Di queste acquisizioni faccio la media. Con il valore della media posso riempire il vettore del PWM, e con questi nuovi valori, all'interno del vettore posso variare l'ampiezza della sinusoide (infatti all'interno dell'interrupt il vettore del PWM lo metto in CCPR2L) Questo esercizio è stato molto interessante, ma soprattutto molto stimolante per poter realizzare qualcosa che all'apparenza potrebbe sembrare molto difficile. è stata utile per poter capire innanzi tutto come possiamo gestire i banchi. Infatti quando utilizziamo molti elementi, la memoria occupata aumenta, e quindi nasce la necessità di dover gestire anche più banchi contemporaneamente. è stato anche importante vedere come nasce la gestione tra un vettore e la sua immagine. Utilizzando due vettori (di cui uno è l'immagine) è possibile fare in modo che il programma abbia il tempo di fare tutte le acquisizioni e i calcoli necessari. Quindi il vettore che funge da immagine è un supporto. Riassumendo perciò, quando giro il trimmer, variano i valori delle acquisizioni e di conseguenza varia anche la media che viene fatta di tali acquisizioni. La media ottenuta (attraverso una proporzione) mi permette di andare prima a riempire l'immagine del vettore PWM e di conseguenza (grazie all'interrupt) di passare questi valori all'interno del nostro vettore PWM. Questi valori che sono al suo interno vengono messi all'interno di CCPR2L, e quindi varia l'ampiezza dell'onda sinusoidale in uscita.

41


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Programmi svolti in Labview ESERCIZIO: modulazione ampiezza di una sinusoide. Il primo esercizio che abbiamo fatto con labview è stato quello di realizzare un programma che potesse, via seriale, variare l'ampiezza di un'onda sinusoidale. Si è già parlato della modulazione d'ampiezza di una sinusoide nella sezione del PWM. Ma come è possibile poter variare l'ampiezza di una sinusoide? Grazie all'utilizzo di labview lo abbiamo potuto fare con un trimmer (virtuale). Ecco il programma e la sua spiegazione: Tutto è cominciato con questo blocco:

Figura 15: blocco

Tale blocco è detto "proprietà del nodo". Esso ottiene (letture) e / o imposta (scrive) proprietà di un riferimento (che in questo caso è VISA). Viene utilizzato per ottenere o impostare le proprietà e i metodi su istanze di applicazione locale o remoto, VIS, e oggetti.

Figura 16: property node

Il nodo della proprietà si adatta automaticamente alla classe dell'oggetto cui si fa riferimento. La proprietà che utilizziamo noi in questo caso è VISA. VISA è un linguaggio standard input/output per programmi di strumentazione. Tale standard segue una precisa gerarchia interna e consente i gestire anche la comunicazione seriale. All'interno del blocco INSTR vengono gestite tutte le proprietà della seriale. Nel primo ingresso portiamo l'oggetto che sarà soggetto a gestione da parte del programma, cioè il registro VISA e quindi la seriale. Nel secondo ingresso è possibile gestire gli errori ed ottenere informazioni esatte su di essi. A questo punto portiamo all'ingresso di tale blocco tutti i parametri che dovremo andare a gestire e che quindi riguardano la seriale. Nel terzo ingresso gestiamo il timeout (10s), poi il baud rate (velocità), la quantità dell'informazione e lo stop bit. Tutti questi parametri saranno impostati in base alle caratteristiche della seriale ed in base alle nostre impostazioni nel programma in C. Come è evidente possiamo gestire anche il bit di parità che in questo caso è a 0. L'ingresso "message based settings" specifica se un'operazione di lettura è terminata una volta che viene ricevuto il carattere di terminazione. Esso serve per la lettura di un carattere e che quindi comporta la termination di un'azione. Il flow control serve per gestire

42


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, la trasmissione e la ricezione. l'end mode for reads serve per andare ad interrompere l'azione di lettura, mentre l'ultimo ingresso è utilizzato per l'hand shake. In uscita da tale blocco potremo visualizzare gli errori che andremo a salvare in una variabile.

Figura 17: gestione del trimmer

Figura 18: registro VISA

Il registro VISA WRITE scrive il dato che gli proviene dal write buffer al device o all'interfaccia specificata da VISA resource name. Il return count conta o contiene il numero attuale dei byte scritti. L'error out riporta gli errori effettuati durante la comunicazione. I dati che in questo caso dovevamo andare a scrivere provenivano dal trimmer. In base ai valori del trimmer, essi venivano gestiti dal build array che concatena il flusso variabile di valori che proviene dal trimmer e dopodichè converte il byte array in una stringa in modo che possa essere letta dal blocco visa.

Figura 19: build array

Figura 20: conversione in una stringa Figura 21: da byte a stringa

43


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 22: impostazioni del trimmer

I valori così gestiti venivano trasmessi via seriale dal pc al pic che elaborava tali valori, secondo quanto riportato all'inizio di questo libro nella sezione del PWM.

ESERCIZIO: Accensione Led su PicBoard tramite comunicazione seriale. Il led è un controllo che quando è acceso invia tramite seriale il valore 255 che fa accendere il led presente sulla scheda. Viceversa, quando è spento, la seriale invia il valore 0 e il led sulla scheda viene spento. Per poter fare tutto ciò ovviamente, come prima cosa abbiamo dovuto scrivere il programma in C. /*Accensione e spegnimento di un led tramite comunicazione seriale */

#include <htc.h> unsigned char aux; unsigned char ric; void main (void){ /*---- Inizializzazione della Ricezione e Trasmissione Seriale -----*/

SPBRG = 25; BRGH = 1; SYNC = 0; SPEN = 1; RCIE = 0; CREN = 1; TXEN = 1;

// Impostazione della seriale in modo // da avere 9600 baud/s // e tutte le altre impostazione della seriale. //abilitazione ricezione e trasmissione

/*---- Inizializzazione delle porte -----*/

TRISC = 0b10100000; TRISB = 0x00; TRISA = 0xFF;

//Inizializzazione delle porte

/*---- Abilitazione degli interrupt ----*/

while(1){ if(RCIF){ if(FERR || OERR){ //verifico la presenza di eventuali errori CREN = 0; aux = RCREG; CREN = 1; } else{ ric = RCREG; // copio il contenuto di RCREG in una variabile

44


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, if(ric == 255){ RB4 = 1; // se RCREG = 255 accendo il led, altrimenti } // spengo il led else{ RB4 = 0; } } RCIF = 0; } if(TXIF){ if( RC5 == 1){ aux = 255; //Nel caso l'ingresso RC5 sia a 1, viene inviato via seriale } else{ aux = 0; } TXREG = aux; TXIF = 0;

un //valore 255 //Nel caso l'ingresso RC5 sia a 1, viene inviato via seriale un //valore 0

} } } Il programma è molto semplice ed intuitivol'inizializzazione della porta seriale è la medesima dell'esercizio precedente:

Figura 23: inizializzazione porta seriale

45


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Ecco come si presentava il front panel:

Figura 24: front panel

46


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Cerchiamo di capire come possiamo da pc, dire al micro come in effetti si possa accendere o spegnere un led:

Figura 25: trasmissione da pc a micro

Nel blocco verifichiamo se il led (impostato come controllo) è true o false. Nel caso True abbiamo collegato una costante 255. Nel caso False una costante 0. In uscita dal blocco verrà mandato il valore collegato al corrispondente stato. VALORE_TRASMESSO_DA_PC_A_TARGET è il nostro led di comando. Se esso è ON in uscita abbiamo 255 (questo valore consentirà dal programma del micro gestire l'uscita del micro stesso e quindi di poter accendere il led connesso all'uscita). Se invece il led è OFF viene fatto passare il valore 0 in uscita. Quando questo valore verrà ricevuto dal nostro micro, il led connesso sulla porta impostata dal programma si spegnerà. Questa operazione viene svolta proprio grazie al blocco di selezione:

Figura 26: select

Tale blocco (in base al valore di s) farà passare la condizione connessa a t (true) o f (false). I valori li abbiamo concatenati in un build array e di conseguenza il valore viene convertito in una stringa in modo che possa essere gestito dal blocco VISA:

Figura 27: build array

47


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 28: conversione in una stringa

A questo punto il micro ha ricevuto il valore 0 o 255. Entrambi i valori sono gestiti dal micro stesso grazie al programma in C. Se il micro riceve 0 il led verrĂ spento, mentre se il micro riceve 255 il led verrĂ acceso. Tutto questo ciclo viene svolto all'interno di un while. Anche la parte di ricezione viene gestita all'interno di un while. Sia la parte di ricezione che di trasmissione vengono gestite da un unico while. Questo significa che la parte di ricezione e la parte di trasmissione vengono effettuate in modo parallelo. Ecco la parte di ricezione:

Figura 29: blocco di ricezione

48


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, In questo caso gestiamo un VISA di lettura (cosa che ci fa capire che riguarda il blocco di ricezione). La costante 1 all'ingresso del VISA serve per gestire il numero di byte che possono essere letti. Verranno salvati i bit arrivati in una variabile di nome "bit arrivati". C'è sempre la possibilità di dover visualizzare e gestire gli errori. Il valore in uscita dal blocco visa viene convertito da stringa a Byte array e mandato (prima all'index array, dato che abbiamo un byte array) alla variabile di ricezione RX_value. E se ci sono degli errori? Ecco come vengono gestiti:

Figura 30: gestiuone errori

Questo blocco serve ad azzerare gli errori (se presenti) in modo che non si ripercuotano nei successivi cicli. Quindi se il valore ricevuto dal micro è 255 (viene effettuato questo confronto) viene acceso il led che corrisponde al VALORE_TRASMESSO_DA_TARGET_A_PC. Per gestire gli errori abbiamo usato il blocco di cluster:

Figura 31: cluster

In base all'impostazione del blocco sopra, se non ci sono errori, il valore ricevuto verrà accettato e se sarà uguale a 255 verrà anche acceso il led. Per convertire la stringa in byte array:

Figura 32: conversione della stringa

49


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, L'index array serve solo per gestire il byte array e salvarlo nella variabile di ricazione:

Figura 33: index array

Se invece ci sono errori:

Figura 34: blocco true

Gli errori eventuali vengono azzerati.

50


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ESERCIZIO: gestione e realizzazione di un protocollo. TRASMISSIONE: Ecco il flow chart della trasmissione:

Figura 35: flowchart TX

51


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Questo è l'algoritmo di trasmissione. VETT_DATA[] è il vettore che contiene i dati (LSN ed MSN). Quindi se i dati sono 5, il vettore sarà di 10. Grazie a tale algoritmo vado a riempire il vettore VETT_TX che è il vettore intero che devo trasmettere. All'indice 0 inserisco il carattere "#" che a tal proposito costituirà il mio start bit (intestazione o header del mio pacchetto completo). All'indice 1 pongo il numero dei dati. Negli indici successivi, invece, vado a porre la parte LSN ed MSN dei miei dati. Nel flowchart j è l'indice del vettore dei dati, mentre i è l'indice del vettore da trasmettere. Per poter ottenere LSN (Least significant nibble), prendo il mio dato e lo metto in and con 0x0F. Alla fine lo metto in or con 0x30. Tutti questi passaggi mi consentono di ricavare la parte meno significativa (gli ultimi 4 bit). Per la parte più significativa invece, viene fatto l'and con 0x0F ed il tutto shiftato di 4 ed in or con 0x30. Ecco un esempio: LSN: Considero 00000001 il mio dato (0000 è l'MSN, mentre 0001 è l'LSN, devo cercare di separarli. Lo devo mettere in AND con 00001111. Ottengo 00000001 (il dato di partenza. A questo punto lo metto in OR con 00110000, ed ottengo 00110001. Questo valore lo vado a mettere nel vettore TX ed ovviamente sarà salvata solo l'ultima parte, cioè 0001, quindi LSN. MSN: Il dato che ho ottenuto per ultimo, cioè 00110001 lo metto in AND con 0xF0 ed ottengo 00110000, lo shifto di 4 e ottengo 0011. Metto questo valore in OR con 00110000. Alla fine ottengo l'MSN che è proprio 0000. Con questo procedimento, indicato anche nel flowchart è stato possibile ricavare sia la parte MSN e la parte LSN. Ecco la sola parte di trasmissione in C: #include <htc.h> void main (void){ /*---- Inizializzazione della Ricezione e Trasmissione Seriale -----*/ SPBRG = 25; // Impostazione della velocità della trasmisione BRGH = 1; // seriale tramite SPBRG e BRGH : 9600 baud SYNC = 0; // con errore 0.16 %. SPEN = 1; // Abilitazione della trasmissione, disabilitazione RCIE = 1; // dell' interrupt di ricezione

CREN = 1; TXEN = 1; /*---- Inizializzazione delle porte -----*/ TRISC = 0b10100000;; // Inizializzazione delle porte, assegnazione TRISB = 0x00; // input/output

TRISA PORTA PORTB PORTC

= = = =

0xFF; 0; 0; 0;

/*---- Abilitazione degli interrupt ----*/

PEIE = 1; GIE = 1; /*---- Inizializzazione delle varibili ----*/

i=0; j=0; while(1){ /*------------------------ Trasmetto ------------------------------*/

CRCtx = 0; CRCcalc = 0; for( i=0 ; i <= 5 ; i++){ vett_data[i] = 0x51; } N_DATItx = 5; for( i=0 ; i <= (N_DATItx) ; i++){ // Aggiungo al CRC ogni valore CRCcalc = CRCcalc + vett_data[i]; // dei dati da inviare } vett_tx[0] = '$'; vett_tx[1] = N_DATItx;

// Aggiungo i primi dati da inviare // e aggiorno il CRC

52


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, CRCtx = CRCcalc + '$' + N_DATItx; i=2; for( j = 0 ; j < N_DATItx ; j++){ // Spezzo i dati da inviare da 0xYZ in temp = vett_data[j]; // 0x3Y e 0x3Z aggiungendoli al vett_tx vett_tx[i] = ((temp & 0xF0) >>4) | 0x30; temp = vett_data[j]; vett_tx[i+1] = (temp & 0x0F) | 0x30; i += 2; } vett_tx[i] = CRCtx; // Calcolo il valore effettivo dei dati temp = ((N_DATItx*2) + 3); // da inviare e concludo con il CRC il vett_tx for( z=0 ; z <= (temp) ; z++){ // Invio il vettore TXREG = vett_tx[z]; while(TRMT){} } Particolari istruzioni non ce ne sono. é stato sufficiente seguire il flowchart. Ecco la parte di trasmissione in labview (l'inizializzazione della seriale è la medesima degli altri programmi):

Figura 36: primo frame

Figura 37: secondo frame

53


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 38: terzo frame

Figura 39: quarto frame

Figura 40: quinto frame

54


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 41: sesto frame

Anche per il labview non ci sono particolari problemi, in quanto è sufficiente seguire filo e per segno quanto riportato nel flowchart. L'unico aspetto più innovativo è riportato nel terzo frame. Abbiamo creato un ciclo, in cui fosse possibile gestire due variabili di incremento (i e j) e facendo inoltre in modo che una si incrementasse di due ad ogni ciclo, mentre l'altra di 1.

55


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, RICEZIONE:

Figura 42: flowchart ricezione

Stavolta dobbiamo ricavare il vettore. Dobbiamo ricostruirlo in base ai valori che riceviamo. Il vettore ricostruito dovrà essere uguale al vettore TX che è stato trasmesso. In questo caso invece, per poter ottenere la parte MSN ed LSN bisogna fare il procedimento contrario rispetto alla trasmissione. L'algoritmo è diviso essenzialmente in 4 parti. Una parte riguarda lo start bit, un'altra riguarda il numero di dati. Poi c'è quella che riguarda la ricezione ed il ricavo di MSN ed LSN ed infine il calcolo del CRCsum. Il CRCsum è il checksum calcolato facendo la somma modulo 256 di tutti i byte precedenti che compongono il pacchetto. Se tale somma corrisponde a quella trasmessa allora significa che è stato trasmesso tutto correttamente, altrimenti ci sono errori. In questo caso entra in gioco timeOUT_RX: c'è un timer che batte il tempo ad interrupt. Se vede timeOUT_RX diverso da 0 lo decrementa di 1. Se timeOUT_RX raggiunge il valore 0 significa che stiamo in timeout sulla ricezione. Quindi, nell'interrupt si azzera lo stato.

56


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Ecco il programma in C della ricezione: /*------------------------ Ricevo ------------------------------*/

i=0; if(RCIF){ RCIF = 0; if(FERR || OERR){ // Controllo errori in ricezione aux = RCREG; CREN = 1; stato = 0; } else{ RXimage = RCREG; switch(stato){ case 0: { if( RXimage == '$' ){ // Controllo il Byte di Sync stato = 1; CRCrx = '$'; } } break; case 1: { // Ricevo il numero dei dati N_DATIrx = RXimage; stato = 2; } break; case 2: { // Ricevo MSN poi LSN switch(substato){ // e ricreo il dato originale default: case 0: tempMSN = RXimage; substato = 1; break; case 1: tempLSN = RXimage; vett_rx[i] = ((tempMSN & 0x0F) << 4); vett_rx[i] |= (tempLSN & 0x0F); substato = 0; CRCrx += vett_rx[i]; N_DATIrx--; if( N_DATIrx > 0 ){ i++; } else{ stato = 3; } break; } } case 3: { if( CRCrx == RXimage ){ errore = 0; } else{ errore = 1; } stato = 0; } break; } } }

57

// Confronto il valore di CRC // che ho calcolato durante la // ricezione con quello calcolato // in trasmissione per vedere se ci // sono stati errori nella trasmissione


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Anche in questo caso è stato sufficiente seguire il flowchart. Ecco il programma in labview:

Figura 43: parte di ricezione

Ovvio che una volta che tento di ricevere mi devo chiedere se in effetti ho ricevuto qualcosa e lo faccio in questo modo:

Figura 44: RXREG

Se in RXREG non c'è niente il programma continua a vedere se arriva qualcosa. Poi controllo se ci sono errori:

Figura 45: controllo errori

Se ci sono errori ricomincio da capo:

58


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Se invece non ci sono errori vado a gestire tutti i vari stati:

Figura 46: start bit

Per prima cosa mi chiedo se RXREG è uguale a "#". Se così è posso procedere con il secondo passo:

Figura 47: seconda parte

Se tutto procede correttamente gestisco la variabile di substato:

59


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 48: substato

La parte più rilevante del substato riguarda il ricavare MSN e LSN:

Figura 49: LSN

Figura 50: MSN

Nella parte finale mi devo chiedere se ho commesso degli errori e se quindi CRCsum è uguale ad RXREG:

60


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 51: se ci sono errori li azzero e ricomincio tutto il ciclo da capo

61


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Conversione analogico/digitale Questo processo consente di digitalizzare (rendere numerico) un segnale analogico, facendo sì che il microprocessore o qualsiasi altro apparato affine, di elaborarlo. Nonostante la teoria fosse pronta da molto tempo, la "rivoluzione digitale" che ha modificato in qualche misura il modo di vivere delle persone, consentendo una vera e propria "tecnologicizzazione" di massa, inizia nei primi anni ottanta. Si trattava, sostanzialmente, di risolvere due problemi di carattere prettamente tecnologico: aumentare la velocità di elaborazione dei circuiti e diminuirne l'ingombro; più tardi si cominciò a scontrarsi anche con problematiche legate al consumo energetico. Tutto si è risolto con l'integrazione sempre più spinta dei MOSFET.L'idea che sta alla base della digitalizzazione è la seguente: qualsiasi grandezza fisica di interesse (tensione, corrente, pressione, velocità...) viene misurata e il valore della sua misura codificato come numero binario; se la grandezza assume diversi valori nel tempo, essa sarà misurata a intervalli regolari, dando luogo ad una sequenza di numeri.

Figura 52: schema conversione A/D e D/A

La conversione A/D si basa su un processo di quantizzazione, che consiste nel prendere un segnale analogico nella sua massima estensione (tensione di fondo scala), quindi dividere questo intervallo in tante parti, uguali o diverse. Il tutto si chiama Q(quanto)

n

, dove Vfs è il valore di fondo scala e 2 nel numero di intervalli (n = n° di bit).

Figura 53: concetto del quanto

Naturalmente questa fase da vita ad un errore di quantizzazione, dovuto principalmente ad una bassa quantità di bit. I migliori convertitori in termini di segnale rumore, sono i convertitori ∆∑ (delta sigma).

Non sempre all’interno di un microprocessore è presente un convertitore A/D per ragioni di costi, il PWM invece, può essere usato proprio per ovviare a questa mancanza, essendo già integrato. La definizione in un D/A, è molto importante, con il nostro tipo di micro (PIC16F877A), abbiamo 10 bit, anche se nella maggior parte delle esperienze, ne utilizzeremo 8.

62


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

ADC (convertitore): La risoluzione di un ADC indica il numero di valori discreti che può produrre. È usualmente espressa in Bit. Per 8 esempio, un ADC che codifica un ingresso analogico in 256 livelli discreti ha una risoluzione di 8 bit, essendo 2 = 256. Il risultato di questi convertitori viene normalizzato. Di seguito sono riportare le tre funzioni di trasferimento:

Figura 54: quanto = 1,5

Figura 55: quanto = 0,125

Figura 56: quanto = 0,5

(immagini tratte da wikipedia: http://it.wikipedia.org/wiki/Convertitore_analogico-digitale)

63


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Convertitore nel microprocessore: ogni convertitore ha un tempo di conversione che dipende dalla qualità del convertitore, questo intervallo di tempo, non permette al multiplexer di fare più conversioni simultanee.

Figura 57: schema convertitore

Ma quanto dura questo tempo? All’interno del datasheet qui allegato, sono presenti le parti relative alla conversione A/D in un PIC16F877A.

Figura 58: come descritto da figura, questa parte è relativa alla selezione delle caratteristiche di conversione

64


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 59: parte relativa alla possibilità dei canali dalla quale attingere, sia ANLOGICI che DIGITALI, a nostra discrezione la scelta (http://ww1.microchip.com/downloads/en/devicedoc/30292c.pdf)

Figura 60: questa parte descrive la parte interna al micro che gestisce l'I/O della conversione (ùhttp://ww1.microchip.com/downloads/en/devicedoc/30292c.pdf)

65


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 61: questa parte descrive il funzionamento di un ingresso analogico presente nel micro, in particolare, dobbiamo tenere conto della corrente di LEAKAGE e della parte SWITCH realizzata con un mosfet di campionamento (http://ww1.microchip.com/downloads/en/devicedoc/30292c.pdf)

VA ed Rs rappresentano la sorgente del segnale. I due diodi sono diodi al silicio ( CLAMPING DIODES) che servono per proteggere da tensioni inverse. Il condensatore da 5pF può creare un delay. Il generatore di corrente non è presente fisicamente, ma nasce dal fatto che si vengono a creare delle correnti che nascono a causa delle varie giunzioni (in totale queste correnti possono arrivare a 500nA). Ric è la resistenza di interconnessione. Il sampling switch e la capacità rappresentano la parte di campionamento e di mantenimento, infatti quando si chiude il contatto il condensatore si carica e il microcontrollore fa un flash (legge il valore del segnale sul condensatore).

ESERCIZI: 1. ESERCIZIO: realizzare un programma capace di acquisire una variazione di dati con un PIC16F877. 2. ESERCIZIO: realizzare un programma capace di acquisire una variazione di dati con un PIC16F877 e successivamente eseguire la media e modificare attraverso un potenziometro, i valori del PWM in uscita ottenendo un’onda modulata in ampiezza. ESERCIZIO 1: #include <htc.h> unsigned char i; unsigned char VETT[10]; void main (void){ PCFG3=0; PCFG2=0; PCFG1=0; PCFG0=0; ADFM=0; CHS2=0; CHS1=0; CHS0=0; ADCS1 = 1; ADCS0 = 1; ADON = 1; while(1){ ADGO = 1;

/*configuro l'impostazione della porta*/ /*ingressi tutti analogici*/

/*giustificazione dei bit a sinistra*/ /*selezione del canale*/

/*impostazione del clock*/ /*abilitazione dell conversione*/

66


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, while(ADGO != 0) {}; /*aspetto che venga fatta la conversione e poi vado ad inserire il valore convertito nel vettore*/ VETT[i] = ADRESH; i++; if(i > 9) i= 0; } } ESERCIZIO 2: Premessa: la seguente esperienza, riguarda sia l’acquisizione di un segnale analogico e la sua conseguente conversione in digitale, sia l’utilizzo del PWM. Con questi strumenti è possibile creare un programma che consenta di modificare l’ampiezza di un’onda sinusoidale, regolando un trimmer. Conversione AD: consente di digitalizzare il segnale analogico, in modo che il microprocessore possa analizzarlo. Si basa su un processo di quantizzazione, che consiste nel prendere il segnale analogico nella sua massima estensione possibile (tensione di fondo scala), quindi dividere questo intervallo in tante parti, tutte uguali o diverse (a nostra discrezione o da programma). Il tutto si chiama Quanto = Vfs/2 n. Dentro il micro può esserci un numero variabile di convertitori, in base al tipo di micro; importante è che ogni convertitore ha un tempo di conversione, che dipende dalla qualità del convertitore. Questo tempo non permette al Multiplexer di fare più conversioni simultanee. Il segnale analogico viene inviato regolando un trimmer, e i segnali vengono campionati e convertiti, una volta eseguito ciò, si fa la media dei valori, e si va ad utilizzare insieme al vettore dei valori presi dal foglio excel, per costituire la sinusoide. Al variare del trimmer, varierà anche l’ampiezza della sinusoide.

67


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Flow chart del main:

Figura 62: flow chart del main.

In questo flow chart, è rappresentato il mani del programma. In questa parte vengono eseguite le inizializzazioni e l’acquisizione dei valori. In seguito viene fatta la media e si passa nell’automa a stati: - se siamo nello stato_0, allora andiamo a verificare se la media appena eseguita sia uguale a quella campionata precedentemente, se ciò è positivo, andiamo a “rinfrescare” media_old. -

In seguito passiamo nello stato_1. Se siamo invece nello stato_1, calcoliamo i valori da inserire nel vettore del PWM immagine, e successivamente andiamo nello stato_2.

-

Negli stati_2 e _3, attendiamo e non facciamo nulla.

68


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Flow chart dell’interrupt:

Figura 63: flow chart dell'interrupt.

Nel seguente flow chart, è espresso l’interrupt del programma. Inizialmente andiamo a confrontare il valore della variabile punt, con MAX_EL decrementato do 1 ogni ciclo; se punt è maggiore o uguale, allora lo azzeriamo e ci chiediamo se ci troviamo nello stato_2, se ciò è vero, passiamo nello stato_3. Se punt non è >=, lo incrementiamo e passiamo a chiederci se siamo nello stato_3 se effettivamente vi ci troviamo, allora andiamo a mettere dentro vett(punt), il vettore immagine. In seguito incrementiamo conta e andiamo a confrontare conta con MAX_EL, se conta è maggiore, passiamo in stato_0 e azzeriamo conta. Infine inseriamo il valore del vettore in CCPR2L.

69


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Programma in C: #include <htc.h> #define MAX_DIM_VETT

50

bank1 unsigned char conta; bank1 unsigned char vett[10]; unsigned short somma @ 0x21; unsigned char media; unsigned char mediaOLD; bank2 unsigned char vettsin_pwm[MAX_DIM_VETT]; bank1 unsigned char vettsin_pwm_img[MAX_DIM_VETT]; unsigned char punt; unsigned char stato; unsigned char uc_i @ 0x20; const unsigned char vettsin[] = { 125,140,155,170,184,198,210,220,230,237,243,247,249, 249,247,243,237,230,221,210,198,185,170,156,140,125, 109,94,79,65,52,39,29,20,12,6,2,0,0,2,6,12,19,28,39, 51,64,78,93,109, }; static void interrupt isr_tim (void){ if(TMR2IF){ if(punt >= MAX_DIM_VETT - 1){ punt = 0; if(stato == 2){ stato = 3; } } else{ punt++; } if(stato == 3){ vettsin_pwm[punt] = vettsin_pwm_img[punt]; conta++; if(conta >= MAX_DIM_VETT){ stato = 0; conta = 0; } } CCPR2L = vettsin_pwm[punt]; } TMR2IF=0; } void main (void){ PR2 = 0xF9; CCPR2L = 0x7D; CCP2CON = 0x0C; TRISC = 0x00; T2CKPS1 = 0; T2CKPS0 = 0; TMR2ON = 1; TMR2IE = 1; TMR2IF = 0; punt = 0; PCFG3 = 0;

/*valgono le stesse impostazioni dell'es precedente*/

70


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, PCFG2 = 0; PCFG1 = 0; PCFG0 = 0; ADFM = 0; CHS2 = 0; CHS1 = 0; CHS0 = 0; ADCS1 = 1; ADCS0 = 1; ADON = 1; GIE=1; PEIE=1; while(1){ //salvo i risultati in un vettore di 10 elementi somma = 0; for(uc_i = 0; uc_i <= 9; uc_i++){ ADGO = 1; while(ADGO != 0) {}; // ASPETTO fino a che non e' terminata la conversione vett[uc_i] = ADRESH; somma = somma + vett[uc_i]; } media = somma / 10; switch (stato){ case 0: if(media != mediaOLD){ mediaOLD = media; } stato = 1; break; case 1: for (uc_i=0; uc_i<MAX_DIM_VETT; uc_i++){ vettsin_pwm_img[uc_i] = (unsigned char) (((unsigned short) (media*vettsin[uc_i]))/255); } stato = 2; break; case 2: asm asm asm asm

("nop"); ("nop"); ("nop"); ("nop");

break; case 3: asm asm asm asm

("nop"); ("nop"); ("nop"); ("nop");

break; } } }

71


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

EEPROM La EEPROM (anche scritto E2PROM), acronimo di Electrically Erasable Programmable Read-Only Memory, è un tipo di memoria non volatile, usata nei computer e altri dispositivi elettronici per memorizzare piccole quantità di dati che devono essere mantenuti quando viene tolta l'alimentazione (per esempio la configurazione del dispositivo). Le operazioni di scrittura, cancellazione e riscrittura hanno luogo elettricamente. Ciascuna cella di memoria capace di memorizzare un singolo bit è costituita da due transistori MOS, uno "di memoria" e uno "di accesso". #include <htc.h> unsigned char addr_EE; unsigned char dato_EE;

// dichiarazione delle variabili

unsigned char leggiEE(unsigned char addr); void scriviEE(void);

// prototipo della fuzione leggi // " " scrivi

void main(void){ //...... addr_EE = 0x00; dato_EE = 0x00; while(addr_EE < 0xff){ scriviEE(); addr_EE++; dato_EE++; } addr_EE = 0x00; dato_EE = 0x00; while(addr_EE < 0xFF){ dato_EE = leggiEE(addr_EE); if(dato_EE != addr_EE) asm("nop"); else asm("nop"); addr_EE++;

// // // // //

facciamo partire da 0, sia l'indice(addr) che il valore(dato), per avere uno stato iniziale all'indirizzo 0, successivamentefinchè addr_EE è minore di FF, scriviamo inzialmente 0 incrementiamo i valori dell'indice e del dato

// si riparte dai valori inziali // // // //

in questo ciclo, andiamo a leggere i valori, dopo di che confrontiamo il valore dell'indice con quello del dato se i due non combaciano, andiamo con un breakpoint a verificare l'accaduto

// in seguito incrementiamo l'indice

} while(1){ asm("nop"); } } unsigned char leggiEE(unsigned char addr){ EEADR = addr_EE; EEPGD = 0; RD=1; return EEDATA; }

// è la funzione relativa alla lettura, // tradotta in C dall'assembler presente nel datasheet

void scriviEE(void){ while((EECON1 & 0x02) != 0){}; EEADR = addr_EE; EEDATA = dato_EE; EEPGD = 0; WREN = 1; di(); EECON2 = 0x55; EECON2 = 0xAA; EECON1 |= 0x02; ei(); WREN = 0; }

// è la funzione relativa alla scrittura, // and bit a bit tra i valori di EECON1 e 0x02

// funzione di return, per ritornare a EEDATA

// <==> GIE = 0; disabilitazione degl'interrupt

// riabilitazione degl'interrupt // abilitazione della scrittura

72


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

TRASMISSIONE SERIALE RS232: L'RS232 è un interfaccia seriale a bassa velocità che permette di far colloquiare dispositivi digitali. Nata inizialmente per la connessione fra Modem e PC, è ora del tutto in disuso in tale ambito, pur rimanendo largamente utilizzata per la comunicazione fra dispositivi digitali fra loro(quali microcontrollori o altri dotati di interfaccia RS232, PC..) .   

Se abbiamo solo una trasmissione si chiama Simplex; Se abbiamo trasmissioni e/o ricezioni nello stesso cavo si chiama half-duplex; Se abbiamo trasmissione e ricezione sono su cavi diversi e nello stesso istante abbiamo una trasmissione Full-Duplex.

All’interno di una trasmissione seriale, dobbiamo occuparci anche degli Hand Shake (stretta di mano), ovvero segnali utilizzati per mettere d’accordo un target che invia con un altro che riceve. Possono esistere handshake hardware e software. In informatica, è il processo attraverso il quale due computer, tramite software o hardware, stabiliscono le regole comuni, ovvero la velocità, i protocolli di compressione, di criptazione, di controllo degli errori, ecc. Prima di iniziare la connessione vera e propria tra due computer si crea questo tipo di connessione che consiste nella trasmissione dei pacchetti per regolare i parametri di connessione. Il suono prodotto dal modem nella fase di connessione ad internet viene chiamato handshake. Il frame RS-232 I livelli elettrici associati ai livelli logici sono:   

da -3V a -15V, interpretato come livello logico “1”da +3V a +15V, interpretato come livello logico “0”. da +3V a -3V, stato di incertezza.

Il frame RS232 inizia con una condizione di “idle” (tradotta letteralmente “inattivo”), trasmetterà poi uno start bit, per identificare l'inizio di un nuovo bit e per sincronizzare il ricevitore, essendo una trasmissione asincrona (quindi senza l'utilizzo di un clock comune per i due dispositivi). La sincronizzazione del ricevitore avviene tramite un clock interno ( a frequenza multipla di quella di trasmissione ) che, una volta sincronizzato con il dato, inizia a contare il numero di bit che stanno arrivando. Il frame seriale prevede uno start bit, 8 o 9 bit di dato, un bit di parità (possibile solo se la trasmissione avviene a 8 e NON 9 bit), eventuali bit di check, e 1 o 2 stop bit. Nell'immagine vediamo un frame con uno start bit, 8 di dato e uno di stop. Nella trasmissione i bit di dato verranno trasmessi dal meno significativo (LSB) al più significativo (MSB). Il dato trasmesso nel caso dell'immagine è 11010010.

Una conncessione RS232 consente un handshake di tipo hardware.

73


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Nella RS232 i due harware comunicanti vengono chiamati DTE ( Data Terminal Equipment ) e DCE ( Data Communication Equipment). Vediamo la piedinatura e la spiegazione di ogni singolo pin presente nel connettore DB9 lato DTE.

Pin 1: DCD Pin 2; Rx Pin 3: Tx Pin 4: DTR Pin 5: GND Pin 6: DSR Pin 7: RTS Pin 8: CTS Pin 9: RI DCD (Data Carrier Detect): Ingresso che veniva settato quando il DCE era sincronizzato. Rx : Pin di ricezione Tx : Pin di trasmissione DTR ( Data Terminal Ready) : comunica che il DTE è pronto a inviare un dato al DCE. GND : Massa di rifermento per i segnali. DSR (Data Set Ready) : segnale di risposta al DTE da parte del DCE RTS ( Request to send ) : Avviso di trasmissione CTS (Clear to send) : Conferma per avviare la trasmissione (in risposta all RTS). RI (Ring Indicator). Con opportuni collegamenti è possibile creare una connessione NULL MODEM, che consente una connessione di altri dispositivi (che non siano appunto un Modem) tramite l'RS232. Il collegamento più semplice, senza quindi alcun segnale di handshake, è semplicemente invertendo i pin Rx e Tx lato DCE. É il collegamento che viene poi usato per la comunicazione con il Microcontrollore. Per ingannare i segnali di Hadshake, i un null modem si collegano insieme DTR, DSR e DCD e anche RTS e CTS fra loro, facendo in modo che ogni segnale di Handshake abbia una risposta immediata essendo collegato al suo corrispettivo. Di seguito sono riportate delle configurazioni ottenibile con un’RS232: 

Null-modem semplice asincrono:

Lo schema più semplice per collegare fra loro due dispositivi DTE è quello di invertire la linea di trasmissione (TD) con quella di ricezione (RD) dati in modo da collegare la linea di trasmissione di un dispositivo DTE con la linea di ricezione dell'altro e vice-versa. Ovviamente la massa (GND, piedino 7 nella seriale DB-25 e 5 in quella DB-9) deve essere connessa direttamente.

Figura 64: esempio di uno schema null-modem asincorno, questa è la configurazione più semplice che si può ottenere in una trasmissione ( http://it.wikipedia.org/wiki/Null_modem )

74


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,  Null-modem a 3 fili con handshaking locale asincrono: Ove è necessario utilizzare una comunicazione su soli 3 fili e i DTE richiedano un controllo di flusso hardware si può adottare uno schema che gestisca un handshake locale. Un handshake locale si ottiene collegando su ciascun connettore, localmente, le linee RTS e CTS fra loro in modo che il DTE, attivando l'uscita RTS, veda il segnale CTS attivo. Allo stesso modo, collegando localmente le linee DTR, DSR e DCD, si ottiene una emulazione locale della gestione di questi segnali. In questo modo quando il DTE è pronto ad inviare i dati e attiva l'uscita DTR si vede attive le linee DSR e DCD e ritiene così che esista la portante (segnale DCD) e il DTE remoto sia operativo (DSR).

Figura 65: esempio di uno schema null-modem a 3 fili, asincrono e con hand-shake (http://it.wikipedia.org/wiki/Null_modem)

 Null modem a 5 fili con handshaking parziale asincrono: Un controllo di flusso parziale si ottiene su un cavo a 5 fili collegando la linea RTS di un DTE alla linea CTS dell'altro DTE e vice versa. In questo modo, quando il buffer di un DTE si riempie, abbassando la linea RTS si comunica all'altro DTE di sospendere la trasmissione fino a quando l'RTS non sarà nuovamente impostato su alto.

Figura 66: esempio di uno schema null-modem a 5 fili, asincrono e con hand-shake (http://it.wikipedia.org/wiki/Null_modem)

 Null modem a 7 fili con handshaking completo asincrono: Il controllo di flusso durante la trasmissione avviene utilizzando le linee RTS e CTS come nello schema precedente, ma un DTE può in questo modo comunicare all'altro DTE quando ci sono dei dati da trasferire alzando il segnale DTR. Il segnale DTR su un lato deve essere collegato sia al DSR del DTE remoto sia al DCD dello stesso DTE remoto. Il collegamento DTR/DSR fa si che un DTE comunichi all'altro quando ha dei dati da trasmettere mentre il collegamento DTR/DCD emula il segnale di presenza della portante in modo che il DTE ritenga che il modem remoto (emulato dal null modem) sia in linea. Con un handshaking completo si possono ottenere anche velocità di trasmissioni più alte.

Figura 67: esempio di uno schema null-modem a 7 fili, asincrono e con hand-shake (http://it.wikipedia.org/wiki/Null_modem)

75


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Connessione di un Microcontrollore con un PC tramite RS232: Il microcontrollore che useremo per le applicazione con RS232 è un PIC16F877. Al suo interno è presenta una USART (Addressable Universal Syncronous Asyncronous Receiver Transmitter) che permette di inviare e ricevere dati attraverso l'RS232.

Ecco lo schema a blocchi interno del microcontrollore relativo alla trasmissione.

TXREG è il registro dove viene copiato il contenuto da trasmettere. Una volta che questo contenuto è copiato in TXREG, viene messo nel TSR (Transmission Shift Register ), che trasmetterà in maniera seriale il dato dal bit meno significativo al più significativo. TXIE e TXIF sono relativamente il bit di abilitazione dell'interrupt e il Flag di trasmissione. TXEN abilita la trasmissione, mentre SPRG determina la velocità di trasmissione. TX9D e TX9, vanno a determinare se la trasmissione avverrà a 9 bit oppure a 8 (con bit di parità). In fine TRMT avvisa quando il TSR è vuoto e SPEN abilita la porta Seriale.

76


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Ecco invece lo schema a blocchi della parte di ricezione.

Anche qui SPRG determina la velocità della trasmissione. Subito dopo il Pin vediamo SPEN che abilita o disabilita la Porta Seriale. L'RSR è il Receiver Shift Register, che si riempie bit per bit in maniera seriale ricevendo i bit dal meno segnificativo al più significativo. Legati allo Sheft Register sono presenti i Bit FERR e OERR che identificano:  

FERR : Framing Error, un problema dovuto dalla sbagliata sincronizzaione del clock di ricezione e quindi, grazie agli stop bit, si riconosce una sbagliata ricezione. OERR : Overrun Error, che consiste nell'arrivo di nuovi dati prima che il contenuto dello Shift Register sia passato in RCREG

RCREG è il registro di ricezione, dove viene messo il dato ricevuto una volta che RSR è pieno. RX9 contempla la possibilità della trasmissione a 9 bit. In fine vediamo RCIE, che determina l'abilitazione dell'interrupt e RCIF, flag che si attiva quando un dato è presente su RCREG.

77


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Ecco un programma in C di esempio di trasmissione e ricezione. #include <htc.h> unsigned char ricevuto; unsigned char aux; unsigned char TRISBimage; void main(void){ TRISBimage = 0x00; TRISB = TRISBimage; //----- INIT SERIALE --------SPBRG = 31; BRGH = 0; SYNC = 0; SPEN = 1; RCIE = 0; CREN = 1; TRISC = 0x80; TXEN = 1; // ACCENDO GLI INTERRUPT PEIE=1; GIE=1; while(1){ if(RCIF){ if(FERR || OERR){ // controllo degli errori CREN = 0; // se presenti disabilito CREN per poi abilitarlo in seguito aux = RCREG; CREN = 1; } else{ ricevuto = RCREG; } RCIF = 0; } TXREG = ricevuto; } } Questo programma è un semplice esempio di utilizzo della porta seriale. Al suo interno sono presenti sia la trasmissione che la ricezione. Dopo aver impostato tutti i registri in modo da abilitare la ricezione e la trasmissione abbiamo abilitato gli interrupt (che viene usato per la ricezione) e impostato la PORTC, in modo da avere come uscita il pin RC6 che è quello della trasmissione e come ingresso il pin RC7 che è quello della ricezione. Nel Main del programma andiamo ad aspettare a polling l'interrupt della ricezione, una volta che un dato è arrivato, verifichiamo che non siano presente errori di framing e di overrun, per poi procedere a salvare il dato ricevuto nella variabile 'ricevuto'. Azzeriamo il flag RCIF e procediamo con il riempire TXREG, che invierà poi in automatico il dato

78


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Max232:

Figura 68: schema applicativo di un Max232

Lo standard RS-232, di cui si sente spesso parlare, è un protocollo di comunicazione seriale asincrona utile per collegare ad un personal computer dei circuiti esterni. Dato che il canale seriale RS-232 deve essere discretamente immune ai disturbi, i livelli di tensione adoperati sono diversi da quelli di tipo TTL o CMOS. Così è necessario dover traslare le tensioni per adattarle ai circuiti elettronici. Per maggiori immunità ai disturbi esiste una variante dell'interfaccia RS-232, che prende nome di RS-485, dove affianco ad ogni segnale, viene riportato anche il suo complementare... Ecco qui sotto la tabella di relazione delle tensione tra lo standard TTL-CMOS e RS-232. Come è possibile vedere, non solo le tensioni sono diverse e ben più alte, per garantire una buon immunità ai disturbi, ma anche sono invertiti. Con è necessario disporre di un traslatore ed invertitore di tensione. Per far ciò, ci sono diverse soluzioni, dalle più semplici, che richiedono dei transistor e/o i ±12 Volt, alle più eleganti, che utilizzano dei circuiti integrati appositamente concepiti; uno tra questi è il MAX232, prodotto dalla Maxim: www.maxim-ic.com. Per quanto riguarda la velocità di comunicazione trasmissione, si può arrivare anche ad 1Mbit/s.

79


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

RS-422: E’ un protocollo per la trasmissione di dati seriale. Formata da una coppia di fili in cui la trasmissione avviene attraverso segnali di tipo differenziale; in questo modo si annullano i disturbi di modo comune ed è possibile discriminare con maggiore successo la differenza tra segnali di tipo basso e alto. Il ricevitore è in grado di distinguere segnali di ampiezza fino a 200mV. I livelli di tensione sono compresi tra i 2 e 6 volt. All’ interno dei 2 cavi l’informazione viaggia in modo unidirezionale, ma è possibile aggiungendo un’altra coppia di cavi realizzare una trasmissione full duplex. Questo protocollo non permette di utilizzare trasmettitori multipli, ma solo un trasmettitore con più ricevitori (massimo 10 ricevitori). E’ uno standard molto diffuso a livello industriale perché si possono coprire distanze considerevoli ad una buona velocità (1550 metri a 1 Mbit/sec ).

RS-485: Standard seriale a 2 fili in cui la trasmissione avviene in modo differenziale Half-Duplex. Per il corretto funzionamento della trasmissione la differenza di potenziale deve essere di almeno 200mV ed il livello massimo è +5 e -5 volt. E’ possibile utilizzare fino a 32 drivers e 32 receivers sulla stessa linea. Il cavo utilizzato è un normale doppino e può coprire distanze considerevoli, fino a 1200 metri con una velocità massima compresa tra i 100Kbit/sec e i 10Mbit/sec. Come la RS-422 anche la 485 può esser resa Full-Duplex utilizzando 2 coppie di doppini. Per la ricezione del segnale si utilizzano dei transceiver come quello prodotto dalla Texas (SN7516) oppure quello prodotto dalla Maxim (MX485) da cui si ricava un semplice schema di collegamento (Full-Duplex) :

Dove DI è il pin di trasmissione ed R0 quello di ricezione. Siccome la trasmissione avviene in modo differenziale è fino ad un certo punto immune dai disturbi per cui può essere utilizzata anche vicino a macchinari in azienda senza che essi disturbano la trasmissione. E’ utilizzata per unire vari dispositivi remoti e può anche esser usato per videosorveglianza o pannelli di controllo della sicurezza.

RS-423: E’ uno standard di comunicazione seriale. L’interfaccia è simile alla RS232 (single-ended) con un unico driver e fino a 10 receivers e la trasmissione avviene in modo unidirezionale su doppino. Siccome la trasmissione non è bilanciata si ha una minore sensibilità nella discriminazione dei bit all’interno della linea, questo ci fa preferire la RS422 che ha caratteristiche similari. I livelli di tensione massimi supportati sono -6 e +6 volt, la Velocità della trasmissione può esser superiore ai 100Kbps con una distanza fino ad un massimo di 1200 metri. TIPO: COLLEGAMENTO: Tx/Rx LUNGHEZZA & VELOCITA’

RS232

RS423

RS422

PUNTO-PUNTO

SINGLE ENDED

DIFFERENZIALE

1Rx/1Tx

10Rx/1Tx

10Rx/1Tx

10m & 20kbit/s

1,2km & 100kbit/s

1,2km & 10Mbit/s

80


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Convertitore a loop di corrente a 20 mA Il convertitore a loop di corrente a 20mA è usato nelle applicazioni punto-punto in cui è necessario effettuare la conversione dell'interfaccia da un loop bilanciato di corrente a 20 mA a RS-232 per permettere la comunicazione tra diversi dispositivi. In alcuni casi i convertitori sono usati per la connessione in loop e quindi limitati a un totale di 6 dispositivi collegati. A seconda della modalità di configurazione del dispositivo, il convertitore può essere impostato su "attivo" per alimentare la linea di corrente o su "passivo". Sono possibili velocità fino a 19,2 kbit/s e distanze fino a 6 km, in base alla velocità di trasmissione. Esso è predisposto per il montaggio su guida DIN da 35 mm, alla quale il dispositivo viene fissato e bloccato in un'unica azione. Vantaggi: • Conversione tra interfaccia 20 mA e RS-232 • Protegge le unità collegate dai fulmini e dai transienti • Isolamento galvanico completo • Assolutamente trasparente • Consigliato con dispositivi che hanno potenziali diversi di terra • Per garantire una comunicazione affidabile sulle lunghe distanze Dati tecnici: Trasmissione Interfaccia 1 Interfaccia 2 Velocità di trasmissione LED Peso in kg Montaggio Guida DIN da

 Asincrona, full/half duplex o simplex  EIA RS-232-C/CCITT V.24, 9 pin D-sub femmina, o morsettiera a 9 pin  Circuito a loop di corrente 20 mA, morsettiera a 5 pin  Fino a 19,2 kbit/s  Alimentazione, TD, RD  0.4 35 mm

Per eventuali approfondimenti è possibile consultare il seguente sito che presenta la configurazione e le caratteristiche principali di un XTR. http://zone.ni.com/devzone/cda/tut/p/id/7298

81


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Schema del loop di corrente per l’accensione di un relè: Un loop 0-20mA ha molteplici funzioni. Una delle funzioni importanti che può svolgere riguarda l’accensione di un relè:

Loop di corrente per la trasmissione di informazioni:

La corrente della linea in questo circuito è data dalla seguente formula:

I linea = (Vb – Vbe) / (R + Req)

Tra le resistenze R ed Req intercorre questa relazione: 2*Req << R La resistenza R dipende dalle tensioni sul transistor e dalla corrente che passa nel circuito. Solitamente la resistenza assume valori che possono andare da 100Ω a circa 500Ω. In una trasmissione da 0-20mA, il ricevitore non si accorge se ad esempio la nostra linea, su cui viaggia l’informazione, è stata tranciata, questo perché la corrente è a 0A. Ma l’intervallo 0-20mA indica semplicemente lo step. Per questo problema che si può verificare si usa quindi un intervallo che va da 4 a 20mA.

82


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Altre funzioni del loop: Con un loop di corrente 0-20mA è possibile avere più informazioni per lunghi tratti di linea. Lo schema sotto riportato rappresenta un circuito che serve per mandare corrente costante ad un carico.

Intanto la Rload è un dato molto importante di progetto e dipende dalla Vref, posta a 10V, e dalla corrente Il che attraversa il carico. Se l’operazionale lavora in modo lineare, ovvero non satura, possiamo allora dire che:

V+ = V-

e ne segue che:

V- = Vref – R*IL = V+

Da questa formula è possibile calcolare la corrente della linea IL:

IL = (Vref – V+) / R

Come si vede, nella formula non compare la resistenza di carico Rload COSTANTE.

83

GENERATORE DI CORRENTE


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

INTER INTEGRATED CIRCUIT L’ I²C ( o IIC ) è un protocollo di trasmissione seriale sincrona che mette in comunicazione dispositivi integrati, l’invio e la ricezione dei dati avviene in modalità half duplex. La gestione avviene tramite due busses: la linea SDA che trasporta le informazioni, e la linea SCL che trasmette l’impulso di clock. La connessione avviene fra un master e più slaves, in caso si scegliesse di utilizzare un sistema multimaster allora è necessario un protocollo di arbitraggio per stabilire quale dispositivo debba impartire gli ordini. Le prime versioni funzionavano a 7 bit, mentre quelle più recenti arrivano anche a 10, il numero di dispositivi che possono essere messi in comunicazione su uno stesso bus è di 112 fra masters e slaves. Ciascun MOS possiede una capacità intrinseca, ne risulta una capacità complessiva di circa 400pF, questo valore deve comunque rimanere il più basso possibile per non creare ritardi nei tempi di commutazione, quindi di una deformazione del segnale. In alto a destra è presente il logo dell’interfaccia seriale I 2C. SCHEMA DI CONNESSIONE:

SCHEMA DI SELEZIONE INPUT/OUTPUT:

T1 = ON  La linea SDA funziona da input T1 = ON/OFF  La linea SDA funziona da output

84


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Protocollo I2C: l’I2C serve per far interfacciare un DAC con un micro che non lo comprende. Perché consente di effettuare comunicazioni veloci con integrati che necessitano di molti pin.

Figura 69: parte relativa al protocollo di un I2C (http://www.alldatasheet.com/datasheetpdf/pdf/23725/STMICROELECTRONICS/24C16.html)

DIAGRAMMA DELLE TEMPISTICHE:

CONDIZIONI DI START E STOP:

Il diagramma di temporizzazione mostra che, dopo una condizione di idle, la sequenza di start deve avvenire con una commutazione 1-0 della linea SDA seguita a distanza di un tempo T da una commutazione 1-0 della linea SCL. La sequenza di stop invece si traduce in una commutazione 0-1 della linea SCL, seguita dallo stesso tipo di commutazione della linea SDA. VANTAGGI

SVANTAGGI

85


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Necessari solo 2 fili.

Velocità limitate: 10Kb/s 50Kb/s 100Kb/s 400Kb/s 3.4Mb/s Assegnazioni: Sono disponibili solo 7 bit di indirizzo per I dispositivi di tipo slave.

Scarso impiego dei pin dei dispositivi. Costi limitati.

Applicazioni:         

Accesso a Memoria flash ed EEPROM che mantengono i dati memorizzati anche quando non sono alimentate. Accesso a DAC a bassa velocità. Accesso a ADC a bassa velocità. Cambiamento del settaggio nei monitor. Cambiamento del volume in altoparlanti intelligenti. Controllo di display come nei telefoni cellulari. Lettura e diagnostica di sensori come, ad esempio, sensori di temperatura o velocità di ventilatori. Lettura e regolazione di RTC (integrati orologio). Attivazione e spegnimento dell'alimentazione di componenti di un sistema elettronico.

Tecnologie derivate: I²C è la base per la ACCESS bus, l’interfaccia VESA Display Data Channel (DDC), il System Management Bus (SMBus), Power Management Bus (PMBus) e la Intelligent Platform Management Bus (IPMB, tipicamente con protocollo IPMI). Queste implementazioni differiscono per tensioni, frequenza di clock e possono avere linee di interruzione. TWI (Two Wire Interface) o TWSI (Two-Wire Serial Interface) è essenzialmente lo stesso bus implementato in vari sistemi su processori della Atmel e altri venditori.

86


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esempio di programma EEPROM con I2C: #define E2P_READY

1

#define I2C_ADDRESS_8BIT 1 #define I2C_BUS_EXTENDED 2 #define E2P_PROGRAM I2C_ADDRESS_8BIT #define E2P_WRITE_EEPROM #define E2P_READ_EEPROM #define E2P_ADDRESS_EEPROM

1 2 (unsigned char)(0x00)

/* ---------MACRO ------------------*/ #define E2P_M_SDA_OUT() HYS_uc_TRISCimage &= (~E2P_p_SDA); \ TRISC = HYS_uc_TRISCimage #define E2P_M_SDA_IN() HYS_uc_TRISCimage |= E2P_p_SDA ; \ TRISC = HYS_uc_TRISCimage #define HYS_M_START() #define HYS_M_STOP()

E2P_SDA = 0; E2P_SCL = 1;

asm("nop"); E2P_SCL = 0 asm("nop"); E2P_SDA = 1

#if

DEF_FQUARZO == DEF_QUARZO_4MHz #define E2P_M_delay_4u7() asm("nop"); \ asm("nop"); \ asm("nop"); \ asm("nop"); \ asm("nop") #elif DEF_FQUARZO == DEF_QUARZO_8MHz #define E2P_M_delay_4u7() asm("nop"); \ asm("nop"); \ asm("nop"); \ asm("nop"); \ asm("nop"); \ asm("nop"); \ asm("nop"); \ asm("nop"); \ asm("nop"); \ asm("nop") #elif DEF_FQUARZO == DEF_QUARZO_10MHz #define E2P_M_delay_4u7() for(E2P_uc_i = 0; E2P_uc_i < 40; E2P_uc_i++){ \ asm("nop"); \ } // // // // // // // // // // // //

asm("nop"); \ asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop")

#elif DEF_FQUARZO == DEF_QUARZO_20MHz #define E2P_M_delay_4u7() asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");

\ \ \ \ \ \ \ \ \ \

\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \

87


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop")

\ \ \ \ \ \ \ \

#endif void E2P_v_init(void); void E2P_v_fClock(void); void E2P_v_fWriteEEPROM(unsigned char addressSlave , unsigned char byteAddress, unsigned char *pData , unsigned char nData ); void E2P_v_fRANDOM_ReadEEPROM(unsigned char addressSlave , unsigned char byteAddress, unsigned char *pDataRead ); //void E2P_v_fSEQUENTIAL_ReadEEPROM(unsigned char addressSlave , unsigned char byteAddress, // unsigned char *pDataRead , unsigned char nBytes // ); void E2P_v_sendByte(unsigned char byteSending); void E2P_v_main(void); void E2P_v_fStart(void); void E2P_v_fStop(void); void void void void void void void void void void

E2P_v_saveAllPARAMETER(void) E2P_v_loadAllPARAMETERS(void) E2P_v_writeDefaultPARAMETERS(void) E2P_v_restore(void) E2P_v_saveTIME(void) E2P_v_savePowerTimer(unsigned char indice) E2P_v_startEEPROM(void) E2P_v_uDelay(unsigned char del) E2P_v_store(void) E2P_v_load(void)

; ; ; ; ; ; ; ; ; ;

void E2P_v_copyDefaultValue(void); void E2P_v_clearTIME(void); // dichiarazione pin utilizzati #define E2P_SCL #define E2P_bn_SCL #define E2P_p_SCL

RC3 3 0b00001000

#define E2P_SDA #define E2P_bn_SDA #define E2P_p_SDA

RC4 4 0b00010000

//----------------------------------// variabili -bank2 unsigned char maskBit; bank1 unsigned char E2P_uc_appoggioEEPROM; bank1 unsigned short E2P_us_appoggio; bank1 unsigned short E2P_us_appoggio; bank1 unsigned char E2P_uc_i;

// ------ definizione delle funzioni lettura/scrittura eeprom /*-----------------------------------------------------------------------------Function: Input: Output: Return: Description: Changes: ------------------------------------------------------------------------------*/

88


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, void E2P_v_waitACK(void){ E2P_M_SDA_IN(); E2P_v_uDelay(1); E2P_SCL = 1; while(E2P_SDA == 1){} E2P_v_uDelay(1); E2P_SCL = 0; E2P_M_SDA_OUT(); } /*-----------------------------------------------------------------------------Function: Input: Output: Return: Description: Changes: ------------------------------------------------------------------------------*/ void E2P_v_delay40uS(void){ for(E2P_uc_i = 0; E2P_uc_i < 13; E2P_uc_i++){ \ asm("nop"); \ } } /*-----------------------------------------------------------------------------Function: Input: Output: Return: Description: Changes: ------------------------------------------------------------------------------*/ void E2P_v_uDelay(unsigned char del){ for(E2P_uc_i = 0; E2P_uc_i < del; E2P_uc_i++){ // a 10MHz si hanno i seguenti ritardi: // con 1:

9,2 uS;

// con 2: 12,3 uS; // con 3: 15,7 uS // con 4: 19,0 uS // con 5: 22,0 uS // con 6: 15,7 uS asm("nop"); \ } } /*-----------------------------------------------------------------------------Function: Input: Output: Return: Description: Changes: ------------------------------------------------------------------------------*/ void E2P_v_init(void){ //----------------- INIZIALIZZAZIONE INGRESSI DIGITALI -----------------HYS_uc_TRISDimage &= (~E2P_p_SCL) ; E2P_M_SDA_OUT(); /* SDA come linea di uscita dal MICRO */ E2P_SCL = 0; E2P_SDA = 0; } /*-----------------20/04/02 7.32-------------------* E2P_v_fClock * Definisce il clock per la EEPROM(scl).Da notare che * i tempi (da data sheet NATIONAL) per una 24C08 sono * intorno a 4,0uS :: 4,7uS. Per questi ritardi, essendo * in relazione al CLOCK del sistema, si usa chiamata a macro

89


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, * di ritardo definita in E2P_main.h * --------------------------------------------------*/ /*-----------------------------------------------------------------------------Function: Input: Output: Return: Description: Changes: ------------------------------------------------------------------------------*/ void E2P_v_fClock(void){ /* non contemplo il ritardo della chiamata alla funzione */ E2P_SCL = 0; /* cosi' sono sicuro, entrando, che il clock sia 0 */ E2P_v_uDelay(1); E2P_SCL = 1; E2P_v_uDelay(1); E2P_SCL = 0; } /*-----------------------------------------------------------------------------Function: Input: Output: Return: Description: Changes: ------------------------------------------------------------------------------*/ void E2P_v_fStart(void){ E2P_SDA = 1; /* MI ASSICURO LA CONDIZIONE DA CUI PARTIRE */ E2P_v_uDelay(1); E2P_SCL = 1; E2P_v_uDelay(1); E2P_SDA = 0; E2P_v_uDelay(1); E2P_SCL = 0; } /*-----------------------------------------------------------------------------Function: Input: Output: Return: Description: Changes: ------------------------------------------------------------------------------*/ void E2P_v_fStop(void){ E2P_SDA = 0; /* MI ASSICURO LA CONDIZIONE DA CUI PARTIRE */ E2P_SCL = 0; E2P_SCL = 1; E2P_v_uDelay(1); E2P_SDA = 1; E2P_v_uDelay(1); E2P_SCL = 0; E2P_v_uDelay(1); E2P_SDA = 0; } /*-----------------22/04/02 15.44------------------* E2P_v_fByteWrite * Funzione di scrittura BYTE o PAGE in una EEPROM, * [INPUT]: addressSlave (indica l'indirizzo dello SLAVE in cui scrivere) * wordAddress (indirizzo di EEPROM dove allocare il dato da memorizzare) * pData (punta al dato, o al primo dato di nData) da memorizzare * nData (numero di dati da memorizzare in EEPROM, che si trovano * consecutivamente, a partire dall'indirizzo contenuto in pData) * * Si tratta di una COMPILAZIONE CONDIZIONALE, dovuta al fatto che * nel caso delle 24C128/256 si hanno 16 bit di indirizzamento, * mentre nel caso delle 24c04, per es., solamente 8 bit indirizzamento * --------------------------------------------------*/ /*-----------------------------------------------------------------------------Function: Input: Output: Return: Description: Changes: ------------------------------------------------------------------------------*/ void E2P_v_fWriteEEPROM(unsigned char addressSlave , unsigned char byteAddress,

90


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, unsigned char *pData ){

, unsigned

E2P_v_fStart(); addressSlave = ((addressSlave & 0x0f) | 0xA0) ;

char nData

// 0xA0: rappresenta IDENTIFIER in I2C // per memorie EEPROM

addressSlave &= 0xfe; E2P_v_sendByte(addressSlave); E2P_v_waitACK(); E2P_v_sendByte(byteAddress); E2P_v_waitACK(); while(nData > 0){ E2P_v_sendByte(*pData); pData++; nData--; E2P_v_waitACK(); } E2P_v_fStop(); delay(DEL_I_5mS,DEL_J_5mS); delay(DEL_I_5mS,DEL_J_5mS); } /*-----------------------------------------------------------------------------Function: Input: Output: Return: Description: Changes: ------------------------------------------------------------------------------*/ void E2P_v_fRANDOM_ReadEEPROM(unsigned char addressSlave , unsigned char byteAddress, unsigned char *pDataRead ){ /*

E2P_SCL = 1; E2P_v_uDelay(2); E2P_SDA = 1; E2P_v_uDelay(2); E2P_SCL = 0; E2P_v_uDelay(4); E2P_SCL = 1;

*/ E2P_v_fStart(); addressSlave = ((addressSlave & 0x0f) | 0xA0) ;

// 0xA0: rappresenta IDENTIFIER in I2C // per memorie EEPROM

addressSlave &= 0xfe; E2P_v_sendByte(addressSlave); E2P_v_waitACK(); E2P_v_sendByte(byteAddress); E2P_v_waitACK(); E2P_v_fStart(); addressSlave |= 0x01; E2P_v_sendByte(addressSlave);

// metto in lettura

E2P_M_SDA_IN(); E2P_SCL = 1; E2P_v_uDelay(1); while(E2P_SDA == 1){} E2P_v_uDelay(1); E2P_SCL = 0; E2P_v_uDelay(1); *pDataRead = 0; maskBit = 0x80; do{ E2P_SCL = 1; E2P_v_uDelay(1); if(E2P_SDA == 1){ *pDataRead |= maskBit; } E2P_v_uDelay(1); E2P_SCL = 0; maskBit = (maskBit >> 1); }while(maskBit > 0); E2P_v_uDelay(1); E2P_M_SDA_OUT(); E2P_SDA = 0;

91


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, E2P_SCL = 1; E2P_v_uDelay(1); E2P_SDA = 1; E2P_v_uDelay(1); E2P_SCL = 0; E2P_v_uDelay(1); E2P_SDA = 0; } /*-----------------------------------------------------------------------------Function: Input: Output: Return: Description: Changes: ------------------------------------------------------------------------------*/ void E2P_v_sendByte(unsigned char byteSending){ maskBit = 0x80; do{ if(byteSending & maskBit){ E2P_SDA = 1; } else{ E2P_SDA = 0; } E2P_v_fClock(); maskBit = (maskBit >> 1); }while(maskBit > 0); }

void funzioneDiEsempioLetturaScrittura(void){ // esempi di chiamata funzione scrittura eeprom /*

INDIRIZZO

IND. VAR.

INDIRIZZO

EEPROM

IN EEPROM

VAR IN RAM

N. BYTE * DA MEMORIZZARE*/ //DOU_RD7 = 1; E2P_v_fWriteEEPROM( 0x00 &HYS_uc_posizionePulsanteSET , 1 E2P_v_fWriteEEPROM( 0x00 &HYS_uc_posizionePulsanteS , 1 E2P_v_fWriteEEPROM( 0x00 &HYS_uc_posizionePulsanteF , 1

, E2P_ADDRESS_PULS_SET ); , E2P_ADDRESS_PULS_S ); , E2P_ADDRESS_PULS_F );

, , ,

//--- esempio funzione lettura eeprom E2P_v_fRANDOM_ReadEEPROM(0x00 , E2P_ADDRESS_PULS_SET &HYS_uc_posizionePulsanteSET ); E2P_v_fRANDOM_ReadEEPROM(0x00 , E2P_ADDRESS_PULS_S &HYS_uc_posizionePulsanteS ); E2P_v_fRANDOM_ReadEEPROM(0x00 , E2P_ADDRESS_PULS_F &HYS_uc_posizionePulsanteF ); }

92

, , ,


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

SPI SPI acronimo di Serial Peripheral Interface, È un bus standard di comunicazione made in Motorola e sviluppato, in una sua variante, anche dalla National Semiconductor con il nome di bus MicrowireTM È un sistema di comunicazione tra un Microcontrollore e altri circuti/periferiche o tra più Microcontrollori. La trasmissione è di tipo Master- Slave, infatti avviene tra un dispositivo principale detto Master(“padrone”) e uno o più dispositivi definiti Slave( “schiavo”), questo perché il master controlla il bus, emette il segnale di clock e decide quando iniziare e terminare la comunicazione. Da questo possiamo subito notare che si tratta di una trasmissione sincrona, per la presenza di un clock che coordina la trasmissione e ricezione dei singoli bit e determina la velocità di trasmissione. In oltre l’SPI è una trasmissione seriale con interfaccia FullDuplex, il quale è un enorme vantaggio,infatti si può trasferire e ricevere nello stesso momento. L’SPI viene spesso utilizzato per delle piccole memorie esterne epiccoli convertitori. Il sistema di comunicazione viene chiamato anche connessione a quattro fili, però spesso non si tiene conto della connessione alla VDC a 0V, comunemente chiamata GND, e quindi sarebbero 5 i fili.

Figura 70 connessione Master – Slave

L’spi si basa su quattro segnali:  SCK o SCLK ( RC3 nel datasheet) : clock di comunicazione Per quanto riguarda la velocità di scambio dei dati ,ovvero la frequenza del clock non vi è un limite minimo,ma vi è un limite massimo che va determinato in base dai dispositivi connessi e dal loro numero, in quanto ogni dispositivo collegato al bus introduce sulle linee di comunicazione una capacità “parassita”.  SDI/MISO/SIMO/DI/SI (RC4 nel datasheet) : il più usato come terminologia è il MISO acronimo di Master Input Slave Output. Il segnale SDI/MISO è la linea attraverso cui il dispositivo (master o slave) riceve il dato seriale emesso dalla controparte. 

SDI / MOSI (RC5 nel datasheet) : Master Output Slave Input il dispositivo emette, il suo output ponendo il dato sulla linea SDO/MOSI (linea di output di dato).

SSn : sono linee di selezione che collegano il master ai diversi slave qualora ci siano più slave.

93


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Nella figura sottostante possiamo vedere una comunicazione Master-Slave.

Figura 71: Esempio di connessione diretta tra un master e tre slaves controllati singolarmente (http://it.wikipedia.org/wiki/Serial_Peripheral_Interface)

Il vantaggio in connessioni di questo tipo è sicuramente legato alla velocità di comunicazione,tra master e slave, molto più rapida. Mentre lo svantaggio sta nel dover avere un pin di SS per ogni slave. Per risolvere il problema del numero dei pin di SS si possono collegare gli slave in catena secondo una terminologia comune in Daisy Chain,ovvero l’uscita di un dispositivo collegata all'ingresso del dispositivo successivo nella catena.

Figura 72: Master connesso a tre slaves connessi secondo una terminologia comune in Daisy chain (http://it.wikipedia.org/wiki/Serial_Peripheral_Interface)

IL vantaggio in questo caso è l’utilizzo di un unico pin di selezione, mentre lo svantaggio sta nella minore velocità di aggiornamento dei singoli slave. Le trasmissioni sono spesso composte da 8-bit a parola,tuttavia le dimensioni delle parole possono avere anche altri valori,come parole a 16-bit per i controller touchscreen o per i codec audio, oppure 12-bit a parola per molti convertitori digitale-analogico o analogico-digitale. La trasmissione dei dati sul bus SPI si basa sul funzionamento dei registri a scorrimento chiamati shift register ,ogni dispositivo sia master che slave è dotato di un registro a scorrimento interno i cui bit vengono emessi e, contemporaneamente, immessi, rispettivamente, tramite l'uscita SDO/MOSI e l'ingresso SDI/MISO.

94


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 73: Dettaglio dell'hardware nella comunicazione tra master e un singolo slave in cui si vede la presenza di un buffer circolare a 8 bit (http://it.wikipedia.org/wiki/Serial_Peripheral_Interface)

Il registro a scorrimento è un'interfaccia completa mediante la quale vengono impartiti comandi e trasmessi dati che arrivano in modo seriale ma che internamente vengono prelevati, in modo parallelo. Ad ogni impulso di clock i dispositivi che stanno comunicando sulle linee del bus emettono un bit dal loro registro interno rimpiazzandolo con un bit emesso dall'altro interlocutore. La sincronizzazione è fatta sui fronti di clock di salita o di discesa regolata da 2 parametri impostabili: CPOL e CPHA CPOL: regola la polarità del clock ovvero discrimina lo stato normale di riposo cui si porta la linea di clock quando non è attiva. Quando CPOL è impostato a 0 il clock, nel suo stato di riposo, si porta a livello logico basso, viceversa si porta a livello logico alto, durante il tempo di inattività, se CPOL è impostato ad 1. CPHA(CKE) regola il fronte di clock in cui il ricevente campiona il segnale in ingresso. Se CPOL=0 allora con CPHA possiamo scegliere di campionare il dato sul fronte di discesa del segnale di clock, impostando CPHA=0, oppure sul fronte di salita, impostando CPHA ad 1. 

CPOL = 0 allora il valore di base del clock è pari a zero  CPHA = 0, i dati vengono acquisiti sul fronte di salita del clock  CPHA = 1, i dati vengono acquisiti sul fronte di discesa del clock

 CPOL = 1 il valore di base dell clock è uguale ad 1  CPHA = 0, i dati vengono acquisiti sul fronte di discesa di clock  CPHA = 1, i dati vengono acquisiti sul fronte di salita di clock. Nelle figure sottostanti possiamo quindi vedere il comportamento dello slave con CKE = 0, e con CKE = 1,

95


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Le modalità di funzionamento più spesso utilizzate dai dispositivi in commercio sono quelle con CPHA=CPOL=0 e con CPHA=CPOL=1. Il dato di output è emesso sempre in corrispondenza della prima transizione del clock. La comunicazione viene intrapresa sempre su iniziativa del dispositivo master che abilita lo slave tramite CS e successivamente impone il clock sulla linea dedicata. Con questa procedura ha inizio lo scambio dei bit tra i due registri. Alla fine di ogni parola trasmessa il contenuto del registro dello slave sarà passato al master e viceversa.

96


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Transceivers I transceiver sono dei traslatori di livello che permettono di interfacciare dispositivi che lavorano con tensioni 0 e 5 volt come ad esempio micro o tecnologie TTL,a standard di comunicazione come ad esempio RS232 o RS485 che utilizzano tensioni nettamente superiori. I più famosi sono:MAX232; SN75176 e MAX485.

Figura 74: circuito con bjt per traslare il livello da Tx a Rx

Il MAX232 viene ampiamente utilizzato per lo standard RS232 al posto del circuito traslatore di livello fatto con transistor riportato nella figura 1. Il MAX232 con un'alimentazione di 5V permette di inalzare il livello di tensione in ingresso ad esempio al micro portandolo a poco meno di 10V e quindi compatibile con lo standard RS232. Per ottenere le tensione positive e negative necessarie per il funzionamento dell'integrato è usata una configurazione a pompa di carico, costituito da circuiti interni all'integrato e quattro condensatori esterni di circa 1 uF. Nella figura 2 è riportata la tipica configurazione del MAX232 che ci permette di usufruire delle sue potenzialità.

Figura 75:piedinatura e circuito applicativo del MAX232

97


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Gli integrati SN 75176 e MAX485 sono perfettamente compatibili pin to pin. Servono per interfacciare una periferica TTL o un microcontrollore a un BUS fatto con uno standard RS485. Ogni MAX485 contiene un ricevitore e un trasmettitore e riesce a erogare per il bus una tensione di 12,5V o di -8V.

98


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

SENSORISTICA in sistemi automatici, una delle parti più importanti è la sensoristica. Come si può capire dal nome stesso, si tratteranno i vari sensori e si utilizzeranno dei circuiti di condizionamento. Un sistema solitamente è formato da questo tipo di struttura:

sensori

condizionamento

micro

dac

Ampli di potenza

attuatore

Condizionamento

Tutto parte dai sensori o trasduttori, essi servono per trasformare una grandezza fisica (temperatura, velocità, posizione…) in grandezza elettrica. I sensori per i sistemi automatici sono molto importanti, perché essi forniscono dati al sistema sull’ambiente che lo circonda. I sensori possono essere di vario genere, si differenziano, per la grandezza che misurano, per che grandezza elettrica forniscono e per la loro struttura fisica. Infatti esistono sensori che possono misurare la temperatura, ma non sono tutti uguali, poiché ce ne sono alcuni che forniscono una tensione in uscita e altri una corrente. I sensori possono essere:  Al silicio;  On/off;  Bimetallo; i sensori possono uscire in:  Tensione ;  Corrente  Sensori resistivi; perché un sensore lavori correttamente, bisogna collegargli a valle un circuito di condizionamento. Il CIRCUITO DI CONDIZIONAMENTO ha lo scopo di agire sul segnale elettrico fornito dal sensore e adeguarlo alle richieste dei circuiti successivi. Il microprocessore è la mente del sistema, esso controlla e gestisce ogni operazione. Il dac è un convertitore digitale analogico esso serve per rendere il segnale fornito dal micro di natura digitale, in analogico che successivamente entrerà in un amplificatore di potenza, che servirà per pilotare l’attuatore, che molto spesso è un motore. Per ulteriori chiarimenti e reperimento dei datasheet, consultare il seguente sito: http://www.mksa.deit.univpm.it/biblioteca/sala_tecnica/scaffale_sensori/tecpaper.htm

99


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, clicca sopra l’immagine due volte per aprire il file:

Figura 76: cenni sui trasduttori, nota intruduttiva

100


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

TERMOCOPPIE La termocoppia è un sensore utilizzato come rivelatore di temperatura basato su un principio fisico, è costituito da due metalli di diversa natura, uniti tra loro ad una delle due estremità con una saldatura. Quando poi riscaldiamo o raffreddiamo questa estremità, viene prodotta una differenza di potenziale direttamente correlata alla temperatura che si sta misurando tramite una legge che le lega chiamata “legge di Seebeck”. Possiamo riassumere tale legge tramite una semplice formula: Vm = α(Th-Tc) Dove abbiamo: Vm = differenza di potenziale ai capi della termocoppia α = la variazione di tensione ai capi della termocoppia al variare della temperatura Th = temp. Hot Tc = temp. Cold Quest'immagine ci mostra un esempio di termocoppia con un i due tipi di metalli differenti quali ferro e costantano.

101


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

CARATTERISTICHE DELLE TERMOCOPPIE: In particolare le termocoppie sono ampiamente utilizzate perché economiche, facilmente sostituibili, standardizzate e possono misurare un ampio intervallo di temperature con un tempo di reazione molto rapido. Il loro limite più grande è l'accuratezza, infatti errori sistematici minori di un grado celsius sono difficili da ottenere, per questo non vengono utilizzati in ambiti di misurazione della temperatura come termometri per la misurazione della temperatura corporea o misurazione della temperatura di casa o esterna alla casa, ma vengono impiegati per rivelazioni molto più alte come ad esempio quelle delle temperature di forni o utilizzi nell'ambito industriale ecc.... Inoltre le termocoppie sono dei dispositivi non lineari, nonostante il loro vasto utilizzo.

TIPOLOGIE DI TERMOCOPPIE: Le termocoppie sono disponibili in diverse combinazioni di metalli, che a loro volta vengono etichettate secondo lettere dell’alfabeto: le quattro più comuni sono la J, K, T e la E. La taratura per ogni termocoppia differisce per diversi range di temperature, e la temperatura massima misurata in genere è limitata dal diametro del filo della termocoppia. Questo limite fa si che una termocoppia di diametro infinitesimale, non può raggiungere il pieno range di temperatura. Elenchiamo ora le quattro termocoppie più comuni e le loro caratteristiche:

TIPO DI TERMOCOPPIA

TIPO DI LEGA

RANGE DI TEMPERATURA

VALORE α (μV/c°)

E

Cromo/Costantano

-200°/900°c

60.9

J

Ferro/Costantano

0°/750°c

51.7

K

Cromo/Alluminio

-200°/1300°c

40.6

T

Rame/Costantano

-250°/350°c

40.6

Se utilizziamo ad esempio una termocoppia di tipo J, come mostra la figura sottostante, i materiali che costituiscono la termocoppia sono il ferro e la costantana; per misurare la tensione di Seebeck è necessario giuntare i due fili del giunto freddo della termocoppia con due fili di rame che realizzano la connessione elettrica con lo strumento. Si determinano, però, in tal modo due nuovi giunti termoelettrici, l'uno costantana-rame e l'altro ferro-rame, che generano a loro volta un potenziale elettrico di Seebeck proporzionale alla temperatura a cui essi si trovano. È evidente che la presenza di questi due nuovi giunti modifica il comportamento del sistema.

102


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

È possibile dimostrare, tuttavia, che i due nuovi giunti non modificano il funzionamento della termocoppia se sono tenuti alla stessa temperatura; in tale condizione, infatti, la tensione di Seebeck introdotta dai due giunti costantana-rame e rame-ferro si compensa e si annulla. La tensione di Seebeck generata da una termocoppia vale: Vtc = α (Tmis - Tref) Come si può osservare dall'equazione, la tensione Vtc fornita dalla termocoppia non è proporzionale al valore della temperatura del giunto caldo; è presente infatti un fattore T ref che dipende dalla temperatura del giunto freddo. Per ottenere un segnale di tensione proporzionale alla sola temperatura del giunto caldo è necessario sommare alla tensione generata dalla termocoppia una tensione di compensazione pari alla componente dell'effetto Seebeck dovuto alla temperatura del giunto freddo: α * Tmis = Vtc + α * Tref La procedura che consente di compensare l'effetto Seebeck del giunto freddo è detta compensazione del giunto freddo e deve sempre essere realizzata quando si misura una temperatura utilizzando una termocoppia. Possiamo realizzare questa compensazione tramite, ad esempio, dei circuiti di condizionamento.

103


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

CIRCUITI DI CONDIZIONAMENTO: Il termine “condizionamento” viene usato per indicare un ampia gamma di operazioni che si rendono necessarie al fine di ottimizzare le prestazioni del sistema di acquisizione. L’opportunità di inserire nel circuito di condizionamento un amplificatore con determinate caratteristiche,o di adottare particolari tecniche per limitare i disturbi ,o di linearizzare un segnale prima di presentarlo al convertitore deve essere valutata prendendo in considerazione diversi fattori. A seconda dei vari fattori appunto possiamo scegliere un tipo di circuito rispetto ad un altro e così vale pure per l'integrato che dobbiamo utilizzare. Possiamo quindi decidere se utilizzare, ad esempio, un AD594 oppure un LT1025 che si differenziano l'uno dall'altro per le diverse caratteristiche. Tra i circuiti integrati più facilmente reperibili per la compensazione del giunto di riferimento abbiamo l'AD594 per la termocoppia di tipo J e l'AD595 per quella di tipo K,

AD594: L'AD594 combina un blocco che produce la tensione di compensazione del giunto freddo (o di riferimento), un amplificatore precalibrato in grado di fornire una tensione d'uscita di 10 mV per ogni °C (sensibilità = 10 mV/°C) ed un circuito di segnalazione della rottura della termocoppia. Per temperature maggiori di 0 °C i due integrati necessitano di un'alimentazione singola compresa tra 5 V e + 30 V, mentre per temperature minori di 0 °C necessitano dell'alimentazione duale ± 15 V.

Al fine di polarizzare correttamente l'ingresso dell'amplificatore è necessario che il pin 1 sia connesso a massa ed al morsetto positivo della termocoppia In realtà la tensione d'uscita VS non è perfettamente lineare ed è uguale a circa 10 mV per ogni

104


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, grado Celsius come riportato nella tabella sottostante. L'integrato AD594 può essere utilizzato anche per misure dirette di temperatura nel range - 55 , +125 °C. In tal caso la termocoppia è sostituita con un cortocircuito (pin 1 connesso a massa) e l'elemento sensibile è la termoresistenza RT interna al blocco isotermico.

105


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

LT1025:

Figura 77: schema interno di un LT1025

L'LT1025 è utilizzabile, a differenza dell'AD594 e 595, per diversi tipi di termocoppie. All' interno di questo integrato infatti abbiamo dei pin specifici per le varie tipologie di termocoppie come possiamo vedere nella tabella della piedinatura. L'alimentazione di questo integrato può andare da 4V a 36V. La temperatura può andare da 0°C a 60°C avendo un accuratezza di 0,5°C. Se si vuole scendere a una temperatura sotto 0°C è possibile utilizzare come sensore un diodo 1N4148, che in base alla temperatura modifica la sua curva. Qui mostriamo un esempio di applicazione dell'LT1025 come circuito di condizionamento per termocoppie di tipo K:

Figura 78: schema di collegamento di un LT1025 con una termocoppia di tipo K

106


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Se R4 ≤ (V-/30μA) allora R4 non è richiesta quando la temperatura dell'LT1025 è ≥ 0°C R3 viene scelta a seconda di un range che va da 0°C a 100°C. Questo circuito ci permette di avere un uscita stabile in modo che ad ogni °C io abbia un valore di tensione di 10mV.

PIEDINATURA LT1025: Pin 1

E: 60,9 μV/c°

Pin 2

Vin

Pin 3

Vo : 10 mV/c°

Pin 4

GND -

Pin 5

R common ( a ground per funzionare )

Pin 6

R , S : ( termocoppia ) 6 μV/c°

Pin 7

K , T : 40,6 μV/c°

Pin 8

J : 51,7 μV/c°

Quest'immagine ci mostra il circuito interno di un LT1025 e notiamo appunto che ci sono varie uscite per le varie tipologie di termocoppie con i relativi valori.

Figura 79: schema di compensazione di un LT1025, come si può notare abbiamo compensazioni per termocoppie differenti

107


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

ESERCIZI: 1. ESERCIZIO: verificare il funzionamento di una termocoppia con relativi calcoli. 2. ESERCIZIO: realizzare un circuito che sia in grado di rilevare e amplificare opportunamente una rilevazione di temperatura eseguita con una termocoppia.

Esercizio 1: Termocoppia di tipo J:

Vr = 1,277 mV ( lo ricaviamo tramite la tabella dei valori della termocoppia J ). Se misuro una Vo = 3,991 mV avrò che Vm = 3,991+1,227=5,268 mV e guardando nella tabella dei valori della termocoppia J vedremo che tm corrisponde a 100°C.

Esercizio 2: Si dispone di una termocoppia di tipo K da usare per misurare la temperatura di un forno, il campo di variabilità è compreso fra 50°c e 285°c. Progettare il condizionamento necessario in modo che: 285°c | | | ----> | | 50°c

5V | | | | | 0V

108


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Vo(t) = Vi(t) * [1 + (R1/R2)] = α (Th-Tc) * [1 + (R1/R2)] [1 + (R1/R2)] -Si suppone che la Tc sia costante e pari a 25° G = [1 + (R1/R2)] = 1 + (255*103/1,1*103) = 233 E = Vi(t) = 40,6*10-6*(Th-25°c) Et1 = 40,6*10-6*(50-25) = 1,025mV Et2= 40,6*10-6*(285-25)= 10,556mV Vo(t1)MAX = 256*1,015*10-3 = 259,84 mV Vo(t1)min = 233*1,015*10-3 =236,495 mV Vo(t2)MAX = 256*1,556*10-3 = 2702,336 mV Vo(t2)min = 233*1,556*10-3 = 2459,548 mV

109


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Voffset = Valore della tensione che mi trovo dalla termocoppia a 50°C = Vo(t1) Vo' = Vo-Voff (essendo tutte e quattro le resistenze a pari valore) QUANTO DEVE GUADAGNARE IL DIFFERENZIALE? Vo(t2)-Vo(t1) = tensione d'ingresso dove deve corrispondere a 0-5V Gdiff = 5V/[Vo(t2)-Vo(t1)] = 2,05

110


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

RTD (RESISTANCE TEMPERATURE DIPENDENT) Gli RTD sono resistenze che variano il proprio valore resistivo in base alla temperatura che li circonda. Queste termoresistenze vengono utilizzate come sensori di temperatura, sono costruite con materiali appositi, come per esempio il platino, il nichel, il rame, il balco e il tungsteno, poiché essi presentano ottime caratteristiche per quanto riguarda l’ossidazione e possiedono un’ottima resistenza al calore. Il PLATINO è il più utilizzato, perché possiede delle caratteristiche di linearità migliori rispetto agli altri, lo si può capire osservando il grafico sotto:

Il funzionamento di un RTD è molto semplice, una volta inserito in un ambiente, esso muterà il proprio valore resistivo in base alla temperatura dell’ambiente in cui è introdotto. Gli RTD, per lavorare correttamente devono essere sottoposti a una corrente costante molto bassa, si parla di circa 1mA, se la corrente fosse più alta la nostra termo resistenza si riscalderebbe al passaggio di essa e comprometterebbe la misura. La corrente deve essere limitata perché quando essa attraversa una resistenza tende a farla scaldare, e questo negli RTD non deve accadere, poiché essi si devono scaldare solo a causa della temperatura esterna, e non a causa di una corrente che li attraversa, se no tutte le misure risulterebbero errate. Le misure effettuate con RTD sono affidabili, ma pur sempre con una precisione minore rispetto alla termocoppia, anche i range di misura sono inferiori rispetto a quelli di una termocoppia, nel caso degli RTD si parla di un range che vale da -200°C a 800°C circa, è comunque un range molto esteso. Come già spiegato in precedenza il valore resistivo del RTD varia al variare della temperature, ma per sapere quanto vale questo valore basta applicare una semplice formula: Rrtd=R0*(1+αT) Dove:  R0 è il valore della nostro RTD, quando si trova a 0°C;  α è una costante di misura e tipicamente vale circa 3.9083 * 10-3;  T è il valore della temperatura in cui vogliamo fare la misura; tramite questa formula è molto semplice capire l’andamento nel RTD, infatti la curva che determina il valore nella resistenza in base alla temperatura è la seguente:

111


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Al crescere della temperature sale la resistenza del RTD, seguendo un inclinazione che vale α. Nel caso dovessimo effettuare misure a temperature minori di 100°C, la legge che lega resistenzatemperatura è la seguente: Rrtd=R0*[1+αT+βT2+γ(T-100)T3] Dove:  α vale 3.9083*10-3;  β vale -5.775*10-7;  γ vale -4.183*10-12; nel caso si effettuino misure maggiori di 100°C si usa la formula precedente. Gli RTD possono essere di tre tipi differenti:  RTD a 2 fili;  RTD a 3 fili;  RTD a 4 fili;

112


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Tabella di look up: la tabella di look-up descrive l’andamento di un RTD in funzione della temperatura, per diversi valori in gradi centigradi. °C 0 1 2 3 4 5 6 7 8 9 -100 60.26 -90

64.3

63.89

63.49

63.08

62.68

62.28

61.87

61.46

61.06

60.66

-80

68.32

67.92

67.52

67.12

66.72

66.31

65.91

65.51

65.1

64.7

-70

72.33

71.93

71.53

71.13

70.73

70.33

69.93

69.53

69.13

68.73

-60

76.33

75.93

75.53

75.13

74.73

74.33

73.93

73.53

73.13

72.73

-50

80.31

79.91

79.51

79.12

78.72

78.32

77.92

77.52

77.12

76.73

°C

0

1

2

3

4

5

6

7

8

9

-40

84.27

83.88

83.48

83.08

82.69

82.29

81.9

81.5

81.1

80.7

-30

88.22

87.83

87.43

87.04

86.64

86.25

85.85

85.46

85.06

84.67

-20

92.16

91.77

91.37

90.98

90.59

90.19

89.8

89.4

89.01

88.62

-10

96.09

95.69

95.3

94.91

94.52

94.12

93.73

93.34

92.95

92.55

0

100

99.61

99.22

98.83

98.44

98.04

97.65

97.26

96.87

96.48

°C

0

1

2

3

4

5

6

7

8

9

0

100

100.39 100.78 101.17 101.56 101.95 102.34 102.73 103.12 103.51

10

103.9

104.29 104.68 105.07 105.46 105.85 106.24 106.63 107.02 107.4

20

107.79 108.18 108.57 108.96 109.34 109.73 110.12 110.51 110.9

30

111.67 112.06 112.45 112.83 113.22 113.61 113.99 114.38 114.77 115.15

40

115.54 115.92 116.31 116.7

117.08 117.47 117.85 118.24 118.62 119.01

°C

0

1

4

50

119.4

119.78 120.16 120.55 120.93 121.32 121.7

60

123.24 123.62 124.01 124.39 124.77 125.16 125.54 125.92 126.31 126.69

70

127.07 127.45 127.84 128.22 128.6

80

130.89 131.27 131.66 132.04 132.42 132.8

133.18 133.56 133.94 134.32

90

134.7

135.08 135.46 135.84 136.22 136.6

136.98 137.36 137.74 138.12

°C

0

1

6

100

138.5

138.88 139.26 139.64 140.02 140.4

110

142.29 142.66 143.04 143.42 143.8

120

146.06 146.44 146.82 147.19 147.57 147.94 148.32 148.7

130

149.82 150.2

140

153.70 153.95 154.32 154.7

155.07 155.45 155.82 156.2

156.57 156.94

°C

0

4

8

150

157.32 157.69 170.06 170.44 170.81 159.18 159.56 159.93 160.3

160

161.04 161.42 161.79 162.16 162.53 162.9

170

164.76 165.13 165.5

180

168.47 168.84 169.21 169.70 169.95 170.32 170.68 171.05 171.42 171.79

190

172.16 172.53 172.9

173.27 173.64 174

174.37 174.74 175.11 175.48

°C

0

3

6

1

1

2

2

3

3

5

4

2

3

7

8

9

122.09 122.47 122.86

128.98 129.36 129.75 130.13 130.51

5

7

8

9

140.77 141.15 141.53 141.91

144.18 144.55 144.93 145.31 145.68

150.70 150.95 151.33 151.7 2

6

111.28

5

149.07 149.44

152.08 152.45 152.83 153.2 6

7

9 160.67

163.28 163.65 164.02 164.39

165.88 166.24 166.62 166.99 167.32 167.73 168.1

4

5

7

8

9

200 175.84 Table 3. Resistance/Temperature Table** for 385 Platinum, 100.0Ω at 0°C http://www.maximic.com/app-notes/index.mvp/id/3450

113


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Interpolazione lineare Il metodo dell'interpolazione lineare è un metodo numerico per trovare le radici di una funzione. È una versione leggermente più raffinata del metodo della bisezione e ne ripercorre pregi e difetti. Necessita della stima iniziale di un intervallo (a,b) entro cui debba esser compresa la radice, tale che f(a)×f(b) < 0. È anch'esso un metodo del primo ordine e dunque prevede una convergenza lenta. La stabilità è garantita. Sia data una sequenza di n numeri reali distinti xk per k=1,...,n chiamati nodi e per ogni xk sia dato un secondo numero reale yk. L'interpolazione si propone di cercare una funzione di variabile reale f(x) di una certa famiglia di funzioni di variabile reale tale che sia Una coppia (xk,yk) viene chiamato punto dato ed f viene detta interpolante per i punti dati. Quando gli yk sono forniti da una funzione nota talora si scrivono fk. L'algoritmo sfruttato dal metodo è il seguente: 1. 2. 3. 4. 5. 6.

Scelta iniziale di a e b tali che f(a)×f(b) < 0 c = (a×f(b) - b×f(a))/(f(b) - f(a)) Se f(c) = 0 entro un certo criterio di tolleranza, c è la soluzione cercata Se f(a)×f(c) < 0 la radice è compresa nell'intervallo (a,c) Se f(c)×f(b) < 0 la radice è compresa nell'intervallo (b,c) Si ripete il ciclo rimpiazzando a o b con c a seconda se sia soddisfatta la condizione 4. o 5.

Si distingue dalla bisezione solo nel punto 2. dove si impiega un'interpolazione lineare piuttosto che dimezzare semplicemente l'intervallo. Questo accorgimento migliora l'efficienza del metodo.

114


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

RTD A 2 FILI:

Figura 80: esempio di una sonda RDT a 2 fili

Sopra sono raffigurati lo schema di un RTD a 2 fili e uno dei possibili case. Questo tipo di RTD è il più economico, esso viene utilizzate in misure che non richiedono una grande precisione. Se si utilizza un RTD di questo tipo si va incontro al problema della resistenza caratteristiche dei cavi (le due Rs), che valgono pochi ohm, ma possono sfasare le misure in modo non indifferente. Nel caso si usi un RTD di questo genere, non si può tener conto di questo problema, esso infatti va a compromettere il valore della tensione Vab, infatti essa non dipende solo dal valore resistivo del RTD, ma anche da i due cavi, quindi Vab vale: Vab=2Rs*I+RTD*I questo difetto crea errori sulle misure difficilmente compensabili.

115


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

RTD A 3 FILI

Figura 81: esempio di una sonda RTD a 3 fili

Sopra sono rappresentati, lo schema e uno dei case possibili di un RTD a 3 fili. Un RTD di questo tipo è migliore rispetto al precedente, ma anche in questo caso non si riesce a correggere l’errore delle resistenze del cavo. In questo caso l’errore si dimezza poiché sul ramo A non c’è passaggio di corrente, quindi la mia Vab vale: Vab=Rs*I+RTD*I Le misure effettuate con un RTD di questo tipo sono già molto affidabili.

116


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

RTD A 4 FILI:

Figura 82: esempio di una sonda RTD a 4 fili

Sopra sono raffigurati lo schema e uno dei possibili case di un RTD a 4 fili. Quando si utilizzano RTD di questo tipo, possiamo stare certi che la misura è precisa, infatti con questa soluzione compensiamo completamente il problema che si presentava su un 3 fili e maggiormente su un 2 fili. Con questa soluzione le resistenze dei cavi non introducono errori, poiché la misura viene presa sui rami A e B sui quali non passa corrente, quindi la nostra Vab varrà: Vab=RTD*I Questi tipi di RTD, sono i migliori e le misure non presentano errori.

CIRCUITI DI CONDIZIONAMENTO PER RTD: Per far si che i nostri dispositivi funzionino correttamente c’è bisogno di circuito di circuiti di condizionamento. I circuiti di condizionamento vanno inseriti a valle dei sensori o trasduttori, essi hanno lo scopo di agire sul segnale elettrico fornitogli dal sensore, per poi attribuirgli e quindi adattarlo alle esigenze dei circuiti successivi, come possono essere per esempio dei convertitori ADC o microprocessori.

TRASDUTTORE

CONDIZIONAMENTO

Molto spesso i circuiti di condizionamento sono composti da circuiti tipo:  Amplificatori, possono essere invertente e non invertente, essi servono per aumentare il livello del segnale, prima che ad esso si aggiunga il rumore degli stadi successivi, inoltre serve per rendere più facile l’elaborazione del segnale stesso negli stadi successivi;

117


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Buffer, essi siccome hanno un resistenza d’ingresso alta servono, per far si che il sensore non venga caricato dai circuiti di condizionamento;

Circuiti di off-set, essi hanno la funzione di translare il livello del segnale di una quantità prefissata;

Convertitore corrente/tensione, esso è utile quando si utilizzano sensori con l’uscita in corrente, esempio AD590, quindi convertirlo in tensione rende più facili i passaggi successivi; ce ne sono molti di più quelli elencati su sono solo una piccola parte e sono i più banali, tutti sono realizzabili con amplificatori operazionali. In questa parte però tratteremo circuiti di condizionamento, applicati agli RTD. In base a quale RTD utilizziamo il circuito di condizionamento sarà diverso, inoltre ce ne sono vari per lo stesso RTD, sta al progettista decidere quello più appropriato al compito che bisogna svolgere.

118


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

CIRCUITO DI CONDIZIONAMENTO PER UN RTD A 3 FILI:

Figura 83: circuito di condizionamento per un RTD a 3 fili

Il circuito è composto da un semplice amplificatore operazionale, il suo funzionamento è molto semplice:  VRTD= tensione ai capi del RTD;  Vw1=tensione ai capi della resistenza Rw1;  Vw3=tensione ai capi della resistenza Rw3;  Su Rw2 non scorre corrente;  I1=generatore di corrente costante, 1mA, (più avanti saranno rappresentanti circuiti che possono generare correnti costanti); ipotizzando che Vw1=Vw3 (ipotesi giustificata se e solo se la corrente di offset risulta trascurabile, rispetto alla corrente I e che R4 sia molto grande rispetto ad Rw1), il circuito lo possiamo risolvere in questo modo:

Figura 84: circuito risolto con le ipotesi sopra indicate

Ridisegnando lo schema, il circuito si ripresenta più semplice, in questo caso basta applicare il principio della sovrapposizione degli effetti, quindi, calcoliamo prima la tensione d’uscita cortocircuitando a massa v2, poi la ricalcoliamo cortocircuitando a massa v1, in fine sommeremo i due risultati, detto ciò, la tensione d’uscita vale: Vout=-R6/R5*v1+v2*(1+R6/R5)

119


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Siccome R6 e R5, hanno lo stesso valore ohmico (100k), la Vout varrà: Vout=2*V2-V1 Alla luce delle ipotesi fatte precedentemente, possiamo dire che: V2=VRTD+Vw3 V1=Vw1+VRTD+Vw3 Andando a sostituire, la Vout varrà: Vout=2*( VRTD+Vw3)-( Vw1+VRTD+Vw3) Siccome Vw1 è uguale a Vw3, si possono eseguire delle banali semplificazioni matematiche, quindi la Vout varrà: Vout=VRTD Tramite questo circuito di condizionamento, possiamo ottenere in uscita la stessa tensione che c’è ai capi del nostro RTD. Questa simulazione è stata fatta con un RTD che si trova a 0°C: in questa schermata è presente la tensione sul RTD:

Se R6=R5 ottengo che: Infatti in uscita essendo Vin2=6 e Vin1=5, dovrei ottenere in uscita 7V, la simulazione risulta così:

Figura 85: simulazione del circuito sopra descritto Figura tensione di uscita

Ipotizzando che Vw1 sia uguale a Vw3, vado a sostituire nella formula dell'equazione di uscita i rispettivi valori di Vin1 e Vin2 ottengo che Vout = Vrtd Questa ipotesi è giustificata se e solo se la corrente di offset ios, risulta trascurabile rispetto alla corrente Ik.

120


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

CIRCUITO DI CONDIZIONAMENTO PER UN RTD A 4 FILI: nel caso di un RTD a 4 fili si utilizza un differenziale per strumentazioni, lo schema elettrico è il seguente:

Figura 86: circuito di condizionamento per un RTD a 4 fili

Il circuito è composto da due stadi, il primo costituito da due amplificatori operazionali, che forniscono un’uscita proporzionale a v2-v1. Il secondo stadio è una configurazione differenziale. Se consideriamo gli operazionali ideali, allora la resistenza Rg, ha il terminale superiore al potenziale v2, mentre ha il terminale inferiore al potenziale v1. La corrente i che passa in Rg è perciò: I=IRg=(V2-V1)/Rg Allora la differenza di potenziale tra le due uscite, è pari a: Vu2-Vu1=IRg*(R+Rg+R)=(V2-V1)/Rg *(Rg+2R) Quindi la tensione Vout finale vale: Vout=R5/R3*(Vu2-Vu1)=R5/R3*(1+2R/Rg)*(v1-v2) Le caratteristiche di questo circuito sono:  Resistenza d’ingresso molto alta, poiché sono operazionali, quindi non assorbono corrente;  L’amplificazione è controllata solo dalla resistenza Rg;  Questo circuito lo si può trovare anche integrato, con come unico componente esterno RG; in questa applicazione funziona perfettamente, poiché non assorbe corrente agli ingressi, inoltre tramite questa configurazione, riusciamo a evitare il problema della resistenza dei cavi, in modo tale che il nostro RTD faccia misure con una elevata precisione.

121


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

GENERATORI DI CORRENTE COSTANTI: In entrambi i circuiti di condizionamento, compare un generatore di corrente costante, questo serve per far lavorare RTD a corrente molto bassa di circa 1mA, per i motivi spiegati precedentemente. Un generatore di corrente costante, è un generatore che eroga un valore di corrente prefissato in modo costante nel tempo. Ci sono molto circuiti che possono generare correnti costanti, tra le configurazioni più usate abbiamo circuiti con operazionali, MOS e bjt. Sotto vi propongo alcune delle configurazioni più utilizzate, con amplificatori operazionali. GENERALITA’: con gli amplificatori operazionali è possibile creare generatori di corrente costante. Utilizzando le configurazioni di convertitori tensione corrente, è possibile applicando una tensione d’ingresso costante, ottenere un corrente costante in uscita. I comuni amplificatori operazionali, possono erogare correnti fino a circa 10mA, superato il limite l’operazionale va in protezione foldback, è per questo che in alcuni casi l’operazionale da solo non basta. Un generatore di corrente costante di piccole correnti, è molto utile per l’utilizzo degli RTD. Gli RTD sono resistenze che dipendono dalla temperatura, vengono utilizzanti in circuiti con il compito di tener sotto controllo le temperature di un ambiente. Come è noto una resistenza al passaggio della corrente tende a scaldarsi, è per questo che gli RTD, devono lavorare a correnti molto basse poiché il riscaldamento deve avvenire a causa della temperatura esterna e non per il passaggio di corrente all’interno di esse, per questo lavorano circa con correnti di 1mA, facilmente gestibili da amplificatori operazionali.

GENERATORE DI CORRENTE COSTANTE CON OPAMP E PNP: SCHEMA ELETTRICO:

Figura 87: generatore di corrente costante formato da un operazionale ed un transistor pnp, al variare delle tensioni VCC, il sistema non cambia compensandosi reciprocamente

Tramite l’utilizzo di questo circuito è possibile anche erogare correnti maggiori a quelle erogabili dall’operazionale, poiché all’uscita dell’operazionale è collegato un transistor pnp, con il compito di amplificare la corrente all’uscita dell’operazionale. Considerando l’amplificatore operazionale ideale, possiamo dire che V+=V-. La tensione d’ingresso V+ è data da un partitore resistivo, quindi: V+=(Vcc*R2)/(R1+R2)=13.56V Siccome V+=V-, allora il terminale in basso di R3 si trova alla tensione V+=V-, quindi la tensione V- vale:

122


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, V-=Vcc-R3*I3 Di conseguenza la corrente I3 ha valore: I3=(Vcc-V-)/R3=2.8mA Siccome l’ingresso invertente non assorbe corrente, la I3 è la corrente di emettitore del bjt, ma come è noto la corrente di emettitore in un bjt è circa uguale alla corrente di collettore, in questo caso Il, a meno di un minimo errore. Quindi possiamo dire che la corrente che attraversa il carico rimane costante al variare del carico stesso, poiché essa dipende da 3 parametri costanti: l’alimentazione, la tensione di ingresso che dipende dal partitore e che quindi è costante e dalla resistenza di emettitore. Infatti simulando il circuito è possibile notare come al variare del RTD, la corrente su di esso non cambi. Il caso qui sotto è stato simulato con un valore del RTD che si trova a 150°C:

Figura 88: simulazione del circuito "generatore di correente costante" sopra indicato

È possibile notare come la corrente valga 2.8mA Il seguente caso è simulato a 0°C, quindi il valore del RTD è variato: La tensione sul + dell'operazionale è uguale alla tensione sul -. Questo significa che il circuito è funzionante. Questa è la corretta configurazione per poter generare una corrente costante su di un carico. la corrente sul carico, teoricamente deve venire circa 3mA, è possibile vederlo anche dalla simulazione

123


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 89: simulazione a 0°

Anche in questo caso la corrente vale 2.8 mA Dalle simulazioni è stata verificata l’indipendenza della corrente rispetto al carico. Questo circuito ha dei limiti, poiché se la resistenza di carico diventa troppo grande, otterrei una caduta di tensione troppo elevata e il bjt non lavorerebbe più correttamente.

GENERATORE DI CORRENTE COSTANTE CON BJT NPN: SCHEMA ELETTRICO:

Figura 90: generatore di corrente costante formato da un operazionale ed un transistor pnp, al variare delle tensioni VCC, il sistema non cambia compensandosi reciprocamente

Lo schema sopra rappresenta un generatore di corrente costante con all’uscita dell’operazionale un transistor npn. Esso serve come nel caso precedente a amplificare la corrente in uscita dall’amplificatore operazionale. La tensione d’ingresso come nel caso precedente è data da un partitore resistivo, quindi la v+ che è uguale alla v-, sarà: V+=(Vcc*R2)/(R1+R2)=13.56V La v- vale:

124


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, V-=Vcc-R3*I3 Quindi di conseguenza la corrente di collettore vale: I=(Vcc-V-)/R3 Siccome la corrente di collettore è circa uguale alla corrente di emettitore, allora la i che passa sul carico è quella sopra. Simulazione con un RTD a 0°C:

Figura 91: simulazione del circuito sopra indicato a 0°

La corrente vale 2.8mA.

125


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

GENERATORE DI CORRENTE COSTANTE CON OPERAZIONALE E RETE RESISTIVA: SCHEMA ELETTRICO:

Figura 92: il circuito rappresenta un generatore di corrente costante con un operazionale ed una rete resistiva

Lo schema riportato sopra rappresenta un generatore di corrente costante, composto solo da un’operazionale e da una rete resistiva. Il funzionamento di questa configurazione consiste nel mantenere la corrente d’uscita costante anche se il carico (in questo caso un RTD), varia. Ragionando sul circuito, si può raggiungere la relazione che lega la tensione alla corrente, siccome gli ingressi degli operazionali sono ad alta impedenza, e quindi non assorbono corrente possiamo dire che la corrente che passa sul carico è uguale alla corrente che passa su R1, meno la corrente che passa su R3, quindi: Il=I1-I3 Che è quindi uguale a: Il=[(Vout-V+)/R1]-(V+/R3) Se ipotizziamo gli operazionali ideali, allora V+=V-, quindi: V+=V-=[(Vin*R)/(R+R)]+[(Vout*R)/(R+R)]= Vin/2+Vout/2 Sono due partitori con resistenze uguali, quindi valgono la metà della tensione d’ingresso che entra nel partitore. Da questa formula possiamo trovare il valore della tensione d’uscita, quindi: Vout=2V+ - Vin A questo punto possiamo andare a sostituire tutto nella formula iniziale per ricavare la relazione della corrente sul carico: Il= (2V+ - Vin - V+)/R – V+/R quindi: Il=V+/R – Vin/R – V+/R quindi:

126


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Il=-Vin/R Come possiamo vedere dalla formula la corrente che scorre sul carico dipende solo esclusivamente dal valore della tensione d’ingresso, e dal valore delle resistenze (tutte uguali) che compongono la rete resistiva, e non dalla resistenza del carico, infatti se questo varia la corrente rimarrà costante. Per verificare il comportamento di questo circuito, l’ho simulato su swcad, attribuendo alle resistenze un valore di 5K, per ottenere 1mA di corrente, ma siccome, la corrente che eroga questo circuito è negativa, gli ho applicato un tensione d’ingresso negativa pari a 5V, in modo tale che all’uscita ottenessi, 1mA positivo. La simulazione sotto è stata fatta con RTD che si trova a 150°C:

Figura 93: simulazione del circuito sovrastante, con una temperatura di 150°

Come possiamo notare la corrente vale 1mA. La simulazione sotto invece è stata fatta con un RTD che si trova a 0°C.

Figura 94: simulazione a 0°

127


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, La corrente è sempre 1mA. Possiamo quindi affermare che questo circuito è un generatore di corrente costante. Esistono molti altri tipi di circuiti che generano corrente costante, oltre ai due riportati sopra, per esempio possono essere realizzati, con la stessa configurazione ma con al posto del bjt un mos, con l’unica differenza che quest’ultimo viene controllato in tensione non in corrente, di solito è preferibile. Un esempio di circuito con mosfet per generare corrente costante è il seguente, dove la corrente, Il=(VrefV+)/R

Figura 95: esempio di un circuito generatore di corrente con un MOSFET

Utilizzando questi circuiti quindi è possibile controllare gli RTD.

128


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Alcuni esempi di RTD:

Figura 96: esempio di un datasheet di un RTD con resistenza in platino

Figura 97: specifiche costruttive ed applicative del sensore

129


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 98: esempio di un altro datasheet di un RTD, con le caratteristiche costruttive e i valori generali

130


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, clicca sopra due volte per aprire il datasheet del componente:

Figura 99: datasheet

131


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

CASE PIU’ COMUNI: SONDA A TESTA ISOLATA:

Figura 100: esempio di una sonda presente nel seguente sito: http://it.farnell.com/labfacility/010007td/sonda-pt100testa-isolata-100-mm/dp/7255421

SONDA CLASSICA:

Figura 101: esempio di una sonda classica: http://www.ema.it/Shop/Product-Fluke-884X-RTD-Sonda-di-temperaturaRTD-100-ohm_503.aspx

SONDA SMD:

Figura 102: esempi di sonde SMD (le dimensioni non sono quelle originali, essendo molto più piccole è stato necessario un ingrandimento): http://www.directindustry.it/prod/msi-sensors/rilevatori-di-temperatura-a-resistenza-rtd-smd9250-410339.html

Utile per i monitoraggi di temperatura di una scheda.

Esercizi (con amplificatori operazionali relativi a RTD): 1. Esercizio: Verificare se il circuito in figura è correttamente funzionante nell’ottica di un sistema di generatore In. 2. Esercizio: risoluzione problemi relativi ad una rete utile a fornire un I costante. 3. Esercizio: modifica rispetto all’ESERCIZIO 1 (transistor da NPN a PNP). 4. Esercizio: Dimostrare la relazione che c’è tra Vin e la corrente I. 5. Esercizio: Come si fa a compensare un sistema RTD a 3 fili? 6. Esercizio: Determinare la relazione tra Vout e Vin. 7. Esercizio: Determinare la relazione tra Vout e Vin quando il pulsante è aperto e quando è chiuso. 8. Esercizio: simile al precedente ma con dati differenti. 9. Esercizio: studiare il circuito di figura 10. Esercizio: studio di un amplificatore per strumentazione

132


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Esercizio 1: Obiettivo: Verificare se il circuito è correttamente funzionante nell'ottica di un sistema generatore Im.

Figura 103: generatore di corrente costante in configurazione Op. Amp. & bjt npn

La prima considerazione che posso fare è che la V+ è uguale alla V-.

Quindi andando a sostituire i valori rispettivi delle resistenze e dalla Vcc, ottengo che V+ è uguale a circa 13,5V. Ma in zona lineare Vce è uguale a Vcc/2, quindi in questo caso è uguale a 6 Volt. Dall’equazione di maglia possiamo ricavare la corrente:

Quindi la corrente Ic (sul carico RTD) è uguale a circa 45mA. Risultato ottenuto anche dalla simulazione. è da notare che questo circuito non può funzionare, in quanto anche dalle simulazioni è possibile concludere che questo tipo di configurazione è sbagliata:

133


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 104: tensione in uscita dal circuito

Infatti è anche possibile notare che V+ non coincide con V-, inoltre la corrente sul carico non è uguale alla corrente che scorre su R3

Figura 105: Corrente (in questo caso il riferimento R4 è l'RTD)

134


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio 2: Obiettivo: Problema della Vcc: cosa succede se a Vcc si sovrappone del rumore o anche una tolleranza della stessa Vcc e limiti possibili del circuito per quanto riguarda il valore della resistenza di carico

Figura 106: generatore di corrente costante in configurazione npn, con variazione di tensione VCC

Se aumento Vcc, aumenta anche Ic (quindi il risultato che dà il sensore non dipende più dalla temperatura, ma dalla corrente) Dalla equazione di maglia ricaviamo che:

Se cala Rc, aumenta Ic, conseguentemente deve diminuire anche Vce e quindi non è più vero che Ic=Ib*hfe. Aumentando Ic si verifica un surriscaldamento del transistor

135


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 107: tensione in uscita dal circuito

Il circuito funziona entro certi limiti dettati dal carico (R4), infatti se tale carico non ci fosse il transistor si distruggerebbe La corrente sul carico è venuta:

Figura 108: Corrente carico

136


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio 3: Obiettivo: funzionamento del circuito

Figura 109: generatore di corrente costante in configurazione pnp

V+= 13,5V, mentre Ic è circa uguale a 3 mA, dalle simulazioni è possibile vedere tali risultati ottenuti. Ie è la corrente che scorre su R3. Se questa dovesse diminuire, perché aumenta la resistenza dell'RTD (R4), il potenziale sul meno dell'operazionale diminuirebbe e in uscita avremmo una tensione più alta. Ma una tensione più alta alla base di un pnp comporta una diminuzione della corrente.

137


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 110: tensione in uscita dal circuito

La tensione sul + dell'operazionale è uguale alla tensione sul -. Questo significa che il circuito è funzionante. Questa è la corretta configurazione per poter generare una corrente costante su di un carico. la corrente sul carico, teoricamente deve venire circa 3mA, è possibile vederlo anche dalla simulazione

Figura 111: Corrente sul carico

138


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio 4: Obiettivo: dimostrare la relazione fra la corrente I e la tensione d'ingresso, evidenziando l'indipendenza della corrente dal valore del carico.

Figura 112: circuito generatore di corrente costante, realizzato con una rete resistiva ed un operazionale

Un primo ragionamento che posso fare è che sulla resistenza R5 non ho nessuna corrente (operazionale ideale: correnti di ingresso nulle)

Ricaviamo V0 e andiamo a sostituire nella precedente espressione:

In conclusione possiamo dire che la corrente IL dipende solo dalla tensione d'ingresso. è assolutamente indipendente dal carico Rl o RTD.

139


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 113: corrente sul carico PT100

Variando il valore del carico, la corrente che scorre su di esso è sempre la medesima, mentre se vario le resistenze degli altri resistori cosÏ come la tensione d'ingresso, allora la corrente cambia. Infatti nella simulazione se si cambiano questi parametri, la corrente cambia, ma non quando agiamo sul carico.

Esercizio 5: Obiettivo: condizionamento di un RTD a 3 fili

Figura 114: circuito equivalente

Se R6=R5 ottengo che:

140


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Infatti in uscita essendo Vin2=6 e Vin1=5, dovrei ottenere in uscita 7V, la simulazione risulta così:

Figura 115: tensione di uscita

Ipotizzando che Vw1 sia uguale a Vw3, vado a sostituire nella formula dell'equazione di uscita i rispettivi valori di Vin1 e Vin2 ottengo che Vout = Vrtd Questa ipotesi è giustificata se e solo se la corrente di offset ios, risulta trascurabile rispetto alla corrente Ik. Esercizio 6: Obiettivo: studiare il circuito

Figura 116: circuito da studiare

V+ = VV+ = Vin Applico Millman al nodo tra R1 ed R2 in questo modo trovo V- che dovrò eguagliare a Vin Alla fine trovo che Vout = Vin

141


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, la simulazione sostiene proprio questa affermazione:

Figura 117: tensione di uscita e di ingresso a confronto

Esercizio 7: Obiettivo: studiare il circuito

Figura 118: circuito da studiare

Pulsante Chiuso  Vout = -Vin (se R1 = R2) invertitore Pulsante Aperto Vout = Vin R3 = R1//R2 Quando R1 è uguale ad R2 ed il pulsante è chiuso otteniamo:

142


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 119: la tensione di uscita è invertita rispetto a quella d'ingresso

Mentre quando il pulsante è aperto otteniamo:

Figura 120: la tensione d'ingresso e quella d'uscita coincidono.

143


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio 8: Obiettivo: studiare il circuito

Figura 121: circuito da studiare

Pulsante Aperto  Vout = -Vin (se R1 = R2) invertitore Pulsante Chiuso Vout = Vin R3 = R1//R2 L'esercizio 8, per quanto riguarda i risultati, funziona al contrario rispetto al circuito dell'esercizio 7. Quando il pulsante è aperto:

Figura 122: la tensione di uscita è invertita rispetto a quella d'ingresso

144


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Mentre quando il pulsante è chiuso:

Figura 123: la tensione d'ingresso e quella d'uscita coincidono.

Esercizio 9: Obiettivo: studiare il circuito.

Figura 124: circuito

Suppongo R1=R2=R3=R4 Perciò V0= 2 (V1-V2) Il primo blocco infatti è un amplificatore invertente, mentre nel secondo blocco applico la sovrapposizione degli effetti. Il risultato che ottengo è quello sopra riportato. La simulazione infatti mi dà quel risultato.

145


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Essendo V1=10V e V2=5V, in uscita ottengo la loro differenza moltiplicata per due, cioè 10V. Simulazione:

Figura 125: V2 e V1 a confronto

Figura 126: tensione di uscita

È possibile osservare la relazione tra Vout e Vin anche attraverso la simulazione su LTSpice:

146


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio 10: Obiettivo: studiare un amplificatore per strumentazione

Figura 127: circuito "amplificatore per strumentazione"

Pongo R2=R1; R3=R5; R4=R6

L'ultimo stadio è un differenziale, fa la differenza tra Vu1 e Vu2. Siccome R3=R5 e R4=R6, questa differenza viene amplificata di R4/R3

147


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

TERMISTORI SIMBOLO ELETTRICO:

I termistori sono dispositivi simili alle termoresistenze, con l’unica differenza che essi sono composti da materiali semiconduttori e non metallici come le termoresistenze. Questi dispositivi sono caratterizzati da una forte dipendenza della tensione d’uscita in base alle variazioni di temperatura e si suddividono in:  NTC (NEGATIVE TEMPERATURE COEFFICENT);  PTC (POSITIVE TEMPERATURE COEFFICENT); questi dispositivi rientrano nella famiglia di sensori di temperatura, infatti essi sono utilizzati non proprio per misure di temperatura ma per protezioni, come si spiegherà più avanti. Come tutti i dispositivi anche i termistori hanno dei vantaggi e degli svantaggi. VANTAGGI:  GRANDE SENSIBILITA’ A PICCOLE VARIAZIONI DI TEMPERATURA;  BASSI TEMPI DI RISPOSTA;  RIPETIBILITA’ DELLA MISURA;  POSSIBILITA’ DI GRANDI VARIETA’ DI MONTAGGI, PER ESEMPIO: 1. Sensori di temperatura (NTC); 2. Protezione di circuiti elettrici tramite il monitoraggio della temperatura (PTC); 3. Limitazione della corrente massima che scorre in un circuito, i cosiddetti fusibili ripristinabili (PTC); 4. Limitazione delle corrente di spunto (NTC); 5. Generazione di ritardi; 6. Piccoli sistemi di riscaldamento; 7. Sensori di livello; SVANTAGGI:  SONO DISPOSITIVI NON LINEARI (SI PUO’ RISOLVERE IL PROBLEMA);  HANNO UN LIMITATO INTERVALLO DI TEMPERATURA D’IMPIEGO (ORDINE DI 150°C); ciò che ho appena spiegato, riguarda le caratteristiche generali dei termistori, ma ovviamente NTC e PTC si utilizzano in ambiti diversi che successivamente vedremo.

148


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

NTC: Gli NTC hanno un coefficiente di temperatura negativo, ossia riducono la loro resistenza con l’aumentare della temperatura, infatti la loro curva di risposta si presenta così:

Figura 128: grafico relativo all'andamento di un NTC

Dal grafico è molto semplice capire come la resistenza del NTC diminuisca all’aumentare della temperatura, inoltre osservando l’andamento della curva possiamo notare come essa non sia lineare. I termistori NTC sono realizzati per mezzo di miscele di ossidi metallici, con proprietà analoghe a quelle dei semiconduttori, cioè aumentare la propria conduttività all’aumentare della temperatura. La caratteristica degli NTC resistenza-tensione è di tipo esponenziale. Tramite gli NTC, noi possiamo fare:  Sensori di temperatura;  Limitazione della corrente di spunto; il secondo caso è quello più utilizzato Un NTC, è colpito da un grosso svantaggio, poiché essendo praticamente una resistenza, anch’esso deve fare i conti con la potenza che riesce a dissipare. Di seguito sono riportate alcune pagine estrapolate da un datasheet di un NTC, in particolare sono messe in risalto le formule che ne descrivono l’andamento e le caratteristiche:

149


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 129: andamento della resistenza in funzione della temperatura

Figura 130: ricavo del valore di B

Dato il fatto che il datasheet si presenta in lingua inglese, abbiamo preferito estrapolare alcune pagine di necessaria comprensione per il meglio apprendimento dell’argomento. Di seguito sono riportate le pagine piÚ significative del datasheet.

Figura 131: caratteristica reale di un NTC considerando la temperatura e la resistenza ad essa associata

150


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 132: parte relativa insieme alla figura 76 al ricavo del valore di B e come è possibile notare è presente anche un grafico dell'andamento del NTC

151


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 133: parte relativa alla tolleranza di un NTC, in particolare in funzione della temperatura

152


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 134: sono sopra indicati alcuni parametri calcolabili di un NTC, la loro conoscenza non è preponderante ai fini didattici, è però utile sapere che esistono alcuni parametri di cui tenere conto quando si progetto un circuito di acquisizione con questi termistori

153


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 135: in questa particolare è importante notare come vengano calcolate le caratteristiche di corrente e tensione.

154


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 136: parte di un datasheet relativa alle caratteristiche raggruppate in un unico schema di un NTC SMD

155


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Di seguito sono riportati 2 datasheet significativi per la comprensione degl’NTC: clicca sopra due volte per aprire il datasheet.

Figura 137: 1° datasheet riguardante la teoria degl'NTC

Figura 138: 2° datasheet riguardante un esempio di NTC in commercio

156


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

PTC: I PTC hanno un coefficiente di temperatura positivo, cioè sono termistori che aumentano la propria resistenza all’aumentare della correte, infatti la loro curva di risposta si presenta così:

Figura 139: curva caratteristica di un PTC

Come possiamo vedere la resistenza sale all’aumentare della temperatura, inoltre possiamo anche notare come l’andamento non sia assolutamente lineare, anche se in commercio esistono PTC realizzati in silicio drogato, che hanno un andamento di questo tipo:

Figura 140: andamento lineare

Molto più lineare rispetto al precedente. I PTC trovano applicazione in: 1. Protezione di circuiti elettrici tramite il monitoraggio della temperatura (PTC); 2. Limitazione della corrente massima che scorre in un circuito, i cosiddetti fusibili ripristinabili (PTC); sono molto utili in circuiti di protezione. Il secondo caso è molto più utilizzato, il funzionamento è molto banale, quando si ha un picco di corrente che non ci dovrebbe essere, il PTC attraversato dalla corrente si scalda immediatamente, facendo si che la

157


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, sua resistenza aumenti all’istante (il PTC ha dei tempi di risposta davvero impressionanti), proteggendo così il circuito, quando la corrente torna ai valori normali, anche il PTC si raffredda abbassando il proprio valore resistivo. I PTC trovano anche applicazione nei motori, infatti se situati vicino all’avvolgimento del motore, essi riescono a percepire la temperatura del motore. Come per gli NTC, anche qui utilizzeremo alcune parti estrapolate da dei datasheet sui PTC, in particolare parti relative relazioni e grafici:

Figura 141: curva relativa alla relazione fra temperatura e resistenza

158


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 142: calcolo del coefficiente a di resistenza

Figura 143: grafici relativi alla potenza (sinistra) e alla caratteristica I/V (destra) di un PTC

159


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 144: questo grafico e il circuito soprastante, sono delle chiarificazioni sulla dipendenza della resistenza in funzione della frequenza

160


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Strain Gauge (estensimetri)

Se io imprimo una forza esterna schiacciando un cilindro ottengo uno stress cioè una deformazione del cilindro. Lo stress generato dalla forza esterna P si trova utilizzando la seguente

formula: Nel caso della figura a sinistra è uno stress verticale.

Se io inizio a tirare il cilindro azzurro riportato nella figura;questo si allunga di un ΔL e si stringe di un Δd secondo una determinata legge. 

e

rappresenta il longitudinal strain (deformazione longitudinale)

 rappresenta il lateral strain (deformazione laterale) rappresentano quindi gli strain cioè le deformazioni che ha il cilindro in risposta alla forza applicata

e hanno come unità di misura o o questo perché i risultati solitamente si avvicinano intorno a Il “Poisson’s ratio” (Modulo di Poisson) è una caratteristica propria di ciascun materiale che misura in presenza di una sollecitazione monodirezionale longitudinale,il grado in cui il campione di materiale si restringe o si dilata trasversalmente questo rapporto è circa 0,3 nell’acciaio. Il modulo di Young viene determinato dal grafico sforzo-deformazione.

161

.


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

E è chiamato modulo di elasticità longitudinale. Quando si entra nel plastic region il materiale inizia a deformarsi inevitabilmente fino ad arrivare alla rottura. La legge di Hooke dice che la deformazione prodotta in un materiale è direttamente proporzionale allo sforzo applicato e alla costante di proporzionalità E.

 Esercizio di riepilogo: P=10(kN);A=1(

);E=206(GPa) trovare ε

Lo strain gauge (estensimetro) è un sensore utilizzato per rilevare piccole deformazioni dimensionali di un corpo sottoposto a sollecitazioni meccaniche o termiche (es. applicazione di carichi o variazioni di temperatura). Conoscendo a priori le caratteristiche meccanico/fisiche del materiale, misurando le deformazioni si possono facilmente ricavare i carichi a cui il materiale è sottoposto. Inoltre, utilizzando estensimetri di giusta tipologia e applicandoli in modo oculato, possono rilevare la direzione e il verso di queste deformazioni, e di conseguenza dei carichi presenti nel materiale sotto esame.

162


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Gli estensimetri sono fatti di nichel e rame e ci permettono di misurare la deformazione tramite la loro variazione di resistenza. Sono rinforzati nei punti “a” e “b” perché devono misurare solo la forza per cui sono stati montati cioè nel caso della figura riportata affianco F e non un’altra forza Fs. Gli estensimetri vengono incollati sul pezzo del quale devono misurare la deformazione attraverso speciali colle e in più il pezzo prima dell’incollaggio dell’estensimetro viene “sabbiato” viene cioè ricoperto di una sabbia molto fine in modo da ricoprire tutte le micro deformazioni del materiale per garantire così un’ incollaggio perfetto. Riadattando la seconda legge di Ohm cioè

agli estensimetri

otteniamo K è il gauge factor e varia di estensimetro in estensimetro;viene riportato nei datasheet comunque negli estensimetri commerciali si aggira intorno a 2.

Esercizio di riepilogo: ε=

; 

;k=2 trovare =0,24

Per l’acquisizione del segnale generato dall’estensimetro nella maggior parte dei casi si utilizza una configurazione a ponte di Wheatstone a uno o più estensimetri.

163


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, -

1-GAUGE SYSTEM:

R1 nel caso della figura riportata sopra è un’ estensimetro mentre le resistenze R2,R3,R4 sono tutte uguali quindi posso rinominarle in R. Studiando il circuito preso in esame possiamo ricavare la seguente equazione:

Nel caso in cui l’estensimetro R1 non sia soggetto ad una deformazione;sia cioè a riposo e quindi dello stesso valore R di tutte le altre resistenze allora il ponte è bilanciato e quindi . Quando l’estensimetro misura una deformazione,varia la propria resistenza di ΔR e quindi l’equazione precedente diventa:

Siccome il rapporto è molto minore di 1e quindi possiamo approssimare l’equazione precedente nella successiva con caratteristica lineare: 

164


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, -

2-GAUGE SYSTEM:

Equazione corrispondente: - 4-GAUGE SYSTEM:

Equazione corrispondente:

Per evitare problemi di dispersione causati dalla temperatura è sufficiente porre sullo stesso piano dell’ “estensimetro principale” (quello che misura la deformazione) un’altro estensimetro posto in una

165


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, posizione sullo stesso piano non sottoposto a sforzi;in questo modo andremo a compensare termicamente l’altro estensimetro.

Compensazione in temperatura di uno Strain-Gauge:

in questo modo al variare della temperatura di uno strain gauge, il 2° lo compensa, evitando errori connessi alla variazione di temperatura.

166


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Esercizi con ponte di Wheatstone: 1. Esercizio: verifica la condizione di equilibrio del ponte di Whatstone 2. Esercizio: Definire la relazione tra Vout (e) e spostamento (x) del seguente ponte di Wheatstone con 2 resistenze e 2 induttanze. 3. Esercizio: la variazione percentuale di resistenza dell'estensimetro.

Esercizio 1: Il ponte di Wheatstone viene utilizzato come bilanciamento nei circuiti per trasduttori. Se si verifica la condizione di equilibrio, ovvero il prodotto di R1 per R2 deve essere uguale al prodotto di R3 per R4, il ponte viene detto bilanciato e in uscita Vout si presenta una tensione uguale a 0V, altrimenti presenta tensioni differenti in uscita a seconda del cambiamento dello strain gauge. Obiettivo: dimostrazione dell'equazione ottenuta dal ponte di Wheatstone

Figura 145: ponte di wheatstone

Alla fine ottengo che:

Io ho supposto che x (data dal rapporto tra deltaR ed R) sia uguale a 2. Andando a sostituire nelle formule sopra riportate otteniamo che la tensione differenziale V0 deve essere uguale a circa 3,75V.

167


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Infatti la simulazione di tale circuito è venuta così:

Figura 146: tensione V0 del ponte di wheatstone

è da notare quindi che la differenza di tensione tra V+ e V- e quindi V0, è proprio uguale a 3,75 V. Se x è molto piccola, V0=Vcc * x /4 Esercizio 2: Definire la relazione tra Vout (e) e spostamento (x) del seguente ponte di Wheatstone con 2 resistenze e 2 induttanze: Obiettivo: studiare il circuito

Figura 147: circuito

168


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Simulazione:

Figura 148: grafico relativo alla tensione V+

Figura 149: grafico relativo alla tensione V-

Questo circuito è rappresentabile come una barra di ferrite che attraversa due bobine in serie, in particolare lo spostamento che compie (x) è compreso fra [0÷1]  L1 = L(1-x) & L2 = L(x).

169


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio 3: Obiettivo: calcolare la variazione percentuale di resistenza dell'estensimetro.

Figura 150: circuito da analizzare

Innanzitutto trovo V+:

V0 è dato dalla somma tra V+ e V-. Sommandoli alla fine ottengo:

Siccome dR<<R ottengo:

170


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

TRASDUTTORE PIEZOELETTRICO Il trasduttore, chiamato anche convertitore o emettitore, è un elemento particolare ed assai importante. Il compito del trasduttore consiste nel trasformare l'energia elettrica fornita dal generatore, in energia meccanica. Per definizione possiamo dire che il trasduttore è un solido formato da elementi con proprietà piezoelettriche, capace di tradurre tutte le variazioni del campo elettrico, in variazioni di spessore o di lunghezza. Il principio di funzionamento si basa sulla capacità di variazione dimensionale dei materiali piezoelettrici sottoposti a variazioni di tensioni elettriche. Il generatore fornisce una tensione con un forma d'onda simile ad una sinusoide. La tensione passa, secondo la frequenza del sistema, dal campo positivo al negativo. La ceramica piezoelettrica risente di questa variazione, allungandosi nel campo positivo o accorciandosi nel campo negativo. Le ceramiche del trasduttore sono elementi duri di conseguenza fragili. I principali trasduttori piezoelettrici sono:  

Cristalli di quarzo Cristalli sintetici ceramici

Si può affermare che in generale questi trasduttori servono per rilevare delle variazioni meccaniche, ovvero compressione/stiramento.

Figura 151 esempio di trasduttore piezoelettrico utilizzato per determinare variazioni meccaniche di compressione e stiramento.

171


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Trasduttori a riluttanza variabile In fisica, in particolare nel magnetismo nella materia, la riluttanza misura l'opposizione di un materiale al transito di un flusso magnetico. Essa è definita come rapporto tra la forza magnetomotrice (f.m.m.) applicata ad un circuito magnetico e il flusso di induzione da essa generato e concatenato con il circuito.

Figura 152: esempio di un traduttore a riluttanza variabile

E’ come la resistenza in un circuito elettrico, il flusso in un circuito magnetico viene limitato in base ad R. (R varia a seconda dei materiali). Harvesting: genera corrente elettrica in base al campo magnetico presente nell’ambiente, è quindi un rilevatore di flusso magnetico. + riluttanza: si concatena meno flusso; - riluttanza: si concatena più flusso.

Figura 153: si genera il flusso

Figura 154: unità mobile detta permeabilità B=µM

Se l’unità si sposta tutta in alto e1(sinusoidale) è molto grande ed e2(sinusoidale) è piccolo.

172


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

LVDT (Linear Variable Displacement Transducer) Il trasduttore di spostamento induttivo, noto anche come LVDT, è un dispositivo elettromagnetico usato per la misura di piccoli spostamenti. Esso è realizzato mediante un tubo composto da tre avvolgimenti disposti con assi paralleli e con all'interno un nucleo cilindrico ferromagnetico mobile, normalmente caratterizzato da un'alta permeabilità magnetica. L'avvolgimento centrale è detto primario e gli altri due secondari: quello primario è collegato ad un generatore di tensione AC, ai capi dei secondari invece si misura la tensione d'uscita. Quando è applicata la tensione al primario, sugli altri due viene indotta una forza elettromotrice per via delle induzioni tra gli avvolgimenti. Per tradurre il segnale di uscita dell’LVDT si usano i cosiddetti demodulatori discriminatori di fase. Questi sono dei dispositivi elettronici che permettono di estrarre il valore efficace della tensione che rappresenta lo spostamento. L'LVDT è un trasduttore molto sensibile in grado di misurare spostamenti dell'ordine delle frazioni di micron. La struttura di un LVDT non può essere di natura ferro, in quanto peserebbe troppo. Per risolvere il problema del peso vengono costruiti servendosi di ferriti, che sono un impasto tra ceramica e particelle di ferro. Utilizzando le ferriti possiamo avere grossi vantaggi rispetto all’utilizzo del ferro. Essi sono:    

Elevatissima permeabilità Maggiore leggerezza Misura meno invasiva Alta frequenza

Figura 155 Sezione di un LVDT. La tensione è applicata all'avvolgimento primario A, causando una corrente indotta nell'avvolgimento secondario B.

173


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Condizionamento LVDT: Per quanto riguarda il condizionamento di un LVDT, possiamo utilizzare un AD598:

Figura 156: schema per il condizionamento di un LVDT, sfruttando un AD598 (http://www.analog.com/static/imported-files/data_sheets/AD598.pdf)

A-B ovvero (e1-e2) è legata come espressione all’ampiezza massima |e1-e2|. L’ampiezza A e l’ampiezza B dipendono dall’accoppiamento magnetico, ma anche dal valore che il segnale ha nel primario. (A-B)/(A+B) è un numero indipendente dalle variazioni in ingresso.

Figura 157: piedinatura di un AD598 (http://www.analog.com/static/imported-files/data_sheets/AD598.pdf)

174


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

TRASDUTTORE AD INDUTTANZA VARIABILE

Figura 158: Esempio di un normale trasduttore a induttanza variabile.

Esso lavora sullo stesso principio degli LVDT. È un blocco ferromagnetico a forma di C e sezione circolare, con avvolto un solenoide con n spire collegato ad un generatore di tensione alternata. Una lamina ferromagnetica è posta a distanza variabile sotto il nucleo a C. Il campo magnetico tende a seguire la geometria del materiale ferromagnetico tra nucleo e una lamina mobile di cui si misura lo spostamento (x) tra una delle due espansioni. Se x è abbastanza piccolo il campo può chiudersi vincendo la riluttanza dell’aria. La corrente viene misurata ai capi del solenoide.

Problema: se la lamina è troppo lontana il flusso non riesce a passare. Si usa un effetto compensante con un secondo nucleo a C opposto al primo.

Vantaggi: si può regolare l’impedenza Svantaggi: lineare a basse frequenze

175


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

TRASDUTTORI OTTICI Sono dei dispositivi che cambiano le proprie caratteristiche in base alle radiazioni luminose che ricevono ad una certa lunghezza d’onda.

Fotosensori: I fotosensori appartengono alla famiglia dei dispositivi optoelettronici che comprendono una vasta gamma di componenti elettronici la cui funzionalità è legata a fenomeni ottici, in particolare, alla generazione o alla rivelazione di energia luminosa. I "fotosensori" che includono fotodiodi, fototransistor, fotodarlinghton, fototriac si basano tutti sul principio per cui le radiazioni, comprese in un certo intervallo di frequenza, incidenti su una giunzione polarizzata inversamente producono una fotocorrente. Invece i "fotoaccoppiatori" sono dei circuiti in forma integrata che contengono un diodo IRED e un fotosensore, efficacemente accoppiati e separati da un dielettrico, capaci di far passare, per esempio, un segnale fra due circuiti che non hanno massa comune.

Figura 159: Fotosensore a riflessione ad alta risoluzione.

I fotosensori subiscono differenti processi di drogaggio. Questi dispositivi hanno inoltre una resistenza che dipende dalla radiazione luminosa, ovvero la luce standard. In caso di oscurità questa resistenza raggiunge un valore ohmico molto elevato e il grafico che mette in relazione la resistenza con la luce è il seguente:

Figura 160: Diagramma logaritmico relazione tra R e Lux.

176


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Fototransistor: è un dispositivo a semiconduttore con una particolarità, ovvero quando arriva un’onda di una certa lunghezza d’onda, sulla base del transistor si viene a formare una piccola corrente che fa condurre il transistor. Le applicazioni dei fototransistor sono notevoli soprattutto laddove si vuole separare la circuiteria di controllo da quella di potenza. Un classico esempio è il controllo dei motori: In genere si usano relè a stato solido, i quali impiegano il fototransistor come optoisolatore. Un utilizzo a livello di bricolage amatoriale, collegato all'ingresso di un oscilloscopio, permette di visualizzare sullo schermo il segnale dei telecomandi a raggi infrarossi.

Figura 161: Esempio di foto-transistor.

Fotodiodo: Un fotodiodo è un particolare tipo di diodo che funziona come sensore ottico in grado di riconoscere una determinata lunghezza d'onda e di trasformare questo evento in un segnale elettrico di corrente. Un fotodiodo è sostanzialmente un diodo particolare caratterizzato da una giunzione p-n drogata asimmetricamente. Il materiale con cui è prodotto il fotodiodo è di importanza critica per il suo funzionamento. Da essi dipende infatti l'energia minima che il fotone dovrà possedere per poter generare la fotocorrente. I materiali più comunemente utilizzati per produrre fotodiodi sono:  Silicio con lunghezza d’onda 190-1100 nm  Germanio con lunghezza d’onda 800-1700 nm  Arseniuro di indio gallio con lunghezza d’onda 800-2600 nm  Solfuro di piombo con lunghezza d’onda <1000-3500 nm

Figura 162: grandezza di un opto-componente Figura 7 Tipologie di fotodiodi.

177


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Foto-accoppiatori o optoisolatori: è un componente elettronico che permette di trasferire un segnale fra due circuiti mantenendo l'isolamento galvanico fra gli stessi. Viene realizzato normalmente accoppiando otticamente un led con un elemento fotosensibile. L'elemento fotosensibile può essere di vario tipo. Nella maggior parte dei casi viene utilizzato unfototransistor, ma esistono fotoaccoppiatori che utilizzano fotodiodi, fototriac e raramente fotoresistenze. In alcuni casi può essere integrato anche un circuito per elaborare il segnale, per esempio un amplificatore operazionale o un trigger di Schmitt. Le variazioni di luminosità legate al segnale in ingresso vengono rilevate dall'elemento fotosensibile ottenendo il trasferimento dell'informazione da un circuito all'altro senza che vi sia continuità elettrica. Diciamo che i fotoaccoppiatori sono un insieme tra fotodiodo e fototransistor messi nello stesso case. Gli optoisolatori vengono prodotti in molti tipi di contenitori che possono contenerne uno, due o quattro.

Figura 163: Un opto-isolatore in contenitore dual-in-line a 8 pin, per eventuali approfondimenti: (http://www.adrirobot.it/datasheet/optoelettronica/optoelettronica.htm)

Figura 164: Simbolo di un foto-accoppiatore.

178


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Esercizi: 1. Esercizio: studio di un foto-accoppiatore 2. Esercizio: calcolare R3 per far si che a 1000 lux il comparatore scatti e modificare inserendo un'isteresi tale che i margini siano SOGLIA SUPERIORE=1000LUX e SOGLIA INFERIORE=800LUX 3. Esercizio: dimensionare il circuito in modo tale che il Bjt saturi con 12 mA

Esercizio 1: Obiettivo: foto-accoppiatore

Figura 165: circuito

Figura 166: tensione sul diodo

179


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 167: tensione sul collettore

Esercizio 2: Obiettivo: calcolare R3 per far si che a 1000 lux il comparatore scatti e modificare inserendo un'isteresi tale che i margini siano SOGLIA SUPERIORE=1000LUX e SOGLIA INFERIORE=800LUX

Figura 168: Circuito

A 1000 LUX la fotoresistenza R vale 331,39Ω, dalla relazione:

Con K= 135K ed α=0,87

180


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

La R a 1000 LUX vale 331,39Ω Siccome il comparatore scatta quando V+ = V- eguaglio le due espressioni. Ricavo R3 che vale 1247Ω. Per quanto riguarda l'isteresi il circuito diventa così:

Figura 169: Circuito comparatore

La tensione su R3 quando R vale 331Ω a 1000 LUX:

Fisso R1 a 10K dopodichè sapendo che la larghezza della finestra d'isteresi è data da Vrh-Vrl=0,51V, posso trovare anche R2 sapendo che:

R2 quindi viene di 578K circa. Alla fine vado a sostituire i valori rispettivi nell'espressione di origine e trovo che la tensione di riferimento Vref= 11,79V

181


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Qualche simulazione con la rete d'isteresi:

Figura 170: tensione foto-resistenza

Figura 171: tensione di riferimento

182


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 172: tensione di uscita

Non è stato possibile ottenere un lavoro preciso, in quanto la larghezza della finestra d'isteresi è molto piccola. Questo richiede il dover lavorare con valori di tensione molto piccoli e quindi con grande precisione. il che si è dimostrato notevolmente difficile, soprattutto nella simulazione con LT SPICE. Esercizio 3: Obiettivo: dimensionare il circuito in modo tale che il Bjt saturi con 12 mA CTR = 0.45 (45%), Vcc=5V, Vin=10V, Vled=1.3V, Vce=0,2V

Figura 173: Circuito

Siccome CTR=Ic/Id, posso trovare subito

Id invece deve essere uguale a Ic/CTR = 26,7mA, dopodichè posso trovare la resistenza del led:

183


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

CTR (Current Transfer Ratio) E' il rapporto tra la corrente di uscita (fotodiodo oppure fototransistor a seconda del tipo di optoisolatore) e la corrente di ingresso (nell'emettitore, cioè nel led). In genere il CTR è funzione della corrente di ingresso.

Figura 10 Esercizio con fotoaccoppiatore per capire meglio il CTR.

Guardando la figura riportata sopra possiamo scrivere la seguente formula:

CTR = Ic/If Solitamente il CTR viene espresso in percentuale, quindi:

CTR% = (Ic/If)*100

184


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Sensori ad effetto HALL In fisica, in particolare in elettromagnetismo, l'effetto Hall è la formazione di una differenza di potenziale, detto potenziale di Hall, sulle facce opposte di un conduttore elettrico dovuta a un campo magnetico perpendicolare alla corrente elettrica che scorre in esso. L'effetto prende il nome dal fisico Edwin Hall che per primo lo scoprì nel 1879.

Figura 174: effetto hall (immagine prelevata da WIkipedia http://it.wikipedia.org/wiki/File:Hall_effect.png )

I sensori ad effetto Hall sono sensori che sfruttano il campo magnetico, dove B = induzione magnetica. Sottoponendo la barretta ad una forza ortogonale, per la regola della mano destra(http://it.wikipedia.org/wiki/Regola_della_mano_destra), si crea una forza. Si formano delle cariche negative che portano VH |B| (VH proporzionale a B). Come possiamo sfruttare questa proprietà? Nota che sia la corrente elettrica i, posso misurare B utilizzando V H. E’ quindi possibile misurare un campo magnetico con una corrente e viceversa, ottenendo in uscita una certa differenza di potenziale.

Figura 175: utilizzo dell'effetto hall in un sensore

185


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Regola della mano destra: In geometria e in fisica, la regola della mano destra è una convenzione per determinare una terna di vettori con orientazione positiva. Ci sono tre varianti della regola della mano destra, strettamente legate.

Figura 176: rappresentazione della regola (http://it.wikipedia.org/wiki/Regola_della_mano_destra)

Per prima cosa, la mano è tenuta piatta e posizionata in modo che le dita siano allineate con il versore a. Poi, la mano viene ruotata verso l'avambraccio in modo che le dita indichino il versore b. Il pollice indica il versore c. Esiste anche una tecnica alternativa. Il dito indice della mano destra è puntato direttamente nella direzione del versore a; il dito medio è piegato internamente in modo che sia allineato con il versore b; il pollice indicherà il versore c. In alternativa, si consideri una persona che sia posizionata nell'origine che guardi seguendo la direzione del versore a e la direzione del suo sguardo sia coincidente con il versore b. In questo caso il braccio destro indicherà la direzione del versore c. Nell'elettromagnetismo (fisica), viene usata anche una terza tecnica per determinare il verso di una forza dovuta ad una carica positiva che si muove in un campo magnetico (vedi forza di Lorentz). Usando la mano destra, le dita rappresentano il verso del campo magnetico, il pollice è la direzione della corrente elettrica, e la forza risultante è nella direzione del palmo. Applicazioni della regola della mano destra Probabilmente l'applicazione più importante di questa regola è rappresentata dal sistema di riferimento cartesiano, dove la prima forma (della regola) è usata per posizionare l'asse z dopo che sono stati fissati gli assi x e y, scegliendo l'angolo di 90 gradi in senso orario o antiorario. La prima forma della regola è anche usata per determinare la direzione del vettore risultante dal prodotto vettoriale di due vettori. Tale operazione infatti è largamente usata in fisica. Qui sotto è presente una lista di quantità fisiche le cui direzioni sono ricavate utilizzando questa regola. (Alcune di queste sono legate al prodotto vettoriale solo indirettamente, e usano la seconda forma.)  La velocità angolare di un oggetto rotante e la velocità di rotazione di un punto qualsiasi di quell'oggetto  Il Momento di una forza, la forza che lo causa, e la posizione del punto di applicazione della forza  Un campo magnetico, la posizione del punto dove esso è determinato, e la corrente elettrica (o carica nel flusso elettrico) che lo causa  Un campo magnetico in una spirale di filo e la corrente elettrica nel filo  La forza di un campo magnetico su un oggetto, il campo magnetico in se, e la velocità dell'oggetto  La corrente indotta dal movimento in un campo magnetico (conosciuta come regola della mano destra di Fleming)

186


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Sensori di corrente: questi sensori misurano la corrente che fluisce in un circuito, un esempio è descritto sotto:

Figura 177: esempio di un sensore LEM

Essendo H I, ne segue che misurando la tensione di Hall, riesco ad avere informazioni sulla corrente I  VH I. Per non far saturare il toroide devo dimensionare opportunamente la corrente, la curva che si ottiene è la seguente:

Figura 178: isteresi provocata dal campo magnetico

Es:

Rsens = 10mΩ; VM = Rsens*I=1V P=(VM)2/Rsens = 100W  NO!

187


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

LEM : I sensori ad effetto Hall più diffuse sono quelli della LEM, un’azienda francese che produce questi particolari sensori. Di seguito ne sono proposte varie immagini.

Figura 179: sensore LEM, in questo sensore gli avvolgimenti devono essere effettuati dall'operatore o addirittura si può porre, per quelle misure che lo necessitano, una barretta di rame realizzata su misura. (http://www.lem.com/hq/en/content/view/20/90/)

Figura 180: classico sensore ad effetto Hall prodotto dalla LEM, da notare il foro per gli avvolgimenti. (http://www.datasheetcatalog.com/lem/1/)

Di seguito sono riportati alcuni link utili per ricercare prezzi e/o datasheet e cratteristiche dei prodotti: http://www.alibaba.com/showroom/lem-hall-effect-current-sensor.html http://it.farnell.com/lem/lv-25-p/voltage-transducer-pcb/dp/1617416

clicca due volte sull’oggetto per aprire il datasheet:

SENSORE LEM CORRENTE.pdf

188


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Trasduttori di velocità La velocità di rotazione di un albero può essere rilevata direttamente, oppure indirettamente dal rilevamento della posizione. Per il rilevamento diretto, i trasduttori più usati sono: • Dinamo tachimetriche • Alternatori tachimetrici

Dinamo tachimetriche: Una macchina a corrente continua, rotante ad una velocità angolare ω, produce una f.e.m. E proporzionale alla velocità stessa:

Figura 181: Rappresentazione semplificata di una dinamo tachimetrica

Vengono detti dinamo tachimetriche generatori in corrente continua, eccitati a magnete permanente, ottimizzati per fornire un segnale di tensione proporzionale alla velocità. E’ molto usato un fattore di traduzione pari a 20 V per 1000 giri/minuto. Si realizza la dinamo tachimetrica con le minime dimensioni possibili, sia per ridurre l’ingombro che per diminuire il momento d’inerzia del rotore. Per ridurre la caduta di tensione sulla resistenza di armatura e sulle spazzole si deve limitare la corrente prelevata ai morsetti (ad es. < 20 mA). L’ondulazione di tensione che risulta dal raddrizzamento delle tensioni degli avvolgimenti di armatura, viene limitata mediante una opportuna sagomatura dell’induzione al traferro ed aumentando il numero delle lamelle del collettore.

Figura 182: Ondulazione di tensione in una dinamo tachimetrica

189


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Alternatori tachimetrici: Gli alternatori tachimetrici, detti anche “tacho”, sono generatori brushless di tipo trapezoidale. Nel caso dei generatori trifase, la forma d’onda delle f.e.m. ha andamento trapezoidale, con parte pianeggiante lunga 120o e di ampiezza proporzionale alla velocità angolare w.

Figura 183: Alternatore tachimetrico (http://www.elsacommerciale.com/Dinamo.htm)

Figura 184: Forme d’onde di un alternatore tachimetrico

Per ottenere una tensione continua proporzionale alla velocità, il raddrizzamento viene fatto con un circuito elettronico, anziché col collettore. Data le forma d’onda trapezoidale, la tensione continua che si ottiene è teoricamente priva di ondulazione. Le esigenze di alta precisione e di ridotti ingombro e momento d’inerzia sono le stesse della dinamo tachimetrica. I vantaggi del generatore brushless stanno nel minore momento d’inerzia del rotore, che porta i magneti anziché gli avvolgimenti di armatura, e nell’assenza del collettore che è affetto da scintillio (sia pure ridotto) e da sensibilità all’usura ed agli agenti contaminanti. In certe realizzazioni, al generatore tachimetrico sono uniti sensori di Hall che danno una indicazione di posizione discretizzata.

190


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Trasduttori di velocità e posizione: I trasduttori di posizione angolare più usati sono gli “Encoder” tachimetrici, incrementali e assoluti Altri tipi di trasduttori di posizione, quali i synchro, le ruote foniche, ecc. sono di uso meno comune negli azionamenti. Normalmente, dal segnale di posizione si può ricavare anche un segnale di velocità

Figura 185 encoder

Encoder tachimetrico: L’encoder tachimetrico è costituito essenzialmente da un disco forato che ruota con il corpo di cui si vuole controllare la velocità, e da un generatore di segnale formato da un LED e un fotosensore allineati. La rotazione del disco del disco fa si che la luce emessa dal LED raggiunga il fotosensore quando uno dei fori si posiziona tra il LED e il fotosensore stessi. Il segnale d’uscita generato dal fotosensore sarà pertanto un treno d’impulsi, di frequenza proporzionale alla velocità di rotazione. Se il movimento avviene sempre nello stesso verso, un contatore digitale che conti gli impulsi è in grado di fornire l’entita dello spostamento rispetto ad una posizione di riferimento. Naturalmente una rotazione in verso opposto, producendo impulsi uguali ai precedenti, causerebbe una lettura di posizione del tutto errata; per questo motivo il tachimetro digitale può essere usato solo per misure di velocità oppure per misure di spostamento angolare in situazioni in cui il movimento non s’inverte.

Encoder incrementali: Gli encoder incrementali forniscono segnali ad onda rettangolare con un numero fisso N di impulsi per giro. Gli encoder incrementali con maggiore numero di impulsi e più precisi sono di tipo ottico. Essi sono formati da un disco trasparente con righe radiali opache esplorato da un raggio di luce rilevato da un sensore ottico. Si usano normalmente due rilevatori sfasati per determinare il verso di rotazione. Una seconda pista concentrica alla prima consente di determinare l’inizio di ogni giro. In realtà l’encoder incrementale dispone di TRE uscite, due delle quali forniscono in uscita altrettante onde quadre IN QUADRATURA fra loro al fine di poter ricavare il VERSO DI ROTAZIONE (cosa impossibile se l’uscita fosse unica); la terza fornisce un singolo “impulso rettangolare” in corrispondenza della posizione angolare di zero (riferimento).

191


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 186 Encoder incrementale

Figura 187 Uscite di un encoder incrementale

Sono usati anche encoder incrementali di tipo magnetico con rotori magnetizzati a molti poli, con rilevazione mediante sensori di Hall. Un terzo tipo di encoder incrementali, detti ruote foniche, è costituito da ruote dentate di materiale ferromagnetico i cui denti passano in prossimità di un sensore magnetizzato; su questo è posto un avvolgimento che rileva le variazioni di flusso. Ciascun tipo di encoder incrementale è seguito da un adeguato circuito elettronico che amplifica ed elabora i segnali dei rilevatori, fornendo gli impulsi o direttamente la posizione angolare, oltre al verso di rotazione ed alla velocità. Una limitazione comune a tutti gli encoder incrementali è che la posizione è ricavata per conteggio degli impulsi. Quindi la posizione assoluta è nota soltanto dopo il completamento del primo giro, quando è stato rilevato il passaggio del riferimento iniziale.

192


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 188 encoder incrementale

Figura 189 circuito di conteggio di un encoder incrementale

Esso comprende, infatti, almeno due generatori di segnali (sensori A e B), disposti in modo che i due segnali prodotti risultino sfasati di circa ¼ di periodo; si desume il verso di rotazione osservando quale dei due segnali è in anticipo. Il conteggio degli impulsi può essere effettuato ad esempio mediante il circuito di figura. Il contatore riceve in ingresso il segnale Va ed esegue il conteggio avanti o indietro secondo lo stato di uscita, rispettivamente 1 o 0 del flip flop FF. quest’ultimo commuta sul fronte di salita del clock costituito dal segnale Vb; la sua uscita commuterà (o rimarrà) ad 1 se, in corrispondenza di ciascun fronte di salita di Vb, Va è alto; questa situazione corrisponde evidentemente al verso di rotazione orario. Viceversa in corrispondenza del fronte attivo di Vb il segnale Va è basso, il flip flop si porterà a 0, segnalando il verso di rotazione antiorario. Un inconveniente intrinseco all’uso di tutti questi encoder è rappresentato dal fatto che la logica di conteggio è talvolta sensibile ai disturbi, che possono causare errori irrimediabili. Inoltre la caduta dell’alimentazione, anche solo momentanea, fa perdere ogni informazione sulla posizione raggiunta.

Figura 190: forme d'onda

193


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Encoder assoluti: Gli encoder assoluti, di solito di tipo ottico, sono dotati più piste che danno direttamente la posizione sotto forma parallela con codice binario naturale o con altro codice (ad es. Gray)

Figura 191 Encoder assoluto

Questi encoder, molto più complessi e costosi di quelli incrementali, non hanno quindi bisogno di un completamento iniziale del giro per dare la posizione. Dato il costo e la complessità, che li rende meno robusti, gli encoder assoluti sono usati più raramente degli altri sensori di posizione

Alcuni degli errori costruttivi che si possono incontrare in un encoder sono ad esempio: ·

I sensori (TIL 81, TIL 31) non sono perfettamente allineati

Figura 192: disallineamento

· Dimensioni sproporzionate del sensore rispetto al settore (ciò è più significativo nelle zone vicine al centro del disco)

Figura 193: sproporzionamento

·

Asse leggermente inclinato (quando il disco si sposta il sensore va ad interporsi tra 2 settori)

Figura 194 asse inclinato

194


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Sostanzialmente il codice Gray viene sostituito al codice binario in quanto anche se si presenta uno dei tre errori suddetti, e quindi c’è una variazione della lettura da parte dei sensori, l’errore stesso non comprometterebbe in modo molto rilevante la misurazione dello spostamento. Infatti caratteristica di questo codice è che tra un valore e il suo successivo (o precedente) c’è una variazione di un solo stato logico

Figura 195: encoder secondo codifica gray

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

B 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0

195

C 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0

D 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ENCODER INCREMENTALE IN QUARTUS:

Figura 196: schema encoder (conteggio)

Come è evidente si utilizzano 4 contatori in cascata per quattro:

Figura 197: contatore per quattro

Per collegarli in cascata si utilizzano le uscite COUT di ciascun contatore. Tali uscite vanno collegate a CIN dei contatori in cascata seguenti. Il clear invece è stato applicato a tutti i contatori di modo comune. Tramite

196


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, un flip flop di tipo d (a cui si porta in ingresso il secondo segnale B), l'uscita di tale contatore viene portata comunemente a tutti gli ingressi dei contatori per quattro denominato DNUP. Alla fine abbiamo realizzato un contatore per 16.

Figura 198: Uscite da Q_00 a Q_16

Figura 199: ingresso B

Figura 200: ingresso A e clear

197


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Sensori di umidità I sensori di umidità sono sensori sensibili alla quantità di acqua nell’ambiente, rilevano l’umidità relativa definita come il rapporto tra l’umidità assoluta (quantità di vapore acqueo contenuta in un metro cubo d’aria) e l’umidità di saturazione (quantità di vapore acqueo massimo contenuto in un metro cubo di aria prima della condensa). U%= (Uass/ Usat)* 100 Esistono diversi tipi di sensori di umidità che basano la loro misura sulla variazione di diverse grandezze:  Sensori a variazione di resistenza: sono costituiti da materiali igroscopici, ad esempio il cloruro di litio, nei quali piccole variazioni di umidità relativa provocano grandi variazioni di resistenza. I tempi di risposta sono brevi.  Sensori a variazione di capacità: sono costituiti da due armature metalliche separate da un materiale dielettrico igroscopico. Le variazioni di capacità dipendono dalle variazioni della costante dielettrica del materiale igroscopico sensibile alle variazioni di umidità relativa. Le variazioni di capacità che si ottengono sono piccole (≈± 20%) ed i tempi di risposta lunghi.  Sensori a variazione di temperaturà: basano il loro principio di funzionamento sulla differenza di temperatura tra un corpo secco ed un uguale corpo umido. Nota: L'igroscopia (o igroscopicità) è la capacità di una sostanza di assorbire le molecole d'acqua presenti nell'ambiente circostante. Nel caso di un trasduttore di umidità i materiali igroscopici sono utili al fine di rilevare l’umidità relativa nell’aria.

Trasduttore di umidità capacitivo: Il trasduttore di umidità della Philips Elcoma è stato progettato per le misure di umidità relativa in sistemi in cui non è richiesta una elevata precisione. Il sensore è realizzato con un materiale dielettrico, insensibile alle sostanze inquinanti sempre presenti nell’aria. Le facce del dielettrico, la cui costante dielettrica relativa εr dipende dal valore dell’umidità relativa, sono ricoperte da un sottile strato di oro e protette da un involucro plastico forato. Sulle armature del condensatore così formato sono saldati i due reofori. La caratteristica capacità / umidità relativa non è fornita dal costruttore ma puo essere ricavata dalla seguente tabella che evidenza un andamento non del tutto lineare di questo tipo di trasduttore. Tabella dei valori che assume il trasduttore di umidià della Philips Elcoma (2322 691 900001):

198


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 201: struttura interna e rappresentazione del sensore Philips Elcoma (http://www2.informatik.huberlin.de/~hochmuth/bvp/humidity.pdf)

Umidità relativa [%] 0 10 20 30 40 50 60 70 80 90 100

Cs [pF] 110,0 112,8 115,5 118,0 120,8 124,2 127,8 132,0 137,0 143,8 155,0

La capacità del sensore è: Cs= C0 + ΔC dove C0 è una capacità fissa riferita all’aria secca (U%=0) e ΔC è la variazione di capacità dovuta alla variazione di umidità relativa. Caratteristiche principali del trasduttore:  Tensione di alimentazione max 15V  Range dal 10% al 90% (umidità relativa)  Campo di temperatura da 0° C a 60° C  Capacità nominale Cs: 122 pF ±15% (U%= 43%, T= 25° C, f= 100 Hz)  Tempo di risposta max< 5 minuti (risposta lenta)  Banda di frequenza da 1 Hz a 1MHz  Isteresi 3%  Linearità contenuta all’1% nel range di funzionamento Questo sensore di umidità relativa può essere inserito in un multivibratore astabile per generare un’onda quadra la cui frequenz, funzione dell’umidità relativa è: f= 1/( 0,7* (Ra+ 2Rb)* Cs Al variare dell’umidità relativa la capacità del sensore cambia influendo sulla frequenza di uscita del multivibratore astabile. In base alla frequenza di uscita seguendo la tabella riportata sotto si risale all’umidità relativa. Il range di umidità misurabile va da 10% a 90%.

Umidità relativa [%] 199

Cs [pF]

Frequenza [KHz]


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, 0 10 20 30 40 50 60 70 80 90 100

110,0 112,8 115,5 118,0 120,8 124,2 127,8 132,0 137,0 143,8 155,0

5,24 5,13 5,02 4,92 4,77 4,63 4,49 4,32 4,12 -

Figura 202: Configurazione trasduttore umidità con multivibratore astabile con NE555

Posto Ra= 10 KΩ ed Rb= 1,2 MΩ in modo da avere un duty cycle circa al 50% dalla formula della frequenza sopra riportata si ottengono i valori di frequenza della tabella sopra. Un circuito di condizionamento può essere composto da un oscillatore per la conversione umidità relativa/ frequenza, da un convertitore frequenza/ tensione e da un amplificatore per l’offset ed il fattore di scala. Schema a blocchi di un possibile circuito di condizionamento per la misura dell’umidità relativa:

Circuito di condizionamento per la misura dell’umidità relativa dal 10% al 90%. La tensione di uscita Vo sarà compresa tra 0V e 5V (0V per il 10% di umidità relativa, 5V per il 90% di umidità relativa). Il multivibratore astabile NE555 genera in uscita un’onda quadra con frequenza variabile dipendente dall’umidità relativa. L’integrato LM331 opera la conversione frequenza / tensione continua secondo la relazione: Vout= fs* 2,09* (RL/ RP)* RT* CT

200


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 203 Schema elettrico

Tarando opportunamente la RP, la tensione d’uscita Vout aumenta di 1 V per ogni KHz della frequenza del segnale d’ingresso. L’amplificatore operazionale fornisce al circuito la tensione di riferimento Vref per l’offset. L’offset è dovuto al fatto che quando l’umidità relativa rilevata è pari al valore minimo dell’intervallo di misurazione (10% in questo caso), la frequenza in uscita dal multivibratore astabile non è 0 per cui è necessario inserire una configurazione differenziale (INA111 differenziale per strumentazione) che al valore di umidità relativa più basso dell’intervallo azzera la tensione. La tensione di riferimento è pari a 5,24 V ovvero il valore che assume la tensione in uscita dal LM331 al 10% di umidità relativa. Si ottengono così in uscita 0 V. La tensione di riferimento è generata da uno zener di precisione LM336 a 2,5 V e dall’amplificatore operazionale con guadagno pari a: A= 1+ (R3/ R2)= Vref/ 2,5= 5,54/ 2,5= 2,096 R3/ R2= 1,096 Fissando R2= 10 KΩ, R3= 1,096* R2= 10.96 KΩ (Valori commerciali: 10 KΩ+ 2,2 KΩ) L’amplificatore per strumentazione INA111 realizza sia l’offset che il fattore di scala. Per dimensionare R G, occorre calcolare il guadagno G dell’amplificatore per l’umidità relativa U%= 90%: G= Vo(fattore di scala)/ (Vout(U%= 90%) – Vout(U%= 10%))= 5/ (5,24 – 4,12) = 5/ 1,12= 4.46 La resistenza RG è: RG = 50* 103 / (G – 1) = 50* 103 / 3,46= 14,45 KΩ (Valore commerciale: 12 KΩ + 4,7 KΩ) La rete composta da R4 e C (10nF) è un derivatore. L’inserimento di questo derivatore tra l’NE555 è l’LM331 è necessario perché il 331 non accetta l’accoppiamento in continua. La rete funziona in questo modo: quando l’uscita del NE555 è 0 V il condensatore si carica con segno meno dalla parte del timer 555 e segno positivo dalla parte della resistenza R4; quando invece l’uscita del timer 555 commuta a 5 V il condensatore si scarica e la resistenza rilascia un impulso che potrebbe essere anche più grande della tensione di

201


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, alimentazione +Vcc. Questo implulso potrebbe rompere gli integrati. È quindi buona norma inserire un diodo in parallelo ad R4 con il catodo rivolto verso +Vcc come protezione degli ingressi degli integrati. Tuttavia la parte comprendente l’LM331 può essere sostituita da un microcontrollore. Un microcontrollore come ad esempio il PIC16F877 dispone di ingressi CCP ovvero capture compare che rilevano il fronte, di salita o discesa a seconda delle impostazioni software scelte, di un’onda quadra in ingresso. Grazie a questi ingressi di capture compare il microcontrollore rileva la frequenza alla quale oscilla il multivibratore astabile con NE555 (configurazione precedente) eliminando così l’LM331. Il microcontrollore PIC16F877, una volta rilevata la frequenza, è in grado di associare in uscita un valore di tensione in quanto al suo interno è presente un DAC ovvero un convertitore analogico digitale. Tramite software si può associare il valore della frequenza rilevata in ingresso ad un valore di tensione per cui ad esempio si assocerà il valore 5,24 KHz a 0 V e quindi al 10% di umidità relativa e ad esempio 5 V corrispondono 4,12 KHz che coincide con il 90% di umidità relativa. Le associazioni frequenza / tensione, le impostazioni degli ingressi di capture compare e dell’uscita analogica (0-5 V) sono possibili via software ad esempio programmando il microcontrollore in linguaggio C. L’inserimento quindi di un microcontrollore opportunamente configurato e programmato consente di poter sostituire il blocco della tensione di riferimento e quindi l’amplificatore operazionale e LM336, l’amplificatore per strumentazione INA111 e l’LM331 riducendo i costi e le dimensioni della scheda.

Figura 204: Schema a blocchi del circuito di condizionamento con microcontrollore.

Trasduttore di umidità resistivo: Il trasduttore di umidità relativa C5-M3 prodotto dalla Shinyei Kaisha è realizzato con un materiale sensibile all’umidità relativa disposto su un substrato ed incapsulato in un contenitore plastico. Il sensore ha ridotte dimensioni, una bassa isteresi ed una stabilità a lungo termine, può essere utilizzato nei sistemi di controllo dell’umidità, negli idrometri, nelle macchine copiatrici a colori ecc. La caratteristica resistenza / umidità relativa è esponenziale decrescente. Il costruttore, in realtà, fornisce altri grafici che evidenziano la dipendenza della caratteristica dalla frequenza del segnale di eccitazione e dalla temperatura. Inoltre raccomanda di evitare:  alimentazioni con tensioni in DC  condizioni di condensazioni  esposizioni su superfici bagnabili  esposizioni in presenza di gas organici ed inorganici Caratteristiche elettriche del sensore: Caratteristiche elettriche Tensione di alimentazione max in AC Potenza max Tensione di alimentazione Tensione di alimentazione tipica

Valori 5V 5 mW 0,5÷3 V 1V

202


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Sensore di pressione KP100 Il sensore KP100 si utilizza per rilevare la pressione e riportarla, operando opportuni condizionamenti, con una grandezza elettrica.

Le utinità di misura della pressione e conseguentemente quelle utilizzate dai trasduttori, possono essere molteplici di seguito ne sono elencate alcune:

   

mmHg = 133 Pa bar = 105 Pa psi = 6,89*103 atm = 101325 Pa

nello specifico, ci occupiamo del trasduttore di pressione KP100. Fisicamente formato da un integrato a 8 pin, con al centro un foro al quale viene fissato un tubo, che imprime una certa pressione sulla superficie interna del KP100. Le caratteristiche più importanti del KP100 riguardano l’interfacciamento con altri dispositivi:    

ha un’uscita digitale; si interfaccia con un SPI; vengono memorizzati degli offset per compensare l’assenza di moto al suo interno c’è uno strain gauge inserito ne vuoto, che misura la variazione e identifica quanta pressione viene esercitata.

Orlandi Marco 5°A Anno scolastico 2008-09 Elettronica e telecomunicazioni Prof. Ferraro G A [°C-1]

Tmin [°C] Tmax [°C]

-50

100

0,003908

G_U1 T [°C]

V RTD [V]

V2 [V]

V3 [V]

-50 -40 -30 -20 -10 0 10 20 30 40

0,080459 0,084367 0,088275 0,092183 0,096092 0,1 0,103908 0,107817 0,111725 0,115633

2,892463 3,032966 3,173468 3,313971 3,454473 3,594976 3,735478 3,875981 4,016483 4,156985

0 0,333333 0,666667 1 1,333333 1,666667 2 2,333333 2,666667 3

35,94976 2,372438

Dopo aver inserito i valori di temperatura minima e da misurare e i valori di tensione corrispondenti in u il programma calcola la tensione di riferimento VREF delle resistenze nel circuito di condizionamento sot

Figura 205: clicca due volte per visualizzare l'intero documento direttamente sul foglio di word

203

G_U2


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 206: estrapolato del datasheet riferito al KP100 (http://www.datasheetarchive.com/KP100*-datasheet.html)

204


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 207: funzione caratteristica di un KP100 in funzione della pressione (http://www.datasheetarchive.com/KP100*-datasheet.html)

Come è possibile osservare dal grafico sopra stante, la caratteristica è presso che lineare.

Figura 208: schema interno di un KP100(http://www.datasheetarchive.com/KP100*-datasheet.html)

205


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Pt100 ELEMENTS, THIN FILM (100 Ohm) THERMOMETER INSERTS        

Pt100 elements to IEC 751 Class A & B in ceramic sheaths Sheath 5.2mm diameter x 35mm long For use from –50oC to +250oC Thin film construction Extension leads 7/0.2mm singles, copper, PTFE insulated Insulated leads rated –50oC to +250oC 2 or 4 wire configurations Vibration resistant

Specifications of elements Sensor type: Pt100 (100 Ohms @ 0oC) Construction: Thin film sensor in ceramic sheath Temperature range: –50oC to +250oC Ice point resistance: 100Ω Fundamental interval (0oC to 100oC) 38.5Ω (nominal) Self heating <005oC/mW Stability ±0.05% Sheath dimensions & tolerance class 5.2mm O/D x 35mm, Class B Dimensions & codes 50mm x 2 wire 7/0.2mm PTFE 450mm x 4 wire 7/0.2mm PTFE

Figura 209: esempio di KP100

Farnell code 725-5731 725-5743 LAB code 01-412-RT/D 01-412-RT/B Data Ref: FAR 60

206


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Applicazioni del KP100: 1°applicazione: dobbiamo realizzare un altimetro utilizzando a tal proposito un PIC16F877 unitamente ad un sensore KP100. La scheda deve avere un display LCD a 16 caratteri per 3 righe con un pulsante P1 che consenta di selezionare le pressioni visualizzate (Pa, atm, bar, mmHg). Un pulsante P2 per scegliere la rappresentazione dell’altezza (m,ft). Il sensore di pressione fornisce un valore in Pascal (vedi datasheet) e le tabelle di conversione di conversione vengono implementate interamente nel µC ( tabelle di look-up da usare con interpolazione lineare).

Figura 210: schema a blocchi del circuito da realizzare

207


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

2° applicazione: (Orlandi Marco) Testo dell’esercizio Realizzare i circuiti di condizionamento per 8 RTD di modo da misurare: 50°C÷200°C (2 sensori RTD) 200°C÷400°C (1 sensore RTD) 3. 150°C÷300°C (5 sensori RTD) Schema elettrico

1. Range di temperatura fra 50°C e 200°C

R(T) = R0 * (1+αT)

α = 3,675 *10-3 °C-1

R0 = 100Ω

Applicando la formula troviamo il valore della resistenza dell’RTD alle temperature che delimitano il range: R(50°C) = 100 * (1 + 3,675 * 10-3 * 50) = 118,375 Ω R(200°C) = 100 * (1 + 3,675 * 10-3 * 200) = 173,5 Ω Fissando la corrente a 1 mA andiamo a calcolare i valori di tensione ai capi dell’RTD alle temperature che delimitano il range: I = 1 mA = 1 * 10-3 A V(50°C) = R(50°C) * I = 118,375 * 1 * 10-3 = 0,118375 V V(200°C) = R(200°C) * I = 173,5 * 1 * 10-3 = 0,1735 V

208


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Dopo aver trovato i valori di tensione andiamo a calcolare il valore del guadagno degli operazionali: G1 = 5 / V(200°C) = 5 / 0,1735 = 28,818 Vref = V(50°C) * G1 = 0,118375 * 28,818 = 3,4113 V G2 = 5 / (5 - Vref) = 5 / (5 - 3,4113) = 3,1472 Dopo aver trovato la tensione di riferimento andiamo a calcolare il valore delle resistenze da sostituire nel circuito: R2 = 10000 Ω

lo fissiamo noi

R1 = (G1 - 1) / R2 = (28,818 – 1) / 10000 = 278180 Ω R4 = R5 = 10000 Ω

li fissiamo noi

R3 = R6 = G2 * R4 = 3,1472 * 10000 = 314720 Ω 2. Range di temperatura fra 200°C e 400°C

R(T) = R0 * (1+αT)

α = 3,675 *10-3 °C-1

R0 = 100Ω

Applicando la formula troviamo il valore della resistenza dell’RTD alle temperature che delimitano il range: R(200°C) = 100 * (1 + 3,675 * 10-3 * 200) = 173,5 Ω R(400°C) = 100 * (1 + 3,675 * 10-3 * 400) = 247 Ω Fissando la corrente a 1 mA andiamo a calcolare i valori di tensione ai capi dell’RTD alle temperature che delimitano il range: I = 1 mA = 1 * 10-3 A V(200°C) = R(200°C) * I = 173,5 * 1 * 10-3 = 0,1735 V V(400°C) = R(400°C) * I = 247 * 1 * 10-3 = 0,247 V Dopo aver trovato i valori di tensione andiamo a calcolare il valore del guadagno degli operazionali: G1 = 5 * V(400°C) = 5 * 0,247 = 20,243 Vref = V(200°C) * G1 = 0,1735 * 20,243 = 3,512 V G2 = 5 / (5 - Vref) = 5 / (5 - 3,512) = 3,360 Dopo aver trovato la tensione di riferimento andiamo a calcolare il valore delle resistenze da sostituire nel circuito:

209


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, R2 = 10000 Ω

lo fissiamo noi

R1 = (G1 - 1) / R2 = (20,243 – 1) / 10000 = 192430 Ω R4 = R5 = 10000 Ω

li fissiamo noi

R3 = R6 = G2 * R4 = 3,360 * 10000 = 336000 Ω 3. Range di temperatura fra 150°C e 300°C

α = 3,675 *10-3 °C-1

R(T) = R0 * (1+αT)

R0 = 100Ω

Applicando la formula troviamo il valore della resistenza dell’RTD alle temperature che delimitano il range: R(150°C) = 100 * (1 + 3,675 * 10-3 * 150) = 155,125 Ω R(300°C) = 100 * (1 + 3,675 * 10-3 * 300) = 210,25 Ω Fissando la corrente a 1 mA andiamo a calcolare i valori di tensione ai capi dell’RTD alle temperature che delimitano il range: I = 1 mA = 1 * 10-3 A V(150°C) = R(150°C) * I = 155,125 * 1 * 10-3 = 0,155125 V V(300°C) = R(300°C) * I = 210,25 * 1 * 10-3 = 0,21025 V Dopo aver trovato i valori di tensione andiamo a calcolare il valore del guadagno degli operazionali: G1 = 5 * V(300°C) = 5 * 0,21025 = 23,781 Vref = V(150°C) * G1 = 0,155125 * 23,781 = 3,689 V G2 = 5 / (5 - Vref) = 5 / (5 - 3,689) = 3,813 Dopo aver trovato la tensione di riferimento andiamo a calcolare il valore delle resistenze da sostituire nel circuito: R2 = 10000 Ω

lo fissiamo noi

R1 = (G1 - 1) * R2 = (23,781 – 1) * 10000 = 227810 Ω R4 = R5 = 10000 Ω

li fissiamo noi

R3 = R6 = G2 * R4 = 3,813 * 10000 = 381300 Ω

210


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

TGS813 SENSORE DI GAS Il TGS813 è un trasduttore delle figaro in grado di rilevare gas combustibili come ad esempio:  METANO;  PROPANO;  BUTANO;  L’IDROGENO; questo trasduttore è composto generalmente da un materiale semiconduttore, ossido di stagno (SnO2), disposto in un contenitore plastico a forma cilindrica. Da questa immagine si può capire facilmente la struttura di questo sensore:

Figura 211: schema interno del sensore

La prima immagine rappresenta l’intera struttura del sensore, la seconda rappresenta solo la struttura dell’elemento sensibile. Come possiamo notare l’elemento sensibile è posto all’interno di un contenitore cilindrico, e resta sospeso all’interno di esso. L’elemento sensibile è composto da un ossido di stagno ed è posto tra due elettrodi, inoltre c’è una bobina a riscaldamento automatico che funge da riscaldatore, sarà proprio questa a variare l’uscita in base alla presenza di gas. Come tutti i componenti elettronici, anche il TGS813 ha delle caratteristiche elettriche da rispettare, le più importanti sono riassunte in questa tabella: caratteristiche elettriche

valori

U.misura

Potenza massima dissipabile

15

mW

Tensione max di alimentazione

24

V

Tensione riscaldatore

5+-0.2

V

Resistenza riscaldatore

30+-3

Ohm

Resistenza del carico Rl

4+-1%

Kohm

Resistenza trasduttore Rs (metano 1000ppm/aria) Tipico range di rilevamento

5-15

Kohm

0.5-10

Kppm

211


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Il primo dato indica quanta potenza il sensore è in grado di dissipare prima di rompersi, è un dato molto importante da rispettare. Il secondo dato indica che tensione di alimentazione massima il sensore riesce a sopportare prima di rompersi. Il terzo dato è molto importante, come detto in precedenza all’interno del sensore c’è una bobina che funge da riscaldatore, questa bobina la si può alimentare solo fino a 5V, poiché è composta da un filo di 60 micron di diametro, quindi molte volte bisogna alimentarla con tensione più bassa rispetto a quella del sensore. Il quarto dato indica la resistenza del riscaldatore. Il quinto dato indica il valore massimo del carico resistivo che possiamo collegare in uscita al nostro sensore. Il sesto dato è molto importante, compare in quasi tutte le formule per il dimensionamento dei componenti per far funzionare bene il sensore, indica la resistenza interna del sensore, quando esso si trova in un ambiente dove ci sono 1000 parti per milione di gas. Ultimo dato indica il range di rilevamento. Detto ciò, l’immagine sotto rappresenta il circuito di misura base:

Figura 212: schema base per le misurazioni

Da questo schema possiamo ricavare il valore della Rs, con questa formula: Rs=(Vc-Vrl)Vrl*Rl Questo sensore, ha un grande difetto, esso si è in grado di rilevare gas nell’aria, ma non è in grado di dirci, quale tipo di gas è presente, esso risponde ai vari tipi di gas con delle curve, ma le differenze sono talmente piccole, che non si è in grado di differenziare i gas, le curve sono rappresentate in questo grafico:

Figura 213: curva rilevamento gas

212


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Sull’asse delle Y c’è il valore relativo al rapporto tra RS e R0, dove:  

Rs è la resistenza del sensore alle differenti concentrazioni di gas; R0 è la resistenza del sensore per una concentrazione di gas metano di 1000ppm

Sull’asse delle X ci sono i valori di concentrazione di gas nell’aria. Come si può notare del grafico, tutte le curve sono molto vicine, tranne quella dell’aria che trova distaccata dalle altre, inoltre si nota come il rapporto tra Rs e –r0 cali all’aumentare della concentrazione di gas nell’aria, questo fa capire come si comporterà il trasduttore in uscita. Il funzionamento è molto semplice, quando c’è del gas nell’aria, il valore Rs varia, ciò implica una variazione della tensione d’uscita, che tramite un circuito di condizionamento ci indicherà il valore della concentrazione dei gas. Un altro difetto del nostro trasduttore, è che esso è sensibile alla temperatura e all’umidità presenti nell’aria, infatti un buon circuito che utilizza questo trasduttore, prevede anche la compensazione della temperatura. Da questo grafico si può capire come il sensore sia influenzato in mdo non indifferente dalla temperatura:

Figura 214: influenza della temperatura sul sensore

Sull’asse delle Y è sempre posto il rapporto tra Rs e R0, mentre su quello delle X c’è la temperatura dell’ambiente. Dal grafico possiamo capire come all’aumentare della temperatura il rapporto tra Rs e R0 diminuisca drasticamente, ma per farsi un’idea chiara bisogna tenere in considerazione questa tabella fornita dal costruttore:

Questa tabella indica la variazione del rapporto tra Rs e R0, in base alla temperatura e alla concentrazione di gas, per esempio: con 0% RH a -10° il rapporto vale 1.860, mentre a 40° vale 1.612, è presente una

213


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, differenza non indifferente, che se non viene tenuta sotto occhio si rischia di creare un sistema di acquisizione completamente impreciso.

CIRCUITI DI CONDIZIONAMENTO Schema elettrico 1:

Figura 215: circuito di condizionamento

Questo circuito è in grado di rilevare la presenza di gas e fare scattare un allarme quando si supera una certa soglia. Nel circuito è prevista anche la compensazione della temperatura. Il funzionamento è molto semplice: quando c’è la presenza di un gas, il sensore lo rileva e varia la sua resistenza interna, variando così il partitore resistivo di tensione formato da TGS e la serie di R1 e Rvr (il trimmer serve per una regolazione più precisa della tensione che si vuole in uscita dal partitore. Questa tensione entra in un comparatore non invertente e viene confrontata con la tensione di rifermento. La tensione di riferimento varia al variare della temperatura, tutte le resistenza che compongono il partitore della tensione di rifermento devono essere dimensionate, per compensare il problema della temperatura. Detto ciò quando la Vrl>Vref, il comparatore in uscita avrà il valore della tensione di +Vsat, facendo così andare in saturazione il bjt NPN, che farà attivare il buzzer che funge da allarme. Quando invece la VRl<Vref in uscita dal comparatore avremo il valore di –Vsat, quindi il transistor sarà interdetto, e ciò significa che la concentrazione di gas nell’aria è dentro la norma. Vrl=VC*(R1+Rvr)/(Rs+R1+Rvr) Vref=Vc*R4/[(TH//R2)+R3+R4) Questo circuito è un sistema di allarme che si attiva quando la concentrazione di gas nell’aria è circa 3000ppm (Vs=2.5V).

214


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Schema elettrico 2:

Figura 216: circuito di condizionamento

Lo schema proposto è un circuito di allarme che si attiva dopo aver superato una certa soglia di concentrazione di gas nell’aria. Il funzionamento è molto semplice: come possiamo notare il trasduttore è alimentato a 12V, una tensione troppo alta per il riscaldatore, perciò si utilizza un 7805 (stabilizzatore di tensione) per avere 5V con i quali alimentare il riscaldatore. Il led serve solo per indicare la presenza o meno dell’alimentazione. Quando c’è presenza di gas superiore alla soglia posta precedentemente, il TGS813 varia lo propria resistenza, cambiando così il partitore di tensione, collegato al gate del SCR. Il trimmer serve per regolare la corrente di gate, quando esso è sottoposto a una differenza di potenziale si genera una corrente, che sarà nostra corrente di gate, e siccome in un SCR all’aumentare della corrente di gate diminuisce la tensione di breakover, se la corrente è tale da far diventare la tensione di breakover minore della tensione tra anodo e catodo del SCR, esso conduce come un normale diodo. Se la tensione di breakover è maggiore di quella tra anodo e catodo, il nostro SCR è interdetto quindi praticamente un circuito aperto. Supponiamo che il diodo controllato sia saturo, la nor fornisce un 1 logico in uscita e attiva così l’astabile con NE555, che fornisce un segnale d’uscita con un periodo pari a: T=1/0.7*(R2+2R1)*C1 Questo segnale farà suonare uno speaker che indicherà l’allarme. Questo circuito funziona correttamente, ma sarebbe più comodo utilizzare un semplice transistor al posto della porta logica, per il semplice motivo che costa meno e occupa meno spazio sulla scheda stessa. È normale che il diodo controllato è interdetto il pin di reset attivo basso del 555 arriva uno dalla porta logica e quindi spegne il timer, ciò indica una situazione normale e non di allarme.

215


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Schema elettrico 3:

Figura 217: circuito di condizionamento

Lo schema proposto un circuito americano, lo si può capire della tensione di rete che vale 120VAC. In questo schema sono state previste, si la compensazione di temperatura, che una batteria tampone nel caso la tensione di rete cada. Il funzionamento del circuito è il seguente: il circuito lo si può schematizzare in due blocchi: il primo che serve per mantenere la tensione anche quando la rete cade, il secondo è la parte di acquisizione e condizionamento. Prima dio potere spiegare il circuito bisogna sapere cosa sono gli integrati che vengono utilizzati:  LM2940Ct-5.0, è un regolatore di tensione che eroga in uscita una tensione pari a 5V stabilizzati (funzionamento uguale a quello di un 7805);  LM3909 è un oscillatore per led;  DS1233 è un reset; il trasformatore utilizzato eroga una tensione in uscita di 9 volt. Come possiamo vedere sul primo ramo c’è una serie di due batterie e un diodo, queste entrano in gioco solo quando la tensione di rete cade, quindi il diodo satura siccome la tensione di anodo diventa maggiore di quella di catodo, e il circuito verrà alimentato a batteria fino a che la tensione di rete non venga ripristinata. Sul ramo successivo, è presenta LM2940, in ingresso viene applicata una tensione pari a 9V, mentre in uscita eroga 5 V stabilizzati che servono per alimentare LM3909 e il riscaldatore del TGS813, che si romperebbe con una tensione di 9V. il condensatore C2, è un condensatore di filtro. Come possiamo notare i 5V entrano anche in ingresso al DS1233, questo integrato a cosa serve?? Il giochino che è stato fatto è molto interessante, il DS1233 è molto utile, poiché esso si accorge quando la tensione di rete cade, o quando le batterie in caso di caduta di rete sono scariche, in poche parole si accorge quando la tensione che gli viene applicata in ingresso esca da una certa tolleranza, non appena la tensione in ingresso esce dalla tolleranza il reset si attiva e fa saturare il transistor che così collega il pin di massa del lm3909 a massa, facendolo così accendere. Supponiamo che la tensione di rete cada, il DS1233 accende del modo spiegato precedentemente Lm3909, che per come è stato collegato, si riconosce che è una configurazione per il lampeggio di un led, questo lampeggio indica che la tensione di rete è caduta e che quindi si sta lavorando con le batterie. Questa parte è la parte riguardante il blocco per il controllo della tensione di alimentazione, l’altro blocco del circuito, invece, serve appunto per la misura. Come possiamo notare il riscaldatore del sensore è alimentato a 5V erogati dallo stabilizzatore di tensione. Quando c’è concentrazione di gas nell’aria, la resistenza del sensore varia, facendo variare così il partitore di tensione che viene collegato all’ingresso positivo del comparatore non invertente ad isteresi. In questo circuito è prevista anche la compensazione della temperatura con solito ramo a partitore, la cui uscita funge da tensione di soglia del comparatore. Ogni volta che il comparatore fornisce un’uscita pari a +Vsat attiva il transistore che a sua volta attiva un buzzer che funge da allarme, quindi viene così indicata ka situazione di allarme.

216


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, CARATTERISTICHE DEL SENSORE:

Figura 218: dimensioni del sensore

217


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Effetti sull'uomo del Monossido di Carbonio: Per le sue caratteristiche l’ossido di carbonio rappresenta un inquinante molto insidioso, soprattutto nei luoghi chiusi dove si può accumulare in concentrazioni letali. Tali situazioni sono purtroppo frequenti e innumerevoli sono i casi di avvelenamento e gli incidenti anche mortali imputabili alle stufe o agli scaldabagni difettosi o non controllati. Essendo il CO incolore, insapore, inodore e non irritatante, può causare morti accidentali senza che le vittime si rendano conto di quel che sta loro succedendo. Frequenti sono pure i suicidi provocati dai gas di scarico delle automobili nei locali non aerati. Una volta respirato, il CO si lega all’emoglobina con una affinità che è 220 volte superiore a quella dell’ossigeno e formando un composto inattivo fisiologicamente che viene chiamato carbossiemoglobina. Questa sostanza, al contrario dell’emoglobina, non è in grado di garantire l’ossigenazione ai tessuti, in particolare al cervello ed al cuore. La morte sopravviene pertanto per asfissia. L’effetto del CO risulta maggiore in altitudine, per la ridotta percentuale di ossigeno nell’aria. In caso di intossicazione bisogna immediatamente portare all’aria aperta il soggetto colpito, perché la respirazione di aria arricchita di ossigeno aiuta l’eliminazione del CO dalla carbossiemoglobina. Una concentrazione di CO nell’aria pari a 2000-4000 ppm (0,2%-0,4%) provoca la morte in circa 15 minuti, dopo aver provocato perdita di conoscenza. In presenza di 1000 ppm si sopravvive circa 90 minuti. I primi sintomi dell’avvelenamento sono l’emicrania e un senso di vertigine, purtroppo il gas provoca anche sonnolenza e questo impedisce spesso alle vittime di avvertire il pericolo e di aerare il locale. A causa del traffico automobilistico la popolazione urbana è spesso soggetta a lunghe esposizioni a basse concentrazioni. La lenta intossicazione da ossido di carbonio prende il nome di ossicarbonismo e si manifesta con sintomi nervosi e respiratori. Nel sangue è presente una percentuale di carbossiemoglobina che dipende dalla concentrazione di CO alla quale una persona è esposta: per ogni ppm di CO presente in aria, lo 0,16% di emoglobina viene trasformato in carbossiemoglobina; sono necessarie però alcune ore perchè si raggiunga la massima saturazione. In proporzione periodi di esposizione più brevi formano meno carbossiemoglobina. Sono considerate fisiologiche concentrazioni di carbossiemoglobina minori dell’1% dell’emoglobina circolante nel sangue. Quando nell’aria la concentrazione di CO è di 12-31 ppm si arriva al 25% di carbossiemoglobina e si manifestano i primi segni con aumento delle pulsazioni cardiache, aumento della frequenza respiratoria e disturbi psicomotori (nei guidatori di auto si allungano in modo pericoloso i tempi di reazione). A 100 ppm di esposizione per diverse ore (come nel caso di lunghe soste in gallerie stradali) compaiono vertigini, cefalea e senso generale di spossatezza, che possono essere seguiti da collasso. Nei fumatori la percentuale di carbossiemoglobina presente nel sangue può variare dal 6% in fumatori moderati, sino al 10% in accaniti fumatori di sigarette che siano esposti anche ad una concentrazione esterna di CO di circa 40 ppm per 1 ora, quando al confronto un non fumatore ha un aumento di carbossiemoglobina da 1,6 al 2,6%. L’esposizione a monossido di carbonio comporta inoltre l’aggravamento delle malattie cardiovascolari, un peggioramento dello stato di salute nelle persone sane ed un aggravamento delle condizioni circolatorie in generale.

218


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

SCR Gli SCR sono tiristori al silicio controllabili che hanno tre terminali: la coppia anodo (A) e catodo (K), e il terminale di controllo o di gate (G). Sono unidirezionali (la corrente di conduzione può fluire solo in una direzione, dall'anodo al catodo) e svolgono funzioni di interruttore per controllare l'interruzione e il flusso di corrente nei circuiti di potenza. Hanno la struttura interna costituita da quattro zone alternate di semiconduttore p e n, di diverso spessore e con concentrazioni diverse di drogaggio. Il terminale di gate degli SCR può essere posto o sulla zona p interna, e in questo caso sono controllati dal lato del catodo, o sulla zona n interna, e allora sono controllati dal lato dell'anodo. Nel seguito si considerano gli SCR regolabili dal lato catodico, in quanto quelli regolabili dal lato anodico sono usati raramente.

Figura 219: simbolo (http://it.wikipedia.org/wiki/Tiristore)

Figura 220: struttura (http://it.wikipedia.org/wiki/Tiristore)

Figura 221: circuito equivalente delle giunzioni (presa dal manuale di elettronica edizione HOEPLI)

219


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Caratteristiche anodiche: sono funzioni parametriche ==> iA = f(VAK) con iG>=0 parametro. Un SCR è

costituito da quattro stati: p, n, p ed n, che formano 3 giunzioni: J 1, J2, J3. Le tre giunzioni sono equivalenti a tre diodi, D1, D2 e D3.

Figura 222: caratteristiche anodiche (presa dal manuale di elettronica edizione HOEPLI)

Analisi anodica per iG=0: si consideri l'SCR polarizzato con una tensione positiva VAK fra anodo e catodo

minore della tensione VBO, detta tensione diretta di breakover, e con il gate aperto per avere i G=0. Se VAK<VBO, i diodi D1 e D3 sono polarizzati direttamente e D2 è polarizzato inversamente. Tra anodo e catodo scorre una debole corrente di polarizzazione inversa, l'SCR è OFF e presenta una resistenza elevata. Se 0<VAK<VBO la regione delle caratteristiche è detta di blocco. Se VAK = VBO l'SCR presenta una resistenza molto bassa e la tensione VAK passa rapidamente dal valore di VBO (ordine di centinaia di V) alla tensione VL (tra 1 e 2 V). Nel passaggio da VBO a VL, la corrente iA aumenta fino al valore IL, detta corrente di aggancio (latching current) e l'SCR si innesca. Per VAK appena maggiore di VL, l'SCR passa allo stato ON, la caratteristica anodica diviene una retta con pendenza elevata e su di essa si stabilisce il punto di lavoro dell'SCR. Questa regione è detta di conduzione. Analisi anodica per iG>0 (impulso di gate): si supponga l'SCR nello stato di OFF e di applicare un impulso positivo di corrente al gate. Il passaggio allo stato di ON avviene con una tensione di breakover più bassa del valore di VBO per iG=0 (la tensione VBO è tanto più bassa quanto più la corrente di gate è alta). In queste condizioni la resistenza dell'SCR diviene molto bassa, l'SCR commuta a ON e la caratteristica di conduzione è la stessa che si ha per iG=0. Regione di interdizione inversa della caratteristica anodica: per qualunque valore di iG, se VAK<0 e VAK>VBR (tensione di breakdown inversa); il diodo D2 è polarizzato direttamente, D1 e D3 inversamente e l'SCR è ad OFF (attraversato da una debolissima corrente negativa). Per V AK<VBR, si ha un aumento della corrente inversa che danneggia l'SCR. Innesco e disinnesco dell'SCR: un impulso di corrente al terminale di gate fa acquisire all'SCR una bassa resistenza e lo fa commutare ad ON. Dopo l'impulso, la zona di interdizione centrale dell'SCR si annulla in un determinato intervallo di tempo indicato con Ton e l'SCR è innescato (acceso). A questo punto è attraversato dalla corrente iA. Un ulteriore impulso al terminale di gate non ha più effetto sull'SCR (non si può più riportare la resistenza al valore elevato). Perciò occorre diminuire il valore della corrente iA al di sotto di un determinato valore minimo che rappresenta la corrente di mantenimento I H (holding current). Dopo aver diminuito VAK fino ad avere iA<iH, la zona di interdizione centrale si ristabilisce dopo un determinato periodo di tempo indicato con Toff, e con la resistenza elevata dell'SCR, esso si disinnesca (spento). Il disinnesco è ottenuto con la commutazione naturale o la commutazione forzata. La commutazione naturale avviene quando l'SCR lavora con tensioni alternate; allora il disinnesco è automatico quando la tensione diviene negativa e la corrente passa per lo zero. La commutazione forzata è utilizzata quando l'SCR lavora con tensioni continue; il disinnesco è allora ottenuto o con un interruttore che interrompe la corrente anodica iA, o con un circuito esterno che polarizza inversamente l'SCR e rende la corrente i A negativa. Gli SCR nello stato ON hanno una resistenza di valore basso, quindi occorre inserire in serie all'SCR una resistenza sufficientemente grande che limiti la corrente.

220


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Ecco alcuni valori medi e valori limite dei parametri di un diodo a quattro strati:

Valori medi

Valori limite

Parametro

Valore

Descrizione

VBO

50V ± 10%

tensione di accensione

IB

120uA

corrente di accensione

IF

150mA

corrente di conduzione nominale

VH

0,8V

tensione di mantenimento

IH

15 ÷ 50 mA

corrente di mantenimento

IR

15uA

corrente di interdizione

rd

2Ω

resistenza differenziale

tON

0,2us

tempo di accensione

tOFF

0,5us

tempo di spegnimento

Vrmax

60V

tensione inversa max

IFM

10A

corrente di conduzione max

Pmax

150mW

potenza dissipata max

Tj

-40°C min; +65°C max

temperatura ambiente di lavoro

Come detto precedentemente, il diodo SRC, può essere schematizzato in questo modo, tramite i transistor è possibile spiegarne il funzionamento.

Figura 223: struttura dell'SRC realizzata con dei transistor

221


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Analizzando il circuito possiamo dire: Ib2*hFE2=Ic2=Ib1 Ib1*hFE1=Ic1=Ib2 Ib1*hFE1*hFE2=Ib1 hFE1*hFE2=1 (innesco incerto), quindi: hFE1*hFE2>1 (innesco sicuro). Due transistor collegati in questo modo creano un loop, se sul gate applico un impulso tale da creare una corrente di collettore e quindi di base del pnp che riesca far saturare il pnp che a sua volta crea una corrente di collettore e quindi di base per npn, il sistema è un ciclo chiuso che funziona anche se non applico più impulsi al gate, l’unico modo per poterlo fermare è far scendere la corrente di anodo al di sotto di quella di holding.

COME SI USA UN SCR Per ogni scr il costruttore indica una zona di lavoro e di innesco sicuro, e una zona di innesco incerto, quando si lavora con questi dispositivi bisogna tenere conto dei possibili inneschi incerti causati da dei picchi casuali in ingresso. Per evitare che scr, saturi con questi picchi bisogna sempre collegargli tra anodo e catodo una rete RC, per eliminare questi picchi. Questa rete prende il nome di rete di SNUBBER, essa serve per eliminare quegli inneschi indesiderati causati d un brusco cambiamento di Vak che provoca così il passaggio di una corrente di gate che vale: Ig=Cj2*dV/dt Una rete di snubber applicata ad un scr si presenta così:

Figura 224: rete di snubber

La rete di snubber quindi serve per eliminare gli impulsi veloci che si presentano sulla linea per evitare falsi inneschi. In commercio esistono dei dispositivi che si chiamano SNUBBER LESS, con questi possiamo fare a meno della rete di snubber ma sono dei custom quindi costano abbastanza. La rete di snubber dissipa molto per questo non si possono utilizzare le resistenze ad impasto perché costano veramente molto, quindi si usano le resistenze a filo.

222


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

CONTROLLO DI FASE PARZIALIZZAZIONE DELL’ONDA A causa della struttura del SCR, esso si presta meglio ad essere utilizzato in regime alternato anziché in continua. Se lo utilizziamo come interruttore possiamo parzializzare un’onda. Utilizzando un circuito di questo genere:

Figura 225: circuito controllo di fase con SRC

Il funzionamento è molto semplice, sul gate vengono applicati degli impulsi, mentre all’anodo è applicata una sinusoide che di solito è la tensione di rete. Prendo come 0 crossing la rete, facendo così so quando la sinusoide passa per lo 0. Finche non arriva nessun impulso sul gate il diodo è interdetto, quando arriva un impulso, satura e fa passare l’onda in ingresso fino a che questa non fa il passaggio alla semionda negativa, con la quale SCR si spegne, per capirne meglio il funzionamento, basterà guardare questo cronogramma:

Figura 226: parzializzazione d'onda

223


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Immagine 2:

Figura 227: parzializzazione d'onda

Nel caso in cui la corrente e la tensione siano sfasate, per esempio: se il carico è un motore, succede che, vista la natura induttiva del motore, la corrente viene ritardata rispetto alla tensione, di un angolo legato alla natura del motore e dato dal costruttore. Se io prendo lo 0 crossing della rete, io deve tener conto dell’angolo di ritardo del motore, quindi si spegnerà un po’ in ritardo. Circuiti di questo tipo vengono usati per l’accensione delle lucine di natale. Altra possibile simulazione:

Figura 228: circuito scr

224


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 229: cronogramma

225


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Trasformatori di impulsi Caratteristiche . Adatti all'impiego in circuiti di accensione di SCR e TRIAC di piccole, medie, grandi potenze . Ampia gamma di prodotti standard disponibili a catalogo . Possibilità di esecuzioni speciali su specifica del cliente . Prodotti in accordo alle norme EN60742 e EN609S0 . Dimensioni compatte Generalità I trasformatori di impulsi UTK sono dispositivi abitualmente utilizzati per il pilotaggio di semiconduttori quali SCR e TRIAC, in grado di trasferire un'onda quadra o un treno di impulsi con fronti di salita e discesa molto rapidi senza un'apprezzabile distorsione della forma d'onda. In tali applicazioni, oltre a fornire l'impulso di accensione al gate del semiconduttore, garantiscono l'isolamento tra il circuito di controllo, tipicamente in bassa tensione, ed i semiconduttori di potenza, soddisfacendo alle norme internazionali in materia di sicurezza dei trasformatori. I trasformatori d’impulsi UTK sono caratterizzati da: • costruzione compatta, impregnati sottovuoto ed incapsulati in contenitori plastici in materiali autoestinguenti UL94-HB, adatti all’utilizzo su circuiti stampati ad elevata densità • disponibilità in range di temperatura standard (0+80°C) o esteso • isolamento galvanico affidabile e duraturo • ottimo accoppiamento magnetico tra l’avvolgimento primario e l’avvolgimento secondario, che garantisce un’elevata fedeltà nella trasmissione dell’impulso con tempi di propagazione minimi, ed una bassa corrente magnetizzante • elevata capacità di trasferire potenza impulsivamente • elevata immunità ai disturbi, grazie alla ridotta capacità di accoppiamento tra primario e secondario • basse perdite • Tensione efficace nominale di lavoro tra avvolgimento primario e secondario 1Kv, con test di rigidità dielettrica effettuato sul 100% della produzione secondo le modalità esecutive indicate dalla norma EN60742, EN60950. E’ disponibile un’ampia gamma di prodotti standard adatti al pilotaggio di dispositivi di piccole, medie e grandi potenze. Per particolari esigenze UTK è in grado di effettuare la progettazione di prodotti speciali su specifica del cliente. UTK effettua accurati controlli nel corso ed al termine del processo produttivo, garantendo qualità e ripetitività del prodotto. I test effettuati includono: • Ispezione visiva • Controllo pinout e polarità • Misura dei parametri di riferimento (n,Lp,Ld,Ck,Rp,Rs) • Test di rigidità dielettrica Applicazioni

Circuito di accensione per SCR. La resistenza R2 ed il condensatore Cl aumentano l'immunità ai disturbi del circuito di pilotaggio e prevengono il fenomeno delle false accensioni. La resistenza R1 limita la corrente di gate. D2 e D3 consentono una smagnetizzazione rapida del trasformatore. D1 blocca la corrente di gate durante la smagnetizzazione. Circuito di accensione per SCR. La resistenza R2 ed il condensatore Cl aumentano l'immunità ai disturbi del circuito di pilotaggio e prevengono il fenomeno delle false accensioni. La resistenza R1 limita la corrente di gate. D2 e D3 consentono una smagnetizzazione rapida del trasformatore. D1 blocca la corrente di gate durante la smagnetizzazione. Con l'aggiunta della resistenza R3 e del condensatore C2 si ottiene un impulso di pilotaggio a due livelli: un picco iniziale più elevato per ottimizzare l'accensione del tiristore, seguito da un successivo abbassamento della corrente di pilotaggio per una minore dissipazione.

226


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Parametri di riferimento Rapporto di trasformazione n Rapporto tra il numero di spire dell'avvolgimento primario ed il numero di spire dell'avvolgimento secondario. Area tensione tempo ∫udt Integrale della tensione a secondario per la durata dell'impulso,' o area tensione/tempo. Nel caso di applicazione di impulsi unipolari a primario,Judt Indica il valore massimo consentito per l'integrale della tensione secondaria a vuoto, senza che si verifichino fenomeni di saturazione del nucleo magnetico, Espresso in VμS. Tempo di salita Ts Tempo di salita, calcolato sul fronte di salita della forma d'onda a secondario, tra il 10% ed il 90% del valore di picco, con carico resistivo pari a Rn e tensione di pilotaggio 12V con duty cycle 50%. E' un parametro legato sostanzialmente alla qualità dell'accoppiamento magnetico tra l'avvolgimento primario e secondario e quindi al valore della induttanza dispersa Ld. Corrente di picco Ip

Corrente massima ammessa al secondario. Resistenza di carico Rn Resistenza di carico nominale per l'esecuzione delle misure dei parametri precedenti

Induttanza Lp Valore nominale dell'lnduttanza dell'avvolgimento primario. Lo scostamento massimo dal valore nominale (tolleranza) è pari al +/ - 30%. Misurata con ponte di misura RLC ai capi dell'avvolgimento primario (I amb. = 25°C, frequenza = 10KHz, pilotaggio UAC,rms= 250m V). Capacità di accoppiamento Ck Capacità di accoppiamento tra avvolgimento primario e secondario. E' tanto maggiore quanto migliore è l'accoppiamento elettrico tra 'avvolgimento primario e secondario. Valori di Ck estremamente bassi consentono una maggiore immunità ai disturbi del circuito di accensione, che consente di prevenire il trasferimento di transitori di tensione o di rumore in alta frequenza dal primario al secondario ed evitare fenomeni quali accensioni indesiderate. Misurata con ponte di misura RLC ai capi di primario e secondario, con avvolgimenti in corto (frequenza = 10KHz, pilotaggio UAC,rms=250mV), Resistenza degli avvolgimenti Rp,Rs Componente resistiva misurata con ponte RLC ai capi dell'avvolgimento primario (Rp) e secondario (Rs).

227


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Code

n

∫udt (µVs)

Ts (µs)

Ip (mA)

Rn (Ω)

Lp (mH)

Ck (pF)

Rp (Ω)

Rs (Ω)

Model

TI-012110

1:1

200

<0.9

400

27

10

150

0.65

0.65

TI-012

TI-012120

1:1:1

200

<0.9

400

27

10

150

0.65

0.65

TI-012

TI-114006

2:1

200

<0.7

100

100

6

8

1.8

0.9

TI-114

TI-114110

1:1

25

<1.4

250

40

2.4

7

0.65

0.65

TI-114

TI-114120

1:1:1

250

<1.4

250

40

2.4

7

0.65

0.65

TI-114

TI-114125

1:1:1

200

<1.4

250

40

1.5

6

0.5

0.5

TI-114

TI-114128

1:1:1

250

<1.7

250

40

2.4

6

0.65

0.65

TI-114

TI-114130

2:1

350

<3.2

250

40

19

8

3.8

1.1

TI-114

TI-114140

2:1:1

350

<3.2

250

40

19

8

3.8

1.1

TI-114

TI-114150

3:1

300

<2.4

250

40

20

8

6.5

0.9

TI-114

TI-114160

3:1:1

300

<2.4

250

40

20

8

6.5

0.9

TI-114

TI-120010

1:1

300

<0.8

750

15

3.2

25

0.7

0.7

TI-120

TI-120020

1:1:1

300

<0.8

750

15

3.2

23

0.7

0.7

TI-120

TI-120030

2:1

250

<0.8

1100

10

7.3

28

0.5

0.25

TI-120

TI-120040

2:1:1

250

<0.8

1100

10

7.3

31

0.5

0.25

TI-120

TI-120050

3:1

150

<0.5

1100

10

7.3

22

0.5

0.15

TI-120

TI-125010

1:1

500

<1

1100

10

2.3

35

0.45

0.45

TI-125

TI-125020

1:1:1

500

<1

1100

10

2.3

35

0.45

0.45

TI-125

TI-125030

2:1:1

500

<1

1100

10

9

55

0.9

0.45

TI-125

TI-125040

1:1

1000

<2

600

20

7.6

45

0.8

0.8

TI-125

TI-125050

1:1:1

1000

<2

600

20

9

55

0.9

0.9

TI-125

TI-125060

3:1

300

<0.8

1100

10

8.3

40

0.6

0.2

TI-125

TI-125070

3:1:1

300

<0.8

1100

10

8.3

40

0.6

0.2

TI-125

228


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

TRIAC

Figura 230: simbolo triac (http://it.wikipedia.org/wiki/Triac)

Il Triac è un componente elettronico, di tipo semiconduttore, specificamente progettato per controllare carichi in corrente alternata (dall'inglese Triode for alternating current). Ecco la curva di funzionamento:

Figura 231: curva di funzionamento (tratta dal manuale di elettronica edizione HOEPLI)

Descrizione

Figura 232: struttura di un triac (http://it.wikipedia.org/wiki/Triac)

Si tratta di un dispositivo a tre terminali, di cui due sono detti anodi e sono la via di passaggio per la corrente controllata, mentre il terzo, definito gate, è l'ingresso di controllo. Idealmente il Triac equivale a due SCR collegati in antiparallelo con il gate in comune. Ciascun elemento conduce solamente nel semiperiodo dell'onda in cui è polarizzato direttamente, da quando viene applicato un impulso di corrente al gate (superiore ad una soglia minima di sensibilità) fino al passaggio per lo zero della corrente. Nel caso della rete elettrica industriale a 50 Hz il semiperiodo dura 0,01 secondi. Si noti che il Triac non regola la corrente, ma può trovarsi esclusivamente nelle modalità di conduzione o interdizione. Ciò non è uno svantaggio, anzi permette di gestire elevate potenze con piccoli segnali di comando e con limitata dissipazione di calore.

229


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Dal punto di vista implementativo, il Triac è impiegato essenzialmente in due modi:  relé  dimmer (regolatore di potenza) Regolatore di tensione Come relé a stato solido È sufficiente mantenere sul gate una corrente di attivazione per tutto il periodo che si vuole mantenere acceso il carico. La tensione sul gate è riferita ad uno in particolare dei due anodi. Per proteggere il componente dalle sovratensioni prodotte dall'apertura del circuito quando sono presenti carichi induttivi (motori, trasformatori, ecc.) si collega tra gli anodi un circuito, detto snubber, di smorzamento. In alcuni casi lo si impiega necessariamente, per permettere l'uso di apparecchiature in cui lo spunto di corrente assorbita nel momento dell'accensione nel caso la sinusoide non sia prossima allo zero, superi la portata nominate dell'interruttore magnetotermico dell'impianto elettrico; una funzione di questo tipo si trova in alcuni modelli di alimentatori lineari da laboratorio HP, nei grossi alimentatori in grado di fornire 10 volt con corrente di 100 ampere, il dimensionamento del trasformatore di alimentazione è tale, da superare ampiamente durante lo spunto all'accensione, il limite di 16 ampere dei magnetotermici, in assenza di un Triac che lo alimenti solo in corrispondenza del passaggio sullo zero della sinusoide. È necessario inoltre calcolare la potenza termica dissipata dal Triac e valutare eventualmente l'applicazione di un dissipatore di calore. Molti dispositivi hanno il contenitore elettricamente isolato dai terminali elettrici, il loro fissaggio meccanico avviene con semplici viti o dadi. Come regolatore di potenza

Figura 233: regolatore di potenza (http://it.wikipedia.org/wiki/Triac)

L'applicazione tipica del Triac si ha nei varialuce per i lampadari domestici, per la regolazione della velocità in elettrodomestici e piccoli motori elettrici. La limitazione della corrente viene effettuata modulando il tempo di conduzione del componente, inviando il segnale di innesco con un adeguato ritardo rispetto all'inizio di ogni semionda, variabile da zero alla durata del semiperiodo. Dal punto di vista circuitale si può utilizzare un circuito RC in cui la resistenza è variabile, in associazione ad un DIAC. Per ottenere una regolazione più precisa e flessibile si utilizzano circuiti integrati dedicati oppure un microprocessore che rileva il passaggio per lo zero e produce un impulso con un ritardo esattamente calcolato. Il segnale è quindi applicato al Triac direttamente oppure attraverso sistemi di isolamento galvanico, quali il fotoaccoppiatore o un trasformatore di isolamento.

230


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Ecco una simulazione del funzionamento del triac:

Figura 234: circuito triac

Figura 235: curve di risposta del triac

Dalla curva di funzionamento emerge molto il fatto che in effetti il triac è formato da due scr in antiparallelo. Perciò nelle curve di risposta, oltre ad ottenere la curva di funzionamento di un SCR otteniamo anche la curva opposta, come se l'SCR fosse girato dall'altra parte. Dal cronogramma emerge la caratteristica del triac, cioè quella di essere bidirezionale. Così come per gli SCR, anche per i triac si può parlare di angolo di innesco.

231


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Una variante dei triac sono gli optotriac:

Figura 236: simbolo optotriac Il principio di funzionamento è il medesimo dei fotoaccoppiatori. Ecco alcune caratteristiche:

Figura 237: caratteristiche moc3021

232


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Ecco l'integrato moc 3020:

Figura 238: (http://www.elettronica-hobby.com/catalog/product_info.php?products_id=982)

Simulazione di un optotriac:

Figura 239: schema circuitale

233


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 240: curva di risposta sul carico

234


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

20100316 – TEORIA FUNZIONAMENTO SCR TRIAC

Figura 241-SCR simbolo elettrico

Figura 242 - SCR: circuito equivalente

Figura 243 - caratteristica di funzionamento SCR; IL: corrente di latching; IH: corrente di HOLDING; Vbrk: tensione di breakover

235


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 244 - andamento delle correnti IL e IH in funzione della temperatura

Figura 245 - piedinatura tipica di un SCR

Figura 246 - esempio di circuito con SCR

Figura 247 - esempio di circuito di pilotaggio con trasformatore a impulsi; C1,R2 servono per filtrare i disturbi; D1 consente di pilotare il gate con solo corrente positiva; R1: resistenza di limitazione della corrente di gate

Figura 248 - a differenza del precedente circuito si nota la presenza di R3,C2. Questa rete consente di avere un picco iniziale piu' elevato di corrente nel gate del SCR (C2 inizialmente scarico e' un corto ) mentre una corrente piu' limitata per la durata dell’impulso ON

TRIAC

236


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 249 - a) rappresentazione del TRIAC come due SCR in antiparallelo; b) struttura del silicio interna in una rappresentazione schematica; c) simbolo elettrico

Figura 250 - andamento correnti di pilotaggio triac

Figura 251 - CARATTERISTICA DI TRASFERIMENTO

Figura 252 - circuito di pilotaggio del gate TRIAC Figura 253 - altro esempio di pilotaggio triac con trasfo a impulsi

237


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 254 - pilotaggio triac con fototriac

238


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

ATTUATORI Motori passo – passo: Il motore passo-passo spesso chiamato anche step o stepper è un motore elettrico sincrono in corrente continua senza spazzole che può suddividere la propria rotazione in un grande numero di step. Sono dei motori che possono essere movimentati un passo alla volta, il motore quindi si muove per scatti.I motori passo-passo sono motori che, a differenza di tutti gli altri, hanno come scopo quello di mantenere fermo l'albero in una posizione di equilibrio: se alimentati si limitano infatti a bloccarsi in una ben precisa posizione angolare. Solo indirettamente è possibile ottenerne la rotazione: occorre inviare al motore una serie di impulsi di corrente, secondo un'opportuna sequenza, in modo tale da far spostare, per scatti successivi, la posizione di equilibrio. È così possibile far ruotare l'albero nella posizione e alla velocità voluta semplicemente contando gli impulsi ed impostando la loro frequenza, visto che le posizioni di equilibrio dell'albero sono determinate meccanicamente con estrema precisione. Esempio grafico con un motore a 100 passi

L'elettromagnete in alto (1) viene eccitato, attraendo il dente più vicino di un attrezzo a forma di rotore metallico. Con il dente allineato all'elettromagnete 1, inizierà la rotazione verso l'elettromagnete 2.

L'elettromagnete in alto (1) viene spento e viene eccitato l'elettromagnete a destra (2), tirando il dente successivo leggermente verso destra. Questo processo produce una rotazione di 3.6° in questo esempio.

L'elettromagnete in basso (3) viene eccitato; si verifica un'altra rotazione di 3.6°.

L'elettromagnete a sinistra (4) viene eccitato, si ha un'altra rotazione di 3.6°. Quando l'elettromagnete in alto (1) sarà di nuovo eccitato, i denti del rocchetto dovranno ruotare nella posizione successiva; poiché vi sono 25 denti, occorrono 100 passi per realizzare una rotazione completa.

Quando alimento le bobine, se il campo ha una direzione che spinge la calamita a ruotare, ho un motore passo-passo.

239


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esistono principalmente due tipi di motori passo passo e si differenziano a seconda del metodo con il quale vengono costruiti: 

unipolare: la corrente che attraversa le bobine può essere in un solo verso.

Figura 255: schema elettrico di un motore passo-passo unipolare

bipolare: la corrente può andare in entrambi i versi.

Figura 256: schema elettrico di un motore passo-passo bipolare

La differenza primaria risiede nel diverso numero di fili presenti nei motori (unipolare 6; bipolare 4), il che determina anche un diverso costo e funzionamento. Questa caratteristica premia il motore bipolare, in quanto permette di ottenere una potenza maggiore in dimensioni minori rispetto ad un unipolare.

Tipologie di pilotaggio: esistono principalmente 4 tipi di pilotaggio: 1. one phase on: è il sistema base di funzionamento; con esso la corrente è applicata ad una sola delle fasi alla volta. 2. two phase on: la corrente è applicata contemporaneamente a due fasi. In questo modo il rotore è trattenuto in posizioni di equilibrio intermedie a quelle tipiche del funzionamento wavemode. 3. half step: è in pratica l'alternarsi delle configurazioni dei due metodi appena visti e si basa sulla constatazione che tra le posizioni di equilibrio dello due sequenze precedentemente viste è presente uno sfasamento di esattamente mezzo passo. 4. micro stepping: è il metodo migliore per vedere un motore passo-passo che si muove più velocemente.

240


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Il pilotaggio dei motori unipolari I motori unipolari sono piuttosto facili da pilotare, perlomeno se sono richieste basse prestazioni, in quanto è sufficiente usare quattro interruttori opportunamente connessi in modo da far passare la corrente nelle fasi secondo l'ordine corretto. Il fatto di avere quattro avvolgimenti lo rende però un motore con uno scarso rapporto peso/potenza ed in definitiva adatto solo per le applicazioni più semplici. Le fasi sono in parte internamente collegate e ciò fa si che i fili uscenti in genere non sono 8 (due per fase) ma 5 o 6.

Figura 257: schema di pilotaggio di un motore passo - passo a 4 fasi

Qui sopra ho rappresentato lo schema del collegamento elettrico di un motore unipolare; nel caso rappresentato ho usato un motore a 6 fili ma se fossero solo cinque, semplicemente significa che la connessione che nello schema ho fatto esternamente in corrispondenza della tensione di alimentazione è interna al motore. Se fossero otto significa che esce una coppia di fili per ciascuna fase e che quindi tutti i collegamenti devo essere effettuati esternamente. Senza alimentazione il motore ruota liberamente anche se, provando a far girare l'albero a mano, si sente un certo funzionamento a scatti. Facendo passare corrente in una sola delle fasi il motore rimane bloccato in una posizione di equilibrio: in questo modo il motore offre una notevole coppia che si oppone a qualunque spostamento. La rotazione è ottenuta cambiando in opportuna sequenza la fase (o le fasi) a cui la corrente è applica; la corrente che deve attraversare una fase è costante sia in modulo che in verso e viene indicata come corrente nominale. In genere è indicata sul contenitore del motore. La sequenza con cui la corrente è applicata alle fasi può essere di vari tipi diversi: Wavemode: è il sistema base di funzionamento; con esso la corrente è applicata ad una sola delle fasi alla volta, secondo la tabella seguente (Ph indica ciascuna delle quattro fasi, I indica la corrente nominale in ciascuna fase, 0 indica l'assenza di corrente). Passo Ph1 Ph3 Ph2 Ph4 1

I

0

0

0

2

0

I

0

0

3

0

0

I

0

4

0

0

0

I

Questo metodo è a volte chiamato anche One-phase-on full step per evidenziare il fatto che una sola fase alla volta è energizzata e che la distanza tra passi successivi è pari a quanto indicato sui dati di targa del motore.

241


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Da notare che, nelle tabelle, le fasi non sono elencate in ordine numerico: la cosa ha però solo un interesse speculativo in quanto difficilmente si conosce la corrispondenza tra numero della fase e fili effettivamente uscenti. Per ottenere la rotazione del motore è necessario scorrere le righe della tabella, cambiando la fase in cui la corrente scorre. E' necessario tener presente che la tabella deve essere vista come circolare: dopo l'ultima riga, ritroviamo infatti la prima. Two phase-on: la corrente è applicata contemporaneamente a due fasi. In questo modo il rotore è trattenuto in posizioni di equilibrio intermedie a quelle tipiche del funzionamento wavemode. La coppia disponibile è circa 1,4 volte maggiore di quella ottenuta con una sola fase attiva alla volta: le due forze applicate contemporaneamente possono essere infatti viste come tra loro perpendicolari e, per chi ricorda qualcosa di trigonometria, non è difficile comprendere da dove nasce quel "radice di due". Il consumo di corrente e quindi il riscaldamento raddoppiano. Questo fatto potrebbe creare problemi in alcuni motori non adatti a questo tipo di pilotaggio. Passo Ph1 Ph3 Ph2 Ph4 1

I

I

0

0

2

0

I

I

0

3

0

0

I

I

4

I

0

0

I

Half-step: è in pratica l'alternarsi delle configurazioni dei due metodi appena visti e si basa sulla constatazione che tra le posizioni di equilibrio dello due sequenze precedentemente viste è presente uno sfasamento di esattamente mezzo passo. Passo Ph1 Ph3 Ph2 Ph4 1

I

0

0

0

2

I

I

0

0

3

0

I

0

0

4

0

I

I

0

5

0

0

I

0

6

0

0

I

I

7

0

0

0

I

8

I

0

0

I

Il vantaggio è che raddoppia il numero di passi disponibile per un certo motore. Lo svantaggio è una discreta irregolarità nella coppia (che per ogni passo cambia da 1 a 1.4 o viceversa) e nel consumo di potenza (che, sempre per ogni passo, cambia da 1 a 2), ambedue mediamente intermedi rispetto agli altri due metodi. Questo metodo è spesso indicato come half-step senza controllo di coppia per sottolineare come la coppia meccanica sia variabile. In alternativa è possibile adottare tecniche capaci di rendere omogenea la coppia ma, per i motori unipolari, questa non è una scelta conveniente a causa della complessità del circuito da realizzare in rapporto agli effetti utili; è invece una via praticabile per i motori bipolari e quindi ne parlerò solo nel paragrafo successivo. Le sequenze indicate nelle precedenti tre tabelle sono relative alla rotazione del motore in un verso: applicando continuamente la sequenze 1-2-3-4-1-2… si ottiene la rotazione dell'albero in un verso; per invertire il senso di rotazione basta invertire l'ordine con il quale sono lette le righe delle tabelle: 4-3-2-1-4… (non va quindi cambiato il verso delle correnti, che rimane invariato).

242


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Da notare che non esiste nessuna corrispondenza tra il numero delle righe delle tabelle sopra riportate ed il numero di posizioni angolari che il motore assume: in genere è necessario "scorrere" molte volte la tabella per ottenere la rotazione dell'albero di un giro. Per esempio in un motore con quattro fasi e 200 passi/giro è necessario applicare per 200 volte (400 volte per l'half-step) gli impulsi di corrente per ottenere la rotazione di un giro dell'albero: in pratica occorre scorrere 50 volte la tabella. Purtroppo, malgrado qualche tentativo di standardizzazione, esiste una forte anarchia nell'assegnazione dei colori ai vari fili che escono da un motore passo-passo: l'unica soluzione è quella di misurare la resistenza degli avvolgimenti (le fasi sono tra loro identiche e presentano quindi esattamente la stessa resistenza, in genere da pochi a poche decine di ohm) e quindi collegare i fili all'elettronica di pilotaggio in base a quest'unica informazione: pur essendo tante le combinazioni possibili, metà di queste funzionano correttamente (o meglio: nel 25% dei casi il motore ruota in un verso, in un altro 25% nel verso opposto, nel 50% dei casi non ruota ma vibra con piccoli movimenti angolari). Nel caso di errore di connessione basta invertire i collegamenti di una sola coppia di fili. Il circuito necessario per il pilotaggio è piuttosto semplice: sopra ho già riportato uno schema di principio in cui sono usato come interruttori quattro MOS. Attenzione però: non utilizzarlo in quanto, così come è, danneggerebbe i transistor, come di seguito spiegato. Il pilotaggio dei motori bipolari I motori bipolari sono caratterizzati dall'avere solo quattro fili di connessione. Una categoria particolare è costituita dai motori unipolari a sei fili: è infatti sufficiente in questi motori non collegare la coppia di fili comuni tra due fasi per ottenere un motore bipolare, anche se in genere con caratteristiche peggiori di quelli che" nascono bipolari". Per questi motori il pilotaggio è più complesso che per quelli unipolari: infatti la corrente deve attraversare gli avvolgimenti nei due versi e questo rende piuttosto complesso il circuito di pilotaggio. Il vantaggio deriva dal fatto che, essendo le fasi due anziché quattro, a parità di potenza del motore, il peso e la dimensione sono minori in quanto è necessario usare una minor quantità di rame. Inoltre, usando appositi schemi, è possibile ottenere circuiti di pilotaggio più efficienti in termini di consumo energetico e velocità di rotazione ottenibile. Infine si rende possibile introdurre nuove modalità di pilotaggio senza appesantire in modo sostanziale le difficoltà di progettazione dell'elettronica di potenza. Anche nel pilotaggio bipolare sono possibili diverse modalità: Wavemode: una sola fase alla volta è attiva. Da notare che le condizioni di funzionamento per ciascuna fase sono tre: corrente in un verso, corrente nell'altro verso, assenza di corrente (situazioni indicate rispettivamente con I, -I e 0 nella tabella). Passo Ph1 Ph2 1

I

0

2

0

I

3

-I

0

4

0

-I

Two phase-on: la corrente è sempre presente nelle due fasi ma cambia verso. Ho già descritto nel paragrafo dedicato ai motori unipolari gli effetti sulla coppia (che aumenta di 1.4 volte) e la corrente assorbita (che raddoppia). Passo Ph1 Ph2 1

I

I

2

-I

I

3

-I

-I

4

I

-I

243


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Half-step senza controllo di coppia: è l'insieme dei due metodi precedenti, con l'effetto principale di ottenere il raddoppio del numero dei passi. Passo Ph1 Ph2 1

I

0

2

I

I

3

0

I

4

-I

I

5

-I

0

6

-I

-I

7

0

-I

8

I

-I

Il microstepping: un'evoluzione del metodo di pilotaggio half-step con controllo di coppia è basato sulla considerazione che, così come posso ottenere un passo intermedio alimentando in contemporanea due fasi, posso ottenere una serie ampia a piacere di posizioni intermedie inviando due correnti di diverso modulo nelle due fasi adiacenti: il rotore si posizionerà tanto più vicino ad una posizione di equilibri tanto maggiore sarà la corrente nella fase corrispondente rispetto a quella dell'altra. In pratica le correnti assumono un andamento che tende ad approssimare quello sinusoidale, con uno sfasamento di 90° tra le due fasi. Ciò fa assomigliare il funzionamenti del motore passo-passo a quello di un motore sincrono a due fasi, che in effetti è suo stretto parente. Di seguito la tabella necessaria per quadruplicare il numero di passi, ampliabile a piacere semplicemente tenendo presente che la corrente assume il valore massimo in una fase quando nell'altra è zero e che la somma dei quadrati dei coefficienti delle due correnti deve sempre essere uno (in pratica una sinusoide ed una cosinusoide...). Passo Ph1

Ph2

1

I

0

2

0.924*I

0.383*I

3

0.707*I

0.707*I

4

0.383*I

0.924*I

5

0

I

6

-0.383*I 0.924*I

7

-0.707*I 0.707*I

8

-0.924*I 0.383*I

9

-I

10

-0.924*I -0.383*I

11

-0.707*I -0.707*I

12

-0.383*I -0.924*I

13

0

-I

14

0.383*I

-0.924*I

15

0.707*I

-0.707*I

16

0.924*I

-0.383*I

0

244


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Il vantaggio, accanto al possibile enorme aumento del numero di posizioni dell'albero (cosa peraltro più teorica che pratica in quanto occorrerebbe realizzare una meccanica molto precisa e quindi costosa), consiste nell'eliminazione praticamente totale del funzionamento a scatti, uno dei difetti più importanti di questo tipo di motore nelle applicazioni di precisione.

Driver per motori PPM (bipolari):

H bridge, detto anche ponte intero. Si inverte la corrente L*(di/dt) = 10*10 -3*(1/100*10-9)=kV, interrompendo la corrente nella bobina si crea una tensione indotta.

Figura 258: schema di un driver per motore PPM bipolare

I diodi di ricircolo sono necessari anche nella connessione con ponte ad H, come rappresentato qui sopra. Essi devono permettere il passaggio di corrente "in salita" quando tutti gli interruttori sono aperti. A volte, utilizzando un ponte ad H, i diodi non sono presenti come componenti discreti ma viene utilizzato il diodo del substrato sempre presente tra collettore ed emettitore (o tra drain e source per i MOS): questa scelta deve essere valutata con grande attenzione in quanto molto spesso tale diodo è troppo lento e quindi inefficace. Se occorre progettare il ponte ad H, potrebbe essere utile verificare questa caratteristica sui fogli tecnici degli switch scelti (quando questa possibilità è prevista è in genere riportata con evidenza). Un problema legato all'uso dei diodi di ricircolo deriva dal fatto che la corrente che attraversa i diodi "ritorna" (mi si scusi il termine) verso la sorgente di alimentazione, causando a volte un aumento anche considerevole della tensione. Si può inserire anche un Rsens, che serve a misurare la corrente che muove il circuito, inserendo un amplificatore operazionale in configurazione non inv, amplifico il segnale derivante dalla resistenza sensore.

245


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Driver per motori PPM (unipolari): rispetto al precedente c’è un dispendio per quanto riguarda le induttanze, inoltre bisogna avere alcuni accorgimenti riguardanti la protezione dell’alimentazione e anche nella gestione dei MOS.

Figura 259: schema di un driver per motore PPM unipolare

Tipi di motori PPM: esistono principalmente 3 tipi di motori PPM:  riluttanza variabile;  magnete permanente;  ibridi. Magnete permanente: i motori a magnete permanente sono pensati e realizzati con un magnete. Vengono utilizzate terre rare come materiale magnetico. Riluttanza variabile: c’è un rotore realizzato in materiale ferro-magnetico. Lo statore ha i poli orientati con un certo angolo, quando agisco sulle bobine, il rotore si orienta con lo statore per minimizzare la riluttanza. Ibridi: sposa entrambe le tecnologie, utilizzando le proprietà dell’uno e dell’altro, essendoci un magnete, realizzo più campo magnetico.

Caratteristiche:    

step angle: angolo di passo (18°; 3,6°; 7,5°; 9°; 15°); step revolution: è l’angolo di giro; holding torgue: coppia di tenuta, è la massima coppia che può essere applicata al motore da fermo; residual torgue: è l’induzione che rimane in seguito ad una magnetizzazione.

246


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

I cambi di velocità: Il motore passo-passo soffre di diversi problemi nel momento in cui viene effettuato il cambio di velocità, a causa del suo principio di funzionamento che lo fa assomigliare ad un motore sincrono. Infatti tutti i dispositivi meccanici, a causa dell'inerzia, non possono subire accelerazioni troppo brusche. Un classico motore elettrico reagisce alla richiesta di improvviso aumento di velocità con un momentaneo aumento dell'assorbimento di corrente ed un graduale e relativamente lento aumento di velocità. Nel momento in cui improvvisamente cambia la frequenza in ingresso al dispositivo di pilotaggio del motore passo-passo, lo stepper tenta di adeguarsi (quasi) istantaneamente alla nuova velocità: se la coppia disponibile è sufficiente vi è una brusca accelerazione, praticamente istantanea; se la coppia non basta a vincere l'inerzia e gli attriti, semplicemente il motore si ferma e, senza un intervento esterno, non è più in grado di ripartire: si dice che il motore "ha perso il passo". Questo comportamento deriva dal fatto che la velocità del motore è rigidamente controllata dall'elettronica e che la corrente assorbita è fissa e praticamente indipendente dalla coppia meccanica resistente. Una simile reazione vi è anche nel caso di applicazione di una improvvisa coppia resistente al motore già in moto. Un motore DC, per esempio, semplicemente rallenta per adeguarsi alla nuova situazione ed aumenta l'assorbimento di corrente. Uno stepper invece non può rallentare: se la coppia resistente è relativamente piccola, la velocità non cambia assolutamente; se la coppia è troppo grande, il motore perde il passo e si ferma. Questo comportamento è descritto dal seguente grafico con il legame tra coppia e velocità.

Figura 260: grafico relativo alla velocità del motore PPM

Un curva identifica l'area, disegnata in verde, entro cui il motore può subire cambi di velocità e inversioni di marcia senza precauzioni particolari: è sufficiente cambiare la frequenza con cui sono applicate le correnti alle fasi. E' in genere indicata come curva di pull-in. La zona indicata in rosso e chiamata slew-range può essere attraversata solo a condizione di evitare bruschi cambiamenti di velocità. Il cambiamento di frequenza deve quindi essere continuo e tanto più lento quanto più ci si allontana dalla curva di pull-in. La curva di pull-out indica quale è la massima coppia resistente che può essere applicata al motore in rotazione ad una data velocità costante senza causare il blocco. In pratica rappresenta le massime prestazioni del motore. Il grafico rappresentato dipende non solo dal motore ma anche dai dispositivi meccanici ad esso collegati (un aumento del momento di inerzia del carico causa un restringimento dell'area di pull-in) e dal tipo di pilotaggio (un migliore gestione delle correnti aumenta entrambe le curve, soprattutto alle velocità più elevate). Nella pratica la documentazione relativa a tali curve non è sempre disponibile per lo specifico motore in uso ma possono servire come riferimento nel progetto del software di controllo del motore: per esempio è opportuno accelerare il motore con una rampa al fine di portalo alle velocità più elevate. In applicazioni critiche è possibile utilizzare un sensore di velocità per riconoscere l'eventuale blocco del motore ma più spesso si preferisce ignorare il problema ed, eventualmente, abbondare un poco nel dimensionamento del motore. Overshoot: succede che quando effettuo un passo, il rotore si posiziona nel nuovo allineamento, ma effettua una sorta di rimbalzi.

247


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Sistemi Lineari Cos’è un sistema? Un sistema è un insieme o raggruppamento di elementi. I sistemi possono essere molto grandi e complessi (es: sistema planetario), ma possono essere anche piccoli e semplici (controllo della temperatura). Sottosistema: un sottosistema è una parte del sistema. Elemento: l’elemento è la parte più piccola di un sistema che può essere vista e trattata come entità minima. Blocco: un blocco è un insieme di elementi fisici in grado di controllare se stessi o un altro sistema. Sistema di controllo: un sistema di controllo è un insieme di elementi fisici. Sistema di controllo automatico: un sistema di controllo automatico è un sistema che se regola automaticamente senza l’intervento umano. Sistema di controllo ad anello aperto: un sistema si controllo ad anello aperto è un sistema dove l’azione di controllo è indipendente dall’uscita del sistema stesso. Sistema di controllo ad anello chiuso: il sistema di controllo ad anello chiuso è un sistema dove l’azione di controllo dipende dal valore dell’uscita (sistema in retroazione). Sistema monovariabile (SISO): un sistema monovariabile è un sistema nel quale è presente una sola variabile di ingresso e una sola uscita. Sistema multivariabile (MIMO): in un sistema multivariabile sono presenti diversi ingressi e più uscite. Sistemi lineari: un sistema lineare è un sistema nel quale la relazione ingresso/uscita è di tipo lineare ovvero regolata da un’equazione differenziale lineare. Sistema di tempo invariante: un sistema di tempo invariante è un sistema nel quale l’equazione differenziale che lo descrive presenta coefficienti costanti nel tempo. Sistema a tempo variante: un sistema a tempo variante è un sistema nel quale i coefficienti variano nel tempo (es: razzo vettore cambia la massa per via del combustibile che viene bruciato, automobile ecc.). Esempi di sistemi in retroazione L’uomo è un sistema “retroazionato”

Figura 261: esempio di un sistema retroazionato

248


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esempio di un sistema di controllo ad anello chiuso: Il controllo della temperatura in un forno elettrico è un esempio di sistema ad anello chiuso retro azionato.

Figura 262: sistema ad anello chiuso, forno elettrico

Altri esempi di sistemi retroazionati ad anello chiuso possono essere:  Controllo della velocità di un’automobile (cruise control).  Regolatore elettrico della tensione di uscita continua di un alimentatore.  Sistema di atterraggio strumentale per aerei (ILS).  Sistema laminatoio per metalli ecc.

Schemi a blocchi: Simboli principali

Figura 263: simboli principali degli schemi a blocchi

249


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Funzione di trasferimento: la funzione di trasferimento è una funzione che mette in relazione l’ingresso e l’uscita di un sistema. Sistema generico:

Figura 264: Sistema generico ad anello chiuso

Analogie meccaniche: Massa f= M*a

dove M è la massa e a è l’accelerazione

Forza= f  1/M  Accelerazione

Figura 265: schema

f= M* ( d Velocità / dt) f  1 / (M*S)  Velocità

Figura 266: schema

F(S)= M*S* V(S) Molla f= k*x

dove f è la forza, k è la rigidezza e x è lo spostamento della molla

f.d.T.= spostamento / forza

Figura 267: schema

250


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Smorzatore In uno smorzatore la forza è legata mediante un coefficiente distribuito. f= B * V = B * (x / dt)

dove con x si intende lo spostamento dello smorzatore e con dt si intende la velocità con la quale si muove lo smorzatore

f.d.T.= spostamento / forza = 1 / (B * S) Attrito viscoso e coppia motrice

Figura 268: schema

Cm= Coppia motrice f.V= Attrito viscoso j= Massa Cm(t)= j * (dω / dt) + f.V ω(t)

dove (dω / dt) è l’accelerazione e ω(t) è la velocità angolare

Funzione di trasferimento f.d.T.: Cm(S)= j * S * Ω(S) + f.V * Ω(S) = Ω(S) * (j * S + f.V) Ω(S) / Cm(S) = 1 / (S * j + f.V) Sistema termico

Figura 269: schema

Pter = Potenza termica in ingresso che può essere ad esempio aria calda e quindi entrare o aria fredda e quindi far uscire il calore T ext= Temperatura esterna (Te) T= Temperatura interna

251


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Θ= T – Te Cter= Capacità termica del sistema Rter= Resistenza termica Pter= Cter * dΘ / dt + Θ / Rter Tabella riassuntiva delle analogie meccaniche:

Figura 270: tabella riassuntiva analogie

RISPOSTA TRANSITORIA  Risposta nel tempo: risposta che si ha quando il sistema viene sottoposto ad un ingresso  Risposta TOTALE: RISPOSTA che si ottiene guardando il sistema per tempo infinitamente lungo  RISPOSTA TRANSITORIA: risposta del sistema dal momento in cui viene applicato un ingresso e il momento in cui l’uscita va a regime  RISPOSTA A REGIME: risposta che si ha quando i transitori sono passati e l’uscita si e’ assestata FUNZIONI D’INGRESSO:  Gradino: FUNZIONE NULLA PER T<0 E 1 per T >= 0  GRADINO RITARDATO  IMPULSO  IMPULSO RITARDATO  RAMPA  SINUSOIDE

252


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, TIPI DI RISPOSTE:  SOVRASMORZATA (tipica nelle macchine di lavorazione legno, dove ci sono operazioni particolari come intagli materiale, come nelle macchine utensili; si tratta di una risposta sempre stabile)  CRITICAMENTE SMORZATA (difficile da ottenere: e’ una SOVRASMORZATA OTTIMIZZATA, senza oscillazioni indesiderate)  SOTTOSMORZATA (presenta oscillazioni che possono essere deleterie in taluni sistemi di controllo OSCILLAZIONI COSTANTI OSCILLAZIONI CRESCENTI CRESCITA ESPONENZIALE EQUAZIONE CARATTERISTICA  Poli e zeri di una funzione  Piano delle S e mappa POLO-ZERO (diagramma nel piano complesso che mostra le posizioni dei poli e degli zeri della funzione di trasferimento del sistema)  Posizione poli e risposta transitoria:

Figura 271: risposta transitoria e posizione dei poli dell'equazione caratteristica

253


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, RISPOSTA IN FREQUENZA DI UN SISTEMA  Rappresenta la risposta di un sistema quando viene sottoposto ad un segnale sinusoidale, su una determinata gamma di frequenze  DIAGRAMMA DI BODE  DIAGRAMMA POLARE o DIAGRAMMA DI NYQUIST  DETERMINAZIONE della risposta in frequenza di un sistema: come fare in laboratorio se non si dispone di una funzione di trasferimento FUNZIONI DI TRASFERIMENTO COMUNI  Blocco costante  Blocco integrale  Blocco derivativo TEMPO MORTO: BLOCCO RITARDO DI TRASPORTO  Esempio ritardo di trasporto in un sistema di trasporto fluido, in un laminatoi per metalli USCITA = K * INGRESSO (T – TAU) con TAU ritardo di trasporto STABILITA’:  Concetto di stabilita’: assenza di attrito, presenza di attrito  STABILITA’ e funzione di trasferimento ad anello aperto  Analisi stabilita’ con DIAGRAMMA DI BODE  Margine di fase e margine di guadagno  Reti correttrici CONTROLLORI:  CONTROLLORE ON-OFF  ANALOGICI (P,I,D, PI, PID)  DIGITALI  FUZZY

254


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Dominio del tempo Determinare la funzione di trasferimento del seguente circuito:

Figura 272: circuito

V0(t) = f[Vi(t)] V0(t) = R*i(t) Vi(t) = Vc(t) + Vl(t) + R*i(t)

C*[dVc(t)/dt] = i(t)

e

L*[di(t)/dt] = Vl(t)

Vi(t) = ∫[(1/C)*i(t) dt] + L*[di(t)/dt] + Vo(t) La relazione integro-differenziale risolutiva del circuito in esame è: Vi(t) = ∫{(1/C)*[V0(t)/R] dt} + (L/R)*[dV0(t)/dt] + Vo(t) dVi(t)/dt = [V0(t)/RC] + (L/R)*[d2V0(t)/dt] + dVo(t)/dt L’equazione riportata di seguito è una differenziale lineare non omogenea del secondo ordine relativa al circuito in esame: 1. LC * .V0 .(t) + RC * V0 . (t) + V0(t) = Vi . (t) * RC Essa può essere vista, per linearità, come somma di una soluzione della omogenea e una soluzione della non omogenea. Equazione omogenea. Un’equazione omogenea ha una soluzione del tipo: V0(t) = C1*eλ1t + C2*eλ2t  perché C*eλt è soluzione 1. LC * λ2 * eλt + RC * λ * e λt + e λt = 0 e λt (LC λ2 + RC λ + 1) = 0 λ = [-RC ± √(R2C2 – 4LC)] / 2LC le soluzioni possono essere: λ1 = λ2  2 soluzioni reali coincidenti (λ1 ≠ λ2) E R V (λ1 e λ2) E ₵  Soluzioni complesse coniugate Come risolvere la non omogenea? Considero una Vi(t) = Vm sin ωt

255


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 273: passaggio dal dominio del tempo a quello della frequenza

Trasformata di Laplace. La variabile complessa è s = Ϛ + jω. Il concetto di L-trasformata è il seguente: Y(t)  Y(s) Le condizioni affinchè si possa L-trasformare una funzione y(t) sono:  y(t) = 0 t>0; 

y(t) è continua a tratti.

Esempio di sistema in retroazione.

Figura 274: circuito

Per trovare la funzione di trasferimento si deve fare il rapporto tra l’uscita e l’ingresso: fdt = out/in

Schemi a blocchi Gli schemi a blocchi costituiscono un formalismo per rappresentare graficamente le interazioni tra sistemi dinamici. Gli elementi costitutivi di uno schema a blocchi sono:  Il blocco: il blocco non è altro che un simbolo indicante la presenza di un sistema dinamico, avente la funzione di trasferimento riportata nel simbolo del blocco, e l’ingresso e l’uscita riportati rispettivamente sulla freccia entrante e sulla freccia uscente dal blocco:

256


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 275: funzione

Figura 276: guadagno

Il nodo

Figura 277: derivatore

L’uscita del nodo è data dalla somma algebrica dei segnali che entrano nel nodo, ciascuno preso con il proprio segno (se non è indicato il segno, si assume per convenzione il segno positivo).

Figura 278: nodo

Il punto di diramazione

Tutti i segnali uscenti da un punto di diramazione sono uguali al segnale entrante nel punto.

Figura 279: diramazione

257


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esempi: 1.

Y = mx + c

Figura 280: esempio

2.

Z = 1,2*x – 10*y + 25

Figura 281: esempio

Funzione di trasferimento Una funzione di trasferimento è una funzione di rete che rappresenta matematicamente la relazione tra l'ingresso di un sistema dinamico lineare tempo invariante e la risposta del sistema stesso.

fdt = out/in

Figura 282: funzione di trasferimento

258


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 283: esempio

Esempio A: Y = E * G = (X – HY) * G E = X – HY Y = GX - HGY Fdt = Y/X Y*(1 + HG) = XG

Y/X =fdt = G/(1+GH)

ESERCIZIO: Si vuole ricondurre lo schema a blocchi A a questo schema:

Figura 284: schema

Si tratta di uno schema a blocchi a retroazione unitaria.

fdt = Y/X = (G*) / (1 + G*)

Quindi se considero:

fdt = Y/X = GH/(1+GH)

Figura 285: schema

GH = guadagno ad anello aperto Blocchi in serie. I blocchi in serie si presentano in questa forma:

Figura 286: schema

259


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esempio:

Figura 287: circuito

I blocchi si possono inserire in cascata se il primo blocco non cambia il funzionamento del secondo. Blocchi in parallelo Questi si presentano invece in questa forma:

Figura 288: blocchi

Spostamento di un punto Lo schema a blocchi si presenta in questa forma:

Figura 289: blocchi

C = RG + A

Figura 290: blocchi

C = [R + (A/G)]*G = A + GR

260


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esempi: 1.

Figura 291: esempio

2.

Figura 292: esempio

Gli schemi 1 e 2 sono uguali, ovvero indicano la medesima fdt, in forme diverse. Blocco guadagno costante

Figura 293: circuito

Vout = Vin*[1+(R2/R1)] Blocco guadagno costante invertente

Figura 294. circuito

Vout = -Vin*(R2/R1) R3 = R1//R2  Serve per compensare l’offset

261


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Punto di diramazione

Figura 295: diramazione

Nodo sommatore

Figura 296: nodo

Figura 297: circuito

C(uscita) = -[x*(R4/R1) + y*(R4/R2) + z*(R4/R3)] Ponendo R1 = R2 = R3 = R4 C(uscita) = -(x+y+z) ďƒ mettendo in cascata un invertitore sparisce il segno negativo (-)

262


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Esercizi: 1. Esercizio: risolvere il blocco di figura, implementando il circuito opportuno. 2. Esercizio: risolvere il blocco di figura, implementando il circuito opportuno. 3. Esercizio: risolvere il blocco di figura, implementando il circuito opportuno.

ESERCIZIO 1: Costruire il seguente blocco:

Figura 298: blocco

Soluzione:

Figura 299: circuito

R2 = R6 R7 = 4*R3

263


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ESERCIZIO 2: Costruire il seguente blocco:

Figura 300: blocco

Figura 301: circuito

264


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ESERCIZIO 3: Costruire il seguente blocco:

Figura 302: blocco

R: compresa tra 0V e 2V G1: 2,5 G2: 2 H: 1,25 Vcc = 15V Dimensionare R1 e TR1 in modo da avere 0:2V. Soluzione:

Figura 303: circuito

265


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Trasformata di Laplace In matematica e in particolare nell'analisi funzionale, la trasformata di Laplace è un operatore funzionale lineare che associa ad una funzione ƒ(t) di variabile reale, una funzione F(s) di variabile complessa. La trasformata di Laplace rientra nella categoria delle trasformate integrali. Data una funzione ƒ(t) definita sull'insieme dei numeri reali t ≥ 0, si definisce trasformata di ƒ la funzione F(s):

essendo e il numero di Nepero ed il parametro s un numero complesso:

con σ e ω numeri reali.

Notazioni: F(s) = L[f(t)] f(t) = L-1[F(s)]

Regole di trasformazione: 1. Moltiplicare per una costante L[k*f(t)] = k*F(s)

k può essere anche minore di 1, cioè L[½*f(t)] = ½*F(s)

2. Somma/differenza tra funzioni L[f1(t)] = F1(s)

L[f2(t)] = F2(s)

L[f1 + f2] = F1(s) + F2(s) 3. L[df(t)/dt] = s*F(s) – f(0)

L[d2f(t)/dt] = s2*F(s) – s*f(0) – f|(0) Le cose si semplificano se si assume che le condizioni iniziali siano nulle: L[df(t)/dt] = s*F(s) L[d2f(t)/dt] = s2*F(s)

266


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, L[dnf(t)/dt] = sn*F(s)

Applicazione della trasformata di Laplace sui circuiti elettrici: 1. Esercizio: risolvere utilizzando La Place i circuiti e gli schemi a blocchi opportuni. 2. Esercizio: risolvere utilizzando La Place i circuiti e gli schemi a blocchi opportuni. 3. Esercizio: risolvere utilizzando La Place i circuiti e gli schemi a blocchi opportuni.

ESERCIZIO 1:

Figura 304: trasformata

C = Q/V

i(t) = dQ/dt

i(t) = C*[dV(t)/dt]

L[i(t)] = L[C*(dV(t)/dt)] = C*s*V(s) = I(s)

267

V(s) = (1/sC) * I(s)


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ESERCIZIO 2:

Figura 305: trasformata

Vl(t) = L*[di(t)/dt] V(s) = s*L*I(s)

268


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ESERCIZIO 3:

Figura 306: trasformata

V2(s)/V1(s) = [1/(R + 1/sC + sL)] * R = sCR / (sCR + s 2LC + 1)

Teorema del valore iniziale. Esempio:

Figura 307: circuito

I(s) = E / [s*(sL+R)] Trovare il valore della corrente subito dopo l’applicazione della tensione E.

269


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Teorema del valore finale se esiste

, allora

Nel nostro caso:

Le tabelle spesso non sono sufficienti a risolvere problemi di anti-trasformate.

Scomposizione in fratti semplici F(s) = [C0/(s-P0)] + [C1/(s-P1)] + … Pi: poli del sistema o radici del denominatore Zeri: radici del numeratore

Esempi di anti-trasformate: 1. 2. 3. 4. 5. 6.

1/s = 1 10/s2 = 10x 100/(s2+2) = 100√2 sin√(2)*x 2,5/s = 2,5 s/(s2+25) = cos 5x 100s/(s2+100) = 100 cos 10x

270


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Esercizi: Esercizio: risolvere i seguenti problemi utilizzando il metodo opportuno. Esercizio: risolvere i seguenti problemi utilizzando il metodo opportuno. Esercizio: risolvere i seguenti problemi utilizzando il metodo opportuno.

ESERCIZIO 1: Calcolare l’anti-trasformata usando la scomposizione in fratti semplici: F(s) = (s+3)/[s*(s+1)*(s+2)]

{(C0/s) + [C1/(s+1)] + [C2/(s+2)]

Attraverso la scomposizioni in fratti semplici si possono ricavare C0, C1 e C2 C0 = 3/2 C1 = -2 C2 = ½ f(x) = 3/2 – 2*e-t + ½*e-2t

ESERCIZIO 2: Calcolare l’anti-trasformata: F(s) = (s+3)/[s2*(s+1)] Si ricava C0, C1 e C2: C0 = -2 C1 = 3 C2 = 2 f(x) = -2 + 3x + 2*e-x

271


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ESERCIZIO 3: Applicando la trasformata delle espressioni riportate di seguito, determinare la fdt. Condizioni iniziali nulle (induttanza scarica e capacità scarica). Vin = L*[di(t)/dt] + R*i(t) + (1/C)*∫i(t) dt

Figura 308: circuito

Vin = L*[di(t)/dt] + R*i(t) + (1/C)*∫i(t) dt V(t) = L*s*I(s) + R*I(s) + (1/C)*[I(s)/s] I(s) = (Vin/s)/(sL + R + 1/sC)

272


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Stabilità Un sistema è stabile se, venendo perturbato in un certo istante di tempo, al cessare della perturbazione ritorna in una condizione di funzionamento che si discosta limitatamente da quella di partenza, per tutte le le condizioni di funzionamento. Se al cessare della perturbazione la condizione di funzionamento torna la stessa iniziale, il sistema è asintotico stabile. Che cos’è una perturbazione? Una perturbazione è un seganle di prova, come ad esempio l’impulso unitario o implulso di Dirac:

Nell’impulso di Dirac in particolare abbiamo un tempo pressocchè nullo ed un valore di area, tendente ad infinito, naturalmente è impossibile da creare realmente, ma serve a capire come una perturbazione incide in un sistema. Il sistema che si tuilizza per studiare l’influenza delle perturbazioni è il seguente:

Figura 309: esempio di schema a blocchi in retroazione negativa

Di seguito sono elencati alcuni degli impulsi che normalmente vengono applicati in ingresso ad un sistema, per testarne la stabilità:

1. Impulso a gradino:

Figura 310: rappresentazione di un impulso a gradino unitario

273


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

2. Rampa:

Figura 311: rappresentazione grafica di una rampa

3. Parabola:

Figura 312: rappresentazione grafica di una parabola

Se per t  ∞, succede che y(t)  0, allora il sistema è stabile. Questo avviene se e solo se i poli del sistema, sono a parte reale negativa cosi che all’infinito si spegne l’impulso.

Generica di un sistema: la generica di un sistema, si riferisce all’equazione caratteristica tramite la quale è possibile studiare la funzione di trasferimento di un circuito ad anello aperto e verificare se è stabile oppure no:

274


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Bode Per analizzare la stabilità di un sistema posso prendere in considerazione un qualsiasi tipo di regime per esempio quello sinusoidale. Il criterio di Bode analizza ovvero il guadagno ad anello, in particolare | | e la fase ad esso associata. Per poter fare un’analisi esaustiva si devono prendere in considerazione frequenze da 0 a ∞.

Funzione di trasferimento in forma normale La funzione di trasferimento di un sistema è una funzione frazionaria sicuramente propria, nella quale compaiono a numeratore le uscite e a denominatore gli ingressi. Per studiare con maggiore facilità una funzione di trasferimento è utile riportarla in forma canonica o forma di Bode. Questa particolare forma è costituita da una serie fattorizzata di monomi, binomi e trinomi espressi nella variabile complessa di Laplace. Essa assume la forma:

Il significato dei vari membri di questa funzione sono: μ: Valore costante che esprime il guadagno della funzione di trasferimento.

sg: Zeri o poli nell'origine, a seconda del valore assunto da g. : Zero reale della funzione di trasferimento. : Polo reale della funzione di trasferimento.

: Coppia di zeri complessi coniugati.

: Coppia di poli complessi coniugati. Effettuando la sostituzione s = jω si passa alla forma canonica, che permette di studiare più facilmente l'andamento della funzione. Su scala semilogaritmica (misurando l'ampiezza in dB), infatti, tutte le produttorie si trasformano in sommatorie ed è possibile studiare separatamente ciascun membro della funzione, che porta dei contributi differenti sia sul diagramma del modulo, sia sul diagramma della fase. Il modulo di H(s), infatti, sarà la somma algebrica dei moduli di tutti i fattori così come la fase sarà la somma algebrica delle fasi di tutti i fattori.

275


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, La funzione di trasferimento dopo aver effettuato la sostituzione appare nella forma:

Sorgeva però un problema, come rappresentare questo ragionamento su di un diagramma?

Diagrammi logaritmici/semilogaritmici: Per facilitare lo studio su un elevato spettro di pulsazioni sia il diagramma del modulo sia il diagramma della fase vengono rappresentati su carta logaritmica o semilogaritmica divisa in decadi. La carta semilogaritmica è caratterizzata dal fatto che la distanza che separa due valori ωa e ωb è proporzionale alla differenza tra i logaritmi (solitamente in base 10) di ωa e ωb. Fatte queste premesse, una possibile rappresentazione dei valori della pulsazione sulla carta semilogaritmica potrebbe essere

Figura 313: esempio di scala logaritmica (http://it.wikipedia.org/wiki/Diagramma_di_Bode)

I vantaggi nell'uso di diagrammi logaritmici sono sostanzialmente la possibilità di rappresentare col dovuto dettaglio grandezze che variano in campi notevolmente estesi, la possibilità di semplificare i calcoli di moltiplicazione che nel caso di logaritmi si riconducono semplicemente a somme. Diagramma del modulo Nel diagramma del modulo si rappresenta, sulla carta semilogaritmica, la pulsazione sull'asse delle ascisse, mentre su quello delle ordinate il modulo espresso in decibel, cioè il modulo espresso secondo la formula

Diagramma della fase Nel diagramma della fase si rappresentano le ampiezze assunte dall'argomento di F per diversi valori di ω. Anche in questo caso è utile servirsi della carta semilogaritmica indicando sull'asse delle ascisse le pulsazioni e sull'asse delle ordinate le ampiezze, solitamente espresse in gradi sessadecimali (DEG). Diagrammi asintotici Per tracciare il diagramma reale di Bode sia del modulo che della fase sono richiesti una quantità particolarmente elevata di calcoli, dovendo valutare il modulo e la fase della funzione F per un ventaglio di valori della pulsazione molto ampio, e questo, in assenza di un calcolatore elettronico che esegue parecchi calcoli in breve tempo, può risultare molto difficile o comunque dispendioso in termini di tempo. Per ovviare a questo problema è prassi comune quella di disegnare i diagrammi di Bode a partire dai diagrammi asintotici e approssimando il comportamento dei grafici reali da questi ultimi. Es:  MODULO

|

(propietà dei numeri complessi, con il modulo si annulla

ί).

FASE fisso ω2 = 10ω1 (una decade sopra)

276


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ∆ guadagno = 20log(1/ω2) – 20log(1/ω1) = -20logω2 + logω1 = -20

277


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, di seguito è riportato il diagramma di bode del sistema sopra descritto:

Figura 314: diagramma modulo di 1/s, come possiamo la retta passa per l’origine e cala di -20dB/dec

Figura 315: diagramma fase di 1/s, come possiamo vedere è una retta che rimane a -90°

278


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 316: simulazione con SWCAD III

279


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Di seguito è riportato un altro esempio di studio di stabilità con Bode:

Analisi asintotica modulo:

Considerando che sull’asse x rappresento logω ottengo, all’infinito: in

ovvero per ω=1/τ.

Analisi asintotica fase:

Per ω = 1/10τ la fase è presso che nulla Per ω = 10*1/τ la fase è circa Di seguito sono riportati i diagrammi di modulo e fase:

280

funzione che si annulla


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 317: diagramma di modulo e fase

281


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 318: simulazione con SWCAD III

282


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Es:

ďƒ¨

Figura 319: grafico della fase e del modulo, in questo caso si scende di -40dB/dec

283


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 320: simulazione con SWCAD III

284


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Criterio di stabilità: si definisce pulsazione di annullamento (o di attraversamento) il valore tale che |G (ίω)|=1, che significa . Per lo studio della stabilità, come abbiamo visto in precedenza, dobbiamo tenere conto del guadagno ad anello aperto. Ge(ίω), che è la funzione di trasferimento del sistema ad anello aperto, noto che la funzione caratteristica vale : Lo studio della stabilità viene fatto considerando: |G(ίω)|=1 Φa = fase corrispondente ad ωa:   

Se Φa < π il sistema è stabile; Se Φa = π il sistema è al limite dell’instabilità; Se Φa > π il sistema è instabile.

Es:

Figura 321: diagramma di bode della f.d.t. sopra indicata, è possibile osservare che il sistema è al limite dell'instabilità questo grafico è tipico di un operazionale.

In un sistema a 2 poli la fase vale -180°, in quanto se ad un polo corrisponde -90°, le fasi sommandosi arrivano a -180°.

285


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 322: simulazione in SWCAD III

286


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Margine di fase & guadagno: Il margine di fase serve a capire quanto spazio ho prima che la fase arrivi a 180°, e si esprime come mg=(π- Φa). Tanto è più piccolo questo limite, tanto più il sistema si avvicinerà all’instabilità. Il margine di guadagno invece, si definisce come il rapporto fra il segmento unitario rappresentato dal punto -1+ί0 e il modulo del vettore in corrispondenza della fase 180°. Se il margine è sopra l’asse x, il sistema potrà con più facilità essere instabile, al contrario sarà più facilmente stabile. Ne deriva che se aumento il guadagno statico, il sistema diventa instabile, però il sistema diventa a spettro più ampio, in quanto ho una banda maggiore. La velocità quindi, è in contrapposizione con la stabilità. Tanto più è alto il guadagno statico, tanto più l’erroe è minore e la banda aumenta. Es: (1+2*s)/((1+0.5*s)*(1+0.1*s)*(1+0.2*s))

Figura 323: esempio di un sistema instabile, in quanto il margine cade sotto 180°

287


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 324: simulazione in SWCAD III

288


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Reti correttrici: nei sistemi quando ci sono dei problemi di stabilità si deve correggere il sistema, per fare questo si utilizzano dei dispositivi, che devono essere implementati al sistema:  

Reti correttrici: (anticipatrice, ritardatrice, ritardo-anticipo o a sella) PID.

Ritardatrice:

Figura 325: esempio di rete ritardatrice con inclusi dei valori reali di condensatori e resistenze.

In continua il condensatore è aperto e la tensione di ingresso è uguale a quella di uscita.

In alternata con ω = ∞ il condensatore è chiuso 

289

cioè un partitore.


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 326: esempio di rete ritardatrice

Figura 327: esempio di implementazione di una rete correttrice a monte di un sistema

Si mette a monte perchĂŠ a valle ho dei segnali amplificati e quindi avrei bisogno di una rete piĂš performante. Esempio applicativo di una rete ritardatrice:

avendo la seguente f.d.t:

290


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 328: diagramma di bode della f.d.t sopra indicata

Figura 329: simulazione in SWCAD III

291


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Applicando la rete ritardatrice (1+0.5*s)/(1+5*s) ottengo:

Figura 330: diagramma di bode relativo alla f.d.t. precedente con l'aggiunta di una rete correttrice ritardatrice

Figura 331: simulazione in SWCAD III

292


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Anticipatrice:

Figura 332: schema circuitale di una rete anticipatrice

 

In alternata con ω = 0 il condensatore è aperto  cioè un partitore. In alternata con ω = ∞ il condensatore è chiuso  per cui la tensione di uscita è uguale a quella d’ingresso.

293


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 333: diagramma di bode di una rete anticipatrice

294


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esempio applicativo di una rete anticipatrice:

avendo la seguente f.d.t:

Figura 334: diagramma di Bode della funzione sopra descritta

Figura 335: simulazione in SWCAD III

295


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Inserendo una rete anticipatrice (1+0.1*s)/(1+0.01*s) ottengo:

Figura 336: diagramma di Bode inserendo nella funzione precedentemente analizzata una rete anticipatrice

Figura 337: simulazione in SWCAD III

296


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Rete ritardo - anticipatrice (o rete a sella): spesso accade che per rendere sufficientemente stabile un sistema occorre seguire ambedue le operazioni precedentemente descritte, cioè aumento della costante di tempo maggiore della funzione di trasferimento G(s)H(s) del sistema e diminuzione di una delle costanti di tempo minori. In tal caso è opportuno disporre in cascata ad un amplificatore della linea in andata una rete a sella o lag-lead avente la seguente f.d.t:

Figura 338: schema circuitale di una rete a sella

 

In alternata con ω = 0 la tensione di uscita è uguale a quella d’ingresso. In alternata con ω = ∞ la tensione di uscita è uguale a quella d’ingresso.

Figura 339: diagramma di bode di una rete a sella

297


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esempio applicativo di una rete a sella:

avendo la seguente f.d.t:

Figura 340: diagramma della f.d.t sopra descritto

Figura 341: simulazione con SWCAD III

298


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Applicando una rete a sella (1+0.5*s)/(1+5*s) ottengo:

Figura 342: diagramma di Bode con implementazione della rete a sella

Figura 343: simulazione con SWCAD III

Schema riassuntivo sui diagrammi BODE: :  

Se g>0  POLO ALL’ORIGINE (modulo: scendo di 20*g dB/dec e fase: -g*π/2 costante). Se g<0  ZERO ALL’ORIGINE (modulo: salgo di 20*g dB/dec e fase: g* π/2 costante).

Zero:  modulo: salgo di 20dB/dec; fase: parto una dec prima a 0 e arrivo una dec dopo a π/2. Polo reale:

 modulo: scendo di 20dB/dec; fase: parto una dec prima a 0 e arrivo una dec dopo a –π/2.

299


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Sistemi del II ordine L'equazione tipica di tali sistemi è:

= smorzamento = pulsazione naturale Calcolo degli asintoti Guadagno statico:

nel caso che

per semplicità si studia una rete con K = 1.

STUDIO ASINTOTI

Esempio: è una retta con pendenza di 40 dB/dec

Intersezione asintoti con asse x: è la pulsazione di rottura

Figura 344: diverso smorzamento

300


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, La simulazione è stata fatta anche con SWCAD. è possibile così notare la differenza tra valori diversi di smorzamento: Nel primo esempio lo smorzamento è pari a 2.

Figura 345: circuito

Figura 346. risposta in uscita

Nel secondo esempio lo smorzamento è pari a 0.1.

Figura 347: circuito

301


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 348: risposta in uscita

Un diverso tipo di smorzamento determina risposte in uscita anche molto diverse tra loro. Tutto ciò è evidente sopra.

Figura 349: valore di picco al tempo tp

FUNZIONI DI INGRESSO Come è già riportato in questo libro la funzione d'ingresso può essere di diversi tipi, tra cui una funzione a gradino oppure una funzione a gradino ritardato. Invece la risposta in uscita può essere di tre tipi diversi: SOTTOSMORZATA

Figura 350: risposta sottosmorzata

302


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

CRITICAMENTE SMORZATA

Figura 351: risposta criticamente smorzata

SOVRASMORZATA

Figura 352: risposta sovrasmorzata

303


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ESERCIZIO:

Figura 353: schema a blocchi

1. valore finale 2. f.d.t. 3. risposta a gradino

Valore finale:

304


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Controllo Proporzionale

Figura 354: blocco proporzionale

Figura 355: relazione tra ingresso e uscita

305


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 356: schema blocco proporzionale

Risposta del blocco proporzionale:

Figura 357: circuito

Figura 358: modulo

306


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 359: fase

Esempio:

Figura 360: schema a blocchi

Se R(s) è = 1/s cosa fa Y(s)?

Figura 361: rappresentazione dell'errore

307


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 362: rappresentazione dell'errore

L'errore, sia in velocitĂ che in accelerazione diverge a + infinito (manca di stabilitĂ ).

Figura 363: rappresentazione dell'errore

308


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Integratore

Figura 364: blocco integrale

e(t) è l'errore. Quindi:

La pendenza della retta nel diagramma di bode dipenderĂ dal valore di K.

Figura 365: blocco integratore

Figura 366: modulo

309


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 367: fase

Dato che la funzione di trasferimento dipende da K:

Figura 368: Ki = 5

Figura 369: Ki = 10

Figura 370: Ki = 20

310


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Derivatore

Figura 371: blocco derivatore

ESERCIZIO 1: ricavare la funzione di trasferimento del seguente derivatore:

Figura 372: schema elettrico

Figura 373: risposta in uscita

311


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Supponendo invece, che R1 sia un trimmer:

Figura 374: schema elettrico

Per l'impostazione e la regolazione del trimmer in SWCAD si impostano tutti i valori possibili e desiderati del trimmer con la seguente funzione:

Figura 375: parametri assegnati al trimmer

312


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Ecco la risposta in uscita:

Figura 376: ecco come varia la risposta in uscita al variare di R1 e quindi del valore di K

ESERCIZIO 2: ricavare la funzione di trasferimento del seguente circuito

Figura 377: schema elettrico

313


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Ecco la risposta in uscita:

Figura 378: uscita

ESERCIZIO 3:

Figura 379: schema a blocchi

Ecco la simulazione in SWCAD:

Figura 380: schema in SWCAD

Figura 381: risposta in uscita

314


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Esercizi Bode: Esercizio 1: 20/((7+5*s)*(8+7*s)). Esercizio 2: risolvere il circuito assegnato e disegnare il relativo diagramma di Bode. Esercizio 3: studiare la f.d.t. del sistema e rappresentarla su di un diagramma di Bode. Esercizio 4: studiare la f.d.t. del sistema e rappresentarla su di un diagramma di Bode. Esercizio 5: un gradino di 2 V è applicato ad un sistema del I ordine Esercizio 6: determinare la risposta nel tempo di un sistema al quale venga applicato un impulso di DIRAC e calcolare il valore a regime Esercizio 7: calcolare l'errore, a transitorio esaurito, del sistema

315


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ESERCIZIO_1:

Figura 382: diagramma di modulo e fase della f.d.t sopra indicata

316


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ESERCIZIO_2: dato il seguente circuito, ricavare la funzione di trasferimento e rappresentare sul grafico di Bode la relativa f.d.t ricavata con La Place.

Figura 383: circuito da studiare

Ponendo: R1=1KΩ R2=100KΩ C1=1nF C2=10nF

Diagramma di bode corrispondente:

Figura 384: diagramma di Bode corrispondente alla f.d.t presa in esame

317


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ESERCIZIO_3: ricavare la f.d.t del sistema:

Figura 385: schema a blocchi del sistema

Svolgo i logaritmi per tracciare le spezzate nel diagramma di Bode:

Rappresentazione nei diagrammi di Bode:

Figura 386: diagramma di Bode relativo alla funzione di trasferimento studiata

318


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

ESERCIZIO_4: dal seguente schema a blocchi, con la logica utilizzata nell’esercizio precedente, ricavare la funzione di trasferimento:

Figura 387: schema a blocchi

Figura 388: diagramma di bode del sistema

I margini sono in prossimità del punto in cui il modulo del guadagno passo per l’asse x, in quel punto la fase passa da –π a +π, quindi il sistema è al limite della sua stabilità fino a ≈ ω=2. Come si comporta in questi punti?  

ω=1rad/sec  la fase è circa –π/2 e il modulo è maggiore di 0. ω=10rad/sec  la fase è π/4 e il modulo è negativo circa -40dB

319


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, 

ω=100rad/sec  la fase è π/4 e il modulo è negativo circa -100dB

320


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ESERCIZIO 5: un gradino di 2 V è applicato ad un sistema del I ordine

determinare la risposta nel tempo

il tempo di salita del segnale d'uscita

il tempo per raggiungere il 99,3% del valore finale

il valore a regime del segnale d'uscita

Antitrasformando: Sapendo che il polo |p|=600 il tempo di salita è espresso come:

mentre il tempo necessario per raggiungere il 99,3% è:

Il valore a regime, con il valore espresso dal teorema del valore finale è:

ESERCIZIO 6: determinare la risposta nel tempo di un sistema al quale venga applicato un impulso di DIRAC e calcolare il valore a regime

Vin(s) è pari a 1 poichè la trasformata di un impulso di dirac è pari a 1. Quindi i poli sono -10 e -1

Il valore a regime:

321


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ESERCIZIO 7: calcolare l'errore, a transitorio esaurito, del sistema

Figura 389: blocco

quando in ingresso è applicata una rampa R(t)=100t. Per eliminare l'errore si inserisce un blocco, fra R(s) e il nodo sommatore, avente fdt (1+sτ), calcolare quindi il τ necessario per annullare l'errore:

Figura 390: schema a blocchi

Teorema valore finale:

Tenendo conto del blocco per eliminare l'errore:

L'errore si annulla se 200-250000τ = 0 per cui

322


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

VERIFICHE        

20101130 - COMPITO SISTEMI PWM+ADC+RS232 20101204 - TERZA PROVA 5AET2011 20110117 - PROVA LABORATORIO 5AET2011 20110117 - TERZA PROVA 5AET2011 20110208 - TERZA PROVA 5AET2011 - TERMOCOPPIE - STRAIN GAUGE – RTD 20110328 - TERZA PROVA TRASDUTTORI & LINGUAGGIO C 20110420 - TERZA PROVA SISTEMI LINEARI 20110511 - TERZA PROVA SISTEMI LINEARI & BODE

   

20081015 20081115 20090109 20090211

COMPITO COMPITO COMPITO COMPITO

SISTEMI 5AET2009 SISTEMI 5AET2009 5AET2009 INTERRUPT+TIMER INTERFACCIAMENTO RTD+SERIALE

323


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, 20101130

ISTITUTO TECNICO INDUSTRIALE " B. PASCAL " P.le

C. Macrelli n. 100 - 47023 CESENA - Forlì -

CANDIDATO__________________________DATA 2010-2011 DISCIPLINA

___/___/_____ CLASSE 5 Sez.A a.s.

SISTEMI

Un sistema a microcontrollore con PIC16F877 dispone di DUE pulsanti e due RELE’, con in aggiunta di una connessione seriale e due potenziometri per regolare dei timer interni al sistema. PULSANTI:  P1 serve per far partire un tempo che viene impostato dall’operatore con un potenziometro sul canale AN0, i cui valori sono compresi fra 0 e 5V . Questo timer non e’ “retriggerabile”  P2: serve per far partire un tempo che viene impostato con un potenziometro posto sul canale AN1. Anche qui’ i valori sono compresi fra 0 e 5V In entrambi i timer i tempi che possono essere impostati risultano essere multipli di 100mS ovvero complessivamente i tempi impostabili risultano essere compresi fra 0 e 25.5sec I pulsanti presentano una meccanica con rimbalzi che possono essere quantificati in 30mS. Il sistema ha due uscite rele’ connesse ai pin RB0 (uscita associata a P1) e RB1 (uscita associata a P2). Le pressioni sui pulsanti vengono accettate se e solo se da seriale il sistema ha ricevuto un carattere di start ovvero la sequenza 0x55 seguito da 0xAA. I pulsanti possono poi essere disattivati quando via seriale arrivano i caratteri 0xAA seguito da 0x55. La comunicazione via seriale e’ di tipo SIMPLEX e la scheda non risponde in alcun modo al PC HOST. Cosa viene richiesto al candidato: 1. realizzare lo schema HW con un PIC16F877 considerando la possibilita’ di programmare in-circuit il micro (5/10) 2. realizzare IL FLOWCHART della routine di interrupt del timer NON RETRIGGERABILE associato al pulsante P1 (4/10) 3. gestire un sistema di antirimbalzo per entrambi i pulsanti in modo che possano essere presi in considerazione i relativi segnali filtrati (3/10) 4. realizzare il flow chart e quindi il programma completo in C , che effettui la gestione dell’attivazione seriale delle attivita’ dei pulsanti e quindi dei pulsanti stessi connessi al sistema, facendo si’ che eventuali rimbalzi non vengano presi in considerazione (6/10) (non traggano in inganno i punteggi espressi fra parentesi in quanto in un’ora di tempo risulterebbe assai improbo poter rispondere a tutti i quesiti correttamente; si lascia quindi la possibilita’ di coprire anche solo alcune parti del tema senza pero’ rinunciare ad una valutazione potenzialmente sufficiente)

324


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, SVOLGIMENTO 1. realizzazione dello schema HW:

2. realizzazione flow chart:

// la parte relativa al campionamento e alla realizzazione della media è inserita nel main

325


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, 20101204

ISTITUTO TECNICO INDUSTRIALE " B. PASCAL " P.le

C. Macrelli n. 100 - 47023 CESENA - Forlì -

CANDIDATO__________________________DATA

___/___/_____ CLASSE 5 Sez.A a.s. 2010-2011 DISCIPLINA SISTEMI 1) Descrivere dettagliatamente il funzionamento di questo blocco interno al PIC16F877 Il PWM nel PIC16F877 è associato al TIMER2 e quindi al valore di PR2. Con il valore di PR2 regolo il periodo dell’onda e quindi la frequenza di uscita del PWM. Impostando invece il valore di CCPR1L regolo il valore del duty cycle. CCPR1H è il prescaler associato al registro CCP1CON. L’uscita dell’onda modulata in PWM entra in un latch set-reset. Il pin di uscita dell’onda modulata è il pin RC1 o RC2.

2) Trasmissioni di tipo seriale: RS232. Descrivere nel dettaglio come avviene la comunicazione , la natura del frame, il livello fisico dei segnali RS232 è un protocollo di comunicazione asincrono. Può essere half duplex (trasmetto e poi ricevo) o full duplex (trasmetto e ricevo contemporaneamente). I livelli fisici del segnale seriale sono ±12V (±11,5V). Il connettore RS232 è DB9 a 9 pin. Normalmente la linea seriale è “idle” (a riposo). Il sistema in ricezione è sensibile al fronte di discesa falling-edge. Il primo fronte di discesa è lo start bit. Per riconoscere un bit da un altro con l’utilizzo di un PIC16F877 devo scegliere se andare a 64x o 16x. Andando a 16x significa andare più veloce e ogni bit è “composto” da 16 colpi di clock. In una trasmissione seriale i bit sono 9 complessivi. Il nono bit può essere utilizzato come bit di parità o come bit dati. Il bit di parità o parity bit mi consente di effettuare un piccolo check degli errori. La trasmissione termina con uno stop bit. Frame seriale:

326


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Per traslare i livelli della seriale da utilizzare con logiche a tensioni più basse come un PIC o una porta TTL è necessario introdurre un transceiver tra l’uscita della seriale e l’integrato da mettere in comunicazione. Un transceiver è un traslatore di livello ovvero in questo caso mi permette di ottenere livelli che vanno da 0 a 5 V invece che da ±12V. Nella seriale l’1 logico è -12V mentre lo 0 è +12V. Il transceiver in questione è composto da un transistor BC107. Il circuito prevede l’uscita della seriale nella base del transistor e sul collettore la 5 V.

2) Definire le tre tipologie possibili della funzione di trasferimento di un convertitore analogico digitale a 3 bit (considerare funzione di trasferimento normalizzata) Conversione A/D 1:

Conversione A/D 2:

327


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Conversione A/D 3:

328


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, 20110117 DATA _______ CLASSE 5AET2011 ALLIEVO_____________________________________ PROVA LABORATORIO SISTEMI Si deve realizzare un sistema di comunicazione fra una scheda target, realizzata con PIC16F877, ed un HOST PC. L’obiettivo e’ quello di controllare, tramite PC, una elettrovalvoa (simulata in questo caso su PICBOARD con un LED) che viene accesa o spenta mediante una trasmissione seriale. Il LED risulta essere connesso alla porta RB4 del micro mentre la trasmissione seriale deve essere di tipo SIMPLEX da PC verso TARGET. Il programma PC deve essere realizzato in LABVIEW e il front end si deve presentare con un selettore di porta di comunicazione seriale e con un LED da usare come CONTROLLO e non come indicatore. Agendo sul led il led stesso cambia colore (VERDE: ON; ROSSO = OFF) e tale informazione viene inviata al target che agisce di conseguenza sul led in RB4. 2° parte: realizzare, lasciando montata la parte precedentemente svolta, una comunicazione bidirezionale tale che la scheda target restituisca al PC l’informazione associata allo stato dell’ingresso RA0. Per visualizzare questo stato scegliere un indicatore a piacere ed associare due colori diversi per distinguere i due casi. La velocita’ di trasmissione seriale deve essere di 2400 baud lavorando a 4MHz di clock sulla scheda target Punteggi: 1. flowchart PIC : 2 punti; realizzazione in C: 2 punti; 2. programma PC: 1 punto 3. programma seconda parte: 3 punti aggiuntivi massimi da attribuirsi a seconda della soluzione proposta

329


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, 20110117 DATA _______ CLASSE 5AET2011 ALLIEVO_____________________________________ TERZA PROVA SISTEMI 1) Definire la struttura generica di un sistema di controllo dando una descrizione per ciascun blocco ivi riportato ____________________________________________________________________________________ ________________________________________________________________________________________ ________________________________________________________________________________________ ________________________________________________________________________________________ ________________________________________________________________________________________ ________________________________________________________________________________________ ________________________________________________________________________________________ ________________________________________________________________________________________ 2) TERMOCOPPIE: in cosa consiste e come si interviene per risolvere il problema del giunto freddo ________________________________________________________________________________________ ________________________________________________________________________________________ ________________________________________________________________________________________ ________________________________________________________________________________________ ________________________________________________________________________________________ ________________________________________________________________________________________ ________________________________________________________________________________________ ________________________________________________________________________________________ ________________________________________________________________________________________ 3) Conversione A/D: definire le tre tipologie di funzioni di trasferimento considerando, a titolo di esempio, un sistema convertitore a 3 bit di risoluzione e 5V di fondo scala

330


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, 20110208

ISTITUTO TECNICO INDUSTRIALE " B. PASCAL " P.le

C. Macrelli n. 100 - 47023 CESENA - Forlì –

TERZA PROVA CANDIDATO_______________________DATA____/____/_____CLASSE DISCIPLINA

5A a.s. 2010/2011

SISTEMI

1) Come si procede per interfacciare dispositivi RTD con questa caratteristica R(T) = 1000 * (1 +0,003567 * T) considerando che la temperatura da misurare e’ compresa fra -100°C e +500°C. Progettare un circuito di condizionamento che consenta di interfacciarsi ad un convertitore AD che lavori fra 0V e 2V. R(T) = 1000*(1+0,003567*T) T= -100÷500 °C

R(-100) = 643,3 ohm R(500) = 2783,5 ohm Hp: utilizzo un generatore da 1mA. Considero di utilizzare un rail to rail (single supply)

331


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Siccome devo avere in uscita da 0÷2V, dovrò portare la tensione da 4 a 2 volt con un partitore, non prima di aver svolto la parte differenziale per eliminare l’offset. Il circuito però può essere modificato in modo da renderlo più efficiente e corretto impostando l’intervallo da 0÷3V:

In questo modo il guadagno dovrà essere di 1,4. Una volta eliminata la parte di offset, dovremo realizzare un blocco differenziale di guadagno 2/3:

Ne deriva il seguente circuito:

332


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

333


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, 2) Modificare il seguente circuito, calcolando R1,R3

per poter misurare temperature comprese fra -200°C e +850°C con termocoppie K. L’alimentazione dell’operazionale e’ +/- 15V. Il segnale in uscita deve essere compreso fra 0 e 5V. Si ricorda che una termocoppia K presenta 40,6 uV/°C.

Vin = a*(Th-Tc) = A*Th  Vin(-200°) = -8,12mV  Vin(850°) = 34,51mV V0 = Vin (1+R3/R1) Una volta eseguiti i calcoli per ricavare le tensioni alle differenti temperature, dobbiamo considerare il range ti tensioni necessarie in uscita dal circuito, da 0÷5V.

334


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Il circuito prevede che siano implementati dei blocchi per il guadagno e per l’eliminazione dell’offset, così da rendere possibile la realizzazione dell’intervallo 0÷5V.

G= 5/(34,51+8,12)*10-3 = 5000/42,63 = 117,28

In sintesi il circuito che otteniamo è il seguente:

335


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

La soluzione con il sommatore però non è corretta, dobbiamo utilizzare un soluzione differente che tenga conto del fatto che il segnale deve essere amplificato per apprezzarlo più chiaramente. Per far questo dobbiamo dimezzare il guadagno di partenza per ottenere in uscita l’intervallo desiderato.

336


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, 3) STRAIN GAUGE: definire cosa si intende per STRESS, STRAIN, cos’e’ l’equazione di Poisson e come si interfaccia un sistema che deve rilevare una deformazione in una unica direzione ma che presenta la necessita’ di una compensazione in temperatura _______________________________________________________________________________________ _______________________________________________________________________________________ _______________________________________________________________________________________ _______________________________________________________________________________________ _______________________________________________________________________________________ _______________________________________________________________________________________ _______________________________________________________________________________________ _______________________________________________________________________________________ _______________________________________________________________________________________ _______________________________________________________________________________________ _______________________________________________________________________________________ _______________________________________________________________________________________ _______________________________________________________________________________________ _______________________________________________________________________________________ _______________________________________________________________________________________ _______________________________________________________________________________________ _______________________________________________________________________________________

337


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, 20110328

ISTITUTO TECNICO INDUSTRIALE " B. PASCAL " P.le C. Macrelli n. 100 - 47023 CESENA - Forlì CANDIDATO_________________________________________CLASSE 5 Sez.A a.s. 2010/2011 DATA __/__/_____ DISCIPLINA SISTEMI 1) definire , in C, le parti di programma per inizializzare e quindi utilizzare il convertitore analogico digitale presente nel microcontrollore. Il canale da convertire e’ il canale AN0.

2) Come funzionano i sensori a effetto HALL

_____________________________________________________________________________________ ________________________________________________________________________________________ ________________________________________________________________________________________

338


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, 3) analizzare il seguente programma in C e dare indicazioni precise su come funziona e a cosa serve _______________________________________________ #include <htc.h> unsigned char TRISBimage; static void interrupt isrCODE(void){

_______________________________________________ _______________________________________________ _______________________________________________

if (T0IF){ TMR0 = 155; if(RB4){RB4 = 0;}

_______________________________________________

else{RB4 = 1; }

_______________________________________________

T0IF = 0;

_______________________________________________

} } void main(void){ TRISBimage = 0x00; TRISB = TRISBimage; TMR0 = 155;

_______________________________________________ _______________________________________________ _______________________________________________ _______________________________________________

OPTION = 0b10000111;

_______________________________________________

INTCON = 0b11100000;

_______________________________________________

while(1){ asm("nop");

_______________________________________________

} }

4) Definire il significato delle curve di PULL-OUT e di PULL-IN relativamente ad un motore passo passo ________________________________________________________________________________________ ________________________________________________________________________________________ ________________________________________________________________________________________ ________________________________________________________________________________________ ________________________________________________________________________________________ ________________________________________________________________________________________ ________________________________________________________________________________________ ________________________________________________________________________________________ 5) Come si procede per il condizionamento di un sensore di umidita’ relativa di tipo capacitivo ________________________________________________________________________________________ ________________________________________________________________________________________ ________________________________________________________________________________________ ________________________________________________________________________________________ ________________________________________________________________________________________ ________________________________________________________________________________________ 6) La dinamo tachimetrica e’ un trasduttore di velocita’: descrivere il funzionamento e il condizionamento

339


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, 20110420

ISTITUTO TECNICO INDUSTRIALE " B. PASCAL " P.le C. Macrelli n. 100 - 47023 CESENA - Forlì TERZA PROVA CANDIDATO____________________________________________CLASSE 5 Sez.A AS. 2010/2011 data________ DISCIPLINA SISTEMI 1) Dato un sistema in retroazione generico (G(s) e H(s)) , ricavare la funzione di trasferimento quindi trasformare il tutto in un sistema a retroazione unitaria

Figura 391: schema a blocchi

Y(s) = E(s) * G(s)

E(s) = R(s) - H(s) * Y(s)

Y(s) = (R(s) - H(s) * Y(s)) * G(s)

Y(s) + Y(s) * H(s) * G(s) = G * R(s) ==>Y(s)/R(s) = G(s) / (1 + G(s) * H(s))

Figura 392: schema a blocchi

Y(s) / R*(s) = 1 / (1 + G(s) * H(s)) ==> R*(s) = G(s) * R(s) 2) Determinare il valore a regime di una funzione f(s) = 40 / (S + 100) quindi antitrasformare per ottenere l’andamento nel tempo

F(s) = 40 / (s + 100)

340


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

3) Determinare la risposta al gradino unitario di un sistema con retroazione unitaria la cui funzione di trasferimento in catena diretta presenta la seguente espressione: G(s) = 10 6 / ( s * (s + 1000)) . In particolare: 3.1: determinare il valore a regime dell’uscita considerando che si applica un gradino di ampiezza 5V

Figura 393: schema a blocchi

Nel caso di gradino d'ampiezza 5V il risultato sarà 5 4) Dato un sistema in retroazione dove il blocco in catena diretta e’ ottenuto come cascata di due blocchi K / (1 + sT) e K1 , calcolare l’errore a transitorio esaurito in presenza di un segnale gradino unitario applicato all’ingresso X del sistema in retroazione, nei due casi: sistema in catena aperta e sistema in retroazione unitaria (si ricorda che E(s) = X(s) – Y(s)*H(s))

341


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Figura 394: schema a blocchi

In catena aperta E(s) = R(s) ed in retroazione unitaria E(s) = R(s) - Y(s) con R(s) = 1/s (gradino unitario)

342


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, 1° VERIFICA

ISTITUTO TECNICO INDUSTRIALE " B. PASCAL "

P.le C. Macrelli n. 100 - 47023 CESENA - Forlì CANDIDATO__________________________DATA__/__/_____CLASSE 5 Sez.A a.s. 2008/15/10 DISCIPLINA SISTEMI Si deve realizzare una scheda a microcontrollore PIC16F877 con le seguenti caratteristiche: 1. programmabilita' in-circuit 2. pilotare 8 led ROSSI le cui caratteristiche sono Vf=1.6V, If= 20mA; I led devono essere numerati con LD1,...,LD8 3. acquisire 8 pulsanti: P1, P2,...,P8 4. operare con oscillatore al quarzo (non integrato) da 4MHz Il software richiesto deve 1. leggere i pulsanti (non necessario antirimbalzo a meno che l'allievo non voglia implementarlo da solo) 2. gestire i led in questo modo 2.1: tenendo premuto P1 si accende LD1 mentre rilasciando P1 il led LD1 si spegne 2.2: tenendo premuto P2 il led LD2 lampeggia con Ton = Toff = 10mS; 2.3: premendo P3..8 i led relativi (LD3..LD8) si spengono. Rilasciando tali pulsanti i led si accendono Ovviamente ognuno di questi pulsanti viene associato al led con lo stesso numero identificativo Realizzare il flow chart del programma e sviluppare il codice in assembler . E' consentito l'utilizzo del manuale del microcontrollore dove non siano state apportate modifiche / appunti che possano inficiare la valutazione stessa dell'allievo.

343


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, 2° VERIFICA

ISTITUTO TECNICO INDUSTRIALE " B. PASCAL "

P.le C. Macrelli n. 100 - 47023 CESENA - Forlì CANDIDATO__________________________DATA__/__/_____CLASSE 5 Sez.A a.s. 2008/___/___ DISCIPLINA SISTEMI Si dispone di una scheda con microcontrollore MICROCHIP PIC16F877 dove sulla porta RA0 risulta collegato un rele' che attiva un motore elettrico che aziona un nastro trasportatore Ad ogni passaggio di un pacco sul nastro una fotocellula genera un impulso della durata di 100mS (0-->1->0) . Tale impulso, nell'hardware, viene inviato direttamente ad un ingresso contatore del microcontrollore. La scheda dispone anche di due pulsanti: START e STOP connessi alla porta RB0, RB1 rispettivamente. C'e' anche una SPIA che lampeggia con TON = 500mS e TOFF = 500mS connessa sull'uscita RA1, solamente nel caso che il nastro sia in movimento. Progettare un software per consentire di azionare il nastro quando viene premuto start e arrestarlo quando viene premuto stop (il pulsante di STOP ha priorità rispetto al pulsante di start per cui nel caso di contemporaneità dei pulsanti il nastro rimane fermo). FACOLTATIVO: gestire l'ingresso fotocellula in modo da CONTARE quanti elementi transitano sul nastro. Quando viene raggiunto il numero di 100 elementi, bloccare il nastro e avvisare l'operatore con un indicatore connesso su RA2. La gestione del conteggio deve avvenire RIGOROSAMENTE ad interrupt (interruzione quando si raggiungono i 100 elementi) 1. FARE FLOW CHART 2. sviluppare in assembler le parti relative del flowchart 3. definire la routine di interrupt timer per poter fare il lampeggio delle spie 4. definire la routine di interrupt relativa al conteggio

344


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, 3° VERIFICA

ISTITUTO TECNICO INDUSTRIALE " B. PASCAL "

P.le

C. Macrelli n. 100 - 47023 CESENA - Forlì -

CANDIDATO__________________________DATA____/____/_____CLASSE

5A a.s. 2008/2009 DISCIPLINA SISTEMI Si dispone di una scheda PIC16F877 con un pulsante su RB0 e un led su RB4. Realizzare un programma che faccia lampeggiare il led con cadenza 1 secondo (1 secondo acceso, 1 secondo spento) solo se viene premuto il pulsante, altresì il led deve rimanere spento 1. diagramma di flusso 2. definire , in linguaggio C, la routine di interrupt 3. definire, in linguaggio C, le inizializzazioni delle porte di I/O coinvolte nel progetto 4. FACOLTATIVO: il centrale di un trimmer consente di fornire all'ingresso RA0 un segnale analogico variabile fra 0 e 5V. Realizzare un programma che consenta di variare il tempo di lampeggio ON (e anche OFF) del led connesso in RB5, fra 10mS e 2,560s . La gestione dell'input analogico viene fatta a polling

345


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, 4° VERIFICA

ISTITUTO TECNICO INDUSTRIALE " B. PASCAL "

P.le

C. Macrelli n. 100 - 47023 CESENA - Forlì -

CANDIDATO_______________________DATA____/____/_____CLASSE

5A a.s. 2008/2009

SISTEMI

DISCIPLINA

In una sistema di rilevamento temperatura si dispone di due sensori RTD che devono misurare temperature comprese fra RTD1, RTD2: -100°C / +400°C Il sensore RTD presenta una caratteristica del tipo: R(T) = 1000 * (1 +0,003567 * T) La temperatura viene rilevata ad intervalli di 10 secondi per entrambi i sensori . I valori vengono mediati nell’arco di 1 minuto quindi inviati ad un centro di ricerche posto in localita’ remota. Per poter comunicare con questo centro ricerche si dispone di un PC connesso ad internet. La connessione fra PC e BOARD che rileva la temperatura puo’ essere di due tipi: RS232 oppure RS485. I dati mediati vengono inviati dal TARGET (board) al HOST (PC) ogni minuto impacchettando il tutto in questo modo: 1° BYTE: 0xAA [PREAMBOLO di valore fisso per ogni pacchetto] 2° BYTE: 0x55 [PREAMBOLO di valore fisso per ogni pacchetto] 3° BYTE: sensore RTD1 4° BYTE: sensore RTD2 5° BYTE: identificatore del minuto di acquisizione (LSB) 6° BYTE: identificatore del minuto di acquisizione (MSB) 7° BYTE: checksum calcolato come somma modulo 256 dei primi 6 byte inviati [per SOMMA MODULO 256 si intende che i byte vengono sommati senza tenere conto del riporto che viene quindi scartato mantenendo unicamente cio’ che rientra entro gli 8 bit meno significativi della somma ] Per INDICATORE DEL MINUTO DI ACQUISIZIONE si intende un numero progressivo compreso fra 1 e 65535 che viene associato ad ogni acquisizione e serve per avere monitorata la sequenzialita’ delle acquisizioni stesse. Qualora si raggiungano le 65535 acquisizioni tale numero viene reinizializzato a 1 1. disegnare l’HW del sistema progettando il condizionamento dei sensori utilizzati. Prevedere un disegno di massima per quanto riguarda la sezione micro prevedendo pero’ le interfacce di tipo seriale delle quali deve disporre il sistema. Dettagliare invece in modo completo il dimensionamento della parte analogica (3 pt) 2. realizzare il diagramma di flusso dettagliato del programma che dovrà risolvere il problema assegnato, distinguendo il flow-chart della routine di interrupt da quello del main program (2 pt) 3. realizzare in C un timer a 10 secondi che consenta di acquisire i canali analogici indicati (1 pt) 4. realizzare in C la routine di trasmissione dati da TARGET  PC impacchettando gli stessi come indicato sopra (3 pt)

346


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Esercizi svolti negl’anni precedenti:  Conversione A/D:    

 Gestione & condizionamento:

Esercizio 1 Esercizio 2 Esercizio 3 Esercizio 4

    

 Display 7 segmenti:        

 Operazionali:

Esercizio 1 Esercizio 2 Esercizio 3 Esercizio 4 Esercizio 5 Esercizio 6 Esercizio 7 Esercizio 8

 Esercizio 1  Esercizio 2  Esercizio 3

 Motori passo-passo:  Esercizio 2

 Esercizi con MPLAB:        

Esercizio 1 Esercizio 2 Esercizio 3 Esercizio 4 Esercizio 5

 Funzioni di trasferimento:

Esercizio 1 Esercizio 2 Esercizio 3 Esercizio 4 Esercizio 5 Esercizio 6 Esercizio 7 Esercizio 8

    

Esercizio 1 Esercizio 2 Esercizio 3 Esercizio 4 Esercizio 5

 Trasformata di La Place:  Esercizio 1  Esercizio 2

347


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_1: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * URL: www.itis-cesena.it Email:vicepresidenza@itis-cesena.it * * Nome: Orlandi Marco * * File: ES_034.c * * Data: * * Classe: 5AET2008 * * Descrizione: Realizzare un programma che effettui la conversione A/D * * di 8 canali analogici. Considerando solo gli otto bit * * più significativi salvare le 8 acquisizioni in un array * * di byte denominato ADCONV[...]. Effettuare la gestione * * a polling. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #include <htc.h> unsigned char indice; unsigned char ADCONV[8]; unsigned char MASK_SEL; void main(void){ ADCON0 = 0b00000000; ADCON1 = 0b00000000; ADON = 1; indice = 0; while(1){ switch (indice){ default: case 0: ADCON0 &= (~MASK_SEL); ADCON0 |= 0b00000000; break; case 1: ADCON0 &= (~MASK_SEL); ADCON0 |= 0b00001000; break; case 2: ADCON0 &= (~MASK_SEL); ADCON0 |= 0b00010000; break; case 3: ADCON0 &= (~MASK_SEL); ADCON0 |= 0b00011000; break; case 4: ADCON0 &= (~MASK_SEL); ADCON0 |= 0b00100000; break; case 5: ADCON0 &= (~MASK_SEL); ADCON0 |= 0b00101000; break; case 6: ADCON0 &= (~MASK_SEL);

348


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ADCON0 |= 0b00110000; break; case 7: ADCON0 &= (~MASK_SEL); ADCON0 |= 0b00111000; break; } ADCON0 |= 0b00000100; while((ADCON0 & 0b00000100)!= 0){} ADCONV[indice] = ADRESH; indice = indice++; if(indice>7){ indice = 0; } } } Esercizio_2: /********************************************** * * Baldacci Andrea * * I.T.I.S. "B.PASCAL" - CESENA * Piazzale CINO MACRELLI 100 47100 CESENA * Tel. 0039.0547.22792 Fax 0039.0547.24141 * URL: www.itis-cesena.it * Email:vicepresidenza@itis-cesena.it * * File: ES_035.C * Data: * Classe: 5AET2009 * Descrizione: il programma effettua la conversione A/D di 8 canali * analogici, considerando solo gli 8 bit più significativi; * fare in modo di acquisire 100 campioni per ciascun canale * quindi estrarre la media di ciascuno di essi in apposito * array ADconvAVG[..]. * La gestione della conversione è a POLLING. * **********************************************/ #include <htc.h> /* DICHIARAZIONE VARIABILI DI MEMORIA */ unsigned unsigned unsigned unsigned

char char char char

indice; ADconvAVG[8]; MASK_SEL; var1;

unsigned char TRISAimage; unsigned char TRISEimage; static void interrupt ISR_code (void){ }

//__INT

void main(void){ PORTA = 0;

349


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, PORTE = 0; var1 = 0; /* inizializzazione delle porte I/O del micro */ TRISA = 0xFF; TRISE = 0xFF;

ADCON1 = 0b00000000; ADCON0 = 0b00000001; indice = 0; MASK_SEL = 0b00111000; while(1){ switch(indice){ case 0: ADCON0 & = (~MASK_SEL); ADCON0 | = 0b00000000; break; case 1: ADCON0 & = (~MASK_SEL); ADCON0 | = 0b00001000; break; case 2: ADCON0 & = (~MASK_SEL); ADCON0 | = 0b00010000; break; case 3: ADCON0 & = (~MASK_SEL); ADCON0 | = 0b00011000; break; case 4: ADCON0 & = (~MASK_SEL); ADCON0 | = 0b00100000; break; case 5: ADCON0 & = (~MASK_SEL); ADCON0 | = 0b00101000; break; case 6: ADCON0 & = (~MASK_SEL); ADCON0 | = 0b00110000; break; case 7: ADCON0 & = (~MASK_SEL); ADCON0 | = 0b00111000; break; } while(var1<101){ ADCON0 | =0b00000100; while((ADCON0 & 0b00000100) != 0){ } ADconvAVG[indice] = ADconvAVG[indice] + ADRESH; var1 = var1++; } var1 = 0; ADconvAVG[indice] = ADconvAVG[indice] / 100; if(++indice>7){

350


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, indice = 0; } } } Esercizio_3: /********************************************** * * Baldacci Andrea * * I.T.I.S. "B.PASCAL" - CESENA * Piazzale CINO MACRELLI 100 47100 CESENA * Tel. 0039.0547.22792 Fax 0039.0547.24141 * URL: www.itis-cesena.it * Email:vicepresidenza@itis-cesena.it * * File: ES_036.C * Data: * Classe: 5AET2009 * Descrizione: il programma effettua la conversione A/D di 8 canali * analogici, considerando solo gli 8 bit più significativi; * le acquisizioni sono salvate su un array di byte denominato * ADCONV[..].La gestione della conversione è a POLLING * *********************************************/ #include <htc.h> /* DICHIARAZIONE VARIABILI DI MEMORIA */ unsigned char indice; unsigned char VETT[8]; unsigned char MASK_SEL; static void interrupt ISR_code (void){ PIR1 &= 0b10111111; switch(indice){ case 0: ADCON0 & = (~MASK_SEL); ADCON0 | = 0b00000000; break; case 1: ADCON0 & = (~MASK_SEL); ADCON0 | = 0b00001000; break; case 2: ADCON0 & = (~MASK_SEL); ADCON0 | = 0b00010000; break; case 3: ADCON0 & = (~MASK_SEL); ADCON0 | = 0b00011000; break; case 4: ADCON0 & = (~MASK_SEL); ADCON0 | = 0b00100000; break; case 5:

351

//__INT


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ADCON0 ADCON0 break; case 6: ADCON0 ADCON0 break; case 7: ADCON0 ADCON0 break;

& = (~MASK_SEL); | = 0b00101000; & = (~MASK_SEL); | = 0b00110000; & = (~MASK_SEL); | = 0b00111000;

} ADCON0 | =0b00000100; while((ADCON0 & 0b00000100) != 0){ } VETT[indice] = ADRESH; if(++indice>7){ indice = 0; } } void main(void){ ADCON0 = 0b00000001; ADCON1 = 0b00000000; indice = 0; PORTA = 0; PORTE = 0; TRISA = 0; TRISE = 0; INTCON = 0b11000000; ADIE = 1; MASK_SEL = 0b00111000; while(1){ } } Esercizio_4: Autore: Baldacci Andrea 5AET2009 CONSEGNA: Una scheda deve acquisire 8 canali analogici ogni 100ms, accumulando la somma di ciascuna conversione in un vettore di unsigned. Dopo 10 secondi deve salvare le acquisizioni dentro un vettore di unsigned char (vengono ivi salvate le medie di ciascuna acquisizione). AAA: il vettore degli accumuli va azzerato dopo aver salvato la conversione media. Sulla porta C ci sono 8 pulsanti tali che premendo ciascuno di essi si realizza su PORTB(0..7) il contenuto binario del canale analogico desiderato (su PORTB ci sono 8 led).

352


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, HARDWARE:

395 (BALDACCI ANDREA 5AET2009)

LISTA COMPONENTI:  integrato BUFFER 74HC244N;  R1÷R8 = 4.7KΩ;  RN1 = 680Ω;  8 diodi LED rossi;  8 pulsanti.

353


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, SPIEGAZIONE DELL’HARDWARE: L’hardware è composto semplicemente da 8 pulsanti collegati al PIC e da 8 led collegati al PIC tramite un integrato BUFFER. SPIEGAZIONE DEL SOFTWARE: Dopo aver inizializzato porte e timer e aver ipotizzato un valore convertito in un vettore (CHAN), ogni 100ms scatta un interrupt che accumula tutti i dati convertiti in ACC e dopo 10s mette le medie di ciascun canale in AVG. Spingendo un pulsante (vedi hardware) si visualizzerà il valore-media tramite i led su PORTB. FLOWCHART:

396 (BALDACCI ANDREA 5AET2009)

354


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

397 (BALDACCI ANDREA 5AET2009)

PROGRAMMA: /********************************************** * * Baldacci Andrea * * I.T.I.S. "B.PASCAL" - CESENA * Piazzale CINO MACRELLI 100 47100 CESENA * Tel. 0039.0547.22792 Fax 0039.0547.24141 * URL: www.itis-cesena.it * Email:vicepresidenza@itis-cesena.it * * File: ES_037.C * Data: * Classe: 5AET2009 * Descrizione: Una scheda deve acquisire 8 canali analogici * ogni 100ms, accumulando la somma di ciascuna * conversione in un vettore di unsigned. * Dopo 10 secondi deve salvare le acquisizioni * dentro un vettore di unsigned char (vengono * ivi salvate le medie di ciascuna acquisizione). * AAA: il vettore degli accumuli va azzerato * dopo aver salvato la conversione media. * Sulla porta C ci sono 8 pulsanti tali che * premendo ciascuno di essi si realizza su * PORTB(0..7) il contenuto binario del canale * analogico desiderato (su PORTB ci sono 8 led) *

355


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, *********************************************/ #include <htc.h> unsigned char CHAN[8]; unsigned short ACC[8]; unsigned char AVG[8]; unsigned int count=0; unsigned int i=0; static void interrupt ISR_code(void){ PIR1 = 0; // resetto il flag TMR1IF TMR1L = 0x2B; // TMR1L <- 2B TMR1H = 0xCF; // TMR1H <- CF //leggo canali e sommo nel vettore accumulo for (i=0;i<8;i++) ACC[i]+=CHAN[i]; count++; if (count==100){ //metto in uscita la media e azzero l'accumulatore for (i=0;i<8;i++){ AVG[i]=ACC[i]/100; ACC[i]=0; } //azzero count count=0; } } void output(int chan_selected){ PORTB=AVG[chan_selected]; } void main(void){ PORTB = 0; PORTC = 0; //ipotizzo un valore nei canali analogici da analizzare for (i=0;i<8;i++) CHAN[i]=i; /* inizializzazione delle porte I/O del micro */ TRISB = 0; TRISC = 0xFF;

// PORTB-->OUTPUT // PORTC-->INPUT

/*------------ INIT INTERRUPT ---------------*/ T1CON = 0b00110000; /* configurazione di TMR1: * BIT 7: non utilizzato * BIT 6: non utilizzato * BIT 5: T1CKPS1 : 1: * BIT 4: T1CKPS0 : 1: prescaler fissato a 1/8 * BIT 3: T1OSCEN : 0: oscillatore interno disabilitato * BIT 2: /T1SYNC : 0: non importante * BIT 1: TMR1CS : 0: sorgente clock interno * BIT 0: TMR1ON : 0: TIMER1 è off per ora */ TMR1L = 0x2B; // TMR1L <- 2B TMR1H = 0xCF; /* TMR1H <- CF

356


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

PIR1 = 0; PIE1 = 1;

* complessivamente: TMR1 = CF2B * FFFF-CF2B=30D4 => 30D4*8=100ms */ // resetto il flag TMR1IF // TMR1IE = 1 (abilito interruzioni possibili su TIMER1)

INTCON = 0b11000000;

// abilito gli interrupt generale e periferico

TMR1ON = 1;

// abilito modulo TIMER1

/*--------------------------------------------------------------*/ for(;;){ switch (PORTC){ case 1: output(0); break; case 2: output(1); break; case 4: output(2); break; case 8: output(3); break; case 16: output(4); break; case 32: output(5); break; case 64: output(6); break; case 128: output(7); break; default: PORTB=0; } } }

357


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_1: Realizzare una routine di conversione dei numeri da 0 a 9 in modo tale che siano convertiti nei loro corrispondenti a 7 segmenti. Display 7 segmenti:

Conversione numeri da 0 a 9: _ 0 -> | | |_| _ 5 -> |_ _|

1 ->

| |

2 ->

6 -> |_ |_|

7 ->

_ _| |_ _ | |

_ _| _|

4 -> |_| |

_ 8 -> |_| |_|

_ 9 -> |_| _|

3 ->

Facendo visualizzare ad un display a 7 segmenti catodo comune i numeri da 0 a 9 il pic da noi utilizzato deve inviare 7 bit per comandare l’accensione/spegnimento dei segmenti; il bit più significativo comanda il segmento a, il 6 bit il segmento b e così via fino ad arrivare a settare il segmento g. Tutto questo è gestito con una call di conversione che controlla il numero da convertire, va alla riga corrispondente e scrive nel registro W del pic il valore convertito.

358


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

;---------------------------------------------------------------------------------------------------

359


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ; Enrico Mosconi ; Email: enry_21@libero.it ; enricomosconi.itis@libero.it ; ; I.T.I.S. "B.PASCAL" - CESENA ; Piazzale CINO MACRELLI 100 47100 CESENA ; Tel. 0039.0547.22792 Fax 0039.0547.24141 ; URL: www.itis-cesena.it ; Email:vicepresidenza@itis-cesena.it ; ; File: ES_013.ASM ; Data: 21/10/08 ; Classe: 5AET2009 ; Descrizione: Realizzare una routine di conversione dei numeri da 0 a 9 ; in modo tale che siano convertiti nei loro corrispondenti a segmenti. ; ;--------------------------------------------------------------------------------------------------include"P16F877.INC" org 00h goto main org 04h goto ISR_code org 0x10 db 0x11,0x22,0x33,0x44 main: movlw 8 ; numero da convertire call conv goto main conv: addwf PCL,F retlw b'1111110' retlw b'0110000' retlw b'1101101' retlw b'1111001' retlw b'0110011' retlw b'1011011' retlw b'0011111' retlw b'1110000' retlw b'1111111' retlw b'1111011'

; PCL = PCL + W ; _ ; | | ; |_| ; ; | ; | ; _ ; _| ; |_ ; _ ; _| ; _| ; ; |_| ; | ; _ ; |_ ; _| ; ; |_ ; |_| ; _ ; | ; | ; _ ; |_| ; |_| ; _ ; |_| ; _|

ISR_code: retfie end

360


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_2: ;-----------------------------------------------------------------------; Gozzoli Luca ; ; I.T.I.S. "B.PASCAL" - CESENA ; Piazzale CINO MACRELLI 100 47100 CESENA ; Tel. 0039.0547.22792 Fax 0039.0547.24141 ; URL: www.itis-cesena.it ; Email:vicepresidenza@itis-cesena.it ; ; File: ES_014.ASM ; Data: 10/11/08 ; Classe: 5AET2009 ; Descrizione: la routine nel programma converte i numeri da 0 a 9 ; in modo tale che siano convertiti nei loro ; corrispondenti a 7 segmenti ; ;------------------------------------------------------------------------include

"P16F877.INC"

var1 equ 020H org 00H goto main org 04H goto ISR_code main: bcf STATUS, RP0 bcf STATUS, RP1 movlw d'9' movwf var1 movlw d'10' subwf var1,W btfss STATUS,0 call conv goto main conv: movf var1,W addwf PCL,F ; retlw b'01111110'

_

; | | ; |_| ;

retlw b'00110000'

;

| ; ;

retlw b'01101101'

;

| _

_| ; |_ ; _

retlw b'01111001'

;

_| ; ;

retlw b'00110011'

; |_| ; ;

retlw b'01011011'

_|

; |_

361

| _


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ; ; retlw b'01011111'

_| _

; |_ ; |_| ; _

retlw b'01110000'

;

| ; ;

retlw b'01111111'

| _

; |_| ; |_| ; _

retlw b'01111011'

; |_| ;

_|

return ISR_code: retfie end

Esercizio_3: La routine nel programma converte i numeri da 0 a 9 in modo tale che siano convertiti nei loro corrispondenti a 7 segmenti utilizzando l'indirizzamento indiretto. SPIEGAZIONE:

L’ INDF non è un registro fisico. Usando il registro INDF causerà un indirizzamento indiretto. Ogni istruzione che usi INDF accede al registro selezionato da FSR ( File Select Register). Con FSR = 0, leggendo il registro INDF avremo il valore 00h, mentre scrivere sull’ INDF risulterà come un operazione nulla ( NOP ).

Esempio di indirizzamento indiretto:

LOOP

MOVLW 0x20 MOVWF FSR

;inizializza il pointer

CLRF INDF INCF FSR,F

;cancella INDF ;incrementa il pointer

362


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, BTFSS FSR,4 GOTO LOOP MAIN

;se il bit4 è a 1, va a main, altrimenti.. ;..va a loop

… .. .

PROGRAMMA: ;-------------------------------------------------------------------------; ; I.T.I.S. "B.PASCAL" - CESENA ; Piazzale CINO MACRELLI 100 47100 CESENA ; Tel. 0039.0547.22792 Fax 0039.0547.24141 ; URL: www.itis-cesena.it ; Email:vicepresidenza@itis-cesena.it ; ; File: Es_015.ASM ; Studente: Alberto Baredi ; Classe: 5AET2009 ; Descrizione: La routine nel programma converte i numeri da 0 a 9 in modo ; tale che siano convertiti nei loro corrispondenti a 7 segmenti ; mutilizzando l'indirizzamento indiretto. ; ;------------------------------------------------------------------------include "P16F877.INC" __CONFIG _CP_OFF & _WDT_OFF

& _PWRTE_OFF & _HS_OSC &_LVP_OFF

BANCO_0 macro bcf STATUS,RP1 bcf STATUS,RP0 endm BANCO_1 macro bcf STATUS,RP1 bsf STATUS,RP0 endm org 00H goto main org 04H goto ISR_code main: BANCO_0 movlw d'0' movwf 020H movlw d'1' movwf 021H movlw d'2' movwf 022H movlw d'3' movwf 023H movlw d'4' movwf 024H movlw d'5' movwf 025H movlw d'6' movwf 026H movlw d'7' movwf 027H movlw d'8' movwf 028H movlw 020H movwf FSR loop: movf INDF,W call conv

363


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, incf FSR btfss FSR,3 goto loop goto main conv: addwf PCL,F retlw b'01111110' retlw b'00110000' retlw b'01101101' retlw b'01111001' retlw b'00110011' retlw b'01011011' retlw b'01011111' retlw b'01110000' retlw b'01111111' retlw b'01111011'

; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;

_ | | |_| | | _ _| |_ _ _| _| |_| | _ |_ _| _ |_ |_| _ | | _ |_| |_| _ |_| _|

return ISR_code: retfie end

364


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_4: ;----------------------------------------------------------; Melai Thomas ; ; I.T.I.S. "B.PASCAL" - CESENA ; Piazzale CINO MACRELLI 100 47100 CESENA ; Tel. 0039.0547.22792 Fax 0039.0547.24141 ; URL: www.itis-cesena.it ; Email:vicepresidenza@itis-cesena.it ; ; File: Es_016.ASM ; Data: ; Classe: 5AET2008 ; Descrizione: Realizzare una routine di conversione da ; caratteri ASCII a 7 segmenti in modo che ; tutti i caratteri ASCII "A" --> "Z" (upper ; case) siano convertiti nelle lettere a 7 segmenti. ; ;----------------------------------------------------------include "P16F877.INC" __CONFIG _CP_OFF & _WDT_OFF

& _PWRTE_OFF & _HS_OSC &_LVP_OFF

var1 equ 20H org 00h goto main org 04h goto ISR_code main: movlw d'9' movwf var1 movlw d'15' subwf var1, W btfsc STATUS, 0

; ; ; ; ; ; ;

assegno il valore 9 alla variabile assegna a w il valore decimale 15 in questo modo riesco a controllare var1 controllo sottraggo al valore 9 il valore contenuto in W controlla il bit Carry di STATUS, questo è a 0 se il risultato di un'operazione è negativo

call conv nop goto main conv: movf var1, W addwf PCL, F programma counter) retlw b'11111100' ;

retlw b'01100000' ;

retlw b'11011010' ;

; inserisco in W il valore di var1 ; somma il valore in W a PCL (parte bassa del _ valore 0 ; | | ; |_| valore 1 ; ;

| |

_ valore 2 ;

_|

365


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ; |_ retlw b'11110010' ;

_ valore 3 ; ;

_| _|

retlw b'01100110' ;

valore 4 ; |_| ; |

retlw b'10110110' ;

_ valore 5 ; |_ ; _|

retlw b'10111110' ;

_ valore 6 ; |_ ; |_|

retlw b'11100000' ;

_ valore 7 ; ;

| |

retlw b'11111110' ;

_ valore 8 ; |_| ; |_|

retlw b'11110110' ;

_ valore 9 ; |_| ; _|

retlw b'11101110' ;

valore A ; _ ; |_| ; | |

retlw b'00111110' ;

valore B ; ; |_ ; |_|

retlw b'00011010' ;

valore C ; ; _ ; |_

retlw b'01111010' ;

valore D ; ; _| ; |_|

retlw b'10011110' ;

valore E ; _ ; |_ ; |_

retlw b'10001110' ;

valore F ; _ ;|_ ;|

retlw b'00111110' ;

valore G

366


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ; ; |_ ; |_| retlw b'00101110' ;

valore H ; ; |_ ; | |

retlw b'00001000' ;

valore I ; ; ; |

retlw b'00001100' ;

valore L ; ; | ; |

retlw b'11101100' ;

valore M ; _ ; | | ; | |

retlw b'00101010' ;

valore N ; ; _ ; | |

retlw b'00111010' ;

valore O ; ; __ ; |__|

retlw b'11001110' ;

valore P ; _ ; |_| ; |

retlw b'11100110' ;

valore Q ; _ ; |_| ; |

retlw b'00001010' ;

valore R ; ; _ ; |

retlw b'10110110' ;

valore S ; _ ; |_ ; _|

retlw b'00011110' ;

valore T ; ; |_ ; |_

retlw b'00111000' ;

valore U ; ;

367


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ; |_| retlw b'01111100' ;

valore V ; ; |_| ; |_|

retlw b'11011010' ;

valore Z ; _ ; _| ; |_

return ISR_code: retfie end Esercizio_5: ;----------------------------------------------------------; Marco Orlandi ; ; I.T.I.S. "B.PASCAL" - CESENA ; Piazzale CINO MACRELLI 100 47100 CESENA ; Tel. 0039.0547.22792 Fax 0039.0547.24141 ; URL: www.itis-cesena.it ; Email:vicepresidenza@itis-cesena.it ; ; File: ES_026.ASM ; Data: ; Classe: 5AET2008 ; Descrizione: Realizzare un programma, data una scheda a 4MHz che ; consenta il pilotaggio di un display a sette segmenti ; ad anodo comune utilizzando PORTB con un buffer ; 74xx244 in modo che in sequenza di 500ms compaiano ; sul display stesso; codici esadecimali consecutivamente ; risolvere in assembler. ;----------------------------------------------------------INCLUDE "P16F877.INC" __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_OFF & _HS_OSC CONTA EQU 20H ORG 00H GOTO MAIN ORG 04H GOTO ISR_CODE MAIN: BCF STATUS, RP1 BSF STATUS, RP0 CLRF TRISB BCF STATUS, RP0 MOVLW D'125' MOVWF TMR0 BSF STATUS, RP0 MOVLW B'10000100'

;mette a 0 il bit RP0 di status(bank 1) ;mette a 1 il bit RP0 di status(bank 1) ;azzera TRISB (PORTB tutte uscite) ;mette a 0 il bit RP0 di status(bank 0) ;assegna il valore decimale 125 a w ;assegna il valore di w a TMR0 ;mette a 1 il bit RP0 di status(bank 1) ;assegno questo numero a w

368


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ;bit7= ;bit6= ;bit5= ;bit4= ;bit3= ;bit2= ;bit1= ;bit0=

1 0 0 0 0 1 0 0

=> => => => => => => =>

RBPU non abilito il pull-up su PORTB INTEDG interrupt falling T0CS utilizzo il clock interno T0SE incremento dal basso verso l'alto RA4\T0CKI PSA assegno il prescaler al TMR0 PS2 imposto il prescaler /32 PS1 imposto il prescaler /32 PS0 imposto il prescaler /32

MOVWF OPTION_REG BCF STATUS, RP0 MOVLW D'125' MOVWF CONTA MOVLW B'11100100' ;bit7= ;bit6= ;bit5= ;bit4= ;bit3= ;bit2= ;bit1= ;bit0=

1 1 1 0 0 1 0 0

=> => => => => => => =>

GIE PEIE T0IE INTE RBIE T0IF INTF RBIF

;assegna a OPTION_REG il valore in w ;mette a 0 il bit RP0 di status(bank 0) ;assegna il valore decimale 125 a w ;assegna il valore di w a CONTA ;assegno questo numero a w

abilito gli interrupts abilito tutti gli interrupts abilito l'interrupt del TMRO disabilito gli interrupts esterni da RB0/INT disabilito RB port change interrupt setto la flag degli interrupt non ci sono interrupts esterni nessun pin fra RB7 e RB4 hanno cambiato stato

MOVWF INTCON

;assegna a OPTION_REG il valore in w

LOOP: NOP GOTO LOOP ISR_CODE: MOVLW D'125' MOVWF TMR0 BCF INTCON, T0IF DECFSZ CONTA, F GOTO FINE MOVLW D'125' MOVWF CONTA

;assegna il valore ;assegna il valore ;setta a uno il bit T0IF ;decrementa la variabile

decimale 125 a w di w a TMR0 di INTCON CONTA e skippa se è 0

;assegna il valore decimale 125 a w ;assegna il valore di w a CONTA

PILOTAGGIO: MOVLW b'11111100'

;ritorna dalla routine con un litteral ; __ ;| | ;|__|

MOVWF PORTB FINE: RETFIE eseguire il loop END

;esce dalla routine e ritorna a

369


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_6: /********************************************** * * Baldacci Andrea * * I.T.I.S. "B.PASCAL" - CESENA * Piazzale CINO MACRELLI 100 47100 CESENA * Tel. 0039.0547.22792 Fax 0039.0547.24141 * URL: www.itis-cesena.it * Email:vicepresidenza@itis-cesena.it * * File: ES_028.C * Data: * Classe: 5AET2009 * Descrizione: Controllo in PWM della luminosità di un display * a 7 segmenti visto in ES_028, utilizzando * ES_027 + ES_028. Modificare introducendo * operatori and che vadano a pilotare l’accensione * dei segmenti utilizzando l’uscita PWM. * *********************************************/ #include <htc.h> #define OUTPUT #define INPUT

0 1

/* DICHIARAZIONE VARIABILI DI MEMORIA */ unsigned char indice=0; static void interrupt ISR_code (void){ //__INT if(TMR1IF){ // controllo che l'interrupt sia stato lanciato da TMR1 TMR1IF = 0; TMR1L = 0xDB; // TMR1L <- DB TMR1H = 0xB; /* TMR1H <- B * complessivamente: TMR1= BDB */ switch (indice){ case 0: PORTB = break; case 1: PORTB = break; case 2: PORTB = break; case 3: PORTB = break; case 4: PORTB = break; case 5: PORTB = break; case 6: PORTB = break;

0b01111110; 0b00110000; 0b01101101; 0b01111001; 0b00110011; 0b01011011; 0b01011111;

370

// _ // | | // |_| // // | // | // _ // _| // |_ // _ // _| // _| // // |_| // | // _ // |_ // _| // _ // |_ // |_|


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, case 7: PORTB = break; case 8: PORTB = break; case 9: PORTB = break; case 10: PORTB = break; case 11: PORTB = break; case 12: PORTB = break; case 13: PORTB = break; case 14: PORTB = break; case 15: PORTB =

// _ | // | // _ |_| // |_| // _ |_| // _| _ |_| // | |

0b01110000;

//

0b01111111;

//

0b01111011;

//

0b01110111;

// //

0b00011111;

// // |_

0b01001110;

// _ // |

0b00111101;

// //

0b01001111;

// //

0b01000111;

// //

// |_| // |_ _| // |_| _ |_ // |_ _ |_ // |

} if(indice<15) indice++; else indice=0; } } void main(void){ PORTB = 0; /* Tccp1_pwm=(PR2[199]+1)*4*Tosc[250ns]*(TMR2 prescale[1])=200us */ PR2 = 199; /* DUTYccp1_pwm=CCPR1[400]*Tosc*(TMR2 prescale)=100us[50%] */ CCPR1L = 0b01100100; CCP1X = 0; CCP1Y = 0; /* inizializzazione delle porte I/O del micro */ TRISB = 0; RC2 = OUTPUT;

// PORTB-->OUTPUT // RC2-->OUTPUT

/*----------------------- INIT TIMER1 --------------------------*/ T1CON = 0b00110000;

/* configurazione di TMR1: * BIT 7: non utilizzato * BIT 6: non utilizzato * BIT 5: T1CKPS1 : 1:

371


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, * BIT 4: T1CKPS0 : 1: prescaler fissato a 1/8 * BIT 3: T1OSCEN : 0: oscillatore interno disabilitato * BIT 2: /T1SYNC : 0: non importante * BIT 1: TMR1CS : 0: sorgente clock interno * BIT 0: TMR1ON : 0: TIMER1 è off per ora */ /*

PROVA T1CKPS1 = 1; T1CKPS0 = 1;

*/ TMR1L = 0xDB; TMR1H = 0xB; PIR1 = 0; PIE1 = 1;

// TMR1L <- DB /* TMR1H <- B * complessivamente: TMR1 = BDB * FFFF-BDB=F424 => F424*8=500ms */ // resetto il flag TMR1IF // TMR1IE = 1 (abilito interruzioni possibili su TIMER1)

INTCON = 0b11000000;

// abilito gli interrupt generale e periferico

/*----------------------- INIT TIMER2 --------------------------*/ T2CON = 0b00000000;

/* configurazione di TMR2: * BIT 7: non utilizzato * BIT 6: TOUTPS3: 0 * BIT 5: TOUTPS2: 0 * BIT 4: TOUTPS1: 0 * BIT 3: TOUTPS0: 0 :postscaler impostato a 1 * BIT 2: TMR2ON: 0 :TIMER2 è off per ora * BIT 1: T2CKPS1: 0 : * BIT 0: T2CKPS1: 0 :prescaler impostato a 1

TMR2 = 0;

// TMR2 = 0

*/ /*--------------------------------------------------------------*/ CCP1M3 = 1; CCP1M2 = 1; // CCP1CON set for PWM mode TMR1ON = 1; TMR2ON = 1;

// abilito modulo TIMER1 // abilito modulo TIMER2

while(1){ } }

372


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_7: Realizzare un programma che sia in grado di pilotare un display in modo multiplexato (cioè i display sono collegati tutti assieme all’uscita del PIC16F877) - gestione mux - realizzare un timer a decremento su tempo fisso pari a 555 secondi che parte premendo un pulsante su RC4 (START) e si arresta , ripristinandone il valore iniziale, premendo RC5 (STOP). SPIEGAZIONE:

Guardando il nostro schema notiamo che tutti e tre i display sono collegati con le stesse sette uscite del micro, questo perché l’ occhio umano ha una persistenza nella retina di qualche decina di ms e in base a questa caratteristica, se noi facciamo 30\40 frame al secondo, il nostro occhio non sarà in grado di distinguere l’ accendimento e lo spegnimento dei display. Per pilotare i display abbiamo bisogno di utilizzare dei transistor che apriamo e chiudiamo molto velocemente; se noi facciamo 1\40 troviamo la velocità dei transistor.

FLOWCHART:

373


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Flow-Chart di Tappi Luca

/******************************************************************************** * TAPPI LUCA * * I.T.I.S. "B.PASCAL" - CESENA * Piazzale CINO MACRELLI 100 47100 CESENA *

374


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, * File: Es_030.C * Data: 14/11/2008 * Classe: 5AET2009 * Descrizione:Realizzare un programma che sia in grado di pilotare un display in modo * multiplexato (cioè i display sono collegati tutti assieme all’uscita del PIC16F877) * - gestione mux * - realizzare un timer a decremento su tempo fisso pari a 555 secondi che parte * premendo un pulsante su RC4 (START) e si arresta, ripristinandone il valore * iniziale, premendo RC5 (STOP). * * * ******************************************************************************/ #include <htc.h> // dichiarazione delle variabili // unsigned char uc_DGT0; unsigned char uc_DGT1; unsigned char uc_DGT2; unsigned char contaDGT; static void interrupt ISR_CODE(void){ if (T0IF){ TMR0 = 5; switch (contaDGT){ case 0: RC2 = 0; asm("nop"); asm("nop"); asm("nop"); PORTB = uc_DGT2; //metto uc_DGT2 in PORTB RC0 = 1; contaDGT = 1; break; case 1: RC0 = 0; asm("nop"); asm("nop"); asm("nop"); PORTB = uc_DGT1; //metto uc_DGT1 in PORTB RC1 = 1; contaDGT = 2; break; case 2: RC1 = 0; asm("nop"); asm("nop"); asm("nop"); PORTB = uc_DGT0; //metto uc_DGT2 in PORTB RC2 = 1; contaDGT = 0; break; default: contaDGT = 0; break; } T0IF = 0; } }

void main(void){ // inizializzazione delle porte // TRISB = 0x00; // inizializzazione del timer // TMR0 = 5; OPTION = 0b10000111;

//configurazione bit: ;!RBPU=1 pull-ups disabilitato; ;INTEDG=0 interrupt esterno su RB0; ;T0CS=0 utilizzo del clock interno(CLKO); ;T0SE=0 incremento sul fronte di salita delle transizioni del pin RA4; ;PSA=0 il prescaler è assegnato al modulo del tiner0;

375


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, INTCON = 0b11100000;

;PS2-PS0= seleziono il prescaler; //configuarazione bit: ;GIE=1 abilita gli interrupt non mascherabili; ;PEIE=1 abilita tutti i bit degli interrupt periferiche non mascherabili; ;TMR0IE=1 abilita interrupt del timer 0; ;RBIE=0 disabilita gli interrupt sulla porta RB; ;TMR0IF=0 il registro timer 0 non è sovraccaricato; ;INTF=0 l’interrupt del pin RB0 non occore; ;RBIF=0;

while(1){ } }

Esercizio_8: Realizzare una funzione in C denominata numTo7SEG (unsigned char uc_num) in grado di convertire uc_num in un corrispondente codice a 7 segmenti: - le centinaia sono salvate in uc_DGT2 - le decine sono salvate in uc_DGT1 - le unità sono salvate in uc_DGT0 Considerazioni: Dobbiamo realizzare un programma che riesce a convertire i numeri in modo da visualizzarli su un display a sette segmenti.

Esempio il numero zero verrà visualizzato così:

_ | | |_|

Inoltre dobbiamo dividere il numero in unita, decine e centinaia e andiamo a salvare il valore rispettivamente in uc_DGT0, uc_DGT1 e uc_DGT2

376


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Flow chart

in c /******************************************************************************* ** * Baldini Denis * * I.T.I.S. "B.PASCAL" - CESENA * Piazzale CINO MACRELLI 100 47100 CESENA * Tel. 0039.0547.22792 Fax 0039.0547.24141 * URL: www.itis-cesena.it * Email:vicepresidenza@itis-cesena.it * * File: ES_031.C * Data: * Classe: 5AET2009 * Descrizione: Realizzare una funzione in C denominata * numTo7SEG (unsigned char uc_num) in grado * di convertire uc_num in un corrispondente * codice a 7 segmenti: * - le centinaia sono salvate in uc_DGT2 * - le decine sono salvate in uc_DGT1 * - le unità sono salvate in uc_DGT0 ******************************************************************************** **/ #include <htc.h> /* DICHIARAZIONE VARIABILI DI MEMORIA */ unsigned char uc_num;

377


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, unsigned char uc_DGT0; unsigned char uc_DGT1; unsigned char uc_DGT2; unsigned char contaDGT; static void interrupt ISR_CODE(void){ } void main(void){ while(1){ uc_num = 123; numto7seg() } } void CONV(void){ w = contaDGT; PCL = PCL + w; w = 0b01111110;} w = 0b00110000;} w = 0b01101101;} w = 0b01111001;} w = 0b00110011;} w = 0b01011011;} w = 0b01011111;} w = 0b01110000;} w = 0b01111111;} w = 0b01111011;}

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //

_ | | |_| | | _ _| |_ _ _| _| |_| | _ |_ _| _ |_ |_| _ | | _ |_| |_| _ |_| _|

} void numto7seg(void){ contaDGT = uc_num%10; CONV(); uc_DGT0 = w; uc_num = un_num/10; contaDGT = uc_num%10; CONV(); uc_DGT1 = w; uc_num = uc_num/10; contaDGT = uc_num%10; CONV(); un_DGT2 = w; }

378


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_1: Data una scheda PIC16F84 con frequenza 4Mhz, realizzare un programma, che prevede l'utilizzo di 2 pulsanti, che saranno in grado di gestire l'accessione e lo spegnimento di 2 led in questo modo: led D2 su RA1 è acceso quando è premuto il pulsante SW1 su RB1; led D3 su RA0 è acceso quando è premuto il pulsante SW2 su RB0. La scheda prevede anche l'utilizzo di un relè a 12V con un assorbimento complessivo di corrente pari a 100mA. I seguenti dispositivi devono essere gestiti dal uC, nel nostro caso specifico utilizzeremo un PIC16F877. Alimentazione a 12 V. Schema elettrico:

Schema elettrico di Orlandi Marco

Componenti R1,R2 = 4,7 KOhm R3, R4, R7 = 180 Ohm R5 = 2,7 KOhm

379


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

R6 =120 Ohm C1 = 1 F C2, C3, C4 = 100nF D2, D3, D4 = diodo LED Vled = 1,5V D1 = 1N4007 Relé = relè 12V uno scambio TR1 = BC107B (npn)

Considerazioni: Abbiamo scelto di utilizzare PORTA per le uscite perché essa è in grado di fornire più corrente che andrà ad accendere i led e a pilotare il relè tramite il transistor. Abbiamo deciso di mettere i pulsanti in modo da avere gli ingressi attivi bassi perché altrimenti da PORTB (dove sono collegati i pulsanti) uscirebbe una piccola corrente che si andrebbe a scaricare verso terra e questo non andrebbe bene. I due led sono collegati a Vcc quindi sono attivi bassi. Scelte circuitali: Avendo come alimentazione 12V dobbiamo progettare anche un alimentatore che abbassi la 12V a 5V per poter alimentare correttamente il microcontrollore, per fare questo abbiamo scelto di usare un integrato 7805 che è in grado di stabilizzare la tensione a 5V. Calcoli svolti: Calcolo della resistenza per il led: R= (Vi - VL)/I R1 = 1K perché: Vi = 12V e I = 10 mA Calcolo del valore di R4: I = 15 mA , VCC = 5V e VR = 1.8 V Di conseguenza:

(valore commerciale più vicino)

Essendo la variazione della tensione dei due led di 0.2 V, consideriamo le due relative resistenze (R4 e R3) uguali, col valore commerciale più vicino al nostro teorico. Calcoliamo la R6 (=Rb) utilizzando le proprietà del Transistor.

Consideriamo come valori di VBE (SAT) = 0.7V e come valore di VCE (SAT) = 0.3V

380


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Come dato di progetto sappiamo che la IC non può essere maggiore di 100 mA, perciò la chiameremo I C (SAT).

Utilizziamo una hfe con valore 100, IB è pari a 1mA, essendo questo il valore di IB con IC (SAT) allora la nostra IB deve essere minore di 1mA.

Questo è il valore della RC. Ω  4K3 Con una VCC = 5V e una VBE = 0.7 V ; il valore commerciale della Rb viene preso per eccesso rispetto al valore teorico, per avere una IC minore di 100 mA.

381


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Flow chart:

INIZIO

INIZIALIZZAZIONE PORTE

PREMUTO IL PULSANTE P2?

NO

SI

VAI A 'LED1_ON'

VAI A 'LOOP_1'

SI

PREMUTO IL PULSANTE P1?

NO

VAI A LED_2 ON

Flow Chart di Gozzoli Luca

Software in assembler Soluzione 1 (Melai Thomas): ;--------------------------------------------------------------------------------------------------; Melai Thomas ; ; I.T.I.S. "B.PASCAL" - CESENA ; Piazzale CINO MACRELLI 100 47100 CESENA ; Tel. 0039.0547.22792 Fax 0039.0547.24141 ; URL: www.itis-cesena.it ; Email:vicepresidenza@itis-cesena.it ; ; File: Es_001.ASM ; Data: ; Classe: 5AET2008 ; Descrizione: Creare un programma che gestisca, con due pulsanti, un relè e due led in ; ; questo modo:

382


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ; Il led D2 su RA1 sia accesso quando il pulsante SW1 su RB1 è premuto ; Il led D3 su RA1 sia spento quando il pulsante SW2 su RB3 è premuto ; Il relè su RB2 sia acceso quando i due pulsanti sono accesi ; ;-------------------------------------------------------------------------------------------------include "P16F877.INC" __CONFIG _CP_OFF & _WDT_OFF

& _PWRTE_OFF & _HS_OSC &_LVP_OFF

org 00H goto main org 0x04 goto ISR_code main: ; settaggio ingressi bcf STATUS, RP0 bcf STATUS, RP1 movlw d'111111' movwf PORTA

; banco 0 ; setto i bit partendo dal più significativo, RA5 ; li metto in PORTA per settare le OUT PIC

; settaggio uscite movlw 0FFH movwf PORTB bsf STATUS, RP0 clrf TRISB

; metto tutte le OUT di PORTB a 1 ; lavoro in banco 1 ; cancello il trisb

bcf STATUS, RP0

; lavoro in banco 0

loop: btfss PORTA, 2 goto spegni_D2 bsf PORTB, 0 loop1: btfss PORTA, 3 goto accendi_D3 bcf PORTB, 1 loop2: btfss PORTA, 2 goto spegni_rele btfss PORTA, 3 goto spegni_rele bsf PORTB, 2 goto loop spegni_D2: bcf PORTB, 0 goto loop1 accendi_D3: bsf PORTB, 1 goto loop2 spegni_rele: bcf PORTB, 2 goto loop ISR_code: retfie end

; se il pulsante SW1 è premuto salta l'istruzione successiva ; in caso contrario spegni il led ; SW1 è premuto, quindi accendi il led D2 ; se il pulsante SW2 è premuto salta l'istruzione successiva ; in caso contrario accendi il led ; SW2 è premuto, quindi spegni il led D3 ; se il pulsante SW1 è premuto salta l'istruzione successiva ; se il pulsante SW2 è premuto salta l'istruzione successia ; i pulsanti sono entrambi premuti, si attiva il relè ; ricomincia il ciclo di controllo da capo ; SW2 non è premuto, quindi spegni il led D2

; SW1 non è premuto, quindi accendi il led D3

; RB4 = 0, il BJT non conduce quindi il relè è spento ; ricomincia il ciclo di controllo da capo ; in caso di interrupt, torno al programma

Soluzione 2 (Gozzoli Luca): ;--------------------------------------------------------------------------------------------------; Gozzoli Luca ; ; I.T.I.S. "B.PASCAL" - CESENA ; Piazzale CINO MACRELLI 100 47100 CESENA ; Tel. 0039.0547.22792 Fax 0039.0547.24141 ; URL: www.itis-cesena.it ; Email:vicepresidenza@itis-cesena.it ; ; File: Es_001.ASM ; Data: 07/10/2008

383


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ; Classe: 5AET2007 ; Descrizione:Creare un programma che gestisca, con due pulsanti, un relè e due led in ; ; questo modo: ; Il led D2 su RA1 sia accesso quando il pulsante SW1 su RB1 è premuto ; Il led D3 su RA1 sia spento quando il pulsante SW2 su RB3 è premuto ; Il relè su RB2 sia acceso quando i due pulsanti sono accesi ; ; ;--------------------------------------------------------------------------------------------------include"P16F84.INC" ORG 00H GOTO MAIN ORG 0X04 GOTO ISR_CODE MAIN: BCF STATUS,RP0 CLRF PORTA BSF STATUS,RP0 MOVLW b'11111000' MOVWF TRISA

;Lavoro in banco 0 ;Pulisco PORTA ;Lavoro in banco 1

BCF STATUS,RP0 CLRF PORTB BSF STATUS,RP0

;Imposto PORTA nel seguente modo: ;RA7,RA6,RA5,RA4,RA3 = Input ;RA2,RA1,RA0 = Output ;Lavoro in banco 0 ;Pulisco PORTB ;Lavoro in banco 1

MOVLW b'11111111' MOVWF TRISB

;Imposto PORTB come tutti input

LOOP: BTFSS PORTB, 0 GOTO LOOP_1 CALL LED1_ON

;Controlla il bit 0 di PORTB se è settato (pulsante P1 premuto) ;salta l'istruzione successiva ;Vai alla lable LOOP_1 ;Chiamata a LED1_ON

LOOP_1: BTFSS PORTB, 1 salta l'istruzione GOTO LOOP CALL LED2_ON

;Controlla il bit 1 di PORTB se è settato (pulsante P2 premuto) ;successiva ;Vai alla lable LOOP ;Chiamata a LED2_ON

LED1_ON: BCF PORTA, 0 RETURN

;Mette a 0 il bit 0 di PORTA (accende il led) ;Torna alla CALL LED1_ON ed esegue l'istruzione successiva

BCF PORTA, 1 RETURN

;Mette a 0 il bit 1 di PORTA (accende il led) ;Torna alla CALL LED2_on ed esegue l'istruzione successiva

LED2_ON:

ISR_CODE: RETFIE END

;Ritorna da una routine di interrupt se esso viene scatenato

384


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_2: Data una scheda a microcontrollore PIC16F877 con una frequenza di clock di 4MHz, realizzare un programma che consenta di inizializzare i registri PORTA, in modo tale da avere le seguenti combinazioni: 1) RA0 = input 2) RA1 = input 3) RA2 = input 4) RA3 = input 5) RA4 = output 6) RA5 = output A  Realizzare il FLOW-CHART del programma assegnato. B  Realizzare il software in linguaggio ASSEMBLER tramite l’uso dell’ MPLAB. Spiegazione registro PORTA PORTA è una porta bidirezionale a sei bit, il cui corrispondente registro di settaggio è TRISA. Settando un bit di TRISA a 1 si imposta il corrispondente bit di PORTA come input, viceversa si imposta come output. Leggendo il registro PORTA si può determinare il livello logico dei pin di I/O, invece scrivendolo si decide quale livello logico attribuire al pin. All’avvio (power on reset) i pin sono impostati di default a 0 e la porta è configurata in modo da essere digitale (infatti PORTA ha la possibilità di essere impostata come analogica). Flow chart:

Inizio

Imposto il registro ADCON1

Imposto i reg. TRISA e PORTA

Nessuna Operazione

385


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Software in assembler Soluzione 1 (Sacchetti Mattia) ;--------------------------------------------------------------------------------------------------; Sacchetti Mattia ; ; I.T.I.S. "B.PASCAL" - CESENA ; Piazzale CINO MACRELLI 100 47100 CESENA ; Tel. 0039.0547.22792 Fax 0039.0547.24141 ; URL: www.itis-cesena.it ; Email:vicepresidenza@itis-cesena.it ; ; File: Es_002.ASM ; Data: 07/10/2008 ; Classe: 5AET2007 ; Descrizione: Inizializzazione dei registri PORT in un PIC16F877 ; ; ;--------------------------------------------------------------------------------------------------include "P16F877.INC" __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_OFF & _HS_OSC org 00h goto main org 0x04 goto ISR_code main: bcf STATUS,RP1 bcf STATUS,RP0 clrf PORTA bsf STATUS,RP0 movlw 0x06 movwf ADCON1 movlw b'00001111' movwf TRISA

; Lavoro in banco 1 ; Pulisco PORTA ; Lavoro in banco 1 ; assegno ad ADCON1 il valore di 0x06; INGRESSI DIGITALI

bcf STATUS,RP0

; ; ; ;

assegno a TRISA il valore 00001111 in modo che PORTA sia: RA5, RA4 : Output RA3, RA2, RA1, RA0 : Input Lavoro in banco 0

nop nop goto loop

; Nessuna operazione ; Vai alla lable LOOP

loop:

ISR_code: retfie

; Ritorna da una routine di interrupt se esso viene scatenato

Soluzione 2 (Marangoni Enrico)

386


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ;--------------------------------------------------------------------------------------------------; Marangoni Enrico ; ; I.T.I.S. "B.PASCAL" - CESENA ; Piazzale CINO MACRELLI 100 47100 CESENA ; Tel. 0039.0547.22792 Fax 0039.0547.24141 ; URL: www.itis-cesena.it ; Email:vicepresidenza@itis-cesena.it ; ; File: Es_002.ASM ; Data: 07/10/2008 ; Classe: 5AET2007 ; Descrizione: Inizializzazione dei registri PORT in un PIC16F877 ; ;--------------------------------------------------------------------------------------------------Include "P16F877.inc" __CONFIG _CP_OFF & _WDT_OFF

& _PWRTE_OFF & _HS_OSC

Org 00h Goto main Org 04h Goto ISR_code main: Bcf STATUS, RP0 Bcf STATUS, RP1 Clrf PORTA Bsf STATUS, RP0 Movlw b'11001111’ Movwf TRISA

; ; ; ;

si pone in BANCO 0 pulisci PORTA si pone in BANCO 1 inizializza TRISA con RA4 es RA5 come uscite

loop: nop nop goto loop ISR_code: retfie end

387


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_3: Data una scheda a microcontrollore PIC16F877 con una frequenza di clock di 4MHz, realizzare un programma che consenta di inizializzare i registri PORTA presente nel PIC, in modo tale da avere le seguenti combinazioni: 1. RA0 = output 2. RA1 = output 3. RA2 = input 4. RA3 = input 5. RA4 = input 6. RA5 = input A  Realizzare il FLOW-CHART del programma assegnato. B  Realizzare il software in linguaggio ASSEMBLER tramite l’uso dell’ MPLAB. Flow Chart

Inizio

Imposto il registro ADCON1

Imposto i reg. TRISA e PORTA

Nessuna Operazione

Flow Chart di Gozzoli Luca

388


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Software in assembler Soluzione 1 (Sacchetti Mattia) ;--------------------------------------------------------------------------------------------------; Sacchetti Mattia ; ; I.T.I.S. "B.PASCAL" - CESENA ; Piazzale CINO MACRELLI 100 47100 CESENA ; Tel. 0039.0547.22792 Fax 0039.0547.24141 ; URL: www.itis-cesena.it ; Email:vicepresidenza@itis-cesena.it ; ; File: Es_003.ASM ; Data: 07/10/2008 ; Classe: 5AET2007 ; Descrizione: Inizializzazione dei registri PORTA in un PIC16F877 in modo tale da avere: ; ; 1. RA0 = output ; 2. RA1 = output ; 3. RA2 = input ; 4. RA3 = input ; 5. RA4 = input ; 6. RA5 = input ; ;--------------------------------------------------------------------------------------------------include "P16F877.INC" __CONFIG _CP_OFF & _WDT_OFF

& _PWRTE_OFF & _HS_OSC

org 00h goto main org 0x04 goto ISR_code main: bcf STATUS,RP1 bcf STATUS,RP0 clrf PORTA bsf STATUS,RP0 movlw 0x06 movwf ADCON1 movlw b'11111100' movwf TRISA bcf STATUS,RP0

; ; ; ; ; ; ; ;

lavoro in banco 0 azzero PORTA lavoro in banco 1 assegno a w il valore esadecimale 0x06 assegno ad ADCON1 il valore di w; ingressi digitali assegno a w il valore binario '11111100' assegno a TRISA il valore di w in modo da configurare PORTA come richiesto dall'esercizio

loop: nop nop goto loop ISR_code: retfie end

; ritorna dalla routine di interrupt se questo viene scatenato

389


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Soluzione 2 (Gozzoli Luca) ;--------------------------------------------------------------------------------------------------; Gozzoli Luca ; ; I.T.I.S. "B.PASCAL" - CESENA ; Piazzale CINO MACRELLI 100 47100 CESENA ; Tel. 0039.0547.22792 Fax 0039.0547.24141 ; URL: www.itis-cesena.it ; Email:vicepresidenza@itis-cesena.it ; ; File: Es_003.ASM ; Data: 07/10/2008 ; Classe: 5AET2007 ; Descrizione: Inizializzazione dei registri PORTA in un PIC16F877 in modo tale da avere: ; ; 1. RA0 = output ; 2. RA1 = output ; 3. RA2 = input ; 4. RA3 = input ; 5. RA4 = input ; 6. RA5 = input ; ;--------------------------------------------------------------------------------------------------Include "P16F877.INC" org 00h goto main org 10h goto isr_code main: bcf STATUS, RP0 bcf STATUS, RP1 clrf PORTA bsf STATUS, RP0 movlw b'11111100' movwf TRISA

; Lavoro in banco 0 ; Pulisco PORTA ; Lavoro in banco 1 ; ; ; ;

Metto il valore binario 11111100 in TRISA in modo da avere RA0 e RA1 come uscite e i rimanenti pin come ingressi

goto main isr_code: retfie end

; Ritorna dalla routine di interruot se questo viene scatenato

390


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_4: Realizzare un programma in grado di configurare il registro OPTION all’interno del PIC16F877 in modo tale da: 1) Non abilitare i PULL-UP su PORTB 2) Abilitare un interrupt RP0 rising-edge 3) Il Timer 0 deve utilizzare il clock interno 4) Il prescaler interno deve essere a 64

Spiegazione: Il registro OPTION è un registro sia leggibile sia scrivibile il quale contiene vari bit di controllo per configurare il prescaler del TIMER0 0,il postscaler del WDT, l’interrupt esterno INT, il TIMER0 e gli impulsi di PULL-UP su PORTB.

;--------------------------------------------------------------------------------------------------

391


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ; Ceci Leonardo 5A ; ITIS. B. PASCAL ; PIAZZALE CINO MACRELLI 100 47023 - CESENA ; ; File: ES 004 ; Project: Esercizio ; Description: Configurare il registro OPTION in un PIC16F877 in modo tale da: ; ; 1) Non abilitare i PULL-UP sulla porta b ; 2) Abilitare l’interrupt RP0 rising-edge ; 3) Timer 0 utilizza il clock interno ; 4) Timer interno a 64 ; ;-------------------------------------------------------------------------------------------------include "P16F877.INC" ;include le direttive del PIC16F877 org 00h ;al reset partiamo da 0 goto main org 04h ;quando arriva un interruzione il micro si ferma e va a ;a prendere l’istruzione a questo indirizzo goto isr_code main bcf STATUS,RP1 bcf STATUS,RP0 movlw b'11000101'

;vado in banco 0 ;vado in banco 0 ; OPTION REGISTER: ; BIT 7: /RBPU: 1: disabilito i resistori di pull up ; BIT 6: INTEDG 0: NON IMPORTANTE ; BIT 5: T0CS 0: clock interno scalato dal prescaler (vedi bit successivi) ; BIT 4: T0SE 0: NON IMPORTA se T0CS = 0 ; BIT 3: PSA 0: il prescaler viene assegnato al modulo ; ; ; ; ;

BIT 2: PS2 1: BIT 1: PS1 1: BIT 0: PS0 0: prescaler fissato a 1/128; il clock interno viene quindi diviso per 128; il clock interno risulta essere pari a Foscillatore/4 (Es: a 10MHz ho 2,5MHz)

movwf OPTION_REG loop: nop nop goto loop isr_code: retfie

; nessuna operazione

;rientra dall'interrupt e riabilita le interruzioni

392


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_5: Data una scheda a microcontrollore PIC16F877 con una frequenza di clock di 4MHz, realizzare un programma che consenta l’utilizzo dell’indirizzamento indiretto (FSR), per cancellare l’area di memoria compresa fra 20H e 2FH, interna al PIC16F877. A  Realizzare il FLOW-CHART del programma assegnato. B  Realizzare il software in linguaggio ASSEMBLER tramite l’uso dell’ MPLAB. Flow Chart

Flow Chart di Gozzoli Luca

393


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Software in assembler Soluzione 1 (Gozzoli Luca) ;--------------------------------------------------------------------------------------------------; Gozzoli Luca ; ; I.T.I.S. "B.PASCAL" - CESENA ; Piazzale CINO MACRELLI 100 47100 CESENA ; Tel. 0039.0547.22792 Fax 0039.0547.24141 ; URL: www.itis-cesena.it ; Email:vicepresidenza@itis-cesena.it ; ; File: Es_005.ASM ; Data: 07/10/2008 ; Classe: 5AET2007 ; Descrizione: Utilizzo dell’indirizzamento indiretto (FSR) per ; cancellare l’area di memoria compresa fra 20H e 2FH. ; ;--------------------------------------------------------------------------------------------------Include "P16F877.INC" ORG 00H GOTO MAIN ORG 04h GOTO ISR_CODE MAIN: bcf STATUS,RP0 bcf STATUS,RP1 MOVLW 0X20h MOVWF FSR NEXT: CLRF INDF INCF FSR,F BTFSS FSR,4

;Lavoro in banco 0 ;Metto il valore esadecimale 20h in FSR ;Imposto FSR in modo che cancelli i blocchi di memoria a ;cui fa riferimento ;Incremento FSR (FSR+1) ;Controlla se è settato il bit 4 di FSR,se è settato (FSR ;punta al blocco 2FH) salta l'istruzione successiva

GOTO NEXT GOTO MAIN ISR_CODE: RETFIE END

;Rientra dalla routine di interrupt se questo viene scatenato

394


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Soluzione 2 (Melai Thomas) ;---------------------------------------------------------------------------------------------------; Melai Thomas ; ; I.T.I.S. "B.PASCAL" - CESENA ; Piazzale CINO MACRELLI 100 47100 CESENA ; Tel. 0039.0547.22792 Fax 0039.0547.24141 ; URL: www.itis-cesena.it ; Email:vicepresidenza@itis-cesena.it ; ; File: Es_005.ASM ; Data: 07/10/2008 ; Classe: 5AET2007 ; Descrizione: Utilizzo dell’indirizzamento indiretto (FSR) per ; cancellare l’area di memoria compresa fra 20H e 2FH. ; ;---------------------------------------------------------------------------------------------------include "P16F877.INC" __CONFIG _CP_OFF & _WDT_OFF

& _PWRTE_OFF & _HS_OSC &_LVP_OFF

org 00H goto main org 0x04 goto ISR_code main: bcf STATUS, RP0 bcf STATUS, RP1 movlw 0x20 movwf FSR

; banco 0 ; inserisco il valore di memeoria 20H in FSR ; puntatore a 20H

clrf INDF

; cancella il valore in F, cioè INDF che fa riferimento ad FSR

loop: e incf FSR, F

; ; ; ; ; ;

quindi a 20H incrementa il valore di FSR (FSR+1) e lo mette in F, il programma continua ad incrementare FSR, scorrendo gli indirizzi di memoria, cancellandone il contenuto,in questo modo il programma

cancella ; tutti i valori contenuti nella parte di memoria che va da 20H a btfss FSR, 4 goto loop goto main ISR_code: retfie end

; ; ; ; ;

2FH controlla significa se è ad 1 se è ad 0

il valore del quarto bit di FSR,se questo è ad 1 che siamo a 2FH ricomincia le operazioni da loop ricomincia le operazioni da main

; in caso di interrupt, torno al programma

395


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_6: CONSEGNA Dato l'esercizio PROJ_1, commentarlo le singole istruzioni per prendere confidenza del linguaggio C. DESCRIZIONE L’esercizio proposto,è un esercizio puramente teorico;ha lo scopo di capire il funzionamento di qualunque esercizio che verrà proposto in seguito. In questo programma vengono evidenziate e spiegate singolarmente tutte le istruzioni del linguaggio C. Essendo un esercizio puramente teorico non ha bisogno di un suo FLOW-CHART. Di seguito viene proposto l’esercizio nel suo insieme. PROGRAMMA ;/*----------------------------------------------------------------------;** ORLANDI FILIPPO ;** ITIS. B. PASCAL ;** PIAZZALE CINO MACRELLI 100 47023 - CESENA ;** Email: ;** ;** ;** File: ES_012 ;** Project: Esercizo ;** Revision: ;** Date: xx/10/08 ;** Description: struttura del linguaggio C e spiegazione voci. ;** ;**----------------------------------------------------------------------*/ #include <htc.h> ad INCLUDE in assembler

// #-> sta ad indicare il preprocessore, #INCLUDE corrisponde

// indica al compilatore di prendere nei percorsi predisposti i file htc.h (equivalente di .INC) // dove però questo include tutti i tipi di pic /* dichiarazioni delle costanti utilizzate per parametrizzare il programma */ #define DEF_ENABLE_INTERRUPT 1 // equivalente di EQU, definisce a DEF_ENABLE il valore 1 #define DEF_DISABLE_INTERRUPT 0 // equivalente di EQU, definisce a DEF_ENABLE il valore 0 #define DEF_ENABLE_ALL_INTERRUPT 1 // equivalente di EQU, definisce a DEF_ENABLE il valore 1 #define DEF_DISABLE_ALL_INTERRUPT 1 // equivalente di EQU, definisce a DEF_ENABLE il valore 1 /* DICHIARAZIONE VARIABILI DI MEMORIA */ unsigned char i; // CHAR, variabile a 8 bit con segno (valori da 0 a 255) unsigned char j; // UNSIGNED CHAR, variabile senza segno (valori da -128 a 127) unsigned unsigned unsigned unsigned unsigned

char char char char char

TRISAimage TRISBimage TRISCimage TRISDimage TRISEimage

; ; ; ; ;

unsigned short aux; unsigned char vett1[10]; VETT0 a VETT9)

// vett, vettore di 10 unsigned char (l'indice va da

static void interrupt SYS_v_main(void){ // __INT rappresentazione sintattica di routine d'interrupt in c if(TMR1IF){ vanno le parentesi graffe TMR1IF

=

0;

} }

396

// static void, //in if al posto di BEGIN e di END, ci


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, void main(void){ // main,programma che gira in continuazione /* inizializzazione delle porte I/O del micro */ /* preparazione delle immagini dei registri TRIS */ TRISAimage TRISBimage TRISCimage TRISDimage TRISEimage

= = = = =

0x01; 0x01; 0x01; 0x01; 0x01;

// // // // //

inizializzazione, 0x dichiara numero esadecimale inizializzazione inizializzazione inizializzazione inizializzazione

/* area codice per altre inizializzazioni */ /*........................................*/ /* copia delle immagini TRISx nei rispettivi registri TRISx */ TRISA TRISB TRISC TRISD TRISE

= = = = =

TRISAimage; TRISBimage; TRISCimage; TRISDimage; TRISEimage;

// // // // //

assegnazione assegnazione assegnazione assegnazione assegnazione

di di di di di

TRISA TRISA TRISA TRISA TRISA

a a a a a

un un un un un

valore valore valore valore valore

/*------------ INIT TIMER 1 GESTITO AD INTERRUPT ---------------*/ OPTION = 0b10001011; /* prescaler 16 */ T1CKPS0 = 0; // PRESCALER TIMER1 = 1 T1CKPS1 = 0; T1OSCEN = 0; // oscillat.locale timer 1 bloccato T1SYNC = 0; // NON sincronizzo il clock in quanto // uso clock interno (indifferente questo // bit, legato al TMR1CS = 0) TMR1CS = 0; // SELEZIONATO clock interno OSC/4 TMR1ON = 0; // blocco momentaneamente il timer 1 TMR1H = 0x22; TMR1L = 0x33; TMR1ON = 1; // clock interno con prescaler a 1 TMR1IE = 1; /*--------------------------------------------------------------*/ /* abilitazione delle INTERRUZIONI */ PEIE = DEF_ENABLE_INTERRUPT; GIE = DEF_ENABLE_ALL_INTERRUPT;

// abilita gli interrupt mascherabili

/* inizio del ciclo main di programma */ while(1){ fino a che è vera la dichiarazione tra parentesi /* STRUTTURE DI CONTROLLO */ /* IF ... THEN ... ELSE */

// while si ripete

if(i > 0){ j = i; } else{ j = i+2; } /* SCELTA MULTIPLA */ switch(i){ equivale al case in pascal case 0: {

// lo switch j = 2; aux = j * j;

} break; case 1: { j = 4; aux = 2*j * j; } default: { j = 0; } break; }

397


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, /*----------CICLI ------------------*/ /* FOR */ for(j = 1; j < 10; j++){ i = i+j; //j++=j+1 } i = 0; while(i < 10){ j = j+i; i = i+1; } i = 0; do{ j = j+i; i = i+1; }while (i > 10); /*------------

VETTORI (ARRAY) ------------*/

for(i = 0; i<10; i++){ vett1[i] = i; }

}

i = i+1; } /* chiusura del programma */

Esercizio_7: Analizzare il comportamento del Carry usando l'istruzione SUBWF f, d. Implementare con una struttura IF(W>9) in assembler. SPIEGAZIONE:

Comportamento dell’istruzione SUBWF f, d Sintassi: subwf f, d Operazione equivalente: d= f – w (d può essere w o f) Questa istruzione sottrae il valore contenuto nel registro w dal valore contenuto nel registro indirizzato da parametro f. Il parametro d è un flag che indica su quale registro deve essere memorizzato il risultato.

Bit di STATUS : Questa istruzione influenza anche i bit di STATUS fra cui il bit C (carry flag) in questo modo:

C vale 1 se il risultato è positivo C vale 0 se il risultato è negativo

Questo programma è utile per capire l'utilizzo del carry flag. Il Carry flag indica se il risultato di un'operazione produce una risposta non contenibile nei bit usati per il calcolo. Questo flag può essere anche posizionato prima di un'operazione matematica come operando aggiuntivo per alcune istruzioni. Nel ciclo "main" viene assegnato a "w" il valore decimale 4, che successivamente viene spostato nella variabile "NUM".

398


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Successivamente viene messo in "w" il valore decimale 10. Si entra in "controllo", dove "SUBWF NUM, W" ha il compito di sottrarre "w" dalla variabile “NUM”. Con "BTFSS STATUS, 0" viene testato il carry flag. Nel caso il valore sia: 0 => viene eseguita l'istruzione successiva, ovvero passiamo alla routine, che nel caso preso in esame non fa altro che eseguire dei "nop" per poi ritornare alla subroutine. 1 => saltiamo l'istruzione successiva, nel nostro caso"nop",con conseguente ritorno al ciclo "main". FLOWCHART: START

assegna a w il valore decimale 4

mette in NUM il valore di w

assegna a w il valore decimale 10

w= NUM-w

NO

CARRY = 1?

399

SI

VAI A ROUTINE


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, PROGRAMMA: ;-------------------------------------------------------------------------; ; I.T.I.S. "B.PASCAL" - CESENA ; Piazzale CINO MACRELLI 100 47100 CESENA ; Tel. 0039.0547.22792 Fax 0039.0547.24141 ; URL: www.itis-cesena.it ; Email:vicepresidenza@itis-cesena.it ; ; File: Es_017.ASM ; Studente: Alberto Baredi ; Classe: 5AET2009 ; Descrizione: Analizzare il comportamento del Carry usando l'istruzione ; SUBWF f, d. ; Implementare con una struttura IF(W>9) in assembler. ;------------------------------------------------------------------------INCLUDE "P16F877.INC" __CONFIG _CP_OFF & _WDT_OFF

& _PWRTE_OFF & _HS_OSC

NUM EQU 20H ORG 00H GOTO MAIN ORG 04H GOTO ISR_CODE MAIN: MOVLW D'4' MOVWF NUM MOVLW D'10' CONTROLLO: SUBWF NUM, W BTFSS STATUS, 0 CALL ROUTINE NOP GOTO MAIN ROUTINE: NOP NOP RETURN ISR_CODE RETFIE

;assegna a w il valore decimale 4 ;mette in NUM il valore di w ;assegna a w il valore decimale 10 ;w= NUM-w ;testa il carry, se è 1 salta

400


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_8: /*----------------------------------------------------------I.T.I.S. "B.PASCAL" - CESENA Piazzale CINO MACRELLI 100 47100 CESENA Tel. 0039.0547.22792 Fax 0039.0547.24141 URL: www.itis-cesena.it Email:vicepresidenza@itis-cesena.it File: PROVA __DELAY Data: Classe: Descrizione: Struttura generica di un programma in C -----------------------------------------------------------*/ #include <htc.h>

/* il simbolo # indica il persorso, è una direttiva del

C questo comando prende nei percorsi previsti dall'istallazione il htc.h che include tutti i PIC, non ci sono configure*/ #define _XTAL_FREQ

4000000

#pragma inline(_delay) extern void _delay(unsigned long); #define __delay_ms(x)

_delay((unsigned long)((x)*(_XTAL_FREQ/4000.0)))

unsigned char i; unsigned long ul_var1; void main(void){

while(1){ asm("nop"); _delay(65535); asm("nop"); _delay(65535); __delay_ms(100); ul_var1 = 0x12345678; for(i=0; i <=255; i++) eeprom_write(i, i); #asm nop; bcf i,0; bsf i,0; #endasm }

} /* chiusura del programma */

401


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_1: CONSEGNA Si dispone di una scheda con microcontrollore MICROCHIP PIC16F877 dove sulla porta RA0 risulta collegato un rele' che attiva un motore elettrico che aziona un nastro trasportatore Ad ogni passaggio di un pacco sul nastro una fotocellula genera un impulso della durata di 100mS (0-->1->0) . Tale impulso, nell'hardware, viene inviato direttamente ad un ingresso contatore del microcontrollore. La scheda dispone anche di due pulsanti: START e STOP connessi alla porta RB0, RB1 rispettivamente. C'e' anche una SPIA che lampeggia con TON = 500mS e TOFF = 500mS connessa sull'uscita RA1, solamente nel caso che il nastro sia in movimento. Progettare un software per consentire di azionare il nastro quando viene premuto start e arrestarlo quando viene premuto stop (il pulsante di STOP ha priorità rispetto al pulsante di start per cui nel caso di contemporaneità dei pulsanti il nastro rimane fermo). FACOLTATIVO: gestire l'ingresso fotocellula in modo da CONTARE quanti elementi transitano sul nastro. Quando viene raggiunto il numero di 100 elementi, bloccare il nastro e avvisare l'operatore con un indicatore connesso su RA2. La gestione del conteggio deve avvenire RIGOROSAMENTE ad interrupt (interruzione quando si raggiungono i 100 elementi) A  realizzare il FLOW-CHART del programma assegnato B  sviluppare in assembler le parti relative del flowchart C  definire la routine di interrupt timer per poter fare il lampeggio delle spie D  definire la routine di interrupt relativa al conteggio

402


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, FLOW-CHART

PROGRAMMA ;/*----------------------------------------------------------------------;** ORLANDI FILIPPO ;** ITIS. B. PASCAL ;** PIAZZALE CINO MACRELLI 100 47023 - CESENA ;** Email: ;** ;** ;** File: ES_001 ;** Project: Esercizo ;** Revision: ;** Date: xx/10/08 ;** Description: Si dispone di una scheda con microcontrollore MICROCHIP PIC16F877 dove sulla porta RA0 risulta collegato un rele' che attiva un motore elettrico ;** che aziona un nastro trasportatore.Ad ogni passaggio di un pacco sul nastro una fotocellula genera un impulso della durata di 100mS (0-->1-->0) . ;** Tale impulso, nell'hardware, viene inviato direttamente ad un ingresso contatore del microcontrollore. La scheda dispone anche di due pulsanti: START e STOP ;** connessi alla porta RB0, RB1 rispettivamente. C'e' anche una SPIA che lampeggia con TON = 500mS e TOFF = 500mS connessa sull'uscita RB5, solamente nel caso ;** che il nastro sia in movimento.Progettare un software per consentire di azionare il nastro quando viene premuto start e arrestarlo quando viene premuto stop ;** (il pulsante di STOP ha priorità rispetto al pulsante di start per cui nel caso di contemporaneità dei pulsanti il nastro rimane fermo). ;** FACOLTATIVO: gestire l'ingresso fotocellula in modo da CONTARE quanti elementi transitano sul nastro. Quando viene raggiunto il numero di 100 elementi, ;** bloccare il nastro e avvisare l'operatore con un indicatore connesso su RA2. ;** La gestione del conteggio deve avvenire RIGOROSAMENTE ad interrupt (interruzione quando si raggiungono i 100 elementi) ;** 1. FARE FLOW CHART

403


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, ;** 2. sviluppare in assembler le parti relative del flowchart ;** 3. definire la routine di interrupt timer per poter fare il lampeggio delle spie ;** 4. definire la routine di interrupt relativa al conteggio ;** ;**----------------------------------------------------------------------*/ INCLUDE "P16F877.INC" COUNTER EQU 20H ORG 00H GOTO MAIN ORG 04H GOTO ISR_CODE MAIN: BCF STATUS,RP0 BCF STATUS,RP1 CLRF PORTA CLRF PORTB BSF STATUS,RP0 MOVLW b'00000000' MOVWF TRISA MOVLW b'0111' MOVWF ADCON1 MOVLW b'11011111' MOVWF TRISB MOVLW b'10000100' MOVWF OPTION_REG ;BIT ;BIT ;BIT ;BIT ;BIT ;BIT ;BIT ;BIT

7 6 5 4 3 2 1 0

a a a a a a a a

1, 0, 0, 0, 0, 1, 0, 0,

i pull-up della PORTB sono disabilitati non importante clock interno non importante psa assegnato al TMR0 prescaler a 1:32 prescaler a 1:32 prescaler a 1:32

;BIT ;BIT ;BIT ;BIT ;BIT ;BIT ;BIT ;BIT

7 6 5 4 3 2 1 0

a a a a a a a a

1, 1, 1, 0, 0, 0, 0, 0,

abilita gli interrupt abilitazione parziale interrupt abilita gli interrupt del TMR0 non importante non importante quando il TMR0 arriva da FF a 0 alza la flag non importante non importante

BCF STATUS,RP0 ;inizializzo il TMR0 MOVLW d'125' MOVWF TMR0 MOVLW d'125' MOVWF COUNTER MOVLW b'11100000' MOVWF INTCON

LOOP: BTFSS PORTB,0 GOTO LOOP

;se START=1 salta l'istruzione seguente ;va a LOOP

BTFSS PORTB,1 GOTO LOOP2 GOTO LOOP3

;se STOP=1 salta l'istruzione ;va a LOOP2 ;va a LOOP3

LOOP1:

LOOP2 BSF PORTA,0

;avvia il nastro

LOOP3 BCF PORTA,0 ;spegne il nastro GOTO LOOP ;va a LOOP ISR_CODE BCF INTCON,T0IF ;azzera i bit che scatena l'interrupt MOVLW d'125' MOVWF TMR0 ;mette 125 in TMR0 DECFSZ COUNTER ;decrementa la variabile COUNTER GOTO FINE ;va a FINE MOVLW d'125' MOVWF COUNTER

404


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, BTFSS PORTB,5 GOTO ACCENDI BCF PORTB,5 GOTO FINE ACCENDI: BSF PORTB,5 FINE: RETFIE END

;se la spia è accesa salta l'istruzione seguente ;va a ACCENDI ;spengo la spia ;va a FINE ;accende la spia ;permette di rientrare da un interrupt e riabilitare le interruzioni

Esercizio_2: /******************************************************************************* * Gozzoli Luca * * I.T.I.S. "B.PASCAL" - CESENA * Piazzale CINO MACRELLI 100 47100 CESENA * Tel. 0039.0547.22792 Fax 0039.0547.24141 * URL: www.itis-cesena.it+ * Email:vicepresidenza@itis-cesena.it * * File: Es_028.C * Data: 24/11/2008 * Classe: 5AET2009 * Descrizione: Pilotare un display a 7 segmenti ad anodo comune utilizzando * il registro PORTB con buffer 74xx244 in modo che in sequenza * di 500 ms compaiano sul display stesso i codici esadecimale * consecutivamente * ******************************************************************************** *****/ #include <htc.h> unsigned char display; unsigned char contaDGT; unsigned char counter; static void interrupt ISR_CODE(void){ if (T0IF){ scatenato dal timer 0 counter = counter--; if (counter>0){ TMR0 = 125 switch (contaDGT){ case 0: RC0 = 0; asm("nop"); asm("nop"); asm("nop"); display = 0b11111100; RC0 = 1; contaDGT = 1; break; case 1: RC0 = 0; asm("nop"); asm("nop"); asm("nop"); display = 0b01100000; RC0 = 1;

405

// controlla se l'interrupt è stato


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, contaDGT = 2; break; case 2: RC0 = 0; asm("nop"); asm("nop"); asm("nop"); display = 0b11011010; RC0 = 1; contaDGT = 3; break; case 3: RC0 = 0; asm("nop"); asm("nop"); asm("nop"); display = 0b11110010; RC0 = 1; contaDGT = 4; break; case 4: RC0 = 0; asm("nop"); asm("nop"); asm("nop"); display = 0b01100110; RC0 = 1; contaDGT = 5; break; case 5: RC0 = 0; asm("nop"); asm("nop"); asm("nop"); display = 0b10110110; RC0 = 1; contaDGT = 6; break; case 6: RC0 = 0; asm("nop"); asm("nop"); asm("nop"); display = 0b10111110; RC0 = 1; contaDGT = 7; break; case 7: RC0 = 0; asm("nop"); asm("nop"); asm("nop"); display = 0b11100000; RC0 = 1; contaDGT = 8; break; case 8: RC0 = 0; asm("nop"); asm("nop"); asm("nop"); display = 0b11111110;

406


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, RC0 = 1; contaDGT = 9; break; case 9: RC0 = 0; asm("nop"); asm("nop"); asm("nop"); display = 0b011110110; RC0 = 1; contaDGT = 10; break; case 10: RC0 = 0; asm("nop"); asm("nop"); asm("nop"); display = 0b11101110; RC0 = 1; contaDGT = 11; break; case 11: RC0 = 0; asm("nop"); asm("nop"); asm("nop"); display = 0b00111110; RC0 = 1; contaDGT = 12; break; case 12: RC0 = 0; asm("nop"); asm("nop"); asm("nop"); display = 0b00011010; RC0 = 1; contaDGT = 13; break; case 13: RC0 = 0; asm("nop"); asm("nop"); asm("nop"); display = 0b01111010; RC0 = 1; contaDGT = 14; break; case 14: RC0 = 0; asm("nop"); asm("nop"); asm("nop"); display = 0b10011110; RC0 = 1; contaDGT = 15; break; case 15: RC0 = 0; asm("nop"); asm("nop"); asm("nop");

407


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, display = 0b10001110; RC0 = 1; contaDGT = 16; break; default: contaDGT = 0; break; } T0IF = 0; } } // INIZIALIZZAZIONE PORTE E REGISTRI void main(void){ TRISB = 0x00; uscite counter = 125; TMR0 = 5; OPTION = 0b10000111;

// imposto la porta B come tutte

// metto nella variabile counter 125 // metto nel registro TMR0 il valore 5 /* Imposto l'OPTION_REG nel seguente modo: BIT 7: RBPU: 1: disabilito i resistori di pull up (scelta opinabile) BIT 6: INTEDG 0: NON IMPORTANTE BIT 5: T0CS 0: clock interno scalato dal prescaler (vedi bit successivi) BIT 4: T0SE 0: NON IMPORTA se T0CS = 0 BIT 3: PSA 0: il prescaler viene assegnato al modulo TIMER 0 BIT 2: PS2 1: BIT 1: PS1 1: BIT 0: PS0 0: prescaler fissato a 1/256 */ INTCON = 0b11100000; /* Imposto il registro INTCON nel seguente modo: BIT 7: GIE: 1: abilito gli interrupt BIT 6: PEIE: 1: abilita gli interrupt da periferica BIT 5: TMR0IE:1: abilita gli interrupt del timer 0 BIT 4: INTE: 0: disabiltia gli interrupt RB0/INT BIT 3: RBIE: 0: disabilita gli RB port change interrupt BIT 2: TMR0IF:0: metto a 0 il flag di TMR0 BIT 1: INTF: 0: non serve RB0INT BIT 0: RBIF: 0: non importante */ while(1){ } }

408


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_3: Autore: Baldacci Andrea 5AET2009 CONSEGNA: Pilotare un display a 7 segmenti ad anodo comune utilizzando il registro PORTB con buffer 74xx244 in modo che in sequenza di 1s compaiano sul display stesso i codici esadecimale consecutivamente. HARDWARE: -Scheda da collegare alla PICBOARD:

398 (BALDACCI ANDREA 5AET2009)

LISTA COMPONENTI:  integrato BUFFER 74HC244N;  R1÷R7 = 60Ω;  R8÷R12 = 15KΩ;  35 diodi LED rossi;  5 BJT BC107.

409


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, FOTO DELLA SCHEDA:

399 PARTICOLARE SCHEDA

410


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

400 SCHEDA IN FUNZIONE

401 PARTICOLARE COLLEGAMENTI

411


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, SPIEGAZIONE DELL’HARDWARE: Il display a matrice di led è gestito a FRAME, cioè viene attivata una colonna alla volta grazie al relativo transistor pilotato da RA0÷RA5, e le porte B (RB0÷RB6) indicano quali led si dovranno accendere. Per i frame successivo si disattiverà il transistor e si attiverà il transistor successivo; in PORTB sarà presente il codice relativo ai led da accendere. E così via fino all’ultima fila, poi si ripartirà dall’inizio. Questo processo è ripetuto per tutte le volte necessarie per visualizzare per un secondo la stessa cifra esadecimale. Il frame ha una durata di 5ms, che ripetuto 200 volte completa il secondo. SPIEGAZIONE DEL SOFTWARE: Il software lancia ogni 5ms un interrupt dove cambia la porta col transistor da attivare e il codice da inserire in PORTB; ogni 200 ripetizioni (1sec) sostituisce i codici che inserisce ogni volta in PORTB con quelli della cifra successiva. FLOWCHART:

402 (BALDACCI ANDREA 5AET2009)

412


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

403 (BALDACCI ANDREA 5AET2009)

PROGRAMMA: /********************************************** * * Baldacci Andrea * * I.T.I.S. "B.PASCAL" - CESENA * Piazzale CINO MACRELLI 100 47100 CESENA * Tel. 0039.0547.22792 Fax 0039.0547.24141 * URL: www.itis-cesena.it * Email:vicepresidenza@itis-cesena.it * * File: ES_032.C * Data: * Classe: 5AET2009 * Descrizione: Pilotare un display a 7 segmenti ad anodo * comune utilizzando il registro PORTB con buffer * 74xx244 in modo che in sequenza di 1s * compaiano sul display stesso i codici * esadecimale consecutivamente (i tempi sono * PERFETTI, ai decimi di millisecondo) * *********************************************/ #include <htc.h> #define N_COLONNE

5

/* DICHIARAZIONE VARIABILI DI MEMORIA */ unsigned unsigned unsigned unsigned

char char char char

var1; indice; vett_righe[N_COLONNE]; conta_num;

unsigned char TRISAimage;

413


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, unsigned char TRISBimage; static void interrupt ISR_code (void){ if(TMR1IF){ TMR1IF = 0; TMR1L = 0x94; TMR1H = 0xFD;

//__INT // controllo che l'interrupt sia stato //lanciato da TMR1

// TMR1L <- 94 /* TMR1H <- FD * complessivamente: TMR1= FD94 */

// spengo tutti i transistor PORTA = 0; // riparto se sono alla colonna 5 if(indice > N_COLONNE-1){ indice = 0; } // seleziono la colonna desiderata PORTB = vett_righe[indice]; // attivo la relativa uscita switch(indice){ case 0: RA0 = 1; break; case 1: RA1 = 1; break; case 2: RA2 = 1; break; case 3: RA3 = 1; break; case 4: RA5 = 1; break; } indice = indice++; var1 = var1++; } } void main(void){ PORTA = 0; PORTB = 0; ADCON1 = 0b110; var1 = 200; indice = 5; conta_num = 0; /* inizializzazione delle porte I/O del micro */ /* preparazione dell' immagine del registro TRISx */ TRISAimage = 0; TRISBimage = 0; /* copia dell' immagine TRISx nel rispettivo registro */ TRISA = TRISAimage; TRISB = TRISBimage;

// PORTA-->OUTPUT // PORTB-->OUTPUT

/*------------ INIT INTERRUPT ---------------*/ T1CON = 0b00110000; /* configurazione di TMR1: * BIT 7: non utilizzato * BIT 6: non utilizzato * BIT 5: T1CKPS1 : 1: * BIT 4: T1CKPS0 : 1: prescaler fissato a 1/8 * BIT 3: T1OSCEN : 0: oscillatore interno disabilitato * BIT 2: /T1SYNC : 0: non importante * BIT 1: TMR1CS : 0: sorgente clock interno * BIT 0: TMR1ON : 0: TIMER1 è off per ora */

414


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, TMR1L = 0x94; TMR1H = 0xFD;

PIR1 = 0; PIE1 = 1;

// TMR1L <- 94 /* TMR1H <- FD * complessivamente: TMR1 = FD94 * FFFF-FD94=26B => 26B*8=4952us * (con i tempi residui causati dalle varie righe * di programma si raggiungono i 5,000ms */ // resetto il flag TMR1IF // TMR1IE = 1 (abilito interruzioni possibili su // TIMER1)

INTCON = 0b11000000; TMR1ON = 1;

// abilito gli interrupt generale e // periferico // abilito modulo TIMER1

/*--------------------------------------------------------------*/ while(1){ // se il secondo è completo passo al numero successivo if(var1>199){ if(indice > (N_COLONNE-1)){ TMR1ON = 0; var1 = 0; indice = 0; switch(conta_num){ case 0: vett_righe[0] = 0b00111110; vett_righe[1] = 0b01000001; vett_righe[2] = 0b01000001; vett_righe[3] = 0b01000001; vett_righe[4] = 0b00111110; break; case 1: vett_righe[0] = 0b01000100; vett_righe[1] = 0b01000010; vett_righe[2] = 0b01111111; vett_righe[3] = 0b01000000; vett_righe[4] = 0b01000000; break; case 2: vett_righe[0] = 0b01000010; vett_righe[1] = 0b01100001; vett_righe[2] = 0b01010001; vett_righe[3] = 0b01001001; vett_righe[4] = 0b01000110; break; case 3: vett_righe[0] = 0b00100010; vett_righe[1] = 0b01000001; vett_righe[2] = 0b01001001; vett_righe[3] = 0b01001001; vett_righe[4] = 0b00110110; break; case 4: vett_righe[0] = 0b00001000; vett_righe[1] = 0b00001100; vett_righe[2] = 0b00001010; vett_righe[3] = 0b01111111; vett_righe[4] = 0b00001000; break; case 5: vett_righe[0] = 0b00100111; vett_righe[1] = 0b01000101; vett_righe[2] = 0b01000101; vett_righe[3] = 0b01000101; vett_righe[4] = 0b00111001; break; case 6: vett_righe[0] = 0b00111110; vett_righe[1] = 0b01001001; vett_righe[2] = 0b01001001; vett_righe[3] = 0b01001001; vett_righe[4] = 0b00110010; break; case 7: vett_righe[0] = 0b00000001; vett_righe[1] = 0b00000001; vett_righe[2] = 0b00001001;

415


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, vett_righe[3] = 0b01111111; vett_righe[4] = 0b00001000; break; case 8: vett_righe[0] vett_righe[1] vett_righe[2] vett_righe[3] vett_righe[4]

= = = = =

0b00110110; 0b01001001; 0b01001001; 0b01001001; 0b00110110;

vett_righe[0] vett_righe[1] vett_righe[2] vett_righe[3] vett_righe[4]

= = = = =

0b00100110; 0b01001001; 0b01001001; 0b01001001; 0b00111110;

= = = = =

0b01111110; 0b00010001; 0b00010001; 0b00010001; 0b01111110;

= = = = =

0b01111111; 0b01001001; 0b01001001; 0b01001001; 0b00110110;

= = = = =

0b00111110; 0b01000001; 0b01000001; 0b01000001; 0b00100010;

= = = = =

0b01111111; 0b01000001; 0b01000001; 0b01000001; 0b00111110;

= = = = =

0b01111111; 0b01001001; 0b01001001; 0b01001001; 0b01001001;

= = = = =

0b01111111; 0b00001001; 0b00001001; 0b00001001; 0b00000001;

break; case 9:

break; case 10: vett_righe[0] vett_righe[1] vett_righe[2] vett_righe[3] vett_righe[4] break; case 11: vett_righe[0] vett_righe[1] vett_righe[2] vett_righe[3] vett_righe[4] break; case 12: vett_righe[0] vett_righe[1] vett_righe[2] vett_righe[3] vett_righe[4] break; case 13: vett_righe[0] vett_righe[1] vett_righe[2] vett_righe[3] vett_righe[4] break; case 14: vett_righe[0] vett_righe[1] vett_righe[2] vett_righe[3] vett_righe[4] break; case 15: vett_righe[0] vett_righe[1] vett_righe[2] vett_righe[3] vett_righe[4] break; } conta_num = conta_num++; if(conta_num>15){ conta_num = 0; } TMR1ON = 1; } } } }

416


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_4: /*----------------------------------------------------------Melai Thomas I.T.I.S. "B.PASCAL" - CESENA Piazzale CINO MACRELLI 100 47100 CESENA Tel. 0039.0547.22792 Fax 0039.0547.24141 URL: www.itis-cesena.it Email:vicepresidenza@itis-cesena.it File: Data: Classe: Descrizione: tasti

Es_033.c 5AET2008 Si vuole realizzare un sistema ANTIFURTO con tastiera a 16 (0---9 A,B,C,D,#,*) a gestione di due RELE' ALLARME e

ELETTROSERRATURA. La tastiera viene gestita a matrice 4 x 4 ---------------------------------------------------------------------------------------*/ #include <htc.h> unsigned char conta; static void interrupt isrCODE(void){ if (T0IF){ TMR0 = 130; T0IF = 0; if (Tar>0){ Tar -- ; } //if Tar if (Trip>0){ Trip -- ; } //if Tar

// ricarico il valore di TMR0 // azzero l'interrups // decremento la variabile Anti Rimbalizi // decremento la variabile RIPetizioni

}// if T0IF } void main(void) { TRISB = 0xF0;

// sono uscite da RB0 a RB3, mentre sono ingressi da RB4 a RB7

STATO = 0; imgPORTB = 0; scanROW = 0x0E; TMR0 = 130; Tar = 10; Tip = 250;

// valore del Timer0 (255 valore massimo -125 valore arbitrio = 130 valore TMR0) // variabile per i rimbalzi dei pulsanti (Anti-Rimbalzo) // variabile per le RIPetizioni

OPTION = 0b10000011; /* BIT 7: /RBPU: 1: disabilito i resistori di pull up 6: INTEDG 0: NON IMPORTANTE 5: T0CS 0: seleziona il clock per il TMR0 4: T0SE 0: NON IMPORTA se T0CS = 0 3: PSA 0: il prescaler viene assegnato al modulo TIMER 0 2: PS2 0: abilita il prescaler con il valore 16 (011) 1: PS1 1: " " 0: PS0 1: " " */ T0IE = 1; PEIE = 1; GIE = 1;

// abilito l'interupt del timer 0 // attivo l'interupt

while(1){

417


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, PORTB = scanROW; if (PORTB & 0xF0){ switch (STATO){ case 0:{

} break; //---- controllo Anti Rimbalzi----case 1:{

// assegno un valore alle uscite di portB // controllo se ci sono variazioni in uscita // c'è stata una pressione dei pulsanti // STATO = 0 imgPORTB = PORTB; // salvo un'immagine di PORTB per scoprire se si tratta di un rimbalzo STATO = 1; // passo al blocco sucessivo Tar = 10; // ricarico la varibile per il conteggio dei 20ms per l'antirimbalzo

// STATO = 1 if (Tar==0){ // controllo che siano passati 20ms, se no il programma continua a girare in

STATO=1

if (PORT==imgPORTB){ // se i due valore sono uguali, vuol dire che non era un

rimbalzo //---- decodifica tasti----STATO = 2; Trip = 250; }//if Trip else{ stato = 0; }

// passo allo stato sucessivo // se il tasto rimane premuto, controllo il tempo delle ripetizioni

// era un rimbalzo, torno da capo

}// if Tar break; //---- controllo ripetizioni----

case 2:{

STATO=2

// STATO = 2 if (Trip==0){ // controllo che siano passati 500ms, se no il programma continua a girare in if (PORT==imgPORTB){// se i due valore sono uguali, significa che c'è una ripetizione } }

break; default: quella iniziale

stato = 0;

// per sicurezza, se lo STATO è in una situazione diversa, torna sempre a

break;

}//if portB //---- ruotine varizione uscite---else{ // non c'è stata pressione di nessun tasto switch (scanROW){ // cambio la configurazione delle uscite, da RB0 a RB3 case 0x0E: scanROW = 0x0D; // 0000 1110 --> 0000 1101 break; case 0x0D: scanROW = 0x0B; // 0000 1101 --> 0000 1011 break; case 0x0B: scanROW = 0x07; // 0000 1011 --> 0000 0111 break; case 0x07: scanROW = 0x0E; // 0000 1110 --> 0000 1101 break; default: scanROW = 0x0E; // per sicurezza, se lo PORTB è in una situazione diversa, torna sempre a quella iniziale break; }//switch }//else }//while }

418


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_5: Si devono dimensionare delle resistenze in modo da avere una traslazione di tensione da 0-50V a 0-5V.

Spiegazione: Questo esercizio richiede un dimensionamento delle resistenze in modo da avere una traslazione di tensione fra due livelli. Nel nostro la nostra scelta circuitale prevede l’impiego di 10 resistenze in serie da 10 KOhm ciascuna. Questa soluzione circuitale viene adottata nel condizionamento di una dinamo tachimetrica. Circuito:

R1 =R2 = R3 =R4 =R5 =R6 =R7 =R8 =R9 =R10 =10K Vout= (Vin*R10)\(R1+R2+R3+R4+R5+R6+R7+R8+R9+R10)=(50+10000)\(100000)= 5 V Tramite questa soluzione riusciamo ad avere quindi un passaggio da una Vin di 50 V a una Vout di 5 V.

419


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_1: ************************************************************ * * Baldacci Andrea * * I.T.I.S. "B.PASCAL" - CESENA * Piazzale CINO MACRELLI 100 47100 CESENA * Tel. 0039.0547.22792 Fax 0039.0547.24141 * URL: www.itis-cesena.it * Email:vicepresidenza@itis-cesena.it * * File: ES_053 * Data: * Classe: 5AET2009 * Descrizione: Verificare al variare di K che relazione c’è fra IN e OUT tenendo fisso Vret a 0. * ************************************************************ Schema circuitale:

R1=R2=R3=R4=R R6=R7=R5=KR

420


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Con R7 tutta in su:

R3 )  2V R1 Vcc Vee Vcc Vee   2Vcc  Vee 2 KR Vp1  R5 R 6  R7  KR 2 KR  * 1 1 1 1 2 KR 3   R5 R 6  R 7 KR 2 KR Vp1 Vp1 Vp1 R2 V1   R  1 1 2 2  R2 R4 R 2Vcc  Vee Vo1  Vp1  3 Vo  V * (1 

Con R7 a metà:

Vcc Vee  KR KR 3KR KR  KR  Vcc  Vee Vcc  Vee 2 2  Vp 2  * 2  1 1 3KR 2 2  KR KR 2 KR  KR  2 2 Vp 2 V 2  2 Vcc  Vee Vo 2  Vp 2  2 Con R7 in giù:

Vcc Vee  Vcc  2Vee 2 KR Vcc  2Vee Vp 3  2 KR KR  *  1 1 2 KR 3 3  2 KR KR Vcc  2Vee Vo3  Vp 3  3

Considerazioni finali: La relazione che c’è fra IN e OUT, tenendo fisso Vret a 0, è: L’ uscita vale il valore che c’è sul piedino centrale di R7, la resistenza variabile (Vp).

421


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_2: Determinare la funzione di trasferimento del seguente circuito:

Questo circuito è un op. amp. in configurazione sommatore non invertente, la formula per determinare V0 è la seguente: V0 = V+*(1+ R5/R6) Determiniamo la tensione nel punto V+ utilizzando il teorema di Millman. V+ = [(V1/R1)+(V2/R2)+(V3/R3)+(V4/R4)]/[(1/R1)+(1/R2)+(1/R3)+(1/R4)] Facendo le dovute trasformazioni si ricava la sunzione di trasferimento

fdt = V0/ Vi = V0 / V+ Esercizio_3: Testo dell’esercizio Determinare la funzione di trasferimento del seguente circuito.

422


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Risoluzione Vo = (- V1*R4/R1 - V2*R4/R2 - V3*R4/R3) + [(Vi*R6)/)R6+R5)] In questo circuito la Vi serve solamente a traslare l’uscita in verticale per farla stare nel range compreso fra Vsat e –Vsat. Schema elettrico

Vo = (- V1*R4/R1 - V2*R4/R2 - V3*R4/R3) + [(Vi*R6)/)R6+R5)] Vo = (- 2*1/1 - 1*1/1 - 3*1/1) + 0 = - 6 V (vedi grafico)

423


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_2: /************************************************************************* * * Gozzoli Luca * * I.T.I.S. "B.PASCAL" - CESENA * Piazzale CINO MACRELLI 100 47100 CESENA * Tel. 0039.0547.22792 Fax 0039.0547.24141 * URL: www.itis-cesena.it * Email:vicepresidenza@itis-cesena.it * * File: ES_PPM.C * Data: 09/02/09 * Classe: 5AET2009 * Descrizione:realizzare un programma in C ceh genera i segnali D e P * in questo modo: RB0<=>D * RB1<=>P * la generazzione passi avviene utilizzando timer a 1ms * (500Hz di frequenza). * Con RB2 si abilita il funzionamento * RB2 = 1 <=> su P ho la frequenza impostata * RB2 = 0 <=> P = 0 * ************************************************************************/ #include <htc.h> unsigned char COUNTER; unsigned char D; unsigned char P; static void interrupt isrCODE(void){ if (T0IF){ TMR0 = 125; COUNTER = COUNTER--; if (COUNTER==0){ COUNTER=125; if(RB2){ RB4 = D; RB5 = P; } } T0IF = 0; } }

// DIREZIONE // PASSO

void main(void){ TRISB = 0b00000100; COUNTER = 125; TMR0 = 125; OPTION = 0b10000101; INTCON = 0b11100000; P = 1; D = 0; RB2 = 1; while(1){ asm("nop"); } }

424


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_1: Calcolare la funzione di trasferimento del seguente schema a blocchi e realizzarlo utilizzando OP-AMP. X compresa fra 0V e 2V. H = 1,25; G3 = 2,5; G4 = 2;

Y G3  G 4 2,5  2 4,5     0,68 X 1  (G 3  G 4) H 1  ( 2,5  2)1,25 6,625

Riduzione di blocchi in cascata:

Riduzione di blocchi in parallelo:

425


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

Blocco in retroazione negativa:

426


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

427


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_2: Calcolare la funzione di trasferimento del seguente schema a blocchi e realizzarlo utilizzando OP-AMP.

Y 2,25  2,25 * 1,6 5,85    1,5 X 1  0,5 * (2,25  2,25 * 1,6) 3,925

428


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

429


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

430


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_3: Calcolare la funzione di trasferimento del seguente schema a blocchi e realizzarlo utilizzando OP-AMP.

Y 1,5  2 35  *10   12,9 X 1  (1,5  2) * 0,1 2,7

431


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

432


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

433


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

434


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_4: Calcolare la funzione di trasferimento del seguente schema a blocchi e realizzarlo utilizzando OP-AMP. X compresa fra 0V e 10V.

Y 5*6 30    0,81 X 1  5 * 6 * (0,2  1) 37

435


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ÂŞA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it,

436


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_5: Calcolare la funzione di trasferimento del seguente schema a blocchi:

Per analizzare il circuito dobbiamo separarlo in due stadi distinti tra di loro nel punto di nodo. Il primo stadio presenta un sistema in retroazione unitario, con due stati di guadagno G 1 e G2 in serie. La funzione di trasferimento del primo stadio risulta essere: E=X–V V = E*(G1 G2) Sostituisco il valore di E  V = (X – V)* (G1 G2) V = X G1 G2 – V G1 G2 Separo le variabili e raccolgo V: V + V G1 G2 = X G1 G2  V*(1+ G1 G2) = X G1 G2 Il segnale di uscita al primo stadio è pertanto: V = (X G1 G2)/ (1+ G1 G2) Il segnale V di uscita dal primo stadio viene poi separato nel punto di nodo, questo viene elettronicamente rappresentato con un op. amp. in configurazione Buffer. Nel secondo stadio il segnale V viene amplificato in modo indipendente dal blocco G3 e G4 che sono in parallelo e poi i due valori vengono sommati da un blocco sommatore. Il segnale di uscita è: Y = V*G3 + V*G4 che equivale a Y = V*( G3 + G4) Sostituendo il valore di V troviamo la funzione di trasferimento del seguente circuito: Y = [(X G1 G2)/ (1+ G1 G2 )] * ( G3 + G4)

437


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_1: Esprimere nel dominio del tempo la relazione tra Vo e Vi nel seguente circuito.

Trasformate di Laplace

L[ VL(t) ] = VL(s) = L * IL(s) Ci possiamo dunque ricondurre al seguente schema

V0(S) = (Vi(S) / (R + SC + (1/SC))) * 1/SC

  Vi ( s) Vo ( s)   1   R  SL  SC 

  1 Vi ( s) 1 Vi ( s) *  *  2  SC SRC  S LC  1 SC SRC  S 2 LC  1   SC

438


ITIS "B. Pascal - P.le Macrelli, 100 - 47023 Cesena (FC) - tel. +39 0547 22792 - fax +39 0547 24141

Sistemi 5ªA Elettronica telecomunicazioni Prof, giuseppe.ferraro@itis-cesena.it, Esercizio_2: Studiare nel seguente circuito:

1) l’andamento al transitorio di questa rete nel dominio del tempo; 2) l’andamento della corrente che passa nel circuito nel dominio del tempo

1) Andamento del transitorio di questa rete nel dominio del tempo.

10 * 1 / SL 2 R  SL  1 / SL 10 10 Vout   2 5 SRC  S LC  1 S * 20 * 10  S 2 * 10 3 * 10 5 Vout 

2) Andamento della corrente che passa nel circuito nel dominio del tempo.

Ldi(t ) 1   i (t )dt dt C di (t ) 1 L[10]  l[i (t ) * R]  L[ L ]  L[  i (t )dt dt C

V  i (t ) * R 

439


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.