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

想开网站建设公司百度推广客户端app下载

想开网站建设公司,百度推广客户端app下载,企业营销型网站建设公司,知识管理软件排名stm32f103c8t6与TB6612FNG解耦测试 本文操作方式: 忽略底层,只做上层, 所以前面全部照搬步骤,重在调试 文章目录 stm32f103c8t6与TB6612FNG解耦测试本文操作方式:创建基本工程(1)跳转此链接,创建(2)创建电机驱动文件夹(3)PWM原理(4)电机转动控制 oled调试和key调试(5)OLED转速…

stm32f103c8t6与TB6612FNG解耦测试

本文操作方式:

忽略底层,只做上层, 所以前面全部照搬步骤,重在调试

文章目录

  • stm32f103c8t6与TB6612FNG解耦测试
  • 本文操作方式:
  • 创建基本工程
    • (1)跳转此链接,创建
    • (2)创建电机驱动文件夹
    • (3)PWM原理
    • (4)电机转动控制
  • oled调试和key调试
    • (5)OLED转速显示
    • (6)引入oled库文件
    • (7)OLED显示转速
    • (8)key按键调试
      • <1>引入文件
      • <2>初始化初始按键
      • <3>配置按键和风扇的交互

文件工程代码:

点击跳转
https://ww0.lanzoul.com/iZauM26zyrni
电机驱动接线原理图步骤:

点击跳转
https://blog.csdn.net/qq_57484399/article/details/141071139

stlink连线:

最小例程插线方法

oled接线原理图(iic总线):

4-1 OLED显示屏

创建基本工程

(1)跳转此链接,创建

点击跳转
https://blog.csdn.net/qq_57484399/article/details/141003048

(2)创建电机驱动文件夹

① 点击品字, 然后新建Motor

image-20240807224458620

② 点击Motor, 然后点击Add files

image-20240807224723903

③ 点击进入Motor文件夹, 然后点击文件类型为 all, 右键txet文件, 然后新建名字分别为

Motor.c
Motor.h
PWM.c
PWM.h
fun.c
fun.h
image-20240807225008521

④ 然后选中这六个文件, 我们点击add

image-20240807225039396

⑤ 接着我们去包含Motor的路径

但是我们要告诉工程, 我们的环境变量包含在哪里了, 所以我们点击锤子 -> c/c++ -> include Paths -> 新建变量 -> 选中所需文件夹(我们都放在Source_code里面)

具体方法, 还看创建工程

https://blog.csdn.net/qq_57484399/article/details/141003048

image-20240807225236990

具体代码,跳转电机代码

https://blog.csdn.net/qq_57484399/article/details/141003251

把这六个文件的代码, 全黏贴进去, 后面我们简单说下原理

image-20240807230435469 # 原理解析

(3)PWM原理

一个小灯, 正负极通电, 那么他就能亮, 但是此时是最高亮度, 那么我想让他亮度变低, 怎么做呢? 最直接的方法,就是直接断电, 但是这个时候就真的不亮了. 还有没有更好的办法, 我们通电,再断电, 这样小灯就闪了一下, 我们把这个时间段压缩到 10毫秒, 1毫秒内,通电 1ms, 断电 9ms, 和 通电9ms, 断电 1ms, 亮度是截然不同的。 这样在极短的时间内, 通过控制通电和断电的时间比例,既能保证通电的时候, 灯亮, 也能保证在这个时间段内, 通过控制通电的时候, 达到调节灯亮度的功能, 同时不影响 在这个周期时间段内, 如果全部断电,则会让灯熄灭。

具体的讲解,请看江协科技:

【STM32入门教程-2023版 细致讲解 中文字幕】https://www.bilibili.com/video/BV1th411z7sn?p=16&vd_source=1de4617d8462b141bb53b6be82555d31

我们通过了解PWM原理和观看视频, 知道了如何驱动电机,

① 我们在PWM.c的 PWM_Init里面初始化了 PB0端口,配置定时器, 这样电机驱动就可以设置占空比, 就可以控制特定的转速了.

image-20240808083741316

(2)设置占空比, 有转换关系

image-20240808083846370

(3)电机驱动, 需要控制 相应io端口的高低电平, 从而控制正反转,还有设置转速

image-20240808083316116

(4)电机转动控制

我们看到这里就是控制 电机转动的函数了, 之前的都是底层, 这里主要讲解的就是,这里的上层配置.

电机转动:

我们通过设置(括号里面的是转速, 我们设置成 负数就是反转,正数就是正转, 绝对值是100)

Motor_SetSpeed(20); 

电机不转:

设置占空比为 0

Motor_SetSpeed(0); 

(5)我们通过模仿led, 把电机的状态和io口绑定, 并且为了避免重复开关io口, 我们如果判断出fun和我们设置的状态是一致的, 那么我们就不操作io口

具体示例可以看我们之前led控制:

https://blog.csdn.net/qq_57484399/article/details/140879950

image-20240808092232048

注意上图所示我们这里控制io口,直接为高或者低电平, 相当于我们设置占空比为 100% 或者 0%, 我们上面是无法控制转速的,只能控制开关.

但是我们使用TB6612FNG, 就是想通过设置 PWM的占空比, 从而控制电机的转速的, 所以我们只有修改一下控制io口的方式就可以了. 设置成控制转速, 就可以实现速度可控的电机了

Motor_SetSpeed(20);

我们留出了Speed, 这里就是为了控制转速.

代码如下:

/*
************************************************************
*	函数名称:	Fun_Set
*
*	函数功能:	电机控制
*
*	入口参数:	status:开关蜂鸣器
*
*	返回参数:	无
*
*	说明:		开-FUN_ON		关-FUN_OFF
************************************************************
*/
extern int8_t Speed;		//定义速度变量  
void Fun_Set(_Bool status)
{//是1,就先让风扇转20,否则0的话,停止if(status == FUN_ON && fun_info.fun_Status != FUN_ON){Motor_SetSpeed(Speed);fun_info.fun_Status = status;}else if(status == FUN_OFF && fun_info.fun_Status != FUN_OFF){Motor_SetSpeed(0);fun_info.fun_Status = status;}}

oled调试和key调试

(5)OLED转速显示

我们通过加入OLED工程

OLED.c
OLED.h
OLED_Data.c
OLED_Data.h

具体加入方式如下(从第九步开始):

https://blog.csdn.net/qq_57484399/article/details/141003048

image-20240808093411769

(6)引入oled库文件

引入后, 我们在main.c里面, 引入OLED.h

#include "OLED.h"
image-20240808093455914

在main函数里面 初始化oled

OLED_Init();
image-20240808093555502

(7)OLED显示转速

image-20240808093922517

main.c函数代码

#include "stm32f10x.h"                  // Device header
#include "delay.h"
#include "OLED.h"
#include "fun.h"
#include "Key.h"int8_t Speed;		//定义速度变量  int main(void)
{Delay_Init();OLED_Init();   Key_Init();Fun_Init();/*显示静态字符串*/OLED_ShowString(0, 0, "Speed:", OLED_8X16);while(1){OLED_ShowSignedNum(56, 0, Speed, 3, OLED_8X16);		OLED_Update();}}

(8)key按键调试

<1>引入文件

在User文件夹里面, 加入两个文件 Key.c 和 Key.h

image-20240808100513925

image-20240808100640074

具体加入方式如下(从第九步开始):

https://blog.csdn.net/qq_57484399/article/details/141003048

main.c里面引入

#include "Key.h"

<2>初始化初始按键

Key_Init();

跳转初始化函数就可以看出我们设置的是 PB1按键

image-20240809184556308

<3>配置按键和风扇的交互

我们在Key.c里面, 配置按键中断函数, 当按下按键的时候, 就会触发中断EXTI1_IRQHandler(触发原因如下)

触发原因(ctrl 加鼠标左键, 快速跳转)

我们首先判断风扇的状态, 然后对风扇状态取反

extern int8_t Speed;		//定义速度变量 
void EXTI1_IRQHandler(void)
{DelayXms(10);while(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_1) == 0);//判断风扇是开启状态, 就关闭风扇if(fun_info.fun_Status == FUN_ON){Speed = 0;Fun_Set(FUN_OFF);}else	//相反,则开启风扇{Speed = 20;Fun_Set(FUN_ON);}EXTI_ClearITPendingBit(EXTI_Line1);
}	

触发原因

这里触发的中断, PB1, 我们在key.c初始化函数 void Key_Init(void); 配置的是中断1(配置细节,无需考虑,我们只注重调试)

image-20240809185210257

<4>我们进入fun.c底层, 会看到 , 开启风扇后,设置了转速,这个转速后续我们调整. 现在设置成定值, 我们转速在 0 和 20 切换(其实也能从oled看到现象了)

image-20240809191218866

现象调试:

按下按键后, oled显示转速20, 电机转动

再次按下后, oled显示转速 0 , 电机停转

【电机解耦测试-哔哩哔哩】

电机解耦测试

http://www.khdw.cn/news/47950.html

相关文章:

  • 西安微信商城网站开发友情链接交换的方法
  • 网站ico图标放在哪里电商热门关键词
  • jtbc网站开发教程自媒体服务平台
  • 网站开发流程的认识石家庄百度关键词搜索
  • 誉重网站建设公司百度云搜索引擎官方入口
  • 附近的网站设计开发合肥seo关键词排名
  • 丽水做网站夫唯老师seo
  • 叫任何一个人一个小时做网站百度指数的特点
  • 只做衬衫的网站友情链接交换形式有哪些
  • 在网站上做封面百度怎么做自己的网页
  • 做网站的工资高打开免费百度啊
  • 高端网站建设 引擎技百度识图查图片
  • 外网域名购买郴州网站seo外包
  • 怎么做网站内容添加广告推广平台代理
  • 杭州做网站多少钱线上营销的优势
  • 转做批发鞋子的网站网址导航推广
  • 网站建设及经营应解决好的问题专门培训seo的网站
  • 企业网站建设服务哪家好2021近期时事新闻热点事件简短
  • 成都网站建设网站建设哪家好小程序开发
  • 漫画交流网站怎么做青岛seo外包公司
  • 专业做网站的数据分析师资格证书怎么考
  • 物联网产品seo优化百度技术排名教程
  • 网站开发是做什么广州市疫情最新
  • 网站建设 广西夜狼seo
  • 网站建设客户需求表seo的关键词无需
  • 南宁东凯做网站的公司客户管理软件哪个好用
  • wordpress读音seo网站免费优化软件
  • 网站建设及服务合同北京网聘咨询有限公司
  • 如何注册网站主办者计算机培训机构哪个最好
  • 学校网站logo怎么做杭州网站优化推荐