roboforum.ru

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


Серво сдохла или .. ?

Обсуждение и примеры готовых и самосборных компонент для построения роботов.

Re: Серво сдохла или .. ?

Сообщение RootAdmin » 18 авг 2010, 21:05

Хорошая ссылка - закон Кирхгофа. В школе учат в 7? классе.
Без земли ток проходит через емкости: трансформатора БП, фильтра помех, сеть 220 и опять через емкости и емкость трансформатора. "Наводки" в общем. И длительность импульса на вход сервы - около 1/20 секунды.
Берем мультиметр на переменном напряжении - щупы к НЕСОЕДИНЕННЫМ землям. Не ноль, правильно?
Последний раз редактировалось RootAdmin 18 авг 2010, 22:03, всего редактировалось 1 раз.
Дым, идущий из всех устройств в помещении предвещает появление электрика.
RootAdmin
 
Сообщения: 1725
Зарегистрирован: 07 авг 2010, 21:29
Откуда: КМВ
прог. языки: C
ФИО: Андрей

Re: Серво сдохла или .. ?

Сообщение Сергей » 18 авг 2010, 21:29

Как это постоянный ток проходит через емкости и трансформаторы? Обоснуйте :D
Сергей
 
Сообщения: 3744
Зарегистрирован: 29 дек 2004, 23:15
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей

Re: Серво сдохла или .. ?

Сообщение Shockk » 18 авг 2010, 22:33

Да, Сергей, всё работает. А теперь, если не сложно, кто-нибудь объясните почему так происходит ? Что происходит с ШИМ когда он попадает в серво ?
Shockk
 
Сообщения: 18
Зарегистрирован: 09 авг 2010, 15:09
прог. языки: C,C++,Assembler,Perl

Re: Серво сдохла или .. ?

Сообщение Сергей » 18 авг 2010, 23:37

Если в электронике не разбираетесь - советую почитать соответствующую литературу. Про соединение земель я уже сказал "как ток обратно протекать будет?".
Сергей
 
Сообщения: 3744
Зарегистрирован: 29 дек 2004, 23:15
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей

Re: Серво сдохла или .. ?

Сообщение RootAdmin » 19 авг 2010, 23:43

Сергей писал(а):Как это постоянный ток проходит через емкости и трансформаторы? Обоснуйте :D

Переменный! От сети питания - из-за наводок на землях разных источников питания будет некоторое переменное напряжение относительно друг друга.
Дым, идущий из всех устройств в помещении предвещает появление электрика.
RootAdmin
 
Сообщения: 1725
Зарегистрирован: 07 авг 2010, 21:29
Откуда: КМВ
прог. языки: C
ФИО: Андрей

Re: Серво сдохла или .. ?

Сообщение Skyline » 20 авг 2010, 19:16

Решил не открывать новую тему, а спросить здесь, поскольку вопрос несколько схожий. Пытаюсь запустить серву. По программе серва должна поворачиваться то влево, то вправо, но после подачи питания она просто начинает дрожать, как-бы вибрировать на месте. Через некоторое время может градусов на 30 повернуться и снова начинает дрожать. Пробовал сделать просто поворот на определенный градус, результат тот же. МК используется Atmega8, частота 8МГц, серва HexTronik HX5010, питается через стабилизатор, 5В. Собственно, в чем может быть загвоздка?
Аватара пользователя
Skyline
 
Сообщения: 278
Зарегистрирован: 12 май 2010, 13:30
Откуда: Уральск-Самара
Skype: sky-jap
прог. языки: Bascom AVR Basic
ФИО: Полулях Сергей Валерьевич

Re: Серво сдохла или .. ?

Сообщение RootAdmin » 21 авг 2010, 03:15

Ну, попробуем удаленную отладку. Для начала вопрос - есть пара свободных ног на атмеге? Вешаем на одну светодиод (не забываем про резистор), на вторую - кнопку...
В программу (предполагаю что умеет генерировать Шим разной скважности) дописываем зажигание светодиода при генерации ШИМ первой длительности и выключение при второй.
И смену режима по нажатию кнопки.
Возможно просто что "положения" меняются слишком часто и серва не успевает отработать.
Дым, идущий из всех устройств в помещении предвещает появление электрика.
RootAdmin
 
Сообщения: 1725
Зарегистрирован: 07 авг 2010, 21:29
Откуда: КМВ
прог. языки: C
ФИО: Андрей

Re: Серво сдохла или .. ?

Сообщение Skyline » 21 авг 2010, 09:00

RootAdmin писал(а):Для начала вопрос - есть пара свободных ног на атмеге?

Есть и даже не пара!
В программу (предполагаю что умеет генерировать Шим разной скважности) дописываем зажигание светодиода при генерации ШИМ первой длительности и выключение при второй.И смену режима по нажатию кнопки.

А вот тут проблема, работал только с аппаратным ШИМом. К тому же програмлю на Баскоме!
Возможно просто что "положения" меняются слишком часто и серва не успевает отработать.

Если так, то как с этим бороться?
Аватара пользователя
Skyline
 
Сообщения: 278
Зарегистрирован: 12 май 2010, 13:30
Откуда: Уральск-Самара
Skype: sky-jap
прог. языки: Bascom AVR Basic
ФИО: Полулях Сергей Валерьевич

Re: Серво сдохла или .. ?

Сообщение RootAdmin » 21 авг 2010, 19:37

Попробовать на порядок увеличить время нахождения сервы в каждом положении для начала. Или сначала зашить программу для одного положения (1,1 мс например) - и посмотреть станет ли в него серва. И как себя будет вести.
Да, а паузы МЕЖДУ импульсами достаточны? Пусть будут больше чем положено, лишь бы не меньше.
Дым, идущий из всех устройств в помещении предвещает появление электрика.
RootAdmin
 
Сообщения: 1725
Зарегистрирован: 07 авг 2010, 21:29
Откуда: КМВ
прог. языки: C
ФИО: Андрей

Re: Серво сдохла или .. ?

Сообщение galex1981 » 21 авг 2010, 22:40

Приведите код - может легче найти проблему будет
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: Серво сдохла или .. ?

Сообщение Skyline » 21 авг 2010, 22:48

Вот код:
Код: Выделить всёРазвернуть
$regfile = "m8def.dat"

$crystal = 8000000

Config Portd.2 = Output

Config Servos = 1 , Servo1 = Portd.2 , Reload = 11

Dim I As Integer , P As Integer

P = 12

Enable Interrupts

Servo(1) = 101

Wait 1

Do

For I = 101 To 150
Servo(1) = I : Waitms P
Next

For I = 150 To 200
Servo(1) = I : Waitms P
Next

For I = 200 To 150 Step -1
Servo(1) = I : Waitms P
Next

For I = 150 To 0 Step -1
Servo(1) = I : Waitms P
Next

For I = 0 To 101
Servo(1) = I : Waitms P
Next

Loop

End
Аватара пользователя
Skyline
 
Сообщения: 278
Зарегистрирован: 12 май 2010, 13:30
Откуда: Уральск-Самара
Skype: sky-jap
прог. языки: Bascom AVR Basic
ФИО: Полулях Сергей Валерьевич

Re: Серво сдохла или .. ?

Сообщение Skyline » 22 авг 2010, 09:37

Попробовал просто подать питание на серву. Сначала подал с аккумов(7,5В 2200 мАч), через стаб на 5В, серва дернулась и градусов на 30 повернулась, затем подал с БП(12В) тоже через стаб на 5В, серва крутанулась от одного края до другого. Не знаю она вообще должна вращаться без сигнала, просто подав на неё питание?
Аватара пользователя
Skyline
 
Сообщения: 278
Зарегистрирован: 12 май 2010, 13:30
Откуда: Уральск-Самара
Skype: sky-jap
прог. языки: Bascom AVR Basic
ФИО: Полулях Сергей Валерьевич

Re: Серво сдохла или .. ?

Сообщение Сергей » 22 авг 2010, 10:37

Может, конденсатор, который ты заряжаешь импульсами, может быть заряжен и соотв. получится рандомный импульс. Чтобы такого не было, необходимо линию сигнала подцепить на землю, во время тестирования.
Сергей
 
Сообщения: 3744
Зарегистрирован: 29 дек 2004, 23:15
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей

Re: Серво сдохла или .. ?

Сообщение Skyline » 23 авг 2010, 16:56

Есть еще пару вопросов: при каком значении серва HX5010 находится в среднем положении и какая нужна длина импульса для этой модели сервы?
Аватара пользователя
Skyline
 
Сообщения: 278
Зарегистрирован: 12 май 2010, 13:30
Откуда: Уральск-Самара
Skype: sky-jap
прог. языки: Bascom AVR Basic
ФИО: Полулях Сергей Валерьевич

Re: Серво сдохла или .. ?

Сообщение Skyline » 27 авг 2010, 10:49

Вроде получилось заставить серву болтать из стороны в сторону. Попробовал на другом МК Atmega16 + не много другой код.Если кому надо будет вот он:
Код: Выделить всёРазвернуть
$regfile = "m16def.dat"                                    
$crystal = 8000000                                           
Config Portd.4 = Output                                     
Config Servos = 1 , Servo1 = Portd.4 , Reload = 11
Dim I As Integer , P As Integer

P = 10                                                     

Enable Interrupts
Servo(1) = 101                                             
Wait 1

Do
For I = 45 To 90 Step 1                                     
  Servo(1) = I
  Waitms P
Next

For I = 90 To 135 Step 1                                   
  Servo(1) = I
  Waitms P
Next

For I = 135 To 90 Step -1                                 
  Servo(1) = I
  Waitms P
Next

For I = 90 To 45 Step -1                                   
  Servo(1) = I
  Waitms P
Next
Loop
End

Теперь другая проблемка, когда идет прием команд с пульта(серва вне работы, просто включена в разъем) во время каждой команды серва поворачивается градусов на 25-30, упирается в край и начинает грузить питание. Что сделать, чтобы избавиться от этого? Не отключать же каждый раз серву!
Аватара пользователя
Skyline
 
Сообщения: 278
Зарегистрирован: 12 май 2010, 13:30
Откуда: Уральск-Самара
Skype: sky-jap
прог. языки: Bascom AVR Basic
ФИО: Полулях Сергей Валерьевич

Пред.След.

Вернуться в Готовые модули

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

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