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


[ Раскрыть online-чат / Закрыть ] · [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Модератор форума: nightmare, Huntswarrior, Aleks_Crow  
Форум » Программирование микроконтроллеров AVR, PIC » Вопросы по програмированию » МК - Моторчик - Фотопрерыватель (*icon-0*)
МК - Моторчик - Фотопрерыватель
Отправлено 20.10.2011 - 18:451
Участник
8 сообщений
Мужчина
Имеется:
- средство разработки TE-Mini168 (ATmega168)
- драйвер L293D
- щелевой фотопрерыватель BITR9707 (DINT-5200)
- программатор KIT BM9010 USB
- электродвигатель F280-23100 9.0V (моторчик, на конце прикреплена типа шторка вида X, для датчика)
- AVR Studio 5.0
- MathLab
- Proteus 7 Professional

Необходимо:
- все это дело собрать
- написать прошивку: входные данные - для оборотов моторчика, выходные данные - данные с датчика
- соединить с MathLab: нужно в зависимости от получаемых данных с датчика, управлять оборотами двигателя

P.S.: Пока что в ISIS запускал простейшую прошивку, написанную мною (впервые этим заниматься начал). Но чувствую что сам не справлюсь, особенно с MathLab. Как связать с MathLab вообще не понял.

Не до конца еще собран, т.к. пока что на стадии написания прошивки, а ее работу проверяю в эмуляторе ISIS. Сейчас вот пытаюсь разобраться с ШИМ сигналом от МК к драйверу. Кто-нибудь может помочь с кодом?





ISIS.zip (38.4 Kb) · AVR.zip (13.2 Kb)
Профиль Личное сообщение Дом. страница icq Skype
0
Отправлено 20.10.2011 - 19:182
Начальная группа
1798 сообщений
Мужчина
Проект для протеуса можешь выложить?
Тебе по сути надо измерять частоту импульсов с прерывателя, делается это таймером в режиме счетчика импульсов и в зависимости от частоты рассчитывать скважность ШИМ по ПИД алгоритму.
В протеусе кстати есть компонент MOTOR-ENCODER а также измеритель оборотов.


Профиль Личное сообщение Дом. страница icq Skype
38
Отправлено 20.10.2011 - 20:123
Участник
8 сообщений
Мужчина
Quote (nightmare)
Проект для протеуса можешь выложить?
Тебе по сути надо измерять частоту импульсов с прерывателя, делается это таймером в режиме счетчика импульсов и в зависимости от частоты рассчитывать скважность ШИМ по ПИД алгоритму.
В протеусе кстати есть компонент MOTOR-ENCODER а также измеритель оборотов.

да я читал об этом, но так и не разобрался как это все сделать... именно поэтому и создал эту темку... я новичок в этих делах)
в первое сообщение добавил два файла с проектами ISIS и AVR

MOTOR-ENCODER - для чего он?
измеритель оборотов можно использовать в ISIS таким образом, чтобы его можно было описать в прошивке как датчик? а то я еще все думал как бы мне в ISIS мой датчик реализовать, да еще и чтобы считывал обороты с моторчика...


Профиль Личное сообщение Дом. страница icq Skype
0
Отправлено 20.10.2011 - 21:014
Начальная группа
1798 сообщений
Мужчина
Quote
MOTOR-ENCODER - для чего он?

Там мотор, энкодер и табло измерителя числа оборотов. Вместо прерывателя - энкодер (по сути прерыватель тот же энкодер).
Вообще если дальше Hello world дело не продвинулось, то тут явно учебные курсы по AVR не читаны...
Это же курсовая? Можно попробовать на electronix.ru создать объявление и тебе её напишут.


Профиль Личное сообщение Дом. страница icq Skype
38
Отправлено 20.10.2011 - 21:205
Участник
8 сообщений
Мужчина
Quote (nightmare)
Там мотор, энкодер и табло измерителя числа оборотов. Вместо прерывателя - энкодер (по сути прерыватель тот же энкодер).
Вообще если дальше Hello world дело не продвинулось, то тут явно учебные курсы по AVR не читаны...
Это же курсовая? Можно попробовать на electronix.ru создать объявление и тебе её напишут.

ок, попробую воткнуть, думаю заменит мне мотор+датчик на ура =)
ну я пытался по всячески с шим разобраться, но ничего не выходило.. на нем и встал..
не, не курсовая, у нас в универе такое даже не проходят, в этом году вот ultralogic только в первый раз увидели и то древнюю демо-версию...
это практика моя была, там мы просто в labview с national instruments работали, а он один всего, решили создать аналоги его, чтобы были несколько лаб.стендов для работы студентом... на меня вот возложили данную работу, а мне нравится, интересно, вот только не могу разобраться со всеми вещами... читал книжки по AVR, а там в основном без схем эти прошивки примерные, и разобрать не удается.. по ним собственно и пытался что-то сделать. поэтому вот и выложил схему с просьбой помочь с кодом, как организовать этот шим...


Профиль Личное сообщение Дом. страница icq Skype
0
Отправлено 20.10.2011 - 21:226
Начальная группа
1798 сообщений
Мужчина
Как время будет, поковыряюсь с этим)


Профиль Личное сообщение Дом. страница icq Skype
38
Отправлено 20.10.2011 - 21:287
Участник
8 сообщений
Мужчина
Quote (nightmare)
Как время будет, поковыряюсь с этим)

буду благодарен =)


Профиль Личное сообщение Дом. страница icq Skype
0
Отправлено 20.10.2011 - 21:328
Администраторы
3417 сообщений
Мужчина
hazzze,

-а google не нашел решения готового ?


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
34
Отправлено 20.10.2011 - 21:369
Участник
8 сообщений
Мужчина
Quote (S-T-A-L-K-E-R(А))
-а google не нашел решения готового ?

я там искал естественно, в первую очередь) последствия до сих пор видны: у меня сейчас 20 с лишним открытых вкладок, читаю вот, думаю может что-нибудь заставит загореться лампочку над головой =)
Да и собственно с этого дело то и началось, узнал про ISIS и т.д., но вот с ШИМ-ом мне не помог мне гугл... те куски кода что видел, пытался подстроить под свой объект и т.д., но безрезультатно..


Профиль Личное сообщение Дом. страница icq Skype
0
Администраторы
3417 сообщений
Мужчина
nightmare, скинь ему тот пример ШИМ кода, с которым мы тогда разберались.


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
34
Отправлено 20.10.2011 - 21:5111
Начальная группа
1798 сообщений
Мужчина
hazzze, S-T-A-L-K-E-R(А), http://cdxp.zx6.ru/archives/355 (после втыкания защиты от ctrl+c код дать не могу, ибо надо в админ. панель лезть и в редактирование поста, так не копируется)
Частоту надо увеличить, код переписать под другой МК (скорее всего только название таймера поменять).


Профиль Личное сообщение Дом. страница icq Skype
38
Отправлено 20.10.2011 - 21:5712
Участник
8 сообщений
Мужчина
Quote (nightmare)
hazzze, S-T-A-L-K-E-R(А), http://cdxp.zx6.ru/archives/355
Частоту надо увеличить, код переписать под другой МК (скорее всего только название таймера поменять).

хорошо, завтра днем буду разбираться, пробовать, спасибо =)


Профиль Личное сообщение Дом. страница icq Skype
0
Отправлено 21.10.2011 - 22:0013
Модераторы
174 сообщений
Мужчина
Можно узнать:
1) На каком языке Вы пишите прошивку? Си? Знаете ли Вы Ассемблер?
2) Как Вы связываете MatLab и МК между собой для обмена данными? COM-порт, USB, виртуальный COM-порт? Если связь есть, она работает?

Вообще могу сказать так, я работаю только с AVR-ассемблером, если мы с Вами найдем общий язык по этому поводу то дело плевое.

Добавлено (21.10.2011, 21:56)
---------------------------------------------
Начнем попорядку, для начала забудте про Протеус и прочие эмуляторы, на время, т.к. применимо к данной задаче у них низкая наблюдаемость. Просто они заточены под имитацию цифровых схем.

Далее свяжите МК с ЭВМ, я Вам для этого посоветую использовать UART, его интерфейс очень похож на RS-232 (COM-порт). Разница состоит только в логических уровнях и для сопряжения обычно используют преобразователи логических уровней, например MAX3232.
Обоснование этого выбора простое - работа с UART в AVR поддерживается на аппаратном уровне, а работа с COM-портом поддерживается в MATLab.

Кстати, существует еще такая связка: программа верхнего уровня -> драйвер виртуального COM-порта -> USB-порт -> соединительный кабель -> мост USB/UART -> МК. С точки зрения программиста она ничем не отличается от реального COM. С точки зрении инженера она обеспечивает большую скорость передачи данных. Однако мост USB/UART может оказаться неоправданным решением с финансовой точки зрения в некоторых проектах.

За программу верхнего уровня пока не беритесь, на первых этапах можно просто слать байты в COM-порт вручную через программы-терминалы.
В качестве программы нижнего уровня напишите для начала программу, выводящую в один из портов МК бит, присланный по UART.
Как только эта задача будет решена - можно двигаться дальше.

3) Кроме связи с ЭВМ, наблюдением за датчиком и управлением драйвером Ваш МК больше ничем не будет занят?


Arduino - это зло!
Профиль Личное сообщение Дом. страница icq Skype
7
Отправлено 21.10.2011 - 22:0714
Участник
8 сообщений
Мужчина
Quote (Aleks_Crow)
Можно узнать:
1) На каком языке Вы пишите прошивку? Си? Знаете ли Вы Ассемблер?
2) Как Вы связываете MatLab и МК между собой для обмена данными? RS232, USB, Virtual RS232? Эта связка работает?

Вообще могу сказать так, я работаю просто с AVR-ассемблером, если мы с Вами найдем общий язык по этому поводу то дело плевое.


1) писал на СИ, с ассемблером знаком, были когда-то лабы на нем, больше им не пользовался, мб смогу разобраться
2) от TE-MINI168 mini-USB -> USB.. Я пока что только в Proteus 7 ISIS Professional работоспособность прошивки проверяю..

Добавлено (21.10.2011, 22:07)
---------------------------------------------

Quote (Aleks_Crow)
Добавлено (21.10.2011, 22:00)
---------------------------------------------
Далее, кроме связи с ЭВМ, наблюдением за датчиком и управлением драйвером МК больше ничем не будет занят?

нет, мне просто нужно в матлабе будет различные регуляторы делать для объекта, схемка на фотке в первом посте.. т.е. мне нужно лишь переменную, через которую я бы мог управлять оборотами моторчика и получать данные об оборотах с датчика и все..


Профиль Личное сообщение Дом. страница icq Skype
0
Администраторы
3417 сообщений
Мужчина
Из переписки в БОЛТАЛОЧКЕ:

Quote
[22:09:14] Aleks_Crowhazzze: так, мост UART/USB есть, значит дешевле и проще будет использовать виртуальный COM-порт
[22:10:24] Aleks_Crowhazzze: по прерыванию принятия бита по UART вывести этот бит в любой порт - задача номер 1, от нее будем плясать
[22:11:55] Aleks_Crowhazzze: еще вопрос, насколько глубокая обратная связь? В ЭВМ идут данные о скорости двигателя или они только обрабатываются в МК?
[22:12:41] Aleks_Crowhazzze: я так понимаю данные идут в ЭВМ
[22:12:47] hazzzeAleks_Crow: ага
[22:16:58] Aleks_Crowhazzze: Тогда кину такую мысль, может лучше в качестве датчика использовать тахометр, с точки зрения программы нижнего уровня она получится проще - в перерывах между генерацией ШИМ (если она программная) опрашивать АЦП (задействуется при этом один таймер - меньше прерываний - выше надежность их обработки). Если же использовать фотопару, то нужно будет заводить еще один счетчик и обрабатывать еще группу прерываний.
[22:18:07] Aleks_Crowhazzze: ШИМ программый или аппаратный?
[22:18:54] hazzzeAleks_Crow: программный, а нщт тахометра.. не знаю даже.. детали универ закупил на три штуки сразу
[22:19:52] Aleks_Crowhazzze: Понятно, работаем в условиях "сказали - сделал" хД
[22:20:07] hazzzeAleks_Crow: типа того)))
[22:20:25] Aleks_Crowhazzze: значит смотри
[22:21:14] Aleks_Crowhazzze: программу нижнего уровня можно построить на одних прерываниях
[22:22:15] evildesignhazzze: а двигатель коллекторный?
[22:22:46] hazzzeAleks_Crow: обычный моторчик на 9V =) плюс минус и усе)
[22:23:09] hazzzeAleks_Crow: а там ж фотка есть на форуме)
[22:23:35] Aleks_Crowhazzze: нам нужны будут прерывание приема данных по УАРТ, прерывание по таймеру - его можно настроить к примеру на 0,1 мкс, ну и скорее всего внешнее прерывание на фотопару
[22:24:07] Aleks_Crowhazzze: кстати на фотопару наверное надо будет повесить компаратор
[22:24:35] Aleks_Crowhazzze: почему то мне это в голову пришло
[22:24:46] Aleks_Crowhazzze: не уверен пока
[22:25:54] Aleks_Crowhazzze: вооот... пришли данные по уарт - сохраняем значение в переменную Х - это обработчик УАРТа
[22:28:39] Aleks_Crowhazzze: обработчик таймера (вариант) - в переменной Y ведем постоянный счет от нуля до МАКС (МАКС определяется частотой ШИМ, частотой работы МК и т.д.) и сравниваем с переменной Y. Если значения равны - обнуляем бит управления ШИМ. Если Y = 0 устанавливаем бит управления ШИМ
[22:29:35] Aleks_Crowhazzze: получаем импульсы длинной от нуля до Х и с периодом от нуля до МАКС
[22:30:32] Aleks_Crowhazzze: это получается реализация в одном направлении, от компа к двигателю, щас будем обратную связь строить
[22:34:12] STALKER-AAleks_Crow: фотопару ?
[22:34:26] STALKER-AAleks_Crow: оптопару всмысле ?
[22:34:36] hazzzeSTALKER-A: у меня там щелевой фотодатчик
[22:34:54] STALKER-Ahazzze: это оптопара по идее
[22:35:18] STALKER-Ahazzze: ну мысл тотже я отвлекаю )
[22:35:32] hazzzeSTALKER-A: понятно, не знал =)
[22:37:02] Aleks_Crowhazzze: пока в голову приходит следующее: настраиваем внешнее прерывание на спадающий фронт и запускаем счетчик Z по аналогии с Y (просто с каждым прерыванием таймера инкремент переменной). Как только оно срабатывает внешнее прерывание - фиксируем значение Z, отправляем в ЭВМ, обнуляем, перенастраиваем прерывание на уже на возрастающий фронт. Тут можно опять запустить процесс счета, а можно этот сектор и не считать. Как только срабатывает это прерывание - перенастраиваем на спадающий, сработало - на возрастающий и т.д. Мысль понятна?
[22:37:53] Aleks_Crowhazzze: при этом надо еще предусмотреть чтоб твои счетчики не обнулялись по переполнению ))
[22:38:28] hazzzeSTALKER-A, Aleks_Crow: мдэ) мне остается только глупо улыбаться)
[22:39:03] Aleks_Crowhazzze: нууу, никто тя не торопит, минут пять и ты вникнешь ))
[22:39:35] Aleks_Crowhazzze: спрашивай, интересуйся
[22:39:45] hazzzeAleks_Crow: я так понимаю, такой вот метод приходится использовать, благодаря ассемблеру?)
[22:40:40] Aleks_Crowhazzze: да я и в си не соображу пока как еще опто -парой частоту мерить
[22:41:16] Aleks_Crowhazzze: без счетчика точно не обойтись, вопрос как его реализовать
[22:41:37] Aleks_Crowhazzze: тахометр в этом плане проще
[22:42:13] hazzzeAleks_Crow: на интернет-странице нашего радиомагазина глянул, ничего не нашел...
[22:42:33] hazzzeAleks_Crow: www.elkomp.ru/catalo...
[22:42:56] Aleks_Crowhazzze: любой коллекторный двигатель - простейший тахометр, может не идеальный, но работоспособный
[22:43:23] hazzzeAleks_Crow: использовать движок как тахометр?
[22:44:40] hazzzeAleks_Crow: если так, то мне кажется мощности моторчика не хватит) сопротивление будет веселое небось)
[22:44:46] Aleks_Crowhazzze: вполне возможно, я только за точность пока ничего не скажу. Но если соединить два вала двух двигателей, и один запустить как двигатель, то второй будет работать в режиме генератора
[22:45:02] Aleks_Crowhazzze: причем КПД такой связке довольно высокий
[22:46:02] Aleks_Crowhazzze: Раньше это применяли для генерации трех фаз переменки из постоянного напряжения нередко
[22:46:50] Aleks_Crowhazzze: сопротивление... ХМ, смотря какая нагрузка на выходе генератора
[22:47:44] Aleks_Crowhazzze: если закоротить выводы - его тяжело будет провернуть, а если тока мерить напряжение на выходе - нет
[22:48:20] Aleks_Crowhazzze: ты ж вал движка любого спокойно вращаешь, пока негрузки нет?
[22:48:46] hazzzeAleks_Crow: так то да)
[22:48:46] Aleks_Crowhazzze: а напряжение на выходе при этом индуцируется
[22:49:14] Aleks_Crowhazzze: подумай над таким вариантом

Добавлено (21.10.2011, 23:33)
---------------------------------------------
Из переписки в БОЛТАЛОЧКЕ:

Quote
[22:49:43] hazzzeAleks_Crow: подумаю))
[22:49:50] Aleks_Crowhazzze: можешь вольтметр подключить к выводам моторчика и поиграться ))
[22:50:06] Aleks_Crowhazzze: как раз вольтметр прибор высокоомный ))
[22:51:10] Aleks_Crowhazzze: но ! и тут есть тонкости, напрямую подключать вход АЦП к генератору не советую, как бы не спалить АЦП
[22:51:33] STALKER-AAleks_Crow: Как думаешь
[22:51:45] STALKER-AAleks_Crow: на мк на ногу можно мотор вешать от сд проигрывателя ?
[22:51:51] STALKER-AAleks_Crow: прям на порт
[22:52:15] hazzzeSTALKER-A: без драйвера?
[22:52:26] Aleks_Crowhazzze: без нагрузки на двигатель - скорее всего потянет, а с нагрузкой - боюсь спалишь
[22:52:28] hazzzeSTALKER-A: а ща ж есть мк с драйвером сращу
[22:52:57] STALKER-Ahazzze: да ну ?
[22:53:17] STALKER-Ahazzze: вроде они отдельно от мк
[22:53:19] Aleks_Crowhazzze: есть, но специализированные
[22:53:36] STALKER-AAleks_Crow: на майроботе видел статью про вентилятор на мк ?
[22:53:45] hazzzeSTALKER-A: ну как-то зашел в радиомагазин за еще думя мк, а мне грят: больше их не поставляем, тк есть вот такие вот, притом цена одинаковая
[22:54:10] STALKER-Ahazzze: а название "вот таких" есть ?
[22:54:36] hazzzeSTALKER-A: мб записал куда-нибудь, завтра посмотрю
[22:54:37] STALKER-Ahazzze: это наверно LED
[22:55:03] Aleks_Crowhazzze: нет. www.marsohod.org/ - вот тут они цепляют двигатели прямо на ножки МК, но они цепляют сразу на 10-20 ножек что ли, ток увеличивается тем самым
[22:55:34] Aleks_Crowhazzze: и единичку выдают сразу на все ножки
[22:55:44] Aleks_Crowhazzze: объединенные
[22:57:07] Aleks_Crowhazzze: Вру, 5 ножек объединяют, вот www.marsohod.org/ind...
[22:57:43] Aleks_Crowhazzze: а, не, все таки 10 )))
[22:58:02] hazzzeAleks_Crow: xd
[22:59:59] STALKER-A:
[23:00:15] STALKER-A: на майроботе на мегу 8 вешают на один порт
[23:00:30] STALKER-A: и говорят это "прелесть"
[23:01:24] hazzzeSTALKER-A: 0_0
[23:01:41] hazzzeSTALKER-A: мега8 ж еще вроде 90х готов штучка...
[23:02:39] Aleks_Crowhazzze: ну и что, она еще в ходу ))
[23:03:06] hazzzeAleks_Crow: сделали на года)) хорошая вещь)))
[23:03:12] Aleks_Crowhazzze: для некоторых задач отличное решение
[23:03:49] hazzzeAleks_Crow: прям мой смартфончик нокиа 6670)) уже 8 или 9 лет, пашет на ура)) вот качество было... не то что сейчас.. позор(
[23:05:51] Aleks_Crow: я тебе вот что расскажу, мегу 1281 я у себя в городе купить не могу, только 128 есть - а их уже давно прекратили выпускать и на смену им пришли 1281
[23:06:09] Aleks_Crow: продавец на меня гланул треуголными глазами
[23:07:41] Aleks_Crowhazzze: ну так что мы решили по твоей теме?
[23:08:09] Aleks_Crowhazzze: запускаем счетчик или меряем АЦП?
[23:08:17] hazzzeAleks_Crow: ну завтра попробую решить ту твою задачу первоочередную)
[23:08:39] Aleks_Crowhazzze: Вот! Давай ))
[23:09:29] Aleks_Crowhazzze: глянь пока в инэте какие программы позволяют напрямую в ком-порт гнать бит и драйверы виртуального ком-порта
[23:09:57] Aleks_Crowhazzze: оно тебе понадобиться для отладки и работы
[23:10:02] hazzzeAleks_Crow: уже смотрел))
[23:10:13] hazzzeAleks_Crow: спалил несколько)
[23:10:49] hazzzeAleks_Crow: просто когда ты начал говорить о них, я дабы глянуть что это вообще - полазил по сайтам.. там и спалил)
[23:12:23] evildesignhazzze: я 1281 видел навалом
[23:12:24] STALKER-AAleks_Crow: терминалки чтоли ?
[23:12:29] Aleks_Crowhazzze: задача в принципе простенькая, за день-два разберешься думаю, но без нее ты точно дальше не двинешься ))


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
34
Форум » Программирование микроконтроллеров AVR, PIC » Вопросы по програмированию » МК - Моторчик - Фотопрерыватель (*icon-0*)
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Поиск: