Radist » 13 фев 2012, 09:37
Значит задача такая: узнать от датчиков, где находится центр робота относительно центра линии (шириной 20 мм). Пляшем от датчиков (чаще всего это отражательные оптроны). Есть два способа их использования: в цифровом и аналоговом режиме. Для цифрового режима характерно использование компараторов и подстроечных резисторов (для подстройки датчиков), сигнал выходит черное/белое. Соответственно таких датчиков должно быть много, расположенных с определенным шагом (шаг 10 мм дает разрешение 5 мм). 5 датчиков дадут рабочий диапазон +-20 мм от центра. Хорошо это или плохо? Робот должен ехать по линии, срезать неспортивно (хотя ненадолго покидать линию можно), а значит много датчиков не надо, но при этом шаг отклонения будет большим, что сведет на нет все преимущества ПД регулятора. Гораздо интереснее аналоговые датчики, их и рассмотрим. Там уже не нужны компараторы и подстроечники, но нужен АЦП с несколькими входами. И АЦП должен работать достаточно быстро, поэтому не увлекайтесь с числом датчиков. В аналоговом режиме число датчиков может быть от одного и выше. Если датчик один, то он настраивается на границу линии. Половина пятна темная, половина светлая, код ацп примерно равен половине диапазона. Смещаемся - код ползет. Тут разрешение гораздо выше, нужно только успевать измерять АЦП и не терять линию. А потерять ее легко: сначала перескакиваем на другой край линии, а затем сходим с ума. Поэтому гораздо круче два аналоговых датчика, смотрящие на края линии. Результатом отклонения будет разность показаний - если ноль - мы четко по центру линии. Тут перескоков можно не бояться. Этого количества датчиков уже достаточно для нормального гонщика. Но можно поставить и больше, и подальше от пола. Тогда с каждого датчика придет свой аналоговый сигнал, совокупность которых можно интерпретировать как кадр положения линии. Эту информацию можно математически обработать (гуглим по словам "средневзвешенное, центр масс" или что-то такое), короче получить "субпиксельное разрешение", не забыв при этом отрезать шумы. Ну вот, информация от датчиков получена, осталось перевести ее в отклонение. Это легко, если знать где физически находятся датчики. Вот как-то так...