当前位置: 首页 > news >正文

32HAL——舵机DRV8833驱动电机

一、舵机(SG90)

50hz 

角度:0 - 180°

占空比:2.5% - 12.5%

cubemx配置

72000000 / 720 / 2000 = 50;

示例程序:实现旋转编码器控制舵机

改变COUNT_MAX值 可而改变控制精度 当COUNT_MAX = 20时,编码器计数值加1,duty+10;

当COUNT_MAX = 200时,编码器计数值加1,duty+1;duty范围是50-250;

/* USER CODE BEGIN Header */
/********************************************************************************* @file           : main.c* @brief          : Main program body******************************************************************************* @attention** Copyright (c) 2025 STMicroelectronics.* All rights reserved.** This software is licensed under terms that can be found in the LICENSE file* in the root directory of this software component.* If no LICENSE file comes with this software, it is provided AS-IS.********************************************************************************/
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"#include <stdio.h>#include "i2c.h"
#include "tim.h"
#include "gpio.h"
#include "oled.h"/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes *//* USER CODE END Includes *//* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD *//* USER CODE END PTD *//* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
#define COUNT_MAX 20
/* USER CODE END PD *//* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM *//* USER CODE END PM *//* Private variables ---------------------------------------------------------*//* USER CODE BEGIN PV *//* USER CODE END PV *//* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP *//* USER CODE END PFP *//* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 *//* USER CODE END 0 *//*** @brief  The application entry point.* @retval int*/
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_TIM1_Init();MX_TIM4_Init();MX_I2C2_Init();/* USER CODE BEGIN 2 */HAL_Delay(20);OLED_Init();HAL_TIM_Encoder_Start(&htim1, TIM_CHANNEL_ALL);HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3);int counter = 0;float duty = 0;char message[50];/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){OLED_NewFrame();counter = __HAL_TIM_GET_COUNTER(&htim1);if (counter > 60000) {counter = 0;__HAL_TIM_SET_COUNTER(&htim1, 0);}else if (counter > COUNT_MAX) {counter = COUNT_MAX;__HAL_TIM_SET_COUNTER(&htim1, COUNT_MAX);}duty = (10 * counter / (float)COUNT_MAX + 2.5) / 100.0 * 2000;__HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_3, duty);sprintf(message, "duty: %.2f", duty);OLED_PrintASCIIString(0, 0, message, &afont8x6, OLED_COLOR_NORMAL);OLED_ShowFrame();/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}

二、电机

cubemx配置

示例程序:实现旋转编码器控制电机正反转以及速度调节

/* USER CODE BEGIN Header */
/********************************************************************************* @file           : main.c* @brief          : Main program body******************************************************************************* @attention** Copyright (c) 2025 STMicroelectronics.* All rights reserved.** This software is licensed under terms that can be found in the LICENSE file* in the root directory of this software component.* If no LICENSE file comes with this software, it is provided AS-IS.********************************************************************************/
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"#include <stdio.h>#include "drv8833.h"
#include "i2c.h"
#include "tim.h"
#include "gpio.h"
#include "oled.h"/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes *//* USER CODE END Includes *//* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD *//* USER CODE END PTD *//* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
#define COUNT_MID 20    //因为编码器转一圈是40计数值 所以取中值20
/* USER CODE END PD *//* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM *//* USER CODE END PM *//* Private variables ---------------------------------------------------------*//* USER CODE BEGIN PV *//* USER CODE END PV *//* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP *//* USER CODE END PFP *//* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 *//* USER CODE END 0 *//*** @brief  The application entry point.* @retval int*/
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_I2C2_Init();MX_TIM1_Init();MX_TIM2_Init();/* USER CODE BEGIN 2 */HAL_Delay(20);OLED_Init();DRV8833_Init();HAL_TIM_Encoder_Start(&htim1, TIM_CHANNEL_ALL);__HAL_TIM_SET_COUNTER(&htim1, COUNT_MID);int counter = 0;int speed = 0;char message[50];/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){OLED_NewFrame();counter = __HAL_TIM_GET_COUNTER(&htim1);if (counter > 60000) {counter = 0;__HAL_TIM_SET_COUNTER(&htim1, 0);}else if (counter > COUNT_MID * 2) {counter = COUNT_MID * 2;__HAL_TIM_SET_COUNTER(&htim1, COUNT_MID * 2);}//反转 离20越远速度越快if (counter < COUNT_MID) {speed = (COUNT_MID - counter) * 100 / COUNT_MID;DRV8833_Backward(speed);}else if (counter > COUNT_MID) {speed = (counter - COUNT_MID) * 100 / COUNT_MID;DRV8833_Forward(speed);}sprintf(message, "speed: %d", speed);OLED_PrintASCIIString(0, 0, message, &afont8x6, OLED_COLOR_NORMAL);OLED_ShowFrame();/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}

注:上述PPT均来自keysking up

http://www.dtcms.com/a/562584.html

相关文章:

  • 上海国际建设总承包公司网站如何在虚拟空间上做多个网站
  • 东莞工程网站建设南通网站建设公司哪个好
  • 企业网站服务费怎么做记账凭证纯文本网站建设
  • 个人做网站还是公众号赚钱好网络工程就业方向
  • 官方网站制作邓州微网站建设
  • 申请域名后可以做自己的网站吗wordpress 手机电脑
  • seo网站排名优化快速排网站群建设需求
  • 免费申请自己的网站郴州市建设局网站
  • .耐思尼克官方网站北京市网页设计
  • 长沙网站建设市场低价网站开发.net
  • 孤能子视角:EIS六线分析之“苏格拉底对话孔子及AI“
  • 【计算机软件资格考试】软考综合知识题高频考题及答案解析2
  • 免费做淘宝客网站攸县网站开发
  • 清润邯郸网站wordpress文章禁止搜索
  • 哈尔滨怎样快速建站oa手机端app下载
  • 网站备案用户名忘了怎么办网站优化可以做哪些优化
  • 品牌推广公司网站关键词优化软件效果
  • 蓬莱市住房和规划建设管理局网站网站代码seo优化
  • 中信建设有限责任公司官方网站成都成华网站建设
  • 郑州网站建设公司咨询做ppt的软件怎么下载网站
  • 有哪些做兼职的设计网站有哪些工作内容怎样做信息收费网站
  • 昆山网站建设哪里好哪个免费的网页制作软件最好
  • 网站外链优化方法成都网站建设案例单招网
  • 使用Python进行量化交易入门
  • 祈网网站建设wordpress 手机编辑器
  • ReSpec:突破RL训练瓶颈的推测解码优化系统
  • 微信网站制作北京上海app开发定制公司
  • wordpress 动漫网站app开发公司成都
  • 定制一个网站多少钱网上做网站任务
  • 临沂网站哪家好企业手机网站建设策划方案