Купил старый DVD привод за 100руб(1.5$), разобрал, и на его базе сделал более точный стенд для калибровки нелинейности:

img

img


Драйвер шагового двигателя A4988 использовал готовый покупной(150руб), только отрегулировал силу тока подстроечным резистором, чтобы моторчик не грелся и шаги не пропускал.

img

img


Моторчик может двигаться на заданное количество шагов в одну и другую сторону, с разной заданной скоростью. Вот какой график в итоге получился:

img


Видно, что на графике расстояние Y1 не равно расстоянию Y5, а должно. Потомучто в реальности и там и там моторчик двигался на 5 шагов. Смысл линеаризации - применить к этому графику такой алгоритм, чтобы он выравнял расстояния Y1,Y2,Y3,Y4,Y5 между собой, так же A1-A5 между собой.

img


Серый, белый, и черный цвета светоотражающей поверхности:

img


График так же меняется от светоотражающей способности поверхности:

img


Так движется тестовый стенд, скорость видео увеличена в 4 раза:

img


Графики с увеличением:

img


Видно что после применения Hi-Pass фильтра, который пропускает все что выше 2Гц, различия в значении амплитуд достаточно большие, поэтому нужна линеаризация:

img

img