65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.93/5 (5投票s)

2009 年 6 月 13 日

MIT

1分钟阅读

viewsIcon

30604

downloadIcon

1912

一个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 板图片

这是插入并行端口的主板

UnivelopCNC/mainboard.jpg

这是连接了轴控制器的主板

UnivelopCNC/total.jpg

历史

  • 2009年6月12日 - 初始发布。
© . All rights reserved.