pdf de la memoria

Anuncio
ÍNDICE
Introducción ................................................................................................4
Comunicación serie (RS-232)......................................................................5
Transmisión serie/paralelo ................................................................5
Transmisión síncrona/asíncrona ........................................................5
Uso de un único reloj en la transmisión síncrona .........................7
Sincronización del principio de cada carácter en la transmisión
Asíncrona....................................................................................7
RS-232...............................................................................................8
Mecánicos...................................................................................8
Eléctrica......................................................................................9
Funcional: (sobre norma asíncrona )............................................9
Primer bloque ....................................................................10
Segundo bloque: "Control de flujo"....................................10
Tercer Bloque: “Transmisión/recepción de datos”..............11
Gestión Simplex, Half-duplex y Full-duplex de un canal de
comunicación.....................................................................................11
Conexionado DTE-DTE: Null-Modem ...............................................11
Bloque 1 .....................................................................................12
Bloque 2 .....................................................................................12
Bloque 3 .....................................................................................12
Terminales y emuladores de terminal.................................................13
Control de flujo con RS232 ................................................................13
Circuito eléctrico .........................................................................................15
Programa del microcontrolador .................................................................18
Programa de comunicación en Visual Basic ..............................................24
Conclusión ...................................................................................................28
Bibliografía..................................................................................................28
Anexo I. Datasheet del MAX232.................................................................29
Anexo II. Datasheet del 74245 ....................................................................36
Anexo III. Datasheet del 74373 ...................................................................42
Anexo IV. Datasheet del ULN2803 .............................................................50
Anexo V. Circuito eléctrico del control por voz .........................................58
3
INTRODUCCIÓN
El avance de las nuevas tecnologías ha provocado el desarrollo de nuevos
métodos de fabricación para conseguir un mayor número de piezas y un menor coste,
esta evolución se ha producido, entre otras cosas, a la automatización industrial que
consiste en construir un sistema que controle todas las máquinas encargadas de la
fabricación del producto para que funcionen sin un operario y gobernadas por un control
para que todo funcione correctamente.
En la actualidad, los procesos de automatización han llegado a los hogares
mediante la domótica, estos sistemas se encargan de controlar distintos sistemas de la
casa como la calefacción , el aire acondicionado… para conseguir que la casa se haga
más habitable cuando los habitantes lleguen a su hogar.
El problema de todo esto es el gran número de sensores (aparatos que controlan
las variables, como la temperatura), actuadores (aparatos que modifican el sistema,
como los radiadores), buses para la comunicación, un sistema para visualizar los
sensores y actuadores, etcétera. Todo esto se puede simplificar gobernando todo desde
un mismo lugar o puesto de control que puede ser cualquier ordenador personal (no
hace falta que sea moderno) conectado por una interfaz apropiada y comunicado por un
software específico. Esta interfaz y este software es el proyecto propuesto a
continuación, un sistema que controla ocho entradas digitales activas por alto por
niveles TTL (el “0” lógico es con 0V y el “1” con 5V), ocho salidas activas por relees
por lo que se pueden poner actuadores de potencia, comunicado mediante puerto serie
(RS-232) y gobernado por el microcontrolador PIC16F84.
El microcontrolador PIC16F84 tiene 1Kb de memoria FLASH de programa, 68b
de memoria RAM y 64b de memoria EEPROM para datos, una pila de ocho niveles,
trece líneas de entrada/salida divididas en dos puertos, uno de cinco bits y otro de ocho;
cuatro interrupciones, un temporizador y un perro guardián (WDT) que es un
temporizador que si se desborda el microcontrolador se resetea. En el proyecto no se
utilizan los temporizadores ya que las temporizaciones se realizan por software ni las
interrupciones, en el trabajo lo que se utiliza es la comunicación serie que este chip no
posee por lo que está desarrollada por software.
La aplicación que comunica la interfaz con el ordenador está realizada en Visual
Basic gracias al componente mscomm32.ocx que es un método para comunicarse por el
puerto serie mandando caracteres en código ASCII y recibiendo también en ASCII o en
decimal, por lo que en la transmisión se ha tenido que transformar de binario a ASCII y
en la recepción de decimal a binario.
En esta memoria están detallados los métodos de comunicación por el puerto
serie, el circuito eléctrico de la interfaz y los programas, el del microcontrolador y el de
comunicación con el ordenador.
4
COMUNICACIÓN SERIE (RS-232)
RS232 es el nombre del interfaz de comunicación serie más utilizado del mundo.
La norma serie está disponible en prácticamente el 99% de los ordenadores. Entre ellos
el IBM PC compatible que habitualmente está equipado con dos puertos serie RS232,
uno de ellos utilizado para conectar el ratón. El Apple Macintosh es una notable
excepción, utilizando otra norma serie, la RS422.
La norma RS232 fue originalmente diseñada para conectar terminales de datos
con dispositivos de comunicación (como módems y AITs). Desde un principio, fue
también utilizada para conectar casi cualquier dispositivo imaginable. Los usos de la
RS232 en el entorno doméstico son muchos y ampliamente conocidos. Desde la
conexión del ratón, el modem/fax, agendas electrónicas de bolsillo, impresoras serie,
grabadores de memoria (tipo EPROM), digitalizadores de vídeo, radios de AM/FM, etc.
La lista sólo está limitada por la imaginación de los diseñadores.
En el entorno industrial el peso de la RS232 es también muy importante. Si bien
existen soluciones de comunicación serie más robustas y versátiles, como la RS422 o la
RS475, la RS232 sigue siendo por su sencillez, su diseño económico y, sobre todo, por
su gran difusión, la norma más frecuente. Así, es fácil ver cómo robots industriales,
manipuladores, controles de todo tipo, utilizan la RS232. Existen hasta cafeterías
industriales (de las utilizadas en bares y restaurantes) que disponen de una RS232 para
ser conectadas a un PC e informar de cuántos cafés han hecho en el transcurso del día,
permitiendo al gerente de la empresa un control de caja, estadísticas de uso, etcétera.
TRANSMISIÓN SERIE/PARALELO
Conceptualmente una transmisión paralelo consiste en utilizar simultáneamente
varios circuitos de transmisión serie. Dejando al margen problemas específicos de una
transmisión en paralelo, como puede ser el efecto crosstalk o interferencia inducida de
símbolos, la transmisión paralelo es el recurso lógico cuando un solo circuito no
proporciona un ancho de banda suficiente. Si en un diseño, un problema de transmisión
puede resolverse (a coste similar) con una transmisión serie, esta opción es en principio
deseable frente a una paralelo. Piénsese que en una transmisión con múltiples circuitos
la probabilidad de fallo de línea y la necesidad de mantenimiento es proporcional al
número de líneas utilizadas.
TRANSMISIÓN SÍNCRONA/ASÍNCRONA
Independientemente de si la transmisión es serie o paralelo, ésta puede ser
síncrona o asíncrona. Para entender la diferencia es interesante fijarse en la etimología
de las palabras. Ambas vienen del griego cronos --tiempo (reloj)--. Síncrona significa
"mismo reloj" y asíncrona lo contrario, es decir, relojes distintos.
Entre dos equipos, emisor y receptor, existe un problema básico en la
identificación de los distintos símbolos (bits en este caso) que se transmiten por una
línea de transmisión. Supongamos dos computadores A y B, y una línea de transmisión
por la que se comunican. Supongamos que A manda a B 50 bits a una velocidad de
1000 bits/s. Esto quiere decir que cada bit estará en la línea de transmisión una milésima
de segundo. La máquina B necesita conocer este dato y necesita un reloj, o base de
tiempos, que le permita medir con precisión esa milésima de segundo para saber cuándo
ésta en la línea el segundo bit, el tercer bit, etcétera. El lector debe conocer que la forma
5
normal en que el equipo receptor decide si un bit es "0" o "1" es muestreando (haciendo
un muestreo de) la línea de transmisión durante el intervalo del bit, preferiblemente a
mitad del intervalo.
Es evidente que si el reloj utilizado por el receptor no mide el tiempo con
precisión y la secuencia de bits es lo suficientemente larga, entonces cometerá un error
en el muestreo de la línea e identificará una secuencia de bits incorrecta. Si, por
ejemplo, el reloj receptor atrasa y cuando indica al sistema que ha pasado 1 ms en
realidad ha pasado 1,1 ms (un error del 10%, sin duda un poco exagerado) entonces se
producirá un primer error de muestreo en el 6º a 7º bits transmitido (si asumimos que el
primer bit lo muestreó correctamente en el centro del intervalo del bits) (ver figura).
2º bit
Tiempo
1º bit
1,1ms
1,1ms
Error de lectura.
El muestreo del
Deriva respecto
flanco no garantiza
al punto medio
una lectura correcta
del intervalo.
del bit.
La figura muestra claramente cuál es el problema. Debe quedar claro que aunque
el planteamiento del ejemplo hace culpable al reloj del receptor, en una situación real
encontraremos que, de usar dos relojes, es imposible garantizar que ambos midan el
tiempo (batir segundos) exactamente igual. Y aunque el error entre ambos sea mucho
menor, nótese que si la secuencia de bits es lo suficientemente larga, el error de
muestreo terminará por ocurrir.
Problema: determinar la diferencia (error) máxima admisible entre los relojes
del emisor y receptor para transmitir un carácter de ocho bits (suponemos
existe un mecanismo que permite siempre leer el primer bit de cada
carácter correctamente).
De esta situación se pueden deducir dos conclusiones:
1. La transmisión síncrona (emisor y receptor comparten el mismo reloj)
permite que el receptor pueda interpretar (muestrear) sin error de
sincronismo una secuencia (bloque) arbitrariamente larga de bits.
2. La transmisión asíncrona, a diferencia de la síncrona, esta orientada a la
transmisión de caracteres (bloque mínimo de tan sólo siete u ocho bits).
6
USO DE UN ÚNICO RELOJ EN LA TRANSMISIÓN SÍNCRONA
1. Si se utiliza el reloj de una de las dos máquinas (o un reloj tercero) se puede
transmitir la señal de reloj por una línea auxiliar a la otra máquina. La figura
muestra como a partir de la señal de reloj el muestreo es siempre exacto.
0
1
0
1
0
1
0
0
1
Datos
Reloj
2. El emisor puede utilizar una codificación para los datos de las denominadas
"auto-reloj",como por ejemplo el código Manchester (utilizado por ejemplo en
redes locales Ethernet).
La figura muestra una secuencia de bits codificada en código Manchester.
0
1
0
1
0
1
0
0
1
Datos
Código
Mánchester
Se puede observar que la codificación Manchester tiene la propiedad de que
existe siempre una transmisión en la mitad del intervalo del bit. El receptor aprovecha
esta propiedad para sincronizarse en cada bit. Es como si hubiera un reloj entre los datos
que marca el ritmo del muestreó que debe hacer el receptor, de ahí el nombre de autoreloj.
SINCRONIZACIÓN DEL PRINCIPIO DE CADA CARÁCTER EN LA TRANSMISIÓN
ASÍNCRONA
Datos
1
0
0
1
1
0
1
0
STOP
START
Cuando el emisor no transmite, en el periodo entre caracteres, la línea se
mantiene a "1" lógico. Cuando decide transmitir un carácter, primero transmite un "0"
que se denomina bit de START y sirve para que el receptor sincronice (empieza a
contar tiempos desde ese momento). El instante de sincronismo es el flanco de bajada
de la señal (ver figura). Tras el bit de START se transmiten los bits de datos y después
es obligatorio al menos un bit de STOP a "1" lógico. La secuencia se repite tantas veces
como caracteres se transmitan. Obsérvese que este mecanismo de sincronización con el
bit de START impide que la deriva de muestreo por diferencias entre los relojes
continúe en el siguiente carácter. Se asume que la deriva de muestreo no debe ser tan
grande que provoque un error de muestreo en los bits de cada carácter.
Sincronización y
muestreo del caracter
7
RS-232
La norma serie RS232 fue diseñada para conectar DTEs (Data Terminal
Equipment) o equipos terminales de datos (como un terminal, un ordenador,...) con
DCEs (data communication equipment) o equipos de comunicación de datos, como
módems, codecs, AITs, etcétera.
La diferenciación entre DTE y DCE es fundamental para la comprensión de la
norma como se verá más adelante.
La RS232 permite la transmisión síncrona y asíncrona. La subnorma asíncrona
es sin duda la más frecuente por lo que nos centraremos en ella.
La transmisión asíncrona se lleva a cabo tal y como se describe en el punto
anterior. En concreto además del bit de START utiliza:
• 5, 6, 7 o 8 bits de datos,
• 0 o 1 bit de paridad (la paridad puede ser "par"(Even), "impar"(Odd),
"siempre a cero"(Reset) y "siempre a uno"(Set).
• 1, 1.5 o 2 bits de STOP.
Para agilizar el lenguaje se suele emplear una nomenclatura abreviada como, por
ejemplo, "8N1" que indica que la transmisión serie RS232 se ha configurado para
transmitir 8 bits de datos, No paridad y 1 bit de STOP. Otro ejemplo sería "6E2" que
indica 6 bits de datos, paridad par y 2 bits de STOP.
El estándar RS232 normaliza los aspectos mecánicos, eléctricos y funcionales.
MECÁNICOS:
La RS232 utiliza un conector Cannon DB-25 (ISO 2110) macho para el DTE y
hembra para el DCE (ver figura).
Pin 14 Secondary
Transmitted Data
Pin 1 Sheild
Pin 2 Transmitted
Data
Pin 15 Transmit
Clock
Pin 3 Recieved
Data
Pin 16 Secondary
Received Data
Pin 4 Request
to Send
Pin 17 Receive Clock
Pin 5 Clear
to Send
Pin 5 Ground
Pin 9 Ringing
Indicator
Pin 4 Data
Terminal Ready
Pin 8 Clear
to Send
Pin 3 Transmit
Data
Pin 7 Request
to Send
Pin 2 Recieve
Data
Pin 6 Data Set
Ready
Pin 1 Data Carrier
Detect
Cannon DB-9
Pin 18 Local
Loopback
Pin 6 DCE
Ready
Pin 19 Secondary
Request to Send
Pin 7 Signal
Ground
Pin 20 Data
Terminal Ready
Pin 8 Carrier
Detect
Pin 21 Remote Loop/
Quality Detect
Pin 9 Reserved
for Testing
Pin 22 Ring
Indicator
Pin 10 Reserved
for Testing
Pin 23 Data Rate
Selector
Pin 11 Unassigned
Pin 24 Transmit
Clock
Pin 12 Secondary
Carrier Detect
Pin 25 Test
Made
Pin 13 Secondary
Clear to Send
Cannon DB-25
La conexión entre DTE y DCE es simple. Cada pin conecta con su par (el 1 con
el 1, el N con el N) existen versiones de DB-25 para cable plano que simplifica el
mecanizado de las conexiones. Cada pin tiene asignado una función tal y como se
muestra en la figura. Los nombres de las líneas están puestos desde el punto de vista del
DTE. Así, el pin 2 es la línea TxD (transmisión de datos) pero obviamente eso no es
cierto en ambos equipos, sólo en el DTE. En el DCE, por el contrario, es la línea por la
que recibe los datos del DTE. Cuando sólo se utiliza la transmisión asíncrona, sólo es
necesario utilizar nueve líneas. Se puede utilizar el conector Cannon-DB-9. Igualmente
8
el macho es el DTE y la hembra el DCE. (Desgraciadamente esta norma, y otras de la
RS232, no siempre es seguida por todos los fabricantes, razón por la cual no siempre es
fácil manejar esta interfaz).
La longitud máxima del cable entre DTE y DCE depende de la calidad de éste y
de la velocidad de transmisión utilizada. En principio la norma recomienda que no sea
superior a 15 metros para una velocidad de 20 Kb/s.
ELÉCTRICA:
La subnorma eléctrica de la RS232 es la V28. La norma fija una transmisión en
modo común (cada circuito tienen una referencia a tierra y esta es común para todos los
circuitos). Los circuitos son punto a punto, es decir, un driver con un sólo receptor de la
señal.
La señal es bipolar con lógica invertida, utilizando los siguientes valores:
• 1 lógico =-3 a - 15 voltios
• 0 lógico = + 3 a + 15 voltios
La ausencia de señal (0 voltios) queda diferenciado del 0 y 1 lógicos.
La RS232 es cortocircuitable. Esto quiere decir que, al menos teóricamente, los
drivers de salida de las puertas disponen de un mecanismo de auto-protección contra
sobrecalentamientos. La tensión máxima de operación es +/-25voltios y la carga
máxima es de 3 KΩ a 7 KΩ, con una corriente máxima de 500 mA.
FUNCIONAL: (SOBRE NORMA ASÍNCRONA )
La norma asíncrona la forman nueve líneas.
PIN
DTE
DB-9
DB-25
2
2
TxD
DCE
TxD
DCE
DTE
TxD
TxD
PIN
DB-9 DB-25
2
2
Bloque 3
3
3
RxD
RxD
RxD
RxD
3
3
7
4
RTS
RTS
RTS
RTS
7
4
8
5
CTS
CTS
CTS
CTS
8
5
1
8
DCD
DCD
DCD
DCD
1
8
4
20
DTR
DTR
DTR
DTR
4
20
6
6
DSR
DSR
DSR
DSR
6
6
9
22
RI
RI
RI
RI
9
22
5
5
GND
GND
GND
GND
5
Bloque 2
Bloque 1
5
Red telefónica
conmutada
La línea GND conecta la masa de ambos equipos y no merece mayor
comentario. Las restantes ocho líneas pueden ser agrupados en tres bloques funcionales
9
que se explican fácilmente si recordamos que la norma fue diseñada para conectar un
PC (DTE típico) con un modem (DCE típico).
PRIMER BLOQUE
Lo denominaremos "de establecimiento de conexión". Está formado por las
líneas:
DTR (Data Terminal Ready): Terminal de datos preparado. (El PC y su
RS232 están listos).
DSR (Data Set Ready): Equipo de comunicación preparado. (El modem está
listo).
RI (Ring Indicator): Indicador de llamada. (El modem indica a su PC que ha
recibido una llamada).
El objetivo es que ambos ordenadores sepan que se ha establecido un canal de
comunicación (normalmente a través de la línea telefónica).
Las líneas DTR y DSR del equipo local y del remoto deben estar activas (set)
durante todo el proceso. (De hecho cuando un PC desea dar por terminada una conexión
basta con que, momentáneamente, desactive (reset) su DTR).
La conexión se inicia manualmente (el usuario llama con el teléfono al modem
remoto) o automáticamente (el modem tiene capacidad de marcar un número de
teléfono – dialling ) y se gestiona en los módems (que negocian, de forma automática,
los parámetros de transferencia como la velocidad, compresión, etc).
Se asume que el usuario del PC que llama activará el proceso que va a utilizar la
conexión (un programa de transmisión de ficheros, por ejemplo). En el PC llamado se
asume que el proceso homólogo está ya activo (porque, por ejemplo, lo está
permanentemente) o se puede activar automáticamente al recibir de su modem la señal
de RI. Sea como fuera, la conexión queda establecida. A partir de este momento los
ordenadores pueden intercambiar información.
SEGUNDO BLOQUE: "CONTROL DE FLUJO"
Estas líneas tienen sentido en el caso de que el canal de comunicación
establecido tenga una gestión half-duplex (ver a continuación “gestión simplex, halfduplex y full-duplex...”). Si el canal está establecido, el protocolo software de nivel de
enlace de datos que se esté utilizando (Xmodem, Ymodem, HDLC,...) fijará cuál de los
dos DTEs debe comenzar a hablar/transmitir.
Las líneas en este bloque son usadas de la siguiente manera:
RTS (Request To Send): Petición de transmisión. El PC indica a su modem
que quiere transmitir a la máquina remota.
CTS (Clear To Send): Canal libre para la transmisión. El modem indica a su
PC que puede transmitir. Previamente habrá transmitido una señal
portadora por el canal de comunicación para avisar al otro modem que
ocupa el canal.
DCD (Data Carrier Detected): Detectada portadora. El modem indica a su
PC que el canal de comunicación está ocupado por el equipo remoto.
El PC que quiere transmitir activa RTS, entonces su modem manda una señal
portadora (sin modular, sin datos) para avisar al modem remoto que se reserva el canal.
Una vez reservado el canal comunica a su DCE que ya puede transmitir activando la
línea CTS.
Cuando un PC haya terminado de transmitir, desactivará RTS, el modem quitará
la portadora y desactivará CTS. Entonces el otro modem podrá reservar el canal si su
PC desea transmitir.
10
En caso de que la gestión del canal sea full-duplex todo es más sencillo. Cuando
un PC quiere transmitir activa su RTS. Automáticamente su modem le da paso
activando CTS.
TERCER BLOQUE: “TRANSMISIÓN/RECEPCIÓN DE DATOS”
El funcionamiento de las líneas de este bloque es obvio.
TxD: Transmisión de datos.
RxD: Recepción de datos
La transmisión serial de los datos, tal y como se ha explicado, con el bit de
START, de STOP, etcétera, se produce en estas líneas.
GESTIÓN SIMPLEX, HALF-DUPLEX Y FULL-DUPLEX DE UN CANAL DE
COMUNICACIÓN
Un canal de comunicación puede ser gestionado de tres maneras: simplex, semiduplex (o half-duplex) y duplex (o full-duplex).
Simplex: La comunicación sólo es posible en un sentido. Por ejemplo, las
emisiones de radio o televisión gestionan el éter en modo simplex.
Half-duplex: La comunicación es posible en ambos sentidos pero de modo
alternado, nunca simultáneamente. Por ejemplo un walkie-talkie
gestiona el éter en modo half-duplex.
Full-duplex: La comunicación es posible en ambos sentidos
simultáneamente. Por ejemplo los teléfonos móviles utilizan el éter en
modo full-duplex.
Debe quedar claro que se trata de un modo de gestión del canal, no de una
propiedad de éste. En los ejemplos queda claro que un mismo medio, el éter, puede ser
gestionado de modos distintos.
CONEXIONADO DTE-DTE: NULL-MODEM
Como ya se ha mencionado, es frecuente que la norma RS232 se utilice para
otros propósitos distintos de los originales. Uno de los más frecuentes es conectar un
DTE con otro DTE. En este caso el cableado normal DTE a DCE no tiene sentido y
estaríamos cortocircuitando las líneas de salida. Existe una solución, un cableado
cruzado que se conoce como Null-modem. Es fácil de entender si lo analizamos usando
los tres bloques funcionales.
11
BLOQUE 1:
Conectar DTR con DSR remoto y RI remoto.
De esta manera cuando un PC activa su RS232 se lo comunica al remoto.
BLOQUE 2:
RTS con CTS local y DCD remoto.
Para entender la lógica de este cableado debe observarse (ver figura a
continuación) que hay dos líneas independientes de transmisión de datos, una en cada
sentido. Por lo tanto la comunicación es potencialmente Full-duplex. Esto implica que
cada DTE puede transmitir cuando lo desee, independientemente de que el otro DTE lo
esté haciendo o no. Por lo tanto cuando un PC quiere transmitir activa su RTS, esto
activa también su propia CTS lo que le permite transmitir inmediatamente. Además
indica que está transmitiendo a la máquina remota activando el DCD remoto.
BLOQUE 3:
TxD con RxD remoto.
Como habíamos mencionado, la comunicación es potencialmente Full-Duplex.
12
TERMINALES Y EMULADORES DE TERMINAL
Una terminal es un conjunto formado por un teclado, una pantalla y un interfaz
serie (típicamente RS232) que permite conectar ambos a un ordenador central o host. El
terminal en sí no posee ninguna capacidad de cálculo, se limita a sacar por pantalla la
información que recibe del host y a transmitir al host la información/comandos
introducida por teclado. Cada vez son menos frecuentes estos equipos. En su lugar se
utiliza un ordenador personal con un programa de emulación de terminal (como el
TELIX, el PROCOMM+, el HYPERTERMINAL de Windows95, etc.).
Un terminal puede ser Full-Duplex (FD) o Half-duplex (HD) en función de
como proceda para mostrar por pantalla las pulsaciones del teclado. Si la pantalla recibe
directamente del teclado el código a visualizar entonces es HD (ver dibujo). El modo
FD es algo más complejo pues requiere la participación del host. Consiste en que el host
haga eco de la información que recibe del teclado. De esta forma el código pulsado "va
y viene" al/del host antes de ser mostrado en pantalla (y de ahí que se denomine
terminal full-duplex).
La ventaja del método FD es que permite al usuario comprobar si ha habido
error de transmisión. Si el código en pantalla es el deseado, también es el que ha leído el
host. Esto no pasa en HD. Si en HD existiera un error de transmisión y el código de la
tecla pulsada no llega o llega mal al host, el usuario no puede, en principio, saberlo.
CONTROL DE FLUJO CON RS232
Existen dos posibilidades de control de flujo de datos con la RS232: Una
hardware mediante las líneas RTS/CTS (que ya se ha descrito) y otra software
XON/XOFF.
RTS/CTS: la línea CTS indica al PC si puede transmitir o no. En
aplicaciones como la conexión de un PC a una impresora serie
(dispositivo este normalmente bastante lento) la línea CTS está
gobernada por la impresora para impedir que el PC desborde su buffer
de entrada.
13
XON/XOFF: Otra posibilidad es usar el protocolo software XON / XOFF
que consiste en lo siguiente:
1. Cuando la impresora está dispuesta para recibir datos (buffer de
entrada vacío o casi vacío) transmite al PC la marca XON (XON y
XOFF son códigos ASCII predefinidos).
2. Si el PC transmite demasiado rápido para la impresora y el buffer
está próximo a llenarse, entonces se manda la marca XOFF.
3. El PC transmite sólo si la última marca recibida fue XON.
Dependiendo de las características de los equipos a conectar se puede hacer un
control de flujo RTS / CTS, XON / XOFF, ambos o ninguno.
Cuando se utilizan ambos, normalmente es porque hay que controlar dos buffers
de recepción, el del dispositivo físico (UART), que se hace por RTS / CTS, y el buffer
de la aplicación que está recibiendo los datos, que se hace con XON / XOFF.
14
5
3
4
2
DB9
9
8
7
6
1
1µF
Tx
Rx
1µF
1µF
6
13
2
14
5
4
3
V+
V-
15
GND
Vcc
+
T2OUT
R2IN
T2IN
R2OUT
T1IN
R1OUT
MAX232
T1OUT
R1IN
C2-
C2+
C1-
C1+
Terminal -
1µF
1
16
+5V
1µF
+
Línea de Transmisión de datos
Línea de Recepción de datos
Bus de entrada
Bus de salida
Bus de entrada / salida
Línea de Activación del 74245
Línea de Activación del 74373
+
8
9
7
10
11
12
Terminal +
+
Rx
Tx
+5V
+
33pF
4MHz
10KΩ
+5V
15
16
4
3
RB7
RB6
PIC16F84
5
Vss
OSCI2/CLKOUT
OSCI1/CLKIN
MCLR
RB5
RB4
RB3
RB2
RB1
RB0/INT
Vdd
14
RA4/TOCKI
RA3
RA2
RA1
RA0
33pF
2
1
18
17
+5V
13
12
11
10
9
8
7
6
1
11
18
17
14
13
8
7
4
3
1
19
9
8
7
6
5
4
3
2
O7
D7
OE
74373
10
O6
D6
LE
O5
D5
O3
O2
O1
O0
B8
B7
B6
B5
B4
B3
B2
B1
O4
GND
Vcc
20
+5V
74245
10
GND
Vcc
D4
D3
D2
D1
D0
DIR
G
A8
A7
A6
A5
A4
A3
A2
A1
+5V
20
19
16
15
12
9
6
5
2
11
12
13
14
15
16
17
18
8
7
6
5
4
3
2
1
IN7
IN6
IN5
IN4
IN3
IN2
IN1
IN0
+5V
9
GND
Vcc
10
OUT7
OUT6
OUT5
OUT4
OUT3
OUT2
OUT1
OUT0
ULN2803
10KΩ
10KΩ
10KΩ
10KΩ
10KΩ
10KΩ
10KΩ
10KΩ
+5V
11
12
13
14
15
16
17
18
+5V
CIRCUITO ELÉCTRICO
15
El circuito se alimenta mediante una fuente de corriente continua de 5V, se
comunica al ordenador por el conector Cannon DB-9 explicado anteriormente.
Todos los integrados excepto el PIC16F84 tienen conectados entre el terminal
positivo y el negativo un condensador electrolítico para filtrar las posibles corrientes
parásitas, y que no afecten a su funcionamiento.
Las entradas son los interruptores que se pueden sustituir por cualquier sensor
que cuando se active haya entre sus terminales 5V para que el circuito reconozca un “1”
lógico, ya que el circuito utiliza los niveles de tensión TTL.
Las salidas son los relees que activan sus conmutadores, por lo que el circuito,
cuando una salida está desactivada, puede accionar un actuador y al seleccionar esta
misma salida puede encender otro actuador. Otra ventaja de ser relees es que la tensión
máxima es de 250V en alterna, 50V en continua y una corriente máxima de 10A por lo
que se pueden activar aparatos de potencia elevada.
Como todos los circuitos integrados funcionan con niveles lógicos TTL, y la
comunicación por el puerto serie utiliza sus propios niveles, hay que adaptarlos todos
para que los circuitos se puedan comunicar entre ellos, de esto se encarga el MAX232,
que transforma los niveles de RS232 a TTL.
Los condensadores que tiene conectados son los especificados por el fabricante
en el Datasheet (ver anexo I).
Los terminales que no están conectadas se pueden utilizar para la adaptación de
las líneas DSR y DTR pero no están conectadas por que no se utilizan en las rutinas del
microcontrolador.
Las líneas Tx y Rx se conectan a los terminales R1IN y T1OUT porque son los
especificados por el fabricante como terminales de entrada y salida respectivamente, sus
homólogos con tensiones TTL son el R1OUT y el T1IN respectivamente que se
conectan a los terminales del PIC programados para que funcionen como las línea Rx y
Tx, esto se explica en software del microcontrolador.
Como el 16F84 sólo tiene un puerto de 8 bits, el Puerto B, las entradas y salidas
se efectúan por él.
Cuando el circuito lee las entradas se activa el integrado 74245 (que es un bus
transmisor que se puede seleccionar el sentido de transmisión si de las puertas A a las B
o al contrario) por estar conectado al terminal RA2 del microcontrolador, cuando por
este terminal sale un “0” lógico se activa el 74245 leyendo los datos en sentido B a A,
como especifica el fabricante en el datasheet (ver anexo II), enviando los datos
recogidos por los sensores (en este caso interruptores) al 16F84 que, anteriormente, se
ha programado el puerto B como lectura; al recibir los datos los envía por la línea Tx al
ordenador. Se ha elegido este circuito por que cuando se envía la orden de escritura en
las salidas las entradas no intervengan ya que el integrado permanece en alta
impedancia (no dan ni un “0” lógico ni un “1”, el circuito lo reconoce como resistencias
muy elevadas).
Los interruptores de las entradas tienen conectados en paralelo una resistencia
para que cuando se pulse y cambie su valor, en el momento en que no está haciendo
contacto con ningún terminal, el 74245 reconozca un “0” lógico en vez de alta
impedancia.
Cuando, al microcontrolador, se le ordena que escriba en las salidas, este activa
el 74373 enviando un “1” lógico por el terminal RA3, que es el que está conectado al
LE del 74373, y después, manda el dato de los relees que hay que activar.
El 74373 es un bus en el que, si se desactiva el terminal LE, sus salidas
permanecen con el estado anterior y si se modifican las entradas, las salidas no varían,
ya que tiene un flip-flop tipo D en cada salida, esto se ve en la tabla del datasheet (ver
16
anexo III). El terminal OE está conectado a tierra para que el circuito funcione, si no las
salidas estarían en alta impedancia. Se ha elegido este chip para que cuando el
microcontrolador lea las entradas las salidas sigan activas o desactivadas como eligió el
usuario anteriormente.
Las salidas del 74373 están conectadas a las entradas del ULN2803, que es un
integrado compuesto por transistores en etapa Darlinton, lo que provoca que soporte una
elevada carga en su salida, esto quiere decir que el ULN2803 se utiliza para amplificar
los niveles de corriente de la salida del 74373 para que se puedan accionar los relees.
Este integrado soporta una carga de hasta 50V este dato está expuesto en el datasheet
(ver anexo IV).
17
PROGRAMA DEL MICROCONTROLADOR
En el programa principal se configura el
microcontrolador, programando los registros que
necesitamos.
El programa es el siguiente:
Inicio
Espera
de la
orden
El dato recibido
es un 1
list p=16F84
radix HEX
El dato recibido
es un 0
Orden
de
lectura
Orden
de
escritura
Activación
del
74245
Activación
del
74373
Lectura
de las
entradas
Espera
del
dato
Envio
del
Dato
Activación
de los
relees
Desactivación
del
74245
Desactivación
del
74373
•
En esta primera parte se elige que el
microcontrolador es el PIC16F84 y que los números se
introducen en hexadecimal.
Estado
PA_TA
PB_TB
Intcon
EQU
EQU
EQU
EQU
0x03
0x05
0x06
0x0B
Rxdreg
Txdreg
Cont
EQU
EQU
EQU
Dlycnt
EQU
0x0C ;registro de recepción
0x0D ;registro de transmisión
0x0E ;contador de bits
Transmitidos
0x0F ;contador de retraso
Aquí se han declarado los registro específicos que se
utilizan, además de los utilizados por el programa que son
designados por el programador:
Estado: Se utilizará para seleccionar el banco en el que estamos, para
poder programar las puertas como entrada o como salida.
18
•
Tris A: Es el registro utilizado para programar el puerto A como entrada
o como salida. En el programa se denomina PA_TA ya que si estamos en
el banco 0 este registro es el Puerto A y si estamos en el banco 1 es el
Tris A.
•
Tris B: Lo mismo que el Tris A pero con el puerto B.
•
Intcon: Es el encargado de la habilitación o deshabilitación de las
interrupciones.
Los demás registros son los específicos del programa, y están explicados al lado,
sus bits no modifican el funcionamiento del microcontrolador, son utilizados para
almacenar datos.
#define
RXport PA_TA,1
#define
TXport PA_TA,0
#define
SAport PA_TA,3
#define
ENport PA_TA,2
;llamamos RXport a PA1 configurado como
la señal RX
;llamamos TXport a PA0
configurado como la señal TX
;llamamos SAport a PA3
configurado como la señal que
activa las salidas
;llamamos ENport a PA2
configurado como la señal que
activa las entradas
Esto es la definición de los bits utilizados de la puerta A, se han nombrado
porque son muy utilizados y así hacer el programa más legible.
ORG 0
19
La instrucción ORG se utiliza para seleccionar en que dirección se empiece a
grabar el programa, aquí se ha seleccionado la dirección de memoria 0.
clrf
bsf
clrf
clrf
bcf
Intcon
Estado,5
PA_TA
PB_TB
Estado,5
;prohibición de las interrupciones
;selección del banco 1
;Programación del PA
;Programación del PB
;selección del banco 0
Se prohíben todas las interrupciones porque no se necesitan en el programa.
Después, se programan los dos puertos como salidas.
bsf
TXport
;Activación de Tx porque si no estaría
transmitiendo
La norma RS232 dice que cuando no transmite la línea Tx está a “1”, y que
cuando cambia de “1” a “0” es cuando recibe el bit de inicio.
bsf
clrf
bsf
bsf
bsf
bcf
bcf
ENport
PB_TB
SAport
Estado,5
RXport
Estado,5
Saport
;reseteo de las salidas del circuito
;selección del banco 1
;Programación de RX port como entrada
;selección del banco 0
Lo primero que se hace el activar el 74373 para que reconozca los datos que se
le envían, después se envían todos los bits a cero para desactivar todos los relees.
Inicio
call
btfss
RxD
Rxdreg,0
goto
goto
Salida
Entrada
;Comprueba que orden se le ha mandado de
lectura o escritura
Se declara la rutina de inicio, lo que hace es buscar la instrucción de lectura o
escritura y, una vez recibida, saltar al programa de escritura o lectura.
Salida
bsf
call
bsf
clrf
bcf
movf
movwf
SAport
RxD
Estado,5
PB_TB
Estado,5
Rxdreg,W
PB_TB
;se activa el 74373
;leemos dato del ordenador
;selección del banco 1
;programación del PB como salidas
;selección del banco 0
;Movemos el dato recibido a la salida
bcf
btfsc
goto
goto
SAport
SAport
borra
Inicio
;desactivación del 74373
;comprueba que se ha desactivado el 74373
borra
Este es el programa de escritura, lo primero que hace es activar el 74373,
después recibe el byte programa las salidas y desactiva el 74373 para que no se
modifiquen hasta la próxima vez que reciba datos.
La subrutina “borra” comprueba que el 74373 no este activo, si estuviese activo
volvería a borrar el bit SAport.
20
Entrada
bcf
clrf
bsf
movlw
movwf
bcf
movf
movwf
call
bsf
bsf
clrf
bcf
clrf
goto
Enport
Txdreg
Estado,5
0xFF
PB_TB
Estado,5
PB_TB,W
;activación del 74245
;reseteo del registro de transmisión
;selección del banco 1
;programación de PB como entrada
;selección del banco 0
;llevamos dato de PB al registro de
transmisión
Txdreg
TxD
ENport
Estado,5
PB_TB
Estado,5
PB_TB
Inicio
;transmisión del dato
;desactivación del 74245
;selección del banco 1
;programación del PB como salidas
;selección del banco 0
;reseteo de las salidas
Lo primero que se hace es activar el 74245 para poder leer las entradas, después
resetea el registro de transmisión para evitar errores. Lo siguiente que hace es programar
el puerto B como entradas y leer el dato. Por último envía el dato y se desactiva el
74245. Se programa el puerto B otra vez en salida para evitar posibles errores al tenerlo
en entrada.
RxD
Espera
del Bit
de inicio
Retardo
del Bit
de inicio
clrf
Rxdreg
btfsc
RXport
goto
RxD
call
Dly_Ini
Lectura
de un Byte
movlw 0x08
movwf Cont
RxD_Bit
call
Dly_bit
btfsc RXport
Rotar el
registro
Retardo de
un bit
Decremento
del
contador
Ha leido 8 Bits
Regreso
a donde
realizó
el salto
No ha leido 8 Bits
bsf
Rxdreg,7
btfss
bcf
RXport
Rxdreg,7
decfsz Cont,W
rrf
Rxdreg,f
;reseto del registro de
recepción
;comprueba que se ha
mandado el bit de inicio
;si no se ha mandado espera
a que lo manden
;si se ha mandado hace el
retardo correspondiente al
bit de inicio
;mueve el número de bits a
recibir al contador
;hace el retardo del bit
;comprueba que dato se le
ha mandado
;si es un uno se activa el bit
7 del registro de recepción
;si es un cero se desactiva el
bit
;decrementa el contador y lo
guarda en W para rotar sólo
6 veces
;rota a la derecha el registro
de recepción si el resultado
anterior no es cero
21
decfsz Cont,f
;decrementa el contador para
ver si ha terminado
;va a leer otro bit
;hace el retardo del bit de stop
;regresa al salto
goto RxD_Bit
call
Dly_bit
return
Esta es la rutina de recepción, en la primera parte, antes de la subrutina, lo único
que trata es el bit de Inicio, cuando la línea Rx cambia de “1” a “0” hace el retardo del
bit de inicio que es 1,5 veces mayor que el resto de los bits, ya que primero hace un
retardo de la mitad de un bit (el llamado Dly_Ini), carga el contador y vuelve a hacer un
retardo de bit Este retardo es mayor porque el ordenador espera la orden de que la línea
está libre, si no recibe contestación transcurrido este tiempo envía el dato.
La parte en la que rota el registro se hace para reducir el programa, ya que sólo
se modifica un bit y después se rota. Donde decrementa y lo guarda en el acumulador
(W), se hace porque si el resultado es cero, no tiene que rotar el registro porque sino
guardaría el bit 0 en el bit de acarreo (C) del registro estado.
TxD
Mando
del Bit
de inicio
movlw 0x08
movwf
bcf
call
Txd_Bit
btfsc
Retardo
de un Bit
Cont
TXport
Dly_bit
Txdreg,0
Envio
de un Bit
Rotar el
registro
Retardo de
un bit
Retardo de
un bit
TXport
btfss
bcf
rrf
Txdreg,0
TXport
Txdreg,f
call
Dly_bit
decfsz Cont,f
goto Txd_Bit
Decremento
del
contador
Ha leido 8 Bits
bsf
No ha leido 8 Bits
bsf
call
call
TXport
Dly_bit
Dly_bit
;mueve el número de bits a
transmitir al contador
;envía el bit de inicio
;hace el retardo del bit
;comprueba si es un 0 o un 1 lo
que hay que enviar
;si es un 1 activa el puerto de
transmisión
;si es un 0 desactiva el puerto
;rota a la derecha el registro de
transmisión
;hace el retardo
;decrementa el contador de bits
;si no se han mandado todos los
bits va a seguir enviando
;envió del bit de STOP
;se hacen dos retardos para
centrar tiempos
return
Regreso
a donde
realizó
el salto
En la rutina de transmisión no hay que enviar el bit de
inicio más largo que los demás puesto que el ordenador está no
espera a que se le de la orden de puerto libre, recibe lo que va
llegando.
La rotación se efectúa por el mismo motivo que en la recepción, con lo que sólo
se chequea el bit 0 del registro de transmisión.
22
Carga
del Byte
de retardo
Dly_bit
movlw 0x1D
Salto
a la
rutina de
retardo
movwf Dlycnt
goto Dly
decrementa
y compara
Ha termiando
No ha termiando
;se hace un retardo de
833us que es el
tiempo que se tarda
en transmitir un bit a
9600 baudios
;salto a la rutina de
temorización
El salto de las rutinas del bit de inicio y de
bit normal a Dly se realiza sólo para reducir la
programación puesto que en los dos casos es la
misma
Dly_Ini
Regreso
movlw 0x08
;retardo equivalente a
mitad del tiempo
que tarda entre bit
bit
movwf Dlycnt
goto Dly
;salto a la rutina de temporización
Esta es la rutina del bit de inicio, como la anterior, carga el dato y después
salta.
Dly
decfsz Dlycnt,f
goto Dly
return
;decrementa el contador de temporización, si el resultado
es 0 salta
;si es 1 vuelve a decrementar
;si es 0 regresa a donde se hizo el salto
Esta es la rutina que realiza el retardo.
END
Esta instrucción se utiliza para indicar que el programa ha terminado.
23
PROGRAMA DE COMUNICACIÓN EN VISUAL BASIC
El programa hecho en Visual Basic se desarrolla gracias al componente
mscomm32.ocx que permite la comunicación entre máquinas de forma rápida y sencilla.
Los componentes se cargan en el menú
proyecto haciendo clic en componentes y
seleccionando el apropiado, en nuestro caso
Microsoft Comm Control 6.0, ahora aparece en la
barra de herramientas, se selecciona y se dibuja en
el form. Los componentes tienen una serie de
propiedades que se pueden modificar bien en la
ventana de propiedades o bien en el programa
poniendo el nombre elegido para el componente,
un punto y la propiedad, como cualquier otra
herramienta.
El form del proyecto es muy sencillo, tiene
una matriz de checkbox llamada salida para
activar los relees agrupados en un frame, las
matrices se crean dando el mismo nombre a una
herramienta y cambiando en propiedades la
opción index o bien dando a copiar y pegar. La opción index es el número de fila de la
matriz.
Se han elegido checkbox puesto que se pueden seleccionar más de uno.
Para indicar que entradas hay activas hay una matriz de label agrupada en un
frame que lo que hace es cambiar el color del fondo, a rojo cuando esta activada y en
negro cuando no lo esta, el cambio de color se hace con los dos labels que no pertenecen
a la matriz, el llamado negro y el rojo.
Por último, un botón que mande la orden de recibir.
La programación es la siguiente:
Option Explicit
Esta instrucción obliga a que las variables se hayan creado anteriormente.
Dim valor As Integer
Dim cont As Integer
Se declaran valor y cont como variables de números enteros.
Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,8,1"
MSComm1.PortOpen = True
'Al iniciar el programa
'se cargan los parámetros
'y se abre el puerto 1
End Sub
Rutina que se ejecuta cuando se carga el form.
Private Sub Recibir_Click()
MSComm1.Output = "1"
'Manda la acción de leer
End Sub
Cuando se hace clic en el botón recibir se envía al microcontrolador la orden de
transmisión y el ordenador espera a que le llegen los datos.
24
Private Sub Salida_Click(Index As Integer)
Dim caracter As String
If Salida(Index).Value = 1 Then
valor = valor + 2 ^ Index
Else
valor = valor - 2 ^ Index
End If
MSComm1.Output = "0"
caracter = Chr(valor)
MSComm1.Output = carácter
'Chequea si el valor pulsado es activo o no
'y lo transforma a decimal
'Manda la acción de escritura en PB del µC
'transforma el dato de decimal a ASCII
'Envía el dato en ASCII
End Sub
Cuando se hace clic en cualquier elemento del la matriz de checkbox, lee el
valor de todos sus elementos, lo transforma a decimal y después a ACII para enviarlo en
este formato.
Se ha declarado la variable carácter como una matriz de caracteres, la diferencia
entre esta variable y las declaradas al principio del programa es que esta solo se puede
utilizar dentro de esta subrutina, y las otras en cualquier parte de la programación del
form. Si tuviésemos otros forms y necesitásemos una variable para todos habría que
crear un módulo y declarar una variable pública.
Private Sub MSComm1_OnComm()
Dim datoE() As Byte
Select Case MSComm1.CommEvent
Case 2
datoE() = MSComm1.Input
valor = datoE(0)
cont = 0
Do
'Espera a que el detector de tranmisión del
puerto se active
'En el caso de que reciba un dato haga lo
de debajo
'recibe el dato
'paso de decimal a binario activando los
cuadrados oportunos
If valor Mod 2 Then
Bit(cont).BackColor = rojo.BackColor
cont = cont + 1
Else
Bit(cont).BackColor = Negro.BackColor
cont = cont + 1
End If
valor = valor \ 2
Loop Until valor = 0
End Select
End Sub
25
Esta subrutina se ejecuta cuando hay algún cambio en el puerto, pueden ser de
distintos tipos:
Valor
Evento
1
Enviar datos
2
Recibir datos
3
Cambio en la línea CTS
4
Cambio en la línea DSR
5
Cambio en la línea CD
6
Detección de llamada
7
Fin de fichero
1001
Señal de interrupción recibida
1002
Tiempo de espera de CTS sobrepasado
1003
Tiempo de espera de DSR sobrepasado
1004
Error de trama
1006
Pérdida de información en el puerto
1007
Tiempo de espera de CD sobrepasado
1008
Desbordamiento del buffer de recepción
1009
Error de paridad
1010
Buffer de transmisión lleno
1011
Error al recuperar el DCB para el puerto
En el programa sólo se ha elegido el valor 2 porque sólo nos interesa el caso en
el que recibe algún dato.
Se ha definido la variable DatoE como una matriz de un número no definido de
bytes, se ha escogido así aunque sólo se utiliza el elemento 0, porque el compilador
reconoce como una matriz de bytes la orden input del componente que estamos
utilizando.
La operación mod lo que hace es calcular el resto de una división, por eso si
existe, es que el bit es un uno y si no es un cero. Después se utiliza la división entera
que se define con la barra invertida (\) para que el número no tenga decimales.
Las opciones que aparecen el la ventana propiedades son:
• Nombre: El nombre que se le da al componente para acceder a él desde
la programación. En nuestro caso por defecto.
• CommPort: El puerto serie que se va a utilizar. En nuestro caso el 1.
• DTREnable: Habilitación o deshabilitación de la línea DTR. En nuestro
caso por defecto.
• EOFEnable: Habilitación o deshabilitación de la búsqueda del carácter
EOF (final del fichero). En nuestro caso por defecto.
• Handshacking: Selección del protocolo a utilizar puede ser: sin
protocolo, protocolo XON/XOFF, protocolo RTS/CTS o los dos últimos.
En nuestro caso sin protocolo.
• InBufferSize: tamaño del buffer de entrada. En nuestro caso por defecto.
• Index: Índice de la matriz. En nuestro caso por defecto.
• InputLen: Número de caracteres que la propiedad input lee del buffer de
recepción. En nuestro caso 0.
• InputMode: Como lee el uerto si reconociendo caracter o en binario. En
nuestro caso en binario.
• Left: Distancia hacia la izquierda.
• NullDiscard: Determina si se transmiten los caracteres nulos desde el
puerto al buffer de recepción. En nuestro caso por defecto.
26
•
•
•
•
•
•
•
•
OutBufferSize: Tamaño del buffer de salida. En nuestro caso por
defecto.
ParityReplace: Símbolo que aparece cuando no recibe bien un carácter.
RThreshold: Número de caracteres a recibir. En nuestro caso 1 porque
si pusiésemos 0 deshabilitaríamos el evento 2.
RTSEnable: Habilitación de la línea RTS. En nuestro caso por defecto.
Settings: Propiedades del puerto, primero la velocidad, segundo la
paridad, tercero el número de bits por carácter y por último el número de
bits de STOP. En nuestro caso 9600,n,8,1.
Sthreshold: Número de bits a transmitir. En nuestro caso 0, para
desactivar el evento 1.
Tag: Contiene información para el programa.
Top: Distancia a la parte superior.
27
CONCLUSIÓN
La asignatura me ha parecido muy interesante ya que me llamaba mucho la
atención el mundo de los PICs. En lo referente a la forma de impartirla, creo que es una
buena manera ya que se puede participar abiertamente en clase.
El trabajo, es tan complicado como uno quiera ya que lo elige él mismo por lo
que no me puedo quejar.
Mi trabajo me gusta ya que nunca había desarrollado nada comunicándolo al
ordenador por lo que he aprendido otras muchas cosas que no conciernen a los
microcontroladores como el manejo del puerto RS232, programación en Visual Basic
de este puerto, que no siempre funcionan bien los circuitos integrados comprados…
BIBLIOGRAFÍA
La mayoría de los datos referentes a los microcontroladores están sacados de los
apuntes de clase, y el resto de Internet sobretodo de foros como:
• http://www.codes-sources.com: foro francés sobre programación en
muchos lenguajes, con ejemplos de aplicaciones.
• http://miarroba.com: foro argentino de electrónica en general
Para la programación de Visual Basic he utilizado los apuntes de clase de la
asignatura programación visual, el libro “Enciclopedia de Microsoft Visual basic 6” de
Francisco Javier Ceballos de la editorial Ra-Ma y foros de internet como
www.portalvb.com.
Para el desarrollo del circuito lo que he utilizado es el catálogo de Farnell y los
datasheet descargados de www.alldatasheet.com, además de buscar ejemplos
construidos en Internet como el teclado controlado por el PIC16F84 de la página
www.viddata.com/keypad_hadware.htm.
Todas las búsquedas las he realizado desde www.google.es.
28
ANEXO I. DATASHEET DEL MAX232
29
30
31
32
33
34
35
ANEXO II. DATASHEET DEL 74245
36
37
38
39
40
41
ANEXO III. DATASHEET DEL 74373
42
43
44
45
46
47
48
49
ANEXO IV. DATASHEET DEL ULN2803
50
51
52
53
54
55
56
57
ANEXO V. CIRCUITO ELÉCTRICO DEL CONTROL POR VOZ
58
Descargar