Autor Tema: como variar la velocidad de un motor DC de proteus a través de labview  (Leído 22374 veces)

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

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: como variar la velocidad de un motor DC de proteus a través de labview
« Respuesta #15 en: 26 de Septiembre de 2010, 18:34:09 »
Por lo que tengo entendido se utiliza 1kHz.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado robotic

  • PIC12
  • **
  • Mensajes: 55
Re: como variar la velocidad de un motor DC de proteus a través de labview
« Respuesta #16 en: 26 de Septiembre de 2010, 19:14:59 »
Por lo que tengo entendido se utiliza 1kHz.

entonces se debe Generar de una onda cuadrada de 1Khz. El periodo es T=1/1Khz = 1ms
Durante 0.5ms la señal estara a 1 y durante 0.5ms a 0, por tanto hay que hacer que el temporizador se desborde cada 0.5ms.

 La formula general para obtener una duración en micro-segundos es:                                                                     
     
 TMR0 = 256 - round[ FOSC(Mhz)*Dur(us)/(4*DIV) ];                   
  donde:                                                                   
  -FOSC es la frecuencia del cristal de cuarzo en Mhz.   
  -DIV = Valor del divisor para el prescaler. Puede ser 2,4,8,16,32,64,128,256                                                     
  -Dur = Duracion en micro-segundos

RESULTADO:                                                               
 Para obtener una señal de 1Khz asignamos los siguientes valores:     
 Divisor: 16 --> PS2=0, PS1=1, PS0=1        ¿que quiere decir esto?                           
 TMR0 = 100                                              ¿que quiere decir esto?

voy bien o no?

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: como variar la velocidad de un motor DC de proteus a través de labview
« Respuesta #17 en: 26 de Septiembre de 2010, 19:48:21 »
No. ¿Porque el timer0? La base del PWM es el timer2. Primero se establece la frecuencia con el timer 2, entonces debes calcular para que de 1ms (Después, para variar la tensión sobre el motor se cambia el ciclo de trabajo). En el datasheet está la siguiente formula (Tosc=1/Fosc ):
No contesto mensajes privados, las consultas en el foro

Desconectado robotic

  • PIC12
  • **
  • Mensajes: 55
Re: como variar la velocidad de un motor DC de proteus a través de labview
« Respuesta #18 en: 26 de Septiembre de 2010, 20:17:03 »
encontre esto que podria servir para calcular el 1ms en el timer 2
http://www.micro-examples.com/public/microex-navig/doc/097-pwm-calculator.html
« Última modificación: 26 de Septiembre de 2010, 22:25:17 por robotic »

Desconectado robotic

  • PIC12
  • **
  • Mensajes: 55
Re: como variar la velocidad de un motor DC de proteus a través de labview
« Respuesta #19 en: 26 de Septiembre de 2010, 20:51:00 »
voy entendiendo un poco mas

para calcular 1 KHZ se hace esta formula

PWM Period = [(PR2)+ 1]•4•TOSC •(TMR2 Prescale Value)

esto nos sirve para saber el PR2 que es el registro del periodo para la frecuencia
Con 4:
PR2= [(4MHz)/(1KHz)*(4)*(4)]-1

PR2=249

Con 4 sirve.

Tosc = 1/Fosc =  1/4mhz =  250

TMR2 prescale value = 4


PWM Period = [(PR2)+ 1]•4•TOSC •(TMR2 Prescale Value)
PWM Period = [(249)+ 1]•4•250 •(4)=1000000


estaría esto bien?
« Última modificación: 26 de Septiembre de 2010, 23:50:05 por robotic »

Desconectado robotic

  • PIC12
  • **
  • Mensajes: 55
Re: como variar la velocidad de un motor DC de proteus a través de labview
« Respuesta #20 en: 26 de Septiembre de 2010, 22:35:18 »
La base de tiempos es el Timer2 más dos bits adicionales para tener los 10.
El periodo se determina con el registro PR2, ya que cuando TMR2=PR2:
Se borra el TMR2
Se pone a “1” el pin CCP1
Se pasa el valor del CCPR1L al CCPR1H (para evitar glitch)


Desconectado robotic

  • PIC12
  • **
  • Mensajes: 55
Re: como variar la velocidad de un motor DC de proteus a través de labview
« Respuesta #21 en: 26 de Septiembre de 2010, 23:20:20 »
y si todo fuera asi como lo he hecho, como tendria que decirle al compilador que cuando el labview me envie un numero por el dial me cambie la frecuencia de salida?

1 = 100 mhz
2 = 200 mhz
3 = 300 mhz
4 = 400 mhz
5 = 500 mhz
6 = 600 mhz
7 = 700 mhz
8 = 800 mhz
9 = 900 mhz

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: como variar la velocidad de un motor DC de proteus a través de labview
« Respuesta #22 en: 27 de Septiembre de 2010, 00:06:02 »
Y al final como es la sentencia para fijar la frecuencia? Veo que hiciste un Copy&Paste de los hilos, pero ningun razonamiento  :?
No contesto mensajes privados, las consultas en el foro

Desconectado robotic

  • PIC12
  • **
  • Mensajes: 55
Re: como variar la velocidad de un motor DC de proteus a través de labview
« Respuesta #23 en: 27 de Septiembre de 2010, 00:11:32 »
Y al final como es la sentencia para fijar la frecuencia? Veo que hiciste un Copy&Paste de los hilos, pero ningun razonamiento  :?
esta es la formula de la frecuencia que saque, la que me mandaste en una imagen

PWM Period = [(PR2)+ 1]•4•TOSC •(TMR2 Prescale Value)
PWM Period = [(249)+ 1]•4•250 •(4)=1000000

Desconectado robotic

  • PIC12
  • **
  • Mensajes: 55
Re: como variar la velocidad de un motor DC de proteus a través de labview
« Respuesta #24 en: 27 de Septiembre de 2010, 00:50:22 »
creo que deberia ser algo asi pero no me deja compilarlo

#include <proyecto_pwm.h>
#int_RDA
setup_ccp1(CCP_PWM);
setup_timer_2(T2_DIV_BY_16,255,1);
void  RDA_isr(void)
{
set_pwm1_duty(valor);
valor = 255;
set_pwm1_duty(valor);
}

void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DIV_BY_16,255,1);
   setup_ccp1(CCP_PWM);
   set_pwm1_duty(0);
   setup_comparator(NC_NC_NC_NC);
   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);

   //TODO: User Code

}

Desconectado robotic

  • PIC12
  • **
  • Mensajes: 55
Re: como variar la velocidad de un motor DC de proteus a través de labview
« Respuesta #25 en: 27 de Septiembre de 2010, 10:44:10 »
me pregunto si para leer los datos del puerto rs232 se deben colocar las funciones dentro de
void  RDA_isr(void)

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: como variar la velocidad de un motor DC de proteus a través de labview
« Respuesta #26 en: 27 de Septiembre de 2010, 10:44:40 »
Que frecuencia de cristal tienes, o a que frecuencia piensas trabajar el PIC. Con eso sacas Tosc (Periodo de la señal del oscilador)

No contesto mensajes privados, las consultas en el foro

Desconectado robotic

  • PIC12
  • **
  • Mensajes: 55
Re: como variar la velocidad de un motor DC de proteus a través de labview
« Respuesta #27 en: 27 de Septiembre de 2010, 10:49:54 »
Que frecuencia de cristal tienes, o a que frecuencia piensas trabajar el PIC. Con eso sacas Tosc (Periodo de la señal del oscilador)



hola suky la frecuencia de los cristales es de 4 mhz y en la formula del tosc me sale esto

Tosc = 1/Fosc =  1/4mhz =  250

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: como variar la velocidad de un motor DC de proteus a través de labview
« Respuesta #28 en: 27 de Septiembre de 2010, 10:57:03 »
250 que? Tiene que se con unidades para hacer un calculo correcto.
PWM Period = [(249)+ 1]•4•250 •(4)=1000000

Entonces si acá determinas usar PR2 en 249 y el preescales en 4, porque haces esto:
setup_timer_2(T2_DIV_BY_16,255,1);


 :?

Otra cosa, setup_ccp1(CCP_PWM) y setup_timer_2(T2_DIV_BY_16,255,1) no pueden ir en cualquier lado, deben ir dentro de una función. Como es inicialización del módulo, lo adecuado sería al principio del main.


Una vez determinada la frecuencia, tienes que calcular cual es la resolución de tu PWM. En el datasheet hay una formula. Si te da mayor o igual a 10, entonces el rango de valor (Tu variable) es de 0 a 1023, pero si la resolución es menor el rango también disminuye.

Con eso ya puedes realizar simulaciones en proteus para determinar si la frecuencia es la correcta, que pasa si cambio valor, ect.... Pruebe, analice, estudie....


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado robotic

  • PIC12
  • **
  • Mensajes: 55
Re: como variar la velocidad de un motor DC de proteus a través de labview
« Respuesta #29 en: 27 de Septiembre de 2010, 11:20:52 »
Tosc = 1/Fosc =  1/4mhz =  0.00000025

0.25us

así debería ser?
setup_timer_2(T2_DIV_BY_4,255,1);
« Última modificación: 27 de Septiembre de 2010, 11:29:55 por robotic »


 

anything