完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
最近进行课程设计,老师要求通过PID调节来控制温箱的温度,并且在组态软件上显示曲线来计
最近进行自控课程设计,老师要求使用STM32系列的芯片通过ADC采集温度传感器的电压,通过pwm控制,在PID算法的加持下对温箱进行数学模型的测试及PID调节。 原本计划使用之前学长的程序加上自己的pid程序进行调节,奈何学长配套的板子全部坏掉,无奈只能使用自己的STM32F103板子进行测试,但是发现自己移植了学长的modbus ascll通信协议之后并不能和组态软件通信,自学也无果,没有曲线的显示,课设基本就宣告失败,突然想到在之前老师讲过使用MATLAB可以和串口通信,于是想到用MATLAB和单片机相连,进行数据传输并作出曲线图; 数据的传输使用单片机的MDA传输; 废话不说,上图: cubemax 的配置: 时钟配置: ADC配置: 串口配置: DMA配置: 注意在模式选择上选择循环模式,因为要对数据进行循环传输,在数据宽度上都选择半字,也就是16位; 时钟频率: 文件的生成: keil里的配置: 这里就只列出主要的传输程序: 数据传输采用帧头与帧尾,在帧头与帧尾之间放传输的数据目的是为了在MATLAB中进行识别传输,防止数据紊乱; MATLAB的程序: time=3000; %所需测量时间,只需改这一个参数;单位秒; chip = serial(‘COM2’, ‘BaudRate’,115200,。.. ‘DataBits’, 8, ‘Parity’, ‘none’,‘StopBits’, 1, ‘FlowControl’, ‘none’,‘Terminator’,‘CR/LF’,‘timeout’,time); set(chip); fopen(chip); a=time/5;b=0;c=1;d=1; E=1:time/5*2; while a》0 A=fread(chip,4); if (A(c,1)==2)&&(A(c+3,1)==255) E(1,d)=A(c+1,1); E(1,d+1)=A(c+2,1); d=d+2; end A=[]; a=a-1; end fclose(chip); D=1:time/5; m=1;l=1; while m《time/5+1 D(1,m)=(E(l)*255+E(l+1)-993)*100/4096; l=l+2; m=m+1; end x=5:5:time; y=D(1,x/5); plot(x,y) axis([0,time,0,150]) 下面是进行3000秒(50分钟)的温度测试,中间有一个小小的误差,可能是传感器问题,欢迎大佬指正,实验图如下: 过几天进行pid测试,下章写关于pid测试的; 本文主要应用于本人学习记录,同样很开心和广大同学分享;不喜别看,有问题加QQ981526906一起交流共同进步,有不足之处请不吝赐教。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1561 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1501 浏览 1 评论
933 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
665 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1555 浏览 2 评论
1850浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
615浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
506浏览 3评论
510浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
491浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-11 00:54 , Processed in 0.689179 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号