找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 639|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

直線插補 電機移動位置怎么處理

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:104712 發(fā)表于 2024-8-18 18:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
代碼抄自帖子 http://www.torrancerestoration.com/bbs/dpj-127428-1.html
請大牛幫忙一下我的電機是42步進電機 1.8度 16細分
這是直線插補算法 比如a=countx;b=county; a=6 b=4
一u共循環(huán)10次  每次計算得到x軸加6次 y軸加4次  每次分別調(diào)用stepx();stepy();發(fā)送1個脈沖,
一共才發(fā)送10個脈沖 也走不到x=6 Y=4 我的步進電機驅(qū)動設(shè)置16細分


希望好心解答 給出16細分的代碼 本人謝謝  解決了我可以發(fā)給紅包 本人學(xué)生經(jīng)濟有限給不了太多發(fā)個紅包意思意思







  • if(Fm[k]>=0)
  •                 {
  •                         x++;
  •                         m--;
  •                         stepx();
  •                         k++;
  •                         Fm[k]=Fm[k-1]-b;
  •                 }
  •                 if(Fm[k]<0)
  •                 {
  •                         y++;
  •                         m--;
  •                         stepy();
  •                         k++;
  •                         Fm[k]=Fm[k-1]+a;
  •                 }

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

  • uint countx=0;
  • uint county=0;
  • uint count,flag=0;
  • uint x=0;
  • uint y=0;
  • uint a=0,b=0,k=0,m=0;
  • uint st=0;
  • char Fm[20];

  • uchar code bux[]={0xf0,0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};
  • uchar code buy[]={0x00,0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90};

  • void star()
  • {
  •         a=countx;
  •         b=county;
  •         m=a+b;
  •         Fm[k]=0;
  •         while(m>0)
  •         {
  •                 if(Fm[k]>=0)
  •                 {
  •                         x++;
  •                         m--;
  •                         stepx();
  •                         k++;
  •                         Fm[k]=Fm[k-1]-b;
  •                 }
  •                 if(Fm[k]<0)
  •                 {
  •                         y++;
  •                         m--;
  •                         stepy();
  •                         k++;
  •                         Fm[k]=Fm[k-1]+a;
  •                 }
  •         }
  • }
  • void stepx()
  • {
  •         P3=bux[x];
  •         delayms(1000);
  • }
  • void stepy()
  • {
  •         P1=bux[y];
  •         delayms(1000);
  • }



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1128898 發(fā)表于 2024-8-19 05:07 | 只看該作者
電機抖動機械系數(shù)考慮一下
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表