Controlar Motor PAP con PIC16F84

#1
Hola, buscando por la red para aprender busque manuales de programacion y en uno encontre la utilidad de lo que queria, que es mover motores PAP pero resulta que los ejemplos que te da el manual es una programacion para mover de izq a derecha con 2 botones y yo quiero que quede grabada una secuencia y sin la necesidad de apretar botones o solo 1 para que inicie... pensaba algo como que el motor se mueva asia la izq,der,pare,izq,der,para y despues ir agregando si me podrian ayudar se lo estaria agraeciendo.

Saludos
 
#2
No se en que querras programar, pero yo tengo un programa hecho en CCS de un motor PAP que en funcion de una señal analogica, va variando su posicion, osea, si tengo 1 volt se queda en X, si tengo 2 gira 50°, si tengo 3, vuelve 180° y asi unas 30 posiciones distintas... es tan sencillo como cargar una tabla y consultarla.

La tabla la podes grabar en una EEPROM externa, tipo 24C16 y consultarla por I2C, y asi independizarte de grabar la secuencia en el pic....
 
#6
mira, yo para drivear el motor que uso, lo tengo en el puerto C en la parte baja, entonces con este .h que "arme" (copia parcial del ejemplo de CCS), manejo el motor

Código:
#byte port_c = 7

byte const POSITIONS[4] = {0b0101,
                           0b1001,
                           0b1010,
                           0b0110};

void drive_stepper(BYTE speed, char dir, BYTE steps) {
   static BYTE stepper_state = 0;
   BYTE i;

   for(i=0; i<steps; ++i) {
      delay_ms(speed);
      set_tris_c(get_tris_c()|0xF0);
      port_c =((port_c & 0xF0)|(POSITIONS[ stepper_state ]|0xF0));
      if(dir!='R')
         stepper_state=(stepper_state+1)&(sizeof(POSITIONS)-1);
      else
         stepper_state=(stepper_state-1)&(sizeof(POSITIONS)-1);
   }
}
entonces, para moverlo a la derecha, 20 pasos llamo a

drive_stepper(speed,´D´,20)

para moverlo a la izquierda 30

drive_stepper(speed,´R´,30)

asi, armas una rutina por cada motor. Despues, como tomes y leas los datos es transparente, vos a esa funcion le pasas como queres moverlo y cuantos pasos y listo!
 
Última edición:
#7
pero yo necesito que por ej el motor gire 30º para un ldo pare un ratito gire para el otro lado 60º cambie rapidamente asia el otro lado 50º asi... que varie el movimiento pero no necesite el puerto seria que ya kede en el pic
 
#8
bueno, ahi tenes que armar la rutina de traer del puerto serie y grabarlo en una memoria.

tomas los datos del puerto serie, y los almacenas en una memoria IIC, como te comente antes. Una vez que tienes la secuencia almacenada, la vas leyendo secuencialmente, ni mas ni menos....
 
#10
Es un archivo .H para CCS, el cual posee la rutina que genera la se secuencia para el PAP. Tiene un FOR que lo hace tantos steps del PAP le indiques, un comando speed(que es la cantidad de tiempo en ms entre paso y paso) y la direccion, osea, si va padelante o patra.

Después, con otro archivo generas el sistema de secuencias, y cuando tenes que mover el motor, llamas a esta rutina y listo!

El sistema de secuencias tampoco tendria que ser muy dificil, pensandolo un poco, es tomar un dato de velocidad y direccion y decirle cuanto moverse a esta rutina...

algo asi
Código:
#include "TEST-16F684.h"
//#include <2416.C>
#include "i2c.h"
#include "step.h"

int a;
char get_data_eeprom(VOID);

void main()
{
DO
   {
   for(a=0; a<fin_tabla ; a++)
   drive_stepper(speed, dir,get_data_eeprom()); 
}WHILE ( BOTON );
}

char get_data_eeprom(VOID)
{
   CHAR i = 0;
   I2C_start ( );     // Inicio de transmision a EEPROM
   I2C_write ( ADDRESSW );   // Instruccion de escritura de la memoria
   I2C_write ( a );     // Registro a leer
   I2C_start ( );     // Repetir condicion de START
   I2C_write ( ADDRESSR );   // Instruccion de lectura de la memoria
   i = I2C_read ( ); // Leer el registro 
   I2C_noack ( );     // NO enviar ACK para terminar la lectura
   I2C_stop ( );     // Generate stop
   return i;
}
el i2c.h lo podes sacar de aca que lo deje posteado
https://www.forosdeelectronica.com/f24/comunicacion-i2c-problemas-42340/
 
#14
ok ya estube leyendo un poco mas sobre pic y es bastante amplio el contenido en el manual que tengo no tenia nada importante... aver ayudenme a programar el pic y luego lo de las secuencias asi las cambio cuando necesite... me gustaria saber tambien sobre la parte de la electronica solo es mover 2 Motore PAP.

Saludos y gracias por ayudarme.
 
Arriba