roboforum.ru

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

Драйвер двигателя на ардуино

Re: Драйвер двигателя на ардуино

roma95 » 15 янв 2014, 23:21

Большое спасибо) разобрался с этим) а для эти два файла? Что они делают?

Re: Драйвер двигателя на ардуино

Nesenin » 16 янв 2014, 20:38

а там нужный код для настройки входов и подсчета длины импульса.

Re: Драйвер двигателя на ардуино

roma95 » 16 янв 2014, 21:07

а можно тут в программе как то расширить центральное положение стика?, чтобы реле не щелкали (триммеры механические, аппаратура приметив)

Re: Драйвер двигателя на ардуино

Nesenin » 16 янв 2014, 21:47

можно. там в проверке есть "left >= 1550" где 1550 это время в миллисекундах сигнала с приемника. то есть 1500 это как бы середина. у меня по 50мс +-
стало быть надо значения 1550 и 1450 поменять. а вот тут вот " left = map(left, 0, 350, 0, 255);" это надо смотреть функцию http://arduino.ru/Reference/Map и менять значение 350 на что то подходящее, что даст нам регулировку диапозона пропорционального управления ШИМом.
Последний раз редактировалось Nesenin 16 янв 2014, 22:26, всего редактировалось 1 раз.

Re: Драйвер двигателя на ардуино

roma95 » 16 янв 2014, 22:27

так получается 0,250-это промежуток частоты ШИМ от 0 до 255, 0,350 от куда берется? изначально

Добавлено спустя 25 минут 5 секунд:
в вашей программе 3 канал получается вырубает шим с обоих каналов?
if(button > 1500)
{left = 0;
right = 0;

Re: Драйвер двигателя на ардуино

Nesenin » 16 янв 2014, 22:36

а это и есть диапозон сигнала с приемника, который будет пропорционально повышать ШИМ от 0 до 255. то бишь у нас, допустим 1550мс это порог при котором начнет расти ШИМ с 0 (1500мс это нулевое положение стика на пульте). 1550+350=1900мс это верхний порог при котором ШИМ будет на максимуме (255) и дальше расти не будет. тут вопрос конкретно в рабочем диапозоне сигнала на приемнике. я, просмотрев значения на своем, выбрал эти пороги 1450-350=1100мс и 1900. если у вас диапозон другой, можно это дело подправить.

Добавлено спустя 5 минут 50 секунд:
ага ток потом обнаружилось что еще бывает значение "0" и условие преобразилась в "if(button > 1500 || button == 0)"
не помню зачем делал это условие. кажись для того чтоб те числа которые появляются в переменных gas, rudder при выключенном передатчике (потере сигнала) ничего не делали с машиной.

Re: Драйвер двигателя на ардуино

roma95 » 16 янв 2014, 22:44

то есть получается эту функцию можно вычеркнуть, заменив тут
if(button > 1500 || button == 0)
{left = 0;
right = 0;
}
else
{
rudder = rudder - 1500;
left = gas + rudder;
right = gas - rudder;
left = constrain(left, 1100, 1900);
right = constrain(right, 1100, 1900);
else на if, и использовать третий канал допустим для включения фонарей и пр.?

Re: Драйвер двигателя на ардуино

Nesenin » 16 янв 2014, 23:05

попробуйте. но лучше бы сначала протестировать прежде чем на выходы чего нить цеплять.
там есть закомментированные строки
//Serial.begin(115200);

//Serial.print(button); Serial.print("\t");
//Serial.print(gas); Serial.print("\t");
//Serial.println(rudder);
вот их бы раскомментировать на компе (в терминале или еще где), почитать да посчитать что там выдаст математика
rudder = rudder - 1500;
left = gas + rudder;
right = gas - rudder;
left = constrain(left, 1100, 1900);
right = constrain(right, 1100, 1900);
не сорвется ли ваш танк куда нить ехать при потере сигнала. и если да то надо что то придумать

Re: Драйвер двигателя на ардуино

roma95 » 17 янв 2014, 21:36

ну а просто записать условие типа: если на пинах 4,5(вход прм) нет сигнала, принадлежащего соответствующему промежутку, то
{left = 0;
right = 0;
?

Добавлено спустя 2 минуты 43 секунды:
еще вот тут натолкнулся, у меня ведь авиамодельный а у вам авто передатчик, так у меня тогда вот тут
left = constrain(left, 1100, 1900);
right = constrain(right, 1100, 1900);
должна получиться пара 0,2000 или 100,1900. или нет?

Re: Драйвер двигателя на ардуино

Nesenin » 17 янв 2014, 21:48

что там код выдаст в переменных gas, rudder надо глянуть и от этого условие писать.
это вроде как на всех длительность сигнала от 1000 до 1900. а там уж надо смотреть сколько в реале на конкретном приемнике

Re: Драйвер двигателя на ардуино

roma95 » 17 янв 2014, 21:52

ай, нашел. от 1000 до 2000 равен :)

Re: Драйвер двигателя на ардуино

Nesenin » 17 янв 2014, 21:54

ага. 2000 max

Re: Драйвер двигателя на ардуино

roma95 » 17 янв 2014, 22:15

а atmega использует кварц при работе с данной программой? можно ли его исключить если собирать драйвер на отдельной плате?

Re: Драйвер двигателя на ардуино

roma95 » 03 фев 2014, 20:05

ну вот( на arduino nano все работает как нужно, а на arduino mega 2560 вообще ни как. в чем может быть проблема? :( подключал к одноименным цифровым ножкам.

Re: Драйвер двигателя на ардуино

roma95 » 05 фев 2014, 21:47

ни кто не подскажет?


Rambler\'s Top100 Mail.ru counter