基于STM32F103C8T6控制A4988模塊驅動2相4線步進電機

文章目錄

  • 一、A4988模塊簡介
  • 二、A4988引腳說明
  • 三、A4988的Vref電壓調節
  • 四、STM32F103C8T6控制A4988驅動2相4線步進電機
    • 準備工作
    • 引腳接線
    • 代碼示例
    • 效果展示
  • 五、A4988電機驅動板常見問題


一、A4988模塊簡介

??A4988 是一款功能齊全的微步進電機驅動器,內置轉換器,操作簡便。它設計用于在全步進、半步進、四分之一步進、八分之一步進和十六分之一步進模式下驅動雙極步進電機,輸出驅動能力高達 35 V 和 ±2 A。A4988 內置一個固定關斷時間電流調節器,可在慢速或混合衰減模式下工作。轉換器是 A4988 輕松實現的關鍵。只需在 STEP 輸入端輸入一個脈沖,即可驅動電機進行一個微步。無需相序表、高頻控制線或復雜的編程接口。A4988 接口非常適合無法使用復雜微處理器或微處理器負擔過重的應用。在步進操作期間,A4988 中的斬波控制會自動選擇電流衰減模式:慢速或混合。在混合衰減模式下,設備初始設置為在固定關斷時間內以快速衰減,然后在剩余關斷時間內以慢速衰減。混合衰減電流控制可降低電機可聽噪聲,提高步進精度,并降低功耗。內置同步整流控制電路,用于改善 PWM 工作期間的功耗。內部電路保護包括:帶滯后的熱關斷、欠壓鎖定 (UVLO) 和交叉電流保護。
特性
?? 低導通電阻 (RDS(ON)) 輸出
?? 自動電流衰減模式檢測/選擇
?? 混合和慢速電流衰減模式
?? 同步整流,低功耗
?? 內部欠壓鎖定 (UVLO)
?? 交叉電流保護
?? 3.3 V 和 5 V 兼容邏輯電源
?? 熱關斷電路
?? 接地短路保護
?? 負載短路保護
?? 五種可選步進模式:全步進、1/2、1/4、1/8 和 1/16
在這里插入圖片描述

二、A4988引腳說明

在這里插入圖片描述

EN:使能引腳(低電平有效),該引腳懸空或接低電平,A4988都可以正常工作;接高電平則不工作。

MS1,MS2,MS3:微步細分驅動控制,通過這三個引腳的邏輯電平,調整A4988驅動電機模式為全、半、1/4、1/8 及 1/16 步進模式。

MS1MS2MS3微步分辨率
LLL全步
HLL半步
LHL1/4步
HHL1/8步
HHH1/16步

RST:復位引腳(低電平有效),該引腳懸空,則默認為高電平。即該引腳沒有連接任何電平時,A4988可以正常工作。

SLP:睡眠引腳,該引腳連接電平為低電平時,A4988將進入低能耗睡眠狀態,即消耗最小的電能。如果無需使用SLeep功能,則可以將SLEEP引腳與RESET引腳連接,則A4988將持續保持正常能耗狀態而不會進入低能耗狀態。

STEP:步進引腳,通過MCU控制器向A4988發送脈沖控制信號,A4988接收到此信號后,會根據 MS1, MS2 和 MS3引腳控制電機運轉。

DIR:方向引腳,通過此引腳可以調整A4988控制電機運行方向。當此引腳為低電平,A4988將控制電機順時針旋轉。高電平則逆時針旋轉。

1A,1B:電機繞組1控制引腳。

2A,2B:電機繞組2控制引腳。

VMOT:電機電源正極(可用電源電壓為8V ~ 35V)注:此引腳用于連接為電機供電的電源。

VDD:邏輯電源正極(3 – 5.5伏)注:此引腳用于為A4988電機驅動板供電。

GND:電機電源接地和邏輯電源接地。

三、A4988的Vref電壓調節

??Vref電壓調節是通過A4988上的電位器旋鈕調節Vref參考電壓。該電壓將直接影響到步進電機在工作時流過線圈的電流強度。請注意,這一步操作非常重要,如果忽略這一步有可能會產生電機損壞的后果。
A4988 Vref參考電壓計算公式:

Rs: 市面上A4988模塊上的Rs電阻值一般有3種類型,0.05 歐姆, 0.1 歐姆或0.2 歐姆。店鋪的A4988模塊上的Rs電阻值為0.1歐姆,大部分A4988模塊順時針旋轉電位器可調大Vref,逆時針旋轉電位器調小Vref。

Vref: 電位器金屬旋鈕和GND之間的電壓即為Vref。可使用小改錐旋轉電位器旋鈕從而改變Vref。(如下圖所示)。

Imax:步進電機工作時,線圈允許流過的最大電流。

??例:Rs為0.1歐姆,電機Imax為1.5A,通過以上公式計算,Vref參考電壓為1.2V。即將通過調節電位器旋鈕 將Vref調節為1.2伏特左右。

測量Vref時注意:

  1. A4988模塊的VDD引腳需要連接+5V電壓
  2. A4988模塊的GND引腳必須與電路中的其它設備共地
  3. A4988模塊的VMOT引腳無需通電,但是通電也不影響Vref的測量。
  4. A4988模塊的1A/1B/2A/2B引腳可以不與步進電機連接,但連接也不會影響Vref的測量

四、STM32F103C8T6控制A4988驅動2相4線步進電機

準備工作

??STM32F103C8T6最小系統板,A4988驅動模塊,OLED顯示屏,EC11旋轉編碼器,按鍵和導線若干。

引腳接線

STM32F103C8T6A4988
電機電源正VMOT
電機電源負GND
3.3VVDD
GNDGND
PA0STEP
PA4EN
PA5DIR
PB3MS1
PB4MS2
PB5MS3
PA1編碼器的A ,控制頻率和占空比的調節
PA2編碼器的B,控制頻率和占空比的調節
PA3編碼器的S,切換調節頻率還是調節占空比
PA6與PA0短接,捕獲PWM
PB10按鍵1,控制細分切換
PB11按鍵2,控制方向切換

代碼示例

A4988.c

#include "A4988.h"
#include "Delay.h"void A4988_Init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_ResetBits(GPIOA, GPIO_Pin_4 | GPIO_Pin_5);GPIO_ResetBits(GPIOB, GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5);
}void A4988_SetStep(uint8_t step)
{switch(step){case 1:		//1細分A4988_MS1_L;A4988_MS2_L;A4988_MS3_L;break;case 2:		//1/2細分A4988_MS1_H;A4988_MS2_L;A4988_MS3_L;break;case 3:		//1/4細分A4988_MS1_L;A4988_MS2_H;A4988_MS3_L;break;case 4:		//1/8細分A4988_MS1_H;A4988_MS2_H;A4988_MS3_L;break;case 5:		//1/16細分A4988_MS1_H;A4988_MS2_H;A4988_MS3_H;break;}
}void A4988_SetDir(uint8_t dir)
{	A4988_EN_H;Delay_ms(20);if(dir == 1) A4988_DIR_Helse A4988_DIR_LA4988_EN_L;
}

main.c

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "KEY.h"
#include "A4988.h"
#include "PWM.h"
#include "IC.h"
#include "Encoder.h"uint8_t step = 0;
uint8_t dir = 0;int main(void)
{OLED_Init();PWM_Init();A4988_Init();Key_Init();Encoder_Init();OLED_ShowString(1, 5, "A4988");OLED_ShowString(1, 12, "F");  //F:調節頻率,D:調節占空比OLED_ShowString(2, 4, "0000Hz");OLED_ShowString(2, 11, "000%");OLED_ShowString(3, 4, "1   ");OLED_ShowString(3, 11, "+");PWM_SetPrescaler(720 - 1);			//Freq = 72M / (PSC + 1) / 100PWM_SetCompare1(50);				//Duty = CCR / 100A4988_SetDir(1);A4988_SetStep(1);Update_Display();while (1){int16_t encoder_change = Encoder_GetValue();if(encoder_change != 0){if(setting_mode == 0)  // 調頻率{pwm_freq += encoder_change * 10;if(pwm_freq > 2000) pwm_freq = 2000;if(pwm_freq < 10) pwm_freq = 10;PWM_SetPrescaler(pwm_freq - 1);}else  // 調占空比{pwm_duty += encoder_change;if(pwm_duty > 100) pwm_duty = 100;if(pwm_duty < 0) pwm_duty = 0;PWM_SetCompare1(pwm_duty);}Update_PWM();Update_Display();}if(Encoder_GetKey())  // 按下編碼器按鍵切換調節模式{setting_mode ^= 1;  // 0/1切換Update_Display();}Delay_ms(20);KeyEvent_TypeDef key_event = Key_Scan();switch (key_event){case KEY_MODE_CLICK:// Mode鍵短按事件step++;if (step > 5) step = 1;switch(step){case 1: A4988_SetStep(1); OLED_ShowString(3,4,"1   "); break;case 2: A4988_SetStep(2); OLED_ShowString(3,4,"1/2 "); break;case 3: A4988_SetStep(3); OLED_ShowString(3,4,"1/4 "); break;case 4: A4988_SetStep(4); OLED_ShowString(3,4,"1/8 "); break;case 5: A4988_SetStep(5); OLED_ShowString(3,4,"1/16"); break;}break;case KEY_DIR_CLICK:dir++;if(dir > 2) dir = 1;if(dir == 1) {A4988_SetDir(1); OLED_ShowString(3, 11, "+"); //正轉}else{A4988_SetDir(0);OLED_ShowString(3, 11, "-"); //反轉}break;}Delay_ms(20);}
}

效果展示

五、A4988電機驅動板常見問題

?1)4988驅動板可以驅動多大的電流?
??如果4988芯片上沒有加散熱片,電流最好在1A以下。如果加散熱片,電流可以達到2A。

?2)步進電機的連接方式是什么?
??先判斷哪兩根線為同一相,短接兩兩線有明顯阻力的為同一相,A相和B相可以不區分,只有是同一相接在同一個電機繞組控制引腳即可。

?3)接上電后,電機左右抖動不能正常運行是什么原因?
??電機出現抖動一般有兩個原因,一是缺相:可能是4988與電機沒有接好導致4988的輸出端某一相斷開,造成電機缺相從而抖動。也有可能是步進電機接線接錯:如果步進電機沒有正確的進行連接,電機會出現抖動的情況。二是驅動電流過大或過小導致的,調節板載上的電位器調到電機正常平穩運行就可。

?4)電機丟步如何解決?
??相電流的大小跟步進電機的扭力有直接關系,如果感覺你的步進電機扭力不足、丟步,可能是4988輸出的電流太小。您可以調節A4988模塊上的電位器調節A4988模塊的輸出電流強度。具體調節方法請參考上面的Vref電壓的調節方法。請注意:如A4988輸出電流強度大于電機工作電流強可能會燒毀您的步進電機。請小心調節。

?5)4988可以驅動兩相六線或兩相五線的電機嗎?
??可以,兩相連線按照問題2連接,將中間抽頭懸空即可。

?6)電機停止轉動時會有滋滋的電流聲。
??這是正常現象。步進電機有一個參數-步距角。通過細分驅動可以縮小步進角度,比如步距角為1.8度的步進電機,采用16細分,最小可以走的角度是1.8/16=0.1125度。由于這個角度非常小,當電機停止時,可能處于非電機物理位置(1.8度為一個物理位置)。因此步進電機在靜止時會有電流聲,這屬于正常現象,不用擔心。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/93915.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/93915.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/93915.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于單片機智能晾衣架/智能窗戶/智能窗簾設計

傳送門 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品題目速選一覽表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品題目功能速覽 概述 智能晾衣架系統基于單片機設計&#xff0c;融合傳感器技術與物聯網功能&#xff0c;實現衣物的自…

Python爬蟲實戰:研究dark-fantasy,構建奇幻文學數據采集分析系統

1. 引言 1.1 研究背景 奇幻文學作為奇幻文學的重要子類別,融合了哥特式元素與傳統奇幻設定,以其對人性的深刻探索和復雜的道德困境構建,成為當代文學研究的重要對象。與傳統奇幻文學強調英雄主義和光明戰勝黑暗的敘事不同,奇幻往往展現道德邊界、復雜的角色動機和充滿不確…

算法提升樹形數據結構-(線段樹)

今天介紹有關線段樹的相關部分的知識&#xff0c;線段樹是樹的數據結構中十分重要的算法處理思想。1.建立初始樹的條件2.基本框架3.區間修改的相關代碼4.區間查詢的代碼題目描述給定一個長度為 N 的數組 a&#xff0c;其初值分別為 a1?,a2?,...,aN?。現有 Q 個操作&#xff…

java-代碼隨想錄第十四天| 二叉樹層序遍歷相關題目

目錄 102.二叉樹的層序遍歷 107.二叉樹的層次遍歷II 199.二叉樹的右視圖 637.二叉樹的層平均值 429.N叉樹的層序遍歷 515.在每個樹行中找最大值 116.填充每個節點的下一個右側節點指針 117.填充每個節點的下一個右側節點指針II 104.二叉樹的最大深度 111.二叉樹的最小…

C++智能指針詳解:告別內存泄漏,擁抱安全高效

??小新課堂開課了&#xff0c;歡迎歡迎~?? &#x1f388;&#x1f388;養成好習慣&#xff0c;先贊后看哦~&#x1f388;&#x1f388; 所屬專欄&#xff1a;C&#xff1a;由淺入深篇 小新的主頁&#xff1a;編程版小新-CSDN博客 引言&#xff1a;為什么引入智能指針&#…

算法訓練營day57 圖論⑦ prim算法精講、kruskal算法精講

兩種最小生成樹算法講解 prim算法精講 卡碼網53. 尋寶 本題題目內容為最短連接&#xff0c;是最小生成樹的模板題&#xff0c;那么我們來講一講最小生成樹。最小生成樹可以使用prim算法也可以使用kruskal算法計算出來。本篇我們先講解prim算法。 最小生成樹是所有節點的最小連…

148-基于Python的2024物流年度銷售收入數據可視化分析系統

基于Python Django的物流數據可視化分析系統開發實錄 項目背景 隨著物流行業數據量的激增&#xff0c;企業對數據分析和可視化的需求日益增長。傳統的Excel分析方式難以滿足多維度、實時、交互式的數據洞察需求。為此&#xff0c;我們開發了一個基于Python Django的物流年度銷售…

Python中的關鍵字參數:靈活與可讀性的完美結合(Effective Python 第23條)

在Python編程中&#xff0c;函數參數的傳遞方式靈活多樣&#xff0c;而其中一種特別強大的方式就是關鍵字參數。關鍵字參數不僅能夠提升代碼的可讀性&#xff0c;還為函數的設計和調用提供了極大的便利。本文將深入探討關鍵字參數的用法、優勢以及實際應用中的注意事項。 一、關…

005.Redis 主從復制架構

主從復制概念與原理 核心概念 主節點&#xff08;Master&#xff09;&#xff1a;唯一接受寫操作的節點&#xff0c;數據修改后異步復制到從節點。 從節點&#xff08;Replica&#xff09;&#xff1a;復制主節點數據的節點&#xff0c;默認只讀&#xff08;可配置為可寫但不…

Android Studio 模擬器 “******“ has terminated 問題

問題&#xff1a;Android Studio 模擬器 "**" has terminated 問題設備信息&#xff1a;CPU:I5 7500U RAM:64GB System:Windows 10 64位解決&#xff1a; 網上所有辦法都嘗試后仍然不可行可嘗試如下辦法&#xff1a;1、此電腦→管理→設備管理→顯示適配器→右擊→…

uniapp 懶加載圖片

實現的功能 1.一次性獲取圖片。 2.按用戶視野范圍內看到的圖片滾動下來進行懶加載,提高瀏覽器性能。 3.不要一次性加載全部的圖片 1.給父組件綁定一個滾動監聽 1.頁面路徑:/pages/Home/index.vue 不在一個頁面的話用 EventBus去觸發。@scroll="handleScroll2" Ev…

Android - 資源類型 MINE Type

一、概念MINE&#xff08;Multipurpose Internet Mail Extensions&#xff09;最初是為了標識電子郵件附件的類型&#xff0c;在 HTML 中使用 content-type 屬性表示&#xff0c;描述了文件類型的互聯網標準。格式&#xff1a;媒體類型/子類型&#xff0c;可使用通配符*。如 au…

php8.+ 新函數總結

PHP系統函數是PHP核心提供的內置函數&#xff0c;用于執行常見任務&#xff0c;如字符串操作、數組處理、數學運算等。它們通過預定義代碼塊封裝了特定功能&#xff0c;開發者可直接調用而無需重復編寫代碼。 而 PHP 8.0以后又新增了一些實用函數&#xff0c;今天總結部分常見的…

Qt事件處理機制詳解

一、事件處理基本流程在Qt中&#xff0c;所有從QObject派生的類都能處理事件。事件處理的核心流程如下&#xff1a;事件入口函數&#xff1a;bool QObject::event(QEvent *e)參數e包含事件信息&#xff0c;通過e->type()獲取事件類型返回值true表示事件已被處理&#xff0c;…

Zynq中級開發七項必修課-第三課:S_AXI_GP0 主動訪問 PS 地址空間

Zynq中級開發七項必修課-第三課&#xff1a;S_AXI_GP0 主動訪問 PS 地址空間 目標1.0 編寫 AXI-Lite Master&#xff1a;按鍵計數 → 寫入 PS 內存1.1 PL 觸發中斷 → PS 響應并串口打印按鍵計數值BD圖axi_lite_master.v // // AXI4-Lite Simple Master (single-shot, non-pip…

CVPR | 2025 | MAP:通過掩碼自回歸預訓練釋放混合 Mamba - Transformer 視覺骨干網絡的潛力

文章目錄CVPR | 2025 | MAP&#xff1a;通過掩碼自回歸預訓練釋放混合 Mamba - Transformer 視覺骨干網絡的潛力創新點初步研究初步結論方法確定一個混合網絡方法掩碼機制掩碼比例MAP的transformer解碼器重建目標實驗ImageNet-1k 上的 2D 分類CVPR | 2025 | MAP&#xff1a;通過…

Spring Boot + Spring AI 最小可運行 Demo

一. 項目依賴&#xff08;pom.xml&#xff09;<project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0https://maven.apache.org/xsd/mav…

AI重塑校園教育:中小學AI智慧課堂定制方案+AI作業批改減負,告別一刀切學生進步快

家長們&#xff0c;你有沒有聽過孩子抱怨上學的煩惱&#xff1f;課堂上老師講的內容&#xff0c;有的同學覺得太簡單 “吃不飽”&#xff0c;有的卻跟不上 “聽不懂”&#xff1b;放學后作業堆成山&#xff0c;老師要熬夜批改到半夜&#xff0c;錯題反饋要等第二天才能拿到&…

舊物循環,交易新生——舊物回收二手交易小程序,引領綠色消費新風尚

在資源日益緊張、環境污染問題日益突出的今天&#xff0c;綠色消費已經成為時代發展的必然趨勢。舊物回收二手交易小程序&#xff0c;作為綠色消費的重要載體&#xff0c;正以其獨特的優勢和魅力&#xff0c;引領著一場關于舊物循環、交易新生的綠色革命。一、舊物循環&#xf…

刷機維修進階教程-----如何清除云賬號 修復wifi 指南針 相機 指紋等刷機故障

在刷機、系統升級或降級過程中,是否遇到過以下問題:WiFi無法開啟、相機無響應、指南針或陀螺儀失靈 指紋等故障?另外,云賬號是否仍會保留,即使通過9008模式刷機也無法徹底清除?那么這篇博文都可以找到答案。 通過博文了解?????? 1??????----云賬號信息分區如…