TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: fastyx2 en 08 de Septiembre de 2007, 11:04:00
-
Amigos : estoy con una duda y es la siguiente:
tengo diseñado un puente para un motor de continua hecho con reles. cada rele es gobernado por una pata del pic 16f628 , de manera que por soft activo los modos permitidos para el puente .
por la interrupcion externa rb0 tomo pulsos de un motor gasolero , con el proposito de regular las rpm acelerando o des-acelerando la bomba de gasoil con el motor de continua.
lo que hago es : 10 entradas a la interrupcion , con el decimo pulso hago el calculo del valor de rpm , y pongo un flag a 1 para que el main procese la comparacion
el main recibe el flag en 1 y basicamente lo que hace es :
pone el flag a cero
si rpm esta por debajo de 1450 , que las suba
si rpm esta por encima de 1550 , que la baje
si rpm esta entre 1450 y 1550 , que apague el puente
la duda es : en el momento en que el main comienza a procesar , conviene des-habilitar la interrupcion para que procese tranquilo , o conviene que el valor de rpm este constantemente calculandose .
por un lado con la int activa tengo una actualizacion del valor de rpm, pero molesto al main cada 1 milisegundo , y por otro lado si descativo la int hasta que el main pegue la vuelta y vuelvo a activar la int , no se que consecuencia puede tener sobre la actualizacion del valor de rpm.
desde ya gracias!!
-
Hola amigo!
¿Soportaran los reles el trajin de esa aplicacion? :shock:
Respecto de tu pregunta, aun sin conocer el motor, supongo que su inercia mecanica sera mas que suficiente para que las interrupciones que pueda tener el "main()" sean despreciables.
Y eso me lleva de nuevo a los reles. Es imposible que un rele le siga el tren a algo que eventualmente puede cambiar cada un puñado de milisegundos.....
Saludos! :mrgreen:
-
disculpen si no puse el codigo pero esta bastante complicado por luces de aviso , grabaciones de eeprom y demas.
lo que hice en el main fue colocar un delay de 1 segundo entre maniobra y maniobra , y siempre apago el puente antes de maniobrar a la inversa.
el motor de continua esta conectado a un reductor , y la idea es que ante una carga muy alta ( es un grupo electrogeno ) modifique las rpm , pero no que siga rpm a rpm la variacion y correcion . de ahi que sea un sistema on -off y no un pid.
-
Ah, perfecto! :)
-
en el caso mio , el main tiene varias comparaciones para hacer en una vuelta algunos delays , y que sea interrumpido por la int rb0 me rompe las pelotas , ya que no sabes en que parte se esta ejecutando el programa!
-
en el caso mio , el main tiene varias comparaciones para hacer en una vuelta algunos delays , y que sea interrumpido por la int rb0 me rompe las pelotas , ya que no sabes en que parte se esta ejecutando el programa!