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:



viernes, 25 de febrero de 2011

Placa de pruebas con Picaxe-08M (5)

Por último he realizado dos pequeñas placas de expansión para la comunicación por infrarrojos:



La primera placa incorora un diodo led emisor de infrarrojos (salida 0) y un microinterruptor cuadruple (entradas 1, 2, 3 y 4).
La segunda placa tiene tres leds (saldas 0, 1, y 2) y el receptor de infrarrojos (entrada 3).

Es muy importante que la alimentación sea de unos 6 voltios, si es inferior el receptor de infrarrojos no funciona correctamente.

El ejemplo realizado lo que hace es encender les en función de los microinterruptores puestos a ON. Esta información se envia mediante la primera placa infrarrojos y la segunda placa se encarga de encender los leds.




PROGRAMA DEL EMISOR DE INFRARROJOS:

inicio:
if pin1=1 then gosub entrada1
if pin2=1 then gosub entrada2
if pin3=1 then gosub entrada3
if pin4=1 then gosub entrada4
infraout 1,b0
pause 50
b0=0
goto inicio

entrada1:
bit1=1
return

entrada2:
bit2=1
return

entrada3:
bit3=1
return

entrada4:
bit4=1
return

PROGRAMA DEL RECEPTOR DE INFRARROJOS:

high 2
wait 1
low 2
main:
infrain2   'esperar la nueva señal
if infra = 2 then enciende1  'encender 1
if infra = 4 then enciende2  'encender 2
if infra = 8 then enciende3  'apagar 1
if infra = 16 then todos 'apagar 2
low 1
low 2
low 0
goto main

enciende1:
high 1
goto main

enciende2:
high 2
goto main

enciende3:
high 0
goto main

todos:
high 0
high 1
high 2
goto main

Placa de pruebas con Picaxe-08M (4)

Con la segunda placa de pruebas he realizado también diferentes prácticas muy sencillas.

Esta placa de expansión tiene dos leds (salidas 0 y 1) y dos entradas analógicas (el potenciómetro en la entrada 2 y la LDR en la entrada 4).

He realizado tres ejercicios prácticos:
- Dos luces intermitentes alternativas.
- Igual que el anterior pero el potenciómetro regula el tiempo.
- Igual que el anterior pero la LDR regula el tiempo.

LUCES INTERMITENTES ALTERNATIVAS:

symbol t=500
inicio:
high 0
pause t
low 0
high 1
pause t
low 1
goto inicio

LUCES INTERMITENTES ALTERNATIVAS CON TIEMPO REGULADOR POR POTENCIÓMETRO:

inicio:
readadc 4,b0     'potenciometro
high 0
pause b0
low 0
high 1
pause b0
low 1
goto inicio

LUCES INTERMITENTES ALTERNATIVAS CON TIEMPO REGULADOR POR LDR:

inicio:
readadc 2,b0    'LDR
high 0
pause b0
low 0
high 1
pause b0
low 1
goto inicio

Placa de pruebas con Picaxe-08M (3)

He realizado diferentes pruebas con una plaquita que he diseñado para poder conectar directamente sobre la placa de pruebas de Picaxe.



Hay conectados 3 leds (salidas 0, 1 y 2), un pulsador en la entrada 3 y un potenciómetro en la entrada 4.

Los programas que he realizados son los siguientes:

- Encender tres leds alternativos (semáforo).
- Encender tres leds (semáforo) 10 veces.
- Encender un semáforo después de pulsar un pulsador.
- Encender un semáforo con un pulsador y ajustar el tiempo con un potenciómetro.

ENCENDER TRES LEDS ALTERNATIVOS CONECTADOS A LAS SALIDAS 0, 1 Y 2 (SEMAFORO):

symbol t=500

inicio:
high 0
pause t
low 0
high 1
pause t
low 1
high 2
pause t
low 2
goto inicio

ENCENDER ALTERNATIVAMENTE 3 LEDS (SEMAFORO) PERO SOLO 10 VECES:

symbol t=500
for b0=0 to 9 'repite el ciclo 10 veces
high 0
pause t
low 0
high 1
pause t
low 1
high 2
pause t
low 2
next b0

ENCENDER UN SEMÁFORO DESPUÉS DE PULSAR UN PULSADOR:

symbol t=500
inicio:
if pin4=1 then gosub leds     'Si pulsamos la entrada 4 hace el semaforo (leds) sino vuelve a inicio.
goto inicio

leds:
high 0
pause t
low 0
high 1
pause t
low 1
high 2
pause t
low 2
return

IGUAL QUE EL PROGRAMA ANTERIOR PERO REGULAMOS EL TIEMPO CON EL POTENCIÓMETRO:

inicio:
readadc 4,b0
if pin3=1 then gosub leds
goto inicio

leds:
high 0
pause b0
low 0
high 1
pause b0
low 1
high 2
pause b0
low 2
return

jueves, 24 de febrero de 2011

Placa de pruebas con Picaxe-08M (2)

El microcontrolador Picaxe utilizado es el 08M. Aquí hay un esquema del circuito:

En los pines de la placa tenemos disponibles todos los pines del microcontrolador a excepción del pin 2 (Serial In).

El jumper que hay encima del Picaxe sirve para utilizar el Serial In del pin 2 o cualquier entrada para realizar comunicaciones serie con un ordenador u otro Picaxe. Si está a la izquierda el jumper se utiliza para programar el Picaxe, pero si ponemos el jumper a la derecha ponemos el pin del Picaxe del Serial In a masa y en el pin libre podemos conectar cualquier entrada del Picaxe mediante un cable.

El jumper de la derecha sirve para utilizar Serial Out si esta arriba o la Salida 0 o Infraout si está abajo.



En la parte de abajo están marcadas las Entradas/Salidas 0-1-2-3-4 y los pines de Positivo (+V) y Masa (GND).


lunes, 14 de febrero de 2011

Placa de pruebas con Picaxe-08M (1)

Esta es una placa de pruebas que utiliza un microcontrolador Picaxe 08M y que pretende aprovechar los recursos que ofrece este microcontrolador.

Es una versión desarrollada a partir de la placa original diseñada por Jordi Orts y que puede consultarse en el libro Microcontroladors PICAXE: Electrònica didàctica al segle XXI.

Además se ha diseñado para que pueda utilizarse en una protoboard, directamente sobre la placa o mediante módulos de expansión (de los cuales he diseñado algunos a modo de ejemplo).

Esta placa permite realizar pequeños proyectos con el microcontrolador PICAXE 08M pudiendo disponer de todas sus entradas y salidas así como de los pines de comunicación para poder realizar la comunicación con el ordenador.

Aquí teneis el esquema de la placa hecho con Crocodile Technology:


Y las fotos de la placa acabada: vista supererior e inferior.



1. Emisor de infrarrojos.




2. Receptor de infrarrojos.


2. Potenciómetro, LDR y dos indicadores led.


3. Potenciómetro, pulsador y tres indicadores led.



Aquí teneis un pequeño montaje con emisor y receptor de infrarrojos montados sobre una placa protoboard: