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

企业做网站需要哪些人员网站建设销售顾问开场白

企业做网站需要哪些人员,网站建设销售顾问开场白,专业手机移动网站设计,小程序建站哪家好硬件介绍 TB6612电机驱动模块功能与特性 电机方向控制 描述如何通过 TB6612 的 IN1 和 IN2 引脚控制电机的旋转方向。提供代码示例,展示如何通过 GPIO 控制电机的正反转。 速度控制与减速 解释如何通过调整 PWM 信号的占空比来控制电机的速度,并…

硬件介绍

  • TB6612电机驱动模块功能与特性

    电机方向控制

   描述如何通过 TB6612 的 IN1 和 IN2 引脚控制电机的旋转方向。提供代码示例,展示如何通过       GPIO 控制电机的正反转。

速度控制与减速

解释如何通过调整 PWM 信号的占空比来控制电机的速度,并实现减速功能。提供代码示例,展示如何动态调整 PWM 占空比以实现速度控制。

  • 编码减速电机的结构与工作原理

系统设计

  • TB6612的连接

  • 编码减速电机的连接

原理图如下

软件STM32CubeMX实现

  • 初始化代码:GPIO

 控制电机的旋转方向AIN1和AIN2,使用PA4和PA5,设置成推挽输出,其他参数默认

  • PWM输出:

 使用TIM2时钟的PWM通道1->PA0输出PWM,PWM的占空比调节范围0-100

占空比 = 1/(ARR+1)

开启定时器使能

  • 编码器接口配置:

编码轮的测速中断使用TIM3,选择Encoder Mode使用TI1andTI2(四分频),其他默认

IO口使用PA6的TIM3_CH1和PA7的TIM3_CH2

 设置测速计算的定时器TIM4,定时时间10ms

开启TIM4定时器使能

Keil软件的代码编写

fun.c函数

#include "fun.h"
#include "tim.h"/*** @description: 编码轮获取计数值函数* @return {*}*/
float speed = 0;          // 当前速度
int16_t Encoder_Get(void) {int16_t cnt = (int16_t)__HAL_TIM_GET_COUNTER(&htim3);__HAL_TIM_SET_COUNTER(&htim3, 0);return cnt;
}/*** @description: * @param {TIM_HandleTypeDef} *htim* @return {*}*/
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{if(htim->Instance == Encoder1_TIM_time)   // TIM4:10ms{int16_t count = Encoder_Get();  // 获取编码器计数值// 计算速度 (转/分钟)// 公式: (count / 11*4) / 10ms * 60000ms/minspeed = (float)count * 545.45f / 44.0f;   //四分频11*4}
}/*** @description: 编码轮正反转函数* @param {int} direction 0正转 1反转 2停止* @param {uint16_t} speed 速度0-100* @return {*}*/
void Motor1_Set(int direction, uint16_t speed)
{switch (direction){case FORWARD:{Motor1_AIN1_G->ODR |= Motor1_AIN1_P;  // AIN1=1Motor1_AIN1_G->ODR &= ~Motor1_AIN2_P; // AIN2=0}break;case BACKWARD:{Motor1_AIN1_G->ODR &= ~Motor1_AIN1_P; // AIN1=0Motor1_AIN2_G->ODR |= Motor1_AIN2_P;  // AIN2=1}break;case BRAKE:{Motor1_AIN1_G->ODR &= ~Motor1_AIN1_P; // AIN1=0Motor1_AIN1_G->ODR &= ~Motor1_AIN2_P; // AIN2=0}break;}Motor1_PWM_CCR1 = speed;
}/*** @brief  控制小车运动* @param  direction: 运动方向(CAR_FORWARD/CAR_BACKWARD/CAR_LEFT/CAR_RIGHT)* @param  speed: 速度值(0~100)*/
void Car_Move(int direction, uint16_t speed)
{switch (direction){// 前进:所有电机正转case CAR_FORWARD:{Motor1_Set(0, speed); // 左前轮正转}break;// 后退:所有电机反转case CAR_BACKWARD:{Motor1_Set(1, speed); // 左前轮反转}break;// 左转:左侧反转,右侧正转(原地左旋)case CAR_LEFT:{Motor1_Set(1, speed); // 左前轮反转}break;// 右转:右侧反转,左侧正转(原地右旋)case CAR_RIGHT:{Motor1_Set(0, speed); // 左前轮正转}break;// 刹车:所有电机停止case CAR_BRAKE:{Motor1_Set(2, 0); // 左前轮刹车}break;}
}

fun.h函数

#ifndef __FUN_H
#define __FUN_H#include "main.h"/* 一个编码电机IO定义===========================================================*/
#define Motor1_AIN1_G GPIOA           // 定义电机1的AIN1的GPIOx
#define Motor1_AIN1_P GPIO_PIN_8      // 定义电机1的AIN1的GPIO_PIN_x
#define Motor1_AIN2_G GPIOA           // 定义电机1的AIN2的GPIOx
#define Motor1_AIN2_P GPIO_PIN_9      // 定义电机1的AIN2的GPIO_PIN_x
#define Motor1_PWM_CCR1 TIM2->CCR3    // 定义电机1的PWM输出为TIM2的TIM_CHANNEL_1
#define Encoder1_TIM_time TIM4        // 定义用于编码器的测速定时器
#define Encoder1_TIM_time_htim htim4       // 定义用于编码器的测速定时器句柄
#define Encoder1_TIM TIM3             // 定义编码器定时器通道TIMx-ch1与TIMx-ch2
#define Encoder1_TIM_htim htim3       // 定义编码器定时器句柄
/* Motor1_Set:电机转动的数值定义=============================================== */
#define FORWARD  0  // 正转
#define BACKWARD 1  // 反转
#define BRAKE    2  // 不转
/* Car_Move:小车移动的数值定义================================================= */
#define CAR_FORWARD  0 // 前进
#define CAR_BACKWARD 1 // 后退
#define CAR_LEFT     2 // 原地左转
#define CAR_RIGHT    3 // 原地右转
#define CAR_BRAKE    4 // 刹车
/* 调用小车的封装函数========================================================== */
void Motor1_Set(int direction, uint16_t speed);
void Car_Move(int direction, uint16_t speed);
int32_t Encoder_Get(void);#endif

 main.c函数

在while循环前加初始化

  HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3);       //小车PWM输出 HAL_TIM_Base_Start_IT(&htim4);                  //计算速度定时器HAL_TIM_Encoder_Start(&htim3, TIM_CHANNEL_ALL); // 开启编码器定时器extern float speed;                           //全局声明速度

 while循环

  while (1){char ta[15];sprintf(ta,"c= %.3lf   ", speed);OLED_ShowString(2,2,ta);Motor1_Set(1, 30);}

这样子就可以在OLED上显示速度了 

调试与测试

实现 


文章转载自:

http://ZB4Mxuet.ntnmL.cn
http://hJTj0kmf.ntnmL.cn
http://W0Vn1gNo.ntnmL.cn
http://i64K23fz.ntnmL.cn
http://mbKPNxBB.ntnmL.cn
http://3ilohcxc.ntnmL.cn
http://Lx8gVcov.ntnmL.cn
http://0UTvsd2J.ntnmL.cn
http://UNVkDBzb.ntnmL.cn
http://E1mqrixr.ntnmL.cn
http://2T25m1Tz.ntnmL.cn
http://Yhmr6TNw.ntnmL.cn
http://nWw4qXuN.ntnmL.cn
http://2xPAVfai.ntnmL.cn
http://96PXbBYA.ntnmL.cn
http://q8VV61kI.ntnmL.cn
http://G30tpjP0.ntnmL.cn
http://A8SNtUVH.ntnmL.cn
http://YpDNiW1G.ntnmL.cn
http://xGj5exuv.ntnmL.cn
http://HOhrNNJo.ntnmL.cn
http://VxaHOLgk.ntnmL.cn
http://1VkZHEbk.ntnmL.cn
http://OrMUmfW6.ntnmL.cn
http://NxXBDEjQ.ntnmL.cn
http://3tkQGnEV.ntnmL.cn
http://PBFfIW2K.ntnmL.cn
http://qWBytZqj.ntnmL.cn
http://yjDWIuQh.ntnmL.cn
http://FNd5eN1z.ntnmL.cn
http://www.dtcms.com/wzjs/671371.html

相关文章:

  • 免费的网站后台网站建设初期工作方案
  • 北京市建设规划网站牡丹江住房和城乡建设厅网站
  • 高端网站建设费用预算哪些网站可以做ppt赚钱
  • wordpress网站多层循环调用文章陕西大型网站建设
  • 赛门仕博做网站怎么样在线制作图标免费
  • 网站模板开发推广 quot 网站开发 quot
  • 怎么免费注册网站手机对比参数配置
  • lamp网站开发七牛云cdn加速wordpress
  • 建立网站准备工作流程网页升级访问网页导航
  • 下列关于网站开发中搜索引擎排名优化建议
  • 找人做购物网站app 软件开发公司
  • 人人做全免费网站江苏苏州昨天出大事
  • 邢台市政建设集团网站蓝色大气网站源码
  • 广西备案工信部网站查看邮箱注册过的网站
  • 齐河县建设局网站知名做漫画网站
  • 做推广都有什么网站企业网站手机版模板
  • 注册账号自建网站163企业邮箱费用
  • 国外 设计网站做网站 怎么发布
  • 盘县网站开发网站规划设计报告
  • pk10代码网站开发小程序怎么放在桌面
  • 网站制作哪家好薇wordpress博客分类
  • 免费网站生成器wordpress无刷新评论
  • 榆林市横山县建设局官方网站辽源市网站建设
  • 网站正在备案中西安旅游攻略知乎
  • 电商网站建设实训步骤深圳网站建设公司哪家
  • 中文商城响应式html网站模板做网站开始要注意什么
  • 《营销型网站建设实战》公司网站微信平台建设的好处
  • 竞价托管推广多少钱怀化网站优化公司有哪些
  • 网站开发与设计培训网站做系统下载
  • seo网站优化价格南京网站设计机构