05-11-2015 01:45 PM - editado 05-11-2015 01:59 PM
un saludo a todos
soy nuevo en este programa y mi intencion es crear un brazo robotico controlado por labwiew y arduino, he hecho una pequeña prueba la dejo abajo (no se asusten ya he dicho ue soy nuevo) mis dudas son las siguientes :
-1 como puedo hacer para grabar posiciones y luego reproducirlas, osea muevo el brazo a la posicion y al darle a un boton que guarde la posicion y asi sucesivamente hasta crear todos los movimientos y luego reproducirlos
-2 como puedo cambiar los pulsos que envia al servo, por que al poner el dial a 0 o 180 se ve el servo forzado y no es la posicion exacta ejempolo el rango va 540 a 2400 us quiero ponerlo de 600 a 2300
-3 como controlo la velocidad de cada sevo, esto seria para hacer los movientos mas suaves y que vallan los servos sincronizados ejemplo un servo tiene que moverse de 80 a 180 y otro de 0 20 simultaneamente, entonces un servo llegaria a la posicion final antes que el otro y lo que yo pretendo es que lo hagan en el mismo tiempo sin importal la distancia a la que debe moverse cada servo
espero haberme explicado bien un saludo y gracias
PD no espero que me hagan el codigo con que pongan algun ejemplo o algun enlace donde lo explique me valdria
el 05-13-2015 02:06 PM
subo el codigo correjido aver si alguien se anima a hecarme una mano
el 09-29-2015 02:17 PM
Hola, esta es la primera vez que me inscribo en paginas de este tipo, bien por falta de tiempo, trabajo, niños, proyectos, arduino....
Aqui tienes tus soluciones.
1º) Como poder mover servos y grabar posiciones?
Solucion: Abres el servomotor, y localizas el dial del potenciometro que tiene en su interior, y le sueldas un cable muy fino. Asi tienes un servo con 4 hilos.
Este cable lo colocas en una entrada analogica de arduino A0(x ejemplo).
Haces un`pqueño programa en arduino que lleve al servo a 0 grados y consultas esta entrada y la haces salir por el puerto serie. Asi veras el valor minimo que da
el`potenciometro y los mismo para 180 grados y asi tienes los limites.
Bien teniendo los limites puedes mapear el valor de la analogica para saber en que grado se encuentra el servo:
PosicionServomotor= map(ValorMinimo,vlormaximo,0,180);
de esta forma PosicionServomotor sera un valor comprendido en el rango del servo.
Despues lo grabas en la eeprom o en variables, como quieras.
2º) Como conseguir que los servos 1,2,3,4,5,n... lleguen al mismo tiempo viniendo cada uno de un sitio cualquiera?
Solucion: teorema bresenham. Busca algun ejemplo, aunque sea en otro lenguaje y lo adaptas al lenguaje arduino, yo lo hice y fue tremendo. Para que te hagas una idea, imaginate que para mover 6 servos y cada uno en una posicion inicial hacia una posicion final tienes que hacer tantos movimientos para todos los servos tal que asi...
Inicial
S1 160
S2 89
S3 32
S4 180
S5 100
S6 0
Final
S1 170
S2 85
S3 30
S4 182
S5 90
S6 100
Solucion: S1 160,161,162,163,164,165,166,167,168,169,170
S2 89, 89 , 88, 88 , 87, 87 , 86, 86, 85, 85 , 85
S3 ....,.
Saludos