Diseño de un sistema de pesaje por microcomputadora de un solo chip

1. Introducción al sensor

    Los sistemas de pesaje se utilizan ampliamente en la vida diaria industrial, desde pequeñas balanzas electrónicas hasta grandes balanzas. La mayoría de los sensores son sensores de presión de deformación por resistencia. El puente Huygens generalmente se compone de cuatro galgas extensométricas de resistencia, que se instalan en un cuerpo elástico. Cuando hay presión, el extensímetro se deforma con el cuerpo elástico, la resistencia cambia y el puente genera un voltaje desequilibrado. Generalmente, la presión es linealmente proporcional al voltaje desequilibrado del puente.

       El voltaje de salida del sensor es generalmente relativamente pequeño, al nivel de mV. Depende del voltaje de excitación y la sensibilidad del sensor. Las sensibilidades comunes son 1 mV / V, 2 mV / V y 3 mV / V. Para un sensor de 2 mV / V, cuando el voltaje de excitación es de 5 V, el voltaje de salida a escala completa es de 2 mV / V * 5 V = 10 mV.

2. Diseño de hardware

    La señal del sensor es relativamente pequeña y debe amplificarse antes de la recolección de AD. En la actualidad, existen muchos chips AD dedicados a sistemas de pesaje con amplificadores integrados, lo que simplifica enormemente el diseño de circuitos de hardware. Como el ADS1231 de TI, el CS1231 de Chipsea Technology, el HX710 de Haixin Technology, etc. Estos chips son todos AD de 24 bits y un amplificador integrado de 128 veces (algunos chips se pueden configurar para ampliar). Este artículo toma el HX710 como ejemplo para presentarlo. El diagrama del circuito es el siguiente:

    Consulte el manual y podrá ver que el rendimiento del chip cuando funciona con 5 V es mejor que con 3 V. Sin embargo, debe tenerse en cuenta que el AVDD del HX710 no puede ser mayor que el DVDD En la actualidad, la mayoría de las microcomputadoras de un solo chip funcionan con 3.3V, por lo que aquí se usa 3.3V. ADS1231 no tiene esta restricción, es decir, DVDD puede ser de 3.3V y AVDD puede ser de 5V.

    El rango de voltaje de entrada de modo común del chip es de AGND + 0.9V a AVDD-1.3V, al que se debe prestar atención en otras aplicaciones.

    El rango de voltaje de entrada diferencial del chip es ± 0.5VREF / factor de aumento (128) ≈ ± 12.89mV. Para un sensor con una tensión de excitación de 3,3 V y una sensibilidad de 2 mV / V, la tensión de salida máxima es de ± 6,6 mV, que está dentro del rango requerido del chip. La diferencia entre los dos valores casi se duplica y se pierde aproximadamente 1 bit de resolución. Cuanto mayor sea el voltaje de excitación, cuanto más cerca esté el voltaje de salida del sensor del rango de entrada de AD, más efectiva será la resolución de AD. Pero también considere el diseño de todo el sistema de energía.

    Además, el voltaje de excitación del sensor debe usar la misma fuente de alimentación que el VREF del chip tanto como sea posible, de modo que se pueda suprimir alguna interferencia de modo común.

3. Diseño de software

    La interfaz entre el chip y el microcontrolador es simple, con un pin de salida de datos DOUT y un pin de reloj SCK.

    Cuando se completa la conversión AD, DOUT cambia de alto a bajo En este momento, el pin SCK ingresa 25 ~ 27 pulsos de reloj, y el flanco ascendente de cada reloj lee datos de DOUT. El diagrama de tiempos es el siguiente. La sincronización de los datos de lectura de otros chips es básicamente la misma que la de este chip.

Programación

int32_t ad_val=0;//AD值

void Get_HX710()
{
    HX710_SCLK_CLR;
    if(READ_HX710_DOUT_PIN)return ;

    for(i=0;i<24;i++)
    {
         HX710_SCLK_SET;
         ad_val=ad_val<<1;
         HX710_SCLK_CLR;
         if(READ_HX710_DOUT_PIN)
           ad_val++;
    }
    HX710_SCLK_SET;
    if(ad_val&0x800000)ad_val|=0xFF000000;
    HX710_SCLK_CLR;
}

Calibración del sensor

    La lectura anterior es el valor original de AD, el sensor debe calibrarse antes de convertirse en peso. Generalmente, la calibración del sensor requiere al menos dos puntos: punto cero y rango completo (por supuesto, también son posibles dos puntos cualesquiera, porque dos puntos determinan una línea recta). Para algunas ocasiones de alta demanda, se requieren múltiples puntos para la calibración segmentada, o incluso diferentes rangos de temperatura. Este artículo toma la calibración de dos puntos como ejemplo. Los datos de calibración incluyen el valor de calibración del punto cero, el valor AD del punto cero, el valor de calibración de escala completa y el valor de AD de escala completa.

    Calcular el valor de pesaje es relativamente simple, es decir, determinar una línea recta a través de dos puntos de calibración y encontrar el peso correspondiente al valor AD en la curva. El procedimiento es el siguiente:

int32_t CaliADCValue[2];//校准的AD值
int32_t CaliSensorValue[2];//校准的传感器值
int32_t ZeroValue;//去皮AD值

void CalcWeight(int32_t AD_Value)
{
       int32_t Sensor_Value = 0;
       int32_t TempCaliADCValue[2];//校准AD值      

       TempCaliADCValue[0] = CaliADCValue[0] + ZeroValue;
       TempCaliADCValue[1] = CaliADCValue[1] + ZeroValue;//去皮
      

       if(AD_Value < TempCaliADCValue[0])//小于0点值
       {
              Sensor_Value = 0;
       }
       else if(AD_Value > TempCaliADCValue[1])//大于最大校准值
       {
              Sensor_Value = CaliSensorValue[1] + (float)(AD_Value - TempCaliADCValue[1])/(float)(TempCaliADCValue[1] - TempCaliADCValue[0]) * (float)(CaliSensorValue[1] - CaliSensorValue[0]);
       }
       else//在校准范围内
       {
              Sensor_Value = CaliSensorValue[0] + (float)(AD_Value - TempCaliADCValue[0])/(float)(TempCaliADCValue[1] - TempCaliADCValue[0]) * (float)(CaliSensorValue[1] - CaliSensorValue[0]);
       }
}

    Una función importante del sistema de pesaje es la tara. El programa anterior incluye la función de tara, la tara es sumar el valor AD de la tara al valor AD calibrado original y calcularlo como el nuevo valor AD calibrado.

    Valor de tara AD = valor AD actual-valor AD de calibración del punto cero.

ZeroValue = ad_val - CaliADCValue[0];

 

Lo que describe este artículo es solo un esquema de diseño de sistema de pesaje común. En algunas ocasiones de alta demanda, puede ser necesario compensar el sensor por fluencia, utilizando métodos como la excitación de CA.

 

Bienvenido a prestar atención a la cuenta oficial "Desarrollo de tecnología integrada", puede dejarme un mensaje en segundo plano para la comunicación. Si cree que esta cuenta oficial es útil para usted, también puede recomendarla a otras personas.

Supongo que te gusta

Origin blog.csdn.net/zhang062061/article/details/113061057
Recomendado
Clasificación