Using the T5L chip as the main control and T5L chip drives the serial bus servo to control the door switch, and processes the sensor data collected by the auxiliary controller, and drives the LCD screen for data display. It has an abnormal warning function and an automatic lighting system, which can be used normally in dim light situations.
1. Program Description
(1) The T5L screen is used as the main control to directly drive the serial bus servo. Using Feite STS series steering gear, the torque ranges from 4.5KG to 40KG, and the protocol is universal.
(2) The serial bus steering gear has current, torque, temperature and voltage protection functions, and its safety is higher than that of conventional motors;
(3) One serial port supports simultaneous control of 254 servos.
2.Scheme design
(1) Scheme block diagram
(2) Mechanical structure diagram
In order to prevent the power failure of the intelligent cabinet door from being out of control, this design adopts a dual steering gear design. After a power failure, due to the existence of the door latch, even if the door opening servo is unloaded, the smart cabinet is still in the locked state. The mechanical structure is shown in the figure:
Diagram of the opening structure
Diagram of the closing structure
(3) DGUS GUI Design
(4) Circuit Schematic
The circuit schematic is divided into three parts: main circuit board (servo drive circuit + auxiliary controller + interface), step-down circuit, and lighting circuit (installed in the cabinet).
Main Circuit Board
Step-down Circuit
Lighting Circuit
5. Program example
Temperature and humidity detection and refresh, time update (AHT21 is driven by the auxiliary controller, and the temperature and humidity data is written into the DWIN screen)
/*****************Temperature and humidity update**********************/
void dwin_Tempe_humi_update( void)
{
uint8_t Tempe_humi_date[20]; //Commands sent to the LCD screen
AHT20_Read_CTdata(CT_data); //Read temperature and humidity
Tempe_humi_date[0]=0x5A;
Tempe_humi_date[1]=0xA5;
Tempe_humi_date[2]=0x07;
Tempe_humi_date[3]=0x82;
Tempe_humi_date[4]=(ADDR_TEMP_HUMI>>8)&0xff;
Tempe_humi_date[5]=ADDR_TEMP_HUMI&0xff;
Tempe_humi_date[6]=((CT_data[1] *200*10/1024/1024-500)>>8)&0xff;
Tempe_humi_date[7]=((CT_data[1] *200*10/1024/1024-500))&0xff;//Calculate the temperature value (enlarged by 10 times, if t1=245, it means that the temperature is now 24.5°C)
Tempe_humi_date[8]=((CT_data[0]*1000/1024/1024)>>8)&0xff;
Tempe_humi_date[9]=((CT_data[0]*1000/1024/1024))&0xff; //Calculate the humidity value (magnified 10 times, if c1=523, it means that the humidity is 52.3% now)
Usart_SendString( USART_DWIN,Tempe_humi_date,10);
}
Post time: Nov-08-2022