91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是步進電機?簡單的步進電機驅動調試

冬至子 ? 來源:小小李sunny ? 作者:小小李sunny ? 2023-11-27 18:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1.背景

收拾東西發現一個步進電機(應該是之前從攝像頭拆下來的,42步進電機),驅動一下試試。簡單記錄一下,內容比較簡單,歡迎大家指正。

2.硬件

都是用手邊有的材料:
控制板用ART-Pi
驅動板L298N模塊;
電源DC12V;

3.原理

3.1 什么是步進電機

步進電機是將電脈沖信號,轉變為角位移或線位移的開環控制電機,又稱為脈沖電機。在非超載的情況下,電機的轉速、停止的位置只取決于脈沖信號的頻率和脈沖數,而不受負載變化的影響。當步進驅動器接收到一個脈沖信號時,它就可以驅動步進電機按設定的方向轉動一個固定的角度,稱為“步距角”。

步進電機的旋轉是以固定的角度一步一步運行的,可以通過控制脈沖個數來控制角位移量,從而達到準確定位的目的,同時可以通過控制脈沖頻率,來控制電機轉動的速度和加速度,從而達到調速的目的。(網上摘錄)

3.2 步進電機驅動方式

1)4拍,整步控制,就是依據電機固有結構設計固定的步距角工作,一個電脈沖,步進電機前進一個步距角;

2)8拍,半步控制,是以電機固有的結構決定的步距角的一半角度進行步進旋轉;

3)微步,細分控制,步距角更小,就是1/4步、1/8步、1/16步、1/32步,可以到很高的細分(最高應該是1/256步),對應的步進角度就是在整步步距角乘以微步系數。微步控制就要用到驅動芯片了,比如TI的DRV8889A。

3.3 L298N模塊

L298N常用的雙H橋電機驅動模塊,都應該比較熟悉了不再過多介紹。

4.硬件連接

1)步進電機2相4線,直接接L298N模塊的OUT1~OUT4,ENA、ENB跳線帽,電源DC12V;

OUT1—->A+
OUT2—->A-
OUT3—->B+
OUT4—->B-

2)L298N接ART-Pi

IN1—->PH7
IN2—->PH8
IN3—->PH9
IN4—->PH10

1.jpg

5.程序代碼

這里采用8拍控制方式,簡單驅動電機轉動,實現任意角度的正反轉控制。

5.1 正轉控制(順時針)

void turn_angle_forward(float_t angle)
{
rt_uint16_t half_beat_num = 0;//角度轉換半拍總數
rt_uint16_t half_beat_count = 0;//半拍計數
rt_uint8_t beat_now = 0;//當前節拍
//半拍步進值360°/50/8 = 0.9°
half_beat_num = (angle * 10) / 9;
while(1)
{
switch (beat_now)
{
case 0://1000
rt_pin_write(IN1_PIN, PIN_HIGH);
rt_pin_write(IN2_PIN, PIN_LOW);
rt_pin_write(IN3_PIN, PIN_LOW);
rt_pin_write(IN4_PIN, PIN_LOW);
beat_now = 1;
break;
case 1: //1010
rt_pin_write(IN1_PIN, PIN_HIGH);
rt_pin_write(IN2_PIN, PIN_LOW);
rt_pin_write(IN3_PIN, PIN_HIGH);
rt_pin_write(IN4_PIN, PIN_LOW);
beat_now = 2;
break;
case 2://0010
rt_pin_write(IN1_PIN, PIN_LOW);
rt_pin_write(IN2_PIN, PIN_LOW);
rt_pin_write(IN3_PIN, PIN_HIGH);
rt_pin_write(IN4_PIN, PIN_LOW);
beat_now = 3;
break;
case 3://0110
rt_pin_write(IN1_PIN, PIN_LOW);
rt_pin_write(IN2_PIN, PIN_HIGH);
rt_pin_write(IN3_PIN, PIN_HIGH);
rt_pin_write(IN4_PIN, PIN_LOW);
beat_now = 4;
break;
case 4://0100
rt_pin_write(IN1_PIN, PIN_LOW);
rt_pin_write(IN2_PIN, PIN_HIGH);
rt_pin_write(IN3_PIN, PIN_LOW);
rt_pin_write(IN4_PIN, PIN_LOW);
beat_now = 5;
break;
case 5://0101
rt_pin_write(IN1_PIN, PIN_LOW);
rt_pin_write(IN2_PIN, PIN_HIGH);
rt_pin_write(IN3_PIN, PIN_LOW);
rt_pin_write(IN4_PIN, PIN_HIGH);
beat_now = 6;
break;
case 6://0001
rt_pin_write(IN1_PIN, PIN_LOW);
rt_pin_write(IN2_PIN, PIN_LOW);
rt_pin_write(IN3_PIN, PIN_LOW);
rt_pin_write(IN4_PIN, PIN_HIGH);
beat_now = 7;
break;
case 7://1001
rt_pin_write(IN1_PIN, PIN_HIGH);
rt_pin_write(IN2_PIN, PIN_LOW);
rt_pin_write(IN3_PIN, PIN_LOW);
rt_pin_write(IN4_PIN, PIN_HIGH);
beat_now = 0;
break;
default:
beat_now = 0;
break;
}
DELAY;
half_beat_count++;
if(angle > 0)
{
if(half_beat_count > half_beat_num)
break;
}
}
turn_stop();
}

5.2 反轉控制(逆時針)

反正控制時序,形象點從硬件上來說,把A相和B相調換,對應程序的話就是調整一下控制時序。

void turn_angle_reverse(float_t angle)
{
rt_uint16_t half_beat_num = 0;//角度轉換半拍總數
rt_uint16_t half_beat_count = 0;//半拍計數
rt_uint8_t beat_now = 0;//當前節拍
//半拍步進值360°/50/8 = 0.9°
half_beat_num = (angle * 10) / 9;
while(1)
{
switch (beat_now)
{
case 0://0010
rt_pin_write(IN1_PIN, PIN_LOW);
rt_pin_write(IN2_PIN, PIN_LOW);
rt_pin_write(IN3_PIN, PIN_HIGH);
rt_pin_write(IN4_PIN, PIN_LOW);
beat_now = 1;
break;
case 1://1010
rt_pin_write(IN1_PIN, PIN_HIGH);
rt_pin_write(IN2_PIN, PIN_LOW);
rt_pin_write(IN3_PIN, PIN_HIGH);
rt_pin_write(IN4_PIN, PIN_LOW);
beat_now = 2;
break;
case 2://1000
rt_pin_write(IN1_PIN, PIN_HIGH);
rt_pin_write(IN2_PIN, PIN_LOW);
rt_pin_write(IN3_PIN, PIN_LOW);
rt_pin_write(IN4_PIN, PIN_LOW);
beat_now = 3;
break;
case 3://1001
rt_pin_write(IN1_PIN, PIN_HIGH);
rt_pin_write(IN2_PIN, PIN_LOW);
rt_pin_write(IN3_PIN, PIN_LOW);
rt_pin_write(IN4_PIN, PIN_HIGH);
beat_now = 4;
break;
case 4://0001
rt_pin_write(IN1_PIN, PIN_LOW);
rt_pin_write(IN2_PIN, PIN_LOW);
rt_pin_write(IN3_PIN, PIN_LOW);
rt_pin_write(IN4_PIN, PIN_HIGH);
beat_now = 5;
break;
case 5://0101
rt_pin_write(IN1_PIN, PIN_LOW);
rt_pin_write(IN2_PIN, PIN_HIGH);
rt_pin_write(IN3_PIN, PIN_LOW);
rt_pin_write(IN4_PIN, PIN_HIGH);
beat_now = 6;
break;
case 6://0100
rt_pin_write(IN1_PIN, PIN_LOW);
rt_pin_write(IN2_PIN, PIN_HIGH);
rt_pin_write(IN3_PIN, PIN_LOW);
rt_pin_write(IN4_PIN, PIN_LOW);
beat_now = 7;
break;
case 7://0110
rt_pin_write(IN1_PIN, PIN_LOW);
rt_pin_write(IN2_PIN, PIN_HIGH);
rt_pin_write(IN3_PIN, PIN_HIGH);
rt_pin_write(IN4_PIN, PIN_LOW);
beat_now = 0;
break;
default:
beat_now = 0;
break;
}
DELAY;
half_beat_count++;
if(angle > 0)
{
if(half_beat_count > half_beat_num)
break;
}
}
turn_stop();
}
5.3 停止
void turn_stop(void)
{
rt_pin_write(IN1_PIN, PIN_LOW);
rt_pin_write(IN2_PIN, PIN_LOW);
rt_pin_write(IN3_PIN, PIN_LOW);
rt_pin_write(IN4_PIN, PIN_LOW);

5.4 轉動效果

正轉360°,反轉360°

6.總結

簡單寫了段程序驅動一下步進電機,實現了步進電機的8拍控制,可以任意角度正反轉。調速可以通過修改脈沖頻率,也就是代碼中的DELAY,但是由于步進電機特性限制,速度不能太快,否則會驅動不起來;太慢長時間運轉會發熱嚴重。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 電機驅動
    +關注

    關注

    60

    文章

    1312

    瀏覽量

    87842
  • 步進電機
    +關注

    關注

    152

    文章

    3166

    瀏覽量

    149766
  • 正反轉控制
    +關注

    關注

    3

    文章

    33

    瀏覽量

    11263
  • 脈沖信號
    +關注

    關注

    6

    文章

    402

    瀏覽量

    37650
  • L298N
    +關注

    關注

    21

    文章

    224

    瀏覽量

    79607
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    步進電機驅動相關的知識

    之前小白白寫過一篇步進電機驅動基礎,講了最基本的步進電機驅動方法。
    發表于 10-19 15:50 ?2482次閱讀
    <b class='flag-5'>步進</b><b class='flag-5'>電機</b><b class='flag-5'>驅動</b>相關的知識

    步進電機簡單驅動方法

    步進電機簡單驅動方法,了解四軸步進電機驅動器原理
    發表于 07-12 08:18

    stm32 驅動步進電機

    驅動電路,關于步進電機部分,主要針對如何設置步進電機的參數。
    發表于 03-14 09:52 ?22次下載

    步進電機的硬件電路設計,步進電機驅動原理及方法

    步進電機是一種感應電機,它的工作原理是利用電子電路,將直流電變成分時供電的,多相時序控制電流,用這種電流為步進電機供電,
    發表于 06-11 11:34 ?3.3w次閱讀

    簡單實現51單片機步進電機驅動

    簡單實現51單片機步進電機驅動說明:
    發表于 11-11 13:06 ?38次下載
    <b class='flag-5'>簡單</b>實現51單片機<b class='flag-5'>步進</b><b class='flag-5'>電機</b>的<b class='flag-5'>驅動</b>

    只要簡單接線配置,輕松將單級步進電機作為雙級步進電機進行驅動

    只要簡單接線配置,輕松將單級步進電機作為雙級步進電機進行驅動
    發表于 10-28 12:00 ?0次下載
    只要<b class='flag-5'>簡單</b>接線配置,輕松將單級<b class='flag-5'>步進</b><b class='flag-5'>電機</b>作為雙級<b class='flag-5'>步進</b><b class='flag-5'>電機</b>進行<b class='flag-5'>驅動</b>

    步進電機驅動方式與特征

    到目前為止,我們已經介紹了步進電機的結構和步進電機驅動方法。本文在表格中簡要匯總了步進
    的頭像 發表于 02-24 09:51 ?1863次閱讀
    <b class='flag-5'>步進</b><b class='flag-5'>電機</b>的<b class='flag-5'>驅動</b>方式與特征

    步進電機簡單驅動方法_步進電機控制方法

    簡單步進電機驅動方法是單相雙極驅動方式,也稱為雙相步進
    發表于 03-08 14:21 ?1.6w次閱讀

    步進電機驅動教程_步進電機功率計算

    步進電機是一種特殊的電機,可以通過輸入脈沖信號來控制它的位置和運動。步進電機通常由電機本體和
    發表于 03-08 14:33 ?4912次閱讀

    步進電機驅動詳解

    步進電機相比普通直流電機來說模型結構方面更加復雜,比如步進電機沒有設計直流電機用于切換電流方向的
    發表于 03-16 09:28 ?7次下載
    <b class='flag-5'>步進</b><b class='flag-5'>電機</b><b class='flag-5'>驅動</b>詳解

    步進電機驅動基礎

    步進電機每輸入一個脈沖信號,轉子就轉動一個角度或前進一步,其輸出的角度輸入的脈沖數成正比,轉速與脈沖頻率成正比。它的驅動方式也比普通的有刷直流電機復雜。 本節我們就來講講
    發表于 03-16 09:28 ?7次下載
    <b class='flag-5'>步進</b><b class='flag-5'>電機</b><b class='flag-5'>驅動</b>基礎

    arduino如何驅動步進電機

    ,還能輕松驅動步進電機。本文將詳細介紹Arduino驅動步進電機的原理、方法和應用。
    的頭像 發表于 01-14 16:37 ?4518次閱讀

    步進電機驅動電路原理 步進電機驅動器可以通用嗎

    步進電機驅動電路原理是指通過特定的電信號驅動步進電機工作的原理。而
    的頭像 發表于 01-24 10:46 ?3828次閱讀

    步進電機工作原理 步進電機簡單驅動方法

    步進電機是一種將電脈沖信號轉換為角位移的電動機。它具有準確性、控制性和可靠性強的特點,在許多領域得到廣泛應用,例如機械、儀器設備、電子信息等。理解步進電機的工作原理以及最
    的頭像 發表于 02-04 09:13 ?2482次閱讀

    步進電機簡單介紹

    步進電機的命名,參數,轉速簡單介紹
    的頭像 發表于 04-17 21:40 ?2003次閱讀
    主站蜘蛛池模板: 久久国产成人精品国产成人亚洲 | 月夜免费观看高清在线完整 | 久久亚洲国产成人影院 | 久久五月网 | 9966国产精品视频 | 国产叼嘿免费视频网站 | 99久久久久久久 | 欧美三级在线视频 | 五月天婷婷免费观看视频在线 | 男子扒开美女尿口做羞羞的事 | 亚洲欧美视频一区二区三区 | a看片| 日本怡红 | 成人a毛片免费全部播放 | 特黄一级毛片 | 亚洲午夜精品在线 | 亚洲综合久久久久久888 | 在线观看精品国产入口 | 91成人免费视频 | 久久综合欧美成人 | 欧美交片 | 色综合色综合色综合色综合网 | 欧美 在线播放 | 欧美一卡2卡三卡四卡五卡 欧美一卡二卡3卡4卡无卡六卡七卡科普 | 快色视频免费 | 在线你懂的视频 | 性精品 | 国产精品二区三区免费播放心 | 五月婷婷综合在线 | 国产xxxx极品bbw视色 | 国产精品热久久毛片 | 艹逼免费视频 | 夜色伊人 | 国产亚洲一区二区精品 | 色多多免费在线观看 | 亚州 色 图 综合 | 午夜老司机福利 | 日韩欧美亚洲综合一区二区 | 色多多免费在线观看 | 在线观看色视频 | 毛片免 |