STM32 智能小車項目 L298N 電機驅動模塊

今天開始著手做智能小車的項目了

在智能小車或機器人項目中,我們經常會聽到一個詞叫?“H 橋電機驅動”,尤其是常見的?L298N?模塊,就是基于“雙 H 橋”原理設計的。那么,“H 橋”到底是什么?為什么要用“雙 H 橋”來驅動電機?。今天,我們就來深入講解一種應用極為廣泛的電機驅動模塊——L298N,了解它的工作原理、引腳功能、接線方式及實際應用。

一、什么是 L298N?

L298N 是一款?雙 H 橋電機驅動芯片,內部集成了兩個全橋驅動器,能同時控制兩個直流電機或一個步進電機。由于其穩定性好、價格低、接線方便,成為 Arduino、STM32、51 單片機等平臺中最常見的電機驅動解決方案之一。

二.模塊引腳與結構詳解

L298N 模塊通常包括如下接口:

1. 電源接口

引腳

功能描述

VCC

給電機供電(5~35V)

GND

地線(邏輯地與電源地共用)

5V

給控制邏輯供電,或供外部單片機使用(視跳帽而定)

注意:VCC 是電機電源輸入,不是控制電壓!

2. 控制引腳

引腳

功能

IN1/IN2

控制電機 A 正反轉

IN3/IN4

控制電機 B 正反轉

ENA

使能電機 A,同時用于 PWM 調速

ENB

使能電機 B,同時用于 PWM 調速

3. 輸出接口

引腳

功能說明

OUT1/OUT2

電機 A 輸出

OUT3/OUT4

電機 B 輸出

三, H 橋原理簡要回顧

H 橋是一種電路結構,用于改變電流方向以實現直流電機的正轉、反轉、剎車、停止等控制。

一個 H 橋控制一個電機的兩個方向,兩組 H 橋可控制兩個電機,因此稱為“雙 H 橋”。

IN1

IN2

電機狀態

正轉

反轉

剎車

停止(斷電)

ENA 和 ENB 輸入 PWM 信號可以調節電機轉速。

四,接線實例:L298N + STM32F103

一、硬件連接說明(以 STM32F103 為例)

L298N 引腳

功能

STM32 引腳

說明

IN1

電機A控制

PA0

GPIO 輸出

IN2

電機A控制

PA1

GPIO 輸出

ENA

電機A調速

PA2 (TIM2_CH3)

PWM 輸出

IN3

電機B控制

PA3

GPIO 輸出

IN4

電機B控制

PA4

GPIO 輸出

ENB

電機B調速

PA5 (TIM2_CH1)

PWM 輸出

GND

GND

必須共地

二、GPIO 初始化代碼

 

void?L298N_GPIO_Init(void){? ??RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,?ENABLE);? ? GPIO_InitTypeDef GPIO_InitStructure;? ? GPIO_InitStructure.GPIO_Pin?= GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3 | GPIO_Pin_4;? ? GPIO_InitStructure.GPIO_Mode?= GPIO_Mode_Out_PP;? ? GPIO_InitStructure.GPIO_Speed?= GPIO_Speed_50MHz;? ??GPIO_Init(GPIOA, &GPIO_InitStructure);}


?


三、PWM 初始化(使用 TIM2)

 
void?PWM_Init(void){? ??RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,?ENABLE);? ??RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,?ENABLE);? ? GPIO_InitTypeDef GPIO_InitStructure;? ? GPIO_InitStructure.GPIO_Pin?= GPIO_Pin_2 | GPIO_Pin_5;?// PA2 - CH3, PA5 - CH1? ? GPIO_InitStructure.GPIO_Mode?= GPIO_Mode_AF_PP;? ? GPIO_InitStructure.GPIO_Speed?= GPIO_Speed_50MHz;? ??GPIO_Init(GPIOA, &GPIO_InitStructure);? ? TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;? ? TIM_OCInitTypeDef TIM_OCInitStructure;// 設置計數頻率為 1MHz,PWM頻率為1KHz? ? TIM_TimeBaseStructure.TIM_Period?=?1000?-?1; ? ? ? ? ??// ARR? ? TIM_TimeBaseStructure.TIM_Prescaler?=?72?-?1; ? ? ? ? ?// PSC (72MHz/72=1MHz)? ? TIM_TimeBaseStructure.TIM_ClockDivision?=?TIM_CKD_DIV1;? ? TIM_TimeBaseStructure.TIM_CounterMode?= TIM_CounterMode_Up;? ??TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);? ? TIM_OCInitStructure.TIM_OCMode?= TIM_OCMode_PWM1;? ? TIM_OCInitStructure.TIM_OutputState?= TIM_OutputState_Enable;? ? TIM_OCInitStructure.TIM_OCPolarity?= TIM_OCPolarity_High;// CH1 -> PA5 -> ENB? ??TIM_OC1Init(TIM2, &TIM_OCInitStructure);? ??TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable);// CH3 -> PA2 -> ENA? ??TIM_OC3Init(TIM2, &TIM_OCInitStructure);? ??TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable);? ??TIM_Cmd(TIM2,?ENABLE);}


?


四、電機控制函數

 
// 電機A方向控制void?MotorA_Dir(uint8_t?dir){if?(dir)? ? {? ? ? ??GPIO_SetBits(GPIOA, GPIO_Pin_0);? ? ? ??GPIO_ResetBits(GPIOA, GPIO_Pin_1);? ? }else? ? {? ? ? ??GPIO_ResetBits(GPIOA, GPIO_Pin_0);? ? ? ??GPIO_SetBits(GPIOA, GPIO_Pin_1);? ? }}// 電機B方向控制void?MotorB_Dir(uint8_t?dir){if?(dir)? ? {? ? ? ??GPIO_SetBits(GPIOA, GPIO_Pin_3);? ? ? ??GPIO_ResetBits(GPIOA, GPIO_Pin_4);? ? }else? ? {? ? ? ??GPIO_ResetBits(GPIOA, GPIO_Pin_3);? ? ? ??GPIO_SetBits(GPIOA, GPIO_Pin_4);? ? }}// 電機A設置速度(0~1000)void?MotorA_SetSpeed(uint16_t?speed){? ??TIM_SetCompare3(TIM2, speed);?// TIM2_CH3 -> ENA}// 電機B設置速度(0~1000)void?MotorB_SetSpeed(uint16_t?speed){? ??TIM_SetCompare1(TIM2, speed);?// TIM2_CH1 -> ENB}


?


五、主函數調用示例

 
int?main(void){? ??L298N_GPIO_Init();? ??PWM_Init();? ??while?(1)? ? {? ? ? ??// 電機A正轉,速度800? ? ? ??MotorA_Dir(1);? ? ? ??MotorA_SetSpeed(800);? ? ? ??// 電機B反轉,速度500? ? ? ??MotorB_Dir(0);? ? ? ??MotorB_SetSpeed(500);? ? ? ??Delay_ms(2000);? ? ? ??// 停止? ? ? ??MotorA_SetSpeed(0);? ? ? ??MotorB_SetSpeed(0);? ? ? ??Delay_ms(1000);? ? }}


?

五、總結

L298N 電機驅動模塊是嵌入式開發中最經典的驅動方案之一,尤其適用于智能小車、遙控車、迷你機械臂等項目。雖然存在一定局限,但其穩定性、易用性和教學價值依舊使它成為初學者和高校課程中的首選模塊。

如果你正在使用 STM32、Arduino、51 單片機等平臺進行小車開發,掌握 L298N 模塊的使用,將為你打下堅實的控制基礎。

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

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

相關文章

python項目如何創建docker環境

這里寫自定義目錄標題 python項目創建docker環境docker配置國內鏡像源構建一個Docker 鏡像驗證鏡像合理的創建標題,有助于目錄的生成如何改變文本的樣式插入鏈接與圖片如何插入一段漂亮的代碼片生成一個適合你的列表創建一個表格設定內容居中、居左、居右SmartyPant…

MySQL-多表關系、多表查詢

一. 一對多(多對一) 1. 例如;一個部門下有多個員工 在數據庫表中多的一方(員工表)、添加字段,來關聯一的一方(部門表)的主鍵 二. 外鍵約束 1.如將部門表的部門直接刪除,然而員工表還存在其部門下的員工,出現了數據的不一致問題&am…

【 HarmonyOS 5 入門系列 】鴻蒙HarmonyOS示例項目講解

【 HarmonyOS 5 入門系列 】鴻蒙HarmonyOS示例項目講解 一、前言:移動開發聲明式 UI 框架的技術變革 在移動操作系統的發展歷程中,UI 開發模式經歷了從命令式到聲明式的重大變革。 根據華為開發者聯盟 2024 年數據報告顯示,HarmonyOS 設備…

【SSM】SpringMVC學習筆記7:前后端數據傳輸協議和異常處理

這篇學習筆記是Spring系列筆記的第7篇,該筆記是筆者在學習黑馬程序員SSM框架教程課程期間的筆記,供自己和他人參考。 Spring學習筆記目錄 筆記1:【SSM】Spring基礎: IoC配置學習筆記-CSDN博客 對應黑馬課程P1~P20的內容。 筆記2…

借助 Spring AI 和 LM Studio 為業務系統引入本地 AI 能力

Spring AI 1.0.0-SNAPSHOTLM Studio 0.3.16qwen3-4b 參考 Unable to use spring ai with LMStudio using spring-ai openai module Issue #2441 spring-projects/spring-ai GitHub LM Studio 下載安裝 LM Studio下載 qwen3-4b 模型。對于 qwen3 系列模型,測試…

C++學習-入門到精通【13】標準庫的容器和迭代器

C學習-入門到精通【13】標準庫的容器和迭代器 目錄 C學習-入門到精通【13】標準庫的容器和迭代器一、標準模板庫簡介1.容器簡介2.STL容器總覽3.近容器4.STL容器的通用函數5.首類容器的通用typedef6.對容器元素的要求 二、迭代器簡介1.使用istream_iterator輸入,使用…

Vue Router的核心實現原理深度解析

1. Vue Router的基本架構 Vue Router的核心功能是實現前端路由,即在不重新加載頁面的情況下更改應用的視圖。它的基本架構包括: 路由配置:定義路徑與組件的映射關系路由實例:管理路由狀態和提供導航方法路由視圖:渲染…

設計模式——狀態設計模式(行為型)

摘要 狀態設計模式是一種行為型設計模式,核心在于允許對象在內部狀態改變時改變行為。它通過狀態對象封裝不同行為,使狀態切換靈活清晰。該模式包含環境類、抽象狀態類和具體狀態類等角色,具有避免大量分支判斷、符合單一職責和開閉原則等特…

C++ 觀察者模式:設計與實現詳解

一、引言 在現代軟件開發中,組件間的交互與通信是系統設計的核心挑戰之一。觀察者模式(Observer Pattern)作為一種行為設計模式,提供了一種優雅的解決方案,用于實現對象間的一對多依賴關系。本文將深入探討 C++ 中觀察者模式的設計理念、實現方式及其應用場景。 二、觀察…

Windows 賬號管理與安全指南

Windows 賬號管理與安全指南 概述 Windows 賬號管理是系統安全的基礎,了解如何正確創建、管理和保護用戶賬戶對于系統管理員和安全專業人員至關重要。本文詳細介紹 Windows 系統中的賬戶管理命令、隱藏賬戶創建方法以及安全防護措施。 基礎賬戶管理命令 net use…

[藍橋杯]擺動序列

擺動序列 題目描述 如果一個序列的奇數項都比前一項大&#xff0c;偶數項都比前一項小&#xff0c;則稱為一個擺動序列。即 a2i<a2i?1,a2i1 >a2ia2i?<a2i?1?,a2i1? >a2i?。 小明想知道&#xff0c;長度為 mm&#xff0c;每個數都是 1 到 nn 之間的正整數的…

Python 網絡編程 -- WebSocket編程

作者主要是為了用python構建實時網絡通信程序。 概念性的東西越簡單越好理解,因此,下面我從晚上摘抄的概念 我的理解。 什么是網絡通信? 更確切地說&#xff0c;網絡通信是兩臺計算機上的兩個進程之間的通信。比如&#xff0c;瀏覽器進程和新浪服務器上的某個Web服務進程在通…

GM DC Monitor如何實現TCP端口狀態監控-操作分享

本節講解如何通過現有指標提取監控腳本制作自定義的TCP端口監控指標 一、功能介紹 通過提取已有的監控指標的監控命令&#xff0c;來自定義TCP端口的監控指標。 二、配置端口監控 1&#xff09;定位監控腳本 確定腳本及參數如下&#xff1a; check_protocol_tcp.pl --plug…

LabVIEW與Modbus/TCP溫濕度監控系統

基于LabVIEW 開發平臺與 Modbus/TCP 通信協議&#xff0c;設計一套適用于實驗室環境的溫濕度數據采集監控系統。通過上位機與高精度溫濕度采集設備的遠程通信&#xff0c;實現多設備溫濕度數據的實時采集、存儲、分析及報警功能&#xff0c;解決傳統人工采集效率低、環境適應性…

Ntfs!ReadIndexBuffer函數分析之nt!CcGetVirtualAddress函數之nt!CcGetVacbMiss

第一部分&#xff1a; NtfsMapStream( IrpContext, Scb, LlBytesFromIndexBlocks( IndexBlock, Scb->ScbType.Index.IndexBlockByteShift ), Scb->ScbType.Index.BytesPerIndexBuffer, &am…

vite+vue3項目中,單個組件中使用 @use報錯

報錯信息&#xff1a; [plugin:vite:css] [sass] use rules must be written before any other rules.use 官方說明 注意事項&#xff1a; https://sass-lang.com/documentation/at-rules/use/ 樣式表中的 use 規則必須位于所有其他規則&#xff08;除 forward 外&#xff0…

基于VMD-LSTM融合方法的F10.7指數預報

F10.7 Daily Forecast Using LSTM Combined With VMD Method ??F10.7?? solar radiation flux is a well-known parameter that is closely linked to ??solar activity??, serving as a key index for measuring the level of solar activity. In this study, the ??…

React 新項目

使用git bash 創建一個新項目 建議一開始就創建TS項目 原因在Webpack中改配置麻煩 編譯方法:ts compiler 另一種 bable 最好都配置 $ create-react-app cloundmusic --template typescript 早期react項目 yarn 居多 目前npm包管理居多 目前pnpm不通用 icon 在public文件夾中…

2025年- H65-Lc173--347.前k個高頻元素(小根堆,堆頂元素是當前堆元素里面最小的)--Java版

1.題目描述 2.思路 &#xff08;1&#xff09;這里定義了一個小根堆&#xff08;最小堆&#xff09;&#xff0c;根據元素的頻率從小到大排序。小根堆原理&#xff1a;堆頂是最小值&#xff0c;每次插入或刪除操作會保持堆的有序結構&#xff08;常用二叉堆實現&#xff09;。 …

VR/AR 顯示瓶頸將破!鐵電液晶技術迎來關鍵突破

在 VR/AR 設備逐漸走進大眾生活的今天&#xff0c;顯示效果卻始終是制約其發展的一大痛點。紗窗效應、畫面拖影、眩暈感…… 傳統液晶技術的瓶頸讓用戶體驗大打折扣。不過&#xff0c;隨著鐵電液晶技術的重大突破&#xff0c;這一局面有望得到徹底改變。 一、傳統液晶技術瓶頸…