Vai al contenuto

VaPotentiometer, acquisizione potenziometro da ingresso analogico

Vai all indice del manuale di programmazione
Tipo: Funzione
Libreria LogicLab: eLLabUtyLib
Libreria Codesys: Non disponibile

Questa funzione esegue il calcolo del valore ohmico di un potenziometro acquisendo il valore di tensione in uscita dal suo cursore.

In PVoltage occorre indicare la tensione di alimentazione del potenziometro, in Resistance la sua resistenza. Fornendo in AVoltage il valore acquisito dal suo cursore la funzione calcola il valore del potenziometro alla sua posizione attuale. Per compensare l’errore di lettura dovuto alla impedenza di ingresso del canale di acquisizione della tensione occorre definirla in AImpedance.

Descrizione

PVoltage (REAL) Tensione di alimentazione del potenziometro. La tensione applicata ai suoi estremi (V).
Resistance (REAL) Valore resistivo del potenziometro (Ohm).
AVoltage (REAL) Valore di tensione acquisita sul cursore del potenziometro (V).
AImpedance (REAL) Valore di impedenza di ingresso del canale di acquisizione (Ohm) (Vedi tabella).

Immagine F_VaPotentiometer

Esempi

Come utilizzare gli esempi
Viene acquisito il valore ohmico alla posizione del cursore di un potenziometro da 10 KOhm alimentato con tensione di 10 Volt. Il valore è acquisito tramite un modulo di ingresso analogico.

Per evitare l’influenza della impedenza di ingresso conviene eseguire l’acquisizione impostando il modulo nella configurazione ad alta impedenza (Tipicamente acquisizioni fino a 3V). Nelle acquisizioni 0-10 volt occorre tenere in considerazione l’impedenza di ingresso del modulo, scegliendo un potenziometro di valore il più possibile inferiore all’impedenza di ingresso.

Schema di principio acquisizione potenziometro
LogicLab (Ptp114, ST_VaPotentiometer)
PROGRAM ST_VaPotentiometer
VAR
    PotResistance : REAL; (* Potentiometer resistance (Ohm) *)
    RdResistance : REAL; (* Read resistance (Ohm) *)
    AImpImpedance : REAL; (* Analog input impedance (Ohm) *)
    AOut : SysSetAnOut; (* Analog output management *)
    AInp : SysGetAnInp; (* Analog input acquisition *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_VaPotentiometer"
// *****************************************************************************
// This program by using an analog I/O module generate the 10V output to power
// a potentiometer and by acquiring the analog voltage from it calculates its
// resistance.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // ANALOG OUTPUT MANAGEMENT
    // -------------------------------------------------------------------------
    // Manages analog output.

    AOut.Address:=0; //Module address
    AOut.Channel:=0; //Module channel
    AOut.Mode:=AO_MODE#DA_VOLT_0_10; //Output mode
    AOut.Value:=10.0; //Output value
    AOut(); //Analog output management

    // -------------------------------------------------------------------------
    // ANALOG INPUT ACQUISITION
    // -------------------------------------------------------------------------
    // Acquires analog input 0 by module with address 0.

    AInp.Address:=1; //Module address
    AInp.Channel:=0; //Module channel
    AInp.Mode:=AI_MODE#AD_VOLT_0_10_DIFFER; //Acquisition mode
    AInp(); //Analog input acquisition
    IF NOT(AInp.Done) THEN RETURN; END_IF;

    // Calculates the resistance.
    // The potentiometer used has resistance of 10KOhm.
    // The analog input module has 11KOhm of impedance.

    PotResistance:=10000.0; //Potentiometer resistance (Ohm)
    AImpImpedance:=11000.0; //Analog input impedance (Ohm)
    RdResistance:=VaPotentiometer(AOut.Value, PotResistance, AInp.Value, AImpImpedance);

// [End of file]
Was this article helpful?