Confusión de Resistor Externo Pull Up Adruino

3

Tengo un proyecto en el que quiero agregar un sensor de combustible flexible a un automóvil que no tiene uno. Tengo instalado y cableado el sensor de combustible flexible. 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 del sensor de combustible flexible:

El sensor de combustible utiliza un microprocesador para medir el porcentaje de etanol y la temperatura del combustible, que utiliza para producir y emitir la señal. 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 a cinco voltios en el circuito de señal, y el sensor de combustible empuja 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% de etanol

El ancho del 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 indican 125 ° C (257 ° F)

No sé casi nada sobre electrónica, así que lo que me confunde es la resistencia de pull-up. He leído acerca de la resistencia de pull-up interna pero el valor en eso parece demasiado alto, de acuerdo con esto ( enlace ) la resistencia debe ser de 1.2 a 3k mientras que la interna está más cerca de 30k.

Entonces, mi pregunta es ¿cómo soldar la resistencia de pull-up? Intenté soldar un extremo de la resistencia al pin 10 y el otro 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 ( enlace . ¿Cómo puedo soldar este resistor de pull-up en este sistema?

Debajo está 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;
    }
}
    
pregunta Nick

2 respuestas

1

Debe conectar la salida del sensor al pin 10 de la placa del procesador y luego conectar un extremo del resistor al mismo pin 10.

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

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

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 del resistor pull-up.

    
respondido por el Kevin White
0

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

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

    
respondido por el Peter Bennett

Lea otras preguntas en las etiquetas