Autor Tema: ayuda robot con pic16f72  (Leído 4068 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado aprendix

  • PIC10
  • *
  • Mensajes: 22
ayuda robot con pic16f72
« en: 20 de Octubre de 2008, 02:05:36 »
 :)  construi un brazo robotico  con 5 motors paso a paso y uno  cd,
puedo mover los motores con simples  llamados a tablas pero no he podido controlar la velocidad para que los movimientos sean menos bruscos, tambien  quisiera programarlo para trabaje automatico .
en realidad soy muy nuevo con los pics,  agradezco cualquier colaboracion.

mil gracias
« Última modificación: 28 de Octubre de 2008, 01:59:54 por aprendix »

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: ayuda robot con pic16f72
« Respuesta #1 en: 20 de Octubre de 2008, 09:52:32 »
:)  construi un brazo roborico  con 4 motors paso a paso y uno  cd,
puedo mover los motores con simples  llamados a tablas pero no he podido controlar la velocidad para que los movimientos sean menos bruscos, tambien  quisiera programarlo para trabaje automatico .
en realidad soy muy nuevo con los pics,  agradezco cualquier colaboracion.

mil gracias


Hola aprendix, comentame algo, cuando hablas de controlar la velocidad, ¿acaso no se podría hacer mandando más lentamente los pulsos?

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado aprendix

  • PIC10
  • *
  • Mensajes: 22
Re: ayuda robot con pic16f72
« Respuesta #2 en: 21 de Octubre de 2008, 02:08:39 »
me refiero a que tengo la tabla de medio paso con retardos de 1 ms y los movimientos se ven bruscos
pero si cambio los retardos a 2 ms ya se  ven como muy quedados .
no se si se pueda trabajar que cuando inicie y termine el movimiento sea mas lento.


otra preguntica como trabajo con cnc  con pic :lol:

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: ayuda robot con pic16f72
« Respuesta #3 en: 21 de Octubre de 2008, 17:20:56 »
me refiero a que tengo la tabla de medio paso con retardos de 1 ms y los movimientos se ven bruscos
pero si cambio los retardos a 2 ms ya se  ven como muy quedados .
no se si se pueda trabajar que cuando inicie y termine el movimiento sea mas lento.

Si se puede hacer, pero debes tener en claro que quieres hacer primero.  Podrias tener retardos programados dependiendo de cuantos pasos quieras dar, por ejemplo si quieres dar 100 pasos, podrias dar pasos con demora gradual entre pasos, la demora iría incrementandose a medida que pasan los pasos, de esa forma los primeros pasos serían veloces y los últimos más lentos.  Si por otra parte quieresn iniciar lento ir rápido y luego volver a hacer pasos lentos también lo puedes hacer.  Todo depende de si la cantidad de pasos es fija, o si es programable, etc. 

Poder se puede hacer, ahora bien si es simple o no, habría que analizarlo en detalle, considerando que programas en assembler la cosa se complica y el tiempo para realizarlo también.

Has considerado algún otro lenguaje?



otra preguntica como trabajo con cnc  con pic :lol:

A que te refieres a trabajar con cnc con pic?
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado aprendix

  • PIC10
  • *
  • Mensajes: 22
Re: ayuda robot con pic16f72
« Respuesta #4 en: 28 de Octubre de 2008, 01:58:57 »
hola

para iniciar el robot lo construi para una feria de expoelectronica  de la universidad y ya lo presente y gane un premio.
pero quiero mejorar el programa para que en manual sea mas elegantes o suaves sus movimientosy me gustaria  hacer un programa  que realice movimentos solo.

 la verdad lo poco de se hasta el momento es en assembler y me gustaria desarrollarlo mejor que pueda en este lenguaje.

en cuanto alos pasos  realice un blucle infinito  para control manual de acuerdo alos estados de las entradas 0-3 del puerto c
lo que tu me dices puede servir como para programar un trabajo automatico repetitivo.

me gustaria que me ayudaras con esto
que me sugieres para ambos casos (manual y automatico)

utilizo el puerto c (0-3) como entradas y el puerto b(0-7) como salidas para controlar dos motores pap
los motores son de 200 pasos por vuelta y son cinco
tengo dos targetas  con  1 pic cada uno para los  cinco motores
 agradezco tu ayuda
si quieres te puedo enviar toda la informacion que tengo sobre el proyecto?
a ver si me puedes ayudar con el programa :) :-/


lo cnc es solo que quisiera saber que tan dificil es trabajar con control numerico computarizado utilizando el pic como interface
« Última modificación: 28 de Octubre de 2008, 02:12:18 por aprendix »

Desconectado aprendix

  • PIC10
  • *
  • Mensajes: 22
Re: ayuda robot con pic16f72
« Respuesta #5 en: 28 de Octubre de 2008, 02:05:45 »
este es el programa que estoy utilizando





;ESTE PROGRAMA PERMITE CONTROLAR EL GIRO DE dos MOTOR PASO A PASO A  PASO COMLETO
;          *********** PIC 16F73 ****************
;         *******  WDT=0FF, OSC= XT, CP=OFF   **********
;

__CONFIG   _CP_OFF &  _WDT_OFF & _PWRTE_OFF & _XT_OSC & _BODEN_OFF

   LIST      P=16F72
   INCLUDE  <P16F72.INC>


tmro      EQU      1h         ;CONTADOR DE TIMEPO REAL
pc       EQU      2h         ;CONTADOR DE PROGRAMA
status      EQU      3h         ;EGISTRO DE ESTADOS
ptoa      EQU      5h         ;PUERTOS
ptob      EQU      6h         
r0d       EQU      0dh
ptoc      EQU      07h
trisc      EQU      87h
trisa      EQU      85H         
r10      EQU      10h
R11      EQU      11h

rpo   equ   5
trisb   equ   86h


org      0


inicio

   bsf   status,rpo
   movlw   b'00000000'
   movwf   trisb
   movlw   b'00001111'
   movwf   trisc
   bcf   status,rpo
;***************principa***************

begin   clrf   ptob
   btfsc   ptoc,0
   call   Pasoad
   clrf   ptob
   btfsc   ptoc,1
   call    Pasoat
   clrf   ptob
   btfsc   ptoc,2
   call   Pasoad2
   clrf   ptob
   btfsc   ptoc,3
   call    Pasoat2
   goto    begin
   

   
      
      
      
;********pasoad*******--------------------------------

Pasoad
   

   movlw   b'10010000'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'10000000'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'10100000'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'00100000'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'01100000'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'01000000'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'01010000'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'00010000'
   movwf   ptob
   call   Retardo_1ms
   
      
   return
            
Pasoat      


   movlw   b'00010000'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'01010000'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'01000000'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'01100000'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'00100000'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'10100000'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'10000000'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'10010000'
   movwf   ptob
   call   Retardo_1ms
   
      
   return
   
   
Pasoad2
   

   movlw   b'00001001'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'00001000'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'00001010'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'00000010'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'00000110'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'00000100'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'00000101'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'00000001'
   movwf   ptob
   call   Retardo_1ms
   
      
   return
            
Pasoat2      


   movlw   b'00000001'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'00000101'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'00000100'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'00000110'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'00000010'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'00001010'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'00001000'
   movwf   ptob
   call   Retardo_1ms
   movlw   b'00001001'
   movwf   ptob
   call   Retardo_1ms
   
      
   return
   

   
   INCLUDE  <RETARDOS.INC>   
   end   

Desconectado Javicho

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 570
Re: ayuda robot con pic16f72
« Respuesta #6 en: 28 de Octubre de 2008, 05:59:45 »
Hola:

Para arrancar lento tendrias que hacer cambios en tu codigo como esto por ejemplo:

Pasoad

   movlw   b'10010000'
   movwf   ptob
   call   Retardo_N_ms
   movlw   b'10000000'
   movwf   ptob
   call   Retardo_N_ms
....

Donde "Retardo_N_ms" deberia ejecutar un delay de N milisegundos, este N debe ser un registro que inicialmente lo pones por ejemplo a 50 y luego lo vas decrementando de 1 en 1 hasta llegar a 1 en ese caso este delay recien será 1ms. Este cambio tienes que hacerlo en las otras subrutinas tambien.

Luego el programa principal quedaria asi:

;********************
Inicio
   movlw  .50
   movwf   N   ;recuerda declarar al inicio en la RAM el registro "N"

begin   clrf   ptob
   btfsc   ptoc,0
   call   Pasoad
   clrf   ptob
   btfsc   ptoc,1
   call    Pasoat
   clrf   ptob
   btfsc   ptoc,2
   call   Pasoad2
   clrf   ptob
   btfsc   ptoc,3
   call    Pasoat2

    movf   N,w
    xorlw  .1
    btfss   STATUS,Z
    decf    N,f           ;<- Si N aun no es 1 hacer N=N-1
    goto    begin       ;<- Si N=1 ya no decrementa mas pero sigue en el bucle
;********************

Con este mismo principio puedes implementar una parada del motor de paso lenta.

Javicho.

Desconectado aprendix

  • PIC10
  • *
  • Mensajes: 22
Re: ayuda robot con pic16f72
« Respuesta #7 en: 28 de Octubre de 2008, 18:36:46 »
gracias javicho

empezare a trabajar en esto y luego le cuento

¿ como hago para pegar un video de mi robot para que lo puedan ver?

mil gracias

Desconectado Javicho

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 570
Re: ayuda robot con pic16f72
« Respuesta #8 en: 28 de Octubre de 2008, 19:27:32 »
Una forma seria que lo cuelgues en el youtube y pases el link por aqui.

Javicho.

Desconectado aprendix

  • PIC10
  • *
  • Mensajes: 22
Re: ayuda robot con pic16f72
« Respuesta #9 en: 29 de Octubre de 2008, 02:08:07 »
hay  les dejo el link del video del brazo robotico para quien quiera verlo. :mrgreen:



Desconectado aprendix

  • PIC10
  • *
  • Mensajes: 22
Re: ayuda robot con pic16f72
« Respuesta #10 en: 29 de Octubre de 2008, 02:50:23 »
javicho

cambie el codigo y compilarlo me dice que Symbol not previously defined (Retardo_N_ms)

ya la defini en la ram

CBLOCK
N
ENDC
 
Y NO RESPONDE? :shock:

Desconectado Javicho

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 570
Re: ayuda robot con pic16f72
« Respuesta #11 en: 29 de Octubre de 2008, 13:13:48 »
Y no va a responder ni en mil años porque si te das cuenta "Retardo_N_ms" es una subrutina, date cuenta que haces una llamada (call Retardo_N_ms) entonces Retardo_N_ms es una subrutina a la que le ingresas como dato el valor de N y esta subrutina debe ejecutar "N"milisegundos.

Ahora te toca a ti poner de tu parte y crear esta subrutina que en si es algo muy elemental.

Javicho.


 

anything