В контролере Аrduino тоже можно убирать нелинейность датчиков.
настроив таблицу приходящие с датчиков и таблицу корректировки....
Включается в rotator_features.h строчки:
Методом научных проб и ошибок практически устранил:
1. Прыжки индикации, точнее снизил дискретность до +-1гр. Подключился к точке 0-2.5в.
2. Устранил нелинейность. Пока предварительно и можно гораздо точнее, но уже результат очень хороший (было
+22градуса в точке 180 на втором круге).
Для наглядности тем, кто будет повторять:
#define AZIMUTH_CALIBRATION_FROM_ARRAY {180
,382,540,630}
#define AZIMUTH_CALIBRATION_TO_ARRAY {180,
360,540,630}
Как я понял 180, 360, 540 - это относительно 180 градусов первого круга программы.
У меня ротатор с крутит 0-360-90.
Значит 180 - это 0 на моем индикаторе.
360 -> 180
540 -> 360 или 0 - начало перехлеста.
630 -> 90 градусов на 3 круге(450 градусов вращения ротатора G450).
Могу сделать более точно, через каждые 30 градусов:
Отключить коррекцию. Записать на листок погрешности. Включить коррекцию и заполнить массив своими данными:
#define AZIMUTH_CALIBRATION_FROM_ARRAY {180
,281,382,461,540,630}
#define AZIMUTH_CALIBRATION_TO_ARRAY {180,
270,360,450,540,630}