伺服电机回原点的原理_伺服电机几种回原点的方式

伺服电机有两种编码器: 增量式编码器和绝对值式编码器,绝对值式编码器还有单圈绝对值和多圈绝对值之分。 不论哪种伺服都需要在使用之前回原点,绝对值只是回原点的次数比较少而已,本文只介绍增量式编码器的回原点方式。 一、旋转轴应用 1、直接寻找编码器的Z相脉冲,当检测到Z相脉冲时,立即停止电机,作为原点位,这种方式不需要增加额外的传感器,但是回原点速度不能太高,重复精度也不高,这种方式极少应用。 2、使用接近开关,需要把感应片做的尽量大一些,当感应到接近开关时先减速,然后感应片离开接近开关时立即停止电机,作为原点位; 减速之后也可以检测Z相脉冲来停止电机,作为原点位,此时的Z相脉冲比接近开关的响应精度更高。 3、使用槽型光电开关,同样感应片或者感应槽做的要尽量大一些,方式类似接近开关的应用,只是槽型光电开关的信号有两种: 入光ON和出光ON,这个需要根据感应片是开槽的还是做时针片装的来选择。 二、直线轴应用 1、在直线轴一端放置一个传感器,指定伺服回原点就是朝着这个传感器运动,当走到指定该传感器后立即停止,并反向低速运动,检测离开传感器或者Z相脉冲然后停止,作为原点。 因为没有极限传感器就需要设置逻辑限位,也就是在没有回原点之前不能随意操作伺服电机。 2、在直线轴两端放置两个极限传感器,指定伺服回原点的方向,当走到指定方向的极限传感器后立即停止,并反向低速运动,检测离开极限传感器或者Z相脉冲后立即停止,作为原点。 3、在直线轴两端放置两个极限传感器,并在靠近一端极限传感器的地方再放置一个原点传感器,寻找原点必须先朝有原点传感器的一端运动,直到感应极限传感器立即停止,并反向低速运动,当检测到原点传感器后再次降速,检测离开原点传感器或者Z相脉冲后立即停止,作为原点。 此种方式是最常见的一种,但是很多人不是按照我叙述的过程来操控,经常会发生一些意外情况,请大家好好斟酌,因为这种方式会有很多的变种,我就不一一列举了。 4、没有任何传感器,这种应用经常用在伺服电缸上,就是让伺服的负载达到多少百分比之后就停止,然后作为原点。 这是简单而粗暴的应用,需要电机的响应比较快,而且在容易发生碰撞的地方不能应用,当电缸被机械阻挡时就会被认为是原点,误判会比较多。 声明:本文所用图片、文字如涉及作品版权问题,请第一时间告知,我们将根据您的要求修改或立即删除内容!

e812398d2492fa98c2d596824d94a61f.png

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
控制伺服电机原点需要了解您所使用的伺服电机和控制器的具体型和接口类型,以及您所使用的编程语言和开发环境。同时,还需要了解您的伺服电机原点是如何产生和检测的。 一般来说,原点可以通过光电开关、磁性开关等方式产生,并通过控制器的输入端口进行检测。在编写控制程序时,需要根据实际情况设置控制器的输入端口和检测方式,以确保原点过程的稳定和准确。 下面是一个使用C#语言编写的.NET Core控制伺服电机原点的示例代码: ```csharp using System; using System.Threading.Tasks; using System.Device.Gpio; //需要安装System.Device.Gpio NuGet包 namespace ServoMotorControl { class Program { static async Task Main(string[] args) { //设置GPIO引脚 int inputPin = 18; int outputPin = 22; //创建GPIO实例 using (GpioController controller = new GpioController()) { //打开输入端口 controller.OpenPin(inputPin, PinMode.Input); //打开输出端口 controller.OpenPin(outputPin, PinMode.Output); //将输出端口设置为低电平 controller.Write(outputPin, PinValue.Low); //等待原点 while (controller.Read(inputPin) == PinValue.High) { await Task.Delay(10); } //将输出端口设置为高电平,使伺服电机到初始位置 controller.Write(outputPin, PinValue.High); } } } } ``` 在这个示例代码中,我们使用了System.Device.Gpio库来控制GPIO引脚的输入和输出。首先,我们设置了输入端口和输出端口的引脚,并创建了一个GpioController实例。然后,我们打开了输入端口和输出端口,并将输出端口设置为低电平。 接着,我们使用一个循环等待原点。在每次循环中,我们使用controller.Read(inputPin)方法读取输入端口的状态,如果状态为高电平,则说明还没有检测到原点,我们就使用Task.Delay方法延迟10毫秒后再次检测。 当检测到原点时,我们将输出端口设置为高电平,使伺服电机到初始位置。 需要注意的是,这只是一个简单的示例代码,实际情况可能会更加复杂。在编写控制程序时,需要根据实际情况进行具体的设置和调试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值