Sei sulla pagina 1di 5

Interrupciones

• Se activan con el cambio de estado de un pin de entrada I/O


• Útiles para cambiar el valor de una variable sin estar monitoreando el estado del pin
• Ejemplo: Cuando se ejecutan procesos lentos en el módulo de loop()

Polling (ciclo de interrogación)


• Más simple para implementar
• Software
• Hardware
• No hay forma de implementar multitarea
• Problemas con funciones “lentas”
• Dificultades para capturar pulsos que dependen del tiempo
• Ejemplo: Control de rotación del moto

Interrupciones
• Aunque es sencillo de implementar, requiere de programación adicional
• A nivel de hardware, se requiere controlar el tiempo de estabilización
• Es posible implementar una pseudo “multitarea”
• Puede capturar pulsos de corta duración en cualquier momento

Modulo Timer e interrupciones


Se debe usar el comando attachInterrup(Id, función, modo)
• Id: El número de la interrupción a utilizar (0 o 1 en el caso del Arduino Uno)
• Función: La función que debe ejecutarse en caso de activar la interrupción
• Modo: Estado del pin para activar la interrupción
• LOW, CHANGE, RISING, FALLING o HIGH

• Timer
Usos
• Controlar la frecuencia del PWM
• Generación de pulsos
• Programar su duración y ancho
• Conteo de pulsos de entrada
• Cuando se requieren mas de dos pines para generar interrupciones
• Medición precisa de los pulsos
• Son contadores físicos que van de 0 hasta 216 -1 o 65.535
• Después vuelven a cero
• La cuenta se hace por cada pulso del reloj interno del tablero
• Su uso es para medir eventos temporizados
• Trabajan como interrupciones pero controlados por tiempo y no por señales externas
En el caso de Arduino uno
• Timer0 (8 bit): mills(), delay(), micros()
• Timer1 (16 bit): Servo Library
• TImer2 (8 bit): tone()
• El reloj de operación es normalmente 16 MHz
• Excepto Arduino Pro (8 MHz) • Todos los timers están configurados a 1 Khz
Ventajas
• Código limpio y elegante
• Interrupción salta al momento de cumplirse el tiempo programado
• Forma de operar los sistemas modernos
• Aún con delay() en servicio, la interrupción funciona limpiamente
• La medida de tiempo es muy precisa

Desventajas
• Si tocamos los timers, algunas instrucciones dejarán de funcionar
• PWM
• AnalgoWrite()
• Librería Servo
• Si entra en conflicto con algo, será complicado comprender el problema
• Un mal cálculo de tiempo puede “colgar” al sistema

• Dos tipos de interrupciones:


• Por señal externa (IRQ)
• Por tiempo (Timer)
• Permiten multitarea
• Hay 2 en Arduino Uno (0 y 1)
• Un circuito RC con un Schmitt trigger son necesarios para eliminar la señal de rebote en los
interruptores

• Timer se utiliza como herramienta para el manejo de tiempos mediante interrupciones


• Hay 3 timers en el Arduino 1
• Timer0: millis(), delay(), pines 5 y 6
• Timer1: Librería Servo, pines 9 y 10
• Timer2: Pines 3 y 11
• Se debe tener cuidado con su manejo porque puede afectar otras funciones
• Se hizo un ejercicio con interrupciones

• Solo se puede usar un Timer de 16 bits (216 = 65535)


• El máximo retardo posible con el reloj de 4 Mhz es de ~16 milisegundos
• Para retardos mayores a ese tiempo, se usan los pre-escaladores
• Se divide la frecuencia del cristal para obtener periodos más largos y así los contadores pueden
contar por intervalos mas largos
• Esto aumenta la resolución pero pierde en precisión

Se usan registros que pueden ser leídos o escritos con el código


• Sirven para controlar
• Frecuencia
• Método de conteo
• subida,
• bajada,
• subida y bajada o
• señal externa
• Los registros más importantes están en la tabla de la siguiente diapositiva (n = número del
temporizador - Timer)

Señales digitales y análogas

• Interacción con el mundo exterior


• Entrada de señales de sensores
• Salidas de control para actuadores
• La mayoría de señales del exterior son de tipo análogo
• Intensidad de luz
• Sonido
• Movimiento
• El Arduino trabajo con señales digitales
• Se necesitan conversiones A/D

• Resolución del Arduino Uno en lectura de señales análogas


• 10 bits (1024 niveles)
• Voltajes varían entre 0 y Vcc
• Se pueden limitar según la necesidad
• Leer señales de sensores
• Acelerómetros
• Magnetómetros
• Proximidad (luz o sonido)
• Temperatura
• Intensidad de luz
• Intensidad de sonido
La entrada de señales de sensores pueden ser
• Digitales (Sensor de movimiento)
• Análogas (Temperatura)
• Ancho de pulsos (Distancia)
• Serial (GPS)
• Protocolos sincrónicos (Brújula)

Entradas análogas

• En algunos casos es necesario usar divisores de voltaje


𝑉𝑜𝑢𝑡 = 𝑉𝑖𝑛 𝑅2 𝑅1 + 𝑅2
• Estos ayudan da determinar el rango de valores de entrada
• Uso de map()
• Mapeo lineal de una escala en otra
• Uso de constraint()
• Limitar los valores de entrada a los límites establecidos

Salidas análogas

Usan PWM para generación de voltajes análogas


• Marcados con el símbolo
• Arduino UNO: 3, 5, 6, 9, 10 y 11
• Los valores de salida tienen resolución de 8 bits (0-255)

Sonido

Inicialmente se usaron zumbadores (buzzers)


• Luego vino el protocolo MIDI
• SoundBlaster introdujo los procesadores de señales digitales
• El sonido se convirtió en un componente de alto consumo de potencia y capacidad de
almacenamiento

La calidad del sonido de digital a análogo al reproducir está determinada por:


• La resolución
• 3 bits – 7 niveles
• 10 bits – 1024 niveles
• 16 bits – 65.536 niveles

La calidad del sonido de digital a análogo al reproducir está determinada por:


• La frecuencia de muestreo
• La voz humana está entre 300 y 3 Khz
• El oído humano capta entre 20 – 20 Khz
• La frecuencia de muestro debe estar al menos 2 veces el valor de frecuencia más alta

• Hablando de muestreo • Típicamente 44.1 Khz


• En aplicaciones profesionales: 48 Khz
• En telefonía: 8 Khz
• Audio en DVD: 192 Khz
• Aplicaciones específicas: hasta 2 Mhz
• Mayor frecuencia de muestreo
• Mayor precisión
• Mayor espacio de almacenamiento

Para el Arduino
• Sólo es posible generar tonos
• Usando tone()
• No puede emular instrumentos
• Se necesita de hardware adicional para generar sonidos complejos
• El Arduino Due es el más especializado para manejar sonido
• Generar tonos análogos reales
• No solamente ondas cuadradas
• Se usan conversores Digitales / Análogos para crear un sonido de calidad

Reproducen la onda original escribiendo los mismos niveles de voltaje


• Se debe tener en cuenta:
• Resolución (típicamente 8 o 16 bits)
• Velocidad (debe reproducirse a la misma velocidad con que se grabó)
• No canales: mono o estéreo

Potrebbero piacerti anche