【28BYJ-48】STM32同時驅動4個步進電機,支持調速與正反轉


??資料下載:待更新。。。。

先驅動起來再說,干中學!!!

1、實現功能

STM32同時驅動4個步進電機,支持單獨調速與正反轉控制
需要資源:16個任意IO口+1ms定時器中斷
在這里插入圖片描述


目錄

    • ??資料下載:待更新。。。。
    • 先驅動起來再說,干中學!!!
  • 1、實現功能
  • 一、28BYJ-48 步進電機
  • 二、ULN2003 驅動模塊
  • 三、STM32 驅動代碼實現
  • 3、修改引腳


【28BYJ-48】STM32同4個步進電機正反轉與調速

一、28BYJ-48 步進電機

??28BYJ-48 是一款常見的四相八拍式步進電機,它由定子和轉子兩部分組成。定子上有四組繞組,按照一定的順序通電,就能產生旋轉磁場,吸引轉子轉動。
??其步距角通常為 5.625°/64(約 0.08789°,這里的 64 是八拍驅動方式下細分后的步數),這意味著電機每接收到一個脈沖信號,轉子就會精確地轉動一個微小的角度,通過連續不斷地給脈沖,實現電機的連續旋轉。
電機參數
??工作電壓:一般為 5V - 12V,常見的是 5V 供電,這使得它可以方便地與微控制器(如 STM32)直接配合使用,無需復雜的電壓轉換電路。
??相電阻:每相繞組的電阻值在幾十歐姆到上百歐姆不等,例如典型值約為 200Ω 左右,這個參數影響電機的電流和驅動電路的設計。
??扭矩:它的扭矩相對較小,適用于一些對驅動力要求不高的輕載場合,如小型自動化設備的指針轉動、簡易機器人關節的微調等,一般啟動力矩在 30 - 40gf.cm 左右。

二、ULN2003 驅動模塊

功能概述
??ULN2003 是一個高耐壓、大電流達林頓陣列集成電路,主要用于驅動感性負載,如步進電機、繼電器等。它內部集成了 7 個 NPN 達林頓復合晶體管,在驅動 28BYJ-48 步進電機時,通常只用其中 4 個通道對應電機的四相繞組。
工作原理
??當微控制器(如 STM32)的引腳輸出高電平信號給 ULN2003 的輸入端時,對應的達林頓管導通,將電機繞組與電源接通;當輸入低電平時,達林頓管截止,繞組斷電。通過控制 4 個輸入引腳的電平序列,按照特定的時序給電機繞組通電,就能驅動電機旋轉。
??它還具有續流二極管,當電機繞組斷電時,為繞組產生的感應電動勢提供泄放回路,保護驅動芯片和其他電路元件,防止反向電壓擊穿。
電氣特性
??輸出電流能力:每路輸出可承受最大 500mA 的電流,足以驅動 28BYJ-48 電機,因為該電機在正常運行時每相電流一般在幾十毫安。
??耐壓值:集電極 - 發射極耐壓可達 50V,這為電機在不同電壓供電情況下提供了足夠的電壓裕量,確保可靠工作。

三、STM32 驅動代碼實現

#include "stm32f10x.h"			//STM32庫函數的頭文件
#include "timer.h"				//STM32定時器
#include "step_motor.h"			//步進電機驅動
int main(void) //主函數
{	SystemInit();delay_init();NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //   2組中斷分RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA,ENABLE);	//打開GPIO口時鐘,先打開復用才能修改是否停用復用功能GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);  	//能用PB3,PB4,PA15做普通IO,PA13&14用于SWD調試	TIM2_Int_Init(99,719);		//72000000HZ/(99+1)/(719+1)=1000HZ  1ms中斷Step_Motor_Init1();stepmotor_speed1 = 4;  		//5ms一個脈沖  stepmotor_set1 = -4096;		//4096為一圈,設置電機反轉一圈Step_Motor_Init2();stepmotor_speed2 = 3;		//4ms一個脈沖stepmotor_set2 = 4096;Step_Motor_Init3();stepmotor_speed3 = 2;		//3ms一個脈沖stepmotor_set3 = 4096;Step_Motor_Init4();stepmotor_speed4 = 1;		//2ms一個脈沖//速度 360*1000/(1+1)*4096 = 43.965°/sstepmotor_set4 = 4096;while(1){	}
}
void TIM2_IRQHandler(void)   //TIM2中斷
{if(TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)  //檢查TIM2更新中斷發生與否{TIM_ClearITPendingBit(TIM2, TIM_IT_Update  );  //清除TIMx更新中斷標志stepmotor_run1();stepmotor_run2();stepmotor_run3();stepmotor_run4();}
}

3、修改引腳

??通過宏定義快速修改引腳

/* 步進電機1參數宏 */
/* A相 */
#define LA_GPIO_PORT1    	GPIOA
#define LA_GPIO_PIN1     	GPIO_Pin_9
#define LA_GPIO_CLK1     	RCC_APB2Periph_GPIOA
/* B相 */
#define LB_GPIO_PORT1    	GPIOA
#define LB_GPIO_PIN1     	GPIO_Pin_10
#define LB_GPIO_CLK1     	RCC_APB2Periph_GPIOA
/* C相 */
#define LC_GPIO_PORT1    	GPIOA
#define LC_GPIO_PIN1    	GPIO_Pin_11
#define LC_GPIO_CLK1     	RCC_APB2Periph_GPIOA
/* D相 */
#define LD_GPIO_PORT1    	GPIOA
#define LD_GPIO_PIN1     	GPIO_Pin_12
#define LD_GPIO_CLK1     	RCC_APB2Periph_GPIOA

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

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

相關文章

[Lc6_記憶化搜索] 不同路徑 | 解決智力問題 | 有序三元組中的最大值

目錄 1.不同路徑 題解 2140. 解決智力問題 題解 2873. 有序三元組中的最大值 題解 1.不同路徑 鏈接:62. 不同路徑 一個機器人位于一個 m x n 網格的左上角 (起始點在下圖中標記為 “Start” )。 機器人每次只能向下或者向右移動一步…

軟件重構與項目進度的矛盾如何解決

軟件重構與項目進度之間的矛盾可以通過明確重構目標與范圍、采用漸進式重構策略、優化項目管理流程、提高團隊溝通效率、建立重構意識文化等方式解決。其中,采用漸進式重構策略尤為關鍵。漸進式重構是指在日常開發過程中,以小步驟持續進行重構&#xff0…

多臺服務器上docker部署 Redis 集群

規劃集群節點 確保你的服務器有固定 IP,比如: 172.16.17.100 172.16.17.101 172.16.17.102 每臺服務器運行 2 個 Redis 節點,總共 6 個節點,滿足 Redis Cluster 最小節點數要求。 2. 在每臺服務器上運行 Redis 在每臺服務器上執行…

【Pandas】pandas DataFrame dtypes

Pandas2.2 DataFrame Attributes and underlying data 方法描述DataFrame.index用于獲取 DataFrame 的行索引DataFrame.columns用于獲取 DataFrame 的列標簽DataFrame.dtypes用于獲取 DataFrame 中每一列的數據類型 pandas.DataFrame.dtypes pandas.DataFrame.dtypes 屬性用…

如何實現局域網內無痛訪問Jupyter Notebook?

Jupyter Notebook是數據科學和機器學習領域非常常用的交互式開發環境。默認情況下,Jupyter Notebook啟動后只能本地訪問,并且會自動生成一個token用于身份驗證。當需要從其他電腦遠程訪問時,往往需要對配置進行修改。 本文將詳細介紹如何通過…

[Windows] eDiary 4.3.6 日記軟件

[Windows] eDiary 鏈接:https://pan.xunlei.com/s/VOMq6xmKTbEJtNaW-BXZ7KKSA1?pwdcrvu# 【應用功能】 加密 無論本地還是云端,都可以選擇高強度加密。系統以用戶密碼為種子,對數據進行…

掌握 Flexbox 布局:為容器添加豎向滾動條的完美方案

掌握 Flexbox 布局:為容器添加豎向滾動條的完美方案 前言 在現代網頁設計中,Flexbox 布局因其靈活性和強大的對齊功能而備受歡迎。然而,在實際開發過程中,我們有時會遇到需要在一個具有最小高度的 Flex 容器中實現內容溢出時顯示…

Node.js v22.14.0 多平臺安裝指南:Windows、Linux 和 macOS 詳細教程

Node.js作為現代Web開發的基石,持續為開發者帶來性能提升和新特性支持。本文將詳細介紹在Windows、macOS和Linux系統上安裝最新Node.js的多種方法,助您快速搭建高效的JavaScript開發環境。 📦 當前最新版本 截至2025年4月,Node.…

動態規劃學習——回文子串系列問題【C++】

一,回文子串 題目鏈接:LCR 020. 回文子串 - 力扣(LeetCode) 【問題描述】 求一個字符串中有多少個回文子串,其中一個字符也算是一個回文子串。 【解法】 動態規劃 求一個字符串中回文子串的個數,我么可…

My first day in QT programming

My first QT code this->setWindowTitle("HelloWorld"); //設置窗口名稱 this->resize(400, 300); //設置窗口大小 QPushButton* btn new QPushButton; //新建按鈕組件 btn->setParent(this); //為按鈕指定父對象 …

基于python開發的郵箱合并群發工具

智能郵件群發系統 一個基于Python和PyQt5開發的智能郵件群發工具,支持Word模板和Excel數據源的自動匹配,具有現代化UI界面和友好的用戶體驗。 Github項目地址:https://github.com/liugang926/Auto-mail-sent.git dist目錄有編譯好的exe程序&…

大模型-提示詞(Prompt)技巧

1、什么是提示詞? 提示詞(Prompt)是用戶發送給大語言模型的問題、指令或請求,用來明確地告訴模型用戶想要解決的問題或完成的任務,是大語言模型理解用戶需求并據此生成相關、準確回答或內容的基礎。對于大語言模型來說…

Android開發:support.v4包與AndroidX

Android中的support.v4包與AndroidX support.v4包概述 Android Support Library中的android.support.v4包是Google為保持Android應用向后兼容而提供的重要支持庫集合。它主要解決以下問題: API版本兼容:讓新版API能在舊版Android系統上使用功能增強&a…

TCP-IP模型

書接上回(OSI通信模型) TCP-IP協議結構 (略講) ARP:IP-->MAC RARP:MAC-->IP ICMP:控制報文信息協議,主要是涉及到主機就去連接路由器時控制傳輸報文&#xff08…

雪花算法生成的主鍵存在哪些問題,為什么不能使用自增ID或者UUID做MySQL的主鍵

MySQL 分布式架構中的主鍵選擇:自增ID、UUID與雪花算法 為什么MySQL分布式架構中不能使用自增主鍵? 在分布式架構中,自增主鍵存在以下問題: 主鍵沖突風險:多個數據庫實例同時生成自增主鍵會導致ID重復分片不均勻&am…

RapidJSON 處理 JSON(高性能 C++ 庫)(四)

第四部分:RapidJSON 處理 JSON(高性能 C++ 庫) ?? 快速掌握 JSON!文章 + 視頻雙管齊下 ?? 如果你覺得閱讀文章太慢,或者更喜歡 邊看邊學 的方式,不妨直接觀看我錄制的 RapidJSON 課程視頻!?? 視頻里會用更直觀的方式講解 RapidJSON 的核心概念、實戰技巧,并配有…

chromem-go + ollama + bge-m3 進行文檔向量嵌入和查詢

Ollama 安裝 https://ollama.com/download Ollama 運行嵌入模型 bge-m3:latest ollama run bge-m3:latestchromem-go 文檔嵌入和查詢 package mainimport ("context""fmt""runtime""github.com/philippgille/chromem-go" )func ma…

【LeetCode 題解】數據庫:180. 連續出現的數字

一、問題描述 給定一個Logs表,包含自增 ID 和數字字段: CREATE TABLE Logs (id INT PRIMARY KEY AUTO_INCREMENT,num VARCHAR(50) );要求編寫 SQL 查詢,找出所有至少連續出現三次的數字。例如: --------- | id | num | -------…

MaxEnt模型進階:基于R語言自動化與GIS空間建模的物種棲息地精準預測

生物多樣性的空間分布規律及其對環境變化的響應機制,是生態學與地理學研究的前沿議題。在氣候變化加劇和人類活動干擾的雙重壓力下,如何精準預測物種潛在分布范圍、識別關鍵環境驅動因子,已成為制定生物保護策略的核心科學問題。物種分布模型…

緩存雪崩解決方案:二級緩存VS隨機TTL

背景 在學習緩存雪崩的時候,了解到有二級緩存和隨機TTL兩個解決方案,但是在學習之后,個人認為二級緩存本質上還是利用兩層緩存的過期時間不一致來實現緩存過期時間隨機化,這不就是和隨機TTL一樣嗎,故有了這篇思考&…