sábado, 8 de noviembre de 2014

Práctica 18. Bluetooth controlado con movimiento o giro de Smartphone "Rocketbot Robot Controller"

Bluetooth

Vamos a conectar a nuestra placa picaxe, un módulo bluetooth que nos permita comunicarnos con un smartphone.

Para ello en primer lugar muestro como está constituido este pequeño módulo:

-Vcc: Positivo.
-GND: Negativo.
-TXD: Receptor de datos.
-RXD: Emisor de datos.
-Key:Configuración.
-Led: Indicador luminoso.

Bluetooth HC-05



Para esta primera práctica solo necesitaremos, Vcc, GND y TXD.
  
Las conexiones a la placa debemos hacerlas del siguiente modo:

  • Vcc a positivo.
  • GND a negativo.
  • TXD a entrada analógica (C.0 por ejemplo)
Picaxe con Bluetooth


 Además hemos conectado como salidas 4 Leds para que encienda uno u otro en función del giro del smartphone.



Una vez conectado, tenemos que disponer de una aplicación que nos permita la comunicación con el módulo Bluetooth. En nuestro caso hemos descargado del Play Store. Rocketbot Robot Controller. (Aplicación de pago 1,46€)






















 Los pasos a seguir para la conexión son:
 -Activar Bluetooth del móvil.
-Escanear dispositivos bluetooth del entorno. "Scan"
-Aparecerá HC-05. Selecciónalo y se conectará. (Cambiará el parpadeo del dispositivo bluetooth).
-Habremos enlazado el móvil con el módulo bluetooth.

Vídeo de funcionamiento de la aplicación




Ya sólo queda programar el código para establecer la comunicación y controlar los Leds.

setfreq m8

inicio:
serin C.0, T9600_8,w0,w1,w2,w3 'w0=b1:b0 w1=b3:b2 w2=b5:b4 w3=b7:b6
pause 50
debug b2  'X o L
debug b6  'Y o R

if b2>100 and b6>100 then goto verde
if b2<100 and b6<100then goto amarillo
if b2>100 and b6<100 then goto azul
if b2<100 and b6>100 then goto blanco

verde:
high B.0
serout B.5, T9600_8,(" verde")
pause 2000
low B.0
goto inicio

amarillo:
high B.1
serout B.5, T9600_8,(" amarillo")
pause 2000
low B.1
goto inicio

azul:
high B.2
serout B.5, T9600_8,(" azul")
pause 2000
low B.2
goto inicio

blanco:
high B.3
serout B.5, T9600_8,(" blanco")
pause 2000
low B.3
goto inicio

jueves, 16 de octubre de 2014

P17. Módulo Bluetooth HC-05

Conexionado de Bluetooth a Smartphone

Vamos a conectar a nuestra placa picaxe, un módulo bluetooth que nos permita comunicarnos con un smartphone.

Para ello en primer lugar muestro como está constituido este pequeño módulo:

-Vcc: Positivo.
-GND: Negativo.
-TXD: Receptor de datos.
-RXD: Emisor de datos.
-Key:Configuración.
-Led: Indicador luminoso.

Bluetooth HC-05



Para esta primera práctica solo necesitaremos, Vcc, GND y TXD.
  
Las conexiones a la placa debemos hacerlas del siguiente modo:

  • Vcc a positivo.
  • GND a negativo.
  • TXD a entrada analógica (C.0 por ejemplo)
Picaxe con Bluetooth


 Además, hemos conectado como salidas 3 Leds, para que encienda uno u otro en función de la tecla que pulsemos.

Picaxe con Bluetooth


Una vez conectado, tenemos que disponer de una aplicación que nos permita la comunicación con el módulo Bluetooth. En nuestro caso hemos descargado del Play Store. Bluetooth Controller. (Aplicación gratuita)


Bluetooth controller


 Los pasos a seguir para la conexión del Bluetooth son:
 -Activar Bluetooth del móvil.
-Escanear dispositivos bluetooth del entorno. "Scan"
-Aparecerá HC-05. Selecciónalo y se conectará. (Cambiará el parpadeo del dispositivo bluetooth).
-Habremos enlazado el móvil con el módulo bluetooth.

 Para configurar la aplicación solo debemos hacer.
 -Entrar en Set Keys.
-Asignar a cada tecla un nombre. Key Name: (Ej: Arriba, Abajo, Luz...)
-Configurar cada tecla (Data of Key), asignándole una letra que será el dato que enviará el móvil.
-El dato enviado es en código ASCII, por lo que hay que obtener el equivalente decimal a dicho caracter.
-Ejemplo: Asignamos a la tecla "Arriba" el valor F(ASCII) = 70 (Decimal). Así, al programar, utilizaremos el 70 como el valor que se introduce al programa al pulsar dicha tecla.

Ya sólo queda programar el código para establecer la comunicación y controlar los Leds.


Bluetooth con Picaxe


Vídeo del funcionamiento


 

  
CÓDIGO DEL PROGRAMA
  
setfreq m8 'Cambiamos la frecuencia a 8MHz.

inicio:

serin C.0, T9600_8,b0 'Comunicamos serie por entrada C.0 y almacena en b0
debug b0 'Mostramos en pantalla

 if b0=83 then goto mezcla 'Pulsa tecla Mezcla asociada a S (S en ASCII equivale a 83 en decimal)
 if b0=82 then goto Blanca 'Pulsa tecla Blanca asociada a letra R
 if b0=74 then goto Azul 'Pulsa teclaAzul asociada a letra  J
 if b0=73 then goto Verde 'Pulsa tecla Verde asociada a letra  I

Blanca: 
for b1=1 to 4
high B.3
pause 200
low B.3
pause 100
next b1
goto inicio

Azul:
for b1=1 to 3
high B.2
pause 1000
low B.2
pause 200
next b1
goto inicio

Verde:
for b1=1 to 5
high B.1
pause 400
low B.1
pause 150
next b1
goto inicio

Mezcla:
for b1=1 to 5
high B.3
pause 1500
high B.2
pause 400
low B.3
high B.1
pause 250
low B.2
high B.3
low B.1
pause 200
low B.3
pause 100
high B.2
high B.3
high B.1
pause 250
low B.2
low B.3
low B.1
pause 150
next b1
goto inicio







lunes, 1 de septiembre de 2014

Práctica 16. Motor paso a paso unipolar

Generalidades
El motor paso a paso es un dispositivo electromecánico que convierte una serie de impulsos eléctricos en desplazamientos angulares discretos, lo que significa que es capaz de avanzar una serie de grados (paso) dependiendo de sus entradas de control.
El motor paso a paso se comporta de la misma manera que un conversor digital-analógico (D/A) y puede ser gobernado por impulsos procedentes de sistemas lógicos.
Este motor presenta las ventajas:
  • Alta precisión.
  • Repetitividad en cuanto al posicionamiento.
Estos motores suelen tener 5 ó 6 cables de salida dependiendo de su conexionado interno.
Este tipo se caracteriza por ser más simple de controlar, estos utilizan un cable común a la fuente de alimentación y posteriormente se van colocando las otras líneas a tierra en un orden específico para generar cada paso, si tienen 6 cables es porque cada par de bobinas tiene un común separado, si tiene 5 cables es porque las cuatro bobinas tiene un solo común.
En esta imagen tenemos un motor unipolar con reductora de engranajes de 6 cables obtenido de una vieja impresora.
Motor paso a paso unipolar de impresora
Identificación de los cables
Para la identificación del orden en el que debe enviarse los pulsos al motor, hay que emplear el polímetro ya que nos va a arrojar valores de resistencias entre cables que serán los que nos sirvan para identificar el positivo o positivos común y los grupos de cables que vamos a formar.
Cuando el motor tiene 6 cables, va a haber 2 cables comunes que uniremos y formaremos un único común.
En la siguiente imagen podemos ver el detalle de unión de los 2 cables positivos que coinciden en ser los rojos.
Motor paso a paso unipolar 6 cables
En el siguiente vídeo podemos ver como se identifican los cables para ordenarlos posteriormente y obtener un movimiento continuo.
   
  Resumen de la identificación en caso de ser 6 cables:

Tomamos un cable cualquiera y medimos la resistencia con los demás.
  1. Los que arrojen un resultado de resistencia formarán parte del grupo.
  2. Los restantes formarán otro grupo entre sí.
  3. En cada grupo. El cable que ofrezca una menor resistencia  al unirlo con los otros (la mitad) será el positivo.
  4. Realizamos la misma operación en el otro grupo.
  5. Unimos ambos positivos.
  6. Establecemos el orden de secuencia tomando un cable alternativamente de cada grupo.
 Conexión a la placa Picaxe
Para conectarlo a la placa Picaxe podemos hacerlo de 2 formas:
  • Conectarlos en el orden obtenido previamente a las salidas B.4, B.5, B.6 y B.7 tanto en las clemas azules de conexión de salida o en los pines que están en la parte central de la placa.
  • Conectarlos a las salidas B.0, B.1, B.2 y B.3 pero sólo podemos hacerlo en los pines de la parte central de la placa ya que si los conectamos en las clemas de conexión de salida tenemos el problema que son conexiones con buffer y no funcionarían, por lo que hay que sacarlas directamente de la salida del chip picaxe que se encuentra en los pines de la zona central.
Conexión motor paso a paso a placa picaxe
Funcionamiento

En este vídeo podemos ver el funcionamiento continuo de forma indefinida de un motor paso a paso con gran reducción.




Programación
El funcionamiento de un motor paso a paso es muy sencillo. Básicamente hay que hacer 2 cosas:
  • Indicar que las conexiones son de salida (output)
  • Emplear el comando let pins con el estado de cada salida, es decir, todas las conexiones desconectadas excepto la que esté en uso en ese momento.
Nota: Recuerda que desconexión o apagado es un "0" excepto en las conexiones B.4, B.5, B.6 y B.7 que van al contrario porque pasan por el chip L293D que invierte la señal. Por lo tanto en dichas conexiones se emplea un "1" para desconectar.
Si hubieramos sacado las conexiones de la parte central sería como siempre ya que es directo del chip, sin pasar por el L293D.
Programa básico:
'%%%%%%%%%%%%%%MOTOR PASO A PASO%%%%%%%%%%%
output B.0    'Conexiones puestas como salidas
output B.1
output B.2
output B.3
output B.4
output B.5
output B.6
output B.7
inicio:   ' Funcionamiento indefinido del motor paso a paso
let pins =%11100000  'Orden  B.7......B.0  (Conectamos B.4, las demás apagadas)
pause 50  ' No es inprescindible. Solo hace que vaya algo mas despacio.
let pins =%11010000  'Orden B.7......B.0  (Conectamos B.5, las demás apagadas)
pause 50 
let pins =%10110000  'Orden B.7......B.0  (Conectamos B.6, las demás apagadas)
pause 50 
let pins =%01110000  'Orden B.7......B.0  (Conectamos B.7, las demás apagadas)
pause 50 
goto inicio   ' Vuelta a empezar

martes, 29 de julio de 2014

Practicas 15 con sensor de Ultrasonidos HC-SR04

Funcionamiento

El HC-SR04 es un sensor ultrasónico, este utiliza el sonar para determinar la distancia a un objeto. Ofrece una precisión excelente y lecturas estables. Su funcionamiento no se ve afectado por la luz solar o materiales oscuros.
HC-SR04

Su comportamiento es estable y tiene mucha exactitud en sus mediciones.

Su funcionamiento es con una frecuencia de 8MHz o bien 16MHz cuando lo empleamos junto a un servomotor.
También se puede realizar con la frecuencia por defecto 4MHz aunque habitualmente se ha ido realizando a 8MHz.
Para emplear junto con servomotres, emplear la frecuencia por defecto 4MHz.


Características




  • Voltaje de alimentacion: 5V DC


  • Angulo efectivo: 15°
  • Distancia efectiva de medicion: 2cm – 500 cm
  • Resolucion: 0.3 cm.
  • Frecuencia 8MHz (setfreq m8) o 16MHz (setfreq m16). 
  • Frecuencia por defecto 4MHz (No se usa ningún comando especial).


  • Nombres de las conexiones del sensor:

    - VCC = +5VDC
    - Trig = Entrada de Trigger de sensor. Emite pulso
    - Echo = Salida de Echo de sensor. Recibe pulso.
    - GND = Tierra 0V.

    La forma de conectarlo puede ser de 2 formas diferentes:

    1. Uniendo Echo y Trigger mediante una resistencia de 4,7K.
    2. Con 2 cables independientes Echo y Trigger.



    Uniendo Echo y Trigger mediante una resistencia de 4,7K o 10K

    A continuación vamos a explicar la primera forma de conexión.
    Para su correcto funcionamiento según el montaje realizado por mí, es necesario soldar una resistencia de 4,7kOhm entre Echo y Trigger.

    HC-SR04 con placa Picaxe
    Resistencia soldada a las conexiones Echo y Trigger.

    HC-SR04


    De sesta forma ahorremos un cable a la hora de conectarlo. Resulta  muy cómodo.

     Conexión a la placa Picaxe

    La conexión a la placa Picaxe es muy simple. Sólo es necesario:

    • Vcc: Positivo de la placa
    • GND: Negativo de la placa
    • Trigger: Conexión que sea reversible (Input y Output) y analógica. En este caso hemos tomado C.1, aunque podríamos haber cogido C.0 o C.2.
    • Echo: Está conectada indirectamente a través de la resistencia de 4,7KOhm o 10KOhm.
    HC-SR04 con placa Picaxe


    1. Conexión con 1 solo cable.
    Esquema de conexiones con Resistencia de 4,7K entre Echo y Trigger

    2. Conexión con 2 cables independientes.
    Con 2 cables independientes.

    Vídeo explicativo

    Esta es una práctica básica para entender el funcionamiento y conexión del sensor a la placa.





    Consideraciones:
    Para programar este sensor con el chip Picaxe 18M2+, lo que hay que hacer es básicamente:

    - La frecuencia por defecto es 4MHz aunque se puede emplear la frecuencia a 8MHz y a 16MHZ. A 8MHz es incompatible con el servo.
    - Enviar un pulso de 2ms mediante pulsout (Trigger).
    - Recibir el pulso durante 1ms (Echo) y almacenar el valor capturado en una variable w0.
    - Operar para transformar ese valor en la distancia al objeto en cm.
    - Visualizarlo en pantalla, si fuera necesario.

    Códigos de programación con distintas frecuencias



    'Control HCSR04 con un cable y Frecuencia por defecto 4MHz

    '(USAR ESTA FRECUENCIA CON SERVO)

    symbol Distancia = w0
    symbol operaciondistancia = w1
    let Distancia = 0
    let operaciondistancia = 0
    ultrasonidos:
    pulsout C.0,2 'Emitimos pulso en la entrada C.0
    pulsin C.0,1,operaciondistancia 'Recibimos pulso
    pause 10
    Distancia=operaciondistancia*5/29 ' Obtenemos la distancia en cm
    debug
    pause 200
    goto ultrasonidos 'Repetimos la medición


    'Control HCSR04 con un cable y Frecuencia 8MHz
    Hacemos el siguiente cambio:
    Distancia=operaciondistancia*5/58 ' Obtenemos la distancia en cm


    'Control HCSR04 con un cable y Frecuencia 16MHz

    Hacemos el siguiente cambio:
    Distancia=operaciondistancia*5/116 ' Obtenemos la distancia en cm



    Programación con todas las frecuencias posibles. Es similar a lo anterior



    Programación con Blockly


    Código con frecuencia 8MHz


    Código con frecuencia 16MHz



    Código con frecuencia por defecto


    La segunda forma de conectarlo es con 2 cables independientes, uno para Trigger y otro para Echo.

    No hay que olvidar que Trigger debe ser una salida. Al ser reversibles muchas de las conexiones del chip 18M2+, podemos utilizar C.1 como salida aunque habitualmente sea una entrada analógica.

    En la siguiente imagen podemos ver cómo conectarlo.

    Con 2 cables independientes.
    'Control HCSR04 con dos cable (Trig y Echo) y Frecuencia por defecto 4MHz 

    '(USAR ESTA FRECUENCIA CON SERVO)

    symbol Distancia = w0
    symbol operaciondistancia = w1
    let Distancia = 0
    let operaciondistancia = 0

    ultrasonidos:
    pulsout C.1,2 'Emitimos pulso en la entrada C.0 (Trig)
    pulsin C.0,1,operaciondistancia 'Recibimos pulso (Echo)
    pause 10
    Distancia=operaciondistancia*5/29 ' Obtenemos la distancia en cm
    debug
    pause 200
    goto ultrasonidos 'Repetimos la medición


    Programa HC-SR04 con 2 cables para Echo y Trigger
    

    Si empleamos como Trigger a cualquier salida habitual como B.0, no habría que configurarla con el comando output, como hemos hecho con C.1.
    Esto es debido a que esas son salidas por defecto (B.0-B.7)  y C.1 es entrada por defecto.

    lunes, 26 de mayo de 2014

    Proyecto Puente levadizo con control automático y paso de vehículos


    Este proyecto realizado por alumnos de 2º Bachillerato consiste en automatizar un puente levadizo con barrera.

      








    El proyecto consta de:

    Un mando a distancia SONY que enviará la señal a un receptor de infrarrojos de fabricación casera, para iniciar todo el proceso de paso del barco. Por tanto el mando simulará al vigilante de la torre de control que visualiza la presencia del barco.

    Mando Sony Picaxe



    Un semáforo que mediante un juego de luces nos avisará de que inmediatamente va a pasar un barco y se va a abrir el puente.



    Una barrera accionada con un servo que permitirá abrir o cerrar el paso de vehículos.



    El propio puente que realizará los movimientos de apertura y cierre mediante 2 motorreductores conectados a cada una de las alas del mismo.

    Motorreductor 5vMotorreductor 5v



    2 conmutadores (Finales de carrera) que serán los encargados de marcar el límite superior e inferior de las alas del puente.


    Finales de carrera

     Un sensor de infrarrojos SHARP que será el encargado de determinar que el barco, efectivamente ha pasado ya por debajo del puente y enviará la orden de bajada de las alas del mismo.

    Sensor infrarrojos Sharp
    Todo esto estará controlado por una placa Picaxe 18M2+ con el driver L293D para el control del sentido de giro de los motorreductores.










    Esquema de conexiones en la placa Picaxe:


    Fritzing con Picaxe
    Esquema de conexiones



    VÍDEO DEL FUNCIONAMIENTO




    Código del programa:








    Código del programa:

    'ENTRADAS
    'C.1 Sensor Mando
    'C.2 Sensor Barco
    'Pin5 Final de carrera Arriba
    'Pin6 Final de carrera Abajo

     'SALIDAS
    'B.0 Led Rojo
    'B.1 Led Verde
    'B.4 Servo de barrera
    'B.6-B.7 Motor del Puente

    'VARIABLES
    'b1 Lee valor del mando
    'b3 Lee el valor del sensor del barco
    'b4 Posición de servo

    COMIENZO:  'Definimos condiciones iniciales de variables y salidas. Evitamos activaciones indeseadas


    b1=1
    b4=185
    low B.0
    high B.1
    low B.3
    Servo 4,off  'Desactivamos el comando servo       
    low B.6
    low B.7

    Mando: 'Estamos continuamente valorando la tecla pulsada
    irin [200], C.1 ,b1
    debug b1
    if b1=4 then goto Inicio  'Si pulsamos el boton 5 comienza todo
    goto Mando


    '%%%%%%%%%%%%%%%%%%%COMIENZA TODO EL CICLO
    Inicio:

    LedRojo:   'El semáforo se pondrá en rojo tras el sonido del zumbador.
    high B.0   'rojo encendido
    low B.1    'verde apagado
    pause 2000


    b4=185
    Servo 4,b4  'Activamos el comando servo

    BajarBarrera:   'Una vez el semáforo en rojo, la barrera se cerrará poco a poco.
    low B.0
    b6=b4*2
    Servopos 4,b4   'Posicionamos en el punto que deseamos. Esta es la fomra exacta cómo se supone que se debe hacer
    debug b4
    high B.1
    let b4=b4-3
    Pause 50
    low B.1
    pause 50
    high B.0
    pause 50
    if b4=80 then goto AbrirPuente
    goto Bajarbarrera


    AbrirPuente:  'Finalmente, cuando la barrera este bajada, se abrirá el puente para que pase el barco.
    Servo 4,off   'Desactivamos el comando servo para evitar problemas con otros como pwmout
    pause 2000
    Do            'Repetir lo mismo mientras que el final de carrera de arriba esté sin pulsar
    low B.6       ' El motor empieza a funcionar y subir el puente.
    high B.7
    pause 30
    low B.6
    low B.7
    pause 60
    loop While pin5=0


    If pin5=1 then goto FinalArriba  'Final de carrera de arriba
    FinalArriba: 'Si llega a tocar el final de carrera superior
    b6=1
    high B.6     'El motor para
    high B.7

    SensorBarco:  'Valoramos mediante el sensor de presencia, si está pasando el barco
    Readadc C.2,b3
    Debug b3
    pause 200

    If b3<100 then goto SensorBarco 'No hay barco
    If b3>100 then goto BajarPuente 'El sensor analógico detecta el barco.


    BajarPuente:   'Inicia el proceso de bajada.
    pause 2000
    Bajando:
    high B.6       'El motor funciona bajando el puente
    low B.7
    pause 30
    low B.6
    low B.7
    pause 100

    If pin6=1 then goto FinalAbajo   'Final de carrera de abajo
    If pin6=0 then goto Bajando  'El puente aún no ha subido


    FinalAbajo:    'Si llega a tocar el final de carrera inferior

    high B.6       'El motor para
    high B.7
    b5=1           'Cambiamos la variable que activa de nuevo el proceso para que no lo haga

    Servo 4,b4  'Activamos el comando servo
    SubirBarrera:'La barrera se abrirá, abriendo nuevamente el tráfico.
    low B.0
    Servopos 4,b4
    debug b4
    let b4=b4+3
    Pause 50
    high B.0
    pause 50
    low B.1
    pause 50
    high B.1
    if b4=185 then goto LedVerde  'Si termina de subir la barrera
    goto SubirBarrera

    LedVerde:
    Servo 4,off  'Desactivamos el comando servo
    high B.1 'Verde encendido
    low B.0  'Rojo apagado


    Goto COMIENZO  'Volvemos al principio a la espera de volver a pulsar el botón de nuevo.



    ENHORABUENA!!!
    Jorge González, Alejandro Mateo, Jose y Antonio Serrano.

    Ies Valle de Leiva
    Jorge González, Alejandro Mateo, Jose y Antonio Serrano.

    Valle de leiva
    Tecnología Industrial II. Curso 2013-14


    domingo, 23 de marzo de 2014

    Practica 19. control con cuenta atrás de display mediante sensor de luz LDR

    Esta práctica consiste en iniciar una cuenta atrás de un display de 7 segmentos controlado mediante un sensor de luz que sérá el encargado de iniciar la cuenta atrás o de pararlo. Para ello será suficiente con interponer la mano entre el foco de luz y el sensor (LDR) y así variar la intensidad de luz que será la mgnitud que controle dicha cuenta atrás.
    Se han empleado las siguientes conexiones:
    Entrada analógica C.0, positivo y negativo.
    Salidas B.0, B.1, B.2, B.4, B.5, B.6, B.7 y positivo.
    Vídeo de la práctica


    Código del programa:

    'Prepara salidas
    output B.0
    output B.1
    output B.2
    output B.3
    output B.4
    output B.5
    output B.6
    output B.7
    Let pins=%11110000 'Nada (Todo apagado)

    lectura:
    readadc 0, b0  'Leemos el valor de la variable b0 en la entrada C0
    debug b0
    if b0>180 then goto inicio 'si la variable es mayor de 180 empieza a contar (poca luz)
    goto lectura  'Si hay mucha luz aún no comienza

    inicio:
    pause 200
    nueve:
    Let pins=%01001111 'número 9
    pause 1000
    readadc 0, b0
    if b0>180 then goto nueve 'Si ponemos la mano y tapamos, se congela el número
    Let pins=%11110000 'Nada (parpadea en blanco antes de cambiar de número)
    pause 200

    ocho:
    Let pins=00001111 '8
    pause 1000
    readadc 0, b0
    if b0>180 then goto ocho
    Let pins=%11110000 'Nada
    pause 200

    siete:
    Let pins=%11001001 '7
    pause 1000
    readadc 0, b0
    if b0>180 then goto siete
    Let pins=%11110000 'Nada
    pause 200

    seis:
    Let pins=00101111 '6
    pause 1000
    readadc 0, b0
    if b0>180 then goto seis
    Let pins=%11110000 'Nada
    pause 200

    cinco:
    Let pins=%01101111 '5
    pause 1000
    readadc 0, b0
    if b0>180 then goto cinco
    Let pins=%11110000 'Nada
    pause 200

    cuatro:
    Let pins=%11011111 '4
    pause 1000
    readadc 0, b0
    if b0>180 then goto cuatro
    Let pins=%11110000 'Nada
    pause 200

    tres:
    Let pins=%01001011 '3
    pause 1000
    readadc 0, b0
    if b0>180 then goto tres
    Let pins=%11110000 'Nada
    pause 200

    dos:
    Let pins=00001010 '2
    pause 1000
    readadc 0, b0
    if b0>180 then goto dos
    Let pins=%11110000 'Nada
    pause 200

    uno:
    Let pins=%11010001 '1
    pause 1000
    readadc 0, b0
    if b0>180 then goto uno
    Let pins=%11110000 'Nada
    pause 200

    cero:
    Let pins=00001101 '0
    pause 1000
    readadc 0, b0
    if b0>180 then goto cero
    Let pins=%11110000 'Nada
    pause 200
    goto lectura  'Comenzamos de nuevo

    martes, 18 de febrero de 2014

    Práctica 14. Cuentarrevoluciones con CNY70

    Esta práctica consiste en la fabricación de un sistema casero para contar las vueltas que da una rueda (r.p.m).
    Para ello se ha empleado un sensor de infrarrojos, el CNY70 al que para que sea efectivo se le ha soldado resistencias tanto en el fotodiodo como en el fototransistor.

    CNY70

    Concretamente se ha empleado, después de varias pruebas:
    - Resistencia R1=180 Ohm
    - Resistencia R2=15KOhm

    CNY70
    

    Con una placa perforada de estaño, hemos fabricado nuestro sensor. En este caso está formado por 2 CNY70 por si fueran necesarios para otra aplicación que los requiere (por ejemplo un robot seguidor de líneas).

    Fabricación CNY70 doble en placa
    Detalle de las conexiones

    Así podemos conectar directamente, con estas clemas de conexión a las entradas correspondientes de la placa Picaxe.
    Recuerdo que sólo se necesita para cualquier CNY70:
    - Positivo.
    - Negativo.
    - Entrada analógica (C.0, C.1 o C.2)

    CNY 70 construccion

    De este modo, mediante este sensor, podemos contar el número de veces que gira la rueda, simplemente poniendo un pequeño papel pegado a dicha rueda de color opuesto al de ella, es decir, ante una rueda con cubiertas negras, pegamos un trozo de papel de color blanco.
    Así el sensor puede contar porque el voltaje se va a 0 o 5v dependiendo del color recibido y esto se traduce en un pulso.
    Este sensor detectará las veces que cambia de color devolviéndonos un valor diferente asociada a una variable.


    Funcionamiento del proyecto.
    El programa básicamente lo que va a hacer es contar el número de vueltas en 6 segundos y extrapolarlo a 60 segundos (1 minuto).
    Para ello hemos pintado una franja blanca en la rueda de color negro. Así cada vez que detecta este color, nos cuenta una revolución.
    Posteriormente lo mostrará en una pantalla LCD.
    Tras esto vuelve a seguir contando por si ha variado dicha velocidad.


    VÍDEO DE LA PRÁCTICA



    Esquema de conexiones en la placa picaxe.


    Conectar CNY70
    Conexiones a la placa Pîcaxe

    La programación se ha realizado con Programming Editor de Picaxe y el código empleado ha sido el siguiente:

    Código del programa en Basic


    Código del programa con Blockly:

    Blockly
    Programación con Blockly

    ' CUENTARREVOLUCIONES CON CNY70
    inicio:
    count C.0,6000,w0        'Contamos durante 6s las veces que cambia de color
    debug w0                       'Mostramos en pantalla la variable w0
    w1=w0*10                    'Multiplicamos por 10 para saber las vueltas en 1 minuto
    '$$$$$Pantalla LCD$$$$$
    serout B.4,n2400,(254,128)                               'Situamos en primera línea
    serout B.4,n2400,(254,1)                                   'Limpiamos pantalla
    pause 30
    serout B.4,n2400,("Velocidad",#w1,"r.p.m")      'Mostramos "Velocidad (variable#w1)-- r.p.m"
    goto inicio                                                          'Volvemos a contar por si ha variado la velocidad