X-ROBOTICS - Robotica & Uc PIC-LM35
X-ROBOTICS - Robotica & Uc PIC-LM35
X-ROBOTICS - Robotica & Uc PIC-LM35
SENSORES
Para dotar al robot de sensibilidad con el mundo que le rodea, se necesita dotar a este, de sensores para
detectar obstáculos y así poder actuar para esquivarlos o hacer los movimientos necesarios según la
programación que se haga.
INFRARROJOS
Reflexivo CNY70
Descripción:
El CNY70 es un pequeño dispositivo con forma de cubo y cuatro patitas que aloja en su interior un diodo
emisor de infrarrojos que trabaja a una longitud de onda de 950nm. y un fototransistor (recetor) estando
ambos dispuestos en paralelo y apuntando ambos en la misma dirección, la distancia entre emisor y
receptor es de 2.8mm. y están separados del frontal del encapsulado por 1mm.
En la siguiente figura vemos la disposición interna del CNY70 mirando el encapsulado desde arriba, así
pues, tenemos el diodo emisor de infrarrojos a la izquierda y el fototransistor a la derecha.
Funcionamiento:
El fototransistor conducirá más, contra más luz reflejada del emisor capte por su base. La salida de este
dispositivo es analógica y viene determinada por la cantidad de luz reflejada, así pues, para tener una salida
digital se podría poner un disparador Trigger Schmitt y así obtener la salida digital, pero esto tiene un
problema, y es que no es ajustable la sensibilidad del dispositivo y los puntos de activación de histéresis
distan algunos milivoltios uno del otro (ver explicación en el esquema de la LDR). Para solventar este
problema muestro el siguiente circuito basado en un amplificador operacional configurado en modo
comparador, en la salida del circuito obtendremos una señal cuadrada lista para su interconexión con la
entrada de cualquier µControlador.
La sensibilidad del circuito es ajustable mediante la resistencia variable de 10k (aconsejo poner una
resistencia multivuelta). Para comprobar y visualizar la señal de salida es posible montar un diodo led en la
salida con su resistencia de polarización a masa, si así lo hacemos veremos que cuando el sensor detecta
una superficie blanca o reflectante el led se ilumina ya que la salida del LM358 pasa a nivel alto y por lo
tanto alimenta al led que tiene su ánodo conectado directamente.
La salida del LM358 varia de 0V para nivel lógico 0 a unos 3,3V para nivel lógico 1, con lo que puede ser
llevada directamente a un disparador trigger schmitt (p.ej. 74LS14) para conformar pulsos de niveles TTL de
0 a 5V si fuese necesario.
Usos:
Comúnmente utilizado en los robots rastreadores (Sniffers) para detección de líneas pintadas sobre el
suelo, debido principalmente a su baja distancia de detección.
Ideas y mejoras:
Más que una idea esto es un descuido que tuve al montar el circuito en una protoboard y así comprobé
que quitando la resistencia de polarización de 10k que tiene conectada el fototransistor a su emisor
hacemos que el circuito se vuelva mucho más sensible (e inestable también, jeje). Con un buen ajuste de la
resistencia variable he conseguido detectar superficies reflectantes a una distancia de unos 5cm. también al
pasar la mano por enfrente del sensor se activaba la salida. Supongo que habrá una manera menos
inestable de hacer esto así que ya sabéis... a cacharrear y haber que sale, jejeje
Reflexivo GP2Dxx
Descripción:
El sensor GP2DXX de sharp es un dispositivo de reflexión por infrarrojos con medidor de distancia
proporcional al ángulo de recepción del haz de luz que incide en un sensor lineal integrado, dependiendo del
modelo utilizado, la salida puede ser analógica, digital o booleana.
Funcionamiento:
El dispositivo emite luz infrarroja por medio de un led emisor de IR, esta luz pasa a través de una lente
que concentra los rayos de luz formando un único rayo lo más concentrado posible para así mejorar la
directividad del sensor, la luz va recta hacia delante y cuando encuentra un obstáculo reflectante rebota y
retorna con cierto ángulo de inclinación dependiendo de la distancia, la luz que retorna es concentrada por
otra lente y así todos los rayos de luz inciden en un único punto del sensor de luz infrarroja que contiene en
la parte receptora del dispositivo. Este sensor es un CCD lineal y dependiendo del ángulo de recepción de la
luz incidirá está en un punto u otro del sensor pudiendo de esta manera obtener un valor lineal y
proporcional al ángulo de recepción del haz de luz.
Dependiendo del modelo elegido leeremos de una manera u otra la salida de este con lo cual tendremos
que remitirnos al datasheet del modelo elegido para ver su funcionamiento interno.
En los modelos analógicos la salida es un voltaje proporcional a la distancia medida.
En los modelos digitales la lectura será de 8 bits serie con reloj externo.
En los modelos Booleanos la salida será de 1 bit y este marcará el paso por la zona de histéresis del
sensor con lo cual solo tendremos una medición de una distancia fija.
Usos:
Debido a su gran rango de medida este sensor es adecuado para detectar obstáculos reflectantes como
paredes, usado en robots de exploradores para los de laberintos entre otros.
Ideas y mejoras:
Debido a su gran directividad se puede montar un sensor GPD2 en un servo y así tener un radar de IR
cubriendo de esta manera un radio de 180º aprox.
1.-GND
2.-Vin
3.-Vcc
4.-Vout
El dispositivo se alimenta poniendo a +5V el pin VCC y GND a 0V(masa). El pin Vout es la salida de
datos en serie con lógica positiva y niveles TTL.
Vin es la entrada con la que comandaremos el funcionamiento del sensor, hay que tener muy en cuenta
una característica de este pin y es que la salida es a drenador abierto y está prohibido poner esta entrada a
una salida TTL o CMOS ya que esto provocaría la destrucción de la entrada, solo acepta niveles bajos y por
lo tanto para acoplarla a la salida de un microcontrolador es necesario poner un diodo (p.ej.: 1N4148) tal
como se muestra a continuación:
Una vez tenemos conectado el sensor nos queda mandarle hacer una captura y leer el resultado, para
conseguir esto hay que seguir unos sencillos pasos:
1. La entrada Vin en reposo ha de ser nivel lógico alto con lo que el diodo bloqueara este estado y solo
cuando se ponga un nivel lógico bajo será cuando el sensor reciba la orden, sabido esto, indicamos
al sensor que inicie una captura poniendo a nivel lógico bajo el pin Vin y mantendremos el estado
bajo un tiempo de 70mS, transcurridos los cuales volveremos a poner Vin a nivel lógico alto. Ahora el
sensor ya tiene el dato listo para ser transmitido y como el bus de salida es serie tenemos que
sincronizar para saber cuándo salen los bits, el sensor lo consigue poniendo cada bit en Vout por
cada flanco de bajada de la señal Vin.
2. Espera de 0,2mS o menos para iniciar el primer flanco de bajada.
3. Poner Vin a nivel lógico bajo con lo cual iniciamos el primer flanco de bajada de la señal y el sensor
nos responde poniendo el bit de mayor peso "MSB" en Vout.
4. Leer el bit de Vout y almacenarlo debidamente para completar el byte correspondiente al dato de
salida.
5. Poner Vin a nivel lógico alto.
6. Repetir 7 veces más, los pasos de 3 a 5 teniendo en cuenta que hay que tardar un mínimo de 1mS
para leer los 8 bits con lo que si lo hacemos muy rápido el sensor no responderá debidamente.
7. Una vez leídos los 8 bits tenemos que esperar un mínimo de 1,5mS o más para poder ordenar al
sensor otra captura de distancia.
Se puede acelerar la medida comprobando cuando pasa a nivel alto la señal Vout mientras se mantiene
a nivel bajo Vin en los 70mS de inicio de medición, aunque recomiendo esperar los 70mS.
El programa usa una tabla de conversión calibrada para usar con una cartulina blanca como objeto
distante para la medición y muestra en el LCD la distancia en centímetros continuamente, para otros objetos
de diferente color se puede modificar la tabla fácilmente.
Luz
LDR
Descripción:
La LDR (Light Dependent Resistor) o resistencia dependiente de la luz, como su propio nombre indica es
una resistencia que varía su valor en función de la luz que incide sobre su superficie. Contra mas sea la
intensidad de luz que incida en la superficie de la LDR menor será su resistencia y contra menos luz incida
mayor será la resistencia. La forma externa puede variar de la mostrada en esta foto ya que este modelo en
concreto no es muy común pero la función es la misma.
Funcionamiento:
Para hacernos un medidor de luz ambiental o una fotocélula que encienda un determinado proceso en
ausencia o presencia de luz podremos hacerlo de dos maneras, usando un amplificador operacional para
detectar y ajustar la sensibilidad y punto en que se dispara la salida como en el caso del CNY70 mostrado
más arriba o bien hacerlo como se muestra en el siguiente circuito, que es en base a un disparador trigger
schmitt TTL que conformara una señal totalmente compatible TTL para ser aplicada a un microcontrolador o
puerta lógica compatible.
El circuito consta de un divisor de tensión formado por la LDR, una resistencia y un disparador trigger
schmitt inversor modelo 74LS14. Como la LDR varía en función de la luz, la señal de salida del divisor
también lo hará y cuando pase el umbral de disparo del trigger schmitt este cambiará el estado de su salida
según corresponda.
Los umbrales de disparo para el 74LS14 son de 0,9 y 1,7 voltios, esto quiere decir que cuando la señal
en la entrada del disparador supere los 1,7 voltios se tomara como un 1 lógico en la entrada y la salida al
ser inversa tomara el nivel lógico bajo o 0 voltios, si el voltaje de entrada baja por debajo de 0,9 voltios se
tomara como un 0 lógico en la entrada con lo que la salida tomara un nivel lógico 1.
El problema que se comentaba en la explicación del CNY70 radica en la distancia en voltios entre el
umbral de disparo alto y bajo, que es de 0,8 voltios entonces imaginemos que si la luz recibida en el sensor
va incrementando hasta llegar a los 1,7 voltios y rebosarlos este será el punto de activación pero no se
desactivara al volver a pasar por este punto, ya que la salida del circuito no se desactivara hasta que no se
baje por debajo del umbral de 0,9 voltios, esto hay que tenerlo muy en cuenta ya que para algunos casos
donde los niveles a detectar sean muy distantes como por ejemplo detectar niveles de todo o nada o luz y
oscuridad puede dar igual pero si lo que se quiere es activar algún circuito en un determinado nivel de luz y
desactivarlo justo cuando ese nivel ya no exista, entonces el circuito ya no es válido y será mejor usar el
circuito basado en amplificador operacional en modo comparador de tensiones.
Nota: El circuito integrado 74LS14 dispone en su interior de 6 puertas inversoras trigger schmitt, así que
hay que tener especial cuidado en no dejar ninguna entrada no usada al aire, esto es sin conexión alguna
ya que la puerta empezara a oscilar y podría causar la destrucción de dicha puerta, para que esto no
suceda hay que conectar todas las entradas a un nivel lógico estable, normalmente a GND. las salidas se
dejarán como es lógico al aire ya que tendrán el nivel lógico inverso que en su entrada.
Usos:
Las LDR se usan para detectar niveles de luz ambiente o seguimiento de luces o linternas, así pues,
podemos crear un seguidor de luz con varias LDR dispuestas alrededor del robot y hacer que este siga una
luz directa que le enfoque, también pueden usarse para encender los focos o luces de balizamiento del
robot en ausencia de luz.
Ideas y mejoras:
Una mejora es sustituir la resistencia fija del divisor de tensión por una variable de valor adecuado, para
poder ajustar el umbral de disparo.
Temperatura
LM35
Descripción:
El LM35 es un sensor de temperatura con una precisión calibrada de 1ºC y un rango que abarca desde
-55º a +150ºC.
El sensor se presenta en diferentes encapsulados pero el más común es el to-92 de igual forma que un
típico transistor con 3 patas, dos de ellas para alimentarlo y la tercera nos entrega un valor de tensión
proporcional a la temperatura medida por el dispositivo. Con el LM35 sobre la mesa las patillas hacia
nosotros y las letras del encapsulado hacia arriba tenemos que de izquierda a derecha los pines son: VCC -
Vout - GND.
La salida es lineal y equivale a 10mV/ºC por lo tanto:
+1500mV = 150ºC
+250mV = 25ºC
-550mV = -55ºC
Funcionamiento:
Para hacernos un termómetro lo único que necesitamos es un voltímetro bien calibrado y en la escala
correcta para que nos muestre el voltaje equivalente a temperatura. El LM35 funciona en el rango de
alimentación comprendido entre 4 y 30 voltios.
Podemos conectarlo a un conversor Analógico/Digital y tratar la medida digitalmente, almacenarla o
procesarla con un µControlador o similar.
Usos:
El sensor de temperatura puede usarse para compensar un dispositivo de medida sensible a la
temperatura ambiente, refrigerar partes delicadas del robot o bien para loggear temperaturas en el
transcurso de un trayecto de exploración.
Circuito de prueba:
Ajuste:
Hay un único ajuste que es necesario hacer correctamente y es referente a la tensión de referencia para
el conversor A/D, lo haremos quitando el µControlador PIC de su zócalo y midiendo entre el pin número 5
correspondiente a "RA3 +Vref" y GND, entonces ajustaremos por medio de la resistencia variable
multivuelta (recomiendo multivuelta y no normal por precisión de ajuste) para que en el polímetro nos
marque exactamente 2,56 V con lo cual se consigue que con una precisión de conversión A/D de 8 bits
cada 10mV represente un incremento en el byte de salida del conversor y por lo tanto lo podamos
representar de manera sencilla sin hacer cálculos complejos.