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

SH3001六轴 学习1

学习步骤

1.SH3001六轴加速度传感器

2.

气压计测量高度;

磁力计: 无人机通常使用磁力计来确定航向,结合加速度计和陀螺仪的数据,实现精确的飞行控制和导航

六轴电信号经过:放大 解调 滤波 得到ADC值输出到寄存器里面

SH3001扩展有从I2C接口,可以通过从I2C接口控制磁力计ST480MC

3.SH3001引脚

4.电源模式设置,厂家只给我们提供了函数接口,没有提供寄存器说明,所以我们只要操作接口就行

SH3001寄存器

一:面对模式芯片考虑第一点:

1.时序

2,器件固定值读取(例如器件ID,通过I2C读取)XXXX_DATA_

加速度计和陀螺仪的x,y,z的都由2个寄存器存储,低八位放在XXXX_XDATA_L里面,高八位放在XXXX_XDATA_H里面      所以加起来是16位,最高位为+-,所以将电信号转换为AD值是-32677~32677

芯片默认ID   0x61

温度传感器使能第七位, 4:5位为11设置为63HZ

室温

SENB:直接连接VCC,就是直接选择I2C协议,不选择SPI协议

3,要使数据更加精确,去零飘(芯片厂家做了),通过厂家提供的函数接口,读取补偿系数,就可以得到相对精确的值,

4.设备地址 = 固定位+硬件选择位(这里连接地为0) + 数据传输方向位

0b 0110110(0x36)

写0 读1

写操作地址:01101100   0x6C      读操作地址:01101101  0X6D

5.IIC单字节写入,IIC多字节写入

1.读取N字节函数

读取最后一个数发送通过三目运算符发送0,

2.写N字节函数

6.SH3001驱动步骤

1.调用iic_init()进行IIC接口初始化,myiic.c里面函数接口里面实现的

7,器件原理图

可以在MSDA,MSCL引出连接从设备 接磁力计ST480MC,组成9轴

SD0连接地,决定器件地址

8.源码解读

第二个

器件地址

误差补偿系数结构体

带有补偿系数的去读取六轴数据 compen

误差补偿结构体和输出临时数据的临时变量

与PPT上不同的是会判断从机是否有应答信号,从机没有信号,就主机发送stop,返回FALSE;

SH3001初始化       读取器件ID,读取器件地址对应的寄存器,读取出错返回错误

重置内部模块   官方写好的接口,可以直接调用

读取对应版本  配置寄存器对应相对应的值

驱动启动, ADC的复位   CVA的复位都是厂家写好的,直接调用函数接口就好了

重置内部接口后,在初始化函数中设置

ACC加速度配置, GYRO陀螺仪配置, 温度配置

选择电源模式,官方只提供了接口   

读取补偿系数,官方也给了接口

读取温度: 读取室温,读取实时温度,做运算,返回温度值

读取SH3001陀螺仪和加速度的原始数据函数        AD原始数据,没有做补偿

做过补偿的读取六轴数据的函数        官方自己做的,官方给的接口

加速度补偿

陀螺仪补偿

main函数

sh3001_init()用lcd检测存在吗

补偿后的数据显示

补偿后的接口,这个得到的值是AD值,就是实际值

芯片X轴和Y轴

main.c中

匿名飞控上位机协议

用到STATUS和SENSOR这两个帧


http://www.kler.cn/a/388523.html

相关文章:

  • 【入门】最小数
  • Next.js优化教程:优化脚本加载
  • Redis中pipeline(管道)详解
  • 乌龟咬人,小意外中的大警示
  • 如何防御ARP欺骗 保护IP安全
  • 基于STM32的手势电视机遥控器设计
  • 【Vue】-组件开发
  • 【Vue】Vue3.0(十八)Vue 3.0中‘props‘一种使用频率最高的通信方式(全面解析)
  • MML 中使用 libevent +std::async unix socket domain 进程间通信
  • RT-Thread 配置工具
  • 英国留学论文写作中复合句式基础知识讲解
  • 算法复杂度
  • 【SpringMVC】记录一次Bug——mvc:resources设置静态资源不过滤导致WEB-INF下的资源无法访问
  • W3C HTML 活动
  • springboot使用aop防御用户重复请求
  • Centos Linux 7 搭建邮件服务器(postfix + dovecot)
  • cv2.threshold利用OSTU方法分割图像的前景和背景
  • 从文本到图像:AIGC 如何改变内容生产的未来
  • 羲和数据集收集器1.0
  • Leetcode 3347. Maximum Frequency of an Element After Performing Operations II
  • 【k8s】ClusterIP能http访问,但是不能ping 的原因
  • 「C/C++」C/C++STL篇 之 数组赋值给std::vector多种方法
  • Ubuntu 的 ROS 2 操作系统安装与测试
  • 基于Diodes全新的140瓦PD3.1超高功率密度GaN充电器解决方案
  • 海量日志收集ELK实战(docker部署ELK)从日志中挖取宝贵数据
  • 云防护单节点2T抗攻击能力意味着什么?