Control Univelop CNC 4/5轴板(用户模式)






4.93/5 (5投票s)
一个C++类,用于在Linux用户模式下控制Univelop CNC 4/5轴控制器板。
引言
最近,我得到了一块Univelop CNC 4/5轴控制器板,并希望编写Linux用户模式代码来与该板进行接口。该板能够控制最多5个步进电机和6个开关(4个轴限位器\ 1个停止\ 1个辅助)。该代码还使用虚拟定位,允许实施者将步进电机移动到虚拟位置,例如-50到+50。该类允许为每个轴的步进电机脉冲延迟设置,因为实施者可能为每个轴配备不同速度的步进电机。对于较慢的步进电机,可能需要增加延迟。过快的延迟会导致步进电机发出嗡嗡声而无法旋转。开关状态函数在开关闭合时返回true,打开时返回false。Univelop5Axis
类的函数都有很好的注释,并且Univelop用户手册已附加在本页顶部。该手册显示了所有引脚信息,以便理解代码的内部工作原理。
该项目使用CodeBlocks完成,但也可以使用GCC从命令行编译。
Using the Code
以下是该类中的核心函数列表。以下内容可以在您的主函数中使用
#define BASEPORT 0x378
Univelop5Axis r( BASEPORT );
// To display the states of the 6 switch's which
// can be used as limiters, emergency stop, or aux
printf( "AuxState: %d\n" , r.IsSetAux() );
printf( "StopState: %d\n" ,r.IsSetStop() );
printf( "XlimState: %d\n" ,r.IsSetXLimit() );
printf( "YlimState: %d\n" ,r.IsSetYLimit() );
printf( "ZlimState: %d\n" ,r.IsSetZLimit() );
printf( "AlimState: %d\n" ,r.IsSetALimit() );
// Moving individual steppers Clockwise (CW) or Counter Clock Wise (CCW)
printf( "Testing stepper X movement\n");
r.StepX( 500 , Univelop5Axis::CW);
r.StepX( 500 , Univelop5Axis::CCW);
printf( "Testing stepper Y movement\n");
r.StepY( 500 , Univelop5Axis::CW);
r.StepY( 500 , Univelop5Axis::CCW);
printf( "Testing stepper Z movement\n");
r.StepZ( 500 , Univelop5Axis::CW);
r.StepZ( 500 , Univelop5Axis::CCW);
printf( "Testing stepper A movement\n");
r.StepA( 500 , Univelop5Axis::CW);
r.StepA( 500 , Univelop5Axis::CCW);
printf( "Testing stepper C movement\n");
r.StepC( 500 , Univelop5Axis::CW);
r.StepC( 500 , Univelop5Axis::CCW);
// To move directly to a virtual position
// you can use the following functions
// The each of the sets of three will step the motors 800 times.
// (0 to 200 = 200(CW) , 200 to -200 = 400(CCW) , -200 to 0 = 200(CW))
r.MoveXTo( 200 ); // +200
r.MoveXTo( -200 ); // -200
r.MoveXTo( 0 ); // Goto the origin
r.MoveYTo( 200 );
r.MoveYTo( -200 );
r.MoveYTo( 0 );
r.MoveZTo( 200 );
r.MoveZTo( -200 );
r.MoveZTo( 0 );
r.MoveATo( 200 );
r.MoveATo( -200 );
r.MoveATo( 0 );
r.MoveCTo( 200 );
r.MoveCTo( -200 );
r.MoveCTo( 0 );
Univelop 板图片
这是插入并行端口的主板
这是连接了轴控制器的主板
历史
- 2009年6月12日 - 初始发布。