您当前的位置:五五电子网电子知识电子知识资料机器人-智能车基于MCU的室外移动机器人导航定位系统 正文
基于MCU的室外移动机器人导航定位系统

基于MCU的室外移动机器人导航定位系统

点击数:7682 次   录入时间:03-04 12:03:21   整理:http://www.55dianzi.com   机器人-智能车
 

MAX3111E的控制命令分为写配置命令、读配置命令、写数据命令以及读数据命令四种。本文写入芯片的配置命令是0xE809,8bit数据长度、使能FIFO、发送中断使能、波特率38400bps。数据的写入需要在每个字节前面加上0x81,例如若要发送字节0x55,则需要从DIN端移位输入0x8155。

 

下面是连续发送n个字节的C语言代码:

SPI_WRITE_16BIT(0xE809);//写配置命令

delay_ms(10);//延时10ms

SPI_WRITE_16BIT(0x8100+DATA1);//发送第1个数据DATA1

delay_ns(250);//延时250ns

SPI_WRITE_16BIT(0x8100+DATA2);//发送第2个数据DATA2

……

delay_ns(250);//延时250ns

SPI_WRITE_16BIT(0x8100+DATAn);//发送第n个数据DATAn

使用MAX3111E时需要注意:

1、片选信号CS的下降沿到时钟SCLK信号的第一个上升沿至少要有100ns的时间延迟;

2、芯片判定片选信号CS失效时,需要CS管脚保持高电平的时间至少为200ns。因此当需要连续发送数据时,两个写数据命令之间至少需要200ns,建议间隔250ns;

3、写配置命令需要晶振工作稳定,因此可以在写配置命令后再读配置,直到写入和读出的配置数据相应位相同时才保证芯片按需求配置完毕。

 

 

3 软件设计

3.1 GPIO模拟SPI实现方法

使用GPIO模拟SPI,对选定的IO口进行时序上的电平操作,模拟出SPI时序。本文将SPI的电平操作采用宏定义的方式,可参考表3中的源代码。

 

表3 GPIO模拟SPI操作方法

 

程序按照SPI逻辑关系使用上述的宏定义,可以在选定的IO端口产生SPI信号,并且可以灵活的控制每个CS有效期间的时钟数。使用GPIO模拟的SPI具有操作直观、灵活可变等优点。相比较模拟得到的SPI,控制器上自带的SPI接口基本不占用控制器资源,发送和接收的移位、时钟信号的产生都交由内部SPI模块处理。而GPIO模拟的SPI需要控制器不断对IO进行操作,因此会占用控制器处理时间。时钟信号也因对电平操作消耗机器周期,导致时钟信号速度有限。

3.2 数据的采集和处理方法

IMU和GNSS接收机的数据会主动发送到430单片机的UART接口,本文采用中断接收的方式接收数据,将每次到来的一个字节循环存储在指定的存储区;气压计需要430单片机查询式获取高度信息。因此当需求IMU或者GNSS信息的时候,需要在存储区内扫描数据,扫描依据是设备发送一帧数据的协议(帧头、帧尾、CRC等),再根据协议获取相应物理量的数值;当需要高度信息的时候,需要430单片机对气压计发送控制字获取信息。在对IMU和GNSS信息扫描时需要一个变量ptr保存有效数据的首地址在存储区内的偏移地址,为了不重复使用已用数据,需要在利用完信息后,破坏这一帧有效数据的帧头帧尾。

另外需要注意,使用循环存储数据和扫描取用这种方式,需要数据的处理速度比数据的接收速度快,否则旧数据会被新数据覆盖。

 

 

 

3.3 高度计算方法

 

高度信息的获取需要通过MS5803-02BA获取的气压信息转换得到。对这款气压计的操作,需要先在芯片内部的PROM获取C1~C6六个参数,再获取温度ADC结果D1和气压ADC结果D2,最后利用官方提供的计算公式计算得到带补偿的气压值。气压值获取的软件流程图如图6。

 

 

图6 高度计算流程图
图6 高度计算流程图

 

 

按照气压计的用户手册中提供的计算公式,最后可以计算得到一个经过温度补偿的标准气压值,单位mbar。高度信息的获取还需要将气压值经过函数关系转换。高度h和标准大气P之间有如下函数关系:

上一页  [1] [2] [3] [4] [5]  下一页


本文关键字:机器人  机器人-智能车电子知识资料 - 机器人-智能车