Buenas:
Aún me queda días para que me den el
H11AA1. Mirando bien esquemas, no lo conectan de la misma manera.
Tengo que elegir el más adecuado de todos antes de montar ciruito en la protoboard.
Los pulsos por lo que se ve, son por cada 90º.
Es algo demasiado simple y sencillo.
Para mi no es sencilla, no lo hecho antes. Recuerdo, que el tacómetro suelta 35 Vac. Los que sepan código de Arduino o más bien un esquema de las ideas de como hacerlo, si sabes, puedes indicarlo para entenderte.
Antes que me lleguen los materiales, necesito un guía,
Mientras...
Hago pruebas de todo tipo en el Proteus, por ejemplo, hacer un circuito eléctrico mejor que se adapte a lo que busco. Cuando lo tenga, hacer pruebas de todo tipo si me detecta la entrada digital. Empezar hacer varios programas en Arduino de prueba. Tengo Arduino UNO r3 y el LCD, en shield key pad 16x2. Para ver los resultados si hace falta.
Una vez que me detecte los pulsos, por ejemplo que me muestre resultados en pantalla, o en el monitor serie si lo desean, hay que ver resultados de lo que hace la entrada.
Quiero hacer pruebas de todo tipo, pequeños y grandes. Por ejemplo:
Programa 1:
Contador de pulsos.
Solo se muestra en el monitor serie o LCD o los dos a la vez, la cantidad de pulsos que está detectando en la entrada del optoacoplador. Este
ejemplo puede servir, lo adaptaré a mi manera y lo pongo aquí cuando acabe.
C:
const int inputPin = 2;
int value = 0;
void setup() {
Serial.begin(9600);
pinMode(inputPin, INPUT);
}
void loop(){
value = digitalRead(inputPin); //lectura digital de pin
//mandar mensaje a puerto serie en función del valor leido
if (value == HIGH) {
Serial.println("Encendido");
}
else {
Serial.println("Apagado");
}
delay(1000);
}
Programa 2:
Lo que se nos ocurra. Iremos poco a poco.
Medir la frecuencia con interrupción
C:
// period of pulse accumulation and serial output, milliseconds
const int MainPeriod = 100;
long previousMillis = 0; // will store last time of the cycle end
volatile unsigned long previousMicros=0;
volatile unsigned long duration=0; // accumulates pulse width
volatile unsigned int pulsecount=0;
// interrupt handler
void freqCounterCallback()
{
unsigned long currentMicros = micros();
duration += currentMicros - previousMicros;
previousMicros = currentMicros;
pulsecount++;
}
void reportFrequency()
{
float freq = 1e6 / float(duration) * (float)pulsecount;
Serial.print("Frec:");
Serial.print(freq);
Serial.println(" Hz");
// clear counters
duration = 0;
pulsecount = 0;
}
void setup()
{
Serial.begin(19200);
attachInterrupt(0, freqCounterCallback, RISING);
}
void loop()
{
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= MainPeriod)
{
previousMillis = currentMillis;
reportFrequency();
}
}
Programa 3:
Al detectar los pulsos de entrada y sabiendo gracias arriba los resultados cuanto cuenta por cada cierto tiempo, pues haremos algo como esto.
C#:
int pulsos = 0;
if (pulsos => 0)
{
// Mostrar mensaje:
// Motor detenido.
}
if (pulsos => 200)
{
// Motor en marcha.
}
if (pulsos =< 700)
{
// Motor detenido.
}
if (pulsos => 1023)
{
// Como sobre pasa el valor.
// Motor trabajando en vacío porque
// se rompió o se soltó la correa del
// tambor.
// Se detiene el motor.
}
Soy todo oidos.
Esto lo estoy haciendo en las tardes libres, ya que en el cuarso de electricidad, en estos momentos por la mañana, estoy dando automatismo, control de un motor monofásico con condensador, controlador con el Siemens Logo! 6. Ya vez lo que tengo ocupado.