搜索
bottom↓
回复: 69

数字舵机的制作

  [复制链接]

出0入0汤圆

发表于 2012-4-30 22:46:52 | 显示全部楼层 |阅读模式
现在就把我已解决的一一作答吧
其实设计数字舵机的原理很简单,即检测输入的PWM信号与电位器反馈信号,
两者对比判断转向,之差为转速,且电位器的AD信号为目标点。仅此而已,
不过原理虽简单,但要做好一个性能可靠,稳定,参数达标的舵机就难了,
我在做之前,也是不懂,上论坛问网友,有人说电机直接用电流驱动?我试过,肯定不行,
虽然这样转速很快,扭矩大,但也正因为这样,舵机在指定点根本停不下来,抖的N厉害。
正确的方法应该是用PWM驱动,利用上所说的差值付给OCCRn寄存器,当差值不断减小,转速也就
不断减慢,这样到达指定点就不会那么抖,看到这里是不是觉得确实很简单,要是你那么想那就错了,
一个舵机那么简单那不懂点编程序的人都能做?这只是一个原理,原理虽简单,但这好与不好,成与不成,却决定在细节,就比如说,检测PWM信号时,如果输入的是1500us,测脉宽时,连续测的几次是1498,1501,1503,1497,1499.....,像这样连测输入的信号都测得都不稳,要舵机不抖,那可真就怪了,
同样AD信号也是,电位器一直都在滑动,静止时也测许测一定值很准确,但在这不断的移动时呢?这也是新手们在做时要考虑的,那好如果现在上面两个信号都已解决,测得很准,很稳,那它们之差是不是就可直接付给OCCRn呢?当然不是,数据还得处理,那就是PID,通过PID处理后再给OCCRn,(只要你参数整定得好,嘿嘿,当然没那么容易,得慢慢试,试出最好的效果),一个真真好的舵机就此完成。
上面所说都是软件部分,这里再补充硬件这块,驱动电路肯定用H桥,H桥可以自己做,也可用集成H桥的驱动芯片,此电路中的一个制动(刹车)功能很重要,

这是我的经验之谈,舵机已实现功能,但与市面上一些性能非常好的仍有差距,希望高手多提提意见,继续改进!


出0入0汤圆

发表于 2012-4-30 22:50:49 | 显示全部楼层
电机比较关键,要惯量小的

出0入0汤圆

发表于 2012-5-1 00:11:15 | 显示全部楼层
最好加上PID

出0入0汤圆

发表于 2012-5-1 10:39:56 | 显示全部楼层
实际上“高端”数字舵机的反馈环不止一个速度环,而且,电位器也有消抖处理,当然算法不同,不同阶段算法也不同。
现在舵机价格很便宜,没有再自制的价值,学习一下还行,除非拼成本,没有什么额外利润空间了,此外费时费力,自己玩还是搞上层算法好点。
或者玩玩模拟舵机,更有学习价值,最好是全离散器件的。

出0入0汤圆

发表于 2012-5-4 00:31:40 | 显示全部楼层
本帖最后由 kakarotto 于 2012-5-4 00:33 编辑

德国有一种带反馈的模拟舵机,不过价格非常贵。
数字舵机(我想带总线的485或者TTL的应该是你说的数字舵机吧),需要速度环、电流环、位置环叠加。
在运动过程中,还有梯形/三角形算法,还是很复杂的。这种舵机也很贵的
最便宜的就是MG995之类的模拟舵机了。

电机可以用空心杯电机

出0入0汤圆

发表于 2012-5-6 12:42:26 | 显示全部楼层
首先模具是最重要的,齿轮与齿轮之间的间隙要非常好,要不然会抖。其次电位器的线性要好。通常是要引入PID控制的。

出0入0汤圆

发表于 2012-5-6 13:04:44 | 显示全部楼层
舵机还是很好的东西。上次一个国外的色谱仪器上的一个舵机坏了,我直接买了哥国产货代替了。还是蛮不错的

出0入0汤圆

发表于 2012-5-6 13:09:29 | 显示全部楼层
semonpic 发表于 2012-5-6 13:04
舵机还是很好的东西。上次一个国外的色谱仪器上的一个舵机坏了,我直接买了哥国产货代替了。还是蛮不错的 ...

老总奖励你多少?

出0入0汤圆

发表于 2012-5-6 18:43:04 | 显示全部楼层
NJ8888 发表于 2012-5-6 13:09
老总奖励你多少?

解决问题是你应该做的,解决不了问题就是你的责任——某位老板名言

出0入0汤圆

 楼主| 发表于 2012-5-7 14:38:10 | 显示全部楼层
bosw83 发表于 2012-5-6 12:42
首先模具是最重要的,齿轮与齿轮之间的间隙要非常好,要不然会抖。其次电位器的线性要好。通常是要引入PID ...

哦,你以前做过吗?说说你的思路?据我所知测输入的PWM信号脉宽和电位器位置AD信号要稳,但这个你们是通过什么方法做的呢?相互交流下,
我做的在测PWM脉宽时还不是特别稳,而AD采样我是通过平均值法

出0入0汤圆

 楼主| 发表于 2012-5-7 14:39:46 | 显示全部楼层
not_at_all 发表于 2012-5-6 18:43
解决问题是你应该做的,解决不了问题就是你的责任——某位老板名言

没错,老板永远是对的,做得好是应该的,做不好是你没才?

出0入0汤圆

发表于 2012-5-8 13:21:30 | 显示全部楼层
有才!!!

出0入0汤圆

发表于 2012-5-29 12:32:12 | 显示全部楼层
我也在做舵机控制,但是一直有点抖,能不能指教一下。

出0入0汤圆

 楼主| 发表于 2012-5-29 16:15:18 | 显示全部楼层
ln08136207 发表于 2012-5-29 12:32
我也在做舵机控制,但是一直有点抖,能不能指教一下。

原理都是一样的,不过不同的方案间仍然存在一定的差异,代码保密吗?可以帮你参考参考。

出0入0汤圆

发表于 2012-5-29 16:40:14 | 显示全部楼层
caihong001 发表于 2012-5-29 16:15
原理都是一样的,不过不同的方案间仍然存在一定的差异,代码保密吗?可以帮你参考参考。 ...

说实话,对于你们来说这都是十分简单的东西,但是因为单位性质特殊,有机密数据保护系统,我就是想贴出来也,没法弄出来,总是会被拦截。
我大致说一下思路:
是这样的,采样周期是2MS,10位AD,PWM周期是800us.
程序结构是这样的:
外部中断捕获脉宽pwidth;
定时器启动AD:得到采样值adc_data;
同时在AD中断中做 :error = pwidth - adc_data;
                                  pid(error);
                                  PWM(pid_data);
调了三天了,毫无进展。请指教一下。现在得到如下两个图
图1:到达期望值后,PWM 仍然有输出,使舵机不停的在调。我试过把PWM周期改小,但是没有效果。
图2:舵机的阶跃响应波形。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-5-29 16:43:54 | 显示全部楼层
电位器的稳定不用程序,硬件容易就可解决。

出0入0汤圆

发表于 2012-5-29 16:48:00 | 显示全部楼层
同样程序,电机惯量 齿轮松紧有差异的.所以要配合机械来调整

出0入0汤圆

 楼主| 发表于 2012-5-29 19:09:22 | 显示全部楼层
ln08136207 发表于 2012-5-29 16:40
说实话,对于你们来说这都是十分简单的东西,但是因为单位性质特殊,有机密数据保护系统,我就是想贴出来 ...

这样你可就为难我了,再厉害的人也不能单靠看个波形帮你解决问题啊,PID参数整定得好很重要哦!

出0入0汤圆

 楼主| 发表于 2012-5-29 19:12:23 | 显示全部楼层
ln08136207 发表于 2012-5-29 16:40
说实话,对于你们来说这都是十分简单的东西,但是因为单位性质特殊,有机密数据保护系统,我就是想贴出来 ...

从你的波形上只能看出该停的时侯,舵机仍在抖,所以就会有些毛刺样的脉冲

出0入0汤圆

发表于 2012-7-9 14:29:08 | 显示全部楼层
楼主你好,我也在调试舵机,信号采集部分还算比较稳定,但是输出状态有比较大的抖动,初步推测为算法处理不正确,能不能请你指导下PID算法的处理,不胜感激。

出0入0汤圆

 楼主| 发表于 2012-7-15 22:51:30 | 显示全部楼层
deepsky_0826 发表于 2012-7-9 14:29
楼主你好,我也在调试舵机,信号采集部分还算比较稳定,但是输出状态有比较大的抖动,初步推测为算法处理不 ...

其实舵机也没想象的那么难,我个人认为信号采集是最重要的,如果信号采集很稳定的话直接用P控制就已经有很好的效果了,加上D控制增加扭矩。
你所说的信号采集部分比较稳定,有多稳定??就比如给个1500US信号,连续测出的值偏差多少呢??

出0入0汤圆

发表于 2012-7-16 12:50:46 | 显示全部楼层
caihong001 发表于 2012-7-15 22:51
其实舵机也没想象的那么难,我个人认为信号采集是最重要的,如果信号采集很稳定的话直接用P控制就已经有 ...

哦  是这样的  我的采样偏差基本处在±1之内  也就是1499 1500 1501 所以我做了一个在此范围里的判断 只要偏差处在±1以内 基本不更改设定值 所以还算是较稳定   我比较疑惑的是在进行数据处理时  是不是算法上要采用分段处理   现在舵机能够快速稳定的停止在设定值附近  但是参数却不是很理想   

出0入0汤圆

 楼主| 发表于 2012-7-16 23:08:21 | 显示全部楼层
deepsky_0826 发表于 2012-7-16 12:50
哦  是这样的  我的采样偏差基本处在±1之内  也就是1499 1500 1501 所以我做了一个在此范围里的判断 只 ...

不太清楚你的电路设计和程序设计,不过你加电制动了没?

出0入0汤圆

发表于 2012-7-17 00:19:17 | 显示全部楼层
我也在做舵机0 0

出0入0汤圆

 楼主| 发表于 2012-7-17 09:38:59 | 显示全部楼层
i3water 发表于 2012-7-17 00:19
我也在做舵机0 0

恩,可以交流交流.希望可以不断改进做出速度更快,扭矩更大,性能更稳定的数字舵机,国内一般灵敏度都说是2,3us,但人家日本,美国的都有1us的,
现实技术落后,还得不断向人家学习呢?

出0入0汤圆

发表于 2012-7-17 10:03:51 | 显示全部楼层
数字舵机难再电机上,我曾经做过用霍尔磁传感器的反馈方式,试过两种电机,程序一样,一个反复摆动(惯量大)另一个很好.数字的程序主要相对模拟的是跟踪快,能刹车.模拟是用脉冲展宽方式,如果偏差位置小,得到的驱动脉冲窄,有时不能驱动,数字的有偏差立即全速驱动然后根据反馈减速或刹车

出0入0汤圆

发表于 2012-8-21 15:57:39 | 显示全部楼层
ln08136207 发表于 2012-5-29 16:40
说实话,对于你们来说这都是十分简单的东西,但是因为单位性质特殊,有机密数据保护系统,我就是想贴出来 ...

请问你能不能透露一下你的单位名称?

出0入0汤圆

发表于 2012-9-21 10:44:17 | 显示全部楼层
           之前调了一个PID控制舵机,费了九牛二虎之力,勉强完成任务。现在又要调。
       本次因为对速度要求较高,用了空心杯电机。
       根据前一次的经验,先调Kp,然后加微分和饱和积分。
       但是此次在调Kp却发现比例系数必须要很小,最大只能为0.05,否则会严重超调以致等幅震荡,但是如果比例系数小于0.5时,扭矩和速度又达不到要求。
       不知您有没有时间指教一下,指一下方向。

出0入0汤圆

发表于 2012-9-21 11:05:31 | 显示全部楼层
数字舵机确实好使用,不知道大家用过 韩国ROBOTIS 没有。他们的舵机做得很有水平,性能刚刚的。我只用过他们的AX-12数字舵机,扭矩是16KG。datasheet我已经上传,然后他们舵机电机用的是MAXON。国内有公司仿的。但是成本没优势,索性不做了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-10-6 09:27:38 | 显示全部楼层
ln08136207 发表于 2012-9-21 10:44
之前调了一个PID控制舵机,费了九牛二虎之力,勉强完成任务。现在又要调。
       本次因为对速 ...

不同方案的PID其实也是千差万别,现在很多人做的其实只用PD调节,P调节速度,D调节扭矩,加上I反而会造成更不好调,不稳定,你也可试试看。
      V=KP*(PWM-AD)+KD*(AD‘-AD)(PWM表示输入的控制信号,此次电位器反馈信号,AD’表示上一次电位器反馈信号)
  还有一个就是要特别注意刹车功能的运用,之前我的速度也是不够快,太快了总是出现回弹现象,那因为当时我看驱动芯片资料A与B同时为0时为刹车,所以我在处理刹车时是直接这样的,OCR0A=0;OCR0B=0;但是发现这样刹车效果不太好,后来直接将管脚输出低电平便好了(P1。0=0,P1。1=0,假设OCR0A,OCR0B对应的引脚是P1。0,P1。1)

出0入0汤圆

发表于 2012-10-6 18:23:56 | 显示全部楼层
kakarotto 发表于 2012-5-4 00:31
德国有一种带反馈的模拟舵机,不过价格非常贵。
数字舵机(我想带总线的485或者TTL的应该是你说的数字舵机 ...

同意,现在一般是3闭环

出0入0汤圆

发表于 2012-10-6 18:27:35 | 显示全部楼层
ln08136207 发表于 2012-9-21 10:44
之前调了一个PID控制舵机,费了九牛二虎之力,勉强完成任务。现在又要调。
       本次因为对速 ...

你的这个P参数这么小,基本可以肯定,调的不对。

出0入0汤圆

发表于 2012-10-27 09:17:41 | 显示全部楼层
本帖最后由 lianghuok 于 2012-10-27 09:21 编辑

楼主在吗?
  我也是刚入门,现在空载可以,但加装拉杆后力度很小。现在是接收机收到PWM的脉宽转成0-255 与电位器ADC做对比,可以得出需要的转向,但输出电机的PWM不知道怎么算,
下面是我控制输出电机的代码,不是很懂调PID 求教!!
void Aile_sevro(void)
{
  static INT16 state ;
  UINT8 pwm ;

  //电位器限幅
  if(adc_buf[0]>254) adc_buf[0]=254 ;   
  else if(adc_buf[0]<4) adc_buf[0]=4 ;

  //Pluse 限幅
  if(aile_stor[0]>220) aile_stor[0]=220 ;  
  else if(aile_stor[0]<30) aile_stor[0]=30 ;  
   
  state= aile_stor[0]-(adc_buf[0]-29) ;     //-29得到中位点
  if(state>1)
  {
    Set_Aile_B1PWM(state);
  }
  else if(state<-1)
  {
    Set_Aile_B2PWM(-state);
  }
  else Aile_OFF();
}

出0入0汤圆

 楼主| 发表于 2012-10-27 12:32:15 | 显示全部楼层
lianghuok 发表于 2012-10-27 09:17
楼主在吗?
  我也是刚入门,现在空载可以,但加装拉杆后力度很小。现在是接收机收到PWM的脉宽转成0-255 与 ...

多了解了解PID吧,本人建意用PD!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-10-27 14:52:59 | 显示全部楼层
,参考下资料在改下 ,谢啦

出0入0汤圆

发表于 2012-12-30 22:46:41 | 显示全部楼层
不晓得楼主是不是专业做舵机的,专业的舵机引入的参数一般有死区,boost,增益,电机驱动的最大占空比,还需要做到输入信号的范围可调,角度可调,角度偏移可调。牵扯的东西比较多的

出0入0汤圆

发表于 2013-1-2 12:38:29 | 显示全部楼层
楼上兄弟,请教BOOST 与增益这两个参数是干什么用的呢?大概是什么意思呢?

出0入0汤圆

发表于 2013-4-2 10:19:48 | 显示全部楼层
caihong001 发表于 2012-10-6 09:27
不同方案的PID其实也是千差万别,现在很多人做的其实只用PD调节,P调节速度,D调节扭矩,加上I反而会造成 ...

我也用的是PD控制,有一个疑惑:比如:我的Kp = 1,用PWM调速,当V=KP*(PWM-AD)+KD*(AD‘-AD)= 256是满幅输出,电机全速运行;当舵机带负载,而公式中Kp*(PWM-AD)不足以启动大负载的电机,那么怎么能保证舵机在小误差(PWM-AD)时,能有足够的扭力呢?

出0入0汤圆

发表于 2013-6-19 10:35:49 | 显示全部楼层
在做,头大!不好弄!

出0入0汤圆

发表于 2014-2-8 16:06:36 | 显示全部楼层
数字舵机控制,做个记号!

出0入0汤圆

发表于 2014-2-11 23:01:31 | 显示全部楼层
一群高人

出0入0汤圆

发表于 2014-2-16 18:17:59 | 显示全部楼层
ln08136207 发表于 2013-4-2 10:19
我也用的是PD控制,有一个疑惑:比如:我的Kp = 1,用PWM调速,当V=KP*(PWM-AD)+KD*(AD‘-AD)= 256是 ...

搞定数字舵机了吗?

出0入0汤圆

发表于 2014-2-16 18:19:04 | 显示全部楼层
网上有个开源的,好多年了

出0入0汤圆

发表于 2014-2-16 20:49:07 | 显示全部楼层
feilee 发表于 2014-2-16 18:17
搞定数字舵机了吗?

搞定了,你也在搞?

出0入0汤圆

发表于 2014-2-23 20:29:53 | 显示全部楼层
ln08136207 发表于 2014-2-16 20:49
搞定了,你也在搞?

业余研究一下,好像挺难搞

出0入0汤圆

发表于 2014-2-23 20:30:24 | 显示全部楼层
高鼻子 发表于 2014-2-16 18:19
网上有个开源的,好多年了

请问这个开源网址在哪里啊?

出0入0汤圆

发表于 2014-3-30 14:26:14 | 显示全部楼层
请问下舵机上用到哪几个型号的MOS管?

出0入0汤圆

发表于 2014-12-12 19:33:59 | 显示全部楼层
有才!!!

出0入0汤圆

发表于 2015-1-2 10:35:35 | 显示全部楼层
舵机带宽多少

出0入0汤圆

发表于 2015-1-4 23:37:11 | 显示全部楼层
有点不懂

出0入0汤圆

发表于 2015-3-7 22:10:01 | 显示全部楼层

1000~2000us

出0入0汤圆

发表于 2015-3-7 22:40:34 | 显示全部楼层
楼主对舵机的理解还处在玩具阶段,距离模型还有不少差距

出0入0汤圆

发表于 2015-3-7 22:49:27 | 显示全部楼层
learner123 发表于 2015-3-7 22:40
楼主对舵机的理解还处在玩具阶段,距离模型还有不少差距

高人透露下葵花宝典

出0入0汤圆

发表于 2015-3-8 12:46:41 | 显示全部楼层

带宽?有没有学过信号系统之类的课

出0入0汤圆

发表于 2016-3-3 22:39:27 | 显示全部楼层
这么多大神在呢,学习学习

出0入0汤圆

发表于 2016-7-4 11:09:17 | 显示全部楼层
我正在开发一款数字舵机,请教楼主说的转速是如何用PID是实现的,我已实现的目前位置的控制,但是速度不够!

出0入0汤圆

发表于 2016-7-4 11:34:09 | 显示全部楼层
caihong001 发表于 2012-5-7 14:38
哦,你以前做过吗?说说你的思路?据我所知测输入的PWM信号脉宽和电位器位置AD信号要稳,但这个你们是通 ...

用平均法肯定不行吧,应该用平滑滤波算法,
电机控制的实质就是电流控制,伺服的三环:位置环 速度环  电流环
电流环是最内环!

出0入0汤圆

发表于 2016-7-12 14:13:06 | 显示全部楼层
厉害啊,想请教下你

出0入0汤圆

发表于 2016-8-3 11:28:48 | 显示全部楼层
正在搞总线舵机设计 get一波 少走弯路

出0入0汤圆

发表于 2016-8-3 12:12:22 | 显示全部楼层
不错,学习一下

出0入0汤圆

发表于 2016-12-8 10:40:10 | 显示全部楼层
原来多年以后,还有人在搞,突然觉得我不孤单了。

出0入0汤圆

发表于 2017-12-7 23:29:37 | 显示全部楼层
feilee 发表于 2014-2-23 20:30
请问这个开源网址在哪里啊?

同求开源网址,现在在做舵机,也是解决不了带载时候的小误差无法解决,以及抖动;空载时很容易实现。

出0入0汤圆

发表于 2017-12-8 11:44:10 | 显示全部楼层
shortking 发表于 2016-8-3 11:28
正在搞总线舵机设计 get一波 少走弯路

已经有了,机器人上用的

出0入0汤圆

发表于 2017-12-8 20:55:38 来自手机 | 显示全部楼层
我觉得带磁编的空心杯比较简单,而传统的电位器配铁心电机比较有难度,这方面日本人做的很好,网上开源的就算了。

出0入0汤圆

发表于 2017-12-8 21:01:12 来自手机 | 显示全部楼层
总线舵机这个总线其实很简单,不要想的太高深,只是上位机要做的漂亮比较靠美工。用20KHZ PWM驱动垃圾国产铁心电机要做到好的低速线性要求还是蛮高,这个比较需要设计功力。

出0入0汤圆

发表于 2017-12-8 21:03:31 来自手机 | 显示全部楼层
为了防止抖动,可以引入反电势反馈,这个效果会很好,日本的舵机很早就有了。

出90入0汤圆

发表于 2019-2-16 10:32:44 | 显示全部楼层
寻找, 工业用, 磁编码 无刷 总线通讯 舵机

出0入0汤圆

发表于 2020-11-1 11:39:26 | 显示全部楼层
caihong001 发表于 2012-5-7 14:39
没错,老板永远是对的,做得好是应该的,做不好是你没才?

方便加QQ吗?

出0入0汤圆

发表于 2020-11-1 11:40:01 | 显示全部楼层
本帖最后由 joezeng 于 2020-11-1 11:44 编辑

牛,牛 ,牛

出0入0汤圆

发表于 2020-11-1 11:45:14 | 显示全部楼层
hzpyl 发表于 2019-2-16 10:32
寻找, 工业用, 磁编码 无刷 总线通讯 舵机

可支持,看你具体的规格要求
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 13:10

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表