嵌入式模块的使用方法和疑难杂症

能量源

锂电池

参数指标

在这里插入图片描述

  1. 如上图所示,这是一种常见的锂电池,它表面上写了很多的参数,下面我就来一一分析这些参数代表着什么意义:
  2. 电芯:锂电池是由一个个电芯串联起来的,电芯是锂电池最基本的组成单位,简称为s,即由三个电芯组成的锂电池为3s电池。这个s就代表一个电芯。每块电芯的锂电池充满电时的电压是4.2v,放完电时的电压为3.6v,如果低于这个电压就会影响锂电池的寿命,甚至直接损坏锂电池。
  3. 3300mAh:这个参数代表着这块锂电池的容量是3300毫安时,意味着以3300毫安的电流(即3.3安的电流)放电能持续放电一个小时,当然了这只是个理论数据,具体放电时间是多少还要看各个厂家标注的这个参数有多大水分。
  4. 25C和5C:代表充放电倍率,如果电池上有两个单位是C的参数,那么小一点的(图上是5C)是充电倍率,大一点的(图上是25C)是放电倍率,如果只有一个单位是C的参数那么这个参数是放电倍率,充电倍率则为1-2C。锂电池的充放电性能是很强大的,即能以很高的电流进行充放电,这个是一般别的电池做不到的。其中最大持续放电电流是放电倍率乘以容量,如上图所示的锂电池则为25*3300=82500mA,即这块锂电池最大能以82.5A的电流进行持续放电。最大的充电电流为充电倍率乘以容量,如上图所示的锂电池则为5*3.3A=16.5A,即当充电时这块电池最大以16.5A的电流进行充电。需要注意的是这个16.5A是整块电池的充电电流,而不是单个电芯的充电电流,这是3s电池,则每个电芯的最大充电电流为16.5/3=5.5A
  5. 另外锂电池长期不用需要封存时,单块电芯的电压不能过高或者过低,要不然长时间存放后电池会胀气就是俗称的电池鼓了,看起来就像怀孕一样(手动滑稽)。长期封存时单块电芯的保存电压为3.85v,过高或者过低都会损坏电池。
  6. 锂电池在充电时最好使用平衡充充电模式,因为锂电池是由一块块电芯组成的,很有可能因为每块电芯的充电速度不一样,或则每块电芯开始充电时的电压同,导致这一块电芯满了那一块电芯还缺很多电,而持续给满电电芯充电会导致电芯损坏,平衡充就可以解决这个问题,确保每块电芯都能充满电而且不会过充。

一些使用方法

  1. 适用于常见电池的小知识:
      电池本身的电压在电路中称为电动势E,而外部电路的电压为U且U=E-Ir,I是电路中的电流的大小,r是电池的内阻。因此在电路电流很高时,电池能提供给外部电路的电压就会降得很低,因为电池和外部电路是串联起来的,电池的内阻对于电池的电动势来说会有一个分压,当电流很高时,内阻的分压就会很大,导致外部电路的电压过低,使外部设备工作不正常。
      所以需要尽量降低电池的内阻,防止内阻分压过高,而锂电池的内阻就非常小,可能只有几毫欧,因此锂电池的性能强劲,能提供很高的持续输出电流。
  2. 电池的接线方法:
    在这里插入图片描述
    如上图所示,一般锂电池会有两根引出的接线:
      左边那个比较粗的线的定义是:黑色代表锂电池的负极,接外部电路的负极红色代表锂电池的正极,接外部电路的正极。黑色线和红色线之间的电压就是锂电池的电压。
      右边那个一堆线的定义是:最左边的黑色是整个锂电池的负极,最右边的红色是整个锂电池的正极,任意两根线之间代表锂电池的一个电芯,且靠近红色线的电压高于靠近最左边的黑色的线的电压。例如:
      如果我接最左边的黑色和从左边数第2个黑色,那么这两根线之间的电压就是该电池的一块电芯的电压。且最左边的黑色是负极,从左边数第2个黑色是正极。
      如果我接从左边数第2个黑色和从左边数第3个黑色,那么这两根线之间的电压还是锂电池的一个电芯的电压。且从左边数第2个黑色是负极,从左边数第3个黑色是正极。
      如果我接从左边数第1个黑色和从左边数第3个黑色,那么这两根线之间的电压就是两个电芯的电压。且从左边数第1个黑色是负极,左边数第3个黑色是正极。
      如果我接最左边的黑色和红色,那么这两根线之间的电压就是整个锂电池的电压。且最左边的黑色线是负极,红色线是正极。

常见电池参数表

  1. NiCd/NiMH
    电压等级:单电芯1.2V
    最大充电电流:1-2C
    放电截止电压:单电芯0.85V(NiCd)、单电芯1.0V(NiMH)
  2. Li-ion
    电压等级:单电芯3.6V
    最大充电电压:单电芯4.1V、4.2V
    最大充电电流:1C或更低
    放电截止电压:单电芯2.5V
    保存电压:单电芯3.75V
  3. LiPo
    电压等级:单电芯3.7V
    最大充电电压:单电芯4.2V
    最大充电电流:1C或更低
    放电截止电压:单电芯3.0V
    保存电压:单电芯3.85V
  4. LiFe
    电压等级:单电芯3.3V
    最大充电电压:单电芯3.6V
    最大充电电流:4C或更低
    放电截止电压:单电芯2.0V
    保存电压:单电芯3.3V
  5. Pb
    电压等级:单电芯2.0V
    最大充电电压:单电芯2.46V(铅酸)
    最大充电电流:0.4C或更低
    放电截止电压:单电芯1.75V

动力源

舵机

  1. 舵机是我们经常使用的一个工具,它可以说是直流有刷电机的进化版本,只需要一根信号线就能方便的控制舵机旋转固定的角度。

  2. 一般的舵机总共有三条线:2根电源线(供电线)和1根信号线,其中红色的是电源正极,黑色或者褐色是电源的负极,橙色或者白色是信号线:
    在这里插入图片描述

  3. 接线方法:电源负极线接直流电源的负极和开发板的GND,电源正极线接直流电源的正极,信号线接开发板上的pwm输出线。

  4. 信号格式:通过开发板输出对应的pwm信号即可控制舵机旋转到固定的角度,其中pwm信号一般是频率为50Hz即周期为20ms,占空比为0.5ms — 2.5ms。pwm信号和舵机旋转的角度成线性对应,例如对于180°的舵机来说,占空比为0.5ms对应着舵机0°,占空比为2.5ms对应着舵机180°。如下图所示:
    在这里插入图片描述
    对于某些高性能的数字舵机来说,舵机接收的pwm信号的频率可能高于50Hz,有可能达到300Hz或者400Hz,这个参数可以从舵机卖家处得到。

  5. 此外还有一些360°的舵机,要注意360°的舵机并不是说这个舵机可以旋转360°,而是说这个舵机可以和直流电机一样,当给出输入信号时,舵机可以一直旋转,而不是转到固定的角度并且保持。对于360°的舵机来说,pwm信号的占空比意味着:1.5ms的占空比舵机静止不动,超过1.5ms占空比小于2.5ms占空比时舵机朝着某一个方向持续旋转;当信号小于1.5ms大于0.5ms时舵机朝着相反的方向旋转,信号和1.5ms的差距越大旋转速度越快。

  6. 注意事项

    1. 舵机在工作时的电流比较大,一般有2-3A甚至更高,给舵机供电的电源一定要保证电流足够,否则舵机可能工作不正常,或者不工作。
    2. 舵机的供电电压有高有低,需要询问舵机的卖家得到具体的供电电压。如果电压不在正确范围内,舵机会烧坏或者无法正常工作。
    3. 一定记得开发板的GND要和舵机的负极连接在一起,称之为共地。因为pwm信号本质上说是一个电压信号,这个电压信号是相对开发板的GND给出的电压信号,舵机输入的也是一个电压信号,这个电压信号是相对舵机的负极电压来说的信号,因此要保证开发板GND的电压和舵机负极电压一致。

直流无刷电机

  1. 它相比于直流有刷电机因为没有了碳刷所以极大的降低了噪音、延长了使用寿命,并且无刷电机的转速和扭矩也得到了极大的提升。

  2. 常见的无刷电机分为有感电机和无感电机,分别如下图所示:(图是淘宝上随便找的,没有打广告的意思0.0,如果侵权了请告诉我,立马就删除)
    在这里插入图片描述
    上图是无感无刷电机
    在这里插入图片描述
    上图是有感无刷电机,可以看到相比于无感无刷电机多了一组信号线,一般是霍尔元件的线。

  3. 无刷电机是没有碳刷的,因而不能像普通的有刷电机一样直接接到直流电源上就可以使用,需要使用电子调速器,电子调速器简称电调,关于电调的具体使用方法,会在我下一篇博客中介绍。

  4. 无刷电机的参数:
    在这里插入图片描述
    如上图所示,一般电机需要注意如下几个参数:
    供电电压: 供电电压必须在合适的范围内,超过此电压可能会烧坏电机,低于此电压可能会无法驱动电机。上图所示的参数为4s-12s,这个s指的是锂电池的电芯。
    最大电流: 电机的供电电流也有一个范围,电机的供电电流和电机输出的扭矩成正比,即电流越高扭矩越高。超过最大供电电流也会烧坏电机。
    最大扭矩: 电机输出的扭矩的最大值,在电机选型时,需要根据电机的使用场景来判断这个扭矩是否足够,如果不够的话可能会驱动不了。
    香蕉头: 这是电机线的连接接头,有不同的型号,比方说3.5mm和4mm的,电机和电调上的香蕉头要适配,否则会出现插不进去的尴尬情况,别问我怎么知道的…
    KV值: KV值是确定电机转速的重要指标,将KV值乘以给电机的供电电压(单位是伏特),得出的结果就是电机在这个供电电压下能达到的理论转速。比方说供电电压是24v,上图所示KV值是170KV,则电机理论上的转速最大是:170*24=4080转每分钟。

遥控器

PS2

网上PS2相关的资料和程序特别多,但是绝大部分都是使用软件SPI的方式,也就是GPIO口模拟通信的程序,很少有讲硬件SPI通信的。但是我又看着那PS2的通信协议就是符合SPI,因此鼓捣了很久,终于调通了硬件SPI跟PS2通信(基于STM32F40系列单片机),下面记录一下具体内容。

  1. 首先说一下SPI配置:摩托罗拉格式,8位数据位,LSB,波特率300K左右,时钟空闲高电平,2边沿采样,CS低片选,且通信期间一直低电平(接收完所有格式后才能拉高):
    在这里插入图片描述
  2. 至于具体的通信协议(比如几字节啊、线怎么接啊之类的)买PS2手柄的地方基本上都会附赠的,我就不再说了,只说一点卡了我很久的bug,就是用硬件SPI时,发送完一个字节必须得加一点延时,不加的话读取不到数据,或者读到的完全是错的,具体形式如下面代码块:
for(int i=0;i<9;i++)
	{
		HAL_SPI_Transmit(&hspi1,&Temp[i],1,1);
		delay_us(8);
	}

本人亲测只能使用上面这种在for循环里,一条语句读取一个字节,并添加几微秒的延时(如上图所示328K的波特率时,延时8us才能正常读到,5us就不太正常。因此我感觉还是波特率太高的问题,硬件SPI波特率太高了,256分频也低不到哪里去。如果能做到很低的话,可能就不用延时了,就能一条函数读取9个字节了),才能正确读取数据
如果是下面这两种方式,则都读不到数据

for(int i=0;i<9;i++)
	{
		HAL_SPI_Transmit(&hspi1,&Temp[i],1,1);
	}
HAL_SPI_Transmit(&hspi1,&Temp[i],9,1);
  1. 改掉这个bug后,程序就能正常运行了:
    在这里插入图片描述
  • 44
    点赞
  • 223
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值