Radist » 15 ноя 2012, 07:48
Я тоже думаю, что это из-за питания. Моторы и тсоп находятся по разные стороны платы, но искрением моторов тсоп не засветить (это и несущая, и длина волны, и параметры огибающей - невероятно). Менять тсоп на блютуз я не хочу - я еще не расписался в собственном бессилии, да и железо переделывать не хочется. Сейчас у меня система питания такая: липолька + повышалка на mc34063. Схема контроля разряда липольки показывает, что напруга липольки проседает ниже 3,3 В (такой у меня порог, чтоб вовремя отправить на зарядку). Соответственно думаю дополнительный стабилизатор мне не поможет (но мог бы помочь при наличии двух липолек на борту). Хочу решить проблему программно. Известно, что при стоячем роботе команды приходят хорошо. Также известно, что команда может прийти в случайный момент времени. Поэтому у меня приемом команд заведуют прерывания, внешние и от таймера. Я пока придумал такой способ:
1. Модифицируем программу пульта, чтобы по нажатию кнопки он начал слать посылки непрерывно, с паузой между ними.
2. У робота есть два режима работы - прием команды и ходьба. На время ходьбы отключаем прерывания.
3. Вот робот сделал шаг и остановился, разрешил прерывания и начал принимать команды. Пусть он примет три команды, а дальше даже не мажоритирование, а чтобы все три совпали. Так он поймет, куда идти дальше.
4. Отключил прерывания, выполнил команду, встал (пауза для устаканивания напряжения питания), разрешил прерывания, получил команду. Повторить.
Пульт при этом можно не жать, а просто направлять на робота. Вечером попробую этот алгоритм.