NRF24L01 PID问题

我在测试的时候遇到一个神奇的现象,

因为是测试,所以PTX和PRX两端都重复发送一些数据。

会出现如下现象:

  • PTX发送端能正常发送数据并收到ACK应答包;
  • 然而PRX端没有收到任何数据,状态寄存器STATUS和缓冲区寄存器FIFO_STATUS也没有任何变化。即使单片机不运行,PTX端收到依然还在正常进行。将PRX端断电PTX才发送失败了。

分析:

  • 就是说,出现如上现象时,PRX端应答PTX了,但是PRX却不认为自己收到有效数据了.
  • 再将发送端数据的第一个字节自增1,PRX就能正常收到数据。
  • 所以初步确定是PRX接收端认为是重复数据副本并被丢弃。

摘自计数书册:

 

 7.3.3.2PID(数据包标识)2位PID字段用于检测接收到的数据包是新的还是重新传输的。PID可防止PRX设备向接收主机单片机多次呈现相同的有效负载。对于通过SPI接收到的每个新数据包,PID字段在TX侧递增。PRX设备使用PID和CRC字段(见第30页的第7.3.5节)来确定数据包是重传输还是新传输。当链路上丢失几个数据包时,PID字段可能等于最后接收到的PID。如果一个包具有与前一个包相同的PID,nRF24L01+将比较来自两个包的CRC和。如果CRC和也相等,最后接收的包被认为是之前接收的包的副本并被丢弃。

 结果:

理论上PID会递增的,递增了接收端就不会被丢了啊,所以PID为啥不增呢?

我也不知道!!!

知道有这个问题,每次发送的数据不一样就能保证CRC变化,就不会被判断重复包而被丢弃。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于NRF24L01PID电机转速控制器,采用51单片机控制,有发送端和接收端的完整图纸和程序代码 实物图: 原理图: 项目介绍: 在过程控制中,按偏差的比例(P)、积分(I)和微分(D)进行控制的PID控制器(亦称PID调节器)是应用最为广泛的一种自动控制器。它具有原理简单,易于实现,适用面广,控制参数相互独立,参数的选定比较简单等优点;而且在理论上可以证明,对于过程控制的典型对象──“一阶滞后+纯滞后”与“二阶滞后+纯滞后”的控制对象,PID控制器是一种最优控制。PID调节规律是连续系统动态品质校正的一种有效方法,它的参数整定方式简便,结构改变灵活(PI、PD、PID)。 然而PID算法在工业发展中也占据不小的地位,例如,液位,压力,温度,流量的控制都能利用PID算法进行精准控制。本项目将PID的算法用在了直流电机的控制当中,用于精准控制电机转速,简化电机控制难度。为了使操作者能够简单,方便,实时,快捷的控制电机的转速,我又在此基础上加上了无线模块,使得操作者能够更加简单的操作本产品,操作者只需简单改变主控板的设定值,接收机即可将电机转速控制在设定值以内,误差范围控制在正负20r/s(转/秒)。 功能设计要点 1.控制核心:接收和发射核心控制部分均采用STC12C5A60S2单片机进行控制 2.显示部分:接收机显示采用普通的12864液晶显示,发射部分为了减小其体积采用OLED液晶,功耗低,体积小,显示效果好 3.电机驱动部分:采用的是L298N电机驱动模块,价格低,抗干扰能力强,安全性高,可靠性强,大大提高了电机的效率。 4.速度检测部分:采用44E开关型霍尔传感器,成本低,电路简单,可与单片机IO口直接连接,操作方便。 5.无线数据传输采用NRF24L01无线模块,工作在 2.4~2.5GHz 世界通用 ISM 频段,工作电流只有 10.5mA, 接收时工作电流只有 18mA, 多种低功率工作模式, 功耗低。 6.核心控制算法PID:此电路采用的是PID算法里的增量式算法, pid.voltage=pid.Kp*pid.err+pid.Ki*pid.integral+pid.Kd*(pid.err-pid.err_last); 增量式算法不需做累加, 计算误差和计算精度问题对控制量的计算影响较小; 系统工作原理方框图:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值