Toda la red sólo éste: Diseño sensor de presión industrial y aplicación (HC32L136 semiconductor Mandarin)

directorio

1. Descripción del proyecto

2, Introducción al módulo

2.1, NSA2862 cosas puente dedicado chip sensor acondicionador

2,2, Metallux ME501 / ME505 sensor de presión de cerámica

3, el principio de conducción

4, la realización del proyecto


Sobre la base de la reciente Metallux ME501 / ME505 módulo de cerámica sensor de presión y NSA2862 cosas chips acondicionado diseñar un sensor de presión industrial, y el uso de mandarín semiconductores HC32L136 MCU lograr el control, proyectos especiales compartirán ideas y experiencias a nuestros amigos, toda la red es en la actualidad sólo éste, mucho apoyo ~

1. Descripción del proyecto

Sensores basados ​​en este proyecto Metallux ME501 / ME505 módulo de sensor de presión de cerámica y un micro-nano núcleo de chip acondicionado NSA2862 cosas, la HC32L136 semiconductor microcontrolador UW, bajo la premisa de garantizar alto rendimiento, de espera y el apoyo de despertador, con ultra-baja el consumo de energía, puede trabajar durante 10 años sin tener que reemplazar la batería, se puede utilizar en ciudad inteligente a gran escala, redes industriales y otras áreas.

Medición, calibración, evaluación y diseño del proyecto se conforma aquí con referencia a las soluciones de sensores microelectrónicos núcleo lograr, de ninguna manera, el diseño de sensores industriales es quemar ah.

2, Introducción al módulo

2.1, NSA2862 cosas puente dedicado chip sensor acondicionador

NSA2862 está diseñado para una introducción de aplicaciones de red para el tipo resistivo o un sensor de tensión, por ejemplo, sensor de presión piezo-resistivo, termopar, RTD y otra de acondicionamiento de señal del sensor de potencia ultra bajo ASIC. NSA2862 integrado de medición de señal del canal principal 24 y el canal de medición de temperatura auxiliar 24, la lógica de calibración del sensor, el circuito de fuente de corriente constante, tal como de dos vías, el apoyo I2C, SPI o salida OWI. Built-in MCU, NSA2862 punto cero del soporte de sensor, la sensibilidad de segundo orden no lineal de calibración desviación de calibración y la temperatura más alta de la tercera orden, la precisión de la calibración se puede lograr dentro de 0,1%, que es un conjunto de coeficientes de calibración almacenada en la EEPROM, arquitectura de chip sigue espectáculos:

Como se muestra en las características de los parámetros fig:

  • Bajo consumo de energía en espera: <100nA
  • referencia de tensión baja deriva incorporado
  • 1X ~ 256X variable de precisión de la instrumentación amplificador de ganancia
  • Una señal principal de mediciones de ADC de 24 bits
  • ADC de 24 bits para la medición de temperatura
  • sensor de temperatura del soporte integrado y un sensor de temperatura externo
  • Doble salida de la fuente de corriente
  • ganancia digital 1X ~ 8X ADC
  • ODR varias configuraciones, soporte 50 / 60Hz supresión de frecuencias de energía
  • Sobre la base de la lógica de calibración del sensor universal de MCU interna
  • EEPROM, en tiempo múltiple programable
  • Soporte SPI y las interfaces I2C, y OWI
  • Paquete: TSSOP20
  • Temperatura de funcionamiento: -40 ℃ ~ 105 ℃

diagrama funcional de la viruta se muestra a continuación:

2,2, Metallux ME501 / ME505 sensor de presión de cerámica

 Un sensor de presión para medir el sensor de presión es generalmente sensible a una atmósfera en la que un gas o un dispositivo de líquido, la unidad de control principal usado generalmente para la retroalimentación para lograr sistema de control preciso. Un sensor de presión como los sensores de tipo puerta en la automoción,, electrodomésticos, electrónica de consumo industriales y otras industrias tienen una amplia gama de aplicaciones diferentes. El sensor de presión utilizado para distinguir de los principios de detección, incluyendo las siguientes categorías:

  • La tecnología piezo-resistivo de silicio
  • resistor de cerámica técnica
  • La tecnología de fundición de vidrio micro
  • tecnología de condensador cerámico

Tecnología de silicio piezorresistivo implementado por propiedades piezoresistivas del semiconductor, los semiconductores propiedades piezoresistivas materiales dependiendo de la clase de materiales, la concentración de dopaje, y el grano de cristal y otros factores. La técnica se puede implementar utilizando un proceso de semiconductores, que tiene un tamaño pequeño, de alto rendimiento, bajo coste, alta sensibilidad ventaja de salida de señal. Las deficiencias principalmente en la baja tolerancia de los medios de comunicación, pobres características de temperatura y pobre estabilidad a largo plazo y similares. Común en el rango de medición de baja tensión, tal como 5 kPa ~ 700kPa. La industria ha sido mejorada a través de una tecnología de silicio piezorresistivo tolerancia especial proceso de envasado del programa de medios de comunicación, tales como, la presión de llenado de aceite de nuevo y otras técnicas, sino también traer problemas significativos aumentos de los costos.

resistor de cerámica de capa gruesa tecnología de proceso de impresión puente de Wheatstone impreso superficie de la estructura de cerámica, el uso de un efecto de varistor, para lograr la señal de presión media convertida en una señal de tensión. Ceramic tecnología de resistencia de coste moderado, proceso simple y otras ventajas, en la actualidad hay muchos fabricantes que proporcionan un núcleo de sensor de presión de resistencia de cerámica. Sin embargo, la técnica de salida de señal de baja sensibilidad, se define en el intervalo típicamente 500 kPa ~ 10 MPa, y una estructura hueca convencional, la presión del diafragma solo, diferencia anti-sobrecarga, cuando el medio de presión de sobrecarga a medir, habrá una resistencia del sensor de rotura de membrana cerámica, riesgo medio de fuga.

Glass técnica de micro-fusión utilizando una alta temperatura del proceso de sinterización, en conjunción con medidores de deformación de silicio y acero inoxidable. medidores de deformación de silicio de las cuatro resistencias equivalentes del puente de Wheatstone, cuando el otro lado tiene un medio de presión de diafragma de acero, la deformación del diafragma de acero inoxidable causada por cambios eléctricos producen pequeña en forma de puente cambio de presión proporcional a la señal de voltaje. Glass proceso de micro-fusión difícil de conseguir y costoso. La principal ventaja es bien tolerado medio, fuerte anti-sobrecarga, y es generalmente adecuado para alta presión gama UHP, tal como 10 MPa ~ 200 MPa, una aplicación más limitada.

condensadores de cerámica de cerámica usos de la tecnología base fija y la estructura de diafragma móvil de cerámica, el diafragma móvil por medio de una pasta de vidrio sellado y similares y la base juntos. Entre el patrón de electrodo interior se imprime, formando de este modo una capacitancia variable después de, la presión sobre el diafragma cuando el medio se somete a cambiar el consiguiente cambio en la capacitancia entre los mismos, convierte el chip de acondicionamiento de señal por la salida acondicionado para el uso posterior. técnica Condensador cerámico con un coste modesto, amplio rango de medición, las buenas características de temperatura, consistencia y estabilidad a largo plazo y otras ventajas. Internacional ampliamente utilizado en el control de procesos industriales y de automoción y otros campos, es decir, Estados Unidos y Suiza Sensata E + H representado. Puesto que la señal de capacitancia es diferente de la resistencia de la señal, un circuito de procesamiento de señal para los requisitos más altos, el diseño del sensor requiere el condensador de chip y el acondicionamiento de señal ASIC considera sinérgica, en la actualidad las únicas Microelectrónica núcleo Suzhou satisfecho proporcionan simultáneamente soluciones completas de integrar las dos programa.

Como sensor de presión condensador de cerámica, una ruta técnica importante, anillo de cerámica consta de tres partes, la cerámica y la placa de membrana cerámica, tiene una resistencia a la corrosión, resistencia al impacto, buenas ventajas de compatibilidad de medios. tecnología Metallux ME501 / ME505 sensor funciona resistor de cerámica, que es ajustable por el láser térmico resistencia de compensación de PTC, el uso de asegura de cerámica de alta linealidad en todo el rango de medición, la histéresis mínima, se muestra la estructura de sensor a continuación:

 Sensor características técnicas de la siguiente manera:

3, el principio de conducción

Este microcontrolador proyecto UW HC32L136 conducción sensor acondicionado basado chip semiconductor protocolo de comunicación NSA2862 I2C, de dos hilos I2C bidireccional es un bus serie síncrono, que utiliza una línea de reloj y una línea de datos de los dos dispositivos conectados al bus entre los mensajes de transmisión, proporciona un método simple y eficiente de intercambio de datos entre dispositivos. Cada uno de los dispositivos conectados al bus tiene una única dirección, cualquier dispositivo puede ser utilizado como un anfitrión o como esclavo, pero al mismo tiempo permitiendo sólo un host. I2C es un bus multi-maestro estándar con un verdadero sentido de los mecanismos de mecanismo de detección de colisión y de arbitraje que al mismo tiempo puede solicitar el uso del mecanismo de arbitraje de bus de control a las colisiones de datos Evita Proteger Datos a través de múltiples hosts. controlador de bus I2C, bus I2C puede cumplir con una variedad de modos de transmisión, y soporta todas las comunicaciones con bus I2C.

I2C protocolo de transmisión estándar generalmente comprende cuatro partes: Start (S) o señal de START repetida (Sr), y para leer y bits de dirección de esclavos de escritura, la señal de parada de transmisión de datos (P). protocolo de transmisión de la figura I2C es como sigue:

Cuando el bus está inactivo (líneas SCL y SDA siguen siendo altos), la línea SDA de alta a señal de baja ocurrencia que indica que se genera la señal de inicio en el autobús. Cuando no hay señal entre la señal de inicio de dos paradas, la señal de inicio de repetición que se genera. Con este método el anfitrión para comunicarse en diferentes direcciones de transmisión de una máquina o a otra máquina de la misma (por ejemplo .: lee desde el dispositivo de escritura en el dispositivo esclavo) sin liberar el bus. Cuando la línea SCL es alta, la línea SDA se producen de bajo a alto de la señal, se define como la señal de parada. maestro de bus emite una señal de parada a la transferencia de datos se ha completado. condiciones figura inicio y de parada son los siguientes:

Cuando se genera la señal de inicio, la central transmite el primer byte de los datos inmediatos: la dirección de transmisión de datos 7 bits + Dirección de escritura, los controles de bit de escritura del esclavo (0: Escribir; 1: lectura). Es dirigida por el anfitrión por casualidad de la novena ciclo de reloj SCL como una baja respuesta SDA.

 Durante la transferencia de datos, un impulso de reloj SCL transmitir un bit de datos, y el bajo de línea SDA sólo cuando puede variar como SCL. La figura transmisión del bus I2C superior como sigue:

componente chino Semiconductor puede implementarse I2C 8 bits de transmisión de datos bidireccional, la velocidad de transmisión en el modo estándar puede alcanzar hasta 100 Kbps y el modo de alta velocidad 400 Kbps, hasta 1Mbps en el modo de ultra alta velocidad, y puede operar en cuatro modos: modo de host, el host modo de recepción, el esclavo modo de recepción, el modo de transmisión esclavo. También hay un modo de transmisión especial, un modo de llamada, que el modo de funcionamiento es similar al esclavo modo de recepción.

Controlador de China Semiconductor HC32L136 I2C soporta las siguientes características:

  • Soporte de transmisión maestro / recepción, los / recepción cuatro modos de funcionamiento de transmisión esclavo
  • Soportes estándar (100 Kbps) / Fast (400 Kbps) / alta velocidad de funcionamiento tasa de tres (1Mbps)
  • Soporta 7-bit de direccionamiento
  • filtrado de ruido de apoyo
  • dirección de difusión de apoyo
  • Soportes de interrupción función de consulta de estado

de bloques funcional I2C como se muestra a continuación:

El modo de anfitrión del proyecto utilizado para enviar datos y recibir una comunicación, el maestro cerrado, los datos de modo de transmisión síncrono se muestra a continuación (una descripción más detallada se puede encontrar en Manual del usuario):

4, la realización del proyecto

Paso 1: Identificar dirección del esclavo (dirección del sensor de presión), la dirección del dispositivo NSA2862 I2C de la siguiente tabla:

Paso 2: Configuración del módulo de funciones HC32L136 I2C, donde las necesidades de comunicación a prestar atención a las características eléctricas de I2C pasadores NSA2862 la siguiente tabla:

código de configuración I2C GPIO se muestra a continuación: 

///< IO端口配置
void App_PortCfg(void)
{
    stc_gpio_cfg_t stcGpioCfg;
    
    DDL_ZERO_STRUCT(stcGpioCfg);
    
    Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE);   //开启GPIO时钟门控 
    
    stcGpioCfg.enDir = GpioDirOut;                           ///< 端口方向配置->输出    
    stcGpioCfg.enOD = GpioOdEnable;                          ///< 开漏输出
    stcGpioCfg.enPu = GpioPuEnable;                          ///< 端口上拉配置->使能
    stcGpioCfg.enPd = GpioPdDisable;                         ///< 端口下拉配置->禁止
    
    Gpio_Init(GpioPortB,GpioPin8,&stcGpioCfg);               ///< 端口初始化
    Gpio_Init(GpioPortB,GpioPin9,&stcGpioCfg);
    
    Gpio_SetAfMode(GpioPortB,GpioPin8,GpioAf1);              ///< 配置PB08为SCL
    Gpio_SetAfMode(GpioPortB,GpioPin9,GpioAf1);              ///< 配置PB09为SDA
}

código de configuración I2C es como sigue:

///< I2C 模块配置
void App_I2cCfg(void)
{
    stc_i2c_cfg_t stcI2cCfg;
    
    DDL_ZERO_STRUCT(stcI2cCfg);                            ///< 初始化结构体变量的值为0
    
    Sysctrl_SetPeripheralGate(SysctrlPeripheralI2c0,TRUE); ///< 开启I2C0时钟门控
    
    stcI2cCfg.u32Pclk = Sysctrl_GetPClkFreq();             ///< 获取PCLK时钟
    stcI2cCfg.u32Baud = 100000;                            ///< 100K
    stcI2cCfg.enMode = I2cMasterMode;                      ///< 主机模式
    stcI2cCfg.bGc = FALSE;                                 ///< 广播地址应答使能关闭
    I2C_Init(M0P_I2C0,&stcI2cCfg);                         ///< 模块初始化
}

 Paso 3: la recepción de funciones del controlador de escritura, el anfitrión recibe el estado mostrado en la figura siguiente:

Recepción de código del controlador de la siguiente manera: 

/**
 ******************************************************************************
 ** \brief  主机接收函数
 **
 ** \param u8Addr从机内存地址,pu8Data读数据存放缓存,u32Len读数据长度
 **
 ** \retval 读数据是否成功
 **
 ******************************************************************************/
 en_result_t I2C_MasterReadData(M0P_I2C_TypeDef* I2CX,uint8_t u8Addr,uint8_t *pu8Data,uint32_t u32Len)
{
    en_result_t enRet = Error;
    uint8_t u8i=0,u8State;
    
    I2C_SetFunc(I2CX,I2cStart_En);
    
    while(1)
    {
        while(0 == I2C_GetIrq(I2CX))
        {}
        u8State = I2C_GetState(I2CX);
        switch(u8State)
        {
            case 0x08:                                 ///< 已发送起始条件,将发送SLA+W
                I2C_ClearFunc(I2CX,I2cStart_En);
                I2C_WriteByte(I2CX,I2C_SLAVEADDR);
                break;
            case 0x18:                                 ///< 已发送SLA+W,并接收到ACK
                I2C_WriteByte(I2CX,u8Addr);            ///< 发送从机内存地址
                break;
            case 0x28:                                 ///< 已发送数据,接收到ACK, 此处是已发送从机内存地址u8Addr并接收到ACK
                I2C_SetFunc(I2CX,I2cStart_En);         ///< 发送重复起始条件
                break;
            case 0x10:                                 ///< 已发送重复起始条件
                I2C_ClearFunc(I2CX,I2cStart_En);
                I2C_WriteByte(I2CX,I2C_SLAVEADDR|0x01);///< 发送SLA+R,开始从从机读取数据
                break;
            case 0x40:                                 ///< 已发送SLA+R,并接收到ACK
                if(u32Len>1)
                {
                    I2C_SetFunc(I2CX,I2cAck_En);       ///< 使能主机应答功能
                }
                break;
            case 0x50:                                 ///< 已接收数据字节,并已返回ACK信号
                pu8Data[u8i++] = I2C_ReadByte(I2CX);
                if(u8i==u32Len-1)
                {
                    I2C_ClearFunc(I2CX,I2cAck_En);     ///< 已接收到倒数第二个字节,关闭ACK应答功能
                }
                break;
            case 0x58:                                 ///< 已接收到最后一个数据,NACK已返回
                pu8Data[u8i++] = I2C_ReadByte(I2CX);
                I2C_SetFunc(I2CX,I2cStop_En);          ///< 发送停止条件
                break;
            case 0x38:                                 ///< 在发送地址或数据时,仲裁丢失
                I2C_SetFunc(I2CX,I2cStart_En);         ///< 当总线空闲时发起起始条件
                break;
            case 0x48:                                 ///< 发送SLA+R后,收到一个NACK
                I2C_SetFunc(I2CX,I2cStop_En);          ///< 发送停止条件
                I2C_SetFunc(I2CX,I2cStart_En);         ///< 发送起始条件
                break;
            default:
                I2C_SetFunc(I2CX,I2cStart_En);         ///< 其他错误状态,重新发送起始条件
                break;
        }
        I2C_ClearIrq(I2CX);                            ///< 清除中断状态标志位
        if(u8i==u32Len)                                ///< 数据全部读取完成,跳出while循环
        {
                break;
        }
    }
    enRet = Ok;
    return enRet;
}

 Paso 4: preparación de una función de transmisión de accionamiento, el host envía un estado se muestra el diagrama a continuación: 

Conduce código de transmisión de la siguiente manera:  

/**
 ******************************************************************************
 ** \brief  主机发送函数
 **
 ** \param u8Addr从机内存地址,pu8Data写数据,u32Len写数据长度
 **
 ** \retval 写数据是否成功
 **
 ******************************************************************************/
en_result_t I2C_MasterWriteData(M0P_I2C_TypeDef* I2CX,uint8_t u8Addr,uint8_t *pu8Data,uint32_t u32Len)
{
    en_result_t enRet = Error;
    uint8_t u8i=0,u8State;
    I2C_SetFunc(I2CX,I2cStart_En);
    while(1)
    {
        while(0 == I2C_GetIrq(I2CX))
        {;}
        u8State = I2C_GetState(I2CX);
        switch(u8State)
        {
            case 0x08:                               ///< 已发送起始条件
                I2C_ClearFunc(I2CX,I2cStart_En);
                I2C_WriteByte(I2CX,I2C_SLAVEADDR);   ///< 从设备地址发送
                break;
            case 0x18:                               ///< 已发送SLA+W,并接收到ACK
                I2C_WriteByte(I2CX,u8Addr);          ///< 从设备内存地址发送
                break;
            case 0x28:                               ///< 上一次发送数据后接收到ACK
                I2C_WriteByte(I2CX,pu8Data[u8i++]);  ///< 继续发送数据
                break;
            case 0x20:                               ///< 上一次发送SLA+W后,收到NACK
            case 0x38:                               ///< 上一次在SLA+读或写时丢失仲裁
                I2C_SetFunc(I2CX,I2cStart_En);       ///< 当I2C总线空闲时发送起始条件
                break;
            case 0x30:                               ///< 已发送I2Cx_DATA中的数据,收到NACK,将传输一个STOP条件
                I2C_SetFunc(I2CX,I2cStop_En);        ///< 发送停止条件
                break;
            default:
                break;
        }
        if(u8i>u32Len)
        {
            I2C_SetFunc(I2CX,I2cStop_En);            ///< 此顺序不能调换,出停止条件
            I2C_ClearIrq(I2CX);
            break;
        }
        I2C_ClearIrq(I2CX);                          ///< 清除中断状态标志位
    }
    enRet = Ok;
    return enRet;
}

  Paso 5: Para verificar la comunicación I2C es exitosa, para llevar a cabo los datos de lectura registran NSA2862 inactivo 0x55 0XCF y leer el registro de direcciones de inactividad como se muestra a continuación:

Verificar código de ejemplo de la siguiente manera:  

uint8_t u8Senddata[2] = {0x00,0x55};
uint8_t u8Recdata[1]={0x00};

///< 向I2C总线发起开始信号
I2C_SetFunc(M0P_I2C1,I2cStart_En); 
///< 写数据
I2C_MasterWriteData(M0P_I2C0,0x30,&u8Senddata[0],1);  
I2C_MasterWriteData(M0P_I2C0,0xCF,&u8Senddata[1],1);  
delay1ms(100);

///< 读数据
I2C_MasterReadData(M0P_I2C0,0xCF,u8Recdata,1);    

///< 串口打印
for(int i=0;i<1;i++)
{
  Uart_SendDataIt(M0P_UART1,u8Recdata[i]); //启动UART1发送数据
  delay1ms(3); 
}

Osciloscopio para ver los resultados, ejecuta las formas de onda de señal de reloj de la siguiente manera:

Ejecución de forma de onda de señal de datos se muestra a continuación: 

resultados de la salida en serie como se muestra a continuación: 

DESCRIPCIÓN I2C puede lograr leer y escribir datos normales.

Paso 6: Lectura de valores del sensor de presión, la dirección de registro en la tabla siguiente:

El código de lectura de los valores del sensor de la siguiente manera:

uint8_t u8Senddata[2] = {0x00,0x40};
uint8_t u8Recdata[4]={0x00};

///< 向I2C总线发起开始信号
I2C_SetFunc(M0P_I2C1,I2cStart_En);      
///< 写入寄存器启动使RAW_P=0
I2C_MasterWriteData(M0P_I2C0,0x30,&u8Senddata[0],1);  
I2C_MasterWriteData(M0P_I2C0,0xA5,&u8Senddata[1],1);  
delay1ms(100);

///< 读取经过校正的传感器数据
I2C_MasterReadData(M0P_I2C0,0x06,u8Recdata,1);  
I2C_MasterReadData(M0P_I2C0,0x07,u8Recdata+1,1);    
I2C_MasterReadData(M0P_I2C0,0x08,u8Recdata+2,1);   

for(int i=0;i<3;i++)
{
  Uart_SendDataIt(M0P_UART1,u8Recdata[i]); //启动UART1发送数据
  delay1ms(3); 
}

Osciloscopio para ver los resultados, ejecuta las formas de onda de señal de reloj de la siguiente manera:

Ejecución de forma de onda de señal de datos se muestra a continuación: 

resultados de la salida en serie como se muestra a continuación: 

Los datos son el valor de presión 0X014ADD ME501 (complemento a dos) después de la calibración.

Publicados 160 artículos originales · ganado elogios 8331 · Vistas de 860.000 +

Supongo que te gusta

Origin blog.csdn.net/m0_38106923/article/details/104610640
Recomendado
Clasificación