Así que estoy intentando leer un transductor de presión de Honeywell un Arduino Mega and I Estoy obteniendo valores flotantes. He intentado conectar la línea directamente al Gnd y luego obtengo un 0 constante, pero de lo contrario simplemente flota. Tengo la línea de excitación (positiva) para el transductor conectado a la salida Arduino 5V, la línea común (negativa) conectada a Arduino Gnd y la línea de salida está conectada al pin analógico A8.
El código en el Arduino se ve así:
#include <Arduino.h>
int pressInput = A8;
void setup() {
Serial.begin(9600); // set the baud rate
pinMode(pressInput, INPUT);
}
void loop() {
String input;
if (Serial.available()) { // only run through loop if data has been sent
input = Serial.readString(); // read the incoming data
if (input == "press") {
int pressValue = analogRead(pressInput);
Serial.println(pressValue);
}
}
delay(100); // delay for 1/10 of a second
}
Y me estoy comunicando con el Arduino a través de python y ese código parece:
def read_press():
#Command to get the pressure value
pressure_in_voltage = send_arduino_cmd("press")
pressure_in_psi = 75.0 * (float(pressure_in_voltage)/1023.0) * 5.0 - 37.5
#pressure = max pressure/(4.5V-.5V) * (voltage/max voltage) * 5V - offset (max pressure/(4.5V-.5V))
return (pressure_in_psi)
Con este código, obtengo valores de presión aleatorios, por ejemplo:
133.321
102.529
165.945
93.365
117.558
¿Alguna idea sobre cómo depurar esto o qué podría salir mal en mi código Arduino? Intenté esto con tres de los mismos transductores y obtuve el mismo resultado, así que no creo que sea un fallo del equipo en ese lado. También he probado el voltaje en el + y - y es de 5 V HASTA QUE conecte la línea de salida y luego no puedo ver ningún voltaje en ninguna de las líneas. También conecté las líneas de tierra y comunes a una fuente de alimentación de 5V para garantizar que no fuera un problema con la alimentación de Arduino y obtuviera el mismo resultado.