Mostrar Mensajes

Esta sección te permite ver todos los mensajes hechos por este usuario, recuerda que solo puedes ver los mensajes en áreas en donde tu tienes acceso.


Temas - Jose Torres

Páginas: 1 [2]
16
STX8081 / Frecuencia de señal con contadores - Resetear
« : marzo 19, 2012, 00:51:53 am »
Estimado Boris, de nuevo necesito tu ayuda. Armé un lazo de control que ya se acerca bastante al sistema real. Difiere que en lugar de excitar una válvula proporcional setea un variador de un motor trifásico que tiene en su eje un piñón de 20 dientes que son leídos por una pickup inductiva.

El setpoint (sp) se fija con un pote de 5 V, el feedback (fb) se toma de la pickup, y la señal de control del variador (salida) sale por la salida analógica AO1. Las tres variables trabajan dentro del mismo rango. Para simular las perturbaciones del entorno coloqué un pote en serie con la señal de AO1.

Lo probé y anda fenómeno, simulando perturbaciones en más y en menos, la velocidad del motor se mantiene constante. Donde tengo problemas es al perder la señal de feedback desconectando la pickup.

En ese caso es imperativo que el valor de fb caiga a cero, sin embargo esa variable conserva el último valor leído y sólo vuelve a cero si se resetea el programa.

What can I do? Te envío el programita para ver si se puede hacer algo; probé por las mías pero sin suerte.

Muchas gracias.

José María

 

// Incluir libreria STX8081.

#include <stx8081.inc>

// Funcion principal.

main()
{

// Activar contador, cuenta por flanco ascendente.
Count1Enable(COUNT_EDGE_RISING)

// Crear variable para almacenar lectura de pulsos.
new fb = 0

// Crear variable para almacenar valor de salida.
new salida = 0

// Limpiar LCD.
LcdClear()


// Loop principal.
while(true)
{

   //Leer frecuencia de piñón de feedback
   fb = Count1GetEventFreq_I()

  //Leer pote para setpoint
  new Muestras[40]

  new i, sp

  for(i=0; i<40; i++)
  {
     Muestras = Vin1Read()
  }

  sp = 0

  for(i=0; i<40; i++)
  {
     sp += Muestras
  }

  sp = sp / 40

  //Afectar salida por señal de error (sp-fb)
  salida= (salida+sp-fb)

  //Presentar sp y fb
  LcdPrintf(0, 0, "Setp: %d", sp)
  LcdPrintf(0, 1, "Fback: %d", fb)

  //Enviar salda a AO1
  Vout1Write (salida)
 }
}

Páginas: 1 [2]