Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
3
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
• Con interrupciones:
INICIO DE INTERRUPCIÓN
INICIO
ENTRADAS
CONFIGURACIÓN DE
INTERRUPCIONES
PROCESOS
CICLO CONTINUO
(EJECUCIÓN DEL
PROGRAMA SALIDAS
PRINCIPAL)
FIN DE INTERRUPCIÓN
5
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
Tipos de Interrupciones
Interrupciones por software
Tanto los PICs como los Atmega disponen de interrupciones por tiempo
que podemos aprovechar para generar intervalos (dt) de una manera
“precisa”. Cada vez que se dispare una interrupción tomaremos una
muestra.
Interrupción
Interrupción
6
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
Interrupciones en Arduino
Generación de dt para producir Interrupciones por software
Tipos de Timers
En los chips AVR Atmega 328 (Arduino UNO) se dispone de 3 timers, mientras
que en los Atmega 2560 (Arduino MEGA) se cuenta con 6 timers.
7
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
Interrupciones en Arduino
Generación de dt para producir Interrupciones por software
Clock Prescaler
(del cristal) N = N RESET? > ISR
Interrupciones en Arduino
Generación de dt para producir Interrupciones por software
Configuraremos el Timer 1 de la Arduino UNO ó MEGA 2560 para que cuente
pulsos de una señal de clock cuya frecuencia se fija previamente.
Ejemplo:
La placa opera con un oscilador de 16MHz. Existe un divisor de
frecuencia configurable por el usuario denominado “prescaler” que
puede tomar los valores 1, 8, 64, 256 ó 1024.
Por lo tanto la frecuencia de la señal de clock aplicada al Timer 1 será:
16𝑀𝐻𝑧
𝐹𝑐𝑙𝑜𝑐𝑘 =
𝑃𝑟𝑒𝑠𝑐𝑎𝑙𝑒𝑟
9
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
Interrupciones en Arduino
Generación de dt para producir Interrupciones por software
16𝑀𝐻𝑧
𝐹𝑐𝑙𝑜𝑐𝑘 =
𝑃𝑟𝑒𝑠𝑐𝑎𝑙𝑒𝑟
Interrupciones en Arduino
Generación de dt para producir Interrupciones por software
Configuración del Timer 1 para adquisición de señales analógicas
11
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
Interrupciones en Arduino
Configuración del Timer 1 para adquisición de señales analógicas
12
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
Interrupciones en Arduino
Configuración del Timer 1 para adquisición de señales analógicas
𝑓
𝑐𝑙𝑘
𝑓𝑐𝑜𝑛𝑡𝑒𝑜 = 𝑝𝑟𝑒𝑠𝑐𝑎𝑙𝑒𝑟 (frecuencia de clock del contador)
1
𝑇𝑐𝑜𝑛𝑡𝑒𝑜 = 𝑓 (tiempo entre cada conteo)
𝑐𝑜𝑛𝑡𝑒𝑜
1
𝑇𝑠 , 𝑓𝑠 = 𝑇 (periodo o frecuencia de muestreo deseados)
𝑠
𝑇𝑠 𝑓𝑐𝑜𝑛𝑡𝑒𝑜
𝑁𝑚𝑎𝑥 = 𝑇𝑐𝑜𝑛𝑡𝑒𝑜 − 1 = 𝑓𝑠
−1 (valor máximo de reset del contador)
13
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
𝑠
𝑓𝑐𝑙𝑘 = 100 𝑘𝐻𝑧 ⇒ 𝑇𝑐𝑙𝑘 = 1. 10−5
𝑐𝑖𝑐𝑙𝑜
𝑠
𝑡𝑐𝑜𝑛𝑣 ≅ 14 𝑐𝑖𝑐𝑙𝑜𝑠 . 1. 10−5 = 1,4. 10−4 𝑠 ⇒ 𝑓𝑠 𝑚á𝑥 ≅ 7,1𝑘𝐻𝑧
𝑐𝑖𝑐𝑙𝑜
15
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
𝑠
𝑓𝑐𝑙𝑘 = 100 𝑘𝐻𝑧 ⇒ 𝑇𝑐𝑙𝑘 = 1. 10−5
𝑐𝑖𝑐𝑙𝑜
𝑠
𝑡𝑐𝑜𝑛𝑣 ≅ 14 𝑐𝑖𝑐𝑙𝑜𝑠 . 1. 10−5 = 1,4. 10−4 𝑠 ⇒ 𝑓𝑠 𝑚á𝑥 ≅ 7,1𝑘𝐻𝑧
𝑐𝑖𝑐𝑙𝑜
16
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
𝑏𝑦𝑡𝑒𝑠 𝑏𝑖𝑡𝑠
2 . 10 𝑠
𝑐𝑎𝑛𝑎𝑙 𝑏𝑦𝑡𝑒
𝑡𝑒𝑛𝑣𝑖𝑜 = ≅ 1,73. 10−4 ⇒ 𝑓𝑠 𝑚á𝑥 ≅ 5,7𝑘𝐻𝑧
𝑏𝑖𝑡𝑠 𝑐𝑎𝑛𝑎𝑙
115200 𝑠
17
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
18
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
Circuito básico propuesto para superponer una continua de valor Vcc/2 a Vx:
Vx
Tensión en PIC
1.5
5
4.5
1
4
0.5 3.5
3
0 2.5
2
-0.5
1.5
-1 1
0.5
-1.5 0
19
Guía de
Ejercicios
N° 8
20
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
CÓDIGO ARDUINO
21
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
//DECLARACIONES
// SALIDAS DIGITALES:
const int D0=4; const int D1=5; const int D2=7; const int D3=9;
// ENTRADAS DIGITALES:
const int D4=2; const int D5=3; const int D6=6; const int D7=8;
// ENTRADAS ANALÓGICAS:
const int AN0=0; const int AN1=1; const int AN2=2; const int AN3=3;
// VARIABLES
char caracterEntrada; int entradaDigital, b0, b1, b2, b3, dato;
byte vector1[2], vector2[10];
String canal; boolean estado; int contador; int dato1, dato2, dato3, dato4;
22
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
// INICIALIZACIÓN DE CONTADOR
contador = 0; estado = false;
23
}// FIN DEL SETUP
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
25
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
26
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
27
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
28
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
// FUNCIÓN configuraInterrupcion1()
void configuraInterrupcion1(boolean b0, boolean b1, boolean b2, int dN) {
cli(); // Deshabilita las interrupciones globales para configurar los registros
// del Timer 1
TCCR1A = 0; // Se vacía el registro
TCCR1B = 0; // Se vacía el registro
OCR1A = dN; // Registro que se comparará constantemente con el timer
TCCR1B |= (1 << WGM12); // Se configura un preescalador:
TCCR1B |= (b0 << CS10); // Se pone a b0 el bit CS10 (Clock Select bit 10)
TCCR1B |= (b1 << CS11); // Se pone a b1 el bit CS11 (Clock Select bit 11)
TCCR1B |= (b2 << CS12); // Se pone a b2 el bit CS12 (Clock Select bit 12)
TIMSK1 = (1 << OCIE1A); // Se configura el timer como comparador
sei(); // Habilita las interrupciones globales para que funcionen las
// interrupciones programadas
} // fin de la función configuraInterrupcion1()
29
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
// INTERRUPCIÓN 1
ISR(TIMER1_COMPA_vect) {
dato1 = analogRead(AN1);
dato2 = analogRead(AN2);
//dato3 = analogRead(AN2);
//dato4 = analogRead(AN3);
vector2[0] = lowByte(word(dato1)); vector2[1] = highByte(word(dato1));
vector2[2] = lowByte(word(dato2)); vector2[3] = highByte(word(dato2));
//vector2[4] = lowByte(word(dato3)); //vector2[5] = highByte(word(dato3));
//vector2[5] = lowByte(word(dato4)); //vector2[7] = highByte(word(dato4));
Serial.write(vector2,4);
// estado = ~estado;
// digitalWrite(D3,estado);
contador = contador + 1;
if (contador == 500){
contador = 0;
deshabilitaInterrupcion1();
} //FIN DEL IF
30
}// FIN DE LA INTERRUPCIÓN 1
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
//FUNCIÓN deshabilitaInterrupcion1()
void deshabilitaInterrupcion1(){
cli(); // Deshabilita las interrupciones globales para configurar los registros
// del Timer 1
TCCR1A = 0; // Se vacía el registro
TCCR1B = 0; // Se vacía el registro // deshabilita el clock del contador
TCCR1B |= (0 << CS10); // Se pone a 0 el bit CS10 (Clock Select bit 10)
TCCR1B |= (0 << CS11); // Se pone a 0 el bit CS11 (Clock Select bit 11)
TCCR1B |= (0 << CS12); // Se pone a 0 el bit CS12 (Clock Select bit 12)
sei(); // Habilita las interrupciones globales
}// fin de la función deshabilitaInterrupcion1()
31
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
Ejemplo:
32
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
Interrupciones en PIC
Generación de dt para producir Interrupciones por software
Tipos de Timers
En los PIC 18F2550 se dispone de 4 Timers.
33
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
Interrupciones en PIC
Generación de dt para producir Interrupciones por software
Cada Timer del PIC 18F2550 cuenta pulsos de una señal de clock cuya
frecuencia se fija previamente.
Ejemplo:
Si el PIC trabaja con un oscilador de 20MHz por medio de una
elemento de hardware denominado PLL la frecuencia de reloj del
sistema será de 48MHz.
Existe un divisor de frecuencia configurable por el usuario denominado
“prescaler” que puede tomar los valores 1, 2, 4 u 8.
Por lo tanto la frecuencia de la señal de clock aplicada a un Timer será:
34
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
Interrupciones en PIC
Generación de dt para producir Interrupciones por software
35
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
Interrupciones en PIC
Producido un dt disparamos una interrupción con el
módulo CCP1
El módulo CCP1
• El módulo CCP1 se puede asociar al Timer 1. (mediante un registro de
control asociado a CCP1).
36
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
Ejemplo : se quiere leer con el PIC dos entradas analógicas 500 veces cada 0,5 ms
(2000 muestras/s)
37
continua
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata
Ejemplo : se quiere leer con el PIC dos entradas analógicas 500 veces cada 0,5 ms
38
Guía de
Ejercicios
N° 8
39