大学项目遇到的问题及解决方案总结
项目1:远洋船务有限公司外包项目-转速计
-
实时转速显示数字管V,一个io输出与速度有数学关系的脉冲信号(公式已知)频率。
-
1、启动自检、数字管和led闪烁,10s正常工作后。2.默认情况下,显示速度时未显示的数字管是黑色的,速度上升后才会发光。3.当需要更改参数时,按键1,显示不同的参数值,修改长按键4,led与数码管闪烁,按键短按加减1,长按快速加减,长按4保存。4、报警功能,对于继电器1当速度大于高阈值时动作,小于低阈值时延后D秒,继电器1不动作。其它继电器只有一个阈值,大于动作,小于不动作。
-
一开始对方说模拟实现这些功能,我用proteus模拟实现后,对方要做实物,proteus仿真到stm32实物实现代码可能不完全可用,尤其是延迟定时器中断。模拟后,将程序烧录到实物上存在定时器无法使用的问题。输出与转速有数学关系(公式已知)频率IO只有当转速达到一定时,频率才会变化,不能实时跟随转速变化,有些转速值根本无法显示。实现要求4时,暂时不知道如何实现。
-
当被告知模拟代码不适用时,我先在自己身上stm32上写了一个简单的程序,包括定时器中断,然后放在里面proteus模拟软件中的内部真的中断了led闪烁频率不符合我设定的参数要求。百度,仿真stm32时,时钟确实存在不准的问题,原因是proteus软件问题,proteus模拟51单片机可以,模拟stm32程序中使用的时钟计算不准确。所以我只是写了另一个适合实物的代码。我知道对方要求做实物,所以我直接在实物上调试。因此,我在自己的单片机上重写了一个定时器(根据我以前写定时器的想法),并问对方有多少ms执行哪些程序会大大改变参数。输出频率不能跟随输入实时变化的问题是,在代码程序中输出频率时,只修改了计数阈值的参数。根据已知的数学公式,没有考虑速度范围,导致数学公式获得的计数阈值无法达到。因此,我根据速度范围修改了定时器的基数阈值和分频系数,当数字管显示速度时,当速度变化较大时,使用类似的二分法原理,数字管显示是一个逐渐接近目标值的过程,而不是来回跳跃,让用户看起来更舒适。在最终实现要求4时,我想到了数字电气中的施密特触发器,类似于施密特触发器,所以我定义了两个参数来标记当前状态是从低到高还是从高到低。
-
模拟是否可行并不意味着实物没有问题。如果你最终想做实物,如果没有危险和成本,直接在实物上做。用于程序调试debug很快就会出现问题。
项目2:角磨机牵引绳拉力试验滑车-山西电网项目
-
实时显示钢丝绳张力和高空风速值,实时向工作人员显示两个值
-
1.钢丝绳张力和风速超过阈值报警。2.测量的钢丝绳张力误差小于2%。3.通信距离大于2km。4.实时上传到云平台并实时显示(可选)。
-
通过传感器获得钢丝绳的张力值和风速值stm32的DAC根据传感器的压力和输出电压关系,收集传感器的电压值并将其转换为压力值。但压力传感器输出的电压值为0~5v,采集前,我用电阻分压让单片机采集0-3.3v电压值,但同一压力,不同单片机收集的值不同,三轮滑机械结构获得的钢丝绳张力值受机械结构精度的影响较大。
-
对于DAC电压采集,我在网上收集了别人做的5v转3.3v降压电路,但仍存在不同单片机收集的不同值的问题。后来,我问了模具电气老师。老师说,如果精度要求不是很高,直接分压两个电阻。我说我想使用单片机DAC采集时,老师说采集前最好加个跟随器,因为分压电阻与单片机内的电阻并联,分压公式不对,我突然意识到,最后,在采集前添加了一个电压跟踪器。果然,不同的单片机在相同的压力下采集相同的压力。对于张力值受机械结构影响较大的问题,我正在调试stm32程序获得的经验(有时候不想debug,就printf打印变量值,添加程序循环等printf打印字符看程序跑到哪里)建议老师先做实验,然后记录钢丝绳的张力值和张力值stm32DAC收集到的电压值,多记录几组,然后拟合电压值和钢丝绳张力值的曲线,最后以数组的形式列出电压值及其相应的张力值,最后通过数组中的电压值,显示相应的张力值。
-
对于没有做过的功能,百度,尤其是CSDN找到它,学习别人的计划,理解和修改你自己的项目。不要理解问题也记得问专业课程老师,他们知道最基本的原则,但也有项目经验。
项目3:智能物流搬运机器人-全国大学生工程综合能力培训大赛(山西省一等奖)
- 根据二维码值和物块摆放顺序,识别二维码,区分物块的颜色,将上下两层共有6个物块到指定位置,最后返回。
- 1.程序自动运行得满分,遥控运行基于原始得分*50%。2、一次性装卸3个物块(国赛要求)。3、不能使用补光灯(国赛要求)。
- 我主要负责视觉,通过串口与负责物流车程序的队友沟通。openmv在程序中,识别块的颜色受环境照明的影响很大,有时无法识别,或将识别错误的顺序发送给主控单片机或几个顺序,导致物流车辆行走轨迹异常,队友找不到问题(他们都认为他们的程序没有问题)。
- 对于openmv百度搜索识别物块的颜色时,大多数人都会遇到同样的问题。所以我研究了openmv识别颜色的原理,openmv识别块的颜色将提前有一个颜色阈值。根据此阈值,找到相机中和阈值表示的相同像素域。它受环境光的影响很大,因为环境光强的物体是明亮的,光弱的物体是暗的,有时与设定的颜色阈值有很大的不同,因此无法识别。如果环境光强不变,就很容易识别,所以在物流车辆的基础上增加了光强传感器和补充灯,记录最快识别块颜色时的光强值。如果程序中检测到的光强小于此值,则增加补充灯的亮度。如果大于此值,则减弱补充灯的亮度。其他团队在比赛前根据当时的环境调试识别块的颜色阈值。我们的计划节省了很多时间来调试其他功能。与队友合作的问题,因为我们都认为我们的程序没有问题,找不到解决方案,但两个人仍然看代码,因为我们通过串口通信,所以在串口助手的帮助下模拟汽车旅行过程,终于发现了问题,通过串口屏幕看到我识别没有问题,但我发送了两个二维码值给队友主控单片机,导致第二次发送,队友认为是块颜色值,因此,物流车辆行走轨迹异常。
- 与队友沟通时,必须首先确定发送数据协议,并发送几次。在发送程序中检查车辆数据是否有问题,然后发送。对于串口通信,可以使用串口助理软件调试发送人和接收人的程序。