Beruflich Dokumente
Kultur Dokumente
Introducción
Cada bloque ya sea de entrada o salida interactua con el bloque central que es el
microcontrolador. El hexapodo como estructura posee tres servo en forma independiente
enumerados del uno al tres. Siendo el servo 2 el de la posicion central.
q Sensores LDR : Corresponden a los ojos del hexapodo. Estos sensores son tipo resistivo,
variando su valor ohmico a medida que aumente o disminuya la intensidad de la luz.
q Malla divisora de voltaje : Corresponde al circuito basico resistivo que realiza la conversion
Ohm/ voltaje.
q Circuito Oscilador : Circuito que genera una frecuencia de oscilacion para que pueda trabajar
el microcontroaldor. La oscilacion se realiza con una malla RC de valores diseñados.
q Sensores de choque : Correspondientes a las antenas del hexapodo. Cada antena esta en
forma independiente a un voltaje positivo entregados por el microcontrolador y rodeadas por
un anillo que esta a tierra. La idea del choque es que en el momento en que se realiza, se le
entregue un cero a microcontrolador el cual ejecuta una rutina programada.
q Servos 1, 2, 3 : Servo motores, que determinan el paso del hexapodo respondiendo a la señal
de control que entrega el microcontrolador.
Especificación de componentes por módulo
Sensores LDR :Este bloque esta compuesto por dos sensores de tipo LDR correspondientes a los
ojos del hexapodo. Estos dispositivos aumentan o disminuyen su valor ohmico dependiendo de la
intensidad de la luz. El esquema del dispositivo es el que se muestra a continuacion:
Junto con estos sensores se diseño una malla de adaptacion, que entrega un valor en
voltaje al microcontrolador en proporcion a la intensidad de la luz.
La implementacion se diseño en un circuito impreso en forma de una cabeza de hormiga
con valores de resistencias adecuados para una correcta conversion analoga – digital.
Como componente fundamental de este circuito se utilizo una malla RC de valores diseñados.
Esta malla proporciona la frecuencia de trabajo del microcontrolador Como se muestra en la
figura.
Figura 2.
Generación de PWM para realizar movimientos apoyándonos en servo
motores de la línea Hi-Tec, modelo:
Cuando nos enfrentamos al desafío de lograr uno de los primeros objetivos, luego de
realizar el estudio profundo y detallado del problema, es el de lograr mover toda la estructura ya
montada con la generación de PWM (modulación por ancho de pulso) que tiene la más alta
prioridad para solucionarla pronto y de forma óptima, por lo cual esta la decidimos realizar
mediante software para así aprovechar de mejor forma las potencialidades que el microcontrolador
nos brinda teniendo la consideración que este PIC no contaba con módulos generadores de PWM,
por lo cual es de total invención propia la forma de generación que hemos adoptado.
Esta señal de tipo periódica llamada PWM, será generada mediante un programa que más
adelante mostraremos y la cual será hecha llegar a los diversos servos con los que contamos para
así lograr un desplazamiento armónico y agradable a la vista, a continuación mostramos algunas
características de los servos ocupados para así introducirnos en su funcionamiento.
Este pulso que posee la duración ya descrita se encarga de posicionar el servo en posición
de equilibrio o centro el cual puede ser regulado a voluntad, de acuerdo a un pequeño manejo
técnico muy cuidadoso.
Obs. Con la última consideración hecha es más que importante volver a resaltar que la duración
erronea de un pulso o del intervalo de respuesta provocaría en la práctica vibraciones en el servo
que representarían un cambio no definido en su proceder.
Con la anterior descripción del movimiento de los servos, los cuales son fundamentales
para nuestro accionar es casi obvio que la generación de PWM que nosotros hemos implementado
es realizar de forma alternada la generación de pequeños pulsos de duración tanto de 1.0 como de
2.0 msg en forma alternada haciéndolos llegar al pín de entrada de color amarillo que representa
entrada de PWM en el servo. El diagrama de bloques que representa el software necesario para la
generación de estos se muestra a continuación, cabe la consideración que hemos tenido que
mandar varios pulsos de 1.0 y luego varios de 2.0 msg para así asegurar que al menos uno de
ellos llegue en forma integra al servo y así mantener al servo durante un pequeño instante de
tiempo en una y otra posición, para así realizar el juego de movimientos necesarios para desplazar
al Hexápodo.
Como el Hexápodo consta de 6 extremidades o patas, la dos delanteras junto con las dos
traseras, deben realizar movimientos armónicos y coherentes por lo cual el dato que
suministramos a ambos siempre será el mismo, es decir siempre mandamos primero los pulsos de
1.0 msg y luego los de 2.0 msg para así avanzar hacia delante, las extremidades medias , es decir
las dos patas centrales reciben información similar a las anteriores, la cual es igual cuando
avanzamos hacia delante y al revés cuando queremos retroceder, la siguiente figura representa la
señal de PWM necesaria para lograr el desplazamiento hacia delante y hacia atrás las cuales
están debidamente explicadas.
Figura 5. Señal de PWM que se hace llegar a los servo 1 y servo 3 coherentemente
para realizar movimientos tanto hacia delante como hacia atrás.
Figura 6. Señal de PWM que se le hace llegar las dos patas centrales (servo2)
para realizar movimientos solo hacia delante.
Figura 7. Señal de PWM que se hace llegar al servo 2 para realizar movimiento exclusivamente
hacia atrás.
De las figuras anteriores apreciamos claramente que para realizar el movimiento hacia
atrás solo debemos alterar el movimiento de las patas centrales ya que son ellas quienes le dan el
apoyo al Hexápodo para su avance y las otras cuatro son las que le dan el impulso de avance.
La lógica de control para el desplazamiento hacia delante es la que refleja el siguiente
diagrama de flujo:
Figura 8.
Figura 9.
La filosofía de acción es la siguiente, cuando el autómata se encuentra caminando el o los
bits de estados que representan en sí el estado en que se encuentra el sensor estarán en un
estado lógico alto, es decir de tensión + 5vdc y en cuanto el autómata haga contacto con un
obstáculo gracias a su sensor de choque, inmediatamente el bit o los bits de estado se colocarán
en estado lógico bajo o de 0 volt por un pequeño instante, esto representará que a ocurrido un
choque de tipo frontal por lo cual debemos evadir dicho obstáculo, se debe tener la gran
consideración que la duración del estado lógico de 0 volt dura solo mientras el sensor de choque
se encuentra en contacto con el supuesto obstáculo, luego inmediatamente que retrocedemos el
bits de estado vuelvo al estado lógico alto por lo cual para poder retroceder un intervalo suficiente
para lograr evadir el obstáculo debemos enclavar nuestra acción por un intervalo de tiempo
adecuado, este inconveniente lo hemos resuelto generando un Monoestables mediante software,
el diagrama de bloques que indica las acción a seguir tanto para caminar hacia delante y hacia
atrás en cuanto detectamos un obstáculo es el siguiente, los programas en su integridad se
muestran al final en los anexos.
Figura 10.
Vemos hasta el momento la descripción completa de las diversas estrategias de control diseñadas
para generar movimientos armónicos y de una complejidad notable, estableciendo claramente las
características que deben tener el caminar tanto hacia atrás como hacia delante, ya manejando
bien estas estrategias de control nos introducimos en lo que es la respuesta de nuestro Hexápodo
ante estímulos de tipo luminosos estos son capturados gracias a la ayuda de dos sensores,
independientes uno del otro, de tipo “LDR” , estos sensores no son más que resistencias de tipo
variables que experimentan un cambio en su valor óhmico de acuerdo a la intensidad luminosa
que a ellas les llega.
Obs. De carácter muy importante es esta consideración según la data del microcontrolador
que estamos utilizando el cual trae incluido un conversor de tipo A/D, se debe tener la
consideración que la impedancia de entrada al pín configurado como entrada analógica debe ser
menor que 10 KΩ, por lo cual lo primero es realizar la prueba de los márgenes de resistencias que
manejaremos cuando nos enfrentemos a los niveles extremos de luminosidad.
a) Para una situación de máxima obscuridad el valor de resistencia entregado por el sensor es de
aproximadamente 10 a 15 MΩ.
b) Para una situación de máxima intensidad luminosa el valor de resistencia entregado por el
sensor es de aproximadamente 40 a 50 Ω.
Debido a que estos valores son casi extremos y muy pocas veces nos veremos
enfrentados a estas situaciones para efectos de diseño nosotros hemos optado por movernos entre
los rangos de 50 a 1M Ω, siendo estos valores muy importantes en una primera instancia para
diseñar el circuito adaptador de impedancia para la entrada de tipo analógica que irá hacia el PIC,
para así cumplir con la restricción de fábrica que exige como máximo una resistencia de 10KΩ
para poder realizar una conversión adecuada. La siguiente figura muestra el circuito de adaptación
de impedancia que se utilizó para poder realizar una correcta conversión A/D
Donde:
R th = ( R s + R 2 ) // LDR + R 1
Cuando LDR → 50Ω
Considerando Rs → 0 Ω
R 2 // LDR + R 1 ≤10K
R 2 ×LDR
+ R 1 ≤10K
R2 + LDR
50 ×R 2
+ R 1 ≤10K
R 2 + 50
50K
si R 2 = 1K ⇒ + R 1 ≤10K ⇒ R1 ≤10K − 47.62 ⇒ R 1 ≤9952.38ohm
1050
Considerando Rs → 0 Ω
1M ⋅R 2
+ R 1 ≤10K
1M + 50
1 e9
si R 2 = 1K ⇒ + R 1 ≤10K ⇒ R1 ≤10K − 999.95 ⇒ R 1 ≤9000.05ohm
1000050
Como apreciamos de las ecuaciones anteriores hemos obtenido dos rangos donde se
puede ubicar el valor de la resistencia R1, para nuestros efectos consideraremos que el valor a
utilizar es el de 9KΩ, por lo tanto los valores finales con los cuales montaremos en placa los dos
circuitos que adaptan la impedancia de los sensores de luz (es un circuito por cada sensor de luz),
son de:
R1=1KΩ.
R2=9KΩ.
La finalidad de esta prueba es verificar que si con el diseño del circuito anterior logramos
realizar la conversión de la señal analógica capturada en primera instancia solo por LDR, para ello
debemos realizar un pequeño programa que se encargue de esta función ya que el mismo
microcontrolador realiza internamente la conversión A/D, recordemos que de ante mano ya hemos
aclarado quienes son los pines que se configuraran como entradas analógicas, a continuación
mostramos el diagrama de flujo que refleja el software necesario para realizar la conversión de
buena forma.
Del diagrama de flujo anterior vemos una seria de configuraciones tanto de I/O, como de
definir si la variable es de tipo analógica o digital, todo ese detalle se especificará en los anexos ya
que es allí donde se muestran a cabalidad y en detalle los programas realizados, en este caso
cabe mencionar y explicar la importancia de la consulta btfsc adcon0, go donde lo que se pregunta
es si la conversión culminó o no y en el momento en que esto ocurra el resultado se reflejará en el
puerto destinado a salida, siguiendo realizado la conversión A/D de forma cíclica.
Resultados obtenidos a partir de la segunda prueba.
Gracias a este pequeño programa probamos que el módulo de conversión A/D funciona de
manera correcta, a continuación mostraremos los resultados obtenidos luego de realizar la
conversión de un canal en particular, mostrando la codificación obtenida en 8 bits, de una señal
luminosa que variaba entre 0 y 5vdc.
Tensión de entrada(volts) B7 B6 B5 B4 B3 B2 B1 B0
0 0 0 0 0 0 0 0 0
0.1 0 0 0 0 1 0 0 1
0.2 0 0 0 0 1 0 1 1
0.3 0 0 0 1 0 0 1 1
0.4 0 0 0 1 1 0 0 x
0.5 0 0 0 1 1 1 0 0
0.6 0 0 1 0 0 0 0 x
0.7 0 0 1 0 0 1 1 0
0.8 0 0 1 0 1 0 1 x
0.9 0 0 1 1 0 0 1 1
1.0 0 0 1 1 1 0 0 x
1.1 0 0 1 1 1 1 0 0
1.2 0 x x x x x x x
1.4 0 1 0 0 1 1 0 x
1.6 0 1 0 1 0 1 0 0
1.8 0 1 1 0 0 0 0 x
2.0 0 1 1 0 1 0 1 0
2.1 0 1 1 0 1 1 1 1
2.2 0 1 1 1 0 1 0 1
2.3 0 1 1 1 1 0 1 1
2.4 0 1 1 1 1 1 1 0
2.5 1 0 0 0 0 1 0 x
2.6 1 0 0 0 1 0 x x
2.7 1 0 0 x x x x x
2.8 1 0 0 1 0 1 1 0
2.9 1 0 0 1 0 1 1 1
3.0 1 0 x x x x x x
3.2 1 0 1 0 1 0 0 1
3.4 1 0 1 1 0 1 0 x
3.6 1 0 1 1 1 1 1 0
3.8 1 1 0 0 1 0 x x
4.0 1 1 0 1 0 0 0 0
4.2 1 1 0 1 1 1 0 0
4.4 1 1 1 0 x x x x
4.6 1 1 1 1 0 0 0 1
4.8 1 1 1 1 1 1 0 x
5.0 1 1 1 1 1 1 1 1
x: don’t cares
Vemos la exactitud de un conversor de 8 bits como con el que en este caso contamos, se
aprecia fielmente que en zonas de máxima intensidad por ende mínima tensión de entrada en el
pín de entrada análoga la conversión es 00h, en zonas medias obtenemos el valor de f 0h y en
regiones de máxima obscuridad encontramos un resultado de f fh.
Ahora, luego de esta prueba preliminar en cuanto a la conversión A/D tomaremos
decisiones de acuerdo a niveles luminosos predeterminados y en torno a ellos realizaremos
rutinas de control específicas, es decir mostraremos el diagrama de flujo que representa el
programa que se encargará de comandar el caminar del Hexápodo hacia atrás en presencia de luz
y hacia adelante en presencia de obscuridad, cabe recordar que estos niveles son niveles medios
ya que nunca trabajaremos casi en los extremos.
Conclusiones
Bibliografía y referencias
[1] Naranjo, J., "Microcontroladores PIC 16C71", Electronica & computadores CEKIT, numero
7,1996.
[2] Naranjo, J., "Rutinas de Programacion PIC", Electronica & computadores CEKIT, numero 5,
1995.
[3] Huircan, J.,"Apuntes de Herramientas de Programacion ", Depto. Ingeniería Eléctrica, 1996.
[4] Duque, E.,”Caracteristicas Especiales de los PIC”, Electronica & computadores CEKIT, 1996.
[5] http://www.geocities.com/Siliconvalley/way/5807/.
[6] http://www.hobby-electronics.com/
[7] http://www.picpoint.com
*
Listado de programas :
a) Programa 1: Avance hacia delante, de acuerdo a un nivel de Sombra, para y da vuelta derecha: “Somb “
e) Programa 5: Avance hacia delante o hacia atrás de acuerdo a un cierto nivel luminoso: “Luz “
f) Programa 6: Avance hacia delante o hacia atrás de acuerdo a un cierto nivel de Sombra: “Sombra “
*
Se Adjuntan en un Diskette.