You are on page 1of 32

MICROCONTROLADORES

ING. ALEX MAURICIO DARIO CALLE CLAVEL


IMPLEMENTAR SISTEMAS ELECTRNICOS
CON EL USO DE MICROCONTROLADORES EN
RESPUESTA A NECESIDADES Y
MEJORAMIENTO DE DISTINTAS REAS DE LA
INGENIERA
ATMEGA328
Memoria
Flash
Donde se guarda el programa, el sketch de Arduino que se vaya a crear.
No voltil.
Tiene un tamao de 32 KB, de los cuales 0.5 KB son utilizados por el bootloader.
SRAM
Voltil.
Lugar donde los programas almacenan y manejan sus variables. Memoria de
datos.
Tiene un tamao de 2 KB (2048 Bytes).
EEPROM
No voltil.
Para almacenar informacin a largo plazo.
Tiene un tamao de 1 KB (1024 Bytes).
E/S DIGITALES
Es el medio por el cual se controla hardware y dispositivos externos al MCU.
Estos pines pueden ser solo de entrada o solo de salida, o como en la mayora
de los casos, bidireccionales.
Al ser estos pines digitales, solo se puede enviar o recibir dos valores diferentes,
encendido o apagado, ON/OFF.
Para las entradas digitales, se debe tener en cuenta la velocidad del reloj con la
que se trabaja para captar la seal que se esta recibiendo.
E/S DIGITALES
Muchos MCUs tienen integrado un circuito pull resistor a sus entradas para
reducir el ruido de la interferencia electromagntica, que se genera en el
ambiente.
Estos pueden ser, pull up o pull down para deshacerse del ruido.

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.

FALLING, ocurre en el flanco de bajada de HIGH a LOW.

CHANGING, ocurre cuando el pin cambia de estado (rising + falling).

LOW, se ejecuta continuamente mientras est en estado LOW.


INTERRUPCIONES en Arduino
La funcin que maneja una interrupcin es la ISR (Interruption Service Routines).
Normalmente se limita a incrementar un contador o modificar una variable.
Si una variable es utilizada dentro de la funcin ISR y en bucle principal, debe ser
declarada como volatile. Lo que significa que especficamente, el compilador
carga la variable desde la RAM y no de un registro de almacenamiento, que es
una ubicacin de memoria temporal donde se almacenan y manipulan las
variables del programa.
INTERRUPCIONES en Arduino
SRAM or Static Random Access Memory, puede ser ledo y escrito desde el
programa en ejecucin. Se utiliza para distintas tareas en el programa de
ejecucin.
Static Data Reservado para variables estticas y globales. Para variables
con valores iniciales el sistema copia el valor inicial de la memora FLASH
cuando el programa comienza.
Heap (pila, cumulo) Reservado para elementos de datos asignados
dinmicamente.
Stack Para variables locales y mantener un registro de las interrupciones y
llamadas a funciones. Cualquier interrupcin llamada de funcin o
asignamiento de variables locales hace que el stack crezca. Al regresar de
una llamada de interrupcin o de funcin, se recuperar todo el espacio de
pila utilizado por esa interrupcin o funcin.
Los problemas de memoria ocurren cuando el Stack y el Heap se chocan. El
programa se comporta de manera inesperada.
INTERRUPCIONES en Arduino
Programa que cuenta los pulsos
enviados, por medio de
interrupciones.
TIMER (TEMPORIZADOR)
La mayora de los MCUs cuentan con uno o varios timers con 8 y/o 16
bits de resolucin.
Se lo utiliza principalmente para medir tiempos con la precisin que
nos permita el MCU.
Cumplen con distintas tareas:
Contadores.
Medida de periodos.
Generacin de retrasos.
Generacin de formas de onda.
ATMEGA 328p (temporizadores)
Timers
Two 8-bit Timer/Counters with Separate Prescaler and Compare Mode.
One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and
Capture Mode.
Estos se llaman Timer0, Timer1 y Timer2.
Las funciones de Arduino delay(), millis() and micros() and
delayMicroseconds() utilizan timers por detrs.
analogWrite(), tone() y noTone() utilizan tambin los timers. Hasta la librera
de servo utiliza timers.
Es como un reloj que se utiliza para medir el tiempo de determinados eventos.
Todos los timers dependen del reloj del sistema, que en este caso es de 16
MHz.
ATMEGA 328p (temporizadores)
Timer0
Timer de 8 bits, utilizado para las funciones: delay(), millis() and micros().
Timer1
Timer de 16 bits, utilizado para las funciones de la librera servo.
Timer2
Timer de 8 bits, utilizado para las funciones de tone().
Genera una onda cuadrada de la frecuencia especificada (y un ciclo de trabajo del
50%) en un pin.

DESCARGAR LIBRERIA TimerOne.h y ver primer programa.


Inicializacin de Timer1 es de 8,3 seg aprox. como mximo.
ATMEGA 328p
(temporizadores)

Inicializacion de Timer1 es de 8,3


seg aprox. como mximo.
WATCHDOG TIMER (TEMPORIZADOR)
WATCHDOG TIMER, tambin llamado COP (Computer Operates Properly) es
utilizado para monitorear la ejecucin del software.
Una vez que es iniciado, comienza una cuenta hacia atrs, una vez que llega a
cero el reset es activado entonces el programa reinicia el MCU.
Se debe disear una subrutina en el programa de manera que refresque o
reinicie al perro guardin antes de que provoque el reset.
Independiente del resto de los timers.
ATMEGA 328p (Watchdog timer)
WATCHDOG TIMER
Tiene una fuente de reloj que es su propio oscilador interno de 128k Hz.
Tres modos de funcionamiento:
Interrupt Mode La rutina del vector de interrupcin WDT_vect se llamar cuando el
WDT expire. Puede utilizarse para despertar al microcontrolador desde los modos de
sleep, incluido el modo de suspensin de menor potencia
(SLEEP_MODE_PWR_DOWN), en el que no estn disponibles otros temporizadores.
System reset Mode: cuando se produce un timeout del tiempo de espera del watchdog,
reiniciar el microcontrolador. Para usar en el manejo de bloqueos o cuelgues del
cdigo.
Interrupt and System Reset Mode Primero se llamar a la ISR de la interrupcin
WDT_vect, cuando se complete se va al System Reset Mode.
ATMEGA 328p (Watchdog timer)
ATMEGA 328p (Watchdog timer)
ATMEGA 328p (Watchdog timer)
ATMEGA 328p
EL BUS IIC
IIC (Inter Integrated Circuits)
Protocolo de comunicacin de dos hilos:
SDA, para transmisin de datos.
SCL, reloj asncrono que indica cuando leer los datos.
Uno de los dispositivos acta como Maestro controlando la velocidad del reloj y
el otro como Esclavo.
Para controlar la pantalla LCD con IIC se descarga una librera (LiquidCrystal_I2C).
ATMEGA 328p
EL BUS IIC

You might also like