Купил старый DVD привод за 100руб(1.5$), разобрал, и на его базе сделал более точный стенд для калибровки нелинейности:
Драйвер шагового двигателя A4988 использовал готовый покупной(150руб), только отрегулировал силу тока подстроечным резистором, чтобы моторчик не грелся и шаги не пропускал.
Моторчик может двигаться на заданное количество шагов в одну и другую сторону, с разной заданной скоростью. Вот какой график в итоге получился:
Видно, что на графике расстояние Y1 не равно расстоянию Y5, а должно. Потомучто в реальности и там и там моторчик двигался на 5 шагов. Смысл линеаризации - применить к этому графику такой алгоритм, чтобы он выравнял расстояния Y1,Y2,Y3,Y4,Y5 между собой, так же A1-A5 между собой.
Серый, белый, и черный цвета светоотражающей поверхности:
График так же меняется от светоотражающей способности поверхности:
Так движется тестовый стенд, скорость видео увеличена в 4 раза:
Графики с увеличением:
Видно что после применения Hi-Pass фильтра, который пропускает все что выше 2Гц, различия в значении амплитуд достаточно большие, поэтому нужна линеаризация: