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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

分享個簡易的步進電機S加減速

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:93106 發(fā)表于 2016-11-4 09:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
以前自己有研究過S曲線加減速,步進電機盡量都跑這種曲線,原因就是當(dāng)電機驅(qū)動器給電機一個較高的頻率的時候,步進電機很可能反應(yīng)不過來,造成堵轉(zhuǎn),或者這個頻率變化的斜率太大剛由低頻起轉(zhuǎn)突然就變到高頻了一樣會造成堵轉(zhuǎn)、失步等等。

S曲線就是為了讓電機由低速到高速有個比較平滑的過度,能順利讓步進電機運行到要求的狀態(tài),其實就是我們常說的緩起緩?fù)#绷麟姍C也一樣,突然啟停電機都有非常大的沖動,如果不消除這種沖動是無法玩位置定位的

那么我就傳一份比較簡單的查表式的S曲線啟停咯,具體S曲線講究非常多,百度也有很多文章,大家可自行去了解,高難的我也不會,因為確實用不到,但是有機會一樣要學(xué),大家一起學(xué),我先拋個磚,站在前排的都小心點哈,砸死你哦!!

查表我是直接扒別人的,自己算和實驗?zāi)壳斑沒有時間,大家先自己下來玩耍一番,有好的東西一起分享下
簡易步進電機S加減速.rar (306.43 KB, 下載次數(shù): 417)

評分

參與人數(shù) 2黑幣 +90 收起 理由
wfliu + 10 贊一個!
admin + 80 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:146204 發(fā)表于 2016-11-8 09:48 | 只看該作者
/*

    * 步進電機S曲線加減速
   
    * 若發(fā)現(xiàn)啟動后電機有堵轉(zhuǎn)的情況請增大數(shù)組中的數(shù)值,簡單的方法是在調(diào)用的時候直接乘個倍數(shù)
   
*/

下面是樓主的PWM.c文件:
  1. #include "PWM.h"

  2. static void TIM_GPIO_Config(void)
  3. {
  4.   GPIO_InitTypeDef GPIO_InitStructure;
  5.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);

  6.         /* PA0(TIM2_CH1) PA1(TIM5_CH2) PA6(TIM3_CH1) */
  7.   GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_6;
  8.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                    // 復(fù)用推挽輸出
  9.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  10.   GPIO_Init(GPIOA, &GPIO_InitStructure);
  11.        
  12.         /* PB6(TIM4_CH1) */
  13.         GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6;
  14.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                    // 復(fù)用推挽輸出
  15.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  16.   GPIO_Init(GPIOB, &GPIO_InitStructure);
  17. }

  18. static void TIM2_Mode_Config(void)
  19. {
  20.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  21.         TIM_OCInitTypeDef  TIM_OCInitStructure;        
  22.        
  23.         /* TIM2 開啟時鐘 */
  24.         //PCLK1經(jīng)過2倍頻后作為TIM2的時鐘源等于72MHz
  25.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

  26.   /* TIM2基本配置 */                 
  27.   TIM_TimeBaseStructure.TIM_Period = 1000;
  28.   TIM_TimeBaseStructure.TIM_Prescaler = 0;                                                                                    //設(shè)置預(yù)分頻:不預(yù)分頻,即為72MHz
  29.   TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;                                //設(shè)置時鐘分頻系數(shù):不分頻
  30.   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;                  //向上計數(shù)模式

  31.   TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
  32.        
  33.   /* PWM2模式通道1 */
  34.   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;                                                    //配置為PWM模式2
  35.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;                //使能比較輸出
  36.   TIM_OCInitStructure.TIM_Pulse = 200;                                                                                                           //設(shè)置跳變值,當(dāng)計數(shù)器計數(shù)到這個值時,電平發(fā)生跳變
  37.   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;                          //當(dāng)定時器計數(shù)值小于CCR1_Val時為高電平

  38.   TIM_OC1Init(TIM2, &TIM_OCInitStructure);                                                                                                 //使能通道1

  39.   TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable);

  40.   TIM_ARRPreloadConfig(TIM2, ENABLE);                                                                                                                         // 使能TIM3重載寄存器ARR
  41.        
  42.   TIM_Cmd(TIM2, DISABLE);                                                                                                                                                                        //使能TIM3
  43. }

  44. static void TIM3_Mode_Config(void)
  45. {
  46.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  47.         TIM_OCInitTypeDef  TIM_OCInitStructure;        
  48.        
  49.         /* TIM3 開啟時鐘 */
  50.         //PCLK1經(jīng)過2倍頻后作為TIM3的時鐘源等于72MHz
  51.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

  52.   /* TIM3基本配置 */                 
  53.   TIM_TimeBaseStructure.TIM_Period = 1000;
  54.   TIM_TimeBaseStructure.TIM_Prescaler = 0;                                                                                    //設(shè)置預(yù)分頻:不預(yù)分頻,即為72MHz
  55.   TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;                                //設(shè)置時鐘分頻系數(shù):不分頻
  56.   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;                  //向上計數(shù)模式

  57.   TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
  58.        
  59.   /* PWM2模式通道1 */
  60.   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;                                                    //配置為PWM模式2
  61.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;                //使能比較輸出
  62.   TIM_OCInitStructure.TIM_Pulse = 200;                                                                                                           //設(shè)置跳變值,當(dāng)計數(shù)器計數(shù)到這個值時,電平發(fā)生跳變
  63.   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;                          //當(dāng)定時器計數(shù)值小于CCR1_Val時為高電平

  64.   TIM_OC1Init(TIM3, &TIM_OCInitStructure);                                                                                                 //使能通道1

  65.   TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);

  66.   TIM_ARRPreloadConfig(TIM3, ENABLE);                                                                                                                         // 使能TIM3重載寄存器ARR
  67.        
  68.   TIM_Cmd(TIM3, DISABLE);                                                                                                                                                                        //使能TIM3
  69. }

  70. static void TIM4_Mode_Config(void)
  71. {
  72.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  73.         TIM_OCInitTypeDef  TIM_OCInitStructure;        
  74.        
  75.         /* TIM4 開啟時鐘 */
  76.         //PCLK1經(jīng)過2倍頻后作為TIM3的時鐘源等于72MHz
  77.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);

  78.   /* TIM4基本配置 */                 
  79.   TIM_TimeBaseStructure.TIM_Period = 1000;
  80.   TIM_TimeBaseStructure.TIM_Prescaler = 0;                                                                                    //設(shè)置預(yù)分頻:不預(yù)分頻,即為72MHz
  81.   TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;                                //設(shè)置時鐘分頻系數(shù):不分頻
  82.   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;                  //向上計數(shù)模式

  83.   TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
  84.        
  85.   /* PWM2模式通道1 */
  86.   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;                                                    //配置為PWM模式2
  87.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;                //使能比較輸出
  88.   TIM_OCInitStructure.TIM_Pulse = 200;                                                                                                           //設(shè)置跳變值,當(dāng)計數(shù)器計數(shù)到這個值時,電平發(fā)生跳變
  89.   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;                          //當(dāng)定時器計數(shù)值小于CCR1_Val時為高電平

  90.   TIM_OC1Init(TIM4, &TIM_OCInitStructure);                                                                                                 //使能通道1

  91.   TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);

  92.   TIM_ARRPreloadConfig(TIM4, ENABLE);                                                                                                                         // 使能TIM4重載寄存器ARR
  93.        
  94.   TIM_Cmd(TIM4, DISABLE);                                                                                                                                                                        //使能TIM4
  95. }

  96. static void TIM5_Mode_Config(void)
  97. {
  98.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  99.         TIM_OCInitTypeDef  TIM_OCInitStructure;        
  100.        
  101.         /* TIM5 開啟時鐘 */
  102.         //PCLK1經(jīng)過2倍頻后作為TIM3的時鐘源等于72MHz
  103.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);

  104.   /* TIM5基本配置 */                 
  105.   TIM_TimeBaseStructure.TIM_Period = 1000;
  106.   TIM_TimeBaseStructure.TIM_Prescaler = 0;                                                                                    //設(shè)置預(yù)分頻:不預(yù)分頻,即為72MHz
  107.   TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;                                //設(shè)置時鐘分頻系數(shù):不分頻
  108.   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;                  //向上計數(shù)模式

  109.   TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure);
  110.        
  111.   /* PWM2模式通道1 */
  112.   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;                                                    //配置為PWM模式2
  113.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;                //使能比較輸出
  114.   TIM_OCInitStructure.TIM_Pulse = 200;                                                                                                           //設(shè)置跳變值,當(dāng)計數(shù)器計數(shù)到這個值時,電平發(fā)生跳變
  115.   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;                          //當(dāng)定時器計數(shù)值小于CCR1_Val時為高電平

  116.   TIM_OC2Init(TIM5, &TIM_OCInitStructure);                                                                                                 //使能通道1

  117.   TIM_OC1PreloadConfig(TIM5, TIM_OCPreload_Enable);

  118.   TIM_ARRPreloadConfig(TIM5, ENABLE);                                                                                                                         //使能TIM5重載寄存器ARR

  119.   TIM_Cmd(TIM5, DISABLE);                                                                                                                                                                        //使能TIM5
  120. }

  121. void TIM_Config(void)
  122. {
  123.         TIM_GPIO_Config();
  124.         TIM2_Mode_Config();
  125.         TIM3_Mode_Config();
  126.         TIM4_Mode_Config();
  127.         TIM5_Mode_Config();
  128. }

復(fù)制代碼



回復(fù)

使用道具 舉報

板凳
ID:147443 發(fā)表于 2016-11-14 15:06 | 只看該作者
好東西 謝謝分享
回復(fù)

使用道具 舉報

地板
ID:138686 發(fā)表于 2017-1-20 17:29 | 只看該作者
非常感謝分享
回復(fù)

使用道具 舉報

5#
ID:163545 發(fā)表于 2017-2-8 10:08 | 只看該作者
非常感謝分享
回復(fù)

使用道具 舉報

6#
ID:167942 發(fā)表于 2017-3-3 17:13 | 只看該作者
沒金幣
回復(fù)

使用道具 舉報

7#
ID:167942 發(fā)表于 2017-3-3 17:14 | 只看該作者
再來個
回復(fù)

使用道具 舉報

8#
ID:171429 發(fā)表于 2017-3-17 08:22 | 只看該作者
我想下載,沒金幣
回復(fù)

使用道具 舉報

9#
ID:171429 發(fā)表于 2017-3-17 08:24 | 只看該作者
查表呀, 有沒有直接計算的
回復(fù)

使用道具 舉報

10#
ID:185687 發(fā)表于 2017-4-4 22:24 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報

11#
ID:164719 發(fā)表于 2017-4-5 14:24 | 只看該作者
非常感謝分享
回復(fù)

使用道具 舉報

12#
ID:160249 發(fā)表于 2017-6-28 09:24 | 只看該作者
特別想看,我也沒金幣了
回復(fù)

使用道具 舉報

13#
ID:163679 發(fā)表于 2017-7-3 15:25 | 只看該作者
謝謝分享~
回復(fù)

使用道具 舉報

14#
ID:224742 發(fā)表于 2017-8-4 16:36 | 只看該作者
多謝樓主分享
回復(fù)

使用道具 舉報

15#
ID:239850 發(fā)表于 2017-10-16 11:24 | 只看該作者
沒有積分,沒辦法下載啊
回復(fù)

使用道具 舉報

16#
ID:265731 發(fā)表于 2017-12-23 17:13 | 只看該作者

多謝樓主分享
回復(fù)

使用道具 舉報

17#
ID:265966 發(fā)表于 2017-12-25 11:41 | 只看該作者
可以參考一下
回復(fù)

使用道具 舉報

18#
ID:270571 發(fā)表于 2018-1-3 09:21 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報

19#
ID:138017 發(fā)表于 2018-1-15 22:31 | 只看該作者

非常感謝分享
回復(fù)

使用道具 舉報

20#
ID:282536 發(fā)表于 2018-2-6 10:53 | 只看該作者
感謝分享,
回復(fù)

使用道具 舉報

21#
ID:286642 發(fā)表于 2018-3-1 15:51 | 只看該作者
好東西 謝謝分享
回復(fù)

使用道具 舉報

22#
ID:317012 發(fā)表于 2018-4-26 14:41 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報

23#
ID:82014 發(fā)表于 2018-4-26 19:38 | 只看該作者
借鑒一下樓主的簡易算法
回復(fù)

使用道具 舉報

24#
ID:77110 發(fā)表于 2018-5-4 12:42 | 只看該作者
好東西 謝謝分享
回復(fù)

使用道具 舉報

25#
ID:316433 發(fā)表于 2018-6-6 22:33 | 只看該作者
最近在學(xué)習(xí)電機相關(guān)知識,希望能得到幫助
回復(fù)

使用道具 舉報

26#
ID:389520 發(fā)表于 2018-10-17 17:01 | 只看該作者
有沒有人知道這個程序怎么接線,對方向和脈沖控制的接口沒看太明白
回復(fù)

使用道具 舉報

27#
ID:141486 發(fā)表于 2019-8-12 21:07 | 只看該作者
收下了,慢慢研究一下
回復(fù)

使用道具 舉報

28#
ID:364137 發(fā)表于 2020-11-11 09:38 | 只看該作者
謝謝分享,下載研究一下。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩高清在线观看 | 亚洲精品日本 | 9久久 | 免费一区二区三区 | 欧美激情精品久久久久久 | 国产综合视频 | 国产精品久久久久久婷婷天堂 | 毛片在线视频 | 日本精品免费在线观看 | 国产欧美精品一区二区色综合朱莉 | 欧美xxxx在线| 91原创视频 | 久久综合九色综合欧美狠狠 | 欧产日产国产精品视频 | 成人免费三级电影 | 欧美在线a | 日本久久一区 | 欧美精品99 | 久热免费在线 | 久久精品国产99国产精品 | 国产亚洲成av人在线观看导航 | 久久久国产精品一区 | 国产高清在线精品一区二区三区 | 国产精品久久国产精品 | 久热电影| 看av片网站 | 精品久久不卡 | 91在线视频国产 | 欧美成人免费在线视频 | 国产真实精品久久二三区 | 日本天天操 | 色综合久久天天综合网 | 精品视频一区二区三区 | 黑人中文字幕一区二区三区 | 玖玖色在线视频 | av福利网站| 五月综合激情网 | 中文字幕成人av | 国产精品美女久久久久久久久久久 | 中文字幕免费在线 | 黄色毛片在线播放 |