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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【嵌入式设计开发】基于STM32 HD01双H桥高功率C车模车驱动板 程序设计

發(fā)布時間:2024/1/18 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【嵌入式设计开发】基于STM32 HD01双H桥高功率C车模车驱动板 程序设计 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

HD01高功率驅(qū)動高速小車

  • HD01雙H橋高功率賽車驅(qū)動板
    • 驅(qū)動參數(shù)
    • 引腳分配
    • 引腳性能
  • STM32驅(qū)動代碼
    • 初始化代碼
    • 電機(jī)控制代碼
    • 控制頻率參數(shù)

HD01雙H橋高功率賽車驅(qū)動板

HD01高功率驅(qū)動高速小車

  • 高功率驅(qū)動板主要提供車的速度

  • 雖然方向上有些偏差,但后續(xù)可以通過 硬件加編碼器 軟件PID算法解決小車差速問題

驅(qū)動參數(shù)

先看看我們驅(qū)動的參數(shù)

一般情況下驅(qū)動電流決定了小車的速度
驅(qū)動17A 完全碾壓L298N
這里推薦新手如果不是缺錢的話 最好買一個好點(diǎn)車模 和驅(qū)動

引腳分配

然后我們看他的操作引腳

引腳性能

  • VM GND M+ M- 這個沒什么好說的

  • DIR控制方向

  • SLP控制開關(guān)

  • PWM控制速度

  • 而FLP CS 作為檢測

  • 可以用讀取IO口作為FLP的狀態(tài)讀取 就和按鍵差不多

  • 用ADC采集樣本

  • 首先我們分配引腳

STM32驅(qū)動代碼

  • 然后我們根據(jù)我們要寫的功能寫一個基本控制的初始化

初始化代碼

#include "motor_control.h" #include "led.h"uint16_t PrescalerValue = 0; //20msvoid Montor_Init(void) {TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_OCInitTypeDef TIM_OCInitStructure;GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);/* GPIOA and GPIOB clock enable */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure); if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)==0)LED_warning(); //ELT ?áè?1ê?? PB5GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB ,&GPIO_InitStructure); GPIO_ResetBits(GPIOB,GPIO_Pin_7); //PB7 CS μ??12a?ùGPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_SetBits(GPIOB,GPIO_Pin_3); //PB3 SLP ??μ???′ò?a GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_SetBits(GPIOC,GPIO_Pin_10); //PC10 DIR ??μ???′ó?yμ??oêy /* System Clocks Configuration *//* TIM3 clock enable */RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);/* GPIOA and GPIOB clock enable */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);/* GPIOA and GPIOB clock enable */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);/* GPIO Configuration *//*GPIOB Configuration: TIM3 channel1, 2, 3 and 4 */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure); }

電機(jī)控制代碼

然后再編寫一下PWM模塊 PWM有兩組 一組是舵機(jī)控制
采用的20ms 周期
一種是電機(jī)控制 他們推薦我們使用的20KHZ

控制頻率參數(shù)


代碼如下

#include "mypwm.h" uint16_t DUOJI =62;//0-125 uint16_t TIAOSU =62; void TIM3_PWM_Init(void) {uint16_t PrescalerValue = 0;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_OCInitTypeDef TIM_OCInitStructure;GPIO_InitTypeDef GPIO_InitStructure; /* System Clocks Configuration *//* TIM3 clock enable */RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);/* GPIOA and GPIOB clock enable */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);/* GPIO Configuration *//*GPIOB Configuration: TIM3 channel1, 2, 3 and 4 */ \GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);/* -----------------------------------------------------------------------TIM3 Configuration: generate 4 PWM signals with 4 different duty cycles:The TIM3CLK frequency is set to SystemCoreClock (Hz), to get TIM3 counterclock at 24 MHz the Prescaler is computed as following:- Prescaler = (TIM3CLK / TIM3 counter clock) - 1SystemCoreClock is set to 72 MHz for Low-density, Medium-density, High-densityand Connectivity line devices and to 24 MHz for Low-Density Value line andMedium-Density Value line devicesThe TIM3 is running at 36 KHz: TIM3 Frequency = TIM3 counter clock/(ARR + 1)= 24 MHz / 666 = 36 KHzTIM3 Channel1 duty cycle = (TIM3_CCR1/ TIM3_ARR)* 100 = 50%TIM3 Channel2 duty cycle = (TIM3_CCR2/ TIM3_ARR)* 100 = 37.5%TIM3 Channel3 duty cycle = (TIM3_CCR3/ TIM3_ARR)* 100 = 25%TIM3 Channel4 duty cycle = (TIM3_CCR4/ TIM3_ARR)* 100 = 12.5%----------------------------------------------------------------------- *//* Compute the prescaler value */PrescalerValue = (uint16_t) (SystemCoreClock / 24000000) - 1;/* Time base configuration */TIM_TimeBaseStructure.TIM_Period = 125;TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue;TIM_TimeBaseStructure.TIM_ClockDivision = 0;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);/* PWM1 Mode configuration: Channel1 */TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;TIM_OCInitStructure.TIM_Pulse = TIAOSU;TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;TIM_OC2Init(TIM3, &TIM_OCInitStructure);TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);TIM_ARRPreloadConfig(TIM3, ENABLE);/* TIM3 enable counter */TIM_Cmd(TIM3, ENABLE);} void TIM2_PWM_Init(void) {uint16_t PrescalerValue = 0;uint16_t CCR1_Val = 400;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_OCInitTypeDef TIM_OCInitStructure;GPIO_InitTypeDef GPIO_InitStructure; /* System Clocks Configuration *//* TIM3 clock enable */RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);/* GPIOA and GPIOB clock enable */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);/* GPIO Configuration *//*GPIOB Configuration: TIM3 channel1, 2, 3 and 4 */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);/* -----------------------------------------------------------------------TIM3 Configuration: generate 4 PWM signals with 4 different duty cycles:The TIM3CLK frequency is set to SystemCoreClock (Hz), to get TIM3 counterclock at 24 MHz the Prescaler is computed as following:- Prescaler = (TIM3CLK / TIM3 counter clock) - 1SystemCoreClock is set to 72 MHz for Low-density, Medium-density, High-densityand Connectivity line devices and to 24 MHz for Low-Density Value line andMedium-Density Value line devicesThe TIM3 is running at 36 KHz: TIM3 Frequency = TIM3 counter clock/(ARR + 1)= 24 MHz / 666 = 36 KHzTIM3 Channel1 duty cycle = (TIM3_CCR1/ TIM3_ARR)* 100 = 50%TIM3 Channel2 duty cycle = (TIM3_CCR2/ TIM3_ARR)* 100 = 37.5%TIM3 Channel3 duty cycle = (TIM3_CCR3/ TIM3_ARR)* 100 = 25%TIM3 Channel4 duty cycle = (TIM3_CCR4/ TIM3_ARR)* 100 = 12.5%----------------------------------------------------------------------- *//* Compute the prescaler value */PrescalerValue = (uint16_t) (SystemCoreClock / 24000000) - 1;/* Time base configuration */TIM_TimeBaseStructure.TIM_Period = 125;TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue;TIM_TimeBaseStructure.TIM_ClockDivision = 0;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);/* PWM1 Mode configuration: Channel1 */TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;TIM_OCInitStructure.TIM_Pulse = DUOJI ;TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;TIM_OC2Init(TIM2, &TIM_OCInitStructure);TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable);TIM_ARRPreloadConfig(TIM2, ENABLE);/* TIM3 enable counter */TIM_Cmd(TIM2, ENABLE);}

總結(jié)

以上是生活随笔為你收集整理的【嵌入式设计开发】基于STM32 HD01双H桥高功率C车模车驱动板 程序设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 中文字幕无码人妻少妇免费 | 亚洲国产精品成人综合色在线婷婷 | 欧美成人h版在线观看 | 国产成人精品一区二区三区四区 | 四虎av影视 | 欧美高清免费 | 黄片毛片在线观看 | 美女张开腿露出尿口 | 日本妇女毛茸茸 | 黄色网址www | 可以看的毛片 | 中文字幕第八页 | 欧美视频亚洲 | 久久99精品久久久久久三级 | 久久av免费 | 亚洲av日韩av永久无码下载 | 国产一区二区三区免费观看视频 | 尤物精品视频在线观看 | 96超碰在线 | 高清一区在线观看 | 永久免费精品视频 | 久久五月天综合 | 中文字幕精品在线视频 | 日日夜夜操av | 免费毛片网站在线观看 | 黄页网址大全免费观看 | 67194国产 | 免费中文字幕在线观看 | 中文字幕人成乱码熟女香港 | 黄色片网站大全 | caopor在线视频 | 日本免费黄视频 | 黄色视屏免费 | 一级特黄aa大片欧美 | 欧美精品1| 欧美色图另类 | 国产又黄又猛又粗又爽 | 毛片专区| 亚洲巨乳在线 | 日韩一级视频 | 超碰在线中文字幕 | 1024在线视频 | 欧美日韩国产精品一区 | 日韩免费 | 天堂视频免费 | 国产精品自拍偷拍视频 | 国产福利91精品 | 在线色导航 | 免费在线观看网址 | 亚洲视频区 | 涩久久 | www.亚洲高清 | 视频这里只有精品 | 欧美自拍偷拍一区二区 | 精品一区久久 | 性xxxxx大片免费视频 | 国产剧情在线观看 | 在线国产三级 | 西西人体高清44rt·net | 国内9l自拍| 亚洲热av| 午夜性色| 免费在线视频观看 | 欧美日韩免费一区 | 狠狠干伊人 | 国产91在线免费观看 | 国产三级全黄 | 小小姑娘电影大全免费播放 | 中文字幕在线不卡视频 | 啪网址 | 欧美一级片黄色 | 魔性诱惑 | 97香蕉久久夜色精品国产 | 日韩av一区二区三区在线 | 欧美成人视 | 国产中文字幕亚洲 | 国产亚洲精| 先锋影音av资源网站 | 在线日韩亚洲 | 明星毛片 | 在线a视频 | 国产二级一片内射视频播放 | 男人的亚洲天堂 | 欧美做爰爽爽爽爽爽爽 | 国产裸体美女永久免费无遮挡 | 欧美日韩一区二区不卡 | 久久成人a毛片免费观看网站 | 欧美专区一区 | 性猛交富婆╳xxx乱大交麻豆 | av免费观看网 | 性欧美精品 | 久久久精品人妻一区二区三区 | 综合网中文字幕 | 日日干夜夜拍 | 亚洲高潮 | 国产亚洲区 | 人妻 日韩 欧美 综合 制服 | 精品国产96亚洲一区二区三区 | 久久久999成人 |