Трехосевой геомагнитный датчик QMC5883 (компас)
Во-первых, эта процедура реализует функцию
С помощью модуля трехосного геомагнитного датчика QMC5883 измерьте геомагнитную напряженность и угол курса (азимут) по трем осям XYZ и распечатайте выходные данные на терминале отладки последовательного порта компьютера с помощью функции печати().
2. Основные понятия
1. Геомагнитный датчик
2. Геомагнитное полеГеомагнитное поле относится к естественному магнитному явлению, существующему внутри Земли. Землю можно представить как магнитный диполь с одним полюсом, расположенным вблизи географического Северного полюса, а другим полюсом, расположенным вблизи географического Южного полюса. Напряженность геомагнитного поля составляет около 0,5-0,6 Гаусса (Гаусса).Диапазон измерения геомагнитного поля, настроенный в датчике QMC5883, составляет 2G или 8G, что является упомянутым здесь 2Gauss или 8Gauss.
3. Описание конфигурации параметров датчика
Мы настроили датчик QMC5883 на ODR=100Hz по умолчанию (выдается до 100 наборов результатов измерений в секунду), OSR=512 (самая сильная защита от помех, но чуть более высокое энергопотребление). Кроме того, мы можем настроить диапазон измерения датчика в трех направлениях оси XYZ в функции LIB_QMC5883Config() в соответствии с вашими потребностями: -2G ~ 2G или -8G ~ 8G. Независимо от того, какая из двух конфигураций выбрана, полная шкала выходных значений в трех направлениях оси XYZ датчика составляет -32768 ~ 32767 (то есть при получении измеренного значения оси XYZ датчика, вам необходимо настроить 2G в соответствии с вашей конфигурацией.Это все еще полная шкала 8G, и можно выполнить простое преобразование коэффициента). Точность и чувствительность выше при настройке для диапазона 2G и шире, но немного менее точны при настройке для диапазона 8G.
4. Схема подключения
6. Полный код
--配置USB以虚拟串口模式工作,这样调用print()函数就会在电脑串口终端打印输出
LIB_UsbConfig("CDC")
--设置QMC5883三轴磁场强度传感器占用SCL0和SDA0引脚,并设置三轴磁场的测量范围为-2G ~ +2G
LIB_QMC5883Config("IIC0", "RNG_2G")
--开始大循环
while(GC(1) == true)
do
--每隔0.2秒查询传感器是否出数
LIB_DelayMs(200)
flag, X, Y, Z, azimuth = LIB_QMC5883GetResult()
if flag == 1 then
--输出X Y Z三轴的原始值以及航向角,航向角去掉小数点部分
print(string.format("X:%d,Y:%d,Z:%d,Azimuth:%.0f\r\n", X, Y, Z, azimuth))
end
end
Семь, результаты выполнения кода
Для получения более подробной информации посетите сайт Shineblink.comСсылка на официальный сайт