久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 雷賽55步進電機驅動器stm32單片機控制源程序 [打印本頁]

作者: tu_12    時間: 2018-5-3 22:48
標題: 雷賽55步進電機驅動器stm32單片機控制源程序
12864顯示坐標,按鍵輸入坐標電機移動xmm,精度誤差在1mm以內,原創程序

stm32單片機源程序如下:
  1. #include "sys.h"       
  2. #include "delay.h"       
  3. #include "led.h"
  4. #include "smotor.h"
  5. #include "keyb.h"
  6. #include "beep.h"
  7. #include "12864.h"
  8. #include "keym.h"
  9. #include "stmflash.h"

  10. //int datatemp[3]={0};

  11. int main(void)
  12. {
  13. //         u8 exit=0;
  14. //         int obuf[3]={1,0};
  15.     delay_init();   //延時初始化
  16.         LED_Init();    //初始化燈
  17.         BEEP_Init();   //蜂鳴器初始化
  18.         Init_key();   //初始化矩陣鍵盤
  19.     Init_Motor(); //初始化步進驅動器口
  20.         LCD_Init_12864(); //液晶初始化
  21.         while(1)
  22.         {
  23. //                 STMFLASH_Write(FLASHADDR,(u16*)obuf,3);
  24. //         STMFLASH_Read(FLASHADDR,(u16*)datatemp,3);
  25.                 keyscan(); //獲取鍵值輸入步數       
  26.             dis_step(); //顯示設置的向下轉步數
  27.                 read_flash();
  28.                 SET_XYZ(xm,ym,zm,XMSPEED);
  29.                
  30.         }
  31.          
  32. }

復制代碼

  1. #include "smotor.h"
  2. #include "delay.h"
  3. #include "12864.h"
  4. #include "keym.h"

  5. #define jiasu_time 10                //加速次數 即加速區段距離
  6. #define sudu_beilv 3                //加速倍率


  7. int m_x=0,m_y=0,m_z=0;    //初始坐標

  8. /****初始化PE0-8口作為驅動器DIR/PUL/EN口****/
  9. void Init_Motor(void)  
  10. {
  11.     GPIO_InitTypeDef  GPIO_InitStructure;
  12.        
  13.          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);         //使能PD端口時鐘
  14.                
  15.          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|  \
  16.                                        GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
  17.        
  18.          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽輸出
  19.          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度為50MHz
  20.          GPIO_Init(GPIOD, &GPIO_InitStructure);                                         //根據設定參數初始化GPIO
  21. }
  22. void SET_XYZ(int x,int y,int z,u16 Speed)
  23. {
  24.     int tmp,j;
  25.         unsigned char M_speed,jiasu_step;
  26.         u8 runfast;
  27.         jiasu_step=Speed/(jiasu_time*sudu_beilv);//10mm,速度加一倍
  28.         if(jiasu_step<1)jiasu_step=1;

  29.         if(x!=m_x)
  30.         {
  31.                 if(x>m_x)         {        DIRX1; tmp=x-m_x;}
  32.                 else                {        DIRX0; tmp=m_x-x;}
  33.                 //--加速標志-------------------------------------------------
  34.                 if(tmp>11)        runfast=1;else runfast=0;        //大于20mm 啟動加速功能
  35.                 M_speed=Speed;
  36.                 for(;tmp>0;tmp--)
  37.                 {       
  38.                         for(j=0;j<200/3;j++)                           //1毫米
  39.                         {
  40. //                                        if(x<m_x)                                       
  41. //                                                {m_x=0;break;}
  42.                                 PULX1;delay_us(M_speed*100);
  43.                                 PULX0;delay_us(M_speed*100);
  44.                         }
  45.                         if(runfast)
  46.                         {
  47.                                 if(tmp<10)                        //減速區長度
  48.                                         M_speed+=jiasu_step;                //減速
  49.                                 else
  50.                                 {
  51.                                         if(M_speed>Speed/sudu_beilv)                //速度最高限 us=900
  52.                                                 M_speed-=jiasu_step;                //加速                               
  53.                                 }
  54.                         }
  55.                 }
  56.                 m_x=x;
  57.         }
  58.         if(y!=m_y)
  59.         {
  60.                 if(y>m_y)         {        DIRY1; tmp=y-m_y;}
  61.                 else                {        DIRY0; tmp=m_y-y;}
  62.                 //--加速標志-------------------------------------------------
  63.                 if(tmp>11)        runfast=1;else runfast=0;        //大于20mm 啟動加速功能
  64.                 M_speed=Speed;
  65.                 for(;tmp>0;tmp--)
  66.                 {
  67.                         for(j=0;j<200/3;j++)
  68.                         {
  69. //                                        if(y<m_y)                                       
  70. //                                                {m_y=0;break;}           //         Y_EN = 0;
  71.                                 PULY1;delay_us(M_speed*100);
  72.                                 PULY0;delay_us(M_speed*100);       
  73.                         }
  74.                         if(runfast)
  75.                         {
  76.                                 if(tmp<10)                        //減速區長度
  77.                                         M_speed+=jiasu_step;                //減速
  78.                                 else
  79.                                 {
  80.                                         if(M_speed>Speed/sudu_beilv)                //速度最高限
  81.                                         M_speed-=jiasu_step;                //加速                               
  82.                                 }
  83.                         }
  84.                 }
  85.                 m_y=y;
  86.         }
  87.         if(z!=m_z)
  88.         {
  89.                 if(z>m_z)         {        DIRZ1; tmp=z-m_z;}
  90.                 else                {        DIRZ0; tmp=m_z-z;}
  91.                 //--加速標志-------------------------------------------------
  92.                 if(tmp>11)        runfast=1;else runfast=0;        //大于20mm 啟動加速功能
  93.                 M_speed=Speed;       
  94.                 for(;tmp>0;tmp--)
  95.                 {
  96.                         for(j=0;j<200/3;j++)
  97.                         {
  98. //                                        if(z<m_z)                                       
  99. //                                                {m_z=0;break;}
  100.                                 PULZ1;delay_us(M_speed*100);
  101.                                 PULZ0;delay_us(M_speed*100);
  102.                         }
  103.                         if(runfast)
  104.                         {
  105.                                 if(tmp<10)                        //減速區長度
  106.                                         M_speed+=jiasu_step;                //減速
  107.                                 else
  108.                                 {
  109.                                         if(M_speed>Speed/sudu_beilv)                //速度最高限
  110.                                         M_speed-=jiasu_step;                //加速                               
  111.                                 }
  112.                         }
  113.                 }
  114.                 m_z=z;
  115.         }
  116.        
  117. //        if(k!=m_k)
  118. //        {
  119. //                K_EN = 0;
  120. //                if(k>m_k)         {        K_CW = 1; tmp=k-m_k;}
  121. //                else                {        K_CW = 0; tmp=m_k-k;}
  122. //                //--加速標志-------------------------------------------------
  123. //                if(tmp>20)        runfast=1;else runfast=0;        //大于20mm 啟動加速功能
  124. //                M_speed=Speed;       
  125. //                for(;tmp>0;tmp--)
  126. //                {
  127. //                        for(j=0;j<200*16/6;j++)
  128. //                        {
  129. //                                if(Kxianwei==0)
  130. //                                        if(k<m_k)                                       
  131. //                                                {m_k=0;K_EN = 1;break;}
  132. //                                K_CLK =1;delay_us(30);
  133. //                                K_CLK =0;delay_us(30);
  134. //                        }
  135. //                        if(runfast)
  136. //                        {
  137. //                                if(tmp<30)                        //減速區長度
  138. //                                        M_speed+=jiasu_step;                //減速
  139. //                                else
  140. //                                {
  141. //                                        if(M_speed>Speed/sudu_beilv)                //速度最高限
  142. //                                        M_speed-=jiasu_step;                //加速                               
  143. //                                }
  144. //                        }
  145. //                }
  146. //                K_EN = 1;
  147. //                m_k=k;
  148. //        }
  149.         
  150. }

  151. ……………………

  152. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
SMOTOR.rar (284.74 KB, 下載次數: 213)



作者: wz_dpf    時間: 2018-9-20 09:07
東西挺好
作者: 小世界理論    時間: 2018-10-2 09:48
問下,是32什么型號的單片機

作者: shenxiaofei    時間: 2018-10-6 10:10
謝謝,正在寫這方面。可以作為參考。
作者: bruck    時間: 2018-10-31 10:48
謝謝提供!

作者: bushibuke    時間: 2018-11-5 17:35
謝謝,正在找這方面的資料,值得參考
作者: yuyunkang    時間: 2018-11-18 11:15
不錯哈!
作者: plj213    時間: 2019-6-23 09:18

正在搞這個,資料非常有用啊。。。
作者: 鵬博士PBs    時間: 2019-6-23 10:23
請問樓上所說的是AUTONICS KR-55MC步進電機驅動器嗎
作者: wis98    時間: 2019-6-24 10:48
正在找這方面的資料,值得參考
作者: zlljackx    時間: 2019-6-26 14:55
挺好的程序,很全用的stm32F1

作者: Valarmorghulis    時間: 2019-8-1 15:50
正要查找這方面的資料
作者: Valarmorghulis    時間: 2019-8-1 15:54
好東西,正要找這方面的資料
作者: yupengwei    時間: 2019-9-5 08:47
謝謝分享,可以學習一下這方面的
作者: hilam    時間: 2019-10-11 17:14
好資料,加上電機及絲桿參數,就好玩了
作者: zhangjianhu    時間: 2019-10-18 10:58
資料非常有用,非常棒的程序。
作者: zhangjianhu    時間: 2019-10-18 13:09
我用的驅動器是DM542,非常適用。
作者: hoing1025    時間: 2020-4-18 21:33
謝謝!正好需要
作者: 7631001    時間: 2021-3-25 20:29
很好的代碼,學習了




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲视频在线观看 | 黄色片网站在线观看 | 久久久精品日本 | 久草在线影 | 91精品国产综合久久国产大片 | 国产乱码精品一区二区三区中文 | 国产午夜亚洲精品不卡 | 国户精品久久久久久久久久久不卡 | 一本一道久久a久久精品蜜桃 | 国产精品女人久久久 | 精品久久一区二区三区 | 91色综合 | 黄色大片在线视频 | 日韩av啪啪网站大全免费观看 | 天天干天天色 | 成人精品一区二区 | 国产在线一区二区三区 | 亚洲精品免费在线 | 亚洲人人 | 中国黄色在线视频 | 国产视频久久久久 | 久久噜噜噜精品国产亚洲综合 | 欧美日韩综合 | 91视频一88av| 欧美性久久久 | 国产视频精品视频 | 影音先锋中文字幕在线观看 | 久久99精品国产自在现线小黄鸭 | 久久久久91 | 国产三级一区二区三区 | 日韩亚洲一区二区 | 第一区在线观看免费国语入口 | 99视频免费在线 | 日韩一区二区免费视频 | 亚洲日韩中文字幕一区 | 久久国内精品 | 免费在线a视频 | 久久久噜噜噜久久中文字幕色伊伊 | 亚洲欧美日韩国产 | 99精品免费久久久久久久久日本 | 免费在线一区二区 |