Controllino + Analog INPUT

Hola,

estoy desarrolando una aplicación por la cual necesito que un CONTROLLINO MEGA lea un sensor analógico, pero tengo algun problemilla con el cambio de escala e igual alguien sabe en que estoy fallando.

La idea es que el controllino está alimentado a 24 voltios. y en su web explica el factor de escala etc.

http://controllino.biz/learning/

Entonces el sensor que quiero leer es éste. Que da una tensión entre 0 i 10 voltios.

https://www.sick.com/media/dox/5/55/055/Operating_instructions_Pressure_switch_PAC50_de_en_fr_IM0058055.PDF

La cosa es la siguiente, he provado muchas maneras de hacer la lectura pero nunca llego a tener un resultado correcto.

#include <Controllino.h>;

int PRESOSTAT_MAN_B = A1;


void setup() {
  //analogReference????;
  Serial.begin(9600);
  pinMode(PRESOSTAT_MAN_B, INPUT);

}

void loop() {
   digitalWrite(PRESOSTAT_MAN_B, HIGH);///????
    int LECTURA = analogRead(PRESOSTAT_MAN_B);
   Serial.println(LECTURA);
   
    
 Serial.println("_____________________________________");
    
    delay(500);
    
}

En interrogantes dejo la referencia sobre la tension de entrada ( no sé si debo usar alguna y en el caso de deber usar-la cual sería…?), tambien dejo un digitalWrite de la entrada analógica, puesto que he encontrado que es para activar la resistencia de pull-up.

Tampoco encuentro como hacer el cambio de escalas entre los 0-1023, 0-10Voltios del sensor o 24V de entrada del Controllino.

Controllino es como un arduino Mega pero para aplicación industrial.

A ver si alguien puede darme un empujón.

Gracias

Jamek: Entonces el sensor que quiero leer es éste. Que da una tensión entre 0 i 10 voltios.

Un Arduino Mega trabaja a 5v, y el voltaje de referencia por defecto es ese. Si dices que el rango del sensor está entre 0 y 10v, por lógica se puede deducir que lo que necesitas es la mitad de ese voltaje.

Para poder lograrlo, debes crear un "divisor de voltaje" (resistivo) utilizando dos resistencias del mismo valor (por encima de 1K ohm). Una va entre la salida del sensor y el pin (A1); la otra va entre el pin A1 y tierra (GND)

Entonces el sensor que quiero leer es éste. Que da una tensión entre 0 i 10 voltios.

Vaya vaya.. Leyendo el Controllino me encuentro con esto

Inputs as analog input The data logging work with the internal A/D converter of the microcontroller and has a resolution of 10Bit and delivers the values 0 – 1023. CONTROLLINO internally uses an automatic voltage divider controlled over the supply voltage. Dependent of the supply voltage the divider is switched to the right value. If you use a 12V supply voltage the measured value can be between 0-13,2V. 1 digit = 0,015V (15,0mV) If you use a 24V supply voltage the measured value can be between 0-26,4V. 1 digit = 0,03V (30,0mV)

The scaling factor is: @12V … 3,06 @24V … 6,14 INFO: all inputs are protected against electrostatic discharging and overvoltage.

Analizo y respondo sobre el código.

Veo que tienes un servicio técnico. Yo preguntaría con ellos. Hay que descargarse la librería Controllino para darte una respueta apropiada. En principio alimentado con 12V puedes leer directamente la entrada. Los ajustes al código no puedo dártelos sin ver la librería.

NOTA: Lucario lo que hacemos para Arduino no se aplica a esta PLC hecho con Arduino. tiene otras especificaciones electricas.

Hola

Gracias por la respuesta.

La libreria conrollino.h está instalada.
está aquí, no la posteo porque es muy larga.
https://github.com/Controllino/ControllinoLibrary/blob/master/Controllino.h

Luego, la alimentación es de 24 voltios siempre. y por lo que pone aquí de valor de escala…no funciona bién.
Yo estoy recibiendo 5V en la entrada , hasta aquí todo correcto. Luego viene el problema en el tratado de datos.

con el codigo así

#include <Controllino.h>;

int PRESOSTAT_MAN_B = A2;


void setup() {
  analogReference(DEFAULT);
  Serial.begin(9600);
 pinMode(PRESOSTAT_MAN_B, INPUT);

}

void loop() {
  // digitalWrite(PRESOSTAT_MAN_B, HIGH);///????
    float LECTURA = analogRead(PRESOSTAT_MAN_B);
   Serial.println(LECTURA);
   LECTURA = LECTURA*0.03;
   //Serial.println(TENSIO);
       Serial.println(LECTURA, DEC);
 Serial.println("_____________________________________");
    
    delay(500);
    
}

Me da una lectura de 167 que si que se corresponde con los 5 voltios que comentamos. no debería ser 512? que hago mal? o eso es correcto? o me está dando 5V respeto a 24 con est 167 de 1024?

Gracias por la colaboración

Vuelves a poner enlaces sin usar tags. Por favor lee las normas del foro y usa el tag para insertar enlaces.

Si estas con 24V tu resolucón es

If you use a 24V supply voltage the measured value can be between 0-26,4V. 1 digit = 0,03V (30,0mV)

Entonces 167x0.03V = 5V. Pusiste un tester/multímetro para ver cuando llega? Lo que no se si debes o no informarlo. Para ello mira tu documentación.