roboforum.ru

Технический форум по робототехнике.

Серво машинки, Atmega16

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

Серво машинки, Atmega16

Сообщение Elandar » 03 янв 2011, 03:39

Доброго времени суток!
Вопрос мучает уже третий день, не могу понять что не так.
У меня есть atmega16, сервомашинка HX12K, использую восьмибитный таймер(0), внешний кварц на 12Мгц.
В CVAVR выбрал свой контроллер, выставил частоту вн. кварца, выбрал таймер 0, делитель - 1(12 000 кГц), по переполнению.
Итого выходит 1/12*256 = 21.33333333333333 мкс (частота 1 прерывания таймера)
Чтобы управлять серво нужно ждать 20 мс и затем от 0.8 до 2.3 можно давать импульс
0.0213333333333333 мс = 21.33333333333333 мкс
20 мс / 0.0213333333333333 мс = 937.5000000000015 (это число прерываний таймера отсчитывающее 20 мс)
К примеру я хочу подождать 1.55 мс и поставить серво по центру.
1.55 мс / = 0.0213333333333333 мс = 72.65625000000011

Итак получается программа:

...
volatile unsigned int cnt=0;
volatile unsigned char state=0;
ISR(TIMER0_OVF_vect)
{
if ((state == 0) && (cnt > 937))//ждем 20мс
{
cnt=0;
state=1;
PORTB=0xFF;
}
if ((state == 1) && (cnt > 72))//импульс 1.55 мс
{
cnt=0;
state=0;
PORTB=0;
}
cnt++;
}
...
PORTB=0;//изначально 0
DDRB=0xFF;//на выход

TCCR0=0x01;
TCNT0=0x00;
OCR0=0x00;

TIMSK=0x01;
sei();
while(!0)
{
}
...

В итоге, если серво машинка отключена до запуска МК, то после ее подключение к работающему МК она дергается в одну из сторон и замолкает. Если же МК запускается уже с подключенной серво то никакой реакции у сервы нет.
Подскажите, что я не так считаю?
Elandar
 
Сообщения: 28
Зарегистрирован: 07 июл 2010, 23:17
Откуда: Одесса
прог. языки: C\C++, Delphi,

Re: Серво машинки, Atmega16

Сообщение EdGull » 03 янв 2011, 10:42

а фусибиты переключил на кварц?
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: Серво машинки, Atmega16

Сообщение =DeaD= » 03 янв 2011, 10:49

Что с питанием?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Серво машинки, Atmega16

Сообщение avr123.nm.ru » 03 янв 2011, 11:41

каша из мс и мкс :D посмотрите какие импульсы у вас в PROTEUS или в реале если осциллограф есть или примерно через звуковой вход ПК.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: Серво машинки, Atmega16

Сообщение Elandar » 03 янв 2011, 11:56

EdGull писал(а):а фусибиты переключил на кварц?

SUT_CKSEL = Ext. Crystal/Resonator High Freq.; Start-up time: 16K CK + 64 ms

=DeaD= писал(а):Что с питанием?

оранжевый на ножку МК, красный к +5, коричневый -
Elandar
 
Сообщения: 28
Зарегистрирован: 07 июл 2010, 23:17
Откуда: Одесса
прог. языки: C\C++, Delphi,

Re: Серво машинки, Atmega16

Сообщение avr123.nm.ru » 03 янв 2011, 12:41

попробуйте питать серву от другого источника питания.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: Серво машинки, Atmega16

Сообщение Elandar » 04 янв 2011, 02:44

avr123.nm.ru, cпасибо!
Запитал серву от другого источника, теперь:
Уже удерживают своё положение, но серво машинка S-101 уходит в одно из крайних положений, а HX12K дергается постоянно :(

Не знаю что делать.
Подскажите, управляться должно каким образом?
а) 20мс ждем, импульс 0.8-2.3
б) импульс 0.8-2.3 и ждем (20-(0.8-2.3))мс - т.е. заполняем после едениц нулями до 20 мс?

Может у кого есть исходный код таймера на С где можно будет понять как управляется вс это дело?
Elandar
 
Сообщения: 28
Зарегистрирован: 07 июл 2010, 23:17
Откуда: Одесса
прог. языки: C\C++, Delphi,

Re: Серво машинки, Atmega16

Сообщение =DeaD= » 04 янв 2011, 10:24

Повторю свой вопрос - от чего питаете серву?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Серво машинки, Atmega16

Сообщение true » 04 янв 2011, 12:54

попробуйте перейти на arduino, и не тратить время на простые вещи. Удовольствий массу получите, это я вам из личного опыта говорю! Я сам прошел через простые микроконтроллеры, и этот вечный гимор с таймерами, с интерфейсами, тратит кучу времени и отбивает желание что-либо делать дальше.

Если преследуете цель изучить микроконтроллер, то просто внимательно читайте мануалы. А если хотите что-либо изобретать и двигаться дальше, то см. выше.
true
 
Сообщения: 38
Зарегистрирован: 23 окт 2010, 19:13

Re: Серво машинки, Atmega16

Сообщение avr123.nm.ru » 04 янв 2011, 14:21

Elandar писал(а):Подскажите, управляться должно каким образом?
Каждые 20 милиСек ( пойдет от 17 до 23 - точность не требуется ) надо делать импульс "1" длительностью от 1000 до 2000 мкС.

Elandar писал(а):Может у кого есть исходный код таймера на С где можно будет понять как управляется вс это дело?


Есть конечно. Задача 13 курса по AVR - http://proavr.narod.ru/z13.htm
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: Серво машинки, Atmega16

Сообщение Elandar » 04 янв 2011, 14:52

true писал(а):попробуйте перейти на arduino, и не тратить время на простые вещи. Удовольствий массу получите, это я вам из личного опыта говорю! Я сам прошел через простые микроконтроллеры, и этот вечный гимор с таймерами, с интерфейсами, тратит кучу времени и отбивает желание что-либо делать дальше.

Если преследуете цель изучить микроконтроллер, то просто внимательно читайте мануалы. А если хотите что-либо изобретать и двигаться дальше, то см. выше.

Мне нужна плата которая управляет 20 сервами. Знаю про всякие готовые, но уже взялся сам, а бросать не хочу.
А больш от этой платы мне ничего не нужно, дальше в ARM полезу.

=DeaD= писал(а):Повторю свой вопрос - от чего питаете серву?

От адаптра на 12V 2.08А 25W MAX, понижаю это дело до 5V и на серву.
Elandar
 
Сообщения: 28
Зарегистрирован: 07 июл 2010, 23:17
Откуда: Одесса
прог. языки: C\C++, Delphi,

Re: Серво машинки, Atmega16

Сообщение EdGull » 04 янв 2011, 15:04

чем понижаешь?
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: Серво машинки, Atmega16

Сообщение =DeaD= » 04 янв 2011, 15:11

+1 - чем понижаешь?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Серво машинки, Atmega16

Сообщение EdGull » 04 янв 2011, 15:27

походу 7805 да еще и L :D
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: Серво машинки, Atmega16

Сообщение Elandar » 04 янв 2011, 17:35

EdGull писал(а):походу 7805 да еще и L :D

NY7805C 0334
:D
Что не так?)
Elandar
 
Сообщения: 28
Зарегистрирован: 07 июл 2010, 23:17
Откуда: Одесса
прог. языки: C\C++, Delphi,

След.

Вернуться в Новичкам или основы основ роботостроения.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron