搜索
bottom↓
回复: 191

造福大家,哈哈,发一个能用的步进电机S加速曲线的算法...

  [复制链接]

出0入0汤圆

发表于 2013-2-23 12:51:58 | 显示全部楼层 |阅读模式
本帖最后由 myqiang1990 于 2013-2-23 13:00 编辑

大家看看上面的参数,然后对照程序,自己可以仿制一个,程序生存的数据是将3段S曲线,包括加加速和加减速段,这个程序是将S曲线离散成你想要的升频和对应频段内步值,然后分段升频,程序中查表加速就OK了~~(支持变细分哦!!!!抵挡单片机跑高速的福音~~~ )软件是delphi7啊~~没有大家就去网上下巴~~
不懂的,大家可以讨论讨论哈~~~因为版权问题,这个软件就不公开了,大家对照我贴的图片的参数,然后对照下面的代码,就懂了,子不过是自己自己建一个新工程而已,注意我用了iocmp控件,没有的童鞋,在这里下载~~http://www.amobbs.com/thread-5267464-1-1.html

  1. //////////////////////////////////S曲线生产////////////////////////////////
  2. //////////////////////////////////S曲线生产////////////////////////////////
  3. //////////////////////////////////S曲线生产////////////////////////////////
  4. //////////////////////////////////S曲线生产////////////////////////////////
  5. procedure TForm1.SCurve();
  6. var
  7.   aa:double;//加加速度
  8.   v1:integer;//拐点速度
  9.   t1:double;//拐点时间
  10.   dt:double;//时间间隔
  11.   vstart, vend:integer;//起始速度(HZ)
  12.   xifen:integer;//细分数
  13.   freq:integer;//定时器频率
  14.   i,j, allsteps:integer;//脉冲个数
  15.   T, time:double;
  16.   freqleves:array[0..20000] of integer;
  17.   freqsteps:array[0..20000] of integer;
  18.   timerdata:array[0..20000] of integer;
  19.   showstr : string;
  20. begin
  21.   aa := StrToFloat(edit17.Text);//加加速度
  22.   vstart := StrToInt(edit18.Text);//启动频率
  23.   vend := StrToInt(edit19.Text);//启动频率
  24.   xifen := StrToInt(edit37.Text);//细分数
  25.   freq := StrToInt(edit16.Text) ;//定时器频率
  26.   time := StrToFloat(edit20.Text);//频段保持时间
  27.   T := 0;
  28.   i := 0;
  29.   allsteps := 0;
  30.   showstr := ' ';

  31.    v1 := trunc((vstart + vend) / 2);//求出拐点频率
  32.    t1 := Sqrt(2 * (v1 - vstart) / aa);//求出拐点时间(s)
  33.    dt :=  time / 1000; //求出时间间隔 (s)
  34.    //////////////调试模式 /////
  35.    if checkbox12.Checked then
  36.    begin
  37.    memo1.Lines.Add('v1(拐点频率)------->' + InttoStr(v1));
  38.    memo1.Lines.Add('t1(拐点时间)------->' + FloattoStr(t1));
  39.    memo1.Lines.Add('dt(减速间隔)------->' + FloattoStr(dt) + #13);
  40.    memo1.Lines.Add( #13);
  41.    end;
  42.    //求出运加速度段
  43.    while (T <= t1) do
  44.     begin
  45.       freqleves[i] := trunc(vstart + 1 / 2 * aa * T * T);
  46.       freqleves[i] := freqleves[i];//按细分数扩大倍速
  47.       freqsteps[i] := trunc(dt * freqleves[i]);//求出频点的内部步数
  48.       //allsteps := allsteps + freqsteps[i]; //求出总脉冲数

  49.       //if freqsteps[i] = 0 then
  50.        //freqsteps[i] := freqsteps[i]+ 1;

  51.       timerdata[i] := trunc(freq / (freqleves[i] * xifen) + 0.5);//求出定时器初值
  52.       //调试模式
  53.       if checkbox12.Checked then
  54.       begin
  55.       memo1.Lines.Add('freqleves(台阶频率)'+IntToStr(i)+'------->' + inttoStr(freqleves[i]));
  56.       memo1.Lines.Add('freqsteps(台阶步数)'+IntToStr(i)+'------->' + inttoStr(freqsteps[i]));
  57.       memo1.Lines.Add('timerdata(定时器初值)'+IntToStr(i)+'------->' + inttoStr(timerdata[i]));
  58.       memo1.Lines.Add('T(已累加时间)------->' + Format('%.3f', [T]) + #13);
  59.       memo1.Lines.Add( #13);
  60.       end;

  61.       iXYPlot1.Channel[0].AddXY(i, freqleves[i]);  //画出频率曲线
  62.       iXYPlot1.Channel[1].AddXY(i, freqsteps[i]); //步值曲线
  63.       if not checkbox13.Checked then
  64.        iXYPlot1.Channel[10].AddXY(i, timerdata[i]); //定时器初值曲线

  65.       T := T + dt;//递增到下一个频点的时间
  66.       i := i + 1;
  67.     end;
  68.    //求出运减速段
  69.     i :=i - 1 ;
  70.    while (freqleves[i]  <= vend) do
  71.    begin
  72.        i :=i + 1 ;
  73.        freqleves[i] := trunc((2 * aa * T * Sqrt(2* (v1 - vstart) / aa))-(1 / 2 * aa * T * T) - (2 * v1) + (3 * vstart));
  74.        freqleves[i] := freqleves[i];//按细分数扩大倍速
  75.        freqsteps[i] := trunc(dt * freqleves[i]);//求出频点的内部步数
  76.        //allsteps := allsteps + freqsteps[i]; //求出总脉冲数

  77.        //if freqsteps[i] = 0 then
  78.        // freqsteps[i] := freqsteps[i]+ 1;

  79.        timerdata[i] := trunc(freq / (freqleves[i] * xifen) + 0.5);//求出定时器初值
  80.        //调试模式
  81.        if checkbox12.Checked  then
  82.        begin
  83.        memo1.Lines.Add('freqleves(台阶频率)'+IntToStr(i)+'------->' + inttoStr(freqleves[i]));
  84.        memo1.Lines.Add('freqsteps(台阶步数)'+IntToStr(i)+'------->' + inttoStr(freqsteps[i]));
  85.        memo1.Lines.Add('timerdata(定时器初值)'+IntToStr(i)+'------->' + inttoStr(timerdata[i]));
  86.        memo1.Lines.Add('T(已累加时间)------->' + Format('%.3f', [T]) + #13);
  87.        memo1.Lines.Add( #13);
  88.        end;

  89.        iXYPlot1.Channel[0].AddXY(i, freqleves[i]);  //画出频率曲线
  90.        iXYPlot1.Channel[1].AddXY(i, freqsteps[i]); //步值曲线
  91.        if not checkbox13.Checked then
  92.         iXYPlot1.Channel[10].AddXY(i, timerdata[i]); //定时器初值曲线

  93.        T := T + dt;//递增到下一个频点的时间

  94.        if(trunc((2 * aa * T * Sqrt(2* (v1 - vstart) / aa))-(1 / 2 * aa * T * T) - (2 * v1) + (3 * vstart)) < freqleves[i]) then
  95.          break;
  96.      end;
  97. ///////////////////////////  统计总步数
  98.    for j:=0 to i do
  99.     begin
  100.       if freqsteps[j] = 0 then
  101.         freqsteps[j] := freqsteps[j]+ 1;

  102.      allsteps := allsteps +freqsteps[j];
  103.     end;
  104.   //变细分处理---->主要处理频率
  105.   if checkbox13.Checked = true then
  106.    begin
  107.        j := 0;
  108.        //安细分调节第一段
  109.        while((freqleves[j] <= StrToInt(edit50.Text)) and (j <= i)) do
  110.         begin
  111.            timerdata[j] := trunc(freq / (freqleves[j] * StrToInt(edit51.Text)) + 0.5);//求出定时器初值
  112.            iXYPlot1.Channel[10].AddXY(j, timerdata[j]); //定时器初值曲线
  113.            j := j+1;
  114.         end;
  115.         //调节第二段
  116.         while((freqleves[j] <= StrToInt(edit47.Text)) and (j <= i)) do
  117.         begin
  118.            timerdata[j] := trunc(freq / (freqleves[j] * StrToInt(edit48.Text)) + 0.5);//求出定时器初值
  119.            iXYPlot1.Channel[10].AddXY(j, timerdata[j]); //定时器初值曲线
  120.            j := j+1;
  121.         end;
  122.         //调节第三段
  123.         while((freqleves[j] <= StrToInt(edit44.Text)) and (j <= i)) do
  124.         begin
  125.            timerdata[j] := trunc(freq / (freqleves[j] * StrToInt(edit45.Text)) + 0.5);//求出定时器初值
  126.            iXYPlot1.Channel[10].AddXY(j, timerdata[j]); //定时器初值曲线
  127.            j := j+1;
  128.         end;
  129.           //调节第四段
  130.         while((freqleves[j] <= freqleves[i]) and (j <= i)) do
  131.         begin
  132.            timerdata[j] := trunc(freq / (freqleves[j] * StrToInt(edit54.Text)) + 0.5);//求出定时器初值
  133.            iXYPlot1.Channel[10].AddXY(j, timerdata[j]); //定时器初值曲线
  134.            j := j+1;
  135.            if j > i then
  136.              break;
  137.         end;
  138.    end;
  139.   //非调试模式显示数据
  140.   if not checkbox12.Checked then
  141.   begin
  142.   ////生成数据//////////////////////////////////
  143.   showstr := showstr + '//////////////////////////////////////////三段式S加速曲线///////////////////////////////'+#13;
  144.   showstr := showstr +'//启动频率:' + Format('%d', [vstart]) + 'HZ'+#13;
  145.   showstr := showstr +'//最高频率:' + Format('%d', [vend]) + 'HZ'+#13;
  146.   showstr := showstr +'//加加速度:' + Format('%.3f', [aa]) + 'm*s^-3'+#13;
  147.   showstr := showstr +'//频段保持时间:' + Format('%.3f', [dt]) + 's'+#13;
  148.   showstr := showstr +'//定时器频率:' + Format('%d', [freq]) + 'HZ'+#13;
  149.   showstr := showstr +'//加速频率总段数:' + Format('%d', [i+1]) + '段'+#13;
  150.   showstr := showstr +'//加速总脉冲数:' + Format('%d', [allsteps]) + '个'+#13;
  151.   showstr := showstr +'//最高运行速度(按电机步距角为1.8度算):' + Format('%d', [trunc(freqleves[i] / (360 /1.8) * 60)]) + 'RPM(转/分)'+#13;
  152.   if checkbox13.Checked = true then//变细分
  153. begin
  154.   showstr := showstr + '//'+edit49.Text+'HZ--->'+edit50.Text+'HZ--->'+edit51.Text+'细分'+#13;
  155.   showstr := showstr + '//'+edit46.Text+'HZ--->'+edit47.Text+'HZ--->'+edit48.Text+'细分'+#13;
  156.   showstr := showstr + '//'+edit43.Text+'HZ--->'+edit44.Text+'HZ--->'+edit45.Text+'细分'+#13;
  157.   showstr := showstr + '//'+edit52.Text+'HZ--->'+edit53.Text+'HZ--->'+edit54.Text+'细分'+#13;
  158. end
  159. else
  160.   showstr := showstr +'//细分数:' + Format('%d', [xifen]) + '细分'+#13;
  161.   showstr := showstr +'//////////////////步值表//////////////////////////////'+#13;
  162.   showstr := showstr +'const u16 MX_LevesStepsTable[]='+#13;
  163.   showstr := showstr +'{'+#13;

  164.   for j := 0 to i do
  165.    begin
  166.    if not checkbox11.Checked then //10进制显示
  167.       showstr := showstr + format('%d,', [freqsteps[j]])//+#13;
  168.    else       //16进制显示
  169.       showstr := showstr +format('0x%.4x,', [freqsteps[j]]);//+#13;

  170.       if (j+1) mod 30 = 0 then
  171.        showstr := showstr  + #13;
  172.    end;
  173.    showstr := showstr +#13+'};'+#13;
  174.    showstr := showstr +#13;

  175. showstr := showstr +'//////////////////定时器初值表///////////////////////////'+#13;
  176.   showstr := showstr +'//启动频率:' + Format('%d', [vstart]) + 'HZ'+#13;
  177.   showstr := showstr +'//最高频率:' + Format('%d', [vend]) + 'HZ'+#13;
  178.   showstr := showstr +'//加加速度:' + Format('%.3f', [aa]) + 'm*s^-3'+#13;
  179.   showstr := showstr +'//频段保持时间:' + Format('%.3f', [dt]) + 's'+#13;
  180.   showstr := showstr +'//定时器频率:' + Format('%d', [freq]) + 'HZ'+#13;
  181.   showstr := showstr +'//加速频率总段数:' + Format('%d', [i+1]) + '段'+#13;
  182.   showstr := showstr +'//加速总脉冲数:' + Format('%d', [allsteps]) + '个'+#13;
  183.   showstr := showstr +'//最高运行速度(按电机步距角为1.8度算):' + Format('%d', [trunc(freqleves[i] / (360 /1.8) * 60)]) + 'RPM(转/分)'+#13;
  184.   if checkbox13.Checked = true then//变细分
  185. begin
  186.   showstr := showstr + '//'+edit49.Text+'HZ--->'+edit50.Text+'HZ--->'+edit51.Text+'细分'+#13;
  187.   showstr := showstr + '//'+edit46.Text+'HZ--->'+edit47.Text+'HZ--->'+edit48.Text+'细分'+#13;
  188.   showstr := showstr + '//'+edit43.Text+'HZ--->'+edit44.Text+'HZ--->'+edit45.Text+'细分'+#13;
  189.   showstr := showstr + '//'+edit52.Text+'HZ--->'+edit53.Text+'HZ--->'+edit54.Text+'细分'+#13;
  190. end
  191. else
  192.   showstr := showstr +'//细分数:' + Format('%d', [xifen]) + '细分'+#13;
  193.   if Combobox4.ItemIndex = 1 then //显示模式1
  194.    begin
  195.    showstr := showstr +'const u16 MX_SpeedLevesTable[][2]='+#13;
  196.    showstr := showstr +'{'+#13;
  197.    for j := 0 to i do
  198.    begin
  199.      if not checkbox11.Checked then //10进制
  200.        showstr := showstr +format('%d, ', [timerdata[j]])
  201.      else   //16进制
  202.        showstr := showstr + format('0x%.4x, ', [timerdata[j]]);

  203.       if (j+1) mod 15 = 0 then
  204.        showstr := showstr + #13;
  205.    end;
  206.    showstr := showstr +#13+'};'+#13;
  207.    end
  208.    else
  209.     begin
  210.      showstr := showstr +'const u16 MX_SpeedLevesTable[][3] ={'+#13;
  211.      showstr := showstr +'//{频率,定时器初值,台阶步数}'+#13;
  212.      for j := 0 to i do
  213.      begin
  214.      if not checkbox11.Checked then  //10进制
  215.       showstr := showstr +'{'+ format('%d', [freqleves[j]])+ ', '+ format('%d',[timerdata[j]])+', '+format('%d', [freqsteps[j]])+'},'+'//'+format('%d',[j])+#13
  216.      else      //16进制
  217.        showstr := showstr +'{'+ format('%d', [freqleves[j]])+ ', '+ format('0x%.4x',[timerdata[j]])+', '+format('0x%.4x', [freqsteps[j]])+'},'+'//'+format('%d',[j])+#13;
  218.    end;
  219.    showstr := showstr +#13+'};'+#13;
  220.    end;
  221.   end;
  222.   memo1.Lines.Text := showstr;
  223. end;
复制代码

本帖子中包含更多资源

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

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

阿莫论坛才是最爱国的,关心国家的经济、社会的发展、担心国家被别国牵连卷入战争、知道珍惜来之不易的和平发展,知道师夷之长,关注世界的先进文化与技术,也探讨中国文化的博大精深,也懂得警惕民粹主义的祸国殃民等等等等,无不是爱国忧民的表现。(坛友:tianxian)

出0入0汤圆

 楼主| 发表于 2013-2-23 12:54:57 | 显示全部楼层
如果大家想实时计算,按照里面说的方法自己实现,实现了大家就贴一下思路吧~~~哈哈~~因为我没实现啊~~

出0入0汤圆

发表于 2013-2-23 12:58:34 | 显示全部楼层
顶一下  LZ

出0入0汤圆

发表于 2013-2-23 12:59:39 | 显示全部楼层
本帖最后由 kinsno 于 2013-2-23 13:04 编辑

楼主是90年的伙计,相当厉害了啊;
1、软件是公司内部自行开发的软件吗,还是采购的商业软件啊?内部软件就不用说了,必须保密。如果是商业软件,是否提供一个名称啊,去寻找破解版。
2、你的算法和软件是根据这个PDF实现的吗?经过实际应用了吗?还是沿且在实验中没经过现场的锤炼?

出0入0汤圆

发表于 2013-2-23 13:04:00 | 显示全部楼层
很厉害啊

出0入0汤圆

 楼主| 发表于 2013-2-23 13:05:00 | 显示全部楼层
本帖最后由 myqiang1990 于 2013-2-23 13:09 编辑
kinsno 发表于 2013-2-23 12:59
楼上的是90年的伙计,相当厉害了啊;软件是公司内部自行开发的软件吗,还是采购的商业软件啊?内部软件就不 ...


我自己写的~~~我为公司开发的,所以东西就归公司了,哈哈,平时用电机很多,觉得没有工具帮助,很麻烦啊~~所以索性就写了一个~~~~~肯定用过啦~~~只不过我不经常用S加速而已,因为不太适合我们的东西,因为他加速太慢了(因为他开始有一段加加速,就是比较平滑那段,怎么都比人家启动的慢~~,或许是加速程序处理不够好~~)~~我用的指数型或者梯形~~~

出0入0汤圆

发表于 2013-2-23 13:09:41 | 显示全部楼层
myqiang1990 发表于 2013-2-23 13:05
我自己写的~~~我为公司开发的,所以东西就归公司了,哈哈~~~肯定用过啦~~~只不过我不经常用S加速而已,因 ...

现在这种文档满天飞,年前看了一些,但真正应用起来,发现多半是书生一拍脑门想出来的或者是拿个信号发生器或示波器证实出来的,并不能在现场应用的,一上应用歇菜。
你是这方面的应用专家,发现你在这方面搞了好几年了,如果方便的话,指数型或T形的,能否给介绍些实用文档,经过验证证实现场可靠应用的文档,我下载两个去,偶最近也在弄步进电机方面的算法。

出0入0汤圆

 楼主| 发表于 2013-2-23 13:14:02 | 显示全部楼层
本帖最后由 myqiang1990 于 2013-2-23 13:16 编辑
kinsno 发表于 2013-2-23 13:09
现在这种文档满天飞,年前看了一些,但真正应用起来,发现多半是书生一拍脑门想出来的或者是拿个信号发生 ...


指数的我已经发了,你去看我的帖子找找,有的,我都不知道去哪里了,你去我发的帖子找找~~~我悄悄告诉你,指数只要变一下参数就变成了梯形~~~哈哈~~~我自己无意中发现的~~ 你还可以参考AVR那个
AVR446_Linear speed control of stepper motor 文档,代码算法都有,梯形的~~~



本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2013-2-23 13:19:19 | 显示全部楼层
myqiang1990 发表于 2013-2-23 13:14
指数的我已经发了,你去看我的帖子找找,有的,我都不知道去哪里了,你去我发的帖子找找~~~我悄悄告诉你 ...

太感谢了,学习去。

出0入0汤圆

 楼主| 发表于 2013-2-23 13:22:53 | 显示全部楼层
kinsno 发表于 2013-2-23 13:09
现在这种文档满天飞,年前看了一些,但真正应用起来,发现多半是书生一拍脑门想出来的或者是拿个信号发生 ...

专家就不是,我也半路出家,菜鸟一只,我也是站在巨人的肩膀上啊~~哈哈~~

出0入0汤圆

 楼主| 发表于 2013-2-23 13:25:28 | 显示全部楼层
来这里那么久,我从来都没穿过裤子,这次又图有代码,能穿一只吗?阿莫大哥,发一条裤子给我吧~~~

出0入0汤圆

发表于 2013-2-24 12:35:11 来自手机 | 显示全部楼层
好东西,下载来看看改成自己的

出0入0汤圆

发表于 2013-2-25 08:28:27 | 显示全部楼层
zhichi      

出0入20汤圆

发表于 2013-2-25 08:46:59 来自手机 | 显示全部楼层
支持一下你

出0入0汤圆

发表于 2013-2-25 14:36:33 | 显示全部楼层
支持下,老大给个裤子吧
头像被屏蔽

出0入0汤圆

发表于 2013-3-15 10:23:00 | 显示全部楼层
支持你

出0入0汤圆

发表于 2013-3-20 10:24:14 | 显示全部楼层
支持楼主!

出0入0汤圆

发表于 2013-3-20 10:48:51 | 显示全部楼层
lz,牛人啊,都为大家造福啊。

出0入0汤圆

发表于 2013-3-20 10:54:15 | 显示全部楼层
学习                                      

出0入0汤圆

发表于 2013-4-8 15:53:32 | 显示全部楼层
有那个加速度曲线生成器吗?麻烦上传一个啊

出0入0汤圆

发表于 2013-4-8 16:28:04 | 显示全部楼层
学习学习delphi等

出0入0汤圆

发表于 2013-4-8 16:30:32 | 显示全部楼层
支持一下楼主。..桌面上就有个小电机正在转.

出0入0汤圆

发表于 2013-4-8 16:48:38 | 显示全部楼层
多谢楼主分享

出0入0汤圆

发表于 2013-4-9 19:16:28 | 显示全部楼层
mark……

出0入0汤圆

发表于 2013-4-11 15:11:33 | 显示全部楼层
顶起来啊   哈哈

出0入0汤圆

发表于 2013-4-12 16:00:40 来自手机 | 显示全部楼层
学习一下....

出0入0汤圆

发表于 2013-4-12 16:14:03 | 显示全部楼层
支持楼主,收藏了!!!

出0入0汤圆

发表于 2013-4-12 20:37:13 | 显示全部楼层
mark。。。。。。

出0入0汤圆

发表于 2013-4-13 13:05:09 | 显示全部楼层
记录一下

出0入0汤圆

发表于 2013-5-8 17:12:36 | 显示全部楼层
freqleves[i] := freqleves[i];//按细分数扩大倍速
这是什么意思,

出0入0汤圆

发表于 2013-5-8 17:22:00 | 显示全部楼层
不错好东西 收了

出0入0汤圆

发表于 2013-5-8 17:31:30 | 显示全部楼层
没接触过,先顶,试着看看

出0入0汤圆

发表于 2013-5-8 17:39:28 | 显示全部楼层
好东西啊,顶一个 MARK一下,最近在搞这个啊 ,头都大了

出0入0汤圆

发表于 2013-5-8 21:56:09 | 显示全部楼层
好东西,MARK一下

出0入0汤圆

发表于 2013-5-8 22:15:44 | 显示全部楼层
没有接触,学习下

出0入0汤圆

发表于 2013-5-10 23:33:40 | 显示全部楼层
mark....................

出0入0汤圆

发表于 2013-5-12 11:05:19 | 显示全部楼层
学习了~很强大

出0入0汤圆

发表于 2013-6-11 17:29:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2013-7-6 16:28:03 | 显示全部楼层
好资料

出0入0汤圆

发表于 2013-7-9 23:07:40 | 显示全部楼层
好东西,收藏一下!

出0入0汤圆

发表于 2013-7-10 09:29:22 | 显示全部楼层
楼主厉害!

出675入8汤圆

发表于 2013-7-10 09:35:21 | 显示全部楼层

支持一下你

出0入0汤圆

发表于 2013-7-10 09:49:42 | 显示全部楼层
好东西,学习了   

出0入0汤圆

发表于 2013-7-10 10:04:59 | 显示全部楼层
最近正在学习驱动电机mark一下很有必要!!!

出0入0汤圆

发表于 2013-7-12 15:58:14 | 显示全部楼层
学习中。。。

出0入0汤圆

发表于 2013-7-13 11:05:39 | 显示全部楼层
记号,收藏

出0入0汤圆

发表于 2013-7-13 11:37:52 | 显示全部楼层
仔细研究下,以前我的一个实现方法就是将一个S曲线折线话,然后用线性函数实现,不过如果要光滑的话程序就很长了,一直没有好的算法

出0入0汤圆

发表于 2013-7-13 11:41:56 | 显示全部楼层
好东西,收藏一下

出0入0汤圆

发表于 2013-7-13 20:52:53 | 显示全部楼层
学习中。。。

出0入0汤圆

发表于 2013-7-15 20:39:19 | 显示全部楼层
LZ太牛了,没看懂也MK一下

出0入0汤圆

 楼主| 发表于 2013-7-15 21:01:34 | 显示全部楼层
大牛不敢当,小伎俩而已,,,,我对电机加减速还有如何控制步进电机方面有点点经验,欢迎大家跟帖交流。。。

出0入0汤圆

发表于 2013-7-15 21:24:38 | 显示全部楼层
必须顶,修炼内功

出0入0汤圆

发表于 2013-7-15 22:50:55 | 显示全部楼层
收下 以后看看 DIY 小车有用

出0入0汤圆

发表于 2013-7-19 14:55:25 | 显示全部楼层
怎么感觉个 fpba的语言有点像啊

出0入0汤圆

发表于 2013-7-19 14:55:53 | 显示全部楼层
是fpga的语言

出0入0汤圆

发表于 2013-8-10 10:28:51 | 显示全部楼层
支持

出0入0汤圆

发表于 2013-8-10 20:07:48 来自手机 | 显示全部楼层
mar…
顶一个…

出0入0汤圆

发表于 2013-8-10 20:28:48 来自手机 | 显示全部楼层
牛人呀………
标记一下

出0入0汤圆

发表于 2013-9-11 20:12:35 | 显示全部楼层
Mark

出0入0汤圆

发表于 2013-9-12 08:47:41 | 显示全部楼层
myqiang1990 发表于 2013-2-23 13:14
指数的我已经发了,你去看我的帖子找找,有的,我都不知道去哪里了,你去我发的帖子找找~~~我悄悄告诉你 ...

楼主太牛逼了····哈啊哈···别怪我挖坟哈····步进电机s加速算法··记得当时老师讲的时候,让后排睡觉的都起来听···大学真是作孽啊···

出0入0汤圆

发表于 2013-9-12 16:56:12 | 显示全部楼层
实时计算也可以啊,不过稍微麻烦一点,我用的是STM32—FPGA这种模式,性能很稳定。

出0入0汤圆

发表于 2013-9-12 17:14:58 | 显示全部楼层
myqiang1990 发表于 2013-2-23 13:22
专家就不是,我也半路出家,菜鸟一只,我也是站在巨人的肩膀上啊~~哈哈~~  ...

有没有试过在换向桥电路上用PWM实现加减算法与电流力矩动态平衡!

出0入0汤圆

发表于 2013-9-12 17:20:39 | 显示全部楼层
myqiang1990有没有联系方式,很想认识一下你.Q号是21836769.

出0入0汤圆

 楼主| 发表于 2013-9-14 17:20:25 | 显示全部楼层
nishuizhou 发表于 2013-9-12 16:56
实时计算也可以啊,不过稍微麻烦一点,我用的是STM32—FPGA这种模式,性能很稳定。 ...

恩,,可以的,,但是应用场所不一样~~在国内~~舞台灯整个FPGA,或者高端ARM是不现实滴~~~外国的有~~我看过~~FPGA的~~但是人家一台就买几万,甚至10几万~~~~国内很多厂商还是51呢~~

出0入0汤圆

 楼主| 发表于 2013-9-14 17:21:41 | 显示全部楼层
hxhz123456 发表于 2013-9-12 17:20
myqiang1990有没有联系方式,很想认识一下你.Q号是21836769.

一零八五二二六六久六

出0入0汤圆

 楼主| 发表于 2013-9-14 17:26:21 | 显示全部楼层
本帖最后由 myqiang1990 于 2013-9-14 17:28 编辑
hxhz123456 发表于 2013-9-12 17:14
有没有试过在换向桥电路上用PWM实现加减算法与电流力矩动态平衡!


我不怎么懂电路,公司的软件是我一个人不负责编写的~~电路又其他工程师负责,,他们怎么画,我就怎么写~~~呵呵~~这个没弄过~~

出0入0汤圆

发表于 2013-9-14 17:42:00 | 显示全部楼层
mark

出0入0汤圆

发表于 2013-9-14 17:43:50 来自手机 | 显示全部楼层
记号,收藏!

出0入0汤圆

发表于 2013-9-14 17:55:38 | 显示全部楼层
好东西,学习下

出0入0汤圆

发表于 2013-9-14 20:14:05 | 显示全部楼层
步进电机

出0入0汤圆

发表于 2013-9-16 09:54:45 | 显示全部楼层
ding ding , thanks

出0入0汤圆

发表于 2013-9-16 12:47:21 | 显示全部楼层
顶一个!!

出0入0汤圆

发表于 2013-10-9 23:44:21 | 显示全部楼层
必须留个号

出0入0汤圆

发表于 2013-10-12 10:52:48 | 显示全部楼层

好东西,收藏一下!

出0入0汤圆

发表于 2013-10-12 10:57:50 | 显示全部楼层
好东西,标记一下。我做的一个项目也涉及到了电机加减速。回头学习下。三克油!

出0入0汤圆

发表于 2013-10-18 17:33:32 | 显示全部楼层
编译成功,谢谢楼主

出0入0汤圆

发表于 2013-10-22 08:30:07 | 显示全部楼层
好帖,收藏!

出0入0汤圆

发表于 2013-10-22 09:21:26 | 显示全部楼层
谢谢分享!!

出0入0汤圆

发表于 2013-10-22 09:50:22 | 显示全部楼层
顶!顶顶

出0入0汤圆

发表于 2013-10-22 10:32:17 | 显示全部楼层
好东西,MARK一下

出0入0汤圆

发表于 2013-11-2 13:49:11 | 显示全部楼层
收藏,记号

出0入0汤圆

发表于 2013-11-25 23:26:35 | 显示全部楼层
关注中,正在学习步进电机 谢了

出0入0汤圆

发表于 2013-11-26 20:24:31 | 显示全部楼层
进来看看。。

出0入0汤圆

发表于 2013-12-27 16:45:40 | 显示全部楼层
myqiang1990 发表于 2013-2-23 13:22
专家就不是,我也半路出家,菜鸟一只,我也是站在巨人的肩膀上啊~~哈哈~~  ...

太厉害了吧。。。半路出家,我也想半路出家搞那么厉害。。。

出0入0汤圆

发表于 2014-1-21 14:25:25 | 显示全部楼层
这是电脑所用的源码?

出0入0汤圆

发表于 2014-1-21 15:11:37 | 显示全部楼层
学习!!!!!

出0入0汤圆

发表于 2014-1-21 16:16:17 | 显示全部楼层
mark,好东西,正在学习这一块知识

出0入0汤圆

发表于 2014-1-21 19:53:30 | 显示全部楼层
mark下  要研究下才行 支持楼主

出0入0汤圆

发表于 2014-1-21 20:55:36 | 显示全部楼层
标记一下,研究研究

出0入0汤圆

发表于 2014-1-23 07:15:28 | 显示全部楼层
好裤,

出0入0汤圆

发表于 2014-1-23 15:10:38 | 显示全部楼层
好东西,收藏了

出0入0汤圆

发表于 2014-1-24 16:30:40 | 显示全部楼层
谢谢楼主  学习了

出0入0汤圆

发表于 2014-1-24 16:53:10 | 显示全部楼层
三克油喂了吗吃

出0入0汤圆

发表于 2014-1-24 20:36:52 | 显示全部楼层
厉害厉害

出0入0汤圆

发表于 2014-3-10 16:28:07 | 显示全部楼层
nishuizhou 发表于 2013-9-12 16:56
实时计算也可以啊,不过稍微麻烦一点,我用的是STM32—FPGA这种模式,性能很稳定。 ...

您好,能详细指点一下吗?谢谢!

出0入0汤圆

发表于 2014-3-10 16:48:32 | 显示全部楼层
好东西,赞一个。

出0入0汤圆

发表于 2014-3-10 16:51:19 | 显示全部楼层
larry.wong 发表于 2014-3-10 16:28
您好,能详细指点一下吗?谢谢!

可以用STM32的FSMC 的A模式与FPGA通讯,STM32可以做计算和IO控制,FPGA发脉冲。定制FPGA的脉冲频率。不知你要参与什么项目,说不太清楚

出0入0汤圆

发表于 2014-3-10 17:10:50 | 显示全部楼层
果断收藏

出0入0汤圆

发表于 2014-3-10 17:12:41 | 显示全部楼层
感谢LZ哈,LZ的头像也太萌了哈,受不鸟了。。。

出0入0汤圆

发表于 2014-3-20 20:42:03 | 显示全部楼层
nishuizhou 发表于 2014-3-10 16:51
可以用STM32的FSMC 的A模式与FPGA通讯,STM32可以做计算和IO控制,FPGA发脉冲。定制FPGA的脉冲频率。不知 ...

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

本版积分规则

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

GMT+8, 2024-4-16 14:37

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

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