Autor Tema: modulo PWM en C18  (Leído 2893 veces)

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

Desconectado CsDFiV

  • PIC10
  • *
  • Mensajes: 35
modulo PWM en C18
« en: 12 de Marzo de 2009, 12:58:27 »
bueno una pequeña intoduccion al tema de que es lo que quiero hacer es la siguiente:
Estoy intentando hacer una pequeña automatizacion con nuestro amiguito de 100 pines el pic 18F97J60 el cual contiene un modulo ethernet que realmente es de gran ayuda para hacer monitoreo a distancia sobre todo en esta automatizacion que es para una casa comun y corriente pero que tendra la gran ventaja de que podremos tener un control total via internet incluso desde nuestros telefonos celulares. Ahora el problema se ha planteado en lo siguiente, quiero hacer un control de posicion en una ventana que se abrira y cerrara por medio de un motor de Corriente Continua y el driver del mismo es un puente H con mosfet. Pero para definir la posicion de la ventana en un momento X necesitaba un elemento de presicion y en este caso como tengo a mano un potenciometro multivueltas de 50K he decidido utilizarlo para hacer dicho control de posicion.
Ahora bien, he leído las guías que han posteado en los tutoriales pero no me han dejado muy en claro como utilizar perfectamente un canal analogico y mucho menos el pwm.
La funcion principal que tendria que realizar microcontrolador creo que tendria que plantearse de la siguiente manera

AN9 = canal analogico a usarse
potx = valor del canal analogico en este caso AN9
posx = valor de la posicion para determinar el lugar a donde debe llegar el potenciometro

entonces tendria que hacer lo siguiente para el control de posicion

si potx < posx entonces RH0 = 0 y RH1 = 1
si potx > posx entonces RH0 = 1 y RH1 = 0
si potx = posx entonces RH0 = 0 y RH1 = 1

creo que hasta ahi se esta entendiendo mas o menos la idea del control de posicion por medio del potenciometro ahora la pregunta del millon.

como debo hacer para hacer un control de velocidad del motor con el modulo PWM del pic tomando como referencia lo siguiente

si la diferencia entre potx y posx es >= al 20% de posx el PWM no trabaja
pero si el resultado de dicha diferencia es menor al 20% a medida que ese 20% disminuye el pwm debe ir disminuyendo su frecuencia para que el motor vaya mas lento.

como debo hacerlo??

espero respuestas desde ya muchas gracias!


Saludos!

CsDFiV

Desconectado CsDFiV

  • PIC10
  • *
  • Mensajes: 35
Re: modulo PWM en C18
« Respuesta #1 en: 12 de Marzo de 2009, 15:50:41 »
luego de pensar un poco se me ha ocurrido tambien que este problema puede ser resuelto de la siguiente manera utilizando un poco de matematicas

por ejemplo, como he dicho en el mensaje anterior podria usar un modulo PWM pero quizas pueda simplificar dicho proceso por el siguiente medio que seria haciendo oscilar un pin de salida del microcontrolador por ejemplo el RJ0
entonces a medida que la diferencia entre potx y posx es menor entonces RJ0 oscilara a una velocidad menor por lo tanto la velocidad del motor disminuira notablemente de esa manera tambien podria resolverse pero la pregunta vuelve a tener el premio de un millon de dolares

como puedo hacer para plantear que la velocidad de oscilacion de RJ0 sea proporcional a la diferencia entre potx y posx


Gracias!


Saludos!

CsDFiV

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: modulo PWM en C18
« Respuesta #2 en: 12 de Marzo de 2009, 19:01:55 »
Como estás utilizando un puente H, puedes utilizar dos salidas pwm del pic, y conectas uno a una pierna y el otro a la otra. Para mover en una dirección el motor, incrementas el ciclo de trabajo de una pierna y disminiuyes el de la otra, con esto logras variar el valor medio de tensión en el motor y girará para un lado u otro, dependiendo de que pierna tiene el ciclo de trabajo mayor. Cuando los dos pwm tengan el mismo ciclo de trabajo el motor dejará de moverse. Ahora lo que tienes que hacer es que ese ciclo de trabajo sea proporcional a la diferencia entre la posición actual de la ventana y la posición deseada.
No te aconsejo que trates de controlar el motor variando la frecuencia, ya que cuando esta sea muy baja el motor va a ir dando saltos en su velocidad. Además de esta manera no puedes controlar el sentido de giro.
« Última modificación: 12 de Marzo de 2009, 19:17:24 por pablomanieri »

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: modulo PWM en C18
« Respuesta #3 en: 12 de Marzo de 2009, 19:12:47 »
La cuenta sería algo así
si suponemos que el ciclo de trabajo va entre cero y 100 por ciento
ciclo de trabajo de PWM1= k*(potx-posx)*100
ciclo de trabajo de PWM2=(1-PWM1)*100
donde potx posx van entre cero y uno.
El valor de k lo debes determinar experimentalmente dependiendo de la velocidad de respuesta del sistema que quieras obtener.
Lo que tienes que hacer es adecuar las escalas y los valores de las variables. Ya que por ejemplo el ciclo del pwm va entre 0 y 1023 si trabajas con 10 bits, lo mismo sucede con potx y posx. Debes tener en cuenta tambien que el motor va a tener o volts de tension media cuando los dos pwm tengan un ciclo de trabajo del 50 por ciento, es decir 512
« Última modificación: 12 de Marzo de 2009, 19:18:26 por pablomanieri »