【DigiKey“智造万物,快乐不停”创意大赛】基于touchgfx的智能工业控制+作品提交
[复制链接]
基于touchgfx的智能工业控制
作者:huihuihaha
一,作品简介
最开始的功能介绍,基于touchgfx的智能工业控制,采用stm32H7B3其实就是类似PLC的功能基本功能介绍:1. 8路数字开关量输入(带光耦隔离)。2. 3路模拟量(0到20ma/0到10V或者0到3.3V)输入,也可以扩展多路输入主要是针对工控当中,压力传感器,温度传感器,流量传感器等。3. 5路继电器输出。4.一路模拟输出(主要是通过PWM转电压或者转电流,也可以外加DAC输出)。5. 485通讯。6. CAN通讯。7. TTL通讯。8. 支持高速脉冲输出。9. 支持高速脉冲输入。10. 24V工业供电板子带wifi和摄像头功能,可以扩展为带视屏监控工业控制,并同屏显示
首先说明一下板子遇到的问题,刚开始演示了板子上电自带的DEMO,有点异常
后来自己烧录demo,发现烧录不进去
具体问题在这个贴子里
https://bbs.eeworld.com.cn/thread-1267153-1-1.html?u_atoken=47114d17-0c35-4e9d-8657-29268b3b9b2b&u_asession=01002wM1u95o2YnjS5Pr7qUBsqzpW3GccQ_RWFZq01VWml1BuXFzR05TOWfwcwr-PymZM6L1f5NTNcWGaITlOzUNsq8AL43dpOnCClYrgFm6o&u_asig=056p5cIcPIKtRzQlYqVpNFBYMl5JSO5cAo7BtFZ6OTSs3yQFj_Vxvv3M2cwR7AC4JBDAvQsFMDchG23Hh9ZDuaxAHXpLYNFPtxEK9wXVb_czkcizBTPTYdDk7qkeGvzB-Bpq5wK7uHxbxamc5qwkv4KQBsq-L0CvNn-Q7JLgNjGjEgDMYd2UzP3FbXDFEFR5FKksmHjM0JOodanL5-M1Qs1X4im3a6OHmSHvBK-huLTVZq-fcI8Gz2Y-WcBbnRIQ2DOobPaQATwXM0bubPD0F6mhBG2rOAAZRve28oIW0KUOTUpLHxH1iRKZmnjAu0Zefw&u_aref=maMXljs7aKEyYm%2FPyOi62VOR39g%3D
整体界面如下
非常感谢sipower和wenyangzeng两位大哥的大力指导 啊
烧写内部flash没有问题,外部flash好像是烧录成功,但是程序不能运行,提示也是有错误的,作品提交时间马上就到了,先把整体功能提交下图是整体的UI。其实这个就是一个串口屏,工业控制的.
代码框架
是采用touchgfx的模版生成代码并增加串口开发大大节省了开发时间,减轻了开发难度。
应用触摸控件,显示控件,图标切换等
二、系统框图
三、各部分功能说明
HB3这个板子主要是人机界面控制这块,基于touchgfx的智能工业控制,采用stm32H7B3其实就是类似PLC的功能基本功能介绍:
1、控制板是以stm32G070作为主控,三路开关输入,光耦隔离,四路模拟量输入,两路PT100输入,485输出,TTL输出,通过TTL和H7B3连接
2、代码这块
ADC采集这块
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
//uint16_t Pt1_data; //PT100输入1-2
//uint16_t Pt2_data;
static uint16_t sum0=0;
static uint16_t sum1=0;
static uint16_t sum2=0;
static uint16_t sum3=0;
static uint16_t sum4=0;
static uint16_t sum5=0;
float y1,y2,y3,y4,y5,y6;
static uint16_t adc_cnt = 0;
// adc_cnt++;
sum0+=adc_buffer[0];
sum1+=adc_buffer[1];
sum2+=adc_buffer[2];
sum3+=adc_buffer[3];
sum4+=adc_buffer[4];
sum5+=adc_buffer[5];
if(++adc_cnt>=10)
{
adc_cnt=0;
Vin1_data=sum0/10;
sum0=0;
Vin1_data=3300*Vin1_data/4096;//转换成mv
Vin2_data=sum1/10;
sum1=0;
Vin2_data=3300*Vin2_data/4096;//转换成mv
Iin1_data=sum2/10;
sum2=0;
Iin1_data=3300*Iin1_data/4096/150;//转换成ma
Iin2_data=sum3/10;
sum3=0;
Iin2_data=3300*Iin2_data/4096/150;//转换成ma
Pt1_data=sum4/10;//PT100输入1-2
sum4=0;
y1=(2.5f*(1.0f/21.0f));//桥的基准电压V2
y2=(float)((Pt1_data*(3.3f/4096.0f))/100.0f);//算出差分电压
y3=(float)y1+y2;//PT电阻电压V3
y4=(float)(2000.0f*y3)/(2.5f-y3);//普通电阻阻值RX+Rd
y5=(float) (y4-100.0f)/0.385f; //电阻
y6=y5+17.2f;
Pt1_data=y6*10;
Pt2_data=sum5/10;//PT100输入1-2
sum5=0;
// printf("\r\n温度为:");
// printf("%f",y6);
// printf("度");
}
}
// 定时器更新中断回调函数
输入输出这块
void X_Y_filter(void)
{
/*输入状态刷新*/
if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_10)==0)X00_State = 1;else X00_State = 0;
if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_11)==0)X01_State = 1;else X01_State = 0;
if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_12)==0)X02_State = 1;else X02_State = 0;
/*输出状态刷新*/
if(!Y00)Y00_State = 0;else Y00_State = 1;
if(!Y01)Y01_State = 0;else Y01_State = 1;
if(!Y02)Y02_State = 0;else Y02_State = 1;
if(!Y03)Y03_State = 0;else Y03_State = 1;
if(!Y04)Y04_State = 0;else Y04_State = 1;
}
作品源码
我的下载_个人中心- - 电子工程世界EEWORLD
https://download.eeworld.com.cn/detail/huihuihaha/630463
六、项目总结
通过本次大赛的参赛过程,深切感受到STM32H7B3I的强大功能,主要是对touchgfx开发的熟悉。
新建 Microsoft Word 文档.docx
(485.47 KB, 下载次数: 4)
|