概述

在和客户的接触中,发现多个客户参与了仓储项目,也算是一个典型项目案例,具体情况如下:

客户常用的方案是使用STM32单片机接电子秤HX711,同时接一个串口屏完成显示,对于这个方案,我们的意见是使用SHMICTRL串口屏可以完全减掉STM32单片机,直接使用串口屏驱动HX711,并且使用485完成通信

硬件框架

此项目硬件设计重点在于两点,一是大规模多屏带来的供电问题,二是屏端电子秤驱动

一、供电模式:

考虑到大量屏幕使用,为减少施工难度,屏端采用了VH3.96mm的4P座子,这种设计在行业中称“手拉手连接”,通过4P的连接线将相邻的两块屏连接起来完成串联,解决供电和通信问题;

但是这种模式,会有一个电流累计的问题,例如手拉手一组10块屏幕,单屏供电是5V 300mA,则10块屏幕最初的那个插座将有3A电流,这会导致大量的发热和线损,会出现这组最后一块屏亮度比第一块屏差很多的现象。

为解决这个问题,就需要将供电电压升高来降低电流,从而提高一组屏的串联数量。按2A最大供电电流来算: 3.3V 300mA (3.3*0.3=0.99W;0.99W/90%=1.1W; 1.1W/12V=0.092 约92mA 2/0.092=21)因此一组大约可以带20~22块屏

实际电路如下: 通过DC-DC变压将12V转化成3.3V

这是485通信电路:

二、电子秤电路:

通过串口屏的E5和E6扩展端口接到HX711的DA和CLK端口,就可以使用串口屏中的程序控制IO端口获取电子秤的重量数据

软件实现:

void getdzc(){
    //获取电子秤AD值
    int i;
    gpio_mode(4,1);  //clk
    gpio_mode(5,2); //da
    gpio_out(4,0);
    count=0;
    while (gpio_inp(5)==1){};
    for (i=0;i<24;i++){
        gpio_out(4,1);    //SCLK H
        count=count<<1;
        gpio_out(4,0);    //SCLK L
        count=count+gpio_inp(5);
    }
    gpio_out(4,1);    //SCLK H
    count=count^0x800000;
    gpio_out(4,0);    //SCLK L
}

以上是核心函数,通过控制E5 E6端口读取电子秤的ad值。

详细工程参见:

电子秤源代码工程)