Autor Tema: controlar un motor por teclado  (Leído 8320 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado diego_castano01

  • PIC10
  • *
  • Mensajes: 21
controlar un motor por teclado
« en: 21 de Abril de 2006, 21:23:08 »
Hola soy usuario de mas de 1 año pero al parecer perdi mi NICK con el anterior foro.

Bueno, realizo un proyecto (con el PIC16F877A) manejo la herramienta de simulacion PIC SIMULATOR IDE (Gracias al gran compañero Poi5on) y estoy en estos momentos con un gran dilema, tengo un teclado matricial 4X4 y una LCD (DMC 16204 de la casa OPTREX -Fabricante-), buen el tema seria lo siguiente, he logrado gracias a este foro manejar el teclado y crear menus en una LCD eso ya lo manejo bien, pero necesito darle la orden desde el teclado (y que se vea en la LCD) a un motor PAP  (paso a paso) o DC , cualquiera de que se mueva a un lado o al otro durante un tiempo  y sentido de giro introducido por el teclado. El dilema es que no se como hacerlo me podrian orientar en el tema

Muchas Gracias
 :P :mrgreen: :? :)

Desconectado microcom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 568
Re: controlar un motor por teclado
« Respuesta #1 en: 22 de Abril de 2006, 17:56:02 »
lo que te falta no es mucho porque debes preguntar por una tecla definida para que gire en un sentido y seguir preguntando por la otra tecla par invertir el giro
debes utilizar puente h para la etapa de potencia

Desconectado diego_castano01

  • PIC10
  • *
  • Mensajes: 21
Re: controlar un motor por teclado
« Respuesta #2 en: 22 de Abril de 2006, 21:49:16 »
Bueno lo que me comentas realmente es sencillo pero por ejemplo si deseo que gire en ambos sentidos de derecha a izquierda un determinado tiempo (por ejemplo 6 minutos) y que yo pueda decirle al motor PAP que gire a la derecha 15º y a la izquierda 45º como hago esto, sera que debo usar una tabla o algo que no se.

Realmente estoy perdido en el tema. Ahh, no es necesario el puente H solo creo una rutina que invierta el sentido en el que se excitan las bobinas y listo el motor PAP gira en sentido contrario.

Desconectado Yosupicprog

  • PIC10
  • *
  • Mensajes: 36
Con estos TIPS los controlaras
« Respuesta #3 en: 24 de Abril de 2006, 11:12:57 »
Hola mi pana... diego_castano01 .¡¡

Este es un poryecto muy bonito, sobre todo manejar los motores paso a paso  a tus anchas para posicionarlos donde quieras y a la velocidad que quieras, mi consejjo es que antes de meterte de lleno con los motores DC simples con un circuito H debes manejar los paso a paso, debido a que los DC con H los debes mover con modulación de pulso y es muy dificiol si no haces un sistema retroalimentado saber donde esta parado o donde lo dejastes.....

Por lo tanto buscate un motor paso a paso hazlo andar a pie... que sea unipolar... de 4 bobinas.. esos estas en las imperesoras de PC viejas, fotocopiadoras y scanners...
Luego de hacerlos andar a mano en tu proto ya sabes cuales son las ordenes que le tienes que enviar con el pic para que se mueva de izquierda a derecha....
haz pequeñas subrutinas de solo apretar un boton para la derecha y otro para la izq....
luego juega con el tiempod de transcisión entre cada cuadruple pulso enviado al motor para que le veas variar su velocidad.....

En este momento podriamos hablas de que ya puedes moverlo como queras.... recuerda usar un ULN entre el motor y el pic porque el pic no maneja tanta corriente como para mover las bobinas independientes del motorcito..

recuerda estos tips....

  • Usar el ULN para amplificacion de la corriente entre el pic y el motor
  • debes saber de cuantos pasos y grados es el motor, ejemplo 1,8 grados por paso.... este es un motor comun de precision... esto significa que si son 4 bobinas cada una da un paso... y necesitas 200 pasos para dar 360 grados osea una vuelta.... mientras vas rotando pasara 50 veces por cada bobina... en este momento distes 360 grados

DATOS.....

MUY IM PORTANTEPRIMERO APRENDE CON MOTORES UNIPOLARES

Unipolar: Estos motores suelen tener 6 o 5 cables de salida, dependiendo de su conexionado interno (ver figura 2). Este tipo se caracteriza por ser más simple de controlar. En la figura 4 podemos apreciar un ejemplo de conexionado para controlar un motor paso a paso unipolar mediante el uso de un ULN2803, el cual es una array de 8 transistores tipo Darlington capaces de manejar cargas de hasta 500mA. Las entradas de activación (Activa A, B , C y D) pueden ser directamente activadas por un microcontrolador.


esto fue tomado de este link.... http://www.todorobot.com.ar/informacion/tutorial%20stepper/stepper-tutorial.htm

Se que despues que entres alli.... no te sacara nadie de tu cuarto y tu programador...



Ojo.... instruyete bien una vez sigas estos sencillos pasos te encantaran esos motorcitos....¡¡¡



SUERTE...¡¡¡¡ :-/

Ing. Yosu Izaguirre.
Maracaibo Venezuela
yosupicprog@yahoo.com
yosupicprog@hotmail.com
Ing. Yosu Izaguirre R.
yosupicprog@yahoo.com
yosupicprog@hotmail.com
Maracaibo Estado Zulia, VENEZUELA..¡

PROGRAMARLOS ES MI HOBBYE-EL LIMITE ES TU IMAGINACION

Desconectado diego_castano01

  • PIC10
  • *
  • Mensajes: 21
Re: controlar un motor por teclado
« Respuesta #4 en: 24 de Abril de 2006, 23:39:08 »
Hola YOSUPICPROG, de lo que me comentaste me sirvió algoto que no habia tenido en cuenta, realemnte es que ya he trabajado con los motores PAP ( y de los de impresoras, un tal STH-39D150-01 que al parecer es de una EPSON FX-86e pero no se, por lo que no consigo ubicar un datasheet o algo al respecto).

Yo puedo moverlos como tu dices, a la derecha e izquierda con un solo boton y he podido variar la velocidad, eso no me es tan complicado, pero como hago esto al escribir mediante un teclado, el cual es visualizado en un LCD para crear un rutina de que por ejemplo se mueva si presiono uno (1) de derecha a izquierda y luego de este SETUP escribir en la LCD cuantos grados hacia la derecha y cuantos a la izquierda durante un tiempo en n minutos, Lo que quiero es hacerlo mediante una inerfas de usuario (en este caso un LCD).

Vacanisimo que me respondieras.

Me podrias ayudar o no fui tal vez mas claro en mi problema

Desconectado Yosupicprog

  • PIC10
  • *
  • Mensajes: 36
Re: controlar un motor por teclado
« Respuesta #5 en: 25 de Abril de 2006, 10:22:20 »
Hola YOSUPICPROG, de lo que me comentaste me sirvió algoto que no habia tenido en cuenta, realemnte es que ya he trabajado con los motores PAP ( y de los de impresoras, un tal STH-39D150-01 que al parecer es de una EPSON FX-86e pero no se, por lo que no consigo ubicar un datasheet o algo al respecto).

Yo puedo moverlos como tu dices, a la derecha e izquierda con un solo boton y he podido variar la velocidad, eso no me es tan complicado, pero como hago esto al escribir mediante un teclado, el cual es visualizado en un LCD para crear un rutina de que por ejemplo se mueva si presiono uno (1) de derecha a izquierda y luego de este SETUP escribir en la LCD cuantos grados hacia la derecha y cuantos a la izquierda durante un tiempo en n minutos, Lo que quiero es hacerlo mediante una inerfas de usuario (en este caso un LCD).

Vacanisimo que me respondieras.

Me podrias ayudar o no fui tal vez mas claro en mi problema



    Ok ... creo que eres de mi hermana republica la cual adoro Colombia....
Mira...  no se como empezar...  a ver si comprendo.... de algo me deben servir mis 9 años de xperiencia...

Deseas hacer un setup al inicio de cada trabajo para el motor...... donde:

1.- le digas a la DERECHA y XXX grados con XXXX tiempo de stop y XXXX velocidad..¡

2.- le digas a la IZQUIERDA y XXX grados con XXXX tiempo de stop y XXXX velocidad..¡

3.-ARRANCAR las ordenes ENTER..¡¡

Entonces el motor empieza a hacer ese trabajo..... de forma indefinida......
si es asi.... mi pana .... soy brujo....   ESTAS MOVIENDO UNA CAMARA DE SEGURIDAD...¡¡¡¡ jejejejejeejeje...

Bueno Diego, debo hacerte unas preguntas primero....
sabes manejar lecturas desde el teclado, osea lo decodificas????
sabes usar ya la lcd???????
m ueves el motor a tus anchas con el pic????

Si haces todo eso lo que debes es unirlo poco a poco....
empieza moviendo el motor de lado a lado con teclas del teclado, luego al presionar otra que sea mas rapido ....
en este momento tienes control del motor y del teclado, luego le metes la  lcd que te diga cual tecla aprietas......
en ese momento tienes a los tres...
luego colocas un switch aparte (fin de carrera), de manera que cuando el motor se este moviendo libremente y presiones ese switch se pare y gire al otro extremo...

despues de esas pequeñas practicas estaras preparado para culminar tu proyecto... hazme caso... debemos ir paso a paso.. quizas para ti no sea sencillo.. pero cuando logres esto te podre hablar mas crudamente y me entenderas...

Saludos..¡¡¡
Ing. Yosu Izaguirre R.
yosupicprog@yahoo.com
yosupicprog@hotmail.com
Maracaibo Estado Zulia, VENEZUELA..¡

PROGRAMARLOS ES MI HOBBYE-EL LIMITE ES TU IMAGINACION

Desconectado diego_castano01

  • PIC10
  • *
  • Mensajes: 21
Re: controlar un motor por teclado
« Respuesta #6 en: 30 de Abril de 2006, 21:00:51 »
Hola YosuPicprog te cuento que le diste en el punto, mi proyecto es muy parecido al de una camara de seguridad Peroooo los angulos de giro deben de ser los mas fiablesy exactos como sea posible, te cuento se decodificar un teclado de 4X4 (de esos matriciales tipo telefonico) y se manejar la LCD, de hecho tengo gran parte del menu de usuario de mi proyecto ya realizado, hasta ahora he podido mover un motorcito paso a paso de un lado al otro, pero no he podido hacerlo desde el menu de usuario no se de que forma realizar esta tarea Me ayudas

Chaooolin

Que VIVA Colombia

Desconectado Yosupicprog

  • PIC10
  • *
  • Mensajes: 36
Re: controlar un motor por teclado
« Respuesta #7 en: 08 de Mayo de 2006, 16:51:38 »
Haber bacan.....

Cuando te refieres a un menu (ero no he podido hacerlo desde el menu de usuario no se de que forma realizar esta tarea Me ayudas)... no te entiendo.....

Mira ya que sabes manejar todos los perifericos que deseas, solo debes unirlos... para llegar a hacer el menú....
el menu simplemente le dira al usuario:
Indique velocidad de giro a la izquierda (seria un registro que hace el tiempo de retardo entre paso y paso  sencilllo.. verdad)
Indique ángulo máximo de giro a la izquierda (seria otro registro el lleva el valor máximo de giro a la izq, osea el motor arranca a girar a la izquierda y se detiene alli donde le indicastes para arrancar a la derecha)

Indique velocidad de giro a la derecha (seria un registro que hace el tiempo de retardo entre paso y paso  sencilllo.. verdad)
Indique ángulo máximo de giro a la derecha (seria otro registro el lleva el valor máximo de giro a la der, osea el motor arranca a girar a la derecha y se detiene alli donde le indicastes para arrancar a la izquierda)

luego de estos pasos le das a que empiece a arrancar el programa a trabajar con los parametros que le introdujistes...¡¡

Me imagino que seria algo asi, para mi seria sencillo porque lo he hecho o me he acercado, lo que tendria es que sentarme un par de horas..¡¡¡

Mi pana cualquier duda por favor comentame....¡¡¡ es un proyectico lindo... hechale pierna y cabeza...¡¡
Ing. Yosu Izaguirre R.
yosupicprog@yahoo.com
yosupicprog@hotmail.com
Maracaibo Estado Zulia, VENEZUELA..¡

PROGRAMARLOS ES MI HOBBYE-EL LIMITE ES TU IMAGINACION

Desconectado diego_castano01

  • PIC10
  • *
  • Mensajes: 21
Re: controlar un motor por teclado
« Respuesta #8 en: 08 de Mayo de 2006, 17:20:16 »
Si mas o menos es como lo planteas lo que no se hacer (se me dificulta) es como por ejemplo si escribo 15 en la LCD (para decirle a el motor que gire 15º de giro) no se como hacer esto con un registro como tu dices, yo logro identificar la tecla pulsada del teclado matricial, pero no se es como hacer la interfaz propiamente dicha (lo de si yo escribo algo en la LCD sea lo que el hardware ejecute).
 
si de pronto no me entiendes yosupicpro entonces podriamos empezar a hablar ya con codigo, me dices si estas dispuesto a ayudarme con mi codigo.

Vacano que me ayudes, se que la dudilla puede ser algo tontilla,pero yo he aprendido PIC como se dice CACHARREANDOLE
Gracias

Desconectado Yosupicprog

  • PIC10
  • *
  • Mensajes: 36
Re: controlar un motor por teclado
« Respuesta #9 en: 12 de Mayo de 2006, 17:18:09 »
Diego,

Para hacer esas conversiones desde el teclado hasta la orden que el pic le tiene que dar al motor, Lo primero que debes es aveiguar es de cuantos grados por paso es tu motor... si puedes y lo tienes mandame el datasheet del motor para orientarte mejor, de todos modos trataré de explicarte desde aqui....

Un motor comun que se puede encontrar en algunas impresoras es de 1,8* o de 2,5* etc por paso...
Un ejemplo en este momento es hacer que un motor de 1,8 grados por paso de 360 grados osea una vuelta completa..

siendo esto asi, el motor deberia dar 200 pasos fijate que un paso son 1,8 grados entonces 360 grados son 200 pasos...

al tener esos datos es facil sacar las cuentas por ejemplo tu puedes colocar al motor en 18 grados si le mandas a dar 10 pasos... para colocarlo en 15 exactamente podrias pero te complicarias pero si le dices que de 8 pasos se colocará en 14,4 grados... y asi sucecivamente....

una subrutina para mover estos motorcitos sin muchas complicaciones seria:
ejemplo si el motor esta conectado al puerto D desde D0-D3:

     D0     D1     D2     D3
      0       0       0        1
      0       0       1        0
      0       1       0        0
      1       0       0        0

AL CONCLUIR ESTO EL MOTOR HABRA GIRADO 1,8 GRADOS, esto tambien depende del tipo de motor, donde un paso es una de esas 4 ordenes OK?

hacia el otro lado seria:

     D0     D1     D2     D3
      1       0       0        0
      0       1       0        0
      0       0       1        0
      0       0       0        1

Entonces tu solo debes sacar las cuentas de cuantas veces debes hacer esto para que el motor se posicione donde quieres...

un ejemplito

primero debes carcar en W la cantidad de 1,8 grados que quieres que de el motor, en este caso se supone que lo quieres colocar en 180 grados de su posición inicial, osea donde se encuentre...¡¡

cargas en W el valor ingresado desde el teclado, caes (call muevelo) en esta subrutina y lo demas es cuento de niños

muevelo  movwf       grados


again     bcf             portd,3
             bsf              portd,0
             call              retard
             bsf              portd,1
             bcf              portd,0           
             call             retard
             bsf              portd,2
             bcf              portd,1           
             call             retard
             bsf              portd,3
             bcf              portd,2           
             call             retard

             decfsz         grados,1
             goto             again
             return

             Aqui ya dio los pasos que tu querias


Lo que debes hacer entonces es tomar un valor desde el teclado externo, pasarlo a W y entrar en esta subrutina.....
ojo Retard es una subrutina de tiempo o retardo como le llames la cual hace que la transicion entre los pasos internos del motor no sea lo enormemente rápida como para que nisiquiera se mueva el motor.....

cuando logres hacer esto de derecha a izquierda a los grados que quieras te sentiras mejor.... jajajajajaja luego te diré como cambiarle la velocidad del giro dese el teclado también, pero primero haz esto... espero no te desiluciones y sigas trabajando en esto.¡¡






Ing. Yosu Izaguirre R.
yosupicprog@yahoo.com
yosupicprog@hotmail.com
Maracaibo Estado Zulia, VENEZUELA..¡

PROGRAMARLOS ES MI HOBBYE-EL LIMITE ES TU IMAGINACION

Desconectado diego_castano01

  • PIC10
  • *
  • Mensajes: 21
Re: controlar un motor por teclado
« Respuesta #10 en: 20 de Mayo de 2006, 00:01:08 »
Gracias por tu respuesta lo voy a intentar, ultimamente he tenido problemas con mi cuenta de internet.
Gracias

QUE VIVA COLOMBIA CARAJO