日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【STM32】STM32F103C8T6+L298N通过PWM控制直流电机转速

發(fā)布時間:2023/12/9 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【STM32】STM32F103C8T6+L298N通过PWM控制直流电机转速 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

系列文章目錄?

·【STM32】新建工程模板及配置

·【STM32】STM32與PC端、HC-06、ROS進行USART串口通信

·【ROS】ROS上位機使用Serial庫和boost::asio庫與STM32進行USART通訊

·【STM32】STM32F103C8T6+L298N通過PWM控制直流電機轉(zhuǎn)速

·【STM32】STM32F103C8T6使用外部中斷法和輸入捕獲法進行編碼器測速

·【STM32】STM32F103C8T6實現(xiàn)直流電機速度PID控制


目錄

系列文章目錄

前言

一、PWM調(diào)速原理

二、STM32編程實現(xiàn)

總結(jié)


前言

原來做的差速小車是基于Arduino控制的,感覺有些簡單,也有些基礎,Arduino方便簡單的同時,可操作性感覺也少了很多,所以想將控制器換成STM32,然后將樹莓派作為上位機,STM32作為下位機,通過樹莓派和STM32進行通訊,實現(xiàn)對差速移動小車的控制,本人也是寒假期間初學STM32,也是奔著應用去的,所以對于STM32編程原理方面可能不太精通,這里偏重于記錄應用層面的知識。


一、PWM調(diào)速原理

直流電機驅(qū)動是最簡單的,給電機通上電就能轉(zhuǎn),根據(jù)電機的公式:

可知:當提高電壓時,反電勢升高,進而轉(zhuǎn)速升高,電壓與轉(zhuǎn)速大致有如圖所示的關系

所以我們只要控制給電機通電的電壓即可控制電機的轉(zhuǎn)速,但是在實際的控制中,控制直流電機需要通過H橋控制電機的正反轉(zhuǎn),如圖,當T1和T4二極管導通時,有粉色通路;當T2和T3二極管導通時,有藍色通路,這樣我們就可以實現(xiàn)弱電控制強電,通過二極管的通斷來控制電機的轉(zhuǎn)向。

但是這樣電機通電時電壓就是Us,我們?nèi)绻胱杂傻目刂芔s的電壓值基本是不能實現(xiàn)的,因為電機是接到單片機的引腳上的,引腳的供電電壓值是確定的,我們就要使用控制二極管的通斷時間對電機的轉(zhuǎn)速進行控制,即PWM控制。

圖中的D1~D4二極管為續(xù)流的作用,因為電機中有繞組,在斷電后,電感的電流不能瞬時變?yōu)?,所以在斷電后電流沿棕色和綠色的通路放點。

? ? ? ?

?在一個周期內(nèi),我們通過控制通電的時間就可以調(diào)控平均電壓,而平均電壓的高低直接控制電機的轉(zhuǎn)速,通電時間/周期,就可以得到占空比,我們也就是通過控制電機的占空比來控制電機的轉(zhuǎn)速的。

?在實際應用過程中,我們不用自己搭建H橋,而是使用電機驅(qū)動板(如:L298N)對直流電機進行驅(qū)動,L298N內(nèi)搭載兩個H橋電路,可以實現(xiàn)對兩個電機的轉(zhuǎn)向和轉(zhuǎn)速進行控制。

?這是淘寶商家提供的電機驅(qū)動板控制表,將IN1~4接到單片機的引腳,我們就可以通過引腳輸出PWM控制信號,對直流電機進行控制。

二、STM32編程實現(xiàn)

在STM32中如果想輸出PWM信號,需要借助定時器,通過定時器的捕獲/比較通道的PWM輸出

?當我們對定時器設置了預裝載值arr和比較值ccr后,可以通過配置PWM模式,使定時器CNT計數(shù)值超過ccr后產(chǎn)生有效信號,并通過配置相應寄存器設置有效信號是1還是0,而配置PWM的輸出方式,具體原理信息可以參考原子哥的視頻,也可以參考中文參考手冊的14.4.7內(nèi)容。

?在程序中,我們使用庫函數(shù)進行配置,配置步驟如下:

  • ?使能定時器和相關外設引腳時鐘 :RCC_APBxPeriphClockCmd()
  • 配置IO口為復用輸出模式(查手冊8.1.11)配置成相應的模式(復用推挽輸出)
  • 初始化定時器:TIM_TimeBaseInit()
  • 初始化TIM2 Channe1234 PWM模式:TIM_OCxInit()
  • 使能OCx通道的預裝載寄存器:TIM_OC1PreloadConfig()
  • 使能時鐘:TIM_Cmd()
  • 在主函數(shù)中配置占空比進行調(diào)速:TIM_SetCompare1()
  • #include "sys.h"/******************** 功能:通用時鐘2用來產(chǎn)生通道1234四路PWM信號 函數(shù):TIM2_PWM_Init(u16 arr,u16 psc) 作者:K.Fire 日期:2022.01.30 引腳:PA0 PA1 PA2 PA3 參數(shù):arr:自動重裝值 psc:時鐘預分頻數(shù) *****************/void TIM2_PWM_Init(u16 arr,u16 psc) { GPIO_InitTypeDef GPIO_InitStructure;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_OCInitTypeDef TIM_OCInitStructure;//使能GPIOA外設模塊時鐘 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //設置引腳為復用輸出功能,輸出TIM2 CH1的PWM脈沖波形 GPIOA.0GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //TIM2_CH1GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //復用推挽輸出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIO//設置引腳為復用輸出功能,輸出TIM2 CH2的PWM脈沖波形 GPIOA.1GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //TIM2_CH2GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIO//設置引腳為復用輸出功能,輸出TIM2 CH3的PWM脈沖波形 GPIOA.2GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //TIM2_CH3GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIO//設置引腳為復用輸出功能,輸出TIM2 CH4的PWM脈沖波形 GPIOA.3GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; //TIM2_CH4GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIO//使能定時器2時鐘RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //初始化TIM2TIM_TimeBaseStructure.TIM_Period = arr; //設置在下一個更新事件裝入活動的自動重裝載寄存器周期的值TIM_TimeBaseStructure.TIM_Prescaler =psc; //設置用來作為TIMx時鐘頻率除數(shù)的預分頻值 TIM_TimeBaseStructure.TIM_ClockDivision = 0; //設置時鐘分割:TDTS = Tck_timTIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上計數(shù)模式TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //根據(jù)TIM_TimeBaseInitStruct中指定的參數(shù)初始化TIMx的時間基數(shù)單位//初始化TIM2 Channe1234 PWM模式 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //選擇定時器模式:TIM脈沖寬度調(diào)制模式2TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比較輸出使能TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //輸出極性:TIM輸出比較極性高TIM_OC1Init(TIM2, &TIM_OCInitStructure); //根據(jù)T指定的參數(shù)初始化外設TIM2 OC1TIM_OC2Init(TIM2, &TIM_OCInitStructure); //根據(jù)T指定的參數(shù)初始化外設TIM2 OC2TIM_OC3Init(TIM2, &TIM_OCInitStructure); //根據(jù)T指定的參數(shù)初始化外設TIM2 OC3TIM_OC4Init(TIM2, &TIM_OCInitStructure); //根據(jù)T指定的參數(shù)初始化外設TIM2 OC4TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable); //使能TIM2在CCR1上的預裝載寄存器TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable); //使能TIM2在CCR2上的預裝載寄存器TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable); //使能TIM2在CCR3上的預裝載寄存器TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Enable); //使能TIM2在CCR4上的預裝載寄存器TIM_Cmd(TIM2, ENABLE); //使能TIM2}


    總結(jié)

    原理部分我講的不清晰,我也是看原子哥的視頻學的,大家可以通過傳送門去B站看原子哥的視頻,先更新PWM調(diào)速,因為這一部分我測試成功了,等我編碼器來了在對編碼器和藍牙進行測試。

    總結(jié)

    以上是生活随笔為你收集整理的【STM32】STM32F103C8T6+L298N通过PWM控制直流电机转速的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 伊人9999| 亚洲a一区二区 | 日在线视频 | 天天操中文字幕 | 这里只有精品在线观看 | 亚洲国产精品久久久久爰性色 | 亚洲黄色片网站 | 欧美黑粗大 | 日韩福利在线播放 | 少妇喷潮明星 | 国产97色在线 | 日韩 | 理论片在线观看视频 | 中文字幕在线观看国产 | 久久精品a亚洲国产v高清不卡 | 欧美亚洲一区 | 91av免费在线观看 | 亚洲精品一品 | 无码一区二区三区 | av免费网址| 亚洲国产精品久久久久 | 国产不卡在线视频 | 国产一区日本 | 在线高清观看免费观看 | 97在线超碰| 少妇人妻偷人精品无码视频新浪 | 欧美日韩一区二区三区国产精品成人 | 国产三级按摩推拿按摩 | 欧美性bbw | 午夜视频在线瓜伦 | 涩涩亚洲 | 亚洲精品一区二区在线观看 | 亚洲成人一级 | 播金莲一级淫片aaaaaaa | av55 | 免费高清av在线看 | 日本精品二区 | 精品一区二区三区视频日产 | 视频丨9l丨白浆 | www日日 | 天天草天天操 | 一本色道久久88加勒比—综合 | 久久影院中文字幕 | 成人动漫视频 | 亚洲天堂无吗 | 国产人与zoxxxx另类 | 91爱爱.com| 咪咪色在线视频 | 五月婷婷综合色 | 温柔女教师在线观看 | 精品久久99 | 性高跟鞋xxxxhd国产电影 | 99热这里只有精品4 精品国产黄色 | 一本久久久 | 我的邻居在线观看 | 日本一区二区免费在线 | 亚洲va久久久噜噜噜久久天堂 | 一本色道久久综合熟妇 | 国产一级精品视频 | 欧美日韩性生活 | 日韩三区在线观看 | 欧美精品一区三区 | 动漫av网站| 精品人妻一区二区免费视频 | 亚洲综合在线一区二区 | 国产ts系列 | 美女福利视频在线观看 | 大尺度在线观看 | 亚洲自拍小视频 | 亚洲网av | 免费看国产视频 | 亚洲av片在线观看 | 国产精品毛片久久 | se欧美| 成人在线午夜 | 亚洲干综合 | 影音先锋在线看片资源 | 亚洲第一成年人网站 | 午夜不卡久久精品无码免费 | www久久久久久 | 国产亚洲自拍一区 | 国产精一区 | 中文字幕+乱码+中文乱 | 永久免费汤不热视频 | 久久情趣视频 | 欧美黄色一级片视频 | 免费福利视频在线观看 | 污污的视频软件 | 国产成人精品一区二区在线观看 | 欧美激情免费视频 | 久久毛片基地 | 国产aa| 一区二区国产在线 | 清纯唯美亚洲综合 | 看黄色一级| www.插插| 99久久久无码国产精品免费蜜柚 | 人妻一区二区三区免费 | 免费一区二区三区视频在线 | 精品人妻av一区二区 | 不卡av免费 |