查看: 13132|回复: 22

Arduino怎么能控制多个工业交流伺服电机?如下可以实现吗?

[复制链接]

该用户从未签到

发表于 2016-12-14 13:27 | 显示全部楼层 |阅读模式
Arduino——驱动电路板(L298N…?)——伺服控制器(松下,三菱…?)——伺服电机
如何实现多个大功率电机的控制?

该用户从未签到

发表于 2016-12-14 13:49 | 显示全部楼层
用大功率电机控制器配合ardiuno不就行了。

该用户从未签到

发表于 2016-12-14 14:24 | 显示全部楼层
本帖最后由 jinsheng 于 2016-12-14 14:31 编辑

伺服电机是有伺服电机和驱动器组成,必须要用伺服电机专用的驱动器
1.  伺服电机的信号线接成差分模式,因为伺服电机的脉冲是24v,差分模式的话可以5v驱动,将接脉冲和方向接到arduino板子上
2.  伺服电机驱动器设置成位置模式
3.  然后可以通过从arduino的脉冲控制伺服电机
4. 不过伺服电机的驱动器初始化你得到网上找找资料,比如1上电使能,2电子齿轮比,3如果负重,好要考虑调节增益
总之,arduino控制伺服完全没有问题,没有做隔离的arduino板子(一般的arduino开发板都是没做隔离,直接从cpu接的引脚)会收到伺服电机的干扰,这个会根据情况给初学者造成麻烦,另外所有的不使用的引脚不能悬空,要设成LOW

当然,你也可以通过ttl转串口通过给驱动器发送指令控制伺服电机,一个伺服电机这样可以,但是多个伺服电机的话坐标很难控制。一般都是用脉冲模式,因为伺服电机不会丢步,位置模式控制多个电机同步会非常精确

接多个电机就是每个电机都要接一个脉冲和一个方向线就可以

伺服电机的功率,主要看伺服电机和伺服电机驱动器,跟arduino板子没有关系,,arduino板子只接5v的方向和脉冲


该用户从未签到

 楼主| 发表于 2016-12-14 15:25 | 显示全部楼层
jinsheng 发表于 2016-12-14 14:24
伺服电机是有伺服电机和驱动器组成,必须要用伺服电机专用的驱动器
1.  伺服电机的信号线接成差分模式,因 ...

感谢您如此详细的说明。受启彼多!!
另,隔离有什么办法吗?需要加什么元件
接多个电机的话,每个电机两根线。PWM板子引脚0-13的话,除0和1 是串行外。其余最多可控制6个电机?

该用户从未签到

发表于 2016-12-14 20:31 | 显示全部楼层
本帖最后由 jinsheng 于 2016-12-14 20:45 编辑
zlp6886 发表于 2016-12-14 15:25
感谢您如此详细的说明。受启彼多!!
另,隔离有什么办法吗?需要加什么元件
接多个电机的话,每个电机两 ...

对,每个电机接两根线,不光数字引脚,模拟引脚也可以,只要设置成pinMode为OUTPUT就可以
但实际上不是这样,因为只要有电机,就要有限位,一般情况下假如是直线导轨一个轴就要4个限位(每个方向2个,1个限位,1个保护),1个限位就要1个引脚,另外,arduino的脉冲频率也没那么快,一般的伺服电机默认电子齿轮比是10000个脉冲电机转一圈,当然电子齿轮是可调的,可以调成任意数个脉冲1圈,但是脉冲数小了影响精度,我觉得至少得3600个脉冲以上转一圈
隔离的话要做板子,就是用高速光耦或者高速三极管进行隔离,因为arduino的引脚是从cpu只接引出来的,工业控制上为了保险起见,不能从cpu直接接电机啦什么的,怕cpu受干扰,或者静电等等等……cpu只负责发信号,但实际上不直接连接电气。
其实我觉得你只要有思路,隔离的部分可以找人给你解决,只不过是花点钱,但是节约了大量的时间和精力
刚开始初学的时候你完全可以将电机直接接在arduino的引脚上做实验,写程序,一般也不会出问题,但是工业环境不允许。也不是绝对的不允许,我给别人做的自动化设备,也是用伺服,直接接的arduino的引脚,都跑半年多了,从来没出问题,但这种情况不具备通用性。

该用户从未签到

 楼主| 发表于 2016-12-15 12:34 | 显示全部楼层
jinsheng 发表于 2016-12-14 20:31
对,每个电机接两根线,不光数字引脚,模拟引脚也可以,只要设置成pinMode为OUTPUT就可以
但实际上不是这 ...

那这板子怕是胜任不了6个工业电机的了,除了脉冲和方向12个引。位置和速度反馈模拟量到A0-A5只能选其一了?
你的做自动化设备共用了几个伺服?每个接了几根线?4根吗?
还有那个板子更适合这种用法?
说一下,我做的是类似一个六自由度机器人用于数控车床的
  • TA的每日心情
    开心
    2019-9-20 09:34
  • 签到天数: 745 天

    [LV.9]以坛为家II

    发表于 2016-12-15 13:48 | 显示全部楼层
    只是路过看看  没有玩过伺服电机
    打赏作者鼓励一下!

    该用户从未签到

    发表于 2016-12-15 14:41 | 显示全部楼层
    zlp6886 发表于 2016-12-15 12:34
    那这板子怕是胜任不了6个工业电机的了,除了脉冲和方向12个引。位置和速度反馈模拟量到A0-A5只能选其一了 ...

    1. 6个电机arduino的UNO引脚少,可能会不行,但是不是还有arduino mega 2560吗,2560这个引脚很多,6轴是可以的
    2. 我做的是接了3个伺服电机,用的UNO,每个伺服接2个引脚,然后接了一些限位
    3. 速度和位置反馈是再驱动器上完成的,速度是由你的脉冲频率控制,位置是由你的脉冲数控制,伺服电机不会丢步,
    所以举例子,你给他10000个脉冲,每个脉冲间隔是100微妙,那他就会按照100微妙每个脉冲的转速走10000个脉冲,编码器会监测伺服电机是不是走够了10000个脉冲,如果没转到位置他会继续转,如果转过了他会转回来,总之,停下的位置刚好就是你指定的那个位置。所以如果你用伺服电机,你根本不需要从驱动器读取位置和速度,而是通过计算得出来的他的位置在哪里
    比如,电子齿轮是1000个脉冲一圈,如果你希望他1秒钟转1圈,那你给他1000个脉冲,脉冲间隔是1000微妙(高电平500,低电平500)(1000脉冲*1000微妙=1000000微妙=1秒),那他正好就是转1圈,1秒,如果你想然他1秒转10圈,那就是1000个脉冲,脉冲间隔是100微妙
    如果非要读取位置和速度,那只能通过串口通信读取,而不是模拟量,因为你用的是位置模式,而不是速度模式。
    但是如果伺服电机转不到位置,说明是阻转了,那驱动其可能自己就报错了,比如过载之类的,然后就停止工作了。
    4. A0-A5可以当作数字输出使用,所以当作为数字输出是可以控制伺服电机
    5. 我认为arduino做6轴机器人完全可以

    该用户从未签到

     楼主| 发表于 2016-12-16 11:04 | 显示全部楼层
    jinsheng 发表于 2016-12-15 14:41
    1. 6个电机arduino的UNO引脚少,可能会不行,但是不是还有arduino mega 2560吗,2560这个引脚很多,6轴是 ...

    如果不取反馈,这板子足够了。你的这种方法可行也简单。
    疑问:位置模式和速度模式反馈的数据不样吗?

    该用户从未签到

    发表于 2016-12-16 11:45 | 显示全部楼层
    本帖最后由 king_of_wind 于 2016-12-16 11:46 编辑

    采用Arduino的电路板, 用在工业场合, 是很不可靠的.
    推荐一个成功驱动多种电机的Arduino控制板给你:

    http://www.arduino.cn/forum.php? ... ;tid=31906#lastpost
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    【Arduino】108种传感器模块系列实验(55)---DHT11温湿度传感器
    【Arduino】108种传感器模
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    【Arduino】108种传感器模块系列实验(40)---旋转编码器模块
    【Arduino】108种传感器模
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    基于机器视觉的智能分拣机械臂
    基于机器视觉的智能分拣机
    本作品是一个基于机器视觉的智能机械臂操作平台,其采用atmega32单片机作为主控制系统
    请问HMC5883L的三个数据到底代表什么,如何做成指南针?
    请问HMC5883L的三个数据到
    或者哪位朋友有资料给个连接?网上愣是没找到。都只介绍了如何读取数据。我想做成图
    关于atmega328p-pu 地的问题
    关于atmega328p-pu 地的问
    请问图中ADC的地和VCC的地在单片机内部有连接吗?本人初学者,因为需要控制模拟电路,
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表