本帖最后由 爱好者cnc 于 2023-5-3 14:41 编辑
Raspberry Pi(中文名为“树莓派”,简写为RPi),只有信用卡大小的微型电脑,其系统基于Linux,受众多计算机发烧友和创客的追捧。LinuxCNC软件是控制数控机床专业软件,它可以驱动铣床、车床、3D 打印机、激光切割机、等离子切割机、机械臂、六足机器人等。许多CNC爱好者很早就希望能在树莓派上运行,虽然都是Linux系统,但还是要会编译软件,使不会计算机语言的不能如愿。直到今年LinuxCNC2.81版本出来,软件封装好了树莓派系统,使数控爱好者又多一个运行环境。 下面介绍一下LinuxCNC如何在树莓派上运行。 首先到LinuxCNC官方网站下载LinuxCNC 2.8.1 Raspberry Pi OS,用Win32DiskImager软件烧写到SD卡上,把SD卡插入树莓派上,打开树莓派电源,第一次进入软件会提示设置,选中文,进入桌面就是中文的了。进入桌面点左上角的树莓LOGO,下拉菜单找到CNC,点开StepconfWizard,进行软件设置。 根据向导一步一步,主要参数还要根据自己机器设置。也可以完成后到文档中改数据。 设置完成后,桌面上会生成一个快捷方式和一个文件夹,但快捷方式现在不能直接运行,因为我们设置生成的是并口端口,树莓派现在运行会出错。 打开文件夹,里面有几个文件,主要看后缀为HAL和INI文件,INI文件是机器的机械参数,爱好者都明白,不多说,重要的是HAL文件,HAL文件也就是驱动文件,原是驱动并口的,现在要为改树莓派的GPIO口,不然软件打不开。 看一下原始HAL文件 loadrt [KINS]KINEMATICS loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS loadrt hal_parport cfg=”0 out” setp parport.0.reset-time 5000 loadrt stepgen step_type=0,0,0 addf parport.0.read base-thread addf stepgen.make-pulses base-thread addf parport.0.write base-thread addf parport.0.reset base-thread addf stepgen.capture-position servo-thread addf motion-command-handler servo-thread addf motion-controller servo-thread addf stepgen.update-freq servo-thread net spindle-cmd-rpm <= spindle.0.speed-out net spindle-cmd-rpm-abs <= spindle.0.speed-out-abs net spindle-cmd-rps <= spindle.0.speed-out-rps net spindle-cmd-rps-abs <= spindle.0.speed-out-rps-abs net spindle-at-speed => spindle.0.at-speed net xstep => parport.0.pin-02-out setp parport.0.pin-02-out-reset 1 net xdir => parport.0.pin-03-out net ystep => parport.0.pin-04-out setp parport.0.pin-04-out-reset 1 net ydir => parport.0.pin-05-out net zstep => parport.0.pin-06-out setp parport.0.pin-06-out-reset 1 net zdir => parport.0.pin-07-out LPT hal_parport是并口驱动,现在要改为树莓派端口GPIO驱动。我把步进电机XYZ轴脉冲方向定义为 GPIO xstep,29,xdir,31, ystep,32,ydir,33, zstep,35,zdir,37 loadrt Hal_parport cf=”0 out”就是告诉HAL加载驱动的时候默认是为LPT ,hal_parport是驱动的名字,这里我们改一下树莓派驱动的名字,cf=”0 out”是输出端口。
首先,我们必须确定 3 个轴的输出引脚,每个轴有 2 个 step 和 dir 引脚,因此我们需要 6 个用于步进驱动器的输出引脚。 树莓派 指定 26 个输出引脚的顺序如下: RPi_gpios[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22 , 21, 23, 24, 25, 26, 27 };
RPi_pins[] = {3, 5, 7, 29, 31, 26, 24, 21, 19, 23, 32, 33, 8, 10, 36, 11, 12, 35, 38, 15, 40, 16, 18 , 22, 37, 13 }; 根据这个表规定使用为1,不使用为0,转换为二进制是 1000000100000110000011000,转换10进制是16911384 我们把loadrt hal_parport cf=”0 out”转为loadrt hal_GPO dir=16911384(hal_gpio 的驱动程序是 GPIO 文件)。dir=16911384 声明 GPIO 的输出引脚。 line pets parport.0.reset-time 5000这行我们删除。loadrt stepgen step_type=0,0,0这一行是 step/dir 类型中 step 的输出脉冲类型,我们保持原样。 编辑后我们得到loadrt hal_gpio dir=16911384 loadrt stepgen step_type=0,0,0 在文件中找到所有字母parport.0替换为 hal_gpio
找到这一行addf parport.0.reset base-thread去掉了。修改后: loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES kins=trivkins tp=tp loadrt hal_gpio dir=16911384 loadrt stepgen step_type=0,0,0 addf hal_gpio.read base-thread addf stepgen.make-pulses base-thread addf hal_gpio.write base-thread
根据前面树莓派3轴步进电机定义pin 29 作为 xstep,31 作为 xdir,32 作为 ystep,33 作为 ydir,35 作为 zstep,37 作为 zdir。
转换为树莓派GPIO端口驱动:
net xstep => hal_gpio.pin-29-out
net xdir => hal_gpio.pin-31-out
net ystep => hal_gpio.pin-32-out
net ydir = > hal_gpio.pin-33-out
net zstep => hal_gpio.pin-35-out
net zdir => hal_gpio.pin-37-out
保存文件就可以运行。 软件可以正常打开运行后,就可以做接口板了,因为树莓派电源是3.3V, 驱动电流有限,输入和输出最好有光耦隔离。下面是我做的一个接口板。 树莓派体积小,完全可以无头(不要显示器,不要键盘鼠标)运行,还可以手机安装VNC软件,手机做屏幕,做成脱机控制器。 此文只是简单介绍一下,起个抛砖引玉作用。在树莓派下完全可以运行LinuxCNC ,LinuxCNC 是免费开源软件,实时稳定,功能强大,爱好者就多一个数控系统了。
|