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: