Помогите разобраться !
|
|
Администраторы
3417 сообщений
Мужчина
|
Всем привет, ну вот не могу я оставить без внимания то, что у меня уже второй год, почти без внимания, валяется на полочке РОБОКОНТРОЛЛЕР OR-AVR-M32-D: Контроллер общего назначения с портом ДД (RoboMD2) Сначала лежал почему, потому что я не умел программировать. Теперь он лежит из-за того, что я не знаю как им пользоваться(как и куда подключать переферию). Характеристики модуля Микроконтроллер: ATMega32 @ 7.3728 МГц Напряжение питания: 6-16 В Габариты модуля: 66 х 66 х 16 мм (длина*ширина - по печатной плате) Вес: не более 32г Порты RoboGPIO: 16 (из них 8 с функцией АЦП) Порты RoboI2C: 4 Порт драйвера двигателей - есть, RoboMD2 Инструкция по модулю http://roboforum.ru/mediawiki/images/6/6d/OR-AVR-M32-D.pdf Принципиальная схема http://roboforum.ru/mediawiki/images/4/48/OR-AVR-M32-D-scheme.pdf Объясните мне пожалуйста как и куда подключать внешние устройства, такие как мотор, сд, шарп, сенсоры... На примере программы какой-нибудь простенькой с комментариями подробными.
|
|
|
|
|
Начальная группа
1798 сообщений
Мужчина
|
Quote Объясните мне пожалуйста как и куда подключать внешние устройства, такие как мотор, сд, шарп, сенсоры... На примере программы какой-нибудь простенькой с комментариями подробными. Куда подключать драйвер двигателей написано на странице 11 в инструкции. Шарпы бывают аналоговые или цифровые, цифровые подключать к I2C, аналоговые на любой канал АЦП. Сенсоры к любым портам. СД- светодиод? К любому порту. Про то, как рулить драйвером двигателей, у меня на сайте написано, там программа на Си и схема (копипастить не буду, схема большая получилась). Как с АЦП работать, там же написано (с коментариями и подсветкой синтаксиса). Неплохобы почитать какой-нибудь курс по микроконтроллерам, можно даже вот этот 123avr.com, он перепечатанный, легче читается чем та "раскраска". Про то, как конфигурировать АЦП, таймеры и прочее подробно написано в даташитах и еще есть CodeWizard в CVAVR, так что разобраться будет не сложно. Чтобы научиться программировать этот модуль, тебе потребуется: 1. Научиться конфигурировать все что угодно при помощи даташита. 2. разобарться с CodeWizard'ом 3. научиться работать с портами 4. Си знаешь наверное? По первому пункту могу по скайпу помочь.
|
|
|
|
|
Администраторы
3417 сообщений
Мужчина
|
Quote (nightmare) Куда подключать драйвер двигателей написано на странице 11 в инструкции. у меня его нет. Насчет скайпа на все 100% ЗА ! (если поможешь подробнее разобраться с этим девайсом, опишешь на простом языке, понятно любому лолу, как я, по части робоконтроллеров ) ) По документам если сматреть то до меня хреново доходит, нужно словами(всм. текстом онлайн) Хочу хоть что-то из него сделать, а то деньги потрачены, желание есть но нет знаний. Есть книжка такая: "Практическое программирование МК АВР на языке ассемблера" (Юрий Ревич). Читал всю,-нифиииига не понял ) Есть книжка "Программирование на Си++ для чайников", читаю когда не лень. Знаю Си ++
|
|
|
|
|
Начальная группа
1798 сообщений
Мужчина
|
Ой, асм это жесть, я пытался с него начать мозги вскипели и чуть было не вытекли, перешел на Си, учился по курсу 123, информацию выписывал в тетрадь и MS Word. В голове была каша, но мозг уже не кипел Далее поработал в VMLab, потом в железе, вообщем информация улеглась. раз Си ++ знаешь, отлично, давай завтра по скайпу сконектимся где-нибудь в районе 13:00 ... 17:00, пойдет? Что касается модуля, используй инструкцию только для того, чтобы смотреть где какие выводы микроконтроллера на разъемах. ЗЫ: О, только что обратил внимание, там на плате написано где какие выводы.
|
|
|
|
|
Администраторы
3417 сообщений
Мужчина
|
Заказал две сервы HXT12K собираюсь ее под постоянное вращение переделать. И вот мучает вопрос: если мне нужно будет ее поворачивать например на 90 ', я смогу ее повернуть, или это уже будет невозможно ? Если мы серву под постоянное переделаем.
|
|
|
|
|
Начальная группа
1798 сообщений
Мужчина
|
Да кажись невозможно, подстроечник там удаляется? Может лучше редукторов купить?
|
|
|
|
|
Администраторы
3417 сообщений
Мужчина
|
|
|
|
|
|
Начальная группа
1798 сообщений
Мужчина
|
Кстати, а в чем преимущество переделанной сервы перед мотор-редуктором?
|
|
|
|
|
Администраторы
3417 сообщений
Мужчина
|
В том, что для мотор-редуктора нужен аналоговый сигнал, драйвер двигателей, а для сервы цифровой Серву, когда надо, можно переделывать под постоянное вращение либо под градусы
|
|
|
|
|
Начальная группа
1798 сообщений
Мужчина
|
Понятно.
|
|
|
|
|
Администраторы
3417 сообщений
Мужчина
|
Хотя я может ошибаюсь, т.к. с сервами особо не работал. Кстате, в этой серве встроенный дд. Добавлено (29.05.2010, 00:37) --------------------------------------------- Завтра заберу сервы. Еще наверно буду брать Инфракрасный (ИК) дальномер Sharp GP2Y0A21 (10-80см) (аналог GP2D12) Плюс думаю заюзать эти датчики линии ЗЫ: Насчет шарпа. Как им управлять, как обрабатывать сигнал и измерять длину до препятствия ?
|
|
|
|
|
Начальная группа
1798 сообщений
Мужчина
|
Шарп аналоговый или цифровой? Аналоговый к АЦП подключай, цифровой в i2c. Формула для преобразования напряжение в расстояние есть в даташите.
|
|
|
|
|
Администраторы
3417 сообщений
Мужчина
|
Quote (nightmare) Шарп аналоговый или цифровой? -ссылка прилагается Аналоговый. Давай с шарпом пока отложим. Мне сначала написать программку для серв. Просто чтоб они вращались. Есть какие-нибудь примеры ? Как насчет Skype ?
|
|
|
|
|
Начальная группа
1798 сообщений
Мужчина
|
Примеров нет, как ими управлять не знаю, наверно шимом. Поищи примеры в инете, там есть. Я щас на даче, тут инета нет, пишу с телефона.
|
|
|
|
|
Администраторы
3417 сообщений
Мужчина
|
Вот пример рабочей програмки (с робофорума помогли). Поворачивает медленно сервы: Code #include "defines.h" #include <avr/interrupt.h> #include <util/delay.h>
int main(void) { DDRC=0x20; DDRD=0x30;
//Init PWM for SERVO Control on PD4, PD5 //PWM, Phase and frequency correct, TOP=ICR1 TCCR1A=0xA0; //clear on up-counting, set on down-counting TCCR1B=0x12; //Clock prescaler 1/8 ICR1=9216; //Set 50Hz frequency
while(1){
for(uint16_t i=750; i<2250; i+=10){
//Set servo A pos: uint16_t servoPosA=i; OCR1A=servoPosA*23/50;
//Set servo B pos: uint16_t servoPosB=2250+750-i; OCR1B=servoPosB*23/50;
//Wait for a 20ms _delay_ms(20); };
for(uint16_t i=2250; i>750; i-=10){
//Set servo A pos: uint16_t servoPosA=i; OCR1A=servoPosA*23/50;
//Set servo B pos: uint16_t servoPosB=2250+750-i; OCR1B=servoPosB*23/50; //Wait for a 20ms _delay_ms(20); }; }; } Видеоролик: Теперь будем на нем экспериментировать
|
|
|
|
|