You are on page 1of 23

microcontroladores y robotica

conversor analogico digital adc0804

Realizado por A. Marin

Facil todo esta inventado o casi, la conversion de analogico a digital para


que la informacion pueda ser procesada se consigue con un conversor
analogico/digital de la serie ADC080x, estos A/D disponen de una salida de 8 bits
y son muy rapidos con una velocidad de conversion de aproximadamente 100uS.
Trabajan a 5 Vlts., dispone de reloj interno o externo para saber mas sobre el reloj
consular intrucciones aunque lo mas facil es poner un puente R/C entre los pin
19,4 y masa.
Las instrucciones son:
CS (Chip Select) autoriza el funcionamiento del convertidor
WR (Write) Da la orden de inicio del conversor
RD (Read) Efectua la lectura de los datos
INTR (Indicador fin conversion
Con CS y WR con posicion logica I el convertidos A/D se bloquea y no
actua.
La conversin empieza con la llegada de un pulso I a la entrada de WR si
la entrada de CS esta a 0.
Durante la transicin de I a 0 de la seal en la entrada del WR o del CS, se
resetean el controlador interno, y el registro de datos y la salida del INTR se pone
aI
Despus de que la conversin sea completa la patita INTR realiza una
transicin de I a 0 , esto puede ser usado para interrumpir un microprocesador o
sealar la posibilidad de un nuevo resultado para otra conversin
Una operacin de lectura del RD con CS a 0 limpia la INTR y autoriza los
lacht de salida.
Los periodos entre transiciones de 0 a I o de I A 0 deben ir precedidos de
unos periodos de tiempo en espera de 0,5 mS para permitir la adecuacin de todos

los circuitos internos del conversor A/D. Este tiempo puede ser menor aunque es
cuestin de controlar las tablas de tiempos segn el proceso que se este realizando
Para conseguir una conversin en continuo CS y RD deben de estar a 0 y
la patita INTR conectada a la entrada de WR. Esta INTR/WR conexin fuerza a 0
la patita de WR y asegura la operacin del circuito
Pin
1
2
3
4
5
6
7
8
9
10
11/18
19
20

Nombre
CS- Chip Select
RD- Salida autorizada
WR- Start conversion
CLKIN
INTR
Vlts +
Vlts A GND
Vref/2
D GND
DB7 a DB0
CLK R
Vcc

Funcion
Habilita el chip
Lee la informacion
Iniciar conversion
Entrada de reloj
Indicador fin conversion
Seal positiva analogica
Seal negativa analogica
Tierra analogica
1/2 maximo del Pin 6
Tierra digital
Salidas digitales
Salidas reloj interno
Alimentacion

Logica
I/0
I/0
I/0
I/0
-0,3/16V

0
0
I/0
hasta 6,5V

Atencion esto son datos para el ADC0804 otros conversores de la familia


ADC080x aunque son similares tienen diferencias pequeas pero importantes que
deben ser tenidas en cuenta.
Con la Vref/2 (pin9) sin tension la tension que se obtiene de referencia en
el interior del conversor es Vcc/2 los que no permite hacer un ajuste de escala
fondo.
PEQUEA RUTINA PARA MICROCONTROLADOR.
Esta rutina sencilla permite una lectura de un ADC0804 desde un
microcontrolador pic16F84
Primero debemos de saber la banda en la que se movera la tensin aplicada
a los pines 6 y 7 para ajustar la mitad de la misma en el pin 9
Los pines 1 y 2 (CS/RD) del ADC0804 deben estar unidos y conectados a
la patita RA3 del PIC.
El pin 3 (WR) debe estar unido a la patita RA4 del PIC

Los pines DB7 al DB0 se unira a la Puerta B del Pic (RB7/RB0)


El pin 5 (INTR) debe estar sin conexin
rutina:
estado

equ

0x03

PTAA_TRA

equ

0x05

PTAB_TRB

equ

0x06

bsf

ESTADO,5

;Al BANCO 1

clrf

PTAA_TRA

;Configura los latch de salida

clrf

PTAB_TRB

;Configura los latch de salida

bcf

estado,5

;Al banco0

movlw b00011000 ;Carga W con 00011000


mowvf

PTAA_TRA

;Aplica a CS/RD y WR un impulso I lo que hace

;que el ADC0804 se bloquee y no actue


goto

TEMPORIZACION DE 0,5 mS

BSF

estado,5

;Al banco 1

movlw 0xFF
movwf PTAB_TRB

;Configura la Puerta B de entrada

bcf

;Al BANCO 0

estado,5

movlw b00010000
movwf PTAA_TRA

;Pone el CS/RD a 0 y WR a I con lo que empieza

;la conversion de analogico a digital


goto TEMPORIZACION DE 0,5 mS

movlw b00000000
movwfPTAA_TRA

;Pone a CS/RD y WR a 0 bloque el conversor y

;manda la seal a los latch de salida


goto

TEMPORIZACION DE 0,5 mS

movf

PTAB_TRB

;La informacion de la puerta B esta ahora

;en el registro de trabajo W y desde alli donde


;uno quiera.
fin de la rutina. no hay de que.

Hoja de datos del chip ADC0804


Aviso de responsabilidad.
Atencion esto son programas realizados sin interes comercial ni
economico alguno, solo desarrollados con animo de enseanza, no pretendo
que funcionen en otros sistemas o para otras personas, cualquier error que
exista debe ser subsanado por la persona que lo usa. Cualquier dao que
ocasione el uso de este programa es responsabilidad del usuario del mismo. La
unica condicion es que se menciona la procedencia de los datos que se esten
utilizando. Si tienes alguna duda estoy a tu disposicion

pagina inicio

Pagina articulos
asociados

microcontroladores y robotica
el control del tiempo en un microcontrolador

Realizado por A. Marin


Medidas de tiempo estndar:
1 microsegundo = 0,000001 segundos
1 nanosegundo = 0,000000001 segundos
La medida del tiempo en un microPic esta sujeta a 3 temas:
1-

El oscilador externo

2-

El TMR0

3-

El Divisor de frecuencias

El oscilador externo depende del tipo del sistema de oscilacin aqu


vamos a considerar exclusivamente el tipo XT a cristal de 4 Mhz.
Recordemos que cada ciclo de instruccin tarda en hacerse 4 periodos
de reloj por lo que con un oscilador de 4 Mhz.:
1 Periodo = 1segundo/4.000.000=0,00000025 segundos = 0,25
microsegundos
4 Periodos = 1 ciclo instruccin = 0,25 msg. x 4 = 1 msg. = 1000
nanosegundos
El contador TMR0 o temporizador lo vamos a observar solo en este
caso como medidor basndose en el reloj y se da cuando el bit T0CS (5) de

OPTION ( Banco1 registro 81 H) es igual a 0.


El TMR0 que es un registro fsico de la memoria SFR Banco0 posicin
01 H aumenta de valor hasta llegar a 255 en cada ciclo de instruccin, cuando
llega a 255 provoca un desbordamiento controlable en el bit T0IF (2) de
INTCON que se pone a 1 despus del desbordamiento.
El TMR0 se puede cargar con cualquier registro de 0 a 255.
El divisor de frecuencia es un sistema por el que segn ciertas
combinaciones se aplican divisores de tiempo que nos permiten ralentizar los
ciclos de instrucciones.
Estas combinaciones se obtienen con los bits 0,1 y 2 del Registro
OPTION (81 H)

FORMULA PARA CALCULAR EL TIEMPO:


Tiempo = 4 x Tiempo de cada ciclo x Valor a contar de TMR0 x Divisor de
frecuencia
Explicacin:
4 ---- ciclo de instruccin = 4 ciclos de reloj
Tiempo de cada ciclo ---- 1/Valor del oscilador
Valor a contar de TMR0 --- Valor introducido en el TMR0 que asciende
hasta 255
Divisor de frecuencia --- Factor constante aplicado para alargar los
periodos del reloj
Por lo que el mximo tiempo controlable por un programa cargado el
TMR0 con 255 el divisor de frecuencia con el valor (111) o sea 255 y un
oscilador de 4 Mhz. seria:
Tiempo= 4 x 1/4000000 x 255 x 255 = 0,065025 segundos = 65,025
microsegundos.

Ejemplo para conseguir un segundo de tiempo. (No es exactamente


un segundo pero desconozco otro sistema si sabes alguno muy agradecido por
decrmelo)
;Programa en ensamblador para conseguir 1 segundo +
;Despus de provocar un RESET se encender un LED al 1 segundo
;Al programar el microcontrolador desconectar el WDT
list

p=16c84
radix hex
tmr0_opt equ

0x01

status

equ

0x03

intcon

equ

0x0b

ptb equ

0x06

aux

equ

org

goto

inicio

org

inicio bsf

status,5

clrf

ptb

0x0e

;pone bit 5 de status = 1 . Ir al Banco 1


;selecciona puertaB como salida

movlw b00000111 ;w=00000111


movwf

tmr0_opt

;carga el divisor de frecuencias con 111 (1:255)

bcf

status,5

;pone bit 5 de status = 0 . Ir al banco 0

clrf

ptb

;Registro de Puerta B = 0

unsgd movlw

0x64 ;Carga W con 0x64 (en decimal 100)

movwf aux
contabcf

;Carga el registro aux (0x0e) con el valor 0x64 (100)


intcon,2

;pone a 0 el bit 2 de INTCON .Sealizador

de
;desbordamiento del TMR0 = 0
movlw 0xd8 ;carga W con valor literal 0xd8 (216 en decimal)
movwf tmr0_opt

;Carga el TMR0 con el valor 0xd8 (216) lo que da

un
;periodo hasta el desbordamiento de 255-216=39
conta1btfss
asi es

intcon,2

;Comprueba si T0IF a cambiado a 1 si es

;porque hubo desbordamiento del TMR0 y en ese caso


;se produce un brinco
goto

conta1

;En cada ciclo de instruccin el TMR0 sube una

unidad
;hasta llegar a 255
decfszaux,1 ;decrementa una unidad por cada ciclo de instruccin
;y recarga el registro aux con el nuevo valor.
;por ciclo aux=aux-1 si llega a 0 brinca
goto

conta ;vuelve al bucle de 39 en el TMR0

movlw 0xff
movwf ptb
end

;carga W con 11111111


;enciende los LED

resumiendo
tiempo = 4 x 1/4000000 x 39 x 100 x 255 = 0,9945 segundos

Aviso de responsabilidad.

Atencion esto son programas realizados sin interes comercial ni


economico alguno, solo desarrollados con animo de enseanza, no pretendo
que funcionen en otros sistemas o para otras personas, cualquier error que
exista debe ser subsanado por la persona que lo usa. Cualquier dao que
ocasione el uso de este programa es responsabilidad del usuario del mismo.
Si tienes alguna duda estoy a tu disposicion.

pagina inicio

temas asociados

microcontroladores y robotica
Calculo de tiempo en bucles de retardo
anidados
Realizado por A. Marin
Basicamente la precision del tiempo en los microcontroladores depende
del tipo de oscilador y es en los osciladores XT o sea los controlados por cristal
de cuarzo en los que se obtiene mejor precision.
Estamos todos de acuerdo en que las instrucciones de los programas
son de 1 o 2 ciclos de instruccion y tambien estamos de acuerdo que cada
instruccion equivale a 4 ciclos de reloj.
Partamos de un oscilador tipo basico de 4 Mhz, lo que nos daria:
TR (Tiempo Reloj)= Periodo de oscilador/Frecuencia oscilador
TR=1sg/4.000.000 de ciclos por segundo
TR en nanosegundos= 1.000.000.000/4.000.000=250 nanosegundos
TI (Tiempo Instruccion)=4 x TR= 4 x 250 nsg =1000 nsg =
1microsegundo = 1usg.
Resumiendo cada instruccion tarda segun el tipo entre 1usg. y 2 usg. en
ejecutarse.
Veamos cuando tardan cada instruccion de programa:

Goto, Call, Return, RetlW, Retfie --------> Tardan 2 ciclos de instruccion


Decfsz, Incfsz, Btfsc, Btfss ----------------> Tardan 1 o 2 ciclos segun
instruccion
Todas las demas ordenes tardan 1 ciclo de instruccion.
Ahora vamos a estudiar un bucle de retardo anidado tipo.
Primero empezamos con las rutinas de inicio de configuracion de
posiciones de memoria, tanto de cont1 como de cont2, eliminado TMRO y WDT,
y realizado un inicio de programa basico.
------------- bucle

decfsz

cont1,1

---------------------------goto

bucle

---------------------------decfsz

cont2,1

---------------------------goto

bucle

El bucle de cont1 necesita 3 ciclos para ejecutarse


1 ciclo ------> decfsz conta1,1
2 ciclos ----> goto bucle
esto durante 255 veces la vez 256 necesita solo 2 ciclos porque llega a 0
y salta la instruccion goto bucle, esto nos darias en forma matematica
(2 x 255)+ 2 = 767 o en gorma de formula (conta1 x 3)+2= ciclos bucle
conta1
Seguimos ahora con el bucle conta2:
El bucle conta2 necesita 3 ciclos y vuelve al bucle anterior de conta1.
Decrementa i en conta2 y repite el ciclo anterior en conta1
1 ciclo ------- > decfsz conta2,1
2 ciclos -----> goto bucle

Estos ciclos se repiten 255 veces en conta2 lo que matematicamenta da:


( 255 ( 767 + 3 )) + 2 = total ciclos que en forma de formula nos daria
( conta2 ((( conta1 x 3) + 2) + 3) + 2=total ciclos instruccion
Total ciclos instruccion x 4 x tiempo de reloj = tiempo total
Es decir que podemos precargar las posiciones de conta1 y conta2 con
determinados valores que serviran para conseguir el periodo de tiempo que nos
interese.
Este bucle con estas formulas aadiendo contadores y bloqueando la
funcion de interrupcion del TMR0 y WDT, permite alargar indefinidamente el
tiempo de conteo dado que si aadimos una nueva posicion o Conta3 al bucle
anterior, este se repetiria 256 veces mas lo que nos llevaria a minuto y con otro
bucle a las 3 horas, al mes, etc. etc. etc. y con 10 bucles un muy buen monton
de aos.

Aviso de responsabilidad.
Atencion esto son programas realizados sin interes comercial ni
economico alguno, solo desarrollados con animo de enseanza, no pretendo
que funcionen en otros sistemas o para otras personas, cualquier error que
exista debe ser subsanado por la persona que lo usa. Cualquier dao que
ocasione el uso de este programa es responsabilidad del usuario del mismo.
Si tienes alguna duda estoy a tu disposicion.

Pagina inicio

pagina asociada

microcontroladores y robotica

MOTORES

Uno de los problemas que se presentan cuando se pretende controlar un robot es


el control de los motores, esto se puede solucionar con facilidad con varios chips
los, ULN2003A, L293C, ULN2803A, etc.
Nosotros tenemos dos placas una la MT293 basada en el chip L293 y la MT2803
basada en el chip ULN2803. (Ver materiales).
El chip L293A es un driver diseado para proporcionar corriente a mecanismos
impulsores bidireccionales de hasta 1 AMp. con voltajes entre 4,5 y 36 Vlts. con
una capacidad maxima de disipacion de potencia de 5 W.
Todas las entradas con TTL compatibles.
Cada canal de salida es un circuito controlador completo administrado por un
Darlington capaz de proporcionar hasta 1 Amp.
Una caracteristica importante, es que la alimentacion de los circuitos del chip es
diferente a la alimentacion de los canales, lo que da estabilidad al circuito.
Puede funcionar con temperaturas entre 0 y 70 grados y tiene control interno de
temperatura, lo que aconseja en caso de altos consumos un cierto nivel de
refrigeracion del circuito.
De los cuatro canales por pares estan controlados por una seal aadida de

habilitacion. por lo que para controlar un canal de salida se deben enviar dos
seales una al canal y la otra a la habilitacion del par de canales.
Las caracteristicas del chip por Pines son:

PIN

NOMBRE

DESCRIPCION

1,2 EN

Control canales 1 y 2

1A

Entrada seal canal 1

1Y

Salida potencia canal 1

Tierra

Tierra

2Y

Salida potencia canal 2

2A

Entrada seal canal 2

VCC2

Alimentacion de las cargas

3,4 EN

Control canales 3 y 4

10

3A

Entrada seal canal 3

11

3Y

Salida potencia canal 3

12

Tierra

13

Tierra

14

4Y

Salida potencia canal 4

15

4A

Entrada seal canal 4

16

VCC1

Alimentacion 5V L293

Con este chip se puede controlar todo tipo de dispositivos que necesiten en un
momento determinado cierta tension con un nivel de potencia, reles, lamparas,
motores, dentro de un orden lo que sea.
La logica que hace que actue el L293 es la siguiente:

LOGICA HABILITACION

LOGICA CANAL

LOGICA SALIDA

Nivel "1"

Nivel "1"

Nivel "1"

Nivel "1"

Nivel "0"

Nivel "0"

Nivel "0"

Nivel "1"

Sin seal

Nivel "0"

Nivel "0"

Sin seal

Nuestra placa MT293 es un montage que recibe seales tipo TTL de un


microcontrolador que vamos a resumir aqui en un PIC16F84, estas seales pasan
por un 40106 que filtra y estabiliza la seal y este a su vez a un chip L293, el cual
controla 4 salidas independientes, a la tension suministrada por la alimentacion
de cargas (Pin 8).
Control de motores de corriente continua.
Este es el esquema basico para controlar un motor de corriente continua que
funcione en dos direcciones y control de paro.

la logica para que funcione este circuito es :


Logica en Pin9
Logica en Pin
15 Entrada
seal canal 4

Actividad del Motor

control
canales 3 y 4

Logica en Pin
10 . Entrada
seal canal 3

Nivel "1"

Nivel "1"

Nivel "1"

Parada

Nivel "1"

Nivel "1"

Nivel "0"

Giro Sentido A

Nivel "1"

Nivel "0"

Nivel "1"

Giro Sentido B

Nivel "1"

Nivel "0"

Nivel "0"

Parada

Nivel "0"

Nivel "1"-"0"

Nivel "1" - "0"

Motor desconectado

Sencillo no?. Un ejemplo tipico de orden seria mandar una seal por las patitas
de un PIC de la siguiente forma:
11100000
Salida clasica de una puerta. El bit 5 al pin 9, el bit 6 al pin 10 y el bit 7 al pin 15
sobre nuestra placa o sobre un L293 daria como resultado el paro inmediato del
motor.
10100000
Haria que el motor funcionara en un sentido.
Ojo se debe prestar atencion a la duracion del tiempo en cada orden.
Otra forma de conectar dos motores es segun este esquema:
motor 1

motor 2

aqui como se observa se pueden controlar dos cargas (motores, reles, etc)
haciendo que funcionen independientemente, las dos cargas se pueden conectar
asi o las dos a la fuente de alimentacion y a masa pero de esta forma lo que se
consigue es que los motores funcionen cada uno en direccion contraria al otro, si
se unen a la misma fuente los dos funcionaran pero en el mismo sentido segun se
apliquen ordenes a los pines 10 y 15, Se entiende que como esta rutina es para
1/2 del Chip L293 en realidad con la placa MT293 se pueden controlar 4 motores
independientes.
Las logicas serian:
Logica en Pin9
control
canales 3 y 4

Logica en Pin
10 . Entrada
seal canal 3

Logica en Pin
15 Entrada
seal canal 4

Actividad en
Motor 1

Actividad en
Motor 2

Nivel "1"

Nivel "1"

Nivel "1"

Stop

Gira

Nivel "1"

Nivel "0"

Nivel "0"

Gira

Stop

Nivel "0"

Nivel "0" o "1"

Nivel "0" o "1"

Motor 0

Motor 0

No repito las rutinas de activacion pero son similiares cambiando las actividades
logicas de las salidas de las Puertas del microcontroladorde a las explicadas con
anterioridad.

--------

Aviso de responsabilidad.
Atencion esto son programas realizados sin interes comercial ni economico alguno,
solo desarrollados con animo de enseanza, no pretendo que funcionen en otros
sistemas o para otras personas, cualquier error que exista debe ser subsanado por la
persona que lo usa. Cualquier dao que ocasione el uso de este programa es
responsabilidad del usuario del mismo. Si tienes alguna duda estoy a tu disposicion.

microcontroladores y robotica

PUERTO SERIE RS-232C


Este puerto el RS232C, existente en todos los ordenadores actualmente es el
sistema mas comun para la transmision de datos entre ordenadores.
El RS232C es un estandar de comunicaciones propuesto por la Asociacion de
Industrias Electronicas (EIA) y es la ultima de varias versiones anteriores.
Lo mas importante del estandar de comunicaciones es la funciones especifica de
cada pin de entrada y salida de datos porque nos encontramos basicamente con dos
tipos de conectores los de 25 pines y los de 9 pines, es probable que se encuentre
mas la version de 9 pines aunque la version de 25 permite muchas mas informacion
en la transferencia de datos.
Las seales con la que actua el puerto son digitales (0 - 1) y la tension a la que
trabaja es de 12 Voltios, resumiendo:
12Vlts. = Logica 0
-12 Vlts = Logica 1
Las caracteristicas de los pines y su nombre tipico son:
TXD

Transmitir Datos

Seal de salida

RXD

Recibir Datos

Seal de entrada

RTS

Solicitud de envio

Seal de salida

DTR

Terminal de datos listo

Seal de salida

CTS

Libre para envio

Seal de entrada

DSR

Equipo de datos listo

Seal de entrada

DCD

Deteccion de portadora

Seal de entrada

SG

Tierra

Referencia para seales

RI

Indicador de llamada

Seal de entrada

Existen hasta practicamente 25 mas seales pero no son muy usadas y para usos
con el microcontrolador generalmente no son necesarias. En caso de mayor interes
en el Puerto RS232C hay otras paginas mucho mas profundas en cuanto a su
desarrollo.
Posiciones y explicacion de los pines
Conector 25 pines
1
2
3
4
5
6
7
8
15
17
20
22
24

Conector 9 pines
1
3
2
7
8
6
5
1
4
9
-

Nombre
TxD
RxD
RTS
CTS
DSR
SG
DCD
TxC
RxC
DTR
RI
RTxC

Descripcion
Masa chasis
Transmit Data
Receive Data
Request to send
Clear to send
Data Set Ready
Signal Ground
Data Carrier Detect
Transmit Clock
Receive Clock
Data Terminal Ready
Ring Indicator
Transmin/Receive Clock

Los pines que portan los datos son RxD y TxD los demas se encargan de otros
trabajos, el DTR indica que el ordenador esta encendido, DSR que el dispositivo
conectado al puerto esta encendido, RTS que el ordenador al no estar ocupado
puede recibir datos, al reves de CTS que lo que informa es que es el dispositivo el
que puede recibir datos, DCD detecta que existen presencia de datos, etc.
Con los puertos de E/S se pueden intercambiar datos mientras que las IRQ producen
las interrupciones para indicar a la CPU que ha ocurrido un acontecimiento (ha
cambiado el estado de alguna seal de entrada)
En el PC el puerto RS232 esta controlado mediante un circuito integrado Transmisor-

Receptor-Asincrono Universal (UART) EL 16550A con buffers de E/S Aunque


existen otros modelos mas antiguos y posiblemente saldran modelos mejorados).
Para controlar el puerto serie, la CPU usa direcciones de E/S y direcciones de
interrupcion (IRQ), durante mucho tiempo fueron fijas las direciones de E/S y las IRQ
por ejemplo en un AT-286 son para COM1 la direccion 3F8h y el IRQ4 y para COM2
la 2F8h e IRQ3, luego el estandar cambio al aadir nuevos puertos serie siendo las
direcciones de E/S, 3E8 para COM3 y 2E8 para COM4, sin especificar las IRQ ,
teniendo que ser el usuario quien debe especificarlas en funcion de las que tenga
libres o el uso que vaya a hacer de los puertos serie, pudiendo tener un diferentes
puertos las mismas IRQ siempre que no se utilicen los dos al mismo tiempo, ya que
en caso contrario pueden aparecer problemas.
Cuando ocurre un evento en un puerto serie se activa la IRQ que avisa a la CPU que
debe recoger el dato lo antes posible, pues se puede anular con un nuevo dato, para
eso esta la UART 16550A que incluye 2 buffers o almacenes de informacion de tipo
FIFO (First In Firts Out) uno para entrada y otro para salida de 16 bytes que puede
guardar los datos antes de que la CPU los recoja.
El RS232C puede hacer transmision de datos en grupos de 5, 6, 7, u 8 bits a
determinada velocidad (normalmente 9600 bits por segundo o mas). despues de los
datos, le sigue un bit opcional de paridad (indica que el numero de bits transmitidos
es par o impar) y luego 1 o 2 bits de stop. Un protocolo clasico de transmision de
datos seria el 8N1 que quiere decir,. 8 bits de datos, sin paridad y 1 bit de stop.
La transmision debe de ser constante y a una velocidad predeterminada. Los bits
deben de llegar uno detras de otro y en determinados instantes de tiempo .
Antes de iniciar cualquier comunicacion con el puerto RS232 se debe de determinar
el protocolo a seguir dado que el estandar del protocolo no permite indicar en que
modo se esta trabajando, es la persona que utiliza el protocolo el que debe decidir y
configurar ambas partes antes de inciciar la transmision de datos.
Siendo los parametros a configurar los siguientes:
Protocolo serie (numero bits-paridad-bits stop)
Velocidad de puerto
Protocolo de control de flujo (RTS/CTS o XON/XOFF).
Dado que tenemos una ligera idea de como funciona un puerto serie RS-232, ahora
vamos a conectar el puerto serie con el microcontrolador.
Los microcontroladores en funcion de su vinculacion con el puerto RS232 se deben
clasificar en que puedan o no trabajar directamente con el control del puerto.
Nosotros nos vamos a dedicar a mi micro estrella por ahora el PIC 16F84, este no

incorpora el USART por ello las comunicciones con el puerto deben de hacerse
mediante rutinas de software.
El primer problema es que los niveles logicos TTL que salen del micro no son
compatibles con los niveles logicos del puerto, para ello debemos introducir en el
circuito un puente que nos traduzca los datos del micro al puerto y viceversa, este
puente es el micro MAX232 o el ICL232 (son exactamente iguales).
Nosotros hemos creado la placa PL232 que facilita esta transmision cambiando las
seales logicas del micro adaptadas al puerto y viceversa.
Para la visualizacion de las seales y la comunicacion del PC con el micro es
necesario unas rutinas macro que gestione el software del micro asi como un
programa base para el PC que gestione el control dentro del Ordenador
El programa para controlar el PC sirve cualquiera que gestione el puerto serie. Uno
muy comun es el programa TERMINAL en DOS (que se encuentra en la red) aunque
los hay mejores este es bastante bueno por su sencillez y facilidad de uso.
Tanto el programa TERMINAL como los macros para la programacion se pueden
encontrar en la red.

Aviso de responsabilidad.
Atencion esto son programas realizados sin interes comercial ni economico
alguno, solo desarrollados con animo de enseanza, no pretendo que funcionen
en otros sistemas o para otras personas, cualquier error que exista debe ser
subsanado por la persona que lo usa. Cualquier dao que ocasione el uso de este
programa es responsabilidad del usuario del mismo. Si tienes alguna duda estoy
a tu disposicion.

You might also like