autoCalibrateAccelerometerOffset() Почему значения Z колеблются от 0 до 1g в статическом состоянии?
Я попытался реализовать функцию autoCalibrateAccelerometerOffset()
с помощью кода ниже на Arduino Genuino 101.
В статическом тесте, без какого-либо стресса или шума, я считываю значение по трем осям.
Когда я вижу данные на последовательном мониторе или в моем файле, созданном с помощью обработки, значения ускорения Z изменяются от 1~0,99 до 0,00 g.
Я думаю, что в моем коде есть ошибка.
#include "SoftwareSerial.h"
#include "CurieIMU.h"
float sensorVals[] = {0,0,0};
void setup() {
Serial.begin(9600);
while (!Serial);
Serial.println("Inizializzazione del device...");
CurieIMU.begin();
CurieIMU.setAccelerometerRange(2);
CurieIMU.autoCalibrateAccelerometerOffset(X_AXIS,0);
CurieIMU.autoCalibrateAccelerometerOffset(Y_AXIS,0);
CurieIMU.autoCalibrateAccelerometerOffset(Z_AXIS,1);
}
void loop() {
sensorVals[0] = CurieIMU.readAccelerometerScaled(0);
sensorVals[1] = CurieIMU.readAccelerometerScaled(1);
sensorVals[2] = CurieIMU.readAccelerometerScaled(2);
Serial.print(sensorVals[0]);
Serial.print(",");
Serial.print(sensorVals[1]);
Serial.print(",");
Serial.println(sensorVals[2]);
delay(100);
}
@Andrea Ciufo, 👍-1
Обсуждение1 ответ
Если вы не подпрыгиваете, пока это происходит, то это может быть:
- Свободный провод
- Ненадежный блок питания
- Плохое заземление
- Датчик неисправности
- Странное магнитное поле/поток
Проверьте проводку, убедитесь, что все соединения надежны и т. д. Я уверен, вы это уже сделали.
Я понятия не имею, как проверить блок питания, но если у вас есть другой, вы можете подключить его. Также рассмотрите возможность сглаживания напряжения питания с помощью развязывающих конденсаторов (?)
Плохое заземление, всякие странные [штуки] случаются, когда вы не заземлили все как следует. Разные источники питания должны иметь общие заземления, но я подозреваю, что это здесь не применимо.
Неисправный датчик — опять же, если у вас нет дубликата, вы можете об этом не узнать.
Странный поток. Я думаю, что датчик — это магнитный датчик, и, возможно, естественные вихри и потоки магнитного потока сговорились против вас. Уберите датчик подальше от источников питания, электрических вещей и, в частности, всего, что вы взламываете. Также поверните датчик на 90 градусов и посмотрите, происходит ли это (с радиочастотами он поляризует поля по-другому, а школа была давно, и я не помню, работает ли это также с магнитными полями)
- Genuino 101 - Не удается загрузить скетч - Ошибка тайм-аута
- Что делает Arduino, если последовательное соединение закрыто на другом конце?
- Попытка использовать решение для обнаружения кранов с помощью ADXL345 с Arduino
- Можно ли измерить скорость акселерометром? Насколько точно?
- В чем разница между акселерометром, гироскопом и датчиком магнитометра?
- OVF в последовательном мониторе вместо данных
- Проблема с датчиком температуры и влажности DHT11
- Получение ошибки ets 8 января 2013,rst cause:4,boot mode(1,6) wdt reset
Что произойдет, если добавить CurieIMU.autoCalibrateGyroOffset(); сразу после CurieIMU.begin();?, @VE7JRO
Знаете ли вы, что ось Z у вас ориентирована так, как и ожидалось?, @Dave X
Я голосую за закрытие этого старого заброшенного вопроса, поскольку информация, которая сделает его доступным для ответа, так и не была предоставлена. Очевидный способ отладки — распечатать как необработанные, так и откалиброванные значения. Это покажет, является ли это ошибкой чтения или более вероятным случаем калибровки, «калибрующей» гравитацию., @Chris Stratton
Если он калибрует гравитацию, почему он переключается между значениями? Мне было бы интересно увидеть его откалиброванным, а затем слегка наклоненным по X/Y, чтобы увидеть, есть ли в строках с "Z: 0" также X/Y: 0 (они не должны), и если это так, то, скорее всего, проблема с датчиком или слишком быстрым считыванием с датчика, или что-то в этом роде. Я просто не понимаю, как калибровка Z переключается между 0 и 1 согласно образцу, @AndrewP
@SDsolar, потому что это специфическая функция библиотеки CURIE IMU, совместимая только с Arduino и Genuino 101., @Andrea Ciufo
@ChrisStratton проблема, по моему мнению, связана с функцией официальной библиотеки, а не с показаниями датчика, поскольку без применения функции калибровки в тех же условиях и без возмущений показания датчика не имеют никаких колебательных значений, @Andrea Ciufo