Sei sulla pagina 1di 36

UNIVERSIDAD NACIONAL EXPERIMENTAL DEL

TCHIRA
VICERRECTORADO ACADMICO
DECANATO DE POSTGRADO

MAESTRA EN INGENIERA ELECTRNICA

INTRODUCCIN A LOS MICROCONTROLADORES


Parte II

Diciembre 2007
Cesar Contreras

Cesar Contreras-UNET

Contenido
1. Interrupciones.
2. Comunicacin Serial.
3. Temporizadores y Contadores.
4. Conexin bsica de un teclado y un display 7-segmento.
5. Mdulo de visualizacin LCD
6. Interfase serial Two-Wire
7. Conexin a Memoria serial I2C
8. Conexin a Reloj de Tiempo Real (RTC) I2C
9. Programacin del ATMEGA 16/32

Cesar Contreras-UNET

1. Interrupciones.
El ATmega 16/32 posee mltiples fuentes de interrupciones como se muestra en
la Tabla N 1, cada una se debe configurar a travs de un bit individual de
habilitacin, adems se debe habilitar el bit de interrupcin global, para que el
microcontrolador responda a cualquier interrupcin.
Tabla N 1: Vectores de interrupcin y RESET

El bit de interrupcin global es el bit 7 o I-bit del registro de estatus o Status


Register SREG, el cual debe estar en uno lgico para habilitar las interrupciones.
The AVR Status Register SREG

Cesar Contreras-UNET

Adems el ATmega16/32 tiene dos registros de control de interrupciones de 8


bits el GICR - General Interrupt Control register el cual habilita las interrupciones y el
TIMSK - Timer/Counter Interrupt Mask Register el cual habilita las interrupciones de
los Timer/Counter (Este registro se usara mas adelante).
The General Interrupt Control Register - GICR
Bit

INT1 INT0 INT2


Read/Write R/W
Initial
0
Value

R/W

IVSEL IVCE GICR


R

Bit 7 - INT1: External Interrupt Request 1 Enable


Bit 6 - INT0: External Interrupt Request 0 Enable
Bit 5 - INT2: External Interrupt Request 2 Enable
Bits 4..0 - Res: Estos bits son reservados.
Cuando una interrupcin ocurre el I-bit debe ser puesto a cero y para que todas
las interrupciones sean deshabilitadas. Cuando se retorna de la rutina de servicio de la
interrupcin el

I-bit debe volverse a uno, para volver a habilitar todas las

interrupciones.
El hardware limpia o hace cero la bandera a la que corresponde la interrupcin
generada cuando se atienden las interrupciones, sin embargo algunas de las banderas de
la interrupcin pueden limpiarse escribiendo un 1 lgico en la posicin de la bandera.
El

General Interrupt Flag Register - GIFR, contiene las banderas de las

interrupciones externas.
The General Interrupt Flag Register - GIFR
Bit

INTF1 INTF0 INTF2


Read/Write R/W
Initial
0
Value

R/W

GIFR

Bit 7 - INTF1: External Interrupt Flag 1


Bit 6 - INTF0: External Interrupt Flag 0
Cesar Contreras-UNET

Bit 5 - INTF2: External Interrupt Flag 2


Bits 4..0 - Res: Estos bits son reservados.
Si una o mas interrupciones ocurren mientras el

I-bit est en cero, la

correspondiente bandera de la interrupcin se memoriza y estas son puestas a uno


cuando se habilite I-bit y sern ejecutadas por orden de prioridad.
En el programa Com_Serial_Ejemplo1 que se anexa, el cual corresponde al
circuito de la Figura N2 la interrupcin externa INT0 se habilita por medio de los
registros GICR y MCUCR. Esto permite que cuando una seal en el Terminal PD2 pin
16 del microcontrolador, cambie su valor de 5 V a 0 V o viceversa, se produzca una
seal de interrupcin que atiende una rutina de interrupcin la cual ejecuta una funcin,
que en este caso consiste en inicializar el contador TIMER1 de 16 bits.
El Registro MCUCR contiene los bits de control del sentido de la deteccion de
las interrupciones y funciones generales del Microcontrolador.
MCU Control Register

La interrupcin externa solo se atender si esta est presente y esta se configura


con el registro MCUCR. De acuerdo a la Tabla N 2.
Tabla N 2: Bits de control del sentido de las interrupciones externas
Bit 3 Bit 2
Description
(ISC11) (ISC10)
Interrupcin 0
0
The low level of INT1 generates an interrupt request.
Any logical change on INT1 generates an interrupt
0
1
1
request.
1
0
The falling edge of INT1 generates an interrupt request.
1
1
The rising edge of INT1 generates an interrupt request.
Bit 1 Bit 0
Description
(ISC01) (ISC00)
Interrupcin 0
0
The low level of INT0 generates an interrupt request.
Any logical change on INT0 generates an interrupt
0
1
0
request.
1
0
The falling edge of INT0 generates an interrupt request.
1
1
The rising edge of INT0 generates an interrupt request.
Cesar Contreras-UNET

En la Tabla N 3, se muestran los nombres de algunas de las interrupciones con las


cuales se designan las funciones.
Tabla N 3: Nombre de las seales generada por algunas interrupciones.

Ejemplo de una funcin de atencin de interrupcin

Interrupcin externa 0.
SIGNAL(SIG_INTERRUPT0)

// Interrupcin externa 0

{
timer1();

// Inicializa el timer 1

cbi(PORTD,7);

// Limpio el bit 7 del puerto D

}.

Cesar Contreras-UNET

Interrupcin de recepcin de comunicacin serial.


SIGNAL(SIG_UART_RECV)
{
cli();
gradolo=UDR;
TransmitirByte(255);
loop_until_bit_is_clear(UCSRA,RXC);
gradohi=UDR;
sei();
}

2. Comunicacin Serial.
El concepto de comunicacin serial es simple. Consiste en transmitir o recibir un
byte bit a bit a travs de puerto serial. Aunque es ms lento que la comunicacin
paralela, la cual permite la transmisin entera de bytes de una sola vez, es ms sencillo y
puede utilizarse en distancias grandes. Por ejemplo, las especificaciones IEEE 488 para
comunicacin paralela definen que el cableado entre equipos no debe ser mayor de 20 m
en total, con no ms de 2 m entre dos dispositivos cualquiera; en comunicacin serial
pueden extenderse hasta 1200 m.
Tpicamente, los ingenieros utilizan comunicacin serial para transmitir datos
ASCII. Completan la comunicacin utilizando tres lneas: referencia, transmisin, y
recepcin. La comunicacin serial puede ser asncrona o sncrona, cuando es asncrona
el puerto puede transmitir datos en una lnea mientras recibe datos en otra. Las otras
lneas estn disponibles para el intercambio de pulsos de sincronizacin pero no son
requeridas. Las caractersticas seriales importantes son: tasa de baudios, bits de datos,

Cesar Contreras-UNET

bits de parada, y paridad. Para que dos puertos se comuniquen, estos parmetros deben
igualarse.
La tasa de baudios es una unidad de medicin para comunicacin que indica el
nmero de bits transferidos por segundo. Por ejemplo, 300 baudios son 300 bits por
segundo. Cuando los ingenieros se refieren a un ciclo de reloj, se refieren a la tasa en
baudios, as que si el protocolo indica una razn en baudios de 4800, el reloj est
ejecutndose a 4800 Hz. Esto quiere decir que el puerto serial est muestreando la lnea
de datos a 4800 Hz. Las tasas de baudios para lneas telefnicas son 14400, 28800, y
33600. Tasas de baudios mayores a estas son posibles, pero reducen la distancia
disponible para la separacin de dispositivos.
Cuando una computadora enva un paquete de informacin, la cantidad de datos
actuales puede ser que no complete 8 bits. Los valores estndar para los paquetes de
datos son de 5, 7, y 8 bits. El marco que se elija depender de la informacin que est
transfiriendo. Por ejemplo, el ASCII estndar tiene valores de 0 a 127 (7 bits). El ASCII
extendido utiliza de 0 a 255 (8 bits). Si los datos que se estn transfiriendo se
encuentran en texto simple (ASCII estndar), enviar 7 bits de datos por paquete, es
suficiente para la comunicacin. Un paquete se refiere a la transferencia de un slo byte,
incluyendo los bits de inicio/parada, bits de datos, y paridad. Debido a que el nmero de
bits actuales depende del protocolo seleccionado, puede utilizarse el trmino paquete
para cubrir todas las instancias.
Los bits de parada son utilizados para sealar el trmino de una transmisin de
un paquete sencillo. Los valores tpicos son 1, 1.5 y 2 bits. Debido a que los datos se
encuentran sincronizados a travs de las lneas y cada dispositivo tiene su propio reloj,
es posible que los dos dispositivos pierdan sincronizacin. Por lo tanto, los bits de
parada no solamente indican el final de una transmisin, tambin le da un margen de
error a las velocidades de reloj de la computadora. A medida que se utilizan ms bits
para bits de parada, mayor oportunidad para sincronizar los diferentes relojes, pero ms
lenta la razn de transferencia de datos.
La paridad es una forma de revisin de error simple utilizada en la comunicacin
serial. Existen cuatro tipos de paridad: par, impar, marcada y espaciada. Tambin puede
utilizar los que excluyen de paridad. Para paridad impar y par, el puerto serial fija el bit

Cesar Contreras-UNET

de paridad (el ltimo bit despus de los bits de datos) a un valor que asegura que la
transmisin tenga un nmero par o impar de bits lgicos. Por ejemplo, si el dato es 011,
para paridad par, el bit de paridad es 0 para mantener el nmero par de bits altamente
lgicos. Si la paridad es impar, el bit de paridad es 1, resultando en 3 bits altamente
lgicos. La paridad marcada y espaciada no revisa especficamente los bits de datos,
simplemente fija la paridad de los bits como alta para la paridad marcada o baja para la
paridad espaciada. Esto permite que el dispositivo receptor conozca el estado de un bit
para as determinar si el ruido esta corrompiendo los datos o si los relojes del
dispositivo de transmisin y recepcin se encuentran fuera de sincronizacin.

Estndar ANSI/EIA-232.
Comnmente conocido como RS-232. Es el conector serial que se encuentra en
los computadores compatibles con IBM. Es utilizado con diversos propsitos, como el
conectar perifricos, impresoras, o mdems, as como para instrumentacin industrial.
El RS-232 est limitado a conexiones punto a punto entre puertos seriales y dispositivos
de computador. Se puede utilizar el hardware RS-232 para comunicaciones seriales en
distancias de hasta 50 pies por medio de un conector estndar de 9 pines denominado
DB9 ilustrado en la Figura N 1.
En la Tabla N 1, se detallan los pines del conector indicando la funcin de cada
uno de los pines.

Figura N 1. Conector DB9.

Cesar Contreras-UNET

Tabla N 4 Pines y Seales del Estndar ANSI/EIA-232

PIN

Seal

1
2
3
4

CD
RXD
TXD
DTR
GND
DSR
RTS
CTS
RI

5
6
7
8
9

Implementacin con ATMEGA 16/32


A continuacin se muestra en el circuito de la figura N 2 un circuito ejemplo para la
implementacin de la comunicacin serial con el microcontrolador ATMEGA32.

RXD
TXD
RTS
+5V
CTS
+5v

L1

C11

10uH

100nF

RV1
1k

+5v

C14
C17

C15
1uF

1uF

1uF
5

32
30

C10
C26
2

U2

U1

8
7
13
14

VSVS+

21
20
19
18
17
16
15
14

PD7

R2IN
T2OUT
R1IN
T1OUT

R2OUT
T2IN
R1OUT
T1IN

C1-

C1+

9
10
12
11

+5v

DB9

AREF
AVCC

100nF

C2+

MAX232

LED2

C13
LED1
1uF

R13

R14
220

1k

R16
R15

220

29
28
27
26
25
24
23
22

PD7/OC2
PD6/ICP
PD5/OC1A
PD4/OC1B
PD3/INT1
PD2/INT0
PD1/TXD
PD0/RXD
PC7/TOSC2
PC6/TOSC1
PC5/TDI
PC4/TDO
PC3/TMS
PC2/TCK
PC1/SDA
PC0/SCL

PB7/SCK
PB6/MISO
PB5/MOSI
PB4/SS
PB3/OC0/AIN1
PB2/INT2/AIN0
PB1/T1
PB0/XCK/T0
PA7/ADC7
PA6/ADC6
PA5/ADC5
PA4/ADC4
PA3/ADC3
PA2/ADC2
PA1/ADC1
PA0/ADC0
XTAL2
XTAL1
RESET

8
7
6
5
4
3
2
1
33
34
35
36
37
38
39
40

+5V

RV2
1k

12pF

C8

12
13
9

XTAL

ATMEGA32

1k

C9
Q1

Q2

2N3904

2N3906

12pF

+5v

Figura N 2. Circuito de implementacin.

Cesar Contreras-UNET

Todos los valores de los Capacitores C8, C9, C10, C11, C13, C14, C15, C16 y
C17, adems del valor de L1, son propuestos por las hojas de datos del circuito
integrado MAX232 y del microcontrolador ATmega32 .
Los transistores Q1 y Q2 encienden los leds LED1 y LED2 respectivamente
cuando ocurre transmisin desde la etapa de control hacia la interfaz de visualizacin y
viceversa.
La comunicacin con la interfaz de visualizacin, se realiz por medio del
puerto serial del computador usndose solamente los terminales 2 y 3 para transmisin
recepcin y 5 como Terminal comn (tierra) del conector DB9. Cabe destacar que la
inversin de los terminales 2 3 y 3 2 es llevada a cabo internamente por el MAX232.
Su ciclo de reloj es generado por un cristal de cuarzo de 12 Mhz, frecuencia que
se considera ptima para llevar a cabo todas las funciones de control, comunicacin y
digitalizacin que se le tienen programadas.
Con el Programmers NotePad de WinAVR se genera el archivo .hex que se pasa
al microcontrolador partiendo de un entorno de programacin bajo Lenguaje C. Luego
se programa el microcontrolador con el programa PonyProg2000 si es el modulo de
desarrollo LICA o el programa AVRStudio si es el KIT AVR500; es decir, el archivo
.hex generado previamente por el WinAVR se transfiere al microcontrolador.
El archivo anexo Com_Serial_Ejemplo1 es un programa en codigo C para
ATMEGA que usaremos como ejemplo para probar las Interrupciones y la
comunicacin serial.
Para establecer la comunicacin se emplea la USART del ATmega32. En primer
lugar, se inicializa mediante los registros de estado y control UCSRA, UCSRB y UCSRC
habilitando el transmisor y receptor de la USART, el selector de registro UCSRC o
UBRRH, la dimensin del dato a transmitir que en este caso es 8 bits = 1 byte,
comunicacin asncrona en modo normal, velocidad de transmisin en baudios, y
finalmente se habilita la interrupcin de recepcin RXCIE.

Cesar Contreras-UNET

Bit 7 RXC: Dato recibido en el USART.


Bit 6 TXC: Buffer de transmisin del USART
Bit 5 UDRE: Registro de dato vaco.
Bit 4 FE: Error del dato
Bit 3 DOR: Data sobre escrita.
Bit 2 PE: Error de paridad.
Bit 1 U2X: Solo para operacin asincrona. Dobla la velocidad de
transmisin.
Bit 0 MPCM: Modo de comunicacin Multi-processor

Bit 7 RXCIE: Habilita la interrupcin de recepcin.


Bit 6 TXCIE: Habilita la interrupcin de transmisin.
Bit 5 UDRIE: Habilita interrupcin de registros de datos vacio.
Bit 4 RXEN: Habilita recepcin.
Bit 3 TXEN: Habilita transmisin.
Bit 2 UCSZ2: Tamao del caracter.
Bit 1 RXB8: Bit 8 de recepcin.
Bit 0 TXB8: Bit 8 de transmisin.

Cesar Contreras-UNET

Bit 7 URSEL: Seleciona registro.


Bit 6 UMSEL: Seleciona el modo del USART
Bit 5:4 UPM1:0: Tipo de paridad
Bit 3 USBS: Selecciona el bit de STOP.
Bit 2:1 UCSZ1:0: Tamao del carcter.
Bit 0 UCPOL: Polaridad del reloj, solo para transmisin sncrona.
Para establecer los baudios de la comunicacin, se emplea la Ec. 1. Donde la
fOSC viene dada por la frecuencia del cristal que en este ejemplo es 12 MHz.

UBRR =

f OSC
1
16 * Baud

Ec. 1.

El registro UBRR de la USART est compuesto por UBRRH y UBRRL, ambos


determinan la velocidad de comunicacin en bits por segundo o baudios.
USART Baud Rate Registers

El valor de UBRR para determinar la velocidad de transmisin, usando la Ec.1 es


de 12, para 57600 baudios. ste valor, es necesario para la inicializacin de la USART.
Por ejemplo si la rata de baudios es 57.6 Kbps y como un byte de informacin
contiene adems de los 8 bits de datos, bits de inicio y parada sin incluir bits de paridad
en total sern 10 bits por lo tanto hace que la comunicacin sea de aproximadamente
5760 bytes por segundo; o que es lo mismo 5760 datos por segundo.

Cesar Contreras-UNET

Una vez inicializada la USART, el microcontrolador se encontrar listo para


comenzar la comunicacin serial.
Para la transmisin se debe hacer una funcin que coloque en el registro de datos
TXB de UDR un byte para transmitir. Una vez transmitido el dato, el registro debe ser
limpiado para poder enviarse otro byte.
USART I/O Data Register UDR

La recepcin es llevada a cabo habilitando la interrupcin RXCIE de recepcin


de datos. Una vez que se produce la interrupcin de recepcin del dato, se deben
deshabilitar las dems interrupciones, el byte presente en RXB es el dato, este valor se
toma y se guarda en una variable y luego se habilitan de nuevo las interrupciones.

3. Temporizadores y Contadores.
El microcontrolador ATMEGA32 posee 3 reloj/contadores 2 de 8 bits y 1 de 16 bits.
Para entender estos perifricos basta con revisar los contadores secunciales. En la
Figura N 3, aparece un contador de dcadas con carga de datos y reset. Adems este
genera un uno lgico en la seal RCO cuando llega a la mxima cuenta de 10 (1001) y
vuelve a iniciar la cuenta. El diagrama de tiempo del contador operando libremente
hasta 10 con Overflow los podemos observar en la Figura N 4, en esta grafica la seal
RCO u Overflow aparece como carry. Recuerde que como el contador posee una seal
de RESET tambin podemos usar un circuito combinacional para generar una seal
auxiliar que conectada a la entrada MR del contador reinicie la cuenta. En la Figura N
5 se puede observar como la compuerta 7401 genera una seal que reinicia el contador.

Cesar Contreras-UNET

U3:A
3
1
2
7401

U1
3
4
5
6

D0
D1
D2
D3

7
ENP
10
ENT
2U1(LOAD)
CLK
U1(MR)
9
LOAD
1
MR

Q0
Q1
Q2
Q3
RCO

14
13
12
11
15

U1(Q0)
U1(Q1)
U1(Q2)
U1(Q3)
U1(RCO)

74160

U1(CLK)

Figura N 3: Contador de Dcadas

Figura N 4: Diagrama de tiempo del contador mostrando el Overflow

Cesar Contreras-UNET

Seal del circuito combinacional

Figura N 5: Diagrama de tiempo del contador el cual se reinicia en 5

De igual forma opera el timer/contador del ATMEGA, como se observa en la Figura N


6, bsicamente consiste en seleccionar el preescalamiento adecuado y la forma de
operacin de este.

Figura N 6: Preescalamiento del Timer


A continuacin se muestran los diferentes registros necesarios para una
configuracin y seleccin adecuada del Timer/Contador.

El Registro TIMSK permite la habilitacin de las interrupciones para configurar


las diferentes formas de operacin de los Timers/Contadores.

Cesar Contreras-UNET

The Timer/Counter Interrupt Mask Register - TIMSK


Bit

OCIE2TOIE2TICIE1OCIE1AOCIE1BTOIE1OCIE0TOIE0TIMSK
Read/Write R/W
Initial
0
Value

R/W

R/W

R/W

R/W

R/W

R/W

Bit 7 - OCIE2: Timer/Counter2 Output Compare Match Interrupt Enable


Bit 5 - TICIE1: Timer/Counter1 Input Capture Interrupt Enable
Bit 4 - OCIE1A: Timer/Counter1 Output CompareA Match Interrupt Enable
Bit 3 - OCIE1B: Timer/Counter1 Output CompareB Match Interrupt Enable
Bit 2 - TOIE1: Timer/Counter1 Overflow Interrupt Enable
Bit 1 - OCIE0:
Bit 0 - TOIE0: Timer/Counter0 Overflow Interrupt Enable

En registro TIFR se guardan el estado de las banderas de los Timers/Contadores.


Que se usaran para reconocer el estado de operacin de los Timers/Contadores.
The Timer/Counter Interrupt Flag Register - TIFR
Bit

OCF2TOV2ICF1OCF1AOCF1BTOV1OCF0TOV0TIFR
Read/Write R/W
Initial
0
Value

R/W R/W
0

R/W

R/W

R/W

R/W

Bit 7 - OCF2: Output Compare Flag 2


Bit 6 - TOV2: Timer/Counter2 Overflow Flag
Bit 5 - ICF1: Input Capture Flag 1
Bit 4 - OCF1A: Output Compare Flag 1A
Bit 3 - OCF1B: Output Compare Flag 1B
Bit 2 - TOV1: Timer/Counter1 Overflow Flag
Bit 1 - OCF0:
Bit 0 - TOV0: Timer/Counter0 Overflow Flag

Cesar Contreras-UNET

En la Figura N 7, se muestran en general los diferentes registros y partes que


constituyen un Timer/Contador.

Figura N 7: Partes y registros en general de los Timers/Contadores


Para configurarlo en una aplicacin especifica se debe determinar el numero de
pulsos necesarios que sean equivalentes al tiempo deseado usamos la ecuacin Ec. 2,
que aparece a continuacin y seleccionando segn el resultado el escalamiento en el
registro TCCR0 que se muestra abajo.
N=

delay _ deseado

fosc

preescalador

Ec. 2

Cesar Contreras-UNET

Luego en el registro TCNT0 en el caso del Timer 0 se podr leer el valor de la cuenta
actual.
A continuacin aparece un ejemplo que consiste en realizar una rutina de retardo de 4
ms. con un reloj de 12MHz.
Tabla N 5: Calculo del numero de pulsos
Frecuencia de oscilacin
Retardo deseado

Clock
Clock/8

12 MHz
4 ms

Numero de pulsos
12000 48000
1500
6000

Clock/64
Clock/256
Clock/1024

187.5

750
46.875 187.5
11.718 46.875

Contador=0;
While(contador<3)
{
TCNT0=6;

// precarga con 6 para que cuente 250

TCCR0==0x03;

// selecciona el preeescalador CLK/64

While( (TIFR & 0x01===0);

// espera por la bandera


// otra forma seria
// while((TIFR & TOV0) == 0)

TCCR0=0;

// para el reloj

TIFR=TIFR | 0x01;

// limpia la bandera

Contador++;

// incrementa el contador

Cesar Contreras-UNET

Timer de 16 bits
La inicializacin del TIMER1 se realiza seleccionando el modo de operacin,
mediante los registros TCCR1A y TCCR1B. Tambin se selecciona el preescalor de
frecuencia mediante el registro TCCR1B, y en el registro TIMSK que se muestra
anteriormente, se activa la interrupcin del registro del comparador de salida OCIE1A.

TCCR1A

Bit 7:6 COM1A1:0: Modo de salida del comparador del canal A


Bit 5:4 COM1B1:0: Modo de salida del comparador del canal B
Bit 1:0 WGM11:0: Waveform Generation Mode con WGM13:2

TCCR1B

Bit 4:3 WGM13:2: Waveform Generation Mode


Bit 2:0 CS12:0: Clock Select

continuacin

el

programa

que

se

anexa

con

el

nombre

de

Com_Serial_Ejemplo1 se ha realizado un ejemplo de configuracin y operacin de un


timer de 16 bits, usndolo como comparador.
En este ejemplo el TIMER1 se usa para realizar un conteo ascendente desde 0
hasta el valor almacenado en el registro OCR1A.

Cesar Contreras-UNET

Output Compare Register 1 A

A continuacin se presenta un ejemplo con el cual se intenta explicar la


funcionalidad del preescalador y forma de clculo de este,
El ejemplo consiste en el desarrollo de una rutina para generar la seal de
disparo de un TRIAC el cual es el elemento de accionamiento (Actuador) de una etapa
de potencia. Esta rutina de accionamiento consta bsicamente de tres elementos: la
interrupcin de cruce por cero de la seal de voltaje, y dos contadores TIMER1 y
TIMER0 que determinan el ngulo de disparo del TRIAC y la duracin del pulso de la
seal de disparo respectivamente.
Para controlar el valor rms de la corriente de una carga, se utiliza tpicamente el
circuito de la Figura N 8, como se observa es necesario manipular el tiempo de
conduccin en ambos ciclos de la seal alterna. Si se empleara un SCR, slo se tendra
control de un semiciclo (positivo o negativo segn sea el caso) mientras que para el
semiciclo contrario, el dispositivo se encontrar conmutado (apagado) y por lo tanto se
perdera la potencia que dicho semiciclo entregara a la carga.

Figura N 8. Etapa de Potencia.

Cesar Contreras-UNET

El uso de un TRIAC permite controlar el ngulo de disparo durante todo el


ciclo, por lo tanto, se tiene mayor control de la potencia que le es entregada a la carga.
En la Figura N 9 se muestran las seales de voltaje en la carga y en los terminales del
TRIAC para ngulos de disparo de 30 y 120

Figura N 8. Formas de Onda en el TRIAC y en la carga para = 30 y = 120.

El valor del preescalador se estableci en 8 para una fosc = 12 MHz, ya que con
este valor, un ngulo de disparo de 180, equivalente a 8.33 ms, viene representado por
el tiempo que tarda una seal de fosc/8 = 1.5 MHz en realizar 12495 pulsos como se
muestra en la Ec. 3.
N = 8.33ms * 1.5MHz = 12495 pulsos

Ec. 3

Cuando los valores almacenados en los registros TCNT1 y OCR1A concuerdan,


se produce una seal de interrupcin que apaga el TIMER1, inicializa el TIMER0 y la
interrupcin de registro del comparador de salida OCIE0. El TIMER0 cuenta desde 0
hasta el valor almacenado en el registro OCR0 y simultneamente enva un 1 lgico (5
V) a la etapa de potencia por medio del Terminal PD7 del ATmega32 el pulso de
activacin del dispositivo electrnico de potencia. De igual manera como acontece con
el TIMER1, la comparacin de los registros OCR0 y TCNT0 se hace constantemente y

Cesar Contreras-UNET

una vez sean iguales, se genera una seal de interrupcin que llama a una funcin de
apagado del TIMER0, enviando un 0 lgico (0 V) a la etapa de Potencia por medio del
Terminal PD7.
Se utiliz un divisor de frecuencia para el TIMER0 de 256 para una fosc = 12
MHz. Con este valor, un tiempo aproximado de 100 s, viene representado por el
tiempo que tarda una seal de fosc/256 = 46.86 KHz en realizar 5 pulsos como se
muestra en la Ec. 4.
106,70s =

5
46,86 KHz

Ec. 4

Tiempo que se considera suficiente para asegurar que el valor de corriente del
TRIAC haya alcanzado su valor de IL.

4. Conexin bsica de un teclado y un display 7segmento.


Un teclado es un conjunto de interruptores o switches que estn conectados en filas y
columnas, como se muestra en la Figura N 9.

R3

R4

R5

R6

10k

10k

10k

10k

RB7
RB6
RB5
RB4

RB0

R7

F1

F2

F3

F4

330R

RB1

R8
330R

RB2

R9
330R

RB3

R10
330R

Figura N 9: Teclado constituido de un arreglo de interruptores dispuestos en filas y


columnas.

Cesar Contreras-UNET

En la figura N 10 se presenta un teclado conectado a un ATMEGA a travs del


puerto B. Las columnas encabezadas por los nmeros 1, 2 y 3 estan conectadas al los
bits 2, 1 y 0 respectivamente. Mientras que las filas a los bits 4,5,6, y 7. Entonces la
tcnica consiste en haciendo cero logico (0 volts.) las filas una a una y leer las
columnas. De esta forma si se oprime la tecla 2 entonces cuando el bit 4 del puerto B
tenga un cero lgico, se leer un cero lgico en el bit 1.

U1
9

13
12

40
39
38
37
36
35
34
33
1
2
3
4
5
6
7
8

RESET
XTAL1
XTAL2
PA0/ADC0
PA1/ADC1
PA2/ADC2
PA3/ADC3
PA4/ADC4
PA5/ADC5
PA6/ADC6
PA7/ADC7
PB0/XCK/T0
PB1/T1
PB2/INT2/AIN0
PB3/OC0/AIN1
PB4/SS
PB5/MOSI
PB6/MISO
PB7/SCK

PC0/SCL
PC1/SDA
PC2/TCK
PC3/TMS
PC4/TDO
PC5/TDI
PC6/TOSC1
PC7/TOSC2
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/OC1B
PD5/OC1A
PD6/ICP
PD7/OC2

AVCC
AREF

22
23
24
25
26
27
28
29
14
15
16
17
18
19
20
21

30
32

ATMEGA32

Figura N 10: Teclado conectado a ATEGA 32


A continuacin se presenta una rutina bsica para el circuito de la Figura N 10 que lee
el teclado y muestra el nmero seleccionado en el display 7-segmento.
while (1)

//se chequea la fila y se envia al portD el numero correspondiente

{
PORTB =0b11101111;

//cuarta columna

delay_ms(2);
if (bit_is_clear(PINB, 0)) PORTD=0x03;
if (bit_is_clear(PINB, 1)) PORTD=0x02;
if (bit_is_clear(PINB, 2)) PORTD=0x01;
PORTB =0b11011111;

//tercera columna

delay_ms(2);
if (bit_is_clear(PINB, 0)) PORTD=0x06;
if (bit_is_clear(PINB, 1)) PORTD=0x05;
if (bit_is_clear(PINB, 2)) PORTD=0x04;

Cesar Contreras-UNET

PORTB =0b10111111;

//segunda columna

delay_ms(2);
if (bit_is_clear(PINB, 0)) PORTD=0x09;
if (bit_is_clear(PINB, 1)) PORTD=0x08;
if (bit_is_clear(PINB, 2)) PORTD=0x07;
PORTB =0b01111111;

//Primera columna

delay_ms(2);
if (bit_is_clear(PINB, 0)) PORTD=0x2B;
if (bit_is_clear(PINB, 1)) PORTD=0x00;
if (bit_is_clear(PINB, 2)) PORTD=0x2A;
}

5. Mdulo de visualizacin LCD


La pantalla LCD (Liquid Crystal Display) es un medio grfico a travs del cual
el usuario interacta con el programa del microcontrolador. En la Figura N11 aparecen
algunas variedades y presentaciones de LCD y en la tabla N 6 se muestra el nombre y
la funcin de los pines de la mayora de LCD y en la Figura N 12, la ubicacin y
distribucin tpica de los pines.

Figura N 11: Mdulos LCD

Cesar Contreras-UNET

Tabla N 6
Terminal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

Pines de conexin de la pantalla LCD.


Smbolo
Nombre y Funcin
Vss
Tierra, 0 voltios
Vdd
Alimentacin + 5 voltios
Vo
Ajuste de voltaje / contraste
RS
Seleccin de control / dato
R/W
Lectura / escritura en LCD
E
Habilitacin
D0
Bit Dato 20
D1
Bit Dato 21
D2
Bit Dato 22
D3
Bit Dato 23
D4
Bit Dato 24
D5
Bit Dato 25
D6
Bit Dato 26
D7
Bit Dato 27
A
nodo de Back Light
K
Ctodo de Back Light

Figura N 12: Distribucin y ubicacin de los pines de conexin de los LCD


En la Figura 13 se muestra un ejemplo de conexiones del mdulo de
visualizacin LCD con el ATMEGA32.
U1
9
13
12

D0
D1
D2
D3
D4
D5
D6
D7
7
8
9
10
11
12
13
14

RS
RW
E
4
5
6

1
2
3

VSS
VDD
VEE

LCD

40
39
38
37
36
35
34
33
1
2
3
4
5
6
7
8

RESET

PC0/SCL
PC1/SDA
PC2/TCK
PC3/TMS
PC4/TDO
PC5/TDI
PC6/TOSC1
PC7/TOSC2

XTAL1
XTAL2
PA0/ADC0
PA1/ADC1
PA2/ADC2
PA3/ADC3
PA4/ADC4
PA5/ADC5
PA6/ADC6
PA7/ADC7
PB0/XCK/T0
PB1/T1
PB2/INT2/AIN0
PB3/OC0/AIN1
PB4/SS
PB5/MOSI
PB6/MISO
PB7/SCK

PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/OC1B
PD5/OC1A
PD6/ICP
PD7/OC2

AVCC
AREF

22
23
24
25
26
27
28
29
14
15
16
17
18
19
20
21

30
32

ATMEGA32

R1
100

R2
RV1

100

POT
20K

Figura 13 Esquema de conexiones del mdulo de visualizacin


Cesar Contreras-UNET

En la tabla N 7 se hace una descripcin de las funciones de cada uno de los


pines de la pantalla LCD del esquema de conexiones anterior.

Tabla N 7 Funcin de los pines de la LCD.

Pines
LCD
1
2

Pines
ATMEGA16

3
4
5
6
7
8
9
10
11
12
13
14

4
3

5
6
7
8

Funcin
Tierra
5V
Ajustar el contraste de la
pantalla
Coloca en el bus de datos una
instruccin o un smbolo.
Tierra
Habilitacin
Sin conexin
Sin conexin
Sin conexin
Sin conexin
Bus de datos

Las resistencias:

R1 = 100
R 2 = 100
Son para evitar algn corto debido a la manipulacin de la resistencia variable, y
de esta manera evitar el dao de la pantalla LCD.
El potencimetro:

RV1 = 20k
Permite el ajuste del voltaje para el contraste de la pantalla LCD.

6. Interfase serial Two-Wire


La interfase serial TWI es ideal para aplicaciones con microcontroladores ya que
permite la interconexin de hasta 128 diferentes dispositivos, como se muestra en la

Cesar Contreras-UNET

Figura N 14, usando un bus bidireccional de solo 2 lneas una para el reloj (SCL) y
otra para la data (SDA). El nico hardware externo para implementar el bus son dos
resistencias pull-up una a cada lnea. Todos los dispositivos conectados al bus tienen
direcciones individuales.

Figura N 14: Conexin de varios dispositivos conectados al mismo bus.


Una transmisin bsica consiste de una seal de START, la direccin + R/W,
uno o mas paquetes de datos y una seal de STOP. En la Figura N 15 se muestra una
transmisin tpica, observe que varios datos pueden ser transmitidos entre SLA+R/W y
el la seal de STOP, esto depende del protocolo que se implemente.

Figura 15: Diagrama de tiempo de una transmisin tpica.


El ATMEGA cuenta con un modulo TWI el cual est constituido por conjunto de
registros que son accesibles por el bus del AVR. En la Figura N 16 se muestran estos
registros dentro de un recuadro de lnea gruesa.

Cesar Contreras-UNET

Figura N 16: Registros del modulo TWI


El significado de cada uno de los registros se muestran a continuacin.

TWI Bit Rate Register TWBR

Bits 7..0 TWI Bit Rate Register

TWI Control Register TWCR

Bit 7 TWINT: TWI Interrupt Flag


Bit 6 TWEA: TWI Enable Acknowledge Bit

Cesar Contreras-UNET

Bit 5 TWSTA: TWI START Condition Bit


Bit 4 TWSTO: TWI STOP Condition Bit
Bit 3 TWWC: TWI Write Collision Flag
Bit 2 TWEN: TWI Enable Bit
Bit 1 Res: Reserved Bit
Bit 0 TWIE: TWI Interrupt Enable

TWI Status Register TWSR

TWI Data Register TWDR

TWI (Slave) Address Register TWAR

Cesar Contreras-UNET

Tabla N 8 Secuencia tpica para transmisin con el modulo TWI.

El modulo TWI puede operar en cuatro modo: Transmitir como Maestro (MT),n
Recibir como Maestro (MR), Recibir como Esclavo (SR) y Transmitir como Esclavo
(ST). Varios de estos modos pueden ser usados en la misma aplicacin. Por ejemplo se
puede usar el TWI para escribir data en una memoria EEPROM y luego leer data de la

Cesar Contreras-UNET

misma memoria. Tambin si se esta en presencia de otro maestro en el bus, entonces se


debe usar en modo esclavo tanto para la transmisin como para la recepcin. En la tabla
N 8, se muestran como ejemplo las instrucciones de cdigo, mas tpicamente usadas
para implementar la transmisin como maestro.

7. Conexin a Memoria serial I2C


Las memorias disponibles se pueden clasificar segn se muestra en la tabla 8.
Tabla N 8 Tipos comunes de memoria
RAM
DRAM SRAM

MEMORIA
HBRIDA
NVRAM FLASH EEPROM

EPROM

ROM
PROM MASKED

Por ejemplo la memoria 24LC512 (Microchip technology Inc.) puede


clasificarse como una memoria de tipo hbrido pues puede ser leda y escrita a voluntad,
tal como una RAM (Random Access Memory o Memoria de Acceso Aleatorio), y
mantener su contenido en ausencia de suministro elctrico como una ROM (Read Only
Memory Memoria de slo lectura). Es una PROM elctricamente borrable
(EEPROM), serial de 64Kx8 (512Kbit), con capacidad de operar en rangos de voltaje
desde los 1.8V a 5.5V, diseada especialmente para aplicaciones de baja potencia como
comunicaciones personales y adquisicin de datos. Este tipo de memoria se usa por lo
general para el almacenamiento de datos pues cada byte puede ser borrado y sobrescrito
elctricamente, y la data permanecer idealmente invariable a cambio de un incremento
en la duracin de los ciclos de escritura.
Este dispositivo soporta adems lecturas aleatorias y secuenciales pudiendo
conectarse hasta ocho dispositivos en cascada para una capacidad total de
almacenamiento de 4Mbit, compatible con interfases seriales como el modulo TWI del
Atmega16/32, adems, permite la escritura por pagina de 64 bytes. A continuacin se
muestra la disposicin de pines en la Figura N 14 y su respectiva descripcin en la
Tabla N 9.

Cesar Contreras-UNET

Figura 17: Distribucin de pines del 24LC512

Tabla 9 Descripcin de los pines del 24LC512


Nombre
A0
81
A2
Vss
SDA
SCL
WP
Vcc

PIN
1
2
3
4
5
6
7
8

Funcin
Seleccin de Chip
Seleccin de Chip
Seleccin de Chip
Tierra
Datos Seriales
Seal de Reloj
Proteccin de escritura
+2.5V a 5.5V

La principal ventaja del uso de este tipo de memorias y por esto lo tratamos en
este curso es la sencillez de su implementacin en el circuito impreso, ya que con dos
pines se establece la transmisin bidireccional de datos y la temporizacion por una seal
de reloj, SDA y SCL respectivamente. Si se requiere, tambin se puede configurar la
direccin de la memoria con tres pines (A0, A1, A2) y proteger la escritura de datos
mediante el pin WP (Write Protect) sin afectar su lectura. En la figura 15, se presenta el
diagrama circuital tpico para la implementacin de la memoria. El mismo consta de una
memoria serial 24LC512 y dos resistencias pull-up de 4.7K. Las entradas de seleccin
A0, A1, y A2 estn a tierra indicando que el nmero de dispositivo es el 000b.
. En general cuando solo se emplea una memoria los pines de direccin A0, A1 y A2 se
conectan a tierra, y si no existe la posibilidad de conflicto de escritura, el control de
escritura WP tambin se conecta a tierra. Segn las especificaciones del fabricante,
como las lneas SDA y SCL son de colector abierto, es pertinente conectarles
resistencias de pull-up a Vcc, tpicamente de 10 Kohm. Entonces representa una gran
ventaja para el microcontrolador ATMega16/32 ya que este soporta protocolos de
comunicacin 1-wire, TWI y SPI, que son soportados como se vio anteriormente por
esta memoria, adems de su considerable capacidad de almacenamiento.

Cesar Contreras-UNET

VCC

U3

R2

6
5
7

4.7K

R3

SCK
SDA
WP

A0
A1
A2

1
2
3

24LC512

4.7K

PC1
PC0

Figura 18: Circuito de conexin de la memoria 24LC512.

8. Conexin a Reloj de Tiempo Real (RTC) I2C


Algunos sistemas requieren de un elemento que le permita mantener los datos
correspondientes en hora y fecha, an cuando la energa de alimentacin est ausente.
El dispositivo adecuado para estos fines se denomina reloj de tiempo real (RTC) y el
mismo permite al sistema sincronizar o fijar eventos a referencias de tiempo que puedan
ser comprendidos fcilmente por el usuario. Los RTCs (Real Time Clock) estn
disponibles en variedad de interfaces, desde seriales incluyendo I2C (interfaz de 2
hilos), 3-wire (3 hilos) y SPI (Serial Peripheral Interface), a interfaces paralelas tales
como mux-bus (bus de datos y direccin multiplexado) y diseos con entradas
separadas para datos y direcciones. La seleccin de la interfaz adecuada viene dada
principalmente por el microcontrolador utilizado.
El DS1307 de Dallas Semiconductor es un reloj de tiempo real/calendario de 56
bytes de memoria RAM no voltil, posee bajo consumo de energa. En la figura 19 se
muestra el DS1307.

Figura 19: Distribucin de pines del DS1307

Cesar Contreras-UNET

Caracterstica del DS1307


El RTC cuenta segundos, minutos, horas, fecha del mes, mes, da de la
semana y ao con compensacin de aos bisiestos valida hasta el 2100.
Memoria RAM no voltil de 56 bytes, con respaldo de batera para
almacenamiento.
Interfaz serial I2C.
Seal de salida de onda cuadrada programable.
El reloj opera ya sea con formato de 24 horas o formato de 12 horas con
indicador AM/PM.
Circuitera de deteccin de fallas de alimentacin con conmutacin
automtica.
Consume menos de 500 nA en modo de funcionamiento con batera.
El DS1307 opera como dispositivo esclavo en el bus I2C y el circuito de
conexin con el microcontrolador se muestra en la Figura N 20. El acceso se obtiene
implementando una condicin de arranque (INICIO) y proveyendo un cdigo de
identificacin de dispositivo seguido de una direccin de registro. Los registros
subsecuentes pueden ser accesados secuencialmente hasta que se ejecute una condicin
de parada (PARADA). Cuando el VCC cae por debajo de 1.25 x VBAT, el dispositivo
termina un acceso en progreso y resetea el contador de direcciones. Las entradas al
dispositivo no sern reconocidas en este momento para prevenir que datos errneos sean
escritos en el dispositivo de un sistema fuera de tolerancia. Cuando el VCC cae por
debajo del VBAT, el dispositivo cambia a un modo de bajo consumo de energa
respaldado por batera.
El DS1307 utiliza un cristal de 32.768 Khz. externo. El circuito oscilador no
requiere ninguna resistencia o capacitor externo para su funcionamiento. Si se usa un
cristal con las caractersticas especificadas, el tiempo de arranque es menor a un
segundo.

Cesar Contreras-UNET

U2
3
7

BAT1
3V

5
6

VBAT X2

SOUT

X2
CRYSTAL

SDA
SCL

X1

DS1307
PC0
PC1
PD3

Figura 20: Circuito de conexin del DS1307.

9. Programacin del ATMEGA 16/32

WinAVR
Compilador de C para microcontroladores ATMEL, el cual contiene, entre otras
cosas, el editor Programmers Notepad 2.

Ponyprog2000
Es un software para la grabacin de los programas en el microcontrolador En
este software se puede leer, escribir y borrar los programas realizados con el
Programmers Notepad 2.

Proteus 6.3

Es un potente simulador de circuitos electrnicos y de creacin de circuitos


impresos. Presenta las herramientas ISIS y ARES. [22] [23]

Cesar Contreras-UNET

Potrebbero piacerti anche