【平衡小车制作】01-----让电机转起来
主控Stm32f103C8T6
电机驱动DRV8833
电机:就是普通平衡小车编码电机
一. DRV8833的使用
DRV8833具有双通道,AIN,BIN各作为两个电机的控制输入端。
H—逻辑桥驱动:
Xin1 | Xin2 | Xo1 | Xo2 | 功能 |
---|---|---|---|---|
0 | 0 | Z | Z | 慢速运行\快速衰减 |
0 | 1 | L | H | 反转 |
1 | 0 | H | L | 正转 |
1 | 1 | L | L | 制动/慢速衰减 |
PWM控制电机速度:
Xin1 | Xin2 | 功能 |
---|---|---|
PWM | 0 | 正转PWM,快速衰减 |
1 | PWM | 正转PWM,慢速衰减 |
0 | PWM | 反转PWM,快速衰减 |
PWM | 1 | 反转PWM,慢速衰减 |
要注意的是,一般电机的调速频率为:5-20MHz,而且在控制电机的时候我们一般用两路PWM输出,
二. 程序编写
目的:实现电机的正转,根据上面电机驱动图:AIN1输出PWM,AIN2输出0,使电机进行正转,快速衰减。
- 打开时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3|RCC_APB1Periph_TIM2, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);
- 配置GPIO
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);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; GPIO_Init(GPIOA, &GPIO_InitStructure);
- 配置定时器
TIM_TimeBaseStructure.TIM_Period = arr; TIM_TimeBaseStructure.TIM_Prescaler =psc; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
- 配置定时器通道输出PWM
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 0; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC2Init(TIM3, &TIM_OCInitStructure); TIM_OC4Init(TIM2, &TIM_OCInitStructure);
- 输出使能
TIM_CtrlPWMOutputs(TIM3,ENABLE); TIM_CtrlPWMOutputs(TIM2,ENABLE); TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Enable); TIM_ARRPreloadConfig(TIM3, ENABLE); TIM_ARRPreloadConfig(TIM2, ENABLE); TIM_Cmd(TIM3, ENABLE); TIM_Cmd(TIM2, ENABLE);
- 主程序中初始化定时器,配置PWM输出
TIM1_PWM_Init(8999,0);TIM_SetCompare4(TIM2,0); TIM_SetCompare2(TIM3,5999); //AIN1
以上配置PWM输出波形如下:
将程序烧录到板子上,就可以看到连接的电机轮子开始转动了。
【平衡小车制作】01-----让电机转起来相关推荐
- 【平衡小车制作】(七)串级PID调参及平衡成果展示(超详解)
大家好,我是小政.本篇文章我将针对PID调参进行详细的讲解,让每位小伙伴能够对比例.积分.微分三个参数如何调节有更加清晰的理解. 一.调参步骤 确立机械中值 直立环(内环)--Kp极性.Kp大小. ...
- TT马达平衡小车制作
TT马达平衡小车制作 假期无聊本来买个淘宝的寻迹小车套件,做了个寻迹小车和遥控功能.后来看到了平衡小车就想搞一个. 去搜了方案基本都是平衡小车之家的编码器电机和车模,一搜好几百,学生党不太买得起. 还 ...
- 【平衡小车制作】(一)硬件原理图讲解(超详解)
大家好,我是小政.之后的一系列文章我将介绍我玩平衡小车的过程以及遇到的一些问题,将这些内容记录下来分享给大家,也让大家少走一些弯路.接下来我将从硬件框架选择.软件编程.PID算法.PID调参.蓝牙 ...
- 平衡小车制作系列之八——总结
文章目录 一. 前言 二. 说在最前面 2.1 模块总结 2.2 时间分配(2 Weeks In All) 2.3 一些问题 三. 收获与总结 四. 碎碎念 一. 前言 本博客原题目叫做"我 ...
- 平衡小车制作系列之二——模块原理解析
文章目录 一. 模块概述 二. 直流电机 2.1 直流电机介绍 2.2 直流电机外围设备介绍 2.2.1 减速器 2.2.2 控制PWM的单片机 2.2.3 编码器 三. 编码器 3.1 编码器介绍 ...
- (六)【平衡小车制作】位置式PID、直立环与速度环编程
本篇文章我将针对位置式PID算法.直立环.速度环等的编程进行详细的讲解,让每位小伙伴能够对这三个概念的编程逻辑有更加清晰的理解. 一.直立环(PD控制器) 1.中文公式 直立环输出=Kp1×角度偏差 ...
- 平衡小车制作系列之三——stm32软件调试
文章目录 前言 一. STM32F103RCT6最小系统板 1.1 STlink程序烧录 1.1.1 模式选择 1.2 烧录功能测试 1.2 点亮一个LED灯 1.3 测试OLED 1.4 测试PWM ...
- 简单平衡小车制作过程中遇到的问题
本人最近做了一个平衡小车,过程中遇到不少问题,在这里总结一下,可能也会帮助到大家 文章目录 前言 一.嫖资料,找教程 二.小车结构 三.电子元件的组装 四.写程序时(改嫖到的程序)遇到的问题 总结 前 ...
- Arduino ESP32自平衡小车制作实现(不需编码器)
1_mpu6050陀螺仪角度方向和静态平衡角度测试 /*说明:1[陀螺仪补偿值的计算]试时提前用calcGyroOffsets(true)函数计算出,补偿值.知道mpu6050的补偿值后用setGyr ...
最新文章
- SAP MM MIGO + 301 K 可以对供应商寄售库存跨工厂转库
- Vue常用指令v-show
- 有一种道理叫“实践”
- TMG学习(四),允许内部网络解析本地主机的Netbiso名称
- 前端学习(3179):ant-design介绍2
- STM32使用定时器延时
- 一次频繁Full GC问题排查过程分享
- Javascript第四章函数function也是数据类型第六课
- python之web编程
- JS定义const常量对象
- MTF、Resolution、Contrast解读
- 一起学爬虫(Python) — 19 年轻人,进来学自动化
- dataframe保存为txt_如何快速将TXT转换为SRT文件
- 联想服务器怎么装系统和配置,联想服务器的配置及操作系统的安装.pdf
- 京东商城--商城研发部面试
- JavaScript slice( )、splice( )、split( )
- 网络应用之JavaScript
- 根据经纬度,获取方圆10公里内的数据
- 关于选择IT行业的培训机构
- steam怎么看在哪些计算机上登录过,怎么查看在我电脑上登陆过的STEAM账号
热门文章
- 如何安装低版本的 iTunes 在 macOS Mojave
- 又发现了一个Jupyter Notebook的黑科技,Visual Python支持无代码开发
- 并不对劲的[Noi2008]道路设计
- markdown特殊符号或语法归纳
- Charles抓包工具之手机抓包设置
- 华为云CDN联手OBS桶,帮助企业更好降本增效
- Linux 锐捷 用户不允许,mentohust“不允许使用的客户端类型”的解决方法
- 2020危险化学品经营单位主要负责人考试及危险化学品经营单位主要负责人考试题
- MemCache和一致性Hash算法讲解
- memcache 启动