Теперь в нашем онлайн-магазине доступна уникальная книга «BEAM-робототехника. От азов до создания практических устройств», идеально подходящая как для кружков робототехники, так и для самообучения дома. Вы можете приобрести её по привлекательной цене в 699 рублей. Дополнительная информация о книге доступна на нашем сайте. Также в ассортименте нашего онлайн-магазина представлены готовые наборы для сборки роботов, с помощью которых ваш ребенок сможет легко собрать своего первого робота, следуя нашим подробным инструкциям. Перейти в магазин


[ Раскрыть online-чат / Закрыть ] · [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: nightmare, Huntswarrior, Aleks_Crow, {{TNT}}  
Форум » Проекты по робототехнике » Групповые проекты » Робот ASURO на микроконтроллере AVR ATmega8 (Инструкция и программирование робота своими руками)
Робот ASURO на микроконтроллере AVR ATmega8
Отправлено 07.10.2012 - 15:591
Администраторы
3417 сообщений
Мужчина




Есть такой робототехнический набор "ASURO robot KIT" - такой набор для сборки робота. Поставляется в виде набора для сборки и пайки своими руками. Размеры робота сравнительно не большие, сколько точно не скажу ищите в описании. Мне лень хотел сказать замерять, но вот как на зло я знаю где лежит линейка и без особых телодвижений до нее можно дотянуться... Так и быть - 10.5 х 12.5 (см).

Все это умещается на плате которую вам предстоит спаять и установить на нее детали. Все детали, кстати, выполнены в DIP корпусе и с ним подобным, что облегчает жизнь начинающему робототехнику. Паять не сложно будет. Детали расположены очень кучно и при пайке соблюдайте аккуратность и внимательно устанавливайте на свои места детали. Иначе перепаивать а это оочень тяжко для таких плат, так как у меня обычно детали припаиваются намертво =).

Мозговым центром бота является микроконтроллер фирмы Atmel - ATmega8L, где L - означает что микросхема из рода мало потребляющих и мало-требующих для работы. Обычно запускаются от 3-5 Вольт. Этот МК управляет 6 тактильными датчиками (датчиками касания), установленными в передней части бота, 4 опто-парами которые установлены рядом с редуктором для подсчета количества оборотов колеса. А также датчиком линии состоящим из 2х фототранзисторов и одним светодиодом между ними.

Редуктор на этом роботе, мягко говоря - некудышнейший ! Я просто не могу Вам сказать все что о нем думаю, но он просто некудышнейший для настоящих соревнований по робототехнике да и вообще для современного человека, робототехника. Он очень м-е-е-е-едленный, очень слабенький, руками слегка притормаживаешь и он дохнет от напряги, пищит. Сразу говорю - редуктор меняйте ! Иначе он не нужен.... Моторами управляет Н-мост на транзисторах C32740 и, кажется микросхемой CD4081BD.

Напряжение робот просит в количестве 4 батареек типо-размера ААА по 1.5 (1.2) Вольт каждая.



Описание от производителя:


Документация на Английском: http://www.electronshik.ru/pdf/pdf/a/asuro_robot_kits.pdf


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
34
Отправлено 07.10.2012 - 16:432
Начальная группа
1798 сообщений
Мужчина
Кто хочет посмотреть схему робота, держите)
Доступно только для пользователей


2687506.jpg (92.3 Kb)
Профиль Личное сообщение Дом. страница icq Skype
38
Отправлено 07.10.2012 - 17:293
Администраторы
3417 сообщений
Мужчина
Ага я бы ее приложил... Только что тут, что в мануале - качеством не блещит. lie


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
34
Отправлено 07.10.2012 - 21:154
Администраторы
3417 сообщений
Мужчина


6531636.jpg (506.0 Kb) · 4710002.jpg (520.9 Kb)
Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
34
Отправлено 07.10.2012 - 22:145
Участник
142 сообщений
Мужчина
Чем родной привод не угодил?)


Профиль Личное сообщение Дом. страница icq Skype
20
Отправлено 07.10.2012 - 22:256
Администраторы
3417 сообщений
Мужчина
Медленный, и кривой. Лучше поставить такие движки как у твоего и радоваться.


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
34
Отправлено 07.10.2012 - 22:587
Участник
142 сообщений
Мужчина
Ну, может быть.


Профиль Личное сообщение Дом. страница icq Skype
20
Отправлено 08.10.2012 - 12:378
Администраторы
3417 сообщений
Мужчина
Продолжим...
Будем считать что робот у вас спаен и собран. Батарейки новые и при включени он запускает тестовую прошивку которая проверяет все агрегаты типа моторов, датчиков, сенсоров. Вообщем все ок у вас.

ПРОГРАММИРОВАНИЕ:

1. Первым делом нужно установить пакет программ которые идут на диске с роботом, а это


  • WinAVR или AVRStudio4. Это компиляторы С\С++ спомощью которых мы будем составлять и компилировать инструкцию поведения робота - .hex файл, который скушает микроконтроллер. В нашем случае будет использоваться первый вариант - WinAVR
  • Flash - загрузчик нашего .hex кода.
  • Adobe Reader по идее есть у каждого, но если хотите можете его скачать тоже для чтения мануала на английском.


НАСТРАИВАЕМ программу.

Запускаем WINAVR - Programmers Notepad. Нажимаем вкладку Tools -> Options -> Tools(именно tools a не project tools). Откроется окошко подписанное как "Sheme". В этом окне выбираем нашу схему - C\C++. Выбрав схему нажимаем Add. Сейчас нужно будет добавить батник (.bat) который содержит в себе всего одну строку комманду или "make all" или "clean all" confused В открывшемся окне "Свойства: New Tool" набираем имя(name): make asuro. В поле комманда указываем файл test-all.bat, который находится на диске в разделе \ASURO_src\FirstTry\Test-all.bat.

ВНИМАНИЕ! Скопируйте папку FistTry c диска на свой компьютер на диск С прямо в корень. Т.е. путь к папке должен быть следующим C:\FirstTry\. Это связанно с тем что компилятор не сможет перезаписать файлы находящиеся на диске что идет в комплекте и когда вы бы попытались запустить коммануду make asuro(позже узнаете как), то компилятор бы не ругаясь сделал все на ок, но на самом деле файлы не изменятся совершенно. И да, компилятор не умеет работать с русскими путями. Например если у вас файл находится по такому пути C:\FirstTry\Вася Пупкин\ . Будьте внимательными.

И так, вы указали путь к файлу test-all.bat. Идем дальше. В поле Folder указываем путь к папке в котором находится этот файл test-all.bat. Т.е. получается так: C:\FirstTry\. Указали. Теперь закроем окно нажав кнопку "ОК". Теперь у нас появился список: [WinAVR] Make All ... make.exe ... all
Снова нажимаем Add. В поле Name пишем clean asuro. В поле Command указываем файл Test-clean.bat. Файл находится тамже где и Test-all.bat. В поле Folder указываем папку где находится файл. Нажимаем "Ок". Все на этом пока наши настройки закончены !


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
34
Отправлено 08.10.2012 - 12:509
Администраторы
3417 сообщений
Мужчина
ПИШЕМ ПРОГРАММУ

В скопированной папке FistTry которая у вас находится по адресу C:\FistTry\ найдите файлик test.c - это файл программы на языке Си. Можете открыть его блокнотом и вы увидете в нем следующий код:

Quote
#include "asuro.h"

int main(void)
{
Init();

while(1);
return 0;
}


Откройте окно программы WinAVR - Notepad programmer. Нажмите File -> Open. Найдите папку FirstTry и в ней файлик test.c. Выберите его и нажмите Открыть. Откроется точно тот же код что указан выше, правда теперь он немного подсвечен.

Разберем наш код.
1. #include "asuro.h" - библиотека с настроенными заранее функциями для корректной работы робота и его микроконтроллера ATmega8.
2. Int main(void) - начало нашей программы(функции)
3. Int(); - инициализация. В некоторых случаях не требуется, но укажем всеравно.
4. While(1) - бесконечный цикл, проверяющий соответствие true\false (правда\ложь)
4. Return(0) - возращение в начало функции

Важный момент - " ; " точка с запятой (!) должна присутствовать в конце каждой строки кода, исключения различные условия.

После того как мы разобрали строки попробуем его скомпелировать. Для этого нажимаем вкладку меню Tools -> make asuro. Нажав на make asuro мы запустим команду make all которая находится в файлике Test-all.bat. Как только мы запустили компиляцию в низу в окне Output начали мелькать строки состояния, ошибок, путей и прочих информационных данных, часть из которых нам пока что не нужна, но кое что всегда должно быть во внимании. В саамом низу этих строк будет надпись:

Quote
Errors: none
--------------- end ------------------
> Process Exit Code: 0
> Tame Taken: 00:01


Что это значит ? Первая строка говорит о том, что в ходе компилирования не обнаружено каких либо ошибок сиснтаксиса и почего. Вторая строка просто так. Третья строка говорит что ошибок (точек выхода\сбоя\ошибки) не найдено. Четвертая строка показывает затраченное время на компиляцию.

ВНИМАНИЕ! Перед каждой компиляцией обязательно сохраняйтесь ! Иначе, когда вы вносите изменения в коде, в самой программе WinAVR NP, в тесте вашей программы, при запуске на компиляцию он вам не покажет что есть ошибка а вы, радостные, побежите заливать прошивку в мк и потом ломать голову почему ничего не изменилось )

Для проверки увидет ли он ошибку сделайте тест:
1. открыв файл программы test.c и запустите на компиляцию. Вы увидете что ошибок 0.
2. теперь открытый файл test.c на любой из строчек удалите ; После чего также запустите на компиляцию. Что в итоге ? Ошибок, опять же, он не выдал.
Видимо компиляция проихсодит не из окна с текстом программы а именно от файла test.c где-то из папки...


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
34
Администраторы
3417 сообщений
Мужчина
И так. Теперь мы знаем как установить, настроить, скомпилировать и проверить нашу программу. Возникает закономерный вопрос - что нужно сделать чтобы робот начал выполнять нашу программу (инструкцию) сам ?

Для этого нужно нашу программу запихать в его мозги, - микроконтроллер. Причем в память его не энергозависимую. А то если запишем в энергозависимую, то при его выключении все потеряется. Для тех кого заинтересовало какие есть типы памяти - ищите в гугле wink

Помните мы было дело создавали папку FirstTry ? Вот сейчас идем в эту папку и находим там файлик test.hex. Это тот самый файл который умеет читать МК. Если хотите, можете его открыть в блокноте и узнаете что он из себя представляет =)

ПРОШИВАЕМ МИКРОКОНТРОЛЛЕР

Запускаем программу Flash, которую вы должны были скачать с диска с роботом. Если еще этого не сделали -самое время. Запустили. Откроется маленькое окошко в котором Вам предстоит выбрать:

а) COM-порт

COM-порт - это мост, который связует программку Flash и наш программатор, который вы подключили в USB-порт. На самом деле COM - тот же самый USB, только называется по другому. Как узнать какой COM порт нам нужен ? Когда вы подключите программатор в юсб, если у вас стоит Windows 7, то в большинстве случаев драйвера на него найдутся сами, и установятся автоматически. Но бывают случаи, в большинстве, приходится все делать вручную.

б) Обзор ...
- Тут мы находим файл с расширением .HEX. В нашей папке выбираем файл test.hex

в) Programm ...
Нажимая эту кнопку программатор начинает запрашивать у МК состояние - готов ли МК к прошивке или нет. Включен он или нет ? Будьте готовы включить робота сразу после нажатия на эту кнопку, так как если робот будет ывключен - прграмма будет писать TameOut - время ожидания вышло.

УСТАНАВЛИВАЕМ ДРАЙВЕР ДЛЯ ПРОГРАММАТОРА

1. Мой компьютер -> Свойства -> Управление. В открывшемся окне нажимаем "Диспетчер устройств". В диспетчере находим "Неизвестное устройство". Если с вашей системой ранее было все ОК, то неизвестных устройств должно быть всего 1 - наш программатор.
2. Нажимаем правой кнопкой по этому неизвестному -> Обновить драйвер -> Выполнить поиск драйверов на этом компьютере -> Выбрать драйвер из списка уже установленных -> В списке (принтеры, мониторы, клавиатуры и прочей фигне) тыкаете на первое попавшееся устройство, например "Принтеры" -> В открывшемся окошке жмем "Установить с диска" -> Заходим в папку, точнее на диск что идет в комплекте с роботом. На диске идем в папку "USB-driver", тыкаем по первому попавшемуся INF файлу. Жмет открыть, ОК. Появится строка типа "USB Serial converter". Нажимаете на эту строку, -> Далее -> Да.
3. Установка драйвера завершена.

Можете проверить наличие нашего программатора. Заходим в Диспетчер устройств, находим вкладку "Порты(COM и USB)". Там будет либо название программатора, либо название как у меня: USB Serial port (COM1). Так вот, к чему я все подвожу. Вот эта надпись в скобках - (COM1) - и есть тот порт, который вам нужно указать в программе Flash. У кого-то может быть другой порт, например COM21. Так что смотрите каждый персонально.


НАЧИНАЕМ ПРОШИВАТЬ МИКРОКОНТРОЛЛЕР


Будем считать что у вас настроен программатор, робот с заряженными батарейками, прошивка готова в виде файла test.hex.

Выполняем простые телодвижения:
1. В программе Flash нажимаем Programm.
2. Берем тут же робота и включаем его.
3. Глаз робота - TSOP - ИК датчик, спомощью которого он видит данные от программатора. Черный такой, с 3 ножками. Его направьте на ваш программатор чтобы между роботом и программатором небыло предметов. Расстояние должно быть около 20 см, больше не рекомендую.

ВНИМАНИЕ! Не стоит пытаться прошить робота рядом с лампой дневного света, или рядом с монитором с электронно лучевой трубкой. Мало ли, но от них идут всяческие помехи. Если помехи есть, то в окне программы Flash будут появляться красные буквы "t "- timeout. Если они появились, ну, потрясите роботом перед программатором, должно помочь )

Если все идет хорошо, то там будет писаться flashed, flashed, tttflashed, tcccflashed. Главное что flashed - записано, сохранено.


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
34
Администраторы
3417 сообщений
Мужчина
И так. После картины "шамана с бубном", трясущего роботом над программатором, ну, по крайней меря - я тряс ) Вы кое как, возможно и не с первого раза, но всеже прошили МК на 100%. Теперь можно выключить питание робота, так как он будет весеть так далее, ждать новые команды от программатора.

Включите робота. Через 5 секунд ожидания робот начнет выполнять программу. Что он начнет делать ? Ответ прост - ничего ! =) Мы не указывали каких либо действий - просто программа типа START-END.

ПРОГРАММА "МИГАНИЕ СВЕТОДИОДОМ" - первая программа

На нашем роботе 20 объектов, которыми мы можем в полной мере управлять. Начнем с самого простого - светодиоды. У нас их 7 штук, 3 из которых ИК(инфрокрасного диапазона), остальные обычные.

Разберем как они идентифицируются. Так как у нас есть asuro.h - в нем содержаться все дефайны, функции, с которыми мы работаем в основной программе. Дефайны(defain) - заменяет одно на другое. Например "Вася Пупкин Пупкович" "Вася". Вместо того, чтобы нам в программе писать полное Вася Пупкин Пупкович... мы напишем просто Вася. Нам проще, а программе всеравно, так как мы заранее указали что Вася содержит в себе полное ФИО.

Также в нашем случае, производитель заранее попарился и понапридумывал различных функций, упрощающих жизнь программисту. В место того чтобы писать и настраивать порты на Запись\Чтение - Ввод\Вывод, мы просто напишем LED и наш светодиод включится. Возникает вопрос, LED'ов то у нас дофига, как именно тот что нужен нам включить ? Ответ скрывается в мануале... Но я его тут процитирую:

Начнем с индикатора питания. Он у нас сдвоенный, имеет два цвета - красный, зеленый, желтый(если горят и тот и тот).
Команда для включения красного цвета: StatusLED(RED);
- как видно, тут указан статус светодиода: RED или GREEN

Quote
#include “asuro.h”

int main(void)
{
Init();
StatusLED(RED);
while(1);
return 0;
}


Компилируем. Tools -> Make asuro -> Проверяем на ошибки. Если ошибок нет... Надеюсь вы не забыли что нужно было сохраниться перед компиляцией ? Быстренько сохраняем и нажимаем компелировать снова... Если ошибок нет, то запускаем программу Flash, выбираем все тот же COM-порт и тот же test.hex файл. Нажимаем Programm ... Включаем робота и шаманим с роботом над программатором.

Ок. Прошивка на месте. Перезапускаем робота. Сначала как всегда ожидание в 5 секунд, и после чего загорается красным цветом светодиод. Готово - как говорят программисты - It's Work !

Сообственно вот сейчас мы запустим нашу мигалочку в работу. Будем использовать вечный цикл, чтобы программа постоянно крутилась по кругу.
Напишем программу:

Code
#include "asuro.h"

int main(void)
{
Init();
while(1)
{
unsingned int i;
StatusLED(GREEN);
for (i = 0; i < 842; i ++) Sleep(0xFF);
StatusLED(RED);
for (i = 0; i < 842; i ++) Sleep(0xFF);
}

}


Разберем код: Используем 2 вида цвета - зеленый и красный. Делаем задержку в виде счетчика FOR, в котором мы объявим переменную i равную 0, и значение, до которого эта переменная будет увеличиваться, - до 842. Команда i ++ означает, что к i будет прибавляться цифра 1. Т.е. мат. действие можно записать разными способами: i+=1; i++; i=i+1;
Как только i будет равно 842, счетчик запустит команду Sleep(). Эта команда активирует паузу. Как рассчитать паузу ? Ответ в этой формуле: (0.003s/1)/72kHz=216 Это при условии если нам нужна задержка в 3 миллисекунды.
Итог: мигание светодиода то зеленый то красный.

Для тех кто хочет зажечь другие светодиоды, вот другие команды:
1. FrontLED(ON); - светодиод который предназначен для поиска линии
2. BackLED(OFF,ON); - два светодиода расположенные рядом с моторами

Инфрокарасные светодиоды включаются чуть по другому, но об этом позже wink


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
34
Администраторы
3417 сообщений
Мужчина
Кстати по поводу дефайнов, ниже пример того как их правильно указывать:

Quote
#define NAME replacement_text


DEFINE ПРОСТОЙ НАГЛЯДНЫЙ ПРАКТИЧЕСКИЙ ПРИМЕР

Quote
#include “asuro.h”
#define STARTINGVALUE 33

int main(void)
{
int i;
i= STARTINGVALUE; // теперь переменная i равна 33
return 0;
}


Разберем пример: мы задали переменную i типа int (int - Integer - Целое число). До начала программы, в "хедере" (шапке, в самоом верху), мы задаем замену - число 33 мы заменяем на целое слово STARTINGVALUE. По умолчанию переменная i = 0. Но в программе мы нашу переменную приравниваем (=\==) к слову STARTINGVALUE, которое в свою очередь просто заменяется цифрой 33.

В будущем такой заменой можно заменить целую кучу строк кода ! inverted


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
34
Администраторы
3417 сообщений
Мужчина
РАБОТА С УСЛОВИЯМИ IF ELSE

Эти команды всегда используются для создания различного рода событий, которые происходят и выполняются в зависимости от ситуации. Как движение автомобилей на перекрестке с участием светофора - ЕСЛИ (IF) горит красный (StatusLED(RED), то { выполняется одно действие }, если нет, т.е. что-нибудь еще (ELSE), то { выполняется другое действие }.

Как это выглядит в программе:

Quote
if ( Ваше условие)
{
Если условие совпадает, т.е. оно правда (true), выполняется эта строка ;
}
else
{
Если условие не совпадает, т.е. оно не правда (false), выполняется эта строка ;
}


Какими бывают условия:
== что-то равно чему-то
!= что-то не равно чему-тоl
< что-то меньше чего-то
> что-то больше чего-то
<= что-то меньше или равно чему-то
>= что-то больше или равно чему-то

Пример: (A > B), (A <= cool и так далее...

Давайте разберем более наглядный пример с использованием все тех же светодиодов:

Quote
#include “asuro.h”
int main(void) {
while (1) {
if (PollSwitch()>0) {StatusLED(RED);}
else {StatusLED(GREEN);}
}
}


Скомпилируйте и залейте этот код в микроконтроллер. Готово ? Тогда включите робота. Что начало происходить ?
Нет, выключать и включать по десять раз, думая что что-то не так, не стоит. В идеале у вас должен загореться зеленый светодиод, и больше никаких действий не будет совершаться, пока...

Вот тут то и начинает работать наше условие "ПОКА".

Что такое функция PollSwitch() ?

Объясняю. Эта функция отвечает за опрос наших контактных датчиков, которых у нас аж 6 штук. Каждый датчик обзывается как К1, К2, ... ,К6.
В нашей программе мы делаем условие:

Quote
ЕСЛИ хоть 1 датчик касания нажат, ТО включаем зеленый светодиод, ЕСЛИ нет, то включаем красный светодиод


Теперь снова включите робота и тут же нажмите и держите любой датчик касания. Светодиод поменяет свой цвет. Ура ! Работает !


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
34
Администраторы
3417 сообщений
Мужчина
Quote
Занятная вчера с роботом ситуация случилась однако ...




Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
34
Администраторы
3417 сообщений
Мужчина
УПРАВЛЕНИЕ МОТОРАМИ

Давайте разберем как же нам заставить робота не только реагировать на прикосновения, но и как-то уже передвигаться - ездить в зад и в перед, поворачивать, танковый разворот... и так далее.

За управление моторами отвеччают две команды:

1. MotorDir(параметр_1, параметр_2);

"МоторДирекшен"(MotorDirection или MotorDir) отвечает за направление вращения двигателей. Для контроля направления используется "параметр_1,2". Чтобы мотор крутился вперед, нужно задать параметр FWD (Forward - прямо), если нужно назад - параметр RWD (Backward\Revers - назад). Если вы хотите остановить мотор, нужно указать параметр BREAK.

Например:

Quote
MotorDir(FWD,FWD); -Задать движение обоих моторов вперед
MotorDir(RWD,RWD); -Задать движение обоих моторов назад
MotorDir(FWD,RWD); -Один матор крутим вперед, второй крутим назад. "Танковый разворот"
MotorDir(FWD,BREAK); -Один мотор крутим вперед, второй останавливаем.


2. MotorSpeed(параметр_1, параметр_2);

"МоторСпиид"(MotorSpeed) отвечает за скорость вращения наших моторов. Скорость вращения контроллируется специальной вещью - ШИМ - Широтно Импульсная Модуляция. В кратце это пучек импульсов которые с определенной частотой включают мотор. Обычно мы как включаем мотор ? подали постоянное напряжение и мотор раскрутился. А в ШИМе мы подаем импульсами наше "постоянное напряжение" и мотор начинает вращаться. Чем чаще эти импульсы приходят, тем быстрее крутится мотор.

Можете провести эксперимент: возьмите мотор с проводками уже припаянными, возьмите батарейку, и один проводок подключите к батарейке, а второй возьмите в другую руку. Взяли ? Будем считать что вы один провод мотора подключили на +, а вторым будем касаться -. И так. Подключите наш проводок что в руке на минус. Мотор начнет крутиться постоянно с максимальной скоростью. А тепеь давайте симмитируем наш ШИМ: начинайте многократно касаться нашим проводом на - батарейки. Что наблюдаем ? Пока вы касаетесь мотор - крутится, как только провод не касается мотор останавливается. Чем чаще и быстрее вы начинаете касаться батарейки - тем быстрее крутится мотор. Это и есть наш ШИМ, в общих чертах. wink

Параметр_1 и Параметр_2 задаются числом в диапазоне от 0 - 255. Почему 255 ? Это расчитывается по формулам, зависит от частоты и прочих параметров нашего робота. Если 0 - это значит мотор стоит, 255 - мотор крутится на максимальных оборотах. Если хотите медленно - пробуйте уже сами задавать число в этом диапазоне. По идее, но не факт, минимальное значение при котором мотор еще будет подавать признак работы - 60. Это будет либо писк либо ооооочень медленное вращение, либо жалостный писк. laugh

Например:

Quote
MotorSpeed(255,255); -Моторы на полную мощьность


Ну как вы должно быть уже поняли - одно без другого работать не будет. По этому вот вам цельный код, который вы должны залить в ваш МК:

Quote
#include "asuro.h"

int main(void)
{
Init();
MotorDir(FWD,FWD);
MotorSpeed(255,255);
while(1);
return 0;
}


Прошиваем и проверяем. Сразу после включения ваши моторы должны закрутится вперед. поэксперементируйте с диапазоном чисел и направлением.


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
34
Форум » Проекты по робототехнике » Групповые проекты » Робот ASURO на микроконтроллере AVR ATmega8 (Инструкция и программирование робота своими руками)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: