хочу сделать что-то умеющее держать баланс или просто выравниваться при наклонах. подключил "Трёхосный акселерометр" ( http://amperka.ru/collection/imu-sensors/product/triple-axis-accelerometer ) он выдает 3 цифры: X, Y и Z. но данные слишком сильно плавают. пришлось вычислять среднее по выборкам из 1000 показаний. но эти показания все равно мне непонятны. как найти нулевую точку? есть интересные примеры устройств на данной схемке? увязал акселерометр с сервоприводом, но все равно не могу найти четкую связь наклона с действиями сервы. может лучше было купить сразу гироскоп? ( http://amperka.ru/collection/imu-sensors/product/triple-axis-gyro) но он дороже в 3 раза =(
собрана только установка для проверки акселерометра. показания выдает примерно от 150 до 450 условных единиц. фото/видео пока нет, а скетч вот такой: #include <LiquidCrystal.h> LiquidCrystal lcd(4, 5, 10, 11, 12, 13); #define SENSOR_PINx A5 #define SENSOR_PINy A4 #define SENSOR_PINz A3 void setup() { Serial.begin(9600); lcd.begin(16, 4); } void loop() { long valx = 0; long valy = 0; long valz = 0; for (int i=0; i<1000; ++i) // берем среднее по 1000 измерениям, потом при использовании нужно поделить на 1000 { valx = valx + analogRead(SENSOR_PINx); valy = valy + analogRead(SENSOR_PINy); valz = valz + analogRead(SENSOR_PINz); } Serial.println(" x="); Serial.println(valx); Serial.println(" y="); Serial.println(valy); Serial.println(" z="); Serial.println(valz); lcd.clear(); lcd.setCursor(0, 1); lcd.print (valx); lcd.setCursor(0, 2); lcd.print (valy); lcd.setCursor(0, 3); lcd.print (valz); }
Для осреднения берите не 1000 шагов, а степень двойки, например, 1024, тогда деление можно будет осуществить битовым сдвигом без ошибок округления. Обратите внимание на направление осей акселерометра. Среднее значение 512 +- погрешность. Значения, которые вы считываете - это проекция вектора g на оси акселерометра. Акселерометр работает в определенной шкале: 1.5g или 6g, среднее значение - это 0g, крайнее значение 0 или 1023 с АЦП соответствует максимальному значению рабочей шкалы.
Вам нужно совсем по другому подойти к этой теме и хорошенько её изучить. Почитайте о балансирующих роботах. Здесь нужен и гироскоп и акселерометр и обязательно фильтры Кальмана.