Vistas de página en total

lunes, 28 de febrero de 2011

Cámara Web robotizada

El siguiente proyecto consiste en robotizar una cámara web. Consiste en montar una plataforma móvil que nos permite mover la webcam mediante un joystick tipo playstation.


A continuación está el esquma de la placa que he diseñado para el control de la cámara. Está basada en un microcontrolador Picaxe 18x con dos servomotores, un potenciómetro para regular la velocidad, un joystick de control y cuatro leds indicadores para saber si se ha llegado a los límites (para no llegar al límite mecánico de movimiento).


Aquí está el esquema con las conexiones del potenciómetro de velocidad y de los dos potenciómetros del joystick:


Esquema del microcontrolador Picaxe 18x:
El conexionado esel siguiente:
- Potenciómetro: entrada analógica 2 (ADC2) -> pin1
- Servomotores: Salidas 0 y 1 (OUT0 y OUT 1) -> pin 6 y 7 (servo inferior y superior respectivamente)
- Dos salidas libres para m´s servomotores OUT2 y OUT 3 -> pin 8 y 9
- Potenciómetors del joystick: entradas analógicas 0 y 1 (ADC0 y ADC 1) -> pin 17 y 18
- Indicadores led: salidas 4, 5, 6 y 7 (OUT 4, 5, 6 y 7) -> pines 10, 11, 12 y 13

El programa permite mover la cámara en dos ejes y bloquea electrónicamente los movimientos para no llegar a los límites mecánicos. Las piezas de fijación de los servomotores son caseras y copiadas visualmente a partir de las fotos y medidas aproximadas que hay en la web:
http://www.lynxmotion.com/c-87-standard-brackets.aspx

El programa realizado es el siguiente:

'PROGRAMA JOYSTICK-uControlador 18x

symbol vel=b6

'Estado inicial
b0=0  '8 bits libres
b1=0  'mando 1
b2=0  'mando 2
b3=140 'posicion servo horizontal
b4=140 'posicion servo vertical
b5=0  'lectura potenciometro
b6=0  'velocidad de giro
high 7
high 6
high 5
high 4
wait 1
low 7
low 6
low 5
low 4
servo 0,b3
servo 1,b4
'Programa principal
inicio:

 readadc 2,b5 'lee el potenciometro
 if b5<=30 then gosub v1
 if b5>30 and b5<100 then gosub v2
 if b5>100 and b5<200 then gosub v3
 if b5>=200 then gosub v4


 readadc 0,b1 'lee un sentido del joystick
 readadc 1,b2 'lee un sentido del joystick

 if b1>180 then gosub izquierda 'lectura entre 0-256 en medio 130
 if b1<80 then gosub derecha
 if b2>180 then gosub delante
 if b2<80 then gosub detras

 if b3>=200 then gosub max_izq
 if b3<=40 then gosub max_der
 if b4>=180 then gosub max_del
 if b4<=60 then gosub max_det

 low 7
 low 6
 low 5
 low 4

 servo 0,b3
 servo 1,b4
 'debug

goto inicio
'Subrutinas
izquierda:
 let b3=b3+vel
return
derecha:
 let b3=b3-vel
return
delante:
 let b4=b4-vel
return
detras:
 let b4=b4+vel
return
max_izq:
 high 4
 b3=200
return
max_der:
 high 6
 b3=40
return
max_del:
 high 7
 b4=180
return
max_det:
 high 5
 b4=60
return
v1:
 vel=1
return
v2:
 vel=2
return
v3:
 vel=3
return
v4:
 vel=4
return

Os adjunto algunas fotos más de otras vistas y de los detalles:



No hay comentarios:

Publicar un comentario