Потребление от 12v: 33 мА при выкл. двигателях, при макс. скорости без нагрузки (колеса не касаются пола) = 103 мА вперед, 115 мА назад. При одном заклиненном колесе 300 мА, при обоих заклиненных колесах = 500 мА.
L293DN чуть теплая. Будет греться приклею радиатор. Да, частоту ШИМ взял пока 500 Гц. (период 2 мс). Померяю скорость нарастания тока в двигателях определю более оптимальную (За самый короткий импульс ток в двигателе должен успеть достигнуть максимума).
Максимальная скорость движения по полу сейчас 15-20 см/сек. Больше мне пока ни к чему, слишком быстро будет комнату пробегать. Диаметр колес = 80мм (резиновые “бублики” вроде от какой-то сантехники, полно на базаре).
Честно говоря, я был сильно удивлен когда нагуглил характеристики движка ДПМ. Почти все они, несмотря на весьма брутальную конструкцию, жрут довольно мало. Так что даже L293 их спокойно тянет. При этом они отличаются вполне сносным моментом и оборотами.
Мыслим похоже, даже более чем. У меня сходная архитектура. Только я SPI не выводил. UART да i2c и преобразовние на RS232 повесил на кабель. А так почти то же самое, только контроллер AVR, а не PIC
Схема |
Снизу |
Сверху |
Ну и, конечно, разьем для подключения этой батареи. Для ускорения “оживления”, а также чтобы пощупать, что реально получилось, решил попробовать МикроПаскаль. На днях набросал несколько строк программки для инициализации ШИМ, UART, и простенький главный цикл, в котором проверяется состояние линий порта B, кнопки на которых пока задают команды “Вперед”, “Назад”, “Разворот на месте влево”, “Разворот на месте вправо”, “Скорость больше”, “Скорость меньше”. Отсутствие команд переводит в состояние “Стоп”.
При изменении коэффициента ШИМ в канал RS232 выдаю “#” и два байта коэффициенты левого и правого ШИМ. Пока для начала оба меняю одинаково. Для того, чтобы задавать одним байтом значение ШИМ, ограничился интервалом 0-255. Подумывал даже сделать всего 16 ступенек, тогда бы одним байтом можно было бы хранить значения обоих ШИМ (в младшей и старшей тетрадах), но решил, что пока экономить рано.
При проверке кнопок сделал защиту от дребезга по 1мсек. Для замедления работы главного цикла ввел в него задержку 50 мсек. В дальнейшем эти процедуры опроса линий порта B и управление ШИМом посажу на многозадачное прерывание от таймера, которое будет обслуживать часы, календарь, и с десяток программных таймеров от милисекунд до секунд.
Еще один таймер, имеющий выход на С0, заведен у меня на пищалку, через сьемную перемычку, конденсатор и ограничительный резистор.
Сегодня зашил программку в микросхему, собрал все в кучку, включил все работает, как и должно. (Естественно, только то, что уже написано в программе). Движки по командам крутятся вперед, назад, в разные стороны, ускоряют и замедляют вращение.При изменении параметров ШИМ вижу новые значения в компьютере (через “Гипертерминал”, на 9600 бод). Просмотрел все сигналы осциллографом все, как и должно быть.
Даже не интересно. Нет, чтобы помучаться, понастраивать… К сожалению, уже лет 20 лишен такого удовольствия. Обычно все работает сразу. Сказывается наличие опыта… Ничего, когда понавешаю датчиков, всех тех заморочек, что запланировал, вот тогда и начнется настоящая работа над машинным интеллектом. Будет труднее, но интересней.
Я вот сейчас тоже хочу заказать парочку сонаров. Потом разведу плату датчиков и будет веселуха 🙂 Ну и попутно отладочный модуль делаю.
Программа, хоть и на Паскале, заняла пока 583 байта (14%) ПЗУ, и 32 байта (18%) Озу. Если поставить вместо 873 ->, 876, у него памяти в 2 раза больше, остальное то же самое. Листинг программы, (не считая комментариев) = 110 строк. Скомпилированный в ассемблерный раз в 5 больше. (с комментариями асс. листинг = 930 строк, Паскалевский 180). HEX код на эмуляторе (PIC Simulator IDE v6.65) пролетел без проблем.
Исходник прошивки на паскале.
Начало положено, продолжение следует…
В нашем полку терминаторов прибыло? ,)
PICПечатная платаРоботЭлектропривод
Оцените статью!