Помогите с сервоприводом.
|
|
HappyEnd | Дата: Понедельник, 12.08.2013, 00:57 | Сообщение # 1 |
 3.5 Вольт
Группа: Пользователи
Сообщений: 10
Репутация: 0
Статус: Offline
| Доброго времени суток.Купил сервоприводы Turnigy TG9e 9g,но не получается ими управлять на atmega8. Перечитал много статей,но мало что понял. Может кто-нибудь пошагово объяснить,Пример кода простого. Пользуюсь AlgorithmBuilder и Programmers Notepad [WinAVR].Спасибо.
|
|
| |
lori | Дата: Понедельник, 12.08.2013, 08:32 | Сообщение # 2 |
 12 Вольт
Группа: Пользователи
Сообщений: 108
Репутация: 20
Статус: Offline
| В общем это обычная серва. В ардуино есть готовая библиотека servo и пример использования, с помощью этой библиотеки, в принципе, можно "завести" любой серво-двигатель
|
|
| |
HappyEnd | Дата: Понедельник, 12.08.2013, 15:26 | Сообщение # 3 |
 3.5 Вольт
Группа: Пользователи
Сообщений: 10
Репутация: 0
Статус: Offline
| у меня не ардуино=)Атмега8 просто.
|
|
| |
DuZeR | Дата: Понедельник, 12.08.2013, 17:11 | Сообщение # 4 |
 5 Вольт
Группа: Пользователи
Сообщений: 42
Репутация: 2
Статус: Offline
| принцип управления стандартными сервами сводится к подаче на управляющий вход последовательности импульсов с определенной частотой и длительностью этих самых импульсов.. описание стандарта полно в нете.. Если просто - нужно программно выставить на ноге меги 1, подождать несколько миллисекунд(от 1 до 2, соответственно крайние положения сервы, если нужно более точно выставить - использовать задержку в микросекундах), после этого выставить 0. импульсы следуют с частотой 50 гц.. посмотри картинки в нете - будет понятнее
по поводу простого кода - реализаций может быть множество. конкретно с AlgorithmBuilder не работал
Возможности машины зависят от фантазии человека...
|
|
| |
HappyEnd | Дата: Понедельник, 12.08.2013, 18:49 | Сообщение # 5 |
 3.5 Вольт
Группа: Пользователи
Сообщений: 10
Репутация: 0
Статус: Offline
| коды пишу в winavr ,AlgorithmBuilderом прошиваю.в интернете много кодов находил,но не подходят=/ не создается hex файл
|
|
| |
Serg | Дата: Понедельник, 12.08.2013, 22:55 | Сообщение # 6 |
Ампер
Группа: Модераторы
Сообщений: 510
Репутация: 28
Статус: Offline
| Код #include <avr\io.h>
int main(void) {
DDRD=0x00;
PORTD=0xFF;
DDRB=0xFF;
ICR1=20000;
TCCR1A|=(0<<COM1A0)|(1<<COM1A1)|(0<<COM1B0)|(0<<COM1B1)|
(0<<FOC1A)|(0<<FOC1B)|(1<<WGM11)|(0<<WGM10);
TCCR1B|=(0<<ICNC1)|(0<<ICES1)|(1<<WGM13)|(1<<WGM12)|
(0<<CS12)|(1<<CS11)|(0<<CS10);
for (;;) {
if(bit_is_clear(PIND, 0)){
OCR1A+=10;
loop_until_bit_is_set(PIND, 0);
}
if(bit_is_clear(PIND, 1)) {
OCR1A-=10;
loop_until_bit_is_set(PIND, 1);
}
}
}
|
|
| |
Serg | Дата: Понедельник, 12.08.2013, 23:00 | Сообщение # 7 |
Ампер
Группа: Модераторы
Сообщений: 510
Репутация: 28
Статус: Offline
| Двигатель PB1.Кнопки PD0, PD1. Переходите уж на AVR Studio 4.
|
|
| |
HappyEnd | Дата: Среда, 14.08.2013, 01:45 | Сообщение # 8 |
 3.5 Вольт
Группа: Пользователи
Сообщений: 10
Репутация: 0
Статус: Offline
| почему-то серва двигается в одну сторону все время=\
|
|
| |
Serg | Дата: Среда, 14.08.2013, 16:16 | Сообщение # 9 |
Ампер
Группа: Модераторы
Сообщений: 510
Репутация: 28
Статус: Offline
| нужно понажимать кнопки.
|
|
| |
HappyEnd | Дата: Среда, 14.08.2013, 19:08 | Сообщение # 10 |
 3.5 Вольт
Группа: Пользователи
Сообщений: 10
Репутация: 0
Статус: Offline
| кнопки нажимал .может с сервами что-то,новые два.неужели брак.пробовал еще один код ,кнопка смены режима работает,диоды горят индикаторные,а серва не реагирует так же,уперто крутится в одну сторону.
|
|
| |
muvey | Дата: Среда, 14.08.2013, 19:52 | Сообщение # 11 |
 220 Вольт
Группа: Пользователи
Сообщений: 305
Репутация: 1
Статус: Offline
| HappyEnd, посмотри,мож что с реостатом в серве...часто нет контакта ползунка реостата..
Ex nihilo nihil fit
|
|
| |
blindman | Дата: Среда, 14.08.2013, 20:02 | Сообщение # 12 |
 5 Вольт
Группа: Пользователи
Сообщений: 54
Репутация: 0
Статус: Offline
| HappyEnd, 1. на какой частоте контроллер работает? Этот код подразумевает 1 МГц 2. В программу добавить в секции инициализации OCR1A = 1000;
Serg, вот так не пиши #include <avr\io.h>
снег башка упадет под Linux не соберется
так пиши #include <avr/io.h>
|
|
| |
Serg | Дата: Среда, 14.08.2013, 22:00 | Сообщение # 13 |
Ампер
Группа: Модераторы
Сообщений: 510
Репутация: 28
Статус: Offline
| Ох ох... точно забыл. А может начать с 0x00, пусть мотор стоит при старте
|
|
| |
HappyEnd | Дата: Четверг, 15.08.2013, 01:22 | Сообщение # 14 |
 3.5 Вольт
Группа: Пользователи
Сообщений: 10
Репутация: 0
Статус: Offline
| blindman, работает на 1МГц . Добавил OCR1A = 1000 , ничего не изменилось.подключал светодиод,при нажатии на кнопки частота мигания меняется .
|
|
| |
blindman | Дата: Четверг, 15.08.2013, 02:20 | Сообщение # 15 |
 5 Вольт
Группа: Пользователи
Сообщений: 54
Репутация: 0
Статус: Offline
| Может яркость меняется? Там частота должна быть 50 Гц. И меняться не должна. Меняется скважность импульсов. Добавлено (15.08.2013, 02:20) --------------------------------------------- Упс
Ни фига не 1 МГц. Код рассчитан на 8 МГц. А при тактовой 1 МГц частота импульсов на выходе будет 6,25 Гц
На 1 МГц TCCR1B должен настраиваться вот так
TCCR1B|=(0<<ICNC1)|(0<<ICES1)|(1<<WGM13)|(1<<WGM12)|(0<<CS12)|(0<<CS11)|(0<<CS10);
|
|
| |
HappyEnd | Дата: Вторник, 20.08.2013, 03:21 | Сообщение # 16 |
 3.5 Вольт
Группа: Пользователи
Сообщений: 10
Репутация: 0
Статус: Offline
| на днях придут другие сервы.попробую с ними. Добавлено (20.08.2013, 03:21) --------------------------------------------- пришли новые сервы. и с ними та же беда, только старые крутились в одну сторону непрерывно ,а новые с рывками
Сообщение отредактировал HappyEnd - Вторник, 20.08.2013, 03:21 |
|
| |
Serg | Дата: Вторник, 20.08.2013, 22:21 | Сообщение # 17 |
Ампер
Группа: Модераторы
Сообщений: 510
Репутация: 28
Статус: Offline
|
|
|
| |
Serg | Дата: Четверг, 22.08.2013, 20:51 | Сообщение # 18 |
Ампер
Группа: Модераторы
Сообщений: 510
Репутация: 28
Статус: Offline
| Попробуйте записать эту прошивку. Движок потенциометра на ножку 23 Mega8. Управляющий вывод сервы на ножку 15. По задумке серва должна управляться потенциометром.
|
|
| |
HappyEnd | Дата: Суббота, 26.10.2013, 04:32 | Сообщение # 19 |
 3.5 Вольт
Группа: Пользователи
Сообщений: 10
Репутация: 0
Статус: Offline
| И так ,я вернулся) Времени не было. так все на этом этапе и стоит.не работает.Может это зависеть от питания МК,может не так что? сколько примеров не смотрел не пробовал,не получается.Простые программыуправлением яркостью светодиодов и то не работают,прошиваю все.а светодиод горит просто и все
|
|
| |
Serg | Дата: Суббота, 26.10.2013, 11:32 | Сообщение # 20 |
Ампер
Группа: Модераторы
Сообщений: 510
Репутация: 28
Статус: Offline
| В электронике абсолютно все зависит от питания. Можно попробовать запитать от трех пальчиковых батареек. Для МК это допустимо.
|
|
| |
HappyEnd | Дата: Суббота, 26.10.2013, 20:12 | Сообщение # 21 |
 3.5 Вольт
Группа: Пользователи
Сообщений: 10
Репутация: 0
Статус: Offline
| Вот этот код рабочий.Пытаюсь в нем разобраться.Светодиод меняет цвет но не плавно,а очень быстро мигает,подключил серв. крутиться в обе стороны,но очень дергается. http://radioparty.ru/index.php/prog-avr/program-c/293-rgb-lesson
|
|
| |
Serg | Дата: Суббота, 26.10.2013, 20:45 | Сообщение # 22 |
Ампер
Группа: Модераторы
Сообщений: 510
Репутация: 28
Статус: Offline
| А на чем именно испытываете этот код? Переключите фьюзы на внутренний генератор 1МГц.
|
|
| |
HappyEnd | Дата: Суббота, 26.10.2013, 21:27 | Сообщение # 23 |
 3.5 Вольт
Группа: Пользователи
Сообщений: 10
Репутация: 0
Статус: Offline
| atmega8. Попробовал значение if (pwm_counter++ > 163) уменьшить,стал светодиод плавно менять цвет.А как сделать,что бы диод моргал и с каждым морганием тускнел пока полностью не погаснет?А с фьюзами пока не работал.
Сообщение отредактировал HappyEnd - Суббота, 26.10.2013, 21:29 |
|
| |
Serg | Дата: Суббота, 26.10.2013, 22:02 | Сообщение # 24 |
Ампер
Группа: Модераторы
Сообщений: 510
Репутация: 28
Статус: Offline
| Цитата HappyEnd (  ) А как сделать Понизить тактовую частоту
|
|
| |