百科生活 投稿
关于【百元左右的真无线蓝牙耳机推荐】,今天小编给您分享一下,如果对您有所帮助别忘了关注本站哦。
- 内容导航:
- 1、百元左右的真无线蓝牙耳机推荐:stm32做PID算法控制减速直流电机
- 2、百元左右的真无线蓝牙耳机推荐,300元以下性价比之王
1、百元左右的真无线蓝牙耳机推荐:stm32做PID算法控制减速直流电机
本例程采用了HAL库进行项目开发(主要使用软件CubexMX和keil5),文章末尾会有代码开源,欢迎各位对文章进行指正和探讨。
基于PID的减速电机控制","content"一、 硬件模块与原理图","content"1、硬件组成","content"
1、硬件组成","content"
硬件组成:stm32f103c8t6最小系统板;0.96寸LED12864(I2C通讯模式);智能小车12v移动电源;25GA370直流减速电机(带霍尔编码器);JDY-31蓝牙模块;L298N电机驱动模块;杜邦线若干;1个面包板;
图片如下:
2、模块分析","content"1、L298N电机驱动模块","content"
1.模块可驱动两路直流电机,输出A和B各接一直流电机即可;
2.若使用12V供电,将12V供电端口及GND接上电源正负即可,同时5V供电端可以作为最小系统板的输入电源;
3.若不需要使用PWM调速,只需要控制电机正反转,则逻辑A与B跳线帽插上即可,相当于始终使能;
4.若需要使用PWM调速,需将跳线帽拔起,将使能端接上单片机IO口。(定时器IO口,PWM输出模式);
5.逻辑输入四个端口IN1、IN2、IN3、IN4接单片机四个IO口,每两个端口控制的一路电机。
温馨提示:特别不建议新手或者资金有限的情况下,使用电机驱动模块直连成品开发板,很容易烧坏。
原因:(1) 由于电机的特性,电机在堵转或者高负载下,电流会增大,可能会影响到单片机。(2)新手玩单片机可能出现短路等情况,很容易板子冒烟;
L298N的转动逻辑图:
2、0.96寸OLED(I2C通讯)","content"
(1)目前市面主要分为OLED与LCD这2种屏幕;
(2)OLED自发光特性,LCD都要背光,而OLED不需要,因为它是自发光。这样同样的显示,OLED效果要来得好一些;
(3)多种接口方式:6800,8080两种并行接口方式,4线的穿行SPI接口,IIC接口方式(2线);
(4)不要接过高电压,3.3V就可以正常工作了;
(5)OLED不足之处是做大之后成本较高。
本实验采用了0.96寸OLED的屏幕(通讯方式IIC),4个接线柱(SCL,SDA,GND,VCC); IIC通讯实现方式: IIC(Inter-Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。它是由数据线 SDA 和时钟 SCL 构成的串行总线,可发送和接收数据。高速 IIC 总线一般可达 400kbps 以上。
模拟IIC通讯:
I2C 是支持多从机的,也就是一个 I2C 控制器下可以挂多个 I2C 从设备,这些不同的 I2C从设备有不同的器件地址,这样 I2C 主控制器就可以通过 I2C 设备的器件地址访问指定的 I2C设备了。SDA 和SCL 这两根线必须要接一个上拉电阻,一般是 4.7K。其余的 I2C 从器件都挂接到 SDA 和 SCL 这两根线上,这样就可以通过 SDA 和 SCL 这两根线来访问多个 I2C设备。
I2C 协议:(1)起始位;(2)停止位;(3)数据传输;(4)应答信号;(5)I2C 写时序;(6)I2C 读时序
I2C 写时序:
1)、开始信号。
2)、发送 I2C 设备地址,每个 I2C 器件都有一个设备地址,通过发送具体的设备地址来决
定访问哪个 I2C 器件。这是一个 8 位的数据,其中高 7 位是设备地址,最后 1 位是读写位,为
1 的话表示这是一个读操作,为 0 的话表示这是一个写操作。
3)、 I2C 器件地址后面跟着一个读写位,为 0 表示写操作,为 1 表示读操作。
4)、从机发送的 ACK 应答信号。
5)、重新发送开始信号。
6)、发送要写写入数据的寄存器地址。
7)、从机发送的 ACK 应答信号。
8)、发送要写入寄存器的数据。
9)、从机发送的 ACK 应答信号。
10)、停止信号。
I2C 读时序:
I2C 单字节读时序比写时序要复杂一点,读时序分为 4 大步,第一步是发送设备地址,第二步是发送要读取的寄存器地址,第三步重新发送设备地址,最后一步就是 I2C 从器件输出要读取的寄存器值,我们具体来看一下这几步。
1)、主机发送起始信号。
2)、主机发送要读取的 I2C 从设备地址。
3)、读写控制位,因为是向 I2C 从设备发送数据,因此是写信号。
4)、从机发送的 ACK 应答信号。
5)、重新发送 START 信号。
6)、主机发送要读取的寄存器地址。
7)、从机发送的 ACK 应答信号。
8)、重新发送 START 信号。
9)、重新发送要读取的 I2C 从设备地址。
10)、读写控制位,这里是读信号,表示接下来是从 I2C 从设备里面读取数据。
11)、从机发送的 ACK 应答信号。
12)、从 I2C 器件里面读取到的数据。
13)、主机发出 NO ACK 信号,表示读取完成,不需要从机再发送 ACK 信号了。
14)、主机发出 STOP 信号,停止 I2C 通信。
3、JDY-31蓝牙模块","content"
市场上蓝牙模块有很多,常见的JDY-xx,HC-xx等系列。其实看似高级的蓝牙功能背后就是简单的串口通讯;
USART 的全称是 Universal Synchronous/Asynchronous Receiver/Transmitter,也就是同步/异步串行收发器。相比 UART 多了一个同步的功能,在硬件上体现出来的就是多了一条时钟线。一般 USART 是可以作为 UART 使用的,也就是不使用其同步的功能。
串口通讯协议:
数据包:串口通讯的数据包由发送设备通过自身的TXD接口传输到接收设备得RXD接口,在协议层中规定了数据包的内容,具体包括起始位、主体数据(8位或9位)、校验位以及停止位,通讯的双方必须将数据包的格式约定一致才能正常收发数据。
具体如图所示:
波特率:由于异步通信中没有时钟信号,所以接收双方要约定好波特率,即每秒传输的码元个数,以便对信号进行解码,常见的波特率有4800、9600、115200等。STM32中波特率的设置通过串口初始化结构体来实现。
注意:MCU设置的波特率大小要与蓝牙APP设置的大小一致!
4、6线减速电机(带编码器)模块:
市面上电机有很多,常用的有步进电机,直流减速电机,伺服电机等等; 编码器:用来测量电机转速的仪器元件,常见的有:霍尔编码器,光电编码器等 电机的驱动原理很简单,给电压差即可使得电机转动,调速则利用PWM调节发。
编码器原理: 编码器是一种将角位移或者角速度转换成一串电数字脉冲的旋转式传感器。 编码器工作原理: 霍尔编码器是有霍尔马盘和霍尔元件组成。霍尔马盘是在一定直径的圆板上等分的布置有不同的磁极。霍尔马盘与电动机同轴,电动机旋转时,霍尔元件检测输出若干脉冲信号,为判断转向,一般输出两组存在一定相位差的方波信号。
注意:通过判断A与B相哪一位在前,即可判断出正转还是反转
二、CubexMX设置","content"
使用的MCU为stm32f103c8t6:
RCC:
SYS:
注意:Debug这里一定要设置成Serial Wire否则可能出现芯片自锁
GPIO设置:
定时TIM2用来测速与测量正转反转(计数器模式)
定时3:PWM调节
I2C:
USART1:
之后按照自己习惯生成初始化文件
三、代码","content"
自动生成的:
需要自己编写的:
I2C代码:
#include "oled.h"#include "asc.h"#include "main.h"void WriteCmd(unsigned char I2C_Command)//??? {HAL_I2C_Mem_Write(&hi2c2,OLED0561_ADD,COM,I2C_MEMADD_SIZE_8BIT,&I2C_Command,1,100); }void WriteDat(unsigned char I2C_Data)//??? {HAL_I2C_Mem_Write(&hi2c2,OLED0561_ADD,DAT,I2C_MEMADD_SIZE_8BIT,&I2C_Data,1,100); }void OLED_Init(void){HAL_Delay(100); //????????WriteCmd(0xAE); //display offWriteCmd(0x20);//Set Memory Addressing ModeWriteCmd(0x10);//00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,InvalidWriteCmd(0xb0);//Set Page Start Address for Page Addressing Mode,0-7WriteCmd(0xc8);//Set COM Output Scan DirectionWriteCmd(0x00); //---set low column addressWriteCmd(0x10); //---set high column addressWriteCmd(0x40); //--set start line addressWriteCmd(0x81); //--set contrast control registerWriteCmd(0xff); //???? 0x00~0xffWriteCmd(0xa1); //--set segment re-map 0 to 127WriteCmd(0xa6); //--set normal displayWriteCmd(0xa8); //--set multiplex ratio(1 to 64)WriteCmd(0x3F); //WriteCmd(0xa4); //0xa4,Output follows RAM content;0xa5,Output ignores RAM contentWriteCmd(0xd3); //-set display offsetWriteCmd(0x00); //-not offsetWriteCmd(0xd5); //--set display clock divide ratio/oscillator frequencyWriteCmd(0xf0); //--set divide ratioWriteCmd(0xd9); //--set pre-charge periodWriteCmd(0x22); //WriteCmd(0xda); //--set com pins hardware configurationWriteCmd(0x12);WriteCmd(0xdb); //--set vcomhWriteCmd(0x20); //0x20,0.77xVccWriteCmd(0x8d); //--set DC-DC enableWriteCmd(0x14); //WriteCmd(0xaf); //--turn alt="百元左右的真无线蓝牙耳机推荐,stm32做PID算法控制减速直流电机" src="https://p3.toutiaoimg.com/tos-cn-i-qvj2lq49k0/84a8ac7636a44d7180089f9faadddebd~noop.image?_iz=58558&from=article.pc_detail&x-expires=1681038965&x-signature=3lBasdrXH%2FArtNvswynsfcDopUk%3D" />
PID代码:
#include "pid.h"#include "tim.h"#include "main.h"#include "math.h"#include "i2c.h"#include "oled.h" unsigned int MotorSpeed;//È«¾Ö±äÁ¿£¬µç»úµ±Ç°×ªËÙint SpeedTarget = 750;//Ä¿±êתËÙint MotorOutput;//µç»úÊä³ö //1.ÀûÓÃTIM2¼ÆËãµç»úתËÙ void GetMotorSpeed(void){//int CaptureNumber =(short)__HAL_TIM_GET_COUNTER(&htim2); //HAL¿âº¯Êý¼ÆËãÂö³å´ÎÊý//////µç»úתËÙת»»Speed=1sÄÚµÄÂö³åÊý/44(һȦ11¸öÐźţ¬4±¶Æµ·¨)/34¼õËÙ±È//int MotorSpeed=CaptureNumber*20/44/34*2*3.14*3;//OLED_ShowNum(40,0,MotorSpeed,4,16);////__HAL_TIM_GET_COUNTER(&htim2) = 0;//¼ÆÊýÆ÷ÇåÁãint CaptureNumber =(short)__HAL_TIM_GET_COUNTER(&htim2); //???????__HAL_TIM_GET_COUNTER(&htim2) = 0;//int Speed=CaptureNumber*5/44/34*2*3.14*3; int Direction = __HAL_TIM_IS_TIM_COUNTING_DOWN(&htim2); if(Direction == 1){CaptureNumber -= 65535;}MotorSpeed=CaptureNumber;OLED_ShowNum(40,0,MotorSpeed,4,16);HAL_Delay(100);OLED_CLS();//__HAL_TIM_GET_COUNTER(&htim2) = 0;} //2.ÔöÁ¿Ê½PID¿ØÖÆÆ÷£¨PID³£¼û·ÖΪλÖÃPIDºÍÔöÁ¿Ê½PID£© int Error_Last,Error_Prev;//ÉÏ´ÎÎó²î£¬ÉÏÉÏ´ÎÎó²îint Pwm_add,Pwm;//PWMÔöÁ¿,PWMÕ¼¿Õ±È int Kp = 5, Ki = 3, Kd = 1;//PIDË㷨ϵÊý£¬¸¡µãÀàÐÍ£¬Ð¾Æ¬¼ÆËãÄÜÁ¦Ò»°ãʱ½¨ÒéÕûÐÍ£¬»òÕß*1024 int SpeedInnerControl(int Speed,int Target)//ËÙ¶ÈÄÚ»·¿ØÖÆ{ int Error = Target - Speed;//Îó²î = Ä¿±êËÙ¶È - ʵ¼ÊËÙ¶È Pwm_add = Kp * (Error - Error_Last) + //±ÈÀýKi * Error +//»ý·ÖKd * (Error - 2.0f * Error_Last + Error_Prev);//΢·Ö Pwm += Pwm_add;//Êä³öÁ¿=ÔʼÁ¿+ÔöÁ¿Error_Prev = Error_Last;//±£´æÉÏÉÏ´ÎÎó²î Error_Last = Error;//±£´æÉÏ´ÎÎó²î if(Pwm > 4999) Pwm = 3000;//ÏÞÖÆÉÏÏÂÏÞ£¬·ÀÖ¹PWM³¬³öÁ¿³Ì if(Pwm <-4999) Pwm =-3000; return Pwm;//·µ»ØÊä³öÖµ} //3.µç»úתËÙÓë·½ÏòµÄº¯Êý£¨PID¿ØÖÆ£© void SetMotorVoltageAndDirection(int Pwm){ if(Pwm < 0)//Èç¹ûPWMСÓÚ0 { HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET); Pwm = (-Pwm);//PWMÖ»ÄÜÈ¡ÕýÖµ£¬Èç¹ûΪ¸ºÊý£¬Ö±½ÓÈ¡·´ __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, Pwm);//PWMµ÷ËÙ } else {HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET); __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, Pwm);//PWMµ÷ËÙ }} void ModePID(){ GetMotorSpeed(); MotorOutput = SpeedInnerControl(MotorSpeed,SpeedTarget); SetMotorVoltageAndDirection(MotorOutput);}
主函数代码:
2、百元左右的真无线蓝牙耳机推荐,300元以下性价比之王
随着技术的飞速发展,无线蓝牙耳机已经成为一种潮流。在琳琅满目的品类中,选择一款合适自己的真无线蓝牙耳机并非易事。
想要音质好,又不想花大价钱?那么今天我们为大家推荐的这几款300元以下性价比蓝牙耳机,一定可以满足你的需求,一起来看看吧。
1
漫步者(EDIFIER)HECATE GM4升级版
¥299
GM4做工还是比较精细,合模线间隙统一无毛刺。声音方面,GM4采用了5.8mm动圈,带透气孔;耳机柄底部各有一拾音孔,噪音过滤效果中规中矩。
GM4造型合耳,长时间佩戴也没有不适感,且加上透气孔的设计,基本没有听诊器效果,不会发闷。如果日常用来听歌且追求一定的音质效果的,那GM4可能并不是很合适。
作为GM4宣传的主要卖点--低延迟,需要先说一下它采用的芯片--原睿PAU160X,原睿是台湾原相的子公司,PAU160X有着一项独特绿波(GreenRadio™)专利技术:双耳直连、不分主从共享模式、快速角色互换、超低延时、低辐射、低功耗、抗干扰等特性。
在实际体验中,当进行FPS类游戏时,GM4开启游戏模式的情况下有较明显的延迟降低,但是在MOBA类的游戏时,游戏模式和音乐模式之间的延迟差别,几乎很难感受到。
2
小米Redmi AirDots 3 Pro 入耳式真无线蓝牙耳机
¥299
Redmi AirDots 3 Pro的充电仓设计成椭圆形,灰白色,大小像一个扁了一半鸡蛋,握感圆润,正面是指示灯和控制安检门,底部是type-充电口。闭合时可直立放置,但打开后就会往后倾斜,可单手开合。打开后反光的表面像两只眼睛盯着我,拿起时吸附力较强。
Redmi AirDots 3 Pro采用的是“络达AB1565AM”的5.2蓝牙芯片,络达也是老牌的IC设计厂商,现在隶属于联发科,这款芯片是最新的产品,它家也有多个方案应用于华为、万魔、索尼、漫步者等品牌。
这款蓝牙耳机的音质可以让95%的人感觉不到蓝牙耳机和有线耳机的差别!
这款耳机有个优点,空间感明显,尤其是听很多乐器音乐时,可以明显感觉到各个乐器的距离感,沉浸感足。
Redmi AirDots 3 Pro的降噪技术采用的是Hybrid 主动降噪技术,这也是小米的常用技术,早在2019项圈降噪耳机就是用这项技术。
3
OPPO Enco Air 真无线蓝牙耳机
¥299
OPPO Enco Air真无线耳机依然沿用了Enco系列TWS耳机充电仓的圆润造型,磨砂质感外壳搭配饱满的圆弧设计,显得很有质感。配色上十分多彩,命名也十分有趣。OPPO Enco Air还拥有正年「青」、有点「蓝」/被表「白」、敢自「黑」共四种配色,满足不同用户群体的需求。
在音质玄学上,OPPO Enco Air真无线耳机是首款获得德国tuv莱茵认证的高性能真无线耳机。其采用12 mm复合镀钛振膜动圈单元,振膜球顶PEN镀钛材质提供的刚性可以有效抑制分割振动、提高瞬态响应。
OPPO Enco Air真无线耳机搭载了行业领先的蓝牙5.2芯片,采用双耳同传方式,可以减少蓝牙重传次数,通过手机端和耳机端的协同优化,进一步降低声音传输延时,改善了游戏音画不同步、游戏卡顿、干扰断连等问题。
不论是在颜值、音质、低延时方面,OPPO Enco Air真无线耳机都带来了出色的产品实力,既能够满足用户的音质享受,也能提供超低延时的畅爽游戏体验和清晰通话质量。对于众多的年轻群体而言,OPPO Enco Air真无线耳机的体验可以说是“越级”的,也是同价位产品中最优质的选择之一。
4
vivo TWS 2e 真无线耳机
¥299
TWS 2e手感比较光滑,有部分反光,可以看到人影,出汗触摸耳机盒可以看到很多指纹。与airpods pro 相比重量偏轻,带有部分廉价感。耳机为柄状入耳式,手柄比较短。材质颜色与耳机盒一样。
TWS 2e采用了比较正常的双麦通话降噪,这是目前比较流行的一种降噪方式,两个麦克风其中一个稳定保持清晰通话,另一个物理主动消除噪音,通过收集外界的声音,进行智能识别处理后,发出与噪音相反的声波,利用抵消原理消除噪音。降噪的效果也是很不错的。
音质方面采用的是蓝牙5.2芯片技术,支持AAC/SBC两种音频解码,采用12.2mm动圈。首先是蓝牙采用目前最新的蓝牙5.2,在数据的传输速率以及稳定性上是目前最好的。
除此之外,还有一个比较厉害的功能:多重串流音频(Multi-Stream Audio)功能将实现在智能手机等单一音频源设备(source device)、单个或多个音频接收设备(sink device)间,同步进行多重且独立的音频串流传输,从而让设备提供更好的立体声体验,并使多台音源设备之间的切换更加顺畅。
5
万魔舒适豆升级版ComfoBuds 2
¥299
万魔Comfobuds2是Comfobuds的升级款,主要是升级了蓝牙版本,续航时间,新增游戏低延迟模式,更有意思的是在半入耳上创造性的使用可替换耳帽设计,据说可以提升佩戴气密性,提升音质体验效果。
这款耳机设计本身就比较轻,单只耳机只有4.3g,戴起来一点负担和压力都没有;其次耳帽设计改成圆形,没有螺纹的,对于之前部分人反映的烙耳朵,有了很大的改善,整体舒适度提升一个档次!
耳机有着双麦克风通话降噪,通话体验还是相当好的,不管是风噪还是环境噪音都能被削减得不再影响通话,这一点比我手中的TWS都要强上不少。无论是在开视频会议还是接打电话,对方都表示声音很清晰。
耳机标称续航6小时,实际体验约60%音量连续播放大概在6小时5分钟。加上充电盒,耳机总续航为24小时。
以上5款蓝牙耳机
你最喜欢哪款?
本文关键词:百元真无线蓝牙耳机推荐2020,百元左右性价比高的蓝牙耳机,百元以内高性价比的蓝牙耳机有什么推荐?-耳机-zol问答,百元左右的无线蓝牙耳机哪个品牌好,百元以内真无线蓝牙耳机推荐。这就是关于《百元左右的真无线蓝牙耳机推荐,stm32做PID算法控制减速直流电机》的所有内容,希望对您能有所帮助!
- 上一篇: 武夷山大红袍母树,大红袍母树茶叶去哪了
- 下一篇: 铁锹的拼音怎么写,铁锹怎么读
- 最近发表