Documente Academic
Documente Profesional
Documente Cultură
En cuanto a las salidas digitales, estas son usadas para poner el pin deseado a
dos posibles valores, HIGH/LOW, 1-0, ON/OFF.
E/S ANALGICAS
Si se quiere medir el voltaje de un foto transistor, este no solo presentar dos
valores, por lo que se requiere una forma de captar este tipo de seales,
analgicas.
Se hace uso del conversor Analgico/Digital (A/D) dispositivo electrnico capaz
de convertir una seal analgica en un valor binario.
La resolucin determina la precisin con la que se reproduce la seal original.
Resolucin = +Vref/2^n (donde n son bits)
E/S ANALGICAS
Si se quiere medir el voltaje de un foto transistor, este no solo presentar dos
valores, por lo que se requiere una forma de captar este tipo de seales,
analgicas.
Se hace uso del conversor Analgico/Digital (A/D) dispositivo electrnico capaz
de convertir una seal analgica en un valor binario.
La resolucin determina la precisin con la que se reproduce la seal original.
Resolucin = +Vref/2^n (donde n son bits)
Por ejemplo, un conversor A/D de 8 bits su resolucin ser: Vref/256.
Mapear los valores de voltaje de entrada, entre 0 y Vref voltios, a
valores enteros comprendidos entre 0 y 255 (2^n-1).
E/S ANALGICAS
Para la salida analgica, muchos de los microcontroladores implementan un
conversor D/A, haciendo uso de las seales PWM (Pulse-Width Modulation). Al
mismo tiempo se puede mejorar la seal analgica de salida acoplando un
circuito de filtro pasa bajo RC .
ATMEGA328
E/S pines
23 pines E/S programables
En la placa Arduino UNO, 14 pines estn
dedicados a las E/S digitales. 6 de ellas
son de tipo PWM.
6 pines dedicados a entradas analgicas.
Los dems 3 pines estn destinados al
botn de RESET y los dos osciladores
TOSC1 y TOSC2.
El voltaje de operacin es de 1,8 a 5,5 V.
ATMEGA328
E/S pines
Si se emplea lgica TTL donde un 0 se representa por un voltaje entre 0 y 0,8
Volts y un valor HIGH entre 2 y 5 Volts.
ATMEGA328
E/S pines
Pull-up resistor:
ATMEGA328
E/S pines
Pull-down resistor:
ATMEGA328
E/S pines
Existe tambin la opcin de
habilitar resistores pull-up internos
del microcontrolador ATmega328p.
Esto se puede hacer mediante
comandos en el IDE de Arduino.
ATMEGA328
E/S pines
EL REBOTE
Muchos dispositivos fsicos habitualmente
generan ruido en los flancos de seal. Como
ejemplo, la variacin de tensin que ocurre
cuando el cambio de estado se genera por
un pulsador.
Eliminar rebote por hardware:
ATMEGA328
E/S pines
EL REBOTE
Eliminar rebote por software:
- Se puede lograr con el uso de la funcin delay().
- O con la funcin millis().
ATMEGA328
E/S pines
Ventajas de millis() sobre delay().
- El utilizar la funcin delay(), congela el curso normal del compilador es decir lo detiene
por completo, por lo que en algunos casos puede resultarnos perjudicial y no llegar a
realizar lo que se busca.
- Para estos casos podemos hacer uso de la funcin millis(), que NO detiene el
funcionamiento del compilador, y con un adecuado manejo de la funcin se puede lograr
concretar tareas especficas.
- Por ejemplo, realizar un programa que tenga 2 botones; al apretar uno de ellos encender
un led durante 5 seg. y al apretar el otro encender un segundo led durante el mismo
tiempo.
INTERRUPCIONES
Se detiene la ejecucin normal del programa para realizar una accin en
especifico. Una vez terminada dicha accin, se vuelve al flujo normal del
programa.
En los MCUs se tienen dos bits para manejar las interrupciones.
IE (Interrupt Enable), para indicar que el controlador debe llamar a ISR (Interrupt
Service Routine), como reaccin al evento.
IF (Interrupt Flag), es activado cuando el evento de interrupcin ocurre y es
limpiado automticamente cuando se entra al ISR.
El llamado de una interrupcin sigue los siguientes pasos:
Activar el IF
Finaliza la presente instruccin
Identifica el ISR
Llama al ISR
INTERRUPCIONES en Arduino
Las interrupciones pueden ser utilizadas en distintos casos, cuando por ejemplo
se quiere controlar alguna salida durante la espera de un evento previo. Esto no
seria posible con el uso de la funcin delay(), puesto que, como se observ
previamente, esta detiene el flujo de ejecucin del programa e impide poder
realizar otra tarea a la par.
Se tiene interrupciones con timers, (por software) o las interrupciones por
hardware, que responden a los siguientes eventos.
RISING, ocurre en el flanco de subida de LOW a HIGH.