Hola q tal.

Tengo unos problemas con el módulo BS2,en concreto con 2 sensores y un motor que he puesto en dicho módulo, vereis... quiero q el servo gire cuando el sensor A (bumper) esté desactivado (0) y que cuando se active (1) se pare, pero no logro q lo haga, en principio, empieza a girar, pero cuando activo el sensor, no se para, si no q sigue girando, eso si, si dejo activado el bumper, y enciendo el BS2, entonces no gira el motor (algo estoy haciendo mal). Respecto al otro sensor (Bumper B), lo voy a utilizar, para q cuando se active el bumper A y se pare al motor, éste empieze a girar en sentido contrario, hasta q se active el bumper B y se pare de nuevo el motor.

A ver si me podeis dar alguna pista, porque no me sale y lo necesito hacer lo antes posible.
Un saludo desde España a todos los aficionados de la robótica.

Andrés

Visitas: 311

Responde a esto

Respuestas a esta discusión

Hola Andrés,
Mira de aportar el listado del código que estás utilizando. ¿Que tipo de servo estás utilizando?

Mientras tanto lo miramos, echa un vistazo a partir de la pág. 58 del manual "Robotics with the Boe Bot v2.2 (379pp / 7,62MB)":
http://www.parallax.com/Portals/0/Downloads/docs/prod/robo/Robo2.2-...
Lo ideal sería llevar a cabo el calibrado de los servos, si no lo has hecho ya.

Una vez calibrados, a partir de la página 76 del mismo manual tienes códigos de ejemplo para controlar cada uno de los servos. Sólo si pasas las pruebas, intentaría ya con tu proyecto.

En la pág. 85 tienes un ejemplo parecido a tu desarrollo...

Un saludo.
Hola Lorenzo,

Estoy utilizando servos de rotación continua de parallax.

a modo de ejemplo, te pongo dos trozo de codigo para q orientes un poco.

' {$STAMP BS2}
' {$PBASIC 2.5}
' queremos que si esta abierta la pinza esta se cierre hasta activar el micro
BUMPERS VAR Bit
BUMPERS = IN1

DO
IF(BUMPERS=0) THEN 'SI BUMPER DESACTIVADO(PINZA ABIERTA)
PULSOUT 14,755 'CIERRA PIZA
PAUSE 20
ELSE 'CUANDO SE ACTIVA EL BUMPER
PULSOUT 14,750 'SE PARA LA PINZA
PAUSE 20
ENDIF
LOOP

en este otro trozo queremos que cuando la pinza este cerrada, se vuelva a abrir hasta q se active el sensor que detecta q la pinza esta en su maxima apertura.

' {$STAMP BS2}
' {$PBASIC 2.5}
SENSORREED VAR Bit
SENSORREED = IN2

DO
IF(SENSORREED=1)THEN 'SI EL REED ESTA DESACTIVADO (PINZA CERRADA)
PULSOUT 14,765 'SE ABRE LA PINZA
PAUSE 40
ELSE 'LA PINZA ESTA ABIERTA (REED ACTIVADO)
PULSOUT 14,755 'PARA LA PINZA
PAUSE 20
ENDIF
LOOP

Gracias por contestar Lorenzo.
Lorenzo M. Oliver dijo:
Hola Andrés,
Mira de aportar el listado del código que estás utilizando. ¿Que tipo de servo estás utilizando?

Mientras tanto lo miramos, echa un vistazo a partir de la pág. 58 del manual "Robotics with the Boe Bot v2.2 (379pp / 7,62MB)":
http://www.parallax.com/Portals/0/Downloads/docs/prod/robo/Robo2.2-...
Lo ideal sería llevar a cabo el calibrado de los servos, si no lo has hecho ya.

Una vez calibrados, a partir de la página 76 del mismo manual tienes códigos de ejemplo para controlar cada uno de los servos. Sólo si pasas las pruebas, intentaría ya con tu proyecto.

En la pág. 85 tienes un ejemplo parecido a tu desarrollo...

Un saludo.
Por cierto Lorenzo.

Lo del calibrado de los servos lo tengo hecho, lo q pasa es q este último, no se porque se descalibro..... y como lo tenia montado en un sitio q me era imposible de quitar, busque cual era el pulso para q se mantuviera quieto (755).

Un saludo
Vaya, parece que en este foro tampoco responde la gente...
Sera una pregunta muy dificil xd...
Hola Andrés,
Como podrás ver en las otras discusiones, sí que se responde y hay participación. Pero dame tiempo para montar una tarjeta con un par de servos y pruebo tu código. Aparentemente yo no veo nada extraño en tu listado, pero debo probarlo.
Hazte cargo de que la mayoría de los que se apuntan en esta red son gente que están aprendiendo como tú, y los que podemos ayudarte no nos es posible acceder al sito tanto como quisiéramos.
Un poco de paciencia y comentamos cosas...



Andrés Lorite dijo:
Vaya, parece que en este foro tampoco responde la gente...
Sera una pregunta muy dificil xd...
Andrés,
Tengo que suponer que, para el sensor, tienes un circuito similar a este:


Si me confirmas esto último, mira de hacer algunos cambios en tu código, que simplifica un poco más lo que quieres hacer, para la 1ª fase:

' {$STAMP BS2}
' {$PBASIC 2.5}
' queremos que si esta abierta la pinza esta se cierre hasta activar el micro
BUMPERS VAR Bit
BUMPERS = IN1

DO
IF (IN1=0) THEN
GOSUB marcha
ENDIF
LOOP

marcha:
PULSOUT 14, 755
PAUSE 20
RETURN

Con este código conseguimos que la subrutina "marcha" se ejecute siempre que la entrada en PIN 1 ("IN1") esté desactivada. En el bucle comprobamos directamente el estado de esa entrada (mejor que no asignes previamente su estado a la variable "BUMPERS" porque no funciona).

Mientras la entrada permanezca desactivada, el servo girará indefinidamente; en caso contrario, el servo para. Para esto no es necesario especificar código para que se pare; sencillamente el servo no recibirá pulsos para moverse.
Para la 2ª fase, tan sólo tienes que seguir la misma idea para controlar directamente la otra entrada ("IN2").
Intenta utilizar subrutinas, porque en este tipo de proyectos es normal reutilizar parte del código.

Y como es habitual en circuitos de activación/desactivación utiliza unos "testigos", esto es, un par de LEDS que te muestren que efectivamente los lazos están abiertos o cerrados; esto ayuda mucho a detectar posibles errores, incluso cuando uno testea el código. Te paso un esquema ejemplo para esto:

Gracias Lorenzo,

Este fin de semana lo pruebo y te cuento algo.
Lo de los Leds, los tengo puestos y lo del esquema para el sensor bumper es correcto.

Saludos

Lorenzo M. Oliver dijo:
Para la 2ª fase, tan sólo tienes que seguir la misma idea para controlar directamente la otra entrada ("IN2").
Intenta utilizar subrutinas, porque en este tipo de proyectos es normal reutilizar parte del código.

Y como es habitual en circuitos de activación/desactivación utiliza unos "testigos", esto es, un par de LEDS que te muestren que efectivamente los lazos están abiertos o cerrados; esto ayuda mucho a detectar posibles errores, incluso cuando uno testea el código. Te paso un esquema ejemplo para esto:

Hola Lorenzo,

Perfecto, con el codigo que me has pasado todo va bién, la pinza se cierra, hasta activar el bumper.

El problema lo tengo ahora a la hora de abrir la pinza. Tengo un sensor reed (se activa con un iman) que cuando la pinza esta abierta, este permanece en reposo, en cuyo caso está activado (1) y cuando la pinza esta cerrada, un iman lo desactiva (0). Pero el problema es q sigue intentando abrir la pinza y el motor no para. He probado que funcione bién el reed y si lo hace, de echo lo pruebo con este trozo de codigo:
DO
REED=IN2

DEBUG HOME, "REED=", BIN1 REED
IF(REED=1) THEN 'PINZA CERRADA, REED ACTIVADO
HIGH 7
ELSE 'PINZA ABIERTA, REED DESACTIVADO
LOW 7
ENDIF
PAUSE 100

LOOP


Este es el código que utilizo para abrir la pinza:

REED VAR Bit
REED = IN2

DO
IF (REED=1) THEN 'SI EL REED ESTA ACTIVADO, PINZA CERRADA
GOSUB ABRE 'ACTIVA EL SERVO Y ABRE PINZA
ENDIF 'EN CASO CONTRARIO, SIGUE PARADO
LOOP

ABRE:
PULSOUT 14, 765
PAUSE 20
RETURN

Asi tengo conectado el reed:

Un saludo Lorenzo
Lorenzo, no hagas caso a lo q te he puesto ,que me he liado un poco con el estado en reposo del reed al hacer el codigo.

Cuando lo revise te comentare algo, porque ahora tengo dudas y creo q ha sido fallo mio al programar.

Gracias por todo
Problema solucionado, ahora abre y cierra perfectamente, muchas gracias Lorenzo.

Un saludo,
Andrés
Ok.
Sé buen chico y publica algunas fotos o algún video de tu proyecto...
;-)



Andrés Lorite dijo:
Problema solucionado, ahora abre y cierra perfectamente, muchas gracias Lorenzo.

Un saludo,
Andrés

Responder a debate

RSS

Cursos online y tutoriales


(se requiere registro previo gratuito en PortalArduino.com)

Mantenimiento del sitio

© 2024   Creado por Lorenzo M. Oliver.   [Imágenes licenciadas por Depositphotos.com] Tecnología de

Emblemas  |  Reportar un problema  |  Términos de servicio