Confusión de la resistencia de extracción externa Adruino

Tengo un proyecto en el que quiero agregar un sensor de combustible flexible a un automóvil que no tiene uno. Tengo el sensor de combustible flexible instalado y cableado. Mi plan es usar un Arduino para leer la señal del sensor y convertir la frecuencia al porcentaje de etanol. Compré un clon de Arduino con el chip ATMega34U4.

Esta es la documentación sobre el sensor de combustible flexible:

El sensor de combustible usa un microprocesador para medir el porcentaje de etanol y la temperatura del combustible, que usa para producir una señal de salida. La señal del sensor de combustible es una señal de voltaje de onda cuadrada. La señal varía tanto en frecuencia como en ancho de pulso:

La frecuencia de la señal indica el porcentaje de etanol. La frecuencia de salida es lineal con respecto al porcentaje de contenido de etanol en el combustible. El PCM proporciona un pull-up interno de cinco voltios en el circuito de señal, y el sensor de combustible lleva los 5 voltios a tierra en pulsos. El rango normal de frecuencia de operación es entre 50 y 150 Hertz:

50 Hertz indica 0% de etanol

150 Hertz indica 100% etanol

El ancho de pulso indica la temperatura del combustible. El ancho de pulso normal es entre 1 y 5 milisegundos:

1 milisegundo indica -40°C (-40°F)

5 milisegundos indica 125°C (257°F)

No sé casi nada sobre electrónica, así que lo que me confunde es la resistencia pull-up. He leído sobre la resistencia pull-up interna pero el valor parece demasiado alto, de acuerdo con esto ( http://nefariousmotorsports.com/forum/index.php?topic=9168.0 ) la resistencia debería ser de 1.2 a 3k mientras que la interno está más cerca de 30k.

Entonces mi pregunta es ¿cómo soldar la resistencia pull-up? Intenté soldar un extremo de la resistencia al pin 10 y el otro extremo al cable VOUT en el sensor de combustible flexible, pero eso dio lecturas inconsistentes en el mejor de los casos. Aquí hay un pinout para un producto similar ( https://www.sparkfun.com/products/12640 . ¿Cómo sueldo esta resistencia pull-up en este sistema?

A continuación se muestra mi código. Veo principalmente ceros después de H: y L:

int inputPinNumber = 10;
double sum = 0;
int count = 0;
unsigned long pulseTime = 0;
int frequency = 0;
unsigned long high = 0;
unsigned long low = 0;

void setup()
{
    Serial.begin(57600);
    pinMode(10, INPUT);
    LCD.init(0x3C);
    LCD.clearDisplay();
    LCD.setTextWrap(false);
    LCD.setTextSize(2);
}

void loop()
{
    high = pulseIn(inputPinNumber, HIGH);
    low = pulseIn(inputPinNumber, LOW);
    pulseTime = high + low;

    LCD.clearDisplay();
    LCD.setCursor(0, 0);
    LCD.print("H: ");
    LCD.println(high);
    LCD.print("L: ");
    LCD.println(low);
    LCD.print("C: ");
    LCD.println(count);
    LCD.display();
    if (pulseTime > 0)
    {
        sum += ((1000000 / pulseTime) - 50);
        count = count++;
    }

    if (count > 50) {
        LCD.clearDisplay();
        frequency = (sum / count);
        Serial.println(frequency);
        LCD.setCursor(0, 0);
        LCD.print(" E");
        LCD.println(frequency);
        LCD.display();
        sum = 0;
        count = 0;
    }
}
Tengo entendido que el modo pin habilita la resistencia pull-up interna que es aproximadamente 10 veces mayor que el valor de resistencia recomendado. Nuevamente, no sé lo suficiente sobre electrónica para saber si eso causará un problema, pero los documentos indican que causaría un tiempo de aumento lento (nuevamente, no sé si eso sería un problema).

Respuestas (2)

Debe conectar la salida del sensor al pin 10 de la placa del procesador y luego también conectar un extremo de la resistencia al mismo pin 10.

El otro extremo de la resistencia debe conectarse a +5 V (VCC), como el pin 4.

Se llama pull-up porque eleva el pin de señal hasta 5v cuando la fuente no lo está bajando.

Algunos tipos de fuentes de señal solo funcionan en una dirección. En este caso, el sensor puede forzar la señal a tierra pero no hace nada en el otro estado. Se basa en el pull-up para establecer el nivel de la señal, de ahí la necesidad de la resistencia de pull-up.

¡Gracias por la clara explicación! Voy a intentarlo. Una pregunta. Al poner de VCC al pin 1, ¿tengo 5 voltios en todos los pines? La razón por la que pregunto es porque eventualmente podría usar un pin como salida de voltaje para un registrador de datos. Aquí hay un enlace directo a la imagen de pinout cdn.sparkfun.com/assets/9/c/3/c/4/523a1765757b7f5c6e8b4567.png
No entiendo tus preguntas. ¿Por qué está involucrado el pin 1?
En su respuesta dice "... luego también conecte un extremo de la resistencia al pin1". ¿Querías escribir pin10 allí?

La descripción del sensor que cita indica, si lo leí correctamente, que la salida del sensor tiene una resistencia pull-up interna (dentro del sensor), por lo que no debería necesitar agregar otra resistencia pull-up en la entrada Arduino.

Un enlace a la hoja de datos del sensor ayudaría a aclarar las cosas...

No lo hago, pero cuando la información del sensor menciona PCM se refiere a uno de los módulos de la computadora en el automóvil, que es donde entiendo que está el pull-up.