Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

Gráfica no actualiza automaticamente

Buenas noches a todos, estoy trabajando con el VISA y estoy haciendo lectura de un MAX6675 quisiera graficar la temperatura solo que no se actualiza el valor automaticamente, tengo que hacer clic en el botón "stop" para que lea el nuevo valor, ¿alguien conoce la razón de esto?. Además quisiera saber como añadir la lectura de rpm de un motor, es decir, hacer ambas lecturas (temperatura y rpm al mismo tiempo)

 

este es el código que estoy empleando y adjunto imagen del VI.

 

Muchas gracias a todos de antemano.

//código temperatura
#include "max6675.h" // max6675.h file is part of the library that you should download from Robojax.com //temperatura int soPin = 4;// SO=Serial Out int csPin = 5;// CS = chip select CS pin int sckPin = 6;// SCK = Serial Clock pin MAX6675 robojax(sckPin, csPin, soPin);// create instance object of MAX6675 void setup() { Serial.begin(9600);// initialize serial monitor with 9600 baud } void loop() { //temperatura // basic readout test, just print the current temp // Robojax.com MAX6675 Temperature reading on Serial monitor Serial.print('\n'); //Serial.print("C = "); Serial.print(robojax.readCelsius()); //Serial.print(" F = "); //Serial.println(robojax.readFahrenheit()); delay(500); }

Captura.JPG

//código rpm
int pino_D0 = 2;
int rpm;
volatile byte pulsos;
unsigned long timeold;

//Altere o numero abaixo de acordo com o seu disco encoder
unsigned int pulsos_por_volta = 20;

void contador()
{
  //Incrementa contador
  pulsos++;
}

void setup()
{
  Serial.begin(9600);
  //Pino do sensor como entrada
  pinMode(pino_D0, INPUT);
  //Interrupcao 0 - pino digital 2
  //Aciona o contador a cada pulso
  attachInterrupt(0, contador, FALLING);
  pulsos = 0;
  rpm = 0;
  timeold = 0;
}

void loop()
{
  //Atualiza contador a cada segundo
  if (millis() - timeold >= 1000)
  {
    //Desabilita interrupcao durante o calculo
    detachInterrupt(0);
    rpm = (60 * 1000 / pulsos_por_volta ) / (millis() - timeold) * pulsos;
    timeold = millis();
    pulsos = 0;

    //Mostra o valor de RPM no serial monitor
    Serial.print("RPM = ");
    Serial.println(rpm, DEC);
    //Habilita interrupcao
    attachInterrupt(0, contador, FALLING);
  }
}
0 kudos
Mensaje 1 de 2
1.923 Vistas

Hola  Fer_Ruiz.

 

Podría deberse a la configuración de la comunicaicón serial. Sería bueno asegurarse que VISA esté configurado al mismo Baud Rate que el MAX 6675 por ejemplo. Sería posible que adjuntaras tu código? De esta manera sería mas sencillo observar si hay alguna opción que haya que configura de manera distinta.

 

 

0 kudos
Mensaje 2 de 2
1.880 Vistas