Saludos.
Esta es mi primera experiencia con arduino o con un PIC.
Solo estoy probando en Proteus 8
Proyecto: sensar velocidad y temperatura de (cojinetes y alineación) para una transportadora, para detenerla si sale de rango.
Uso: un arduino mega 2560, conectado una pantalla LCD16x4, con cuatro pulsadores para parametrizar y leds para indicar si alguno entro en falla, una señal de pulso (simula sensor inductivo que lee velocidad) y 6 medidores de temperatura NTC.
He podido elaborar un programa que me permite mostrar los dados en el lcd poder parametrizar, generar las alarmas, el problema el calcula de la velocidad fluctúa.
muestro la velocidad en lo que llamo mi pantalla principal y me muestra 47 (deberia ser 50 por que muestreo por 2 s una señal de 40ms, todavía no lo paso a rpm, pero esto no importa por que le puedo colocar un factor) el problema es que cuando cambio a lo que llamo pantalla de monitoreo pasa a 13, esta también muestra los datos de temperatura que llevan cálculos logarítmico. pero este calculo siempre lo hago en la raiz del loop() cíclico por que si sale de rango tengo que dar una alarma.
el punto es que se nota que la lectura de pulsos se ve influenciado por lo demás que esta ejecutando, como hago para tener una medida constante, ya que a partir de esta debo de generar una alarma si sale de rango,
la velocidad la mido con esta funcion : donde "in" es la entrada del pin y "ban" una bandera que declare afuera y cuenta cuando reconoce el flanco de bajada.
// Velocidad por pulsos
void velocidad (bool in) {
unsigned long currentMillis = millis();
if ( in == true) {
ban = true;
}
if ( ban == true && in == false) {
suma = suma + 1;
ban = false;
}
if (currentMillis - previousMillis >= 2000) {
previousMillis = currentMillis;
velocida = suma;
suma = 0;
}
}
Atento a su ayuda
gracias
David Ramos
me piden poner el programa pero me dice que excedo de 9000 caracteres y solo estaba colocando declaraciones setup() loop()
creo a ver que las interrupciones es la opcion. ahora a aprender como se hacen