95
PROYECTO Diseño y fabricación de un robot móvil de exploración PROYECTA: D. Bernardo Fernández Carrión Tutor: D. Carlos Vivas Venegas Escuela Superior de Ingenieros Sevilla

PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

PROYECTO Diseño y fabricación de un robot móvil de exploración PROYECTA: D. Bernardo Fernández Carrión Tutor: D. Carlos Vivas Venegas Escuela Superior de Ingenieros Sevilla

Page 2: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

INDICE

1. MEMORIA................................................................................................................... 1 1.1. Objetivos .................................................................................................................... 1 1.2. Un poco de historia. ................................................................................................... 2 1.3. Descripción mecánico eléctrica.- ............................................................................... 2 1.4. Sistema de tracción.-.................................................................................................. 3 1.5 Recepción de la señal.................................................................................................. 3 1.6 Control de los motores.-.............................................................................................. 4 1.7 Grabación y lectura de la memoria. ............................................................................ 5 1.8 La rutina principal....................................................................................................... 6 1.9 Microcontrolador usado.............................................................................................. 7 1.10 Lectura de la señal de control para los motores........................................................ 7 1.11 Receptores láser modulados...................................................................................... 7 1.12 Sobre el procedimiento de escritura.......................................................................... 8 1.13 Sobre el procedimiento de lectura............................................................................. 8 1.14 Sugerencias y posibles mejoras ................................................................................ 8 2. Anexo de códigos...................................................................................................... 10 2.1 Juego de instrucciones del microcontrolador 16f84. ................................................ 10 2.1 Los registros principales. .......................................................................................... 11 2.1.1 El registro de estado......................................................................................... 11 2.1.2. El registro de Opcion...................................................................................... 12 2.1.3. El registro de interrupción .............................................................................. 13 2.2 Rutinas experimentadas. ........................................................................................... 14 2.2.1. Rutina principal .............................................................................................. 14 2.2.2 Rutina escribe256. ........................................................................................... 31 2.2.3. Rutina pntfin ................................................................................................... 40 2.2.4 Rutina lee256_alea .......................................................................................... 44 2.2.5. Rutina siguepun .............................................................................................. 54 3. Anexo. Fotos y material publicado...................................................................... 56 3.1. Fotos de interés (Orden no cronológico). ................................................................ 56 3.2. Material publicado ................................................................................................... 64 3.3 Correo electrónico del autor...................................................................................... 64 4. Planos ........................................................................................................................... 65 5. Especificaciones y características técnicas......................................................... 68

Page 3: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 1

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

1. MEMORIA.

1.1. Objetivos. El presente proyecto, surge como una idea de aplicación de los

microcontroladores como componente principal, ayudado de los periféricos necesarios

para cumplir el propósito de ser lo mas próximo a un juguete y el de emplear el mayor

número de componentes reciclados o elaborados desde el nivel más bajo.

El “Explorador” como le llamaré desde este momento fue pensado con ciertas

pretensiones, que a lo largo del tiempo fueron cambiando hasta llegar a las que se

describen finalmente en estas líneas.

El explorador, puede dirigirse a un punto de destino en modo no automático, controlado

por medio de un conjunto emisor-receptor comercial de los usados en aeromodelismo.

Está dotado de una memoria, externa al microcontrolador usado, que puede ir

memorizando las órdenes recibidas por los bloques de control de los dos motores de que

dispone.

En el punto de partida, se dispone de una baliza por puntero láser que servirá al Explorer

para el trayecto de vuelta.

Una vez que el Explorer haya alcanzado su objetivo, se envía una señal que hará que

comience el retorno al punto de partida. Desde el momento que se genera esta señal, el

Explorer entra en modo automático.

El Explorer reproducirá el camino grabado en su memoria hasta que sea interceptado por

el haz láser, momento a partir del cual, ignora lo grabado y sigue un algoritmo de

seguimiento de la luz láser.

Page 4: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 2

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

1.2. Un poco de historia. La idea primera era que el explorador pudiera ser dirigido por

radio en un entorno no muy hostil, suelo llano, no muchos obstáculos, libre de pendientes

etc., a una distancia entre 50 y 100 metros, limitada únicamente por el sistema emisor-

receptor. Se pensaba en el control desde un portátil y en la posibilidad de que el

explorador pudiera incorporar una cámara wifi, de manera que teniendo buena cobertura

de un entorno de red, pudiera controlarse el desplazamiento en tiempo real sin necesidad

de estar viendo directamente al vehículo.

Una vez que se decidiera el fin del trayecto de ida, el vehículo que habría ido grabando su

posición en una memoria, iniciaría la maniobra de posicionamiento opuesto. A

continuación, debería seguir la ruta previamente grabada en su memoria hasta el punto de

origen.

El Explorador tenía que ser un vehiculo de tipo oruga, con dos motores de tracción

delantera y una rueda loca atrás. Para no complicar el hardware, no se contemplaba la

marcha atrás aunque como se verá mas adelante, su incorporación siempre es posible. El

conjunto motor ideal es el que proporciona un servo trucado de los que se usan en

modelismo. Estos servos, si se les quita un tope que les limita el giro y el potenciómetro de

referencia de posición y contando la buena reductora de que disponen, permiten disponer

de un motor con una velocidad y par motor aceptables. En una prueba de carga que hice,

lo cargué con un paquete de 1 Kg. y tiraba perfectamente de él. Hay que tener en cuenta

que mide 24 cm. de largo y la distancia entre las partes extremas de las ruedas es 18 cm. A

pesar de todo, no quise cargarlo más.

Puesto que la manera de conocer la posición real a este nivel puede ser bastante compleja.

Decidí darle una ayudita al Explorador, proveyendo un sistema de baliza de modo que

aunque estuviera algo perdido, pudiera seguir la señal y que pudiera llegar con éxito a

casa. Mas adelante explico como lo hice.

1.3. Descripción mecánico eléctrica.- Sobre una plancha de plástico de 3 mm. de espesor,

recuperada de la carcasa de un antiguo PC y habiéndola mecanizada en forma de V, se

montaron ambos servos en la parte estrecha de la V, constituyendo el morro del vehículo

(ver fotos 4, 15). Algunas opiniones dicen que el vehículo tiene cierto parecido a un

ratoncito. En la parte trasera y tras haber probado diferentes soluciones como la de un

patín acerado, terminé por usar la rueda loca más pequeña que encontré. Como rueda

Page 5: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 3

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

también he probado varios tipos unas planas de contrachapado de 4 mm y una junta de

goma alrededor, de 80 mm de diámetro, llevaban en su cara

interior unas marcas blancas y negras que permitirían

realizar un encoder (ver fotos 12, 13 y 21). Finalmente y

por problemas de deslizamiento, se optó por unas

comerciales de goma de 60 mm. De diámetro y 23 mm. de

ancho. Como fuente de energía, el Explorador usa seis

acumuladores recargables micro AAA de 1.2 V en serie,

dándonos una batería de 7.2 V que se aplica a un regulador de tipo 7805 para proveer una

alimentación general estabilizada de 5V. La batería se ubicó por debajo de la plataforma

de plástico por lo que queda no visible. Un interruptor general de tipo palanca, situado a la

izquierda permite el corte general de la alimentación. La antena de recepción, está

localizada en el centro de la parte de atrás del vehículo.

1.4. Sistema de tracción.- Como se ha comentado anteriormente, lo forman dos servos

trucados tipo Hitec HS-303 (Foto 4). En principio, se pensó usar

sólo el motor y la reductora descartando la electrónica que incluye

los servos. Los PWM del microcontrolador 16F877 se encargarían

del control de los motores de corriente continua de cada servo. Se

probó la opción de hacer el control mediante un 16F84 auxiliar

sólo para los motores y unos puentes en H. Al final y motivado

principalmente por la frecuencia tan baja de los PWM, a la que de

una parte no llegaba el 16F877 y los grandes retardos para el

16F84, se optó por usar también la electrónica interna del servo.

1.5 Recepción de la señal.- En principio, pensé en el sistema de

apertura de las puertas de garaje, del que en alguna ocasión realicé algún control básico

monocanal. Tenía los módulos Aurel de 433.9 MHz de emisión y recepción y el

codificador-decodificador UM3750 bastante versátil para estos temas (Fotos 3 y 5). La

interfaz humana, la implementé con visual Basic en las primeras pruebas a través del

puerto serie y algunos intentos también por el puerto paralelo (Foto 22). Usando las

señales de control del puerto serie DTR, RTS la propia TXD (por nivel) y usando la DLL

port.dll de B.Kainka de la revista Elector, pueden hacerse cosas muy interesantes. Yo con

esas tres señales, variaba la codificación del 3750 emisor, con lo que podía tener un total

Page 6: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 4

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

de ocho ordenes diferentes, con la confianza de seguridad del protocolo de comunicación

del 3750. La interfaz visual era muy sencilla, cuatro flechas indicando los sentidos de

movimiento y algunos botones para las demás órdenes (ver foto 22). Los problemas que

encontré con esta solución, fueron varios. En primer lugar la falta de rapidez de respuesta

de la pareja 3750 emisión-recepción, que hacía que algunos momentos del trayecto del

vehículo, el control fuera un poco crítico. Por otra parte, tenía que disponer en el receptor

de un 3750 por cada orden que quisiera recibir. Tenía planeado emular el protocolo del

3750 en un microcontrolador, haciendo toda la decodificación en este micro aunque la

tarea no parecía del todo fácil. Otra pega del puerto serie era la necesidad de una

alimentación externa, aunque con una batería de los mismos mandos a distancia, lo tenía

solucionado. Con la misma interfaz gráfica, también hice pruebas con el puerto paralelo,

con el que me podía ahorrar la alimentación al disponer de más líneas de salida y poder

dedicar varias a alimentar el emisor. Finalmente la lentitud de respuesta y la idea de tener

que emular el protocolo del 3750 para evitar tantos integrados, me hicieron desistir de esta

solución.

Puesto que ya tenía decidido no usar el PWM de 16F877, pensé en utilizar la USAR de

este micro puesto que ya quedaba más descargado. Ahora la idea era enviar un dato

diferente para cada orden por la salida TXD del puerto serie y usando el protocolo RS232.

Esta solución usaba la misma interfaz gráfica que ya tenía resuelta pero me dio también

algunos problemas y la verdad es que no se muy bien si fue por no conocer del todo el

funcionamiento de la USAR del 16F877 o si por problemas en la transmisión, el caso es

que en ocasiones se perdía el dato lo que hacía que el sistema no fuera muy seguro.

Finalmente y puesto que consideraba que la comunicación era una parte secundaria del

proyecto, opté por mi radio de 6 canales Futaba de toda la vida que hacia tiempo que tenia

aparcada y podría darle un buen uso. Dedicaba las señales AILE y RUDD para el control

de los motores y la AUX2 para la orden de vuelta a casa. La conversión de las señales

PWM de analógico a digital deja abierta muchas posibilidades y no tenemos porqué estar

sujeto a un control todo-nada como se hace en este proyecto. Para futuras adaptaciones,

queda pendiente este tema.

1.6 Control de los motores.- La señal PWM que da el receptor Futaba es de 50 Hz y

pulsos entre 1 y 2 mS de duración. Esta señal si es enviada directamente a los dos servos

Page 7: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 5

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

trucados, consigue el movimiento adelante atrás de cada rueda y con velocidad variable

dependiendo de la posición de la palanca. Por lo tanto el control manual del vehículo es

total. Hay que entender por control manual, el funcionamiento de la tracción del vehículo

en modo abierto por la señal de radio-control. Para el caso automático, (en el modo

automático, el vehículo es autónomo para crear sus señales de mando de los motores)

pensé en dos 555 o lo que es lo mismo el 556 que generarían una velocidad fija. Podría

conseguirse el cambio del sentido de giro, añadiendo otra pareja de comparadores y

haciendo que cuando los pulsos del PWM emitido sean estrechos, se intercale un resistor

adicional en el 556. El control del enable de cada 555 desde el micro es lo que haría la

aparición o no de las señales PWM locales para cada servo. En principio no hay previsto la

marcha atrás en automático por no complicar excesivamente el software y tener que

dedicar otras dos patitas del micro o añadir los comparadores antes comentados. Aquí es

donde podría también tener aplicación la conversión DA/AD.

Para aislar la procedencia de señales para los motores, he usado un relé de tipo DIL de dos

circuitos que se activa por programa en modo automático. En reposo los motores se

conectan directamente a través de los contactos NC del relé al receptor-decodificador

Futaba. En el plano 1 puede verse el esquema eléctrico de cómo está resuelto. Como

resumen de este apartado, los motores se controlan a través de un relé de dos circuitos,

directamente del módulo futaba por los contactos NC o cuando el relé conmuta (modo

automático) a través de las señales PWM locales habilitadas por el micro y aplicadas a

través de los contactos NA del relé.

1.7 Grabación y lectura de la memoria.- La memoria que se usa para leer y grabar la ruta

es una 24LC256 que es una memoria de 32 kbyte con palabras de 8 bits es

decir 32k x 8 bits = 256 kbits. Tiene interfaz I2C y 8 pines.

Las primeras pruebas que realicé fueron de lectura, dado que es

relativamente fácil grabar la memoria usando el programa WinPic800.

Realicé un programa para que la lectura de la memoria fuera aproximadamente cada

segundo y el resultado se enviara por el puerto B. El tiempo de lectura es posible variar

intercalando un retardo en la rutina de lectura. Como el puerto B es el que controla los

motores, podía hacer que el Explorer realizara un recorrido previamente grabado en la

Page 8: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 6

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

memoria. El fichero fuente de esta prueba es el lee256_PORTB_v4.asm del anexo de

código.

La memoria está estructurada en 128 páginas de 256 bytes. Sin grabar todas las posiciones

están a FFh luego para detectar el final de la grabación se usó el byte 00h, empleándose

unos tres minutos para realizar la lectura de una página. Posteriormente se bajó la

resolución de lectura cambiando el retardo interno para hacer una actuación más fina del

control de los motores. A pesar de todo se comprobó que la memoria está sobrada para

este proyecto. Gran parte de la dificultad de este proyecto es debida al protocolo de

comunicación I2C, quizás en esta parte el uso de una memoria RAM estática hubiera

descargado bastante el software, pero claro tenemos lo de siempre a costa de complicar

bastante más el hardware.

Esta memoria incluye internamente un mecanismo de autoincremento de la dirección en

curso, que aún siendo bueno por simplificar en algunos casos, puede entorpecer en otros.

La solución adoptada en este proyecto fue la de usar el mecanismo de autoincremento en

la grabación de la memoria y grabar desde la posición mas baja hacia la mas alta.

La lectura de la ruta grabada en memoria se haría en modo aleatorio para poder prescindir

del autoincremento y poder además leer la memoria en orden inverso o sea de la posición

más alta a la más baja.

1.8 La rutina principal.- En el fichero fuente se integran las rutinas de escritura, lectura,

punto final y seguimiento del puntero. Las subrutinas del I2C se han incluido al final del

código fuente para evitar problemas de visibilidad de variables. Las subrutinas de retardo

si se dejan aparte por medio del incluye al final del código y para no complicar

excesivamente el código.

En esta rutina es donde se tiene en cuenta que a la hora de volver el vehículo, lo que en su

momento fue orden de derecha, ahora es de izquierda e igualmente con izquierda- derecha.

El código contempla la posibilidad de dos interrupciones una por cambio en el pin INT

que la provocará la orden de llegada al destino, y otra por cambio en el pin RB7 que la

provocará la detección de luz laser modulada y que lanzaría la rutina seguimiento del

puntero.

Page 9: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 7

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

1.9 Microcontrolador usado.- Finalmente tras algunas pruebas y dado el carácter de este

proyecto, se utilizó el 16F84A que tiene 1K de memoria de programa que queda un poco

justa pero que como microchip ha fabricado el 16F628 de 2K de memoria de programa y

que es compatible con el 84, siempre podrá hacerse la ampliación sin tocar el hardware.

Decidí trabajar con el más popular. Para el reloj se usa un oscilador con un cuarzo de 4

MHz.

1.10 Lectura de la señal de control para los motores.- En modo manual, las señales PWM

RUDD y AILE provenientes del receptor-demodulador Futaba, son enviadas a través de

los contactos cerrados del relé a los servos trucados y a dos AO’s IC1a-b. El doble

amplificador operacional LM358 (ver plano 1), se encarga de separar integrando las

señales PWM, comparando con las referencias de los pines 3 y 5 poniendo a nivel lógico

TTL su salida para enviarlas a los pines RB5 y RB6. Las lecturas periódicas del puerto B,

será lo que se grabe en la memoria de ruta 256.

1.11 Receptores láser modulados.- Una vez que se dé la orden de vuelta a casa (se hace

temporizando la orden de fin de trayecto unos tres segundos aproximadamente), y tras el

Explorador haber realizado la maniobra de cambio de sentido, se iniciaría la reproducción

de la ruta previamente grabada en la 256. Dado que no hay previsto ningún mecanismo de

detección de la posición real y por tanto realimentación y control se tiene prevista la ayuda

que se describe a continuación.

La idea es la de tener una baliza construida con un puntero láser y que el explorador

pueda seguirla para llegar a su punto de partida. Aunque la baliza usada, tiene la

posibilidad de moverse en el plano horizontal por estar montada sobre un motor paso a

paso, en principio, no se usa esta opción y es fija.

Para evitar interferencias luminosas, el puntero láser (Foto 16), se modula con un LM567

especialmente diseñado para estos casos. En el Explorador, se usan dos circuitos

amplificadores demoduladores también con el LM567 que se encargan de avisar al micro

de lo que ven a través de los pines RA0 y RA1. La luz modulada de la baliza debe estar

siempre en el centro de las dos barras de captación. En este punto agradezco la

colaboración de mi colega Nuria de la especialidad de ortoprótesis de mi instituto que me

construyó las barritas (ver foto 15) con resina autopolimerizante para ortodoncia que es un

material del que disponen en el laboratorio. En la base de la barra se encuentra un

Page 10: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 8

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

fototransistor que se excita por la luz impactada en cualquier parte de la barrita. Si la luz

es interceptada por alguna barra, el 567 con su electrónica asociada, envía un uno al pin

correspondiente. El micro actúa sobre los motores para hacer que el haz quede dentro.

Antes de llegar a la solución que se ha descrito anteriormente, realicé diferentes pruebas

con células LDR (Foto 13), con parejas de infrarrojos, con algún que otro mando a

distancia en desuso e incluso enviando un potente haz de luz proporcionado por una

linterna de las que alumbran a gran distancia.

1.12 Sobre el procedimiento de escritura.- Se realizó la experiencia de grabar por I2C una

256 que realizaba cada segundo una escritura de la señal presente en el puerto B. En el

puerto B se situaron sendos pulsadores que fueron pulsándose aleatoriamante. Una lectura

posterior, confirmaría el éxito de la grabación. Como se ha comentado en otro apartado, la

señal PWM que se envía en el modo manual a los motores, también se adapta para crear

una señal todo nada en dos pines del puerto B (estos sería la equivalencia con los

pulsadores).

1.13 Sobre el procedimiento de lectura.- Se experimentó grabando una 24LC256

directamente con Winpic800 y se realizó el programa lee256_PORTB que tiene por

finalidad mostrar cada segundo por el puerto B posiciones de memoria sucesivas. La

lectura finaliza cuando el byte sea 00. Los motores se activan con RB1 el derecho y con

RB4 el izquierdo por otra parte el relé que conmuta los modos manual-automático obliga a

tener un uno en RB2 para automático o leyendo de la memoria. Así pues los bytes a grabar

serían adelante -> b’00010110’ 0x16 derecha (funciona motor izquierdo) ->

b’00010100’ 0x14 izquierda (funciona motor derecho) -> b’00000110’ 0x06. Como se

ha comentado anteriormente, para poder leer desde la posición más alta a la más baja

(orden inverso a la grabación) se experimentó la lectura aleatoria, alcanzando el éxito con

la rutina lee256_alea.

1.14 Sugerencias y posibles mejoras.- La placa de circuito impreso que se utilizó fue de

simple cara y albergaba componentes SMD y de tamaño estándar. Para una futura versión,

podría emplearse todo SMD con el consiguiente ahorro de espacio. El diseño de la placa

puede mejorarse haciendo que las señales procedentes del receptor Futaba y que tienen

que pasar por el relé hacia los motores no sigan tanto recorrido. El relé debería estar más

cerca del receptor. Esto último ha podido ser motivo de los cambios por interrupción

Page 11: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 9

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

intempestiva que se provocaban y que creó bastantes problemas. En un futuro diseño, se

podría pensar incluso en sustituir el relé por componentes discretos de estado sólido.

Si se usara el 16F628, podría suprimirse la circuitería de los comparadores LM 358 ya

que al disponer ese micro controlador de convertidores AD, podrían esos convertidores

hacer el tratamiento a las señales PWM.

Debería contemplarse la posibilidad de la grabación del micro “en circuito” para no tener

que quitarlo cada vez que se haga una modificación del código.

El puntero laser no puede ser fijo porque cuando el Explorer se aleja mucho de la ruta, no

hay manera de conseguir que vuelva a corregir y volver al camino correcto. El motor paso

a paso que se usó, a pesar de llevar una reducción mecánica no es lo suficientemente fino

dando saltos excesivos para la distancia entre las barras sensoras que es de solo 6 cm.

Quizás el mecanismo de movimiento de las cabezas de una disquetera o de un disco duro

pudiera servir mejor.

Habría que prever algún modo de detectar la llegada del vehiculo al punto de partida, en la

actualidad no hay ningún modo de hacerlo y por lo tanto hay que estar pendiente de la

llegada para desconectarlo.

Podría plantearse sustituir el sistema de baliza de la ruta final por un sistema de radio

frecuencia. Un par de mini antenas direccionales montadas en el vehículo, detectarían las

señales enviadas por sendos emisores.

En fin las posibilidades que se tienen son enormes a pesar de las dimensiones del vehículo

y el campo de experimentación es inmenso considerando el estado actual de todas las

disciplinas implicadas, electrónica e informática principalmente.

Page 12: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 10

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

2. Anexo de códigos

2.1 Juego de instrucciones del microcontrolador 16f84.

Page 13: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 11

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

2.1 Los registros principales.

2.1.1 El registro de estado

Page 14: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 12

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

2.1.2. El registro de Opcion

Page 15: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 13

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

2.1.3. El registro de interrupción

Page 16: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 14

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

2.2 Rutinas experimentadas.

2.2.1. Rutina principal

;***************************** explor_1.asm *****************************

;

; Referencias escribe256.asm pntfin.asm lee256_alea1.asm, siguepun.asm

; Programa principal del vehiculo programable BFCEXPLOR1, recopila varios módulos

; experimentados y referenciados mas arriba.

; Tras una temporización inicial de aproximadamente tres segundos, se lanza el proceso

; de escritura de la 256, durante este tiempo el vehículo se está conduciendo manual-

; mente al destino deseado.

; Una vez alcanzado el destino, con la señal del emisor AUX2 se provoca una interrupción

; por cambio en el pin INT/RB0. El vehiculo inicia la maniobra de cambio de sentido y

; finalizada da comienzo a la rutina lee256 controlándose los motores por la información

; grabada en la 256. Si durante el trayecto las fotobarras detectan la luz láser modulada,

; se provoca una interrupción por cambio en RB7 y se inicia la rutina siguepun.

;============================PRINCIPAL ========================

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

LIST P=16F84A

INCLUDE <P16F84A.INC>

CBLOCK 0x0C

M24LC256_AddressHigh ; Guarda el valor de la dirección de memoria a

M24LC256_AddressLow ; escribir o leer.

M24LC256_Dato

I2C_ContadorBits ; Cuenta los bits a transmitir o a recibir.

I2C_Dato ; Dato a transmitir o recibido.

Page 17: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 15

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

I2C_Flags ; Guarda la información del estado del bus I2C.

NIDO

NIDO2

NIDO3

CuentaPosicion

CONTADOR ; para contar los bytes que escribe

ENDC

M24LC256_DireccionEscritura EQU 0xa0; Dirección de la memoria 24LC256 para

M24LC256_DireccionLectura EQU 0xa1; escritura y lectura respectivamente.

#DEFINE I2C_UltimoByteLeer I2C_Flags,0

; - (I2C_UltimoByteLeer)=0, NO es el último byte a leer por el maestro.

; - (I2C_UltimoByteLeer)=1, SÍ es el último byte a leer por el maestro.

; La definición de las líneas SCL y SDA del bus I2C se puede cambiar según las

; necesidades del hardware.

#DEFINE SCL PORTA,3 ; Línea SCL del bus I2C.

#DEFINE SDA PORTA,2 ; Línea SDA del bus I2C.

#DEFINE Posicion 0x00 ; posicion que se lee

;

;===========================ESCRIBE256 ==========================

ORG 0

goto Inicio_Escribe

Page 18: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 16

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

ORG 4 ;vector de interrupcion

goto RSI_pntfin

Inicio_Escribe

clrf M24LC256_AddressHigh ; Prepara el byte alto de la pagina

movlw Posicion

movwf M24LC256_AddressLow

Inicio2

bsf STATUS,RP0

movlw b'01100001' ; Entrada de interrupción y estado de motores

movwf PORTB ; Configura el PORTB

movlw b'00000000' ; Interrupcion flanco descendente bit6 = 0

movwf OPTION_REG

movlw b'10010000' ; Interrupción por cambio en RB0/INT y RB

movwf INTCON

bcf STATUS,RP0

bcf PORTB,2 ; asegura que no entra el relé

movlw 0xFF

movwf CONTADOR

InicializaEscritura

bcf I2C_UltimoByteLeer ; Todavía no ha comenzado a leer ningún dato

call I2C_EnviaStart ; Comienza el protocolo Nº 1

movlw M24LC256_DireccionEscritura ; Nº 2 Incluida en M24LC256 envía direccion escritura del esclavo

call I2C_EnviaByte ; a partir de las direcciones apuntadas mas abajo

Page 19: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 17

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

movf M24LC256_AddressHigh,W ; Nº 3

call I2C_EnviaByte

movf M24LC256_AddressLow,W ; Nº 4

call I2C_EnviaByte ; Ahora esperamos el reconocimiento del esclavo

EsperaEsclavo

movf PORTB,0 ; Nº 5 el dato del puerto B se carga en W para escribirlo.

bcf PORTB,2 ; asegura que no entra el relé

call I2C_EnviaByte

call Retardo

decfsz CONTADOR,1

goto EsperaEsclavo

call I2C_EnviaStop ; paso 5 del protocolo

sleep

;=============================PNTFIN =========================

; Cuando se provoca una interrupción por cambio en RB0/INT se lanza esta rutina que

; saca una secuencia de dos salidas del puerto para conseguir una ruta de un rombo y

; conseguir que el móvil se ponga orientado en sentido contrario a la marcha que llevaba.

; Cuando termina la maniobra, se inicia la rutina leealea.

RSI_pntfin

btfsc INTCON,RBIF ; vemos si se ha producido por cambio en RB7

goto Siguepun

Page 20: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 18

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

;----------------------configura-----------------------------------

bsf STATUS,RP0

movlw b'01100001' ; Entrada de interrupción y estado de motores

movwf PORTB ; Configura el PORTB

movlw b'10001000' ; Interrupción por cambio en RB

movwf INTCON

bcf STATUS,RP0

movlw 0x04

movwf NIDO

Comienzo

bsf PORTB,2 ; activa el rele

bcf PORTB,3

call Retardo_500ms

bsf PORTB,3 ; Intermitencia en el pin RB3

call Retardo_500ms

decfsz NIDO,1

goto Comienzo

RSI

; clrf PORTB

bsf PORTB,2 ; activa el rele

movlw b'11111101' ; movimiento a la izquierda

movwf PORTB

; call Retar3

Page 21: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 19

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

; call Retar4

call Retardo_1s

movlw b'11101111' ; movimiento a la derecha

movwf PORTB

call Retardo_500ms ;

call Retardo_1s

movlw b'11101111' ; movimiento a la derecha

movwf PORTB

call Retardo_500ms ;

call Retardo_1s

movlw b'11101111' ; movimiento a la derecha

movwf PORTB

call Retardo_500ms ;

call Retardo_1s

call Retardo_1s

movlw b'11111101' ; movimiento a la izquierda

movwf PORTB

call Retardo_200ms

; bsf INTCON,7 ; prepara las interrupciones

; goto Inicio_Escribe

;======================= LEEALEA =======================

movlw b'11101001' ; desactivamos el rele y paramos los motores

movwf PORTB

Page 22: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 20

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

; configuramos ahora la interrupción por cambio en RB7

bsf STATUS,RP0

movlw b'11100001' ; Entrada de interrupción y estado de motores

movwf PORTB ; Configura el PORTB

movlw b'01000000' ; Interrupcion flanco descendente

movwf OPTION_REG

movlw b'10001000' ; Interrupción por cambio en RB7

movwf INTCON

bcf STATUS,RP0

bcf PORTB,2 ; asegura que no entra el relé

Inicio_alea

clrf M24LC256_AddressHigh ; Prepara el byte alto de la pagina

movlw 0xff

movwf M24LC256_AddressLow ; la primera posición es la FFh

bsf STATUS,RP0

movlw b'00000000'

movwf PORTB ; Configura el PORTB

; movlw 0xff ; Puerto A como entrada.

; movwf PORTA

bcf STATUS,RP0

InicializaLectura

bcf I2C_UltimoByteLeer ; Todavía no ha comenzado a leer ningún dato

call I2C_EnviaStart ; Comienza el protocolo Nº 1

Page 23: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 21

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

movlw M24LC256_DireccionEscritura ; Incluida en M24LC256 envía direccion lectura del esclavo

call I2C_EnviaByte ; a partir de las direcciones apuntadas mas abajo

Bucle

movf M24LC256_AddressHigh,W

call I2C_EnviaByte

movf M24LC256_AddressLow,W

call I2C_EnviaByte ; Ahora esperamos el reconocimiento del esclavo

EsperaEsclavo_alea

call I2C_EnviaStart ; Nº 2

movlw M24LC256_DireccionLectura ; Nº 3

call I2C_EnviaByte

LeeByte

clrf I2C_Dato

call I2C_LeeByte ; Lo deja en I2C_Dato Nº 4

movf I2C_Dato,W

movwf PORTB

bsf PORTB,3

call Retardo

nop

movf I2C_Dato,1 ; Prueba si vale cero

Page 24: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 22

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

btfss STATUS,Z ; Prueba fin lectura

goto SiguientePosicion

bsf I2C_Flags,0

call I2C_EnviaStop

sleep

SiguientePosicion

incf CuentaPosicion,1 ;Posicion

movf CuentaPosicion,0

sublw .255 ; 256 posiciones en cada pagina

btfsc STATUS,Z

sleep

bsf I2C_UltimoByteLeer

call I2C_EnviaStop

decf M24LC256_AddressLow,1 ; direccion anterior

; decf M24LC256_AddressLow,1 ; por el autoincremento

; movf M24LC256_AddressLow,W

; sublw .127 ; 128 posiciones en cada pagina

goto InicializaLectura

;========================= SIGUEPUN =========================

; Rutina que se sigue en caso de que se produzca una interrupcion por cambio en RB7.

; básicamente es una rutina para mantener la luz laser entre las dos barras, actuando

; sobre el motor que interese en cada caso.

Siguepun

Page 25: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 23

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

#define Ver_der PORTA,0

#define Ver_izq PORTA,1

#define Saca_der PORTB,1

#define Saca_izq PORTB,4

; ---------------------------- configurar ---------------------------

bsf STATUS,5

movlw b'11111111'

movwf PORTA

movlw b'00000000'

movwf PORTB

bcf STATUS,5

; ----------------------------- principal ---------------------------

clrf PORTB

bsf PORTB,2 ; para activar el rele

Inicio_sigue

btfss Ver_der

goto Derecha

btfss Ver_izq

goto Izquierda

bsf PORTB,2 ; para activar el rele

bsf Saca_der

bsf Saca_izq

goto Inicio_sigue

Page 26: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 24

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

Derecha

bsf Saca_der

btfss Ver_izq

goto Izquierda

bcf Saca_izq

goto Inicio_sigue

Izquierda

bsf Saca_izq

btfss Ver_der

goto Derecha

bcf Saca_der

goto Inicio_sigue

;end

;=================== SUBRUTINAS =============================

Retardo

movlw 0x04

movwf NIDO3

Retar

decfsz NIDO,1

goto Retar

decfsz NIDO2,1

goto Retar

; bcf PORTB,3 ; para el in termitente

decfsz NIDO3,1

Page 27: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 25

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

goto Retar

return

; ------------------M24LC256_InicializaLectura --------------------------------

M24LC256_InicializaLectura

bcf I2C_Flags,0 ; Todavía no ha comenzado a leer ningún dato.

call I2C_EnviaStart ; Envía condición de Start.

movlw M24LC256_DireccionEscritura ; Envía dirección de escritura del

call I2C_EnviaByte ; esclavo.

movf M24LC256_AddressHigh,W ; A partir de la dirección apuntada por los

call I2C_EnviaByte ; registros M24LC256_AddressHigh y

movf M24LC256_AddressLow,W ; M24LC256_AddressLow.

call I2C_EnviaByte

return

; Subrutina "SDA_Bajo" -------------------------------------------------------

;

SDA_Bajo

bsf STATUS,RP0 ; Configura la línea SDA como salida.

bcf SDA

bcf STATUS,RP0

bcf SDA ; SDA en bajo.

return

;

; Subrutina "SDA_AltaImpedancia" ---------------------------------------------

;

SDA_AltaImpedancia

bsf STATUS,RP0 ; Configura la línea SDA entrada.

Page 28: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 26

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

bsf SDA ; Lo pone en alta impedancia y, gracias a la

bcf STATUS,RP0 ; Rp de esta línea, se mantiene a nivel alto.

return

;

; Subrutina "SCL_Bajo" -------------------------------------------------------

;

SCL_Bajo

bsf STATUS,RP0

bcf SCL ; Configura la línea SCL como salida.

bcf STATUS,RP0

bcf SCL ; La línea de reloj SCL en bajo.

return

;

; Subrutina "SCL_AltaImpedancia" ----------------------------------------------

;

SCL_AltaImpedancia

bsf STATUS,RP0 ; Configura la línea SCL entrada.

bsf SCL ; Lo pone en alta impedancia y, gracias a la Rp

bcf STATUS,RP0 ; de esta línea, se mantiene a nivel alto.

SCL_EsperaNivelAlto

btfss SCL ; Si algún esclavo mantiene esta línea en bajo

goto SCL_EsperaNivelAlto ; hay que esperar.

return

;

; Subrutina "I2C_EnviaStart" --------------------------------------------------

;

Page 29: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 27

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

; Esta subrutina envía una condición de Start o inicio.

;

I2C_EnviaStart

call SDA_AltaImpedancia ; Línea SDA en alto.

call SCL_AltaImpedancia ; Línea SCL en alto.

call Retardo_4micros ; Tiempo tBUF del protocolo.

call SDA_Bajo ; Flanco de bajada de SDA mientras SCL está alto.

call Retardo_4micros ; Tiempo tHD;STA del protocolo.

call SCL_Bajo ; Flanco de bajada del reloj SCL.

call Retardo_4micros

return

;

; Subrutina "I2C_EnviaStop" ----------------------------------------------------

;

; Esta subrutina envía un condición de Stop o parada.

;

I2C_EnviaStop

call SDA_Bajo

call SCL_AltaImpedancia ; Flanco de subida de SCL.

call Retardo_4micros ; Tiempo tSU;STO del protocolo.

call SDA_AltaImpedancia ; Flanco de subida de SDA.

call Retardo_4micros ; Tiempo tBUF del protocolo.

return

;

; Subrutina "I2C_EnviaByte" ----------------------------------------------------

;

; El microcontrolador maestro transmite un byte por el bus I2C, comenzando por

; el bit MSB. El byte a transmitir debe estar cargado previamente en el registro

Page 30: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 28

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

; de trabajo W. De la subrutina ejecutada anteriormente I2C_EnviaStart o esta

; misma I2C_EnviaByte,la línea SCL se debe encontrar a nivel bajo al menos durante

; 5 µs.

;

I2C_EnviaByte

movwf I2C_Dato ; Almacena el byte a transmitir.

movlw 0x08 ; A transmitir 8 bits.

movwf I2C_ContadorBits

I2C_EnviaBit

rlf I2C_Dato,F ; Chequea el bit, llevándolo previamente al Carry.

btfsc STATUS,C

goto I2C_EnviaUno

I2C_EnviaCero

call SDA_Bajo ; Si es "0" envía un nivel bajo.

goto I2C_FlancoSCL

I2C_EnviaUno

call SDA_AltaImpedancia ; Si es "1" lo activará a alto.

I2C_FlancoSCL

call SCL_AltaImpedancia ; Flanco de subida del SCL.

call Retardo_4micros ; Tiempo tHIGH del protocolo.

call SCL_Bajo ; Termina el semiperiodo positivo del reloj.

call Retardo_4micros ; Tiempo tHD;DAT del protocolo.

decfsz I2C_ContadorBits,F ; Lazo para los ocho bits.

goto I2C_EnviaBit

;

call SDA_AltaImpedancia ; Libera la línea de datos.

call SCL_AltaImpedancia ; Pulso en alto de reloj para que el esclavo

call Retardo_4micros ; pueda enviar el bit ACK.

Page 31: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 29

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

call SCL_Bajo

call Retardo_4micros

return

;

; Subrutina "I2C_LeeByte" -------------------------------------------------------

;

; El microcontrolador maestro lee un byte desde el esclavo conectado al bus I2C.

; El dato recibido se carga en el registro I2C_Dato y lo envía a la subrutina

; superior a través del registro W. Se empieza a leer por el bit de mayor peso MSB.

; De alguna de las subrutinas ejecutadas anteriormente I2C_EnviaStart, I2C_EnviaByte

; o esta misma I2C_LeeByte, la línea SCL lleva en bajo al menos 5 µs.

I2C_LeeByte

movlw 0x08 ; A recibir 8 bits.

movwf I2C_ContadorBits

call SDA_AltaImpedancia ; Deja libre la línea de datos.

I2C_LeeBit

call SCL_AltaImpedancia ; Flanco de subida del reloj.

bcf STATUS,C ; En principio supone que es "0".

btfsc SDA ; Lee el bit

bsf STATUS,C ; Si es "1" carga 1 en el Carry.

rlf I2C_Dato,F ; Lo introduce en el registro.

call SCL_Bajo ; Termina el semiperiodo positivo del reloj.

call Retardo_4micros ; Tiempo tHD;DAT del protocolo.

decfsz I2C_ContadorBits,F ; Lazo para los 8 bits.

goto I2C_LeeBit

;

; Chequea si este es el último byte a leer para enviar o no el bit de reconocimiento

Page 32: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 30

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

; ACK en consecuencia.

;

btfss I2C_UltimoByteLeer ; Si es el último, no debe enviar

; el bit de reconocimiento ACK.

call SDA_Bajo ; Envía el bit de reconocimiento ACK

; porque todavía no es el último byte a leer.

call SCL_AltaImpedancia ; Pulso en alto del SCL para transmitir el

call Retardo_4micros ; bit ACK de reconocimiento. Este es tHIGH.

call SCL_Bajo ; Pulso de bajada del SCL.

call Retardo_4micros

movf I2C_Dato,W ; El resultado se manda en el registro de

return ; de trabajo W.

include <RETARDOSv.INC>

END

Page 33: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 31

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

2.2.2 Rutina escribe256.

;***************************** escribe256.asm ***************************

;

; Referencia lee256_alea1.asm

; Escribe la memoria 24LC256 de manera secuencial desde la primera posicion en adelante

; Los pines RB5,6 del puerto B son entradas, unos LED los ponen a 0 y pulsadores a 1

; periódicamente (cada segundo aprox.)se escribe en la memoria lo que se lee de estos pines

; El protocolo de escritura comprende los siguientes pasos:

; 1* Primero el maestro envia la condicion de Start.

; 2* Luego envia el byte de control en modo escritura.

; 3* A continuacion envia el byte de pagina donde se va a escribir Address High Byte.

; 4* Se envia el byte de posicion en la pagina Address Low Byte.

; 5º Se transmiten los datos a escribir. La dirección de la posicion se autoincrementa.

; 6º Por último el maestro envía la condición de Stop.

;

; ZONA DE DATOS **************************************************

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

LIST P=16F84A

INCLUDE <P16F84A.INC>

CBLOCK 0x0C

M24LC256_AddressHigh ; Guarda el valor de la dirección de memoria a

M24LC256_AddressLow ; escribir o leer.

M24LC256_Dato

I2C_ContadorBits ; Cuenta los bits a transmitir o a recibir.

I2C_Dato ; Dato a transmitir o recibido.

I2C_Flags ; Guarda la información del estado del bus I2C.

NIDO

NIDO2

Page 34: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 32

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

NIDO3

CuentaPosicion

CONTADOR ; para contar los bytes que escribe

ENDC

M24LC256_DireccionEscritura EQU 0xa0; Dirección de la memoria 24LC256 para

M24LC256_DireccionLectura EQU 0xa1; escritura y lectura respectivamente.

#DEFINE I2C_UltimoByteLeer I2C_Flags,0

; - (I2C_UltimoByteLeer)=0, NO es el último byte a leer por el maestro.

; - (I2C_UltimoByteLeer)=1, SÍ es el último byte a leer por el maestro.

; La definición de las líneas SCL y SDA del bus I2C se puede cambiar según las

; necesidades del hardware.

#DEFINE SCL PORTA,3 ; Línea SCL del bus I2C.

#DEFINE SDA PORTA,2 ; Línea SDA del bus I2C.

#DEFINE Posicion 0x00 ; posicion que se lee

;

; ******** ZONA DE CÓDIGOS *********************************************

ORG 0

Inicio

clrf M24LC256_AddressHigh ; Prepara el byte alto de la pagina

movlw Posicion

movwf M24LC256_AddressLow

Inicio2

Page 35: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 33

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

bsf STATUS,RP0

movlw b'01100000'

movwf PORTB ; Configura el PORTB

; movlw 0xff ; Puerto A como entrada.

; movwf PORTA

bcf STATUS,RP0

movlw 0x08

movwf CONTADOR

InicializaEscritura

bcf I2C_UltimoByteLeer ; Todavía no ha comenzado a leer ningún dato

call I2C_EnviaStart ; Comienza el protocolo Nº 1

movlw M24LC256_DireccionEscritura ; Nº 2 Incluida en M24LC256 envía direccion escritura del esclavo

call I2C_EnviaByte ; a partir de las direcciones apuntadas mas abajo

movf M24LC256_AddressHigh,W ; Nº 3

call I2C_EnviaByte

movf M24LC256_AddressLow,W ; Nº 4

call I2C_EnviaByte ; Ahora esperamos el reconocimiento del esclavo

EsperaEsclavo

movf PORTB,0 ; Nº 5 el dato del puerto B se carga en W para escribirlo.

call I2C_EnviaByte

call Retardo

decfsz CONTADOR,1

Page 36: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 34

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

goto EsperaEsclavo

call I2C_EnviaStop ; paso 5 del protocolo

; ---------------- subrutinas ----------------------------------------------

Retardo

movlw 0x04

movwf NIDO3

Retar

decfsz NIDO,1

goto Retar

decfsz NIDO2,1

goto Retar

; bcf PORTB,3 ; para el in termitente

decfsz NIDO3,1

goto Retar

return

; ------------------ Retardo_4micros ------------------------------------------

Retardo_4micros

return

; ------------------M24LC256_InicializaLectura --------------------------------

M24LC256_InicializaLectura

bcf I2C_Flags,0 ; Todavía no ha comenzado a leer ningún dato.

call I2C_EnviaStart ; Envía condición de Start.

movlw M24LC256_DireccionEscritura; Envía dirección de escritura del

call I2C_EnviaByte ; esclavo.

movf M24LC256_AddressHigh,W ; A partir de la dirección apuntada por los

Page 37: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 35

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

call I2C_EnviaByte ; registros M24LC256_AddressHigh y

movf M24LC256_AddressLow,W ; M24LC256_AddressLow.

call I2C_EnviaByte

return

; Subrutina "SDA_Bajo" -------------------------------------------------------

;

SDA_Bajo

bsf STATUS,RP0 ; Configura la línea SDA como salida.

bcf SDA

bcf STATUS,RP0

bcf SDA ; SDA en bajo.

return

;

; Subrutina "SDA_AltaImpedancia" ---------------------------------------------

;

SDA_AltaImpedancia

bsf STATUS,RP0 ; Configura la línea SDA entrada.

bsf SDA ; Lo pone en alta impedancia y, gracias a la

bcf STATUS,RP0 ; Rp de esta línea, se mantiene a nivel alto.

return

;

; Subrutina "SCL_Bajo" -------------------------------------------------------

;

SCL_Bajo

bsf STATUS,RP0

bcf SCL ; Configura la línea SCL como salida.

bcf STATUS,RP0

Page 38: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 36

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

bcf SCL ; La línea de reloj SCL en bajo.

return

;

; Subrutina "SCL_AltaImpedancia" ----------------------------------------------

;

SCL_AltaImpedancia

bsf STATUS,RP0 ; Configura la línea SCL entrada.

bsf SCL ; Lo pone en alta impedancia y, gracias a la Rp

bcf STATUS,RP0 ; de esta línea, se mantiene a nivel alto.

SCL_EsperaNivelAlto

btfss SCL ; Si algún esclavo mantiene esta línea en bajo

goto SCL_EsperaNivelAlto ; hay que esperar.

return

;

; Subrutina "I2C_EnviaStart" --------------------------------------------------

;

; Esta subrutina envía una condición de Start o inicio.

;

I2C_EnviaStart

call SDA_AltaImpedancia ; Línea SDA en alto.

call SCL_AltaImpedancia ; Línea SCL en alto.

call Retardo_4micros ; Tiempo tBUF del protocolo.

call SDA_Bajo ; Flanco de bajada de SDA mientras SCL está alto.

call Retardo_4micros ; Tiempo tHD;STA del protocolo.

call SCL_Bajo ; Flanco de bajada del reloj SCL.

call Retardo_4micros

return

;

; Subrutina "I2C_EnviaStop" ----------------------------------------------------

;

Page 39: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 37

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

; Esta subrutina envía un condición de Stop o parada.

;

I2C_EnviaStop

call SDA_Bajo

call SCL_AltaImpedancia ; Flanco de subida de SCL.

call Retardo_4micros ; Tiempo tSU;STO del protocolo.

call SDA_AltaImpedancia ; Flanco de subida de SDA.

call Retardo_4micros ; Tiempo tBUF del protocolo.

return

;

; Subrutina "I2C_EnviaByte" ----------------------------------------------------

;

; El microcontrolador maestro transmite un byte por el bus I2C, comenzando por

; el bit MSB. El byte a transmitir debe estar cargado previamente en el registro

; de trabajo W. De la subrutina ejecutada anteriormente I2C_EnviaStart o esta

; misma I2C_EnviaByte,la línea SCL se debe encontrar a nivel bajo al menos durante

; 5 µs.

;

I2C_EnviaByte

movwf I2C_Dato ; Almacena el byte a transmitir.

movlw 0x08 ; A transmitir 8 bits.

movwf I2C_ContadorBits

I2C_EnviaBit

rlf I2C_Dato,F ; Chequea el bit, llevándolo previamente al Carry.

btfsc STATUS,C

goto I2C_EnviaUno

I2C_EnviaCero

call SDA_Bajo ; Si es "0" envía un nivel bajo.

goto I2C_FlancoSCL

I2C_EnviaUno

Page 40: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 38

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

call SDA_AltaImpedancia ; Si es "1" lo activará a alto.

I2C_FlancoSCL

call SCL_AltaImpedancia ; Flanco de subida del SCL.

call Retardo_4micros ; Tiempo tHIGH del protocolo.

call SCL_Bajo ; Termina el semiperiodo positivo del reloj.

call Retardo_4micros ; Tiempo tHD;DAT del protocolo.

decfsz I2C_ContadorBits,F ; Lazo para los ocho bits.

goto I2C_EnviaBit

;

call SDA_AltaImpedancia ; Libera la línea de datos.

call SCL_AltaImpedancia ; Pulso en alto de reloj para que el esclavo

call Retardo_4micros ; pueda enviar el bit ACK.

call SCL_Bajo

call Retardo_4micros

return

;

; Subrutina "I2C_LeeByte" -------------------------------------------------------

;

; El microcontrolador maestro lee un byte desde el esclavo conectado al bus I2C.

; El dato recibido se carga en el registro I2C_Dato y lo envía a la subrutina

; superior a través del registro W. Se empieza a leer por el bit de mayor peso MSB.

; De alguna de las subrutinas ejecutadas anteriormente I2C_EnviaStart, I2C_EnviaByte

; o esta misma I2C_LeeByte, la línea SCL lleva en bajo al menos 5 µs.

I2C_LeeByte

movlw 0x08 ; A recibir 8 bits.

movwf I2C_ContadorBits

call SDA_AltaImpedancia ; Deja libre la línea de datos.

I2C_LeeBit

call SCL_AltaImpedancia ; Flanco de subida del reloj.

Page 41: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 39

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

bcf STATUS,C ; En principio supone que es "0".

btfsc SDA ; Lee el bit

bsf STATUS,C ; Si es "1" carga 1 en el Carry.

rlf I2C_Dato,F ; Lo introduce en el registro.

call SCL_Bajo ; Termina el semiperiodo positivo del reloj.

call Retardo_4micros ; Tiempo tHD;DAT del protocolo.

decfsz I2C_ContadorBits,F ; Lazo para los 8 bits.

goto I2C_LeeBit

;

; Chequea si este es el último byte a leer para enviar o no el bit de reconocimiento

; ACK en consecuencia.

;

btfss I2C_UltimoByteLeer ; Si es el último, no debe enviar

; el bit de reconocimiento ACK.

call SDA_Bajo ; Envía el bit de reconocimiento ACK

; porque todavía no es el último byte a leer.

call SCL_AltaImpedancia ; Pulso en alto del SCL para transmitir el

call Retardo_4micros ; bit ACK de reconocimiento. Este es tHIGH.

call SCL_Bajo ; Pulso de bajada del SCL.

call Retardo_4micros

movf I2C_Dato,W ; El resultado se manda en el registro de

return ; de trabajo W.

END

Page 42: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 40

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

2.2.3. Rutina pntfin

;pntfin.asm Hace un intermitente de espera, hasta que se provoca una interrupción

; por cambio en RB4 en ese momento se lanza un rutina que saca una secuencia de dos

; salidas del puerto para conseguir una ruta de un cuadrado y conseguir que el móvil

; se ponga orientado en sentido contrario a la marcha que llevaba. Cuando termina la

; maniobra, el WDT provoca el reset y de nuevo comienza la intermitencia.

list p=16f84a

ESTADO equ 0x03

PORTB equ 0x06

INTCON equ 0x0b

OPTION_REG equ 0x81

#define Retar1 Retardo_500ms

#define Retar2 Retardo_1s

#define Retar3 Retardo_200ms

#define Retar4 Retardo_100ms

CBLOCK 0X0C

ENDC

org 0

goto Inicio

org 4 ;vector de interrupción

goto RSI

;----------------------configura-----------------------------------

Inicio

Page 43: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 41

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

bsf ESTADO,5

movlw b'11110000' ;entradas y salidas

movwf PORTB

bcf OPTION_REG,7

movlw b'10001000'

movwf INTCON

bcf ESTADO,5

Comienzo

bcf PORTB,2 ; desactiva el rele

bcf PORTB,3

call Retar1

clrwdt

bsf PORTB,3 ; Intermitencia en el pin RB3

call Retar1

clrwdt

goto Comienzo

RSI

clrf PORTB

bsf INTCON,3 ; para habilitar de nuevo las interrupciones RB

btfsc PORTB,4 ;

goto RSI ; espera WDT

bsf PORTB,2 ; activa el rele

movlw b'11110110' ; movimiento a la izquierda

movwf PORTB

Page 44: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 42

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

call Retar3

call Retar4

clrwdt

call Retar2

clrwdt

movlw b'11110101' ; movimiento a la derecha

movwf PORTB

call Retar1 ;

clrwdt

call Retar2

clrwdt

call Retar3 ;

call Retar4

clrwdt

movlw b'11110101' ; movimiento a la derecha

movwf PORTB

call Retar1 ;

clrwdt

call Retar2

clrwdt

call Retar3 ;

call Retar4

clrwdt

movlw b'11110101' ; movimiento a la derecha

movwf PORTB

Page 45: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 43

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

call Retar1 ;

clrwdt

call Retar2

clrwdt

call Retar3 ;

call Retar4

clrwdt

call Retar2

clrwdt

movlw b'11110110' ; movimiento a la izquierda

movwf PORTB

call Retar3

bsf INTCON,7 ; prepara las interrupciones

include <RETARDOS.INC>

end

Page 46: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 44

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

2.2.4 Rutina lee256_alea

.;**************************** lee256_alea1.asm *************************

;

; Referencia lee256_alea.asm

; Lee la memoria 24LC256 de manera aleatoria y lo visualiza por el puerto B

; La lectura se inicia desde la posición FF hasta que encuentra un 00 de modo decreciente

; solo lee una pagina 256 bytes

; El protocolo de lectura comprende los siguientes pasos:

; 1* Primero el maestro realiza el envío de la dirección de comienzo, escribiendo en la memoria

; 2* Luego el maestro vuelve a enviar la condición de Start.

; 3* A continuación envía el byte de control en modo lectura.

; 4* Después el maestro lee el contenido de la memoria.

; 5º El master no envia ACK pero sí se realiza la operación de stop.

;

; ZONA DE DATOS **************************************************

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

LIST P=16F84A

INCLUDE <P16F84A.INC>

CBLOCK 0x0C

M24LC256_AddressHigh ; Guarda el valor de la dirección de memoria a

M24LC256_AddressLow ; escribir o leer.

M24LC256_Dato

I2C_ContadorBits ; Cuenta los bits a transmitir o a recibir.

I2C_Dato ; Dato a transmitir o recibido.

I2C_Flags ; Guarda la información del estado del bus I2C.

Page 47: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 45

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

NIDO

NIDO2

NIDO3

CuentaPosicion

ENDC

M24LC256_DireccionEscritura EQU 0xa0; Dirección de la memoria 24LC256 para

M24LC256_DireccionLectura EQU 0xa1; escritura y lectura respectivamente.

#DEFINE I2C_UltimoByteLeer I2C_Flags,0

#DEFINE SCL PORTA,3 ; Línea SCL del bus I2C.

#DEFINE SDA PORTA,2 ; Línea SDA del bus I2C.

#DEFINE Posicion 0xFF ; posicion que se lee

;

; ******** ZONA DE CÓDIGOS *****************************************

ORG 0

Inicio

clrf M24LC256_AddressHigh ; Prepara el byte alto de la pagina

movlw Posicion

movwf M24LC256_AddressLow

Inicio2

bsf STATUS,RP0

movlw b'00000000'

Page 48: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 46

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

movwf PORTB ; Configura el PORTB

; movlw 0xff ; Puerto A como entrada.

; movwf PORTA

bcf STATUS,RP0

InicializaLectura

bcf I2C_UltimoByteLeer ; Todavía no ha comenzado a leer ningún dato

call I2C_EnviaStart ; Comienza el protocolo Nº 1

movlw M24LC256_DireccionEscritura ; Incluida en M24LC256 envía direccion lectura del esclavo

call I2C_EnviaByte ; a partir de las direcciones apuntadas mas abajo

movf M24LC256_AddressHigh,W

call I2C_EnviaByte

movf M24LC256_AddressLow,W

call I2C_EnviaByte ; Ahora esperamos el reconocimiento del esclavo

EsperaEsclavo

call I2C_EnviaStart ; Nº 2

movlw M24LC256_DireccionLectura ; Nº 3

call I2C_EnviaByte

LeeByte

bsf I2C_UltimoByteLeer ; si se pone este bit a uno la rutina LeeByte no envía ACK

clrf I2C_Dato

call I2C_LeeByte ; Lo deja en I2C_Dato Nº 4

Page 49: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 47

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

movf I2C_Dato,W

movwf PORTB

call I2C_EnviaStop ; paso 5 del protocolo

call Retardo

movf I2C_Dato,1 ; moverlo en si mismo para ver si es cero

btfsc STATUS,Z ; si es cero a dormir

sleep

decf M24LC256_AddressLow,1

goto Inicio2

; ---------------- subrutinas ----------------------------------------------

Retardo

movlw 0x04

movwf NIDO3

Retar

decfsz NIDO,1

goto Retar

decfsz NIDO2,1

goto Retar

; bcf PORTB,3 ; para el in termitente

decfsz NIDO3,1

goto Retar

return

; ------------------ Retardo_4micros ------------------------------------------

Retardo_4micros

Page 50: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 48

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

return

; ------------------M24LC256_InicializaLectura --------------------------------

M24LC256_InicializaLectura

bcf I2C_Flags,0 ; Todavía no ha comenzado a leer ningún dato.

call I2C_EnviaStart ; Envía condición de Start.

movlw M24LC256_DireccionEscritura ; Envía dirección de escritura del

call I2C_EnviaByte ; esclavo.

movf M24LC256_AddressHigh,W ; A partir de la dirección apuntada por los

call I2C_EnviaByte ; registros M24LC256_AddressHigh y

movf M24LC256_AddressLow,W ; M24LC256_AddressLow.

call I2C_EnviaByte

return

; Subrutina "SDA_Bajo" -------------------------------------------------------

;

SDA_Bajo

bsf STATUS,RP0 ; Configura la línea SDA como salida.

bcf SDA

bcf STATUS,RP0

bcf SDA ; SDA en bajo.

return

;

; Subrutina "SDA_AltaImpedancia" ---------------------------------------------

;

SDA_AltaImpedancia

bsf STATUS,RP0 ; Configura la línea SDA entrada.

Page 51: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 49

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

bsf SDA ; Lo pone en alta impedancia y, gracias a la

bcf STATUS,RP0 ; Rp de esta línea, se mantiene a nivel alto.

return

;

; Subrutina "SCL_Bajo" -------------------------------------------------------

;

SCL_Bajo

bsf STATUS,RP0

bcf SCL ; Configura la línea SCL como salida.

bcf STATUS,RP0

bcf SCL ; La línea de reloj SCL en bajo.

return

;

; Subrutina "SCL_AltaImpedancia" ----------------------------------------------

;

SCL_AltaImpedancia

bsf STATUS,RP0 ; Configura la línea SCL entrada.

bsf SCL ; Lo pone en alta impedancia y, gracias a la Rp

bcf STATUS,RP0 ; de esta línea, se mantiene a nivel alto.

SCL_EsperaNivelAlto

btfss SCL ; Si algún esclavo mantiene esta línea en bajo

goto SCL_EsperaNivelAlto ; hay que esperar.

return

;

; Subrutina "I2C_EnviaStart" --------------------------------------------------

;

; Esta subrutina envía una condición de Start o inicio.

Page 52: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 50

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

;

I2C_EnviaStart

call SDA_AltaImpedancia ; Línea SDA en alto.

call SCL_AltaImpedancia ; Línea SCL en alto.

call Retardo_4micros ; Tiempo tBUF del protocolo.

call SDA_Bajo ; Flanco de bajada de SDA mientras SCL está alto.

call Retardo_4micros ; Tiempo tHD;STA del protocolo.

call SCL_Bajo ; Flanco de bajada del reloj SCL.

call Retardo_4micros

return

;

; Subrutina "I2C_EnviaStop" ----------------------------------------------------

;

; Esta subrutina envía un condición de Stop o parada.

;

I2C_EnviaStop

call SDA_Bajo

call SCL_AltaImpedancia ; Flanco de subida de SCL.

call Retardo_4micros ; Tiempo tSU;STO del protocolo.

call SDA_AltaImpedancia ; Flanco de subida de SDA.

call Retardo_4micros ; Tiempo tBUF del protocolo.

return

;

; Subrutina "I2C_EnviaByte" ----------------------------------------------------

;

; El microcontrolador maestro transmite un byte por el bus I2C, comenzando por

; el bit MSB. El byte a transmitir debe estar cargado previamente en el registro

; de trabajo W. De la subrutina ejecutada anteriormente I2C_EnviaStart o esta

Page 53: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 51

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

; misma I2C_EnviaByte,la línea SCL se debe encontrar a nivel bajo al menos durante

; 5 µs.

;

I2C_EnviaByte

movwf I2C_Dato ; Almacena el byte a transmitir.

movlw 0x08 ; A transmitir 8 bits.

movwf I2C_ContadorBits

I2C_EnviaBit

rlf I2C_Dato,F ; Chequea el bit, llevándolo previamente al Carry.

btfsc STATUS,C

goto I2C_EnviaUno

I2C_EnviaCero

call SDA_Bajo ; Si es "0" envía un nivel bajo.

goto I2C_FlancoSCL

I2C_EnviaUno

call SDA_AltaImpedancia ; Si es "1" lo activará a alto.

I2C_FlancoSCL

call SCL_AltaImpedancia ; Flanco de subida del SCL.

call Retardo_4micros ; Tiempo tHIGH del protocolo.

call SCL_Bajo ; Termina el semiperiodo positivo del reloj.

call Retardo_4micros ; Tiempo tHD;DAT del protocolo.

decfsz I2C_ContadorBits,F ; Lazo para los ocho bits.

goto I2C_EnviaBit

;

call SDA_AltaImpedancia ; Libera la línea de datos.

call SCL_AltaImpedancia ; Pulso en alto de reloj para que el esclavo

call Retardo_4micros ; pueda enviar el bit ACK.

call SCL_Bajo

Page 54: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 52

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

call Retardo_4micros

return

;

; Subrutina "I2C_LeeByte" -------------------------------------------------------

;

; El microcontrolador maestro lee un byte desde el esclavo conectado al bus I2C.

; El dato recibido se carga en el registro I2C_Dato y lo envía a la subrutina

; superior a través del registro W. Se empieza a leer por el bit de mayor peso MSB.

; De alguna de las subrutinas ejecutadas anteriormente I2C_EnviaStart, I2C_EnviaByte

; o esta misma I2C_LeeByte, la línea SCL lleva en bajo al menos 5 µs.

I2C_LeeByte

movlw 0x08 ; A recibir 8 bits.

movwf I2C_ContadorBits

call SDA_AltaImpedancia ; Deja libre la línea de datos.

I2C_LeeBit

call SCL_AltaImpedancia ; Flanco de subida del reloj.

bcf STATUS,C ; En principio supone que es "0".

btfsc SDA ; Lee el bit

bsf STATUS,C ; Si es "1" carga 1 en el Carry.

rlf I2C_Dato,F ; Lo introduce en el registro.

call SCL_Bajo ; Termina el semiperiodo positivo del reloj.

call Retardo_4micros ; Tiempo tHD;DAT del protocolo.

decfsz I2C_ContadorBits,F ; Lazo para los 8 bits.

goto I2C_LeeBit

;

; Chequea si este es el último byte a leer para enviar o no el bit de reconocimiento

; ACK en consecuencia.

Page 55: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 53

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

;

btfss I2C_UltimoByteLeer ; Si es el último, no debe enviar

; el bit de reconocimiento ACK.

call SDA_Bajo ; Envía el bit de reconocimiento ACK

; porque todavía no es el último byte a leer.

call SCL_AltaImpedancia ; Pulso en alto del SCL para transmitir el

call Retardo_4micros ; bit ACK de reconocimiento. Este es tHIGH.

call SCL_Bajo ; Pulso de bajada del SCL.

call Retardo_4micros

movf I2C_Dato,W ; El resultado se manda en el registro de

return ; de trabajo W.

END

Page 56: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 54

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

2.2.5. Rutina siguepun

;siguepun.asm el vehiculo dispone de dos celulas en el morro si la luz le da de lleno avanza, si se desvía, corrige para meterse en el haz.

list p=16f84

ESTADO equ 0x03

PORTA equ 0x05

PORTB equ 0x06

#define Ver_der PORTA,0

#define Ver_izq PORTA,1

#define Saca_der PORTB,1

#define Saca_izq PORTB,4

; ---------------------------- configurar ---------------------------

bsf ESTADO,5

movlw b'11111111'

movwf PORTA

movlw b'00000000'

movwf PORTB

bcf ESTADO,5

; ----------------------------- principal ---------------------------

clrf PORTB

bsf PORTB,2 ; para activar el rele

Inicio

btfss Ver_der

goto Derecha

btfss Ver_izq

goto Izquierda

clrf PORTB

Page 57: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 55

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

bsf PORTB,2 ; para activar el rele

goto Inicio

Derecha

bsf Saca_der

btfsc Ver_izq

goto Izquierda

bcf Saca_izq

goto Inicio

Izquierda

bsf Saca_izq

btfsc Ver_der

goto Derecha

bcf Saca_der

goto Inicio

end

Page 58: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 56

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

3. Anexo. Fotos y material publicado.

3.1. Fotos de interés (Orden no cronológico).

1 Emisor con módulo AUREL 433 MHz

2 Receptor con módulo AUREL 433 MHz

3 Detalle de la recepción con los decodificadores de puerta de garaje.

Page 59: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 57

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

4 Detalle de los servos trucados con ruedas pequeñas y primera rueda loca.

5 Detalle del receptor con el decoder UM3750

6 Migrando al emisor-receptor Futaba

Page 60: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 58

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

7 Probando los PWM con el 556

8 Detalle del Explorer con las LDR.

9 El Explorer todavía en placa de montaje.

Page 61: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 59

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

10 Montando la placa CI hibrida principal

11 Detalle de los PWM y la memoria 256.

12 El Explorer con ruedas delgadas y barras de LDR

Page 62: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 60

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

13 Primeras versiones del Explorer

14 Probando el motor paso a paso para la baliza.

15 Prueba de seguimiento de la luz láser, el punto rojo en la antena procede del puntero-baliza

Page 63: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 61

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

16 Baliza con el puntero láser montado sobre un motor paso a paso y emitiendo luz.

17 Probando la lectura aleatoria.

18 Emisor de 6 canales usado para el guiado por radio (modo no automático).

Page 64: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 62

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

19 Receptor usando la USART del 16F877 en las primeras fases del proyecto.

20 Otra placa para la recepción con la USART

21 Encoder ensayado con dos CNY 70

Page 65: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 63

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

22 Interfase en visual Basic-6

23 Compilando con el WinPic 800

Page 66: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 64

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

3.2. Material publicado.-

Se escribe a continuación los enlaces donde poder ver tres experimentos realizados. Las direcciones son de Google de la sección que dispone de video.

http://video.google.es/videoplay?docid=-1843072428276081682&hl= es

http://video.google.es/videoplay?docid=7870392132600163403&q=

http://video.google.es/videoplay?docid=-6399958617848381403&q=explorador&ei= FORWSMqtLKWQigKr58T_Dg&hl=es

3.3 Correo electrónico del autor.

Correo del autor: [email protected]

Page 67: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 65

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

4. Planos

Page 68: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 66

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

Page 69: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 67

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

Page 70: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Proyecto Vehículo Explorador Página 68

Proyecta: Bernardo Fernández Carrión Escuela Superior de Ingenieros

5. Especificaciones y características técnicas.

Page 71: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

© 1998 Microchip Technology Inc. DS30430C-page 1

Devices Included in this Data Sheet:

• PIC16F83• PIC16F84• PIC16CR83• PIC16CR84• Extended voltage range devices available

(PIC16LF8X, PIC16LCR8X)

High Performance RISC CPU Features:

• Only 35 single word instructions to learn• All instructions single cycle except for program

branches which are two-cycle• Operating speed: DC - 10 MHz clock input

DC - 400 ns instruction cycle

• 14-bit wide instructions• 8-bit wide data path

• 15 special function hardware registers• Eight-level deep hardware stack• Direct, indirect and relative addressing modes

• Four interrupt sources: - External RB0/INT pin- TMR0 timer overflow - PORTB<7:4> interrupt on change- Data EEPROM write complete

• 1000 erase/write cycles Flash program memory

• 10,000,000 erase/write cycles EEPROM data mem-ory

• EEPROM Data Retention > 40 years

Peripheral Features:

• 13 I/O pins with individual direction control• High current sink/source for direct LED drive

- 25 mA sink max. per pin- 20 mA source max. per pin

• TMR0: 8-bit timer/counter with 8-bit programmable prescaler

Pin Diagrams

Special Microcontroller Features:

• In-Circuit Serial Programming (ICSP™) - via two pins (ROM devices support only Data EEPROM programming)

• Power-on Reset (POR)• Power-up Timer (PWRT)

• Oscillator Start-up Timer (OST)• Watchdog Timer (WDT) with its own on-chip RC

oscillator for reliable operation• Code-protection• Power saving SLEEP mode

• Selectable oscillator options

CMOS Flash/EEPROM Technology:

• Low-power, high-speed technology• Fully static design

• Wide operating voltage range:- Commercial: 2.0V to 6.0V- Industrial: 2.0V to 6.0V

• Low power consumption:- < 2 mA typical @ 5V, 4 MHz- 15 μA typical @ 2V, 32 kHz- < 1 μA typical standby current @ 2V

DeviceProgram Memory (words)

DataRAM (bytes)

DataEEPROM (bytes)

Max. Freq (MHz)

PIC16F83 512 Flash 36 64 10

PIC16F84 1 K Flash 68 64 10

PIC16CR83 512 ROM 36 64 10

PIC16CR84 1 K ROM 68 64 10

RA1

RA0

OSC1/CLKIN

OSC2/CLKOUT

VDD

RB7

RB6

RB5

RB4

RA2

RA3

RA4/T0CKI

MCLR

VSS

RB0/INT

RB1

RB2

RB3

•1

2

3

4

5

6

7

8

9

18

17

16

15

14

13

12

11

10

PDIP, SOIC

PIC

16F8X

PIC

16CR

8X

PIC16F8X18-pin Flash/EEPROM 8-Bit Microcontrollers

Page 72: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

PIC16F8X

DS30430C-page 8 © 1998 Microchip Technology Inc.

PIC16CXX devices contain an 8-bit ALU and workingregister. The ALU is a general purpose arithmetic unit.It performs arithmetic and Boolean functions betweendata in the working register and any register file.

The ALU is 8-bits wide and capable of addition,subtraction, shift and logical operations. Unlessotherwise mentioned, arithmetic operations are two’scomplement in nature. In two-operand instructions,typically one operand is the working register(W register), and the other operand is a file register oran immediate constant. In single operand instructions,the operand is either the W register or a file register.

The W register is an 8-bit working register used for ALUoperations. It is not an addressable register.

Depending on the instruction executed, the ALU mayaffect the values of the Carry (C), Digit Carry (DC), andZero (Z) bits in the STATUS register. The C and DC bitsoperate as a borrow and digit borrow out bit,respectively, in subtraction. See the SUBLW and SUBWFinstructions for examples.

A simplified block diagram for the PIC16F8X is shownin Figure 3-1, its corresponding pin description isshown in Table 3-1.

FIGURE 3-1: PIC16F8X BLOCK DIAGRAM

Flash/ROMProgramMemory

Program Counter13

ProgramBus

Instruction reg

8 Level Stack(13-bit)

Direct Addr

8

InstructionDecode &

Control

TimingGeneration

OSC2/CLKOUTOSC1/CLKIN

Power-upTimer

OscillatorStart-up Timer

Power-onReset

WatchdogTimer

MCLR VDD, VSS

W reg

ALU

MUXI/O Ports

TMR0

STATUS reg

FSR reg

IndirectAddr

RA3:RA0

RB7:RB1

RA4/T0CKI

EEADR

EEPROMData Memory

64 x 8EEDATA

Addr Mux

RAM Addr

RAMFile Registers

EEPROM Data Memory

Data Bus

5

7

7

PIC16F84/CR841K x 14

PIC16F83/CR83512 x 14

PIC16F83/CR8336 x 8

PIC16F84/CR8468 x 8

RB0/INT

14

8

8

Page 73: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

PIC16F8X

DS30430C-page 56 © 1998 Microchip Technology Inc.

TABLE 9-2 PIC16FXX INSTRUCTION SET

Mnemonic,Operands

Description Cycles 14-Bit Opcode StatusAffected

Notes

MSb LSb

BYTE-ORIENTED FILE REGISTER OPERATIONS

ADDWFANDWFCLRFCLRWCOMFDECF

DECFSZINCF

INCFSZIORWFMOVF

MOVWFNOPRLFRRF

SUBWFSWAPFXORWF

f, df, df-f, df, df, df, df, df, df, df-f, df, df, df, df, d

Add W and fAND W with f

Clear fClear W

Complement fDecrement f

Decrement f, Skip if 0Increment f

Increment f, Skip if 0Inclusive OR W with f

Move fMove W to f

No OperationRotate Left f through Carry

Rotate Right f through CarrySubtract W from fSwap nibbles in f

Exclusive OR W with f

111111

1(2)1

1(2)111111111

000000000000000000000000000000000000

011101010001000110010011101110101111010010000000000011011100001011100110

dfffdffflfff0xxxdfffdfffdfffdfffdfffdfffdffflfff0xx0dfffdfffdfffdfffdfff

ffffffffffffxxxxffffffffffffffffffffffffffffffff0000ffffffffffffffffffff

C,DC,ZZZZZZ

Z

ZZ

CC

C,DC,Z

Z

1,21,22

1,21,2

1,2,31,2

1,2,31,21,2

1,21,21,21,21,2

BIT-ORIENTED FILE REGISTER OPERATIONS

BCFBSF

BTFSCBTFSS

f, bf, bf, bf, b

Bit Clear fBit Set f

Bit Test f, Skip if ClearBit Test f, Skip if Set

11

1 (2)1 (2)

01010101

00bb01bb10bb11bb

bfffbfffbfffbfff

ffffffffffffffff

1,21,233

LITERAL AND CONTROL OPERATIONS

ADDLWANDLWCALL

CLRWDTGOTOIORLWMOVLWRETFIERETLW

RETURNSLEEPSUBLWXORLW

kkk-kkk-k--kk

Add literal and WAND literal with W

Call subroutineClear Watchdog Timer

Go to addressInclusive OR literal with W

Move literal to WReturn from interrupt

Return with literal in W Return from SubroutineGo into standby modeSubtract W from literal

Exclusive OR literal with W

1121211222111

11111000101111001100001111

111x10010kkk00001kkk100000xx000001xx00000000110x1010

kkkkkkkkkkkk0110kkkkkkkkkkkk0000kkkk00000110kkkkkkkk

kkkkkkkkkkkk0100kkkkkkkkkkkk1001kkkk10000011kkkkkkkk

C,DC,ZZ

TO,PD

Z

TO,PDC,DC,Z

Z

Note 1: When an I/O register is modified as a function of itself ( e.g., MOVF PORTB, 1), the value used will be that value present on the pins themselves. For example, if the data latch is ’1’ for a pin configured as input and is driven low by an external device, the data will be written back with a ’0’.

2: If this instruction is executed on the TMR0 register (and, where applicable, d = 1), the prescaler will be cleared if assigned to the Timer0 Module.

3: If Program Counter (PC) is modified or a conditional test is true, the instruction requires two cycles. The second cycle is executed as a NOP.

Page 74: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

TL�H�6975

LM

567�LM

567C

Tone

Decoder

February 1995

LM567�LM567C Tone Decoder

General DescriptionThe LM567 and LM567C are general purpose tone decod-

ers designed to provide a saturated transistor switch to

ground when an input signal is present within the passband�

The circuit consists of an I and Q detector driven by a volt-

age controlled oscillator which determines the center fre-

quency of the decoder� External components are used to

independently set center frequency� bandwidth and output

delay�

FeaturesY 20 to 1 frequency range with an external resistorY Logic compatible output with 100 mA current sinking

capability

Y Bandwidth adjustable from 0 to 14%Y High rejection of out of band signals and noiseY Immunity to false signalsY Highly stable center frequencyY Center frequency adjustable from 0�01 Hz to 500 kHz

ApplicationsY Touch tone decodingY Precision oscillatorY Frequency monitoring and controlY Wide band FSK demodulationY Ultrasonic controlsY Carrier current remote controlsY Communications paging decoders

Connection Diagrams

Metal Can Package

TL�H�6975–1

Top View

Order Number LM567H or LM567CH

See NS Package Number H08C

Dual-In-Line and Small Outline Packages

TL�H�6975–2

Top View

Order Number LM567CM

See NS Package Number M08A

Order Number LM567CN

See NS Package Number N08E

C1995 National Semiconductor Corporation RRD-B30M115�Printed in U� S� A�

Page 75: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

TL�H�6975

LM

567�LM

567C

Tone

Decoder

February 1995

LM567�LM567C Tone Decoder

General DescriptionThe LM567 and LM567C are general purpose tone decod-

ers designed to provide a saturated transistor switch to

ground when an input signal is present within the passband�

The circuit consists of an I and Q detector driven by a volt-

age controlled oscillator which determines the center fre-

quency of the decoder� External components are used to

independently set center frequency� bandwidth and output

delay�

FeaturesY 20 to 1 frequency range with an external resistorY Logic compatible output with 100 mA current sinking

capability

Y Bandwidth adjustable from 0 to 14%Y High rejection of out of band signals and noiseY Immunity to false signalsY Highly stable center frequencyY Center frequency adjustable from 0�01 Hz to 500 kHz

ApplicationsY Touch tone decodingY Precision oscillatorY Frequency monitoring and controlY Wide band FSK demodulationY Ultrasonic controlsY Carrier current remote controlsY Communications paging decoders

Connection Diagrams

Metal Can Package

TL�H�6975–1

Top View

Order Number LM567H or LM567CH

See NS Package Number H08C

Dual-In-Line and Small Outline Packages

TL�H�6975–2

Top View

Order Number LM567CM

See NS Package Number M08A

Order Number LM567CN

See NS Package Number N08E

C1995 National Semiconductor Corporation RRD-B30M115�Printed in U� S� A�

Page 76: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Absolute Maximum RatingsIf Military�Aerospace specified devices are required�

please contact the National Semiconductor Sales

Office�Distributors for availability and specifications�

Supply Voltage Pin 9V

Power Dissipation (Note 1) 1100 mW

V8 15V

V3 b10V

V3 V4 a 0�5V

Storage Temperature Range b65�C to a150�COperating Temperature Range

LM567H b55�C to a125�CLM567CH� LM567CM� LM567CN 0�C to a70�C

Soldering Information

Dual-In-Line Package

Soldering (10 sec�) 260�CSmall Outline Package

Vapor Phase (60 sec�) 215�CInfrared (15 sec�) 220�C

See AN-450 ‘‘Surface Mounting Methods and Their Effect

on Product Reliability’’ for other methods of soldering sur-

face mount devices�

Electrical Characteristics AC Test Circuit� TA e 25�C� Va e 5V

Parameters ConditionsLM567 LM567C�LM567CM

UnitsMin Typ Max Min Typ Max

Power Supply Voltage Range 4�75 5�0 9�0 4�75 5�0 9�0 V

Power Supply Current RL e 20k6 8 7 10 mA

Quiescent

Power Supply Current RL e 20k11 13 12 15 mA

Activated

Input Resistance 18 20 15 20 kX

Smallest Detectable Input Voltage IL e 100 mA� fi e fo 20 25 20 25 mVrms

Largest No Output Input Voltage IC e 100 mA� fi e fo 10 15 10 15 mVrms

Largest Simultaneous Outband Signal to6 6 dB

Inband Signal Ratio

Minimum Input Signal to Wideband Bn e 140 kHz b6 b6 dBNoise Ratio

Largest Detection Bandwidth 12 14 16 10 14 18 % of fo

Largest Detection Bandwidth Skew 1 2 2 3 % of fo

Largest Detection Bandwidth Variation withg0�1 g0�1 %��C

Temperature

Largest Detection Bandwidth Variation with 4�75 b 6�75Vg1 g2 g1 g5 %V

Supply Voltage

Highest Center Frequency 100 500 100 500 kHz

Center Frequency Stability (4�75–5�75V) 0 k TA k 70 35 g 60 35 g60 ppm��Cb55 k TA k a125 35 g 140 35 g 140 ppm��C

Center Frequency Shift with Supply Voltage 4�75V b 6�75V 0�5 1�0 0�4 2�0 %�V

4�75V b 9V 2�0 2�0 %�V

Fastest ON-OFF Cycling Rate fo�20 fo�20

Output Leakage Current V8 e 15V 0�01 25 0�01 25 mA

Output Saturation Voltage ei e 25 mV� I8 e 30 mA 0�2 0�4 0�2 0�4V

ei e 25 mV� I8 e 100 mA 0�6 1�0 0�6 1�0

Output Fall Time 30 30 ns

Output Rise Time 150 150 ns

Note 1� The maximum junction temperature of the LM567 and LM567C is 150�C� For operating at elevated temperatures� devices in the TO-5 package must be

derated based on a thermal resistance of 150�C�W� junction to ambient or 45�C�W� junction to case� For the DIP the device must be derated based on a thermal

resistance of 110�C�W� junction to ambient� For the Small Outline package� the device must be derated based on a thermal resistance of 160�C�W� junction to

ambient�

Note 2� Refer to RETS567X drawing for specifications of military LM567H version�

2

Page 77: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Schematic Diagram

TL�H�6975–3

3

Page 78: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Typical Performance Characteristics

Typical Frequency Drift Typical Bandwidth Variation Typical Frequency Drift

Typical Frequency Drift Amplitude

Bandwidth vs Input Signal

Largest Detection Bandwidth

Function of C2 and C3

Detection Bandwidth as a

Supply Voltage

Typical Supply Current vs

Before Output

Greatest Number of Cycles

Temperature

Typical Output Voltage vs

TL�H�6975–4

4

Page 79: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Typical Applications

Touch-Tone Decoder

Component values (typ)

R1 6�8 to 15k

R2 4�7k

R3 20k

C1 0�10 mfd

C2 1�0 mfd 6V

C3 2�2 mfd 6V

C4 250 mfd 6V

TL�H�6975–5

5

Page 80: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Typical Applications (Continued)

Oscillator with Quadrature Output

TL�H�6975–6Connect Pin 3 to 2�8V to Invert Output

Oscillator with Double Frequency Output

TL�H�6975–7

Precision Oscillator Drive 100 mA Loads

TL�H�6975–8

AC Test Circuit

TL�H�6975–9

fi e 100 kHz a 5V

�Note� Adjust for fo e 100 kHz�

Applications InformationThe center frequency of the tone decoder is equal to the

free running frequency of the VCO� This is given by

fo j 1

1�1 R1C1

The bandwidth of the filter may be found from the approxi-

mation

BW e 10700Vi

foC2in % of fo

Where�

Vi e Input voltage (volts rms)� Vi s 200 mV

C2 e Capacitance at Pin 2 (mF)

6

Page 81: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Physical Dimensions inches (millimeters)

Metal Can Package (H)

Order Number LM567H or LM567CH

NS Package Number H08C

Small Outline Package (M)

Order Number LM567CM

NS Package Number M08A

7

Page 82: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

LM

567�LM

567C

Tone

Decoder

Physical Dimensions inches (millimeters) (Continued)

Molded Dual-In-Line Package (N)

Order Number LM567CN

NS Package Number N08E

LIFE SUPPORT POLICY

NATIONAL’S PRODUCTS ARE NOT AUTHORIZED FOR USE AS CRITICAL COMPONENTS IN LIFE SUPPORT

DEVICES OR SYSTEMS WITHOUT THE EXPRESS WRITTEN APPROVAL OF THE PRESIDENT OF NATIONAL

SEMICONDUCTOR CORPORATION� As used herein�

1� Life support devices or systems are devices or 2� A critical component is any component of a life

systems which� (a) are intended for surgical implant support device or system whose failure to perform can

into the body� or (b) support or sustain life� and whose be reasonably expected to cause the failure of the life

failure to perform� when properly used in accordance support device or system� or to affect its safety or

with instructions for use provided in the labeling� can effectiveness�

be reasonably expected to result in a significant injury

to the user�

National Semiconductor National Semiconductor National Semiconductor National SemiconductorCorporation Europe Hong Kong Ltd� Japan Ltd�1111 West Bardin Road Fax� (a49) 0-180-530 85 86 13th Floor� Straight Block� Tel� 81-043-299-2309Arlington� TX 76017 Email� cnjwge� tevm2�nsc�com Ocean Centre� 5 Canton Rd� Fax� 81-043-299-2408Tel� 1(800) 272-9959 Deutsch Tel� (a49) 0-180-530 85 85 Tsimshatsui� KowloonFax� 1(800) 737-7018 English Tel� (a49) 0-180-532 78 32 Hong Kong

Fran�ais Tel� (a49) 0-180-532 93 58 Tel� (852) 2737-1600Italiano Tel� (a49) 0-180-534 16 80 Fax� (852) 2736-9960

National does not assume any responsibility for use of any circuitry described� no circuit patent licenses are implied and National reserves the right at any time without notice to change said circuitry and specifications�

Page 83: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

This datasheet has been download from:

www.datasheetcatalog.com

Datasheets for electronics components.

Page 84: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Tone decoderlphase-locked loop

DESIGN FORMULAS

1 fo - - l.lRl C,

PHASE-LOCKED LOOP TERMINOLOGY CENTER FREQUENCY (fo) The free-ninning frequency d the current contrdled oscillator (CCO) in the absence of an input cignai.

Detection bandwidth (BW) The frequency range, centered about fo, withim w h i i an input signal above the threshdd vdtage (iypicaliy 20 mV-) wiB cause a logical zem siate on the output The detedh bandmdth correcpondc to fhe loop -re range.

Lock range The iargest frequency range within w h i i an input signai above ihe threchdd voHage will hdd a kgical zero state on the out@

Detecüon band skew A measure of how weil the detection band is centered about the center frequency, fo. The skew is defaied as:

3. The value of C3 is generally norraitical. C3 seis the band edge of a kw-pas filter w h i i attenuates frequendes outside ihe detection band to eliminate spurious ouipuis. lf C3 Ls too small, frequenciesjustoutsidethe~bandwillsmtchthewtput stage on and off at the beat frequency, or the ouiput may pulse onandoífduringthetum-onhndent IfC3istooiarge,tum-on and t u M of the ouípui stage wH1 be delayed unüi the vdtage on Gj pases the ihreshdd vdtage. (Such delay may be

deshable iu avoid spurious ouiputs due to transient frequencies.) A typical minimum value for C3 ís 2C2.

Figure 16. TLpfml connedlon

4. Optional resistor R2 seis ihe threshdd for the largest %o ouiptf input voltage. A vdue of 130 W is used to assure the tested fimit

of 10 mVm min. This resistor can be referenced to ground for inaeased sensiovity. The explanaüon can be fwnd in ihe ~ ~ m ~ s e C t i O n w h i c h f o l k w s .

where f w and ~MIN are the f r e q u m corresponding to the edges TYPICAL RESPONSE of ihe deteciion band. The skew can be reduced to zero if necessary by means of an optional centering adjustmertt.

OPERATING INSTRUCi'iONS Fgure 16 shows a typical conneüion d i r a m for the 567. Fw most appücaüons, the fdkwing threestep procedure will be suffiaent for choosing the extemal annponenis Rl. Cl. C2 and Cs.

1. Seled R1 and C l for the desired center frequency. For best tempemture stabirí, R l shouki be between 2 kR and 20 and the awnbined bmperature coefficient of the R l C l produci shoukl have CURaent stability over the projectad tamperaíure range to me& the necessary requiremenis.

Seled the lowpass capad&, C2, by refening iu F ~ u r e 4, 'Bandmdth vs. input signal ampliie'. If the input ampliiude variation is known, the a- vdue á fo . C;! necessary to givethedesiredbandwKlthmaybefound.Conversely,anarea of operaticm may be sekcted on thk graph and the input leve1 and C2 may be adjusted accordi. For example, constant bandwidih operstion requires that input arnplihide be above 2OOmVm. The bandwidth. as noted on the graph. is then mtrdled sdely by the fo - C2 produd (fo (Hz), C2W)).

OuTWT

NOTE: k = l W a -m Response to 1 OOmVRyS Tone Bu&

NOTES: m=- R ~ = l o O n . N o s a ~ = l ~

Response to Same Input Tone Burst Wiih Wideband Noise s~oa563

Figure 17. TLpical response

Page 85: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

Philips Serniconductorc Product data

Tone decodedphase-locked loop

AVAILABLE OUTPUTS (Figure 18) The pnrnary output is the uncornrnitted output transistor collector, Pin 8. When an in-band input signal is present, this transistor saturates; its collector voitage b e i i les than 1 .O volt (typically 0.6V) at full output wrrent (100mA). The vdtage at Pin 2 is the phase detector output w h i k a linear function of frequency over the range of 0.95 to 1 .O5 fo wiü~ a slope of about 20rnV per percent of frequency deviation. The average vdtage at Pin 1 k, dunng I d , a funcüon of the in-band input arnplítude in accordance with the íransfer charaderistic g~en. Pin 5 k the controlled oscillator square wave output of rnagnitude (+V -2VBEH+V-1 .4V) having a DC average of +VE. A 1 W load may be dnven from pin 5. Pin 6 is an exponential Mangle of 1Vp+ with an average DC level of +VE. Only high irnpedance loads rnay be con& to pin 6 without afíecüng the CCO duty cyde or ternperature stabilii.

I I I g8y V+

I ---y-- 0 I VCE (SAT) c 4.W

LOW PASS 3.w

I I O.%o fo i.lfo

3.0

2 5 O 100 2MknVrms IKBAND INPUT VOLTAGE

SLDa555

OPERATING PRECAUTIONS A bfief review of the following precautions will help the user achieve the high level of perfomlance of which the 567 is wpable.

1. Operation in the high input ievel rnode (above 200 rnV) will free the user from bandwidth vañations due to changes in the in-band

signal arnplide. The input stage is now lirniting. however, so that out-band signals or high noise ievels can cause an apparent bandwidih reduction as the inband signal is suppressed. Also. the lirniting acüon create in-band components from sub-harrnonic signals, so the 567 becomes sensitive to signals at fd3, fd5, etc.

2. The 567 wiH lock onto signals near (2n+l) fo, and will give an output for signals near (4n+l) fo where n = 0. 1, 2, etc. Thus, signals at 5fo and 9fo can cause an unwanted output If such signals are anticipated. they shaild be atienuated before reaching the 567 input

3. Ma>arnurn irnrnunity from noise and out-band signals is afforded in the low input kvel (below 200 mVW) and reduced bandwidth

operating rnode. However, decreased loop darnping causes the worst-case lo&-up time to increase. as shown by the Greatest Nurnber of Cydes Before Output vs Bandwidth graph.

4. Dueto the high switching speeds (20 ns) associated with 567 operation, care should be taken in lead rwting. Lead lengihs should be kept to a rninirnurn. The power supply shouki be adequately brpassed dose to the 567 with a 0.OIpF or greater capacitar; grainding paths should be carefully chosen to avoid ground loops and unwanted voitage variations. Another factor which rnust be m ide red is the effect of load energization on the power supply. For exampte, an incandescent lamp typically draws 10 times rated wrrent at turn-on. This can cause supply voliage fluctuaüons which could, for exarnple, shift the deteciion band of namw-band systems suíñcientfy to cause rnomentary loss of lock. The result is a low-frequency oscillation mto and out of lock. Such eíkds can be prevented by supplying heavy load wrrents frorn a separate supply or increasing the supply f i k r capaator.

Figure 18. Available outputs

Page 86: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

©2002 Fairchild Semiconductor Corporation

www.fairchildsemi.com

Rev. 1.0.2

Features• Internally Frequency Compensated for Unity Gain• Large DC Voltage Gain: 100dB• Wide Power Supply Range:

LM258/LM258A, LM358/LM358A: 3V~32V (or ±1.5V ~ 16V)LM2904 : 3V~26V (or ±1.5V ~ 13V)

• Input Common Mode Voltage Range Includes Ground• Large Output Voltage Swing: 0V DC to Vcc -1.5V DC• Power Drain Suitable for Battery Operation.

DescriptionThe LM2904,LM358/LM358A, LM258/LM258A consist oftwo independent, high gain, internally frequency compensated operational amplifiers which were designedspecifically to operate from a single power supply over awide range of voltage. Operation from split power suppliesis also possible and the low power supply current drain isindependent of the magnitude of the power supply voltage.Application areas include transducer amplifier, DC gainblocks and all the conventional OP-AMP circuits which nowcan be easily implemented in single power supply systems.

8-DIP

8-SOP

1

1

Internal Block Diagram

-+

+

-

1

2

3

4 5

6

7

8 VCC

OUT2

IN2 (-)

IN2 (+)

OUT1

IN1 (-)

IN1 (+)

GND

LM2904,LM358/LM358A,LM258/LM258ADual Operational Amplifier

Page 87: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

LM2904,LM358/LM358A,LM258/LM258A

3

Electrical Characteristics(Vcc = 5.0V, VEE = GND, TA = 25°C, unless otherwise specified)

Note:1. This parameter, although guaranteed, is not 100% tested in production.

Parameter Symbol ConditionsLM258 LM358 LM2904

UnitMin. Typ. Max. Min. Typ. Max. Min. Typ. Max.

Input Offset Voltage VIO

VCM = 0V to VCC-1.5VVO(P) = 1.4V, RS = 0Ω

- 2.9 5.0 - 2.9 7.0 - 2.9 7.0 mV

Input Offset Current IIO - - 3 30 - 5 50 - 5 50 nA

Input Bias Current IBIAS - - 45 150 - 45 250 - 45 250 nA

Input Voltage Range VI(R)

VCC = 30V(LM2904, VCC=26V) 0 - Vcc

-1.5 0 -Vcc-1.5 0 -

Vcc-1.5 V

Supply Current ICC

RL = ∞, VCC = 30V(LM2904, VCC=26V) - 0.8 2.0 - 0.8 2.0 - 0.8 2.0 mA

RL = ∞, VCC = 5V - 0.5 1.2 - 0.5 1.2 - 0.5 1.2 mA

Large SignalVoltage Gain GV

VCC = 15V, RL= 2kΩVO(P) = 1V to 11V

50 100 - 25 100 - 25 100 - V/mV

Output Voltage Swing

VO(H) VCC=30V(VCC=26V for LM2904)

RL = 2kΩ 26 - - 26 - - 22 - - VRL=10kΩ 27 28 - 27 28 - 23 24 - V

VO(L) VCC = 5V, RL= 10kΩ - 5 20 - 5 20 - 5 20 mVCommon-ModeRejection Ratio CMRR - 70 85 - 65 80 - 50 80 - dB

Power SupplyRejection Ratio PSRR - 65 100 - 65 100 - 50 100 - dB

ChannelSeparation CS f = 1kHz to 20kHz

(Note1) - 120 - - 120 - - 120 - dB

Short Circuit to GND ISC - - 40 60 - 40 60 - 40 60 mA

Output Current

ISOURCE

VI(+) = 1V, VI(-) = 0VVCC = 15V, VO(P) = 2V

20 30 - 20 30 - 20 30 - mA

ISINK

VI(+) = 0V, VI(-) = 1V, VCC = 15V, VO(P) = 2V

10 15 - 10 15 - 10 15 - mA

VI(+) = 0V,VI(-) =1V , VCC = 15V, VO(P) = 200mV

12 100 - 12 100 - - - - μA

Differential Input Voltage VI(DIFF) - - - VCC - - VCC - - VCC V

Page 88: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

©2001 Fairchild Semiconductor Corporation

www.fairchildsemi.com

Rev. 1.0.0

Features• Replaces Two LM555/NE556 Timers• Operates in Both Astable And Monostable Modes• High Output Current• TTL Compatible• Timing From Microsecond To Hours• Adjustable Duty Cycle• Temperature Stability Of 0.005% Per °C

Applications• Precision Timing• Pulse Shaping• Pulse Width Modulation• Frequency Division• Traffic Light Control• Sequential Timing• Pulse Generator• Time Delay Generator• Touch Tone Encoder• Tone Burst Generator

DescriptionThe LM556/NE556 series dual monolithic timing circuitsare a highly stable controller capable of producing accuratetime delays or oscillation. The LM556/NE556 is a dualLM555. Timing is provided an external resistor and capaci-tor for each timing function. The two timers operate inde-pendently of each other, sharing only VCC and ground. Thecircuits may be triggered and reset on falling waveforms.The output structures may sink or source 200mA.

14-DIP

1

14-SOP

1

Internal Block Diagram

LM556/NE556Dual Timer

Page 89: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

LM556/NE556

3

Electrical Characteristics(TA = 25°C, VCC = 5 ~ 15V, unless otherwise specified)

Notes:*1. Supply current when output is high is typically 1.0mA less at VCC = 5V*2. Tested at VCC = 5V and VCC = 15V*3. This will determine the maximum value of RA + RB for 15V operation.

The maximum total R = 20MΩ, and for 5V operation the maximum total R = 6.6MΩ.*4. Matching characteristics refer to the difference between performance characteristics of each timer section in the monostable

mode.*5. As reset voltage lowers, timing is inhibited and then the output goes low.

Parameter Symbol Conditions Min. Typ. Max. Units Supply Voltage VCC - 4.5 - 16 V Supply Current *1(two timers) (low state) ICC

VCC = 5V, RL = ∞ VCC = 15V, RL = ∞ - 5

161230

mAmA

Timing Error *2(monostable) Initial Accuracy Drift with Temperature Drift with Supply Voltage

ACCURΔt/ΔT

Δt/ΔVCC

RA = 2KΩ to 100KΩ C = 0.1μF T = 1.1RC

- 0.75500.1

- %ppm/°C

%/VControl Voltage VC VCC = 15V 9.0 10.0 11.0 V

VCC = 5V 2.6 3.33 4.0 VThreshold Voltage VTH VCC = 15V 8.8 10.0 11.2 V

VCC = 5V 2.4 3.33 4.2 V Threshold Current*3 ITH - - 30 250 nATrigger Voltage VTR VCC = 15V 4.5 5.0 5.6 V

VCC = 5V 1.1 1.6 2.2 V Trigger Current ITR VTR = 0V - 0.01 2.0 μA Reset Voltage*5 VRST - 0.4 0.6 1.0 V Reset Current IRST - - 0.03 0.6 mA

Low Output Voltage VOL

VCC = 15V ISINK = 10mA ISINK = 50mA ISINK = 100mA ISINK = 200mA VCC = 5V ISINK = 8mA ISINK = 5mA

-

0.10.42.02.5

0.250.15

0.250.753.2

0.350.25

V

V

High Output Voltage VOH

VCC = 15V ISOURCE = 200mA ISOURCE = 100mA 12.75

12.513.3

- V

VCC = 5V ISOURCE = 100mA 2.75 3.3 - V

Rise Time of Output tR - - 100 300 ns Fall Time of Output tF - - 100 300 ns Discharge Leakage Current ILKG - - 10 100 nA Matching Characteristics*4 Initial Accuracy Drift with Temperature Drfit with Supply Voltage

ACCURΔt/ΔT

Δt/ΔVCC

- - 1.0100.2

2.0

0.5

%ppm/°C

%/V Timing Error (astable)*2 Initial Accuracy Drift with Temperature Drift with Supply Voltage

ACCURΔt/ΔT

Δt/ΔVcc

VCC = 15VRA,RB = 1KΩ to 100KΩC = 0.1μF

- 2.251500.3

- %ppm/°C

%/V

Page 90: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

LM556/NE556

5

Mechanical Dimensions (Continued)

Package

8.56

±0.2

0

0.33

7±0

.008

1.27

0.05

0

5.720.225

1.55 ±0.10

0.061 ±0.004

0.050.002

6.00 ±0.30

0.236 ±0.012

3.95 ±0.20

0.156 ±0.008

0.60 ±0.20

0.024 ±0.008

8.70

0.34

3M

AX

#1

#7 #8

0~8°

#14

0.47

0.01

9(

)

1.800.071

MA

X0.

10M

AX

0.00

4

MAX

MIN

+0.

10-0

.05

0.20

+0.

004

-0.0

020.

008

+0.

10-0

.05

0.40

6

+0.

004

-0.0

020.

016

14-SOP

Page 91: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

1

Features• Low Voltage and Standard Voltage Operation

– 5.0 (VCC = 4.5V to 5.5V)– 2.7 (VCC = 2.7V to 5.5V)– 1.8 (VCC = 1.8V to 3.6V)

• Internally Organized 16,384 x 8 and 32,768 x 8• 2-Wire Serial Interface• Schmitt Trigger, Filtered Inputs for Noise Suppression• Bidirectional Data Transfer Protocol • 1 MHz (5V), 400 kHz (2.7V) and 100 kHz (1.8V) Compatibility• Write Protect Pin for Hardware and Software Data Protection• 64-Byte Page Write Mode (Partial Page Writes Allowed)• Self-Timed Write Cycle (5 ms typical)• High Reliability

– Endurance: 100,000 Write Cycles – Data Retention: 40 Years– ESD Protection: > 4000V

• Automotive Grade and Extended Temperature Devices Available• 8-Pin JEDEC PDIP, 8-Pin JEDEC and EIAJ SOIC, 14-Pin TSSOP, and

8-Pin Leadless Array Packages

DescriptionThe AT24C128/256 provides 131,072/262,144 bits of serial electrically erasable andprogrammable read only memory (EEPROM) organized as 16,384/32,768 words of 8bits each. The device’s cascadable feature allows up to 4 devices to share a common2-wire bus. The device is optimized for use in many industrial and commercial applica-tions where low power and low voltage operation are essential. The devices are avail-able in space-saving 8-pin JEDEC PDIP, 8-pin EIAJ, 8-pin JEDEC SOIC, 14-pinTSSOP, and 8-pin LAP packages. In addition, the entire family is available in 5.0V(4.5V to 5.5V), 2.7V (2.7V to 5.5V) and 1.8V (1.8V to 3.6V) versions.

Rev. 0670C–08/98

2-Wire Serial EEPROMs128K (16,384 x 8)

256K (32,768 x 8)

AT24C128AT24C256

Pin Configurations

Pin Name Function

A0 to A1 Address Inputs

SDA Serial Data

SCL Serial Clock Input

WP Write Protect

NC No Connect

8-Pin PDIP

1234

8765

A0A1NC

GND

VCCWPSCLSDA

8-Pin SOIC

1234

8765

A0A1NC

GND

VCCWPSCLSDA

8-Pin Leadless Array

Bottom View

1234

8765

VCCWP

SCLSDA

A0A1NCGND

14-Pin TSSOP

1234567

1413121110

98

A0A1NCNCNCNC

GND

VCCWPNCNCNCSCLSDA

Page 92: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

AT24C128/2564

AC CharacteristicsApplicable over recommended operating range from TA = -40°C to +85°C, VCC = +1.8V to +5.5V, CL = 100 pF (unless oth-erwise noted). Test conditions are listed in Note 2.

Notes: 1. This parameter is characterized and is not 100% tested.

2. AC measurement conditions:RL (connects to VCC): 1.3KΩ (2.7V, 5V), 10KΩ (1.8V)Input pulse voltages: 0.3VCC to 0.7VCCInput rise and fall times: ≤50nsInput and output timing reference voltages: 0.5VCC

Device OperationCLOCK and DATA TRANSITIONS: The SDA pin is nor-mally pulled high with an external device. Data on the SDApin may change only during SCL low time periods (refer toData Validity timing diagram). Data changes during SCLhigh periods will indicate a start or stop condition as definedbelow.

START CONDITION: A high-to-low transition of SDA withSCL high is a start condition which must precede any othercommand (refer to Start and Stop Definition timing dia-gram).

STOP CONDITION: A low-to-high transition of SDA withSCL high is a stop condition. After a read sequence, thestop command will place the EEPROM in a standby powermode (refer to Start and Stop Definition timing diagram).

ACKNOWLEDGE: All addresses and data words are seri-ally transmitted to and from the EEPROM in 8-bit words.The EEPROM sends a zero during the ninth clock cycle toacknowledge that it has received each word.

STANDBY MODE: The AT24C128/256 features a lowpower standby mode which is enabled: a) upon power-upand b) after the receipt of the STOP bit and the completionof any internal operations.

MEMORY RESET: After an interruption in protocol, powerloss or system reset, any 2-wire part can be reset by follow-ing these steps: (a) Clock up to 9 cycles, (b) look for SDAhigh in each cycle while SCL is high and then (c) create astart condition as SDA is high.

Symbol Parameter

1.8-volt 2.7-volt 5.0-volt

UnitsMin Max Min Max Min Max

fSCL Clock Frequency, SCL 100 400 1000 kHz

tLOW Clock Pulse Width Low 4.7 1.3 0.6 μs

tHIGH Clock Pulse Width High 4.0 1.0 0.4 μs

tAA Clock Low to Data Out Valid 0.1 4.5 0.05 0.9 0.05 0.55 μs

tBUFTime the bus must be free before a new transmission can start(1) 4.7 1.3 0.5 μs

tHD.STA Start Hold Time 4.0 0.6 0.25 μs

tSU.STA Start Set-up Time 4.7 0.6 0.25 μs

tHD.DAT Data In Hold Time 0 0 0 μs

tSU.DAT Data In Set-up Time 200 100 100 ns

tR Inputs Rise Time(1) 1.0 0.3 0.3 μs

tF Inputs Fall Time(1) 300 300 100 ns

tSU.STO Stop Set-up Time 4.7 0.6 0.25 μs

tDH Data Out Hold Time 100 50 50 ns

tWR Write Cycle Time 20 10 10 ms

Endurance(1) 5.0V, 25°C, Page Mode 100K 100K 100KWrite

Cycles

Page 93: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

AT24C128/256

7

Device AddressingThe 128K/256K EEPROM requires an 8-bit device addressword following a start condition to enable the chip for a reador write operation (refer to Figure 1). The device addressword consists of a mandatory one, zero sequence for thefirst five most significant bits as shown. This is common toall 2-wire EEPROM devices.

The 128K/256K uses the two device address bits A1, A0 toallow as many as four devices on the same bus. These bitsmust compare to their corresponding hardwired input pins.The A1 and A0 pins use an internal proprietary circuit thatbiases them to a logic low condition if the pins are allowedto float.

The eighth bit of the device address is the read/write opera-tion select bit. A read operation is initiated if this bit is highand a write operation is initiated if this bit is low.

Upon a compare of the device address, the EEPROM willoutput a zero. If a compare is not made, the device willreturn to a standby state.

DATA SECURITY: The AT24C128/256 has a hardwaredata protection scheme that allows the user to write protectthe whole memory when the WP pin is at VCC.

Write OperationsBYTE WRITE: A write operation requires two 8-bit dataword addresses following the device address word andacknowledgment. Upon receipt of this address, theEEPROM will again respond with a zero and then clock inthe first 8-bit data word. Following receipt of the 8-bit dataword, the EEPROM will output a zero. The addressingdevice, such as a microcontroller, then must terminate thewrite sequence with a stop condition. At this time theEEPROM enters an internally-timed write cycle, tWR, to thenonvolatile memory. All inputs are disabled during thiswrite cycle and the EEPROM will not respond until the writeis complete (refer to Figure 2).

PAGE WRITE: The 128K/256K EEPROM is capable of 64-byte page writes.

A page write is initiated the same way as a byte write, butthe microcontroller does not send a stop condition after thefirst data word is clocked in. Instead, after the EEPROMacknowledges receipt of the first data word, the microcon-troller can transmit up to 63 more data words. TheEEPROM will respond with a zero after each data wordreceived. The microcontroller must terminate the pagewrite sequence with a stop condition (refer to Figure 3).

The data word address lower 6 bits are internally incre-mented following the receipt of each data word. The higherdata word address bits are not incremented, retaining thememory page row location. When the word address, inter-nally generated, reaches the page boundary, the followingbyte is placed at the beginning of the same page. If morethan 64 data words are transmitted to the EEPROM, the

data word address will “roll over” and previous data will beoverwritten. The address “roll over” during write is from thelast byte of the current page to the first byte of the samepage.

ACKNOWLEDGE POLLING: Once the internally-timedwrite cycle has started and the EEPROM inputs are dis-abled, acknowledge polling can be initiated. This involvessending a start condition followed by the device addressword. The read/write bit is representative of the operationdesired. Only if the internal write cycle has completed willthe EEPROM respond with a zero, allowing the read orwrite sequence to continue.

Read OperationsRead operations are initiated the same way as write opera-tions with the exception that the read/write select bit in thedevice address word is set to one. There are three readoperations: current address read, random address readand sequential read.

CURRENT ADDRESS READ: The internal data wordaddress counter maintains the last address accessed dur-ing the last read or write operation, incremented by one.This address stays valid between operations as long as thechip power is maintained. The address “roll over” duringread is from the last byte of the last memory page, to thefirst byte of the first page.

Once the device address with the read/write select bit setto one is clocked in and acknowledged by the EEPROM,the current address data word is serially clocked out. Themicrocontroller does not respond with an input zero butdoes generate a following stop condition (refer to Figure 4).

RANDOM READ: A random read requires a “dummy” bytewrite sequence to load in the data word address. Once thedevice address word and data word address are clocked inand acknowledged by the EEPROM, the microcontrollermust generate another start condition. The microcontrollernow initiates a current address read by sending a deviceaddress with the read/write select bit high. The EEPROMacknowledges the device address and serially clocks outthe data word. The microcontroller does not respond with azero but does generate a following stop condition (refer toFigure 5).

SEQUENTIAL READ: Sequential reads are initiated byeither a current address read or a random address read.After the microcontroller receives a data word, it respondswith an acknowledge. As long as the EEPROM receives anacknowledge, it will continue to increment the data wordaddress and serially clock out sequential data words. Whenthe memory address limit is reached, the data wordaddress will “roll over” and the sequential read will con-tinue. The sequential read operation is terminated whenthe microcontroller does not respond with a zero but doesgenerate a following stop condition (refer to Figure 6).

Page 94: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

AT24C128/2568

Figure 1. Device Address

Figure 2. Byte Write

Figure 3. Page Write

(* = DON’T CARE bit)

(† = DON’T CARE bit for the 128K)

Figure 4. Current Address Read

Page 95: PROYECTO Diseño y fabricación de un robot móvil de exploraciónbibing.us.es/proyectos/abreproy/50044/fichero/explorador_total.pdf · de los motores y la AUX2 para la orden de vuelta

AT24C128/256

9

Figure 5. Random Read

(* = DON’T CARE bit)

(† = DON’T CARE bit for the 128K)

Figure 6. Sequential Read