Пропорциональное управление на МК с нуля
| |
uwrtey | Дата: Воскресенье, 07.07.2013, 09:52 | Сообщение # 421 |
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Статус: Offline
| о-о, я придумал: я поменял местами длительности при старте и при входе в прерывание - так можно будет проверить правильно ли генерится прерывание.. Вечером перепрошью и проверю .....
Хотя, я уже проверял длительность
ldi xh, 0xF ; 4000 = FA0 крайнее положение сервопривода... ( 2 милисекунды ) ldi xl, 0xA0
OUT OCR1BH,XH ; зададим длину импульса ( среднее положение ) OUT OCR1BL,XL ; и выведем ее в порт сравнения нормально генерируется.... Но сервопривод занимает не совсем крайнее положение - он смещается всего на 70 градусов от центрального. При чем этот сервопривод может смещаться на больший, чем 90 градусов, угол от центрального положения ( другими словами - ход этого сервопривода больше чем 180 градусов, примерно 225 градусов )
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Воскресенье, 07.07.2013, 09:53 |
|
| |
ВитГо | Дата: Воскресенье, 07.07.2013, 18:30 | Сообщение # 422 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| Цитата (uwrtey) Но сервопривод занимает не совсем крайнее положение - он смещается всего на 70 градусов от центрального. При чем этот сервопривод может смещаться на больший, чем 90 градусов, угол от центрального положения ( другими словами - ход этого сервопривода больше чем 180 градусов, примерно 225 градусов )
гм.. ну вообще то для серв максимальный ход около 140-160 градусов !!! большее это уже выход за границы диапазона управляющего импульса !!
так что если ты получишь управляемые 120 градусов - то это нормально и этого достаточно ! ни о каких 200 градусах речи быть не может !!! у многих серв просто ограничители широко расставлены, чтобы при выходе импульса за пределы серва не смогла себе шестерни повредить (но это иногда все равно случается)
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Вторник, 09.07.2013, 10:29 | Сообщение # 423 |
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Статус: Offline
| а-а, вот оно как. теперь с этим все понятно...
_____________
Попробовал код, который привел сообщением выше. При старте серва занимает крайнее положение, а вот в прерывании она почему то не переключается на центральное положение... ( это значит, что длительность в две миллисекунды генерируется правильно ) Что-то я тут совсем жутко туплю - у меня даже подозрений нет ни каких... ***** 1) шим вроде правильно генерируется 2) в прерывание вроде попадаю ни чего не понимаю
меня еще смущает одна странность когда на ножке ICP появляется лог_1 - сервопривод отклоняется на угол в три щелчка ( в градусах я не могу определить этот угол, наверно один градус или три ..... ) а когда лог_1 пропадает и ножка ICP просто повисает в воздухе или на ней появляется лог_0, то серва занимает исходную позицию....Добавлено (09.07.2013, 10:29) --------------------------------------------- поднял тему тут http://forum.easyelectronics.ru/viewtop....p276082
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Понедельник, 08.07.2013, 01:35 |
|
| |
ВитГо | Дата: Вторник, 09.07.2013, 18:49 | Сообщение # 424 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| нужно посмотреть осциллограммы. ты просто не верно генеришь импульсы
я неоднократно генерил управляющие импульсы для серв и никогда никаких проблем небыло
покажи осциллограммы!!!
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Вторник, 09.07.2013, 22:16 | Сообщение # 425 |
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Статус: Offline
| сначала генерятся импульсы 1,5 мс затем входим в прерывание и снова генерятся импульсы длительностью 1,5 мс ничего не понимаю... может шим надо как-то перезапустить ? датащит на тини 2313
Почему то в прерывании не происходит переключение длительности импульса.
***
Или программа не входит в обработчик прерывания - хотя, выше я приводил программу 2_000.asm - которая работает исправно. В той программе при старте не задается длительность импульса, но она задается в обработчике прерывания. А это значит , что программа в обработчик прерывания все-таки попадает!
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Вторник, 09.07.2013, 22:40 |
|
| |
ВитГо | Дата: Четверг, 11.07.2013, 16:49 | Сообщение # 426 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| странно ! шим это аппаратная фича...
гм... у дихалта пробовал спросить на форуме?
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Четверг, 11.07.2013, 20:49 | Сообщение # 427 |
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Статус: Offline
| спросил, но там молчат... http://forum.easyelectronics.ru/viewtop....p276082Добавлено (11.07.2013, 20:49) --------------------------------------------- я вот что думаю, нужно попробовать другое прерывание организовать - например по int0 и посмотреть что будет....
не успеваю за своими мыслями......
|
|
| |
ВитГо | Дата: Суббота, 13.07.2013, 16:55 | Сообщение # 428 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| не знаю. попробуй
может отказаться от шим и формировать вручную ?
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Суббота, 13.07.2013, 23:50 | Сообщение # 429 |
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Статус: Offline
| переделал прерывание на int_0. И программа сразу же заработала как надо. Но УВЫ раз на раз не приходится ( то работает, то нет )
я ничего не понимаю, почему не работает ???
надо еще попробовать шим с вершиной в ICR1 соорудить.
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Суббота, 13.07.2013, 23:53 |
|
| |
ВитГо | Дата: Воскресенье, 14.07.2013, 07:42 | Сообщение # 430 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| значит проблема в коде
проверь правильно ли задал вершину стека
выходишь ли из прерываний по reti
и так далее..
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Воскресенье, 14.07.2013, 12:27 | Сообщение # 431 |
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Статус: Offline
| Точно! нашел косяк. при входе в прерывание я забыл сохранить стек. а при выходе я умудряюсь прочитать его значение..... исправил и прикрепил...
___________________________________________________________________________
прикрепленный рисунок не имеет отношения к этой теме.
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Воскресенье, 14.07.2013, 14:00 |
|
| |
uwrtey | Дата: Воскресенье, 14.07.2013, 23:59 | Сообщение # 432 |
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Статус: Offline
| Ну вот, исправил и все заработало. Блин, я до сих пор совершаю такие элементарные ошибки ...
не успеваю за своими мыслями......
|
|
| |
ВитГо | Дата: Понедельник, 15.07.2013, 20:50 | Сообщение # 433 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| привыкнешь, начнешь совершать не элементарные и уже их находить будет на много сложнее
Виталий (аka ВитГо)
|
|
| |
uwrtey | Дата: Понедельник, 15.07.2013, 23:58 | Сообщение # 434 |
Генерал-майор
Группа: Администраторы
Сообщений: 3256
Статус: Offline
| подключил передатчик к приемнику и соорудил такой код, что бы можно было управлять только сервоприводом. При включении приемника серва занимает среднее положение, а затем положение должно зависеть от положения ручки на пульте.... Но при включении передатчика серва ни куда не поворачивает свою качалку, а так и остается в среднем положении. А качалка в свою очередь начинает легко поворачиваться от руки... Что это может значить ? длина импульса вышла за пределы ?? как бы это проверить ??? вешать дисплей ?
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Понедельник, 15.07.2013, 23:59 |
|
| |
ВитГо | Дата: Вторник, 16.07.2013, 06:36 | Сообщение # 435 |
Полковник
Группа: Администраторы
Сообщений: 2422
Статус: Offline
| да, если серва не удерживает свое положение значит с управляющим импульсом что то не то
экран конечно нужно подключать ! это единственный способ видеть хоть какую то отладочную инфу!!
Виталий (аka ВитГо)
|
|
| |
|