从零开始学习VC++6.0之并口控制(第六课 四轴步进电机控制)

从零开始学习C++6.0之并口控制

 

第六课  四轴步进电机控制

 

差不多一个星期没写新东西了。过几天就都放假过年了,今天把这次并口学习的最后程序写完,本节课是完成四个方向的步进电机的控制实验。所用的接口板和驱动板是上一编文章中所用到的,其实我想找一款完全是25针直接输出的接口板,只带5V电源,其他功能都不需要,但都找不着。如果以后真用上,只有自己做PCB接口板了。

程序的最终界面图:

从零开始学习VC++6.0之并口控制(第六课 四轴步进电机控制)_第1张图片

一、简单说明

1、  我是根据原接口板上提供的的五轴步进电机XYZAB轴的字样来设计程序界面的,驱动板其实有一块就行了,需要测试哪个步进电机就接到相应的接口就行了,不用一下子买四块回来驱动四个电机,要不以后用不上就浪费了。

2、  程序代码我就不全部帖出来了,我把程序资源上传到网站,大家自己去下载就行了。

3、  程序中用到的滑块,是一个新增的知识点,用到Windows消息处理WM_HSCROLL事件(小心添加错WM_VSCROLL,这个是垂直滑块用的,极容易搞错的)。

 

二、程序设计

1、界面设计

这次我们就不拷贝以前的工程目录了,重新布局按钮和ID,全新设计。

新建工程Porton,添加组框(输入标题文字:X轴步进电机(P2-P3-P14引脚))、静态文本、编辑框(IDC_PX)、滑块(IDC_SLIDER1)、启动按钮(IDC_PXB1)、停止按钮(IDC_PXB2)、反转按钮(IDC_PXB3)、正转按钮(IDC_PXB4);

通过复制粘贴的方式把Y轴、Z轴、A轴的都按界面设计好,有规则的ID编写方便以后读写代码。

Y轴:编辑框(IDC_PY)、滑块(IDC_SLIDER2)、启动按钮(IDC_PYB1)、停止按钮(IDC_PYB2)、反转按钮(IDC_PYB3)、正转按钮(IDC_PYB4);

Z轴:编辑框(IDC_PZ)、滑块(IDC_SLIDER3)、启动按钮(IDC_PZB1)、停止按钮(IDC_PZB2)、反转按钮(IDC_PZB3)、正转按钮(IDC_PZB4);

A轴:编辑框(IDC_PA)、滑块(IDC_SLIDER4)、启动按钮(IDC_PAB1)、停止按钮(IDC_PAB2)、反转按钮(IDC_PAB3)、正转按钮(IDC_PAB4);

其中滑块的属性需要修改一下样式,打上两个勾才会显示刻度:

 从零开始学习VC++6.0之并口控制(第六课 四轴步进电机控制)_第2张图片

 

2、先保存好做好的界面,然后对工程进行WinIo配置,按第一课讲的完成五个步骤操作,再返回来进行下一步的程序设计。

 

3、添加WM_TIMERWM_HSCROLL事件处理器

打开“ClassView”-“CPortcon1Dlg”窗口,选择右键菜单“Add Windows Message Handler”,在弹出的窗口中左侧事件列表找到“WM_TIMER”和“WM_HSCROLL”,分别双击就会移动到右边窗口:

 从零开始学习VC++6.0之并口控制(第六课 四轴步进电机控制)_第3张图片

点击“确定”后返回到ClassView窗口的“CPortcon1Dlg”列表中就会自动增加了一个OnTimer(UINT nlDEvent),以及OnHScroll(UINT nSBCode,UINT nPos,CScrollBar  *pScrollBar),这两个就是我们需要的定时器和水平滑块处理函数了。

从零开始学习VC++6.0之并口控制(第六课 四轴步进电机控制)_第4张图片

 

4、  为滑块处理函数添加类变量,才能在程序中引用有关滑块的应用函数。在四个滑块控制的任意一个选择右键菜单“建立类向导”,在弹出的MFC ClassWizard窗口中选择Member Variables栏,在ID控制列表中分别双击IDC_SLIDER1IDC_SLIDER2IDC_SLIDER3IDC_SLIDER4,弹出如下窗口:

        从零开始学习VC++6.0之并口控制(第六课 四轴步进电机控制)_第5张图片

 

分别输入类变量名称m_PXSliderm_PYSliderm_PZSliderm_PASlider四个变量名,类型选择都Control,确定后返回到ID列表窗口就会显示了四个类变量,如下图:

 

从零开始学习VC++6.0之并口控制(第六课 四轴步进电机控制)_第6张图片

 

5、  输入代码

    所有的代码就不详细说明了,利用定时器生成CLK脉冲和四个按钮的代码都是和前一课步进电机的控制代码一样的,这里只把一些关键的代码说明一下。

A、双击OnInitDialog(),添加用于定时器的全局变量pxtimerpytimerpztimerpatimer

从零开始学习VC++6.0之并口控制(第六课 四轴步进电机控制)_第7张图片

 

B、 初始化滑块的一些值:

从零开始学习VC++6.0之并口控制(第六课 四轴步进电机控制)_第8张图片

 

C、 在滑块处理函数中OnHScroll中利用CWnd定义变量区分不同滑块,这是使用多个滑块时必要的代码,它不像SetTimer()函数简单的用0123就可以区分。

        从零开始学习VC++6.0之并口控制(第六课 四轴步进电机控制)_第9张图片

 

     D、控制启动、停止、反转和正转的代码这里就不再叙述了,完成好一个电机的代码,其他三个电机,通过复制粘贴和必要的修改就可以了。全部代码我会上传到网站供大家下载学习之用。

 

谢谢从第一课跟进过来的朋友,学到这里我们应该对步进电机的控制有了一定的认识,接下来的工作就靠自己多多摸索了,我其实也和大家一样属于初学者,我的目标就是想DIY一台3D打印机,买现成的实在太贵了,网上最少的也要近5000元,更何况通过这样的学习和实验可以掌握利用电脑做上位机控制的原理知识。为以后深入学习其他控制技术掌握一定的方法。

讲完这并口的控制以后,计划拆几台针式打印机(我那维修仓库至少有20台废弃的针式打印机,差点按0.4元的价格称掉了,呵呵),把里面的步进电机控制的电路拆分出来,那些电子零件是可以利用的。还有一点,LQ1900K的打印机觉得最好,那步进角1.8度的电机如果在网上买,估计不少于50元。如果到时拆解到很多,我会放到我的淘宝店(http://shop33602599.taobao.com/),分享给需要的朋友们。

要过年了,祝大家蛇年快乐!

 

你可能感兴趣的:(VC6++语言,步进电机控制,25针并口控制)