` 本帖最后由 zhihuizhou 于 2011-11-14 16:11 编辑
这些都是一些参加比赛的获奖程序,由工程师写的评语,具有很高的学习价值。发这样的帖子 主要是为了让大家去研究别人的程序,然后对比自己的思路,最后看看评委的评价找出不足并改正
本程序由网友herochen 提供,谢谢其无私分享
音效:
执行程序:
源程序:
评语:
1.程序界面美观,有创意。程序代码清晰整洁。若把类似控件和数据以数组,簇等表示,程序代码应当可以更清晰。
2.程序运行资源估算,程序基本没发现BUG
3.程序结构优化上欠佳,tiME OUT的事件可以用VALUE CHANGE来替代,以减少CPU运算资源(算法);
“买 1”到“买 5” 使用族来实现会更好优化程序;
在重复使用读声音文件程序部分,可以做成SUB VI,调用不同音效可以用RING来实现。
4 GUI 整体设计不错,
程序连线较为整齐,清晰,控件摆放较为有序;
但没有注意到不同分辨率的用户作出窗口大小处理(本人使用1024X768窗口,界面已有部分无法显示)
5 部分细节需要注意 如数据类型
了解更多labview事件结构请进入:https://bbs.elecfans.com/topic-labviewevent.html
`
4
|
|
|
|
从零开始学习C++6.0之并口控制
步进电机的步数控制
因为过年,已经好久没跟进这个步进电机的程序控制了,其实我自己也还没有学到太多的新东西,所以不好意思写出来。
年前最后一编博文提到精确控制步进电机步数的程序,我这次把这个问题说一下,在这里尽可能详细的说明,可供和我一样处于摸索阶段的朋友参考。大家如果有什么更好的控制方法,希望能以留言或邮件形式( 178268235@qq.com)交流。
1、 步进电机脉冲
步进电机完成一个步进角需要一个完整的脉冲上下沿(之前我以为执行一次定时器输出一个1或0就可以了,实验测试中才发现这个想法很可爱^_^)。比如1.8°步进角的电机,完成一圈需要200个脉冲,实际上在控制定时器函数函数OnTimer执行了200个高电平1和200个低电平0,合计执行400次定时器程序才能完成一圈的行走。
2、 实验程序实现
在程序窗口中我们布局一个编辑按钮(IDC_PX1)用做输入步数,并将这个步数值传递给一个全局变量(int pxb=0),其中执行按钮中的两行代码如下:
pxb=GetDlgItemInt(IDC_PX1); //接受输入步数值
pxb=pxb*2; //一个完整的高低电平脉冲才走一步,需要2倍数值
以下是在时间函数OnTimer中的截图,只在原来的基础上增加了if () else 语句为循环做控制,达到根据需要值输出脉冲数量,进而精确控制电机步数。最后面a++那两行代码可以不要,我这里是附带过来,可适当修改,知道执行次数,就可变通为步数计步器等。全局变量pxb将输入的步数乘以2后,传递给定时器函数做为执行次数,产生定量脉冲。
3、 误差问题
有关步进电机的误差问题,在网上也有很多这方面的资料,比如用1.8°步进角的电机实现30°、45°、60°、90°的控制,其中45°和90°的步进控制就很容易,走25步就步进了45°角,走50步就步进了90°角,25步和50步都是整数。
然而步进30°角时,需要16.7步,只能取整走17步,实际上走了30.6°角;而步进60°角时走33步,实际走了59.4°,在这种不完全整步的情况下,走走停停完成一圈,就会产生误差。
这种步进电机的误差,有些驱动板提供脉冲细分以减小误差,其实我们通过程序对步进电机步数进行统计,在一定的步进量后进行补偿,有点类似于归零。这只是一个思路,我自己也还没有编写这个补偿程序,在以后的实际应用中一定会编写的,因为这误差控制是必须的。
今天就说这么一丁点,虽然知识点不多,但我个人觉得挺重要的,起码理解了步进控制的步进原理和精确控制。如果不掌握这一点,在实际应用中,就实现不了“要它走几步就走几步”了。这可是智能小车和机器人控制的一些基础程序原理。
谢谢大家支持!最近努力中,计划把针式打印机拆下的步进电机驱动电路设计一下,届时再和大家分享!
|
|
|
|
|
好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!好!!
|
|
|
|
|
1111111111111111111111111111111
|
|
|
|
|