Технический форум по робототехнике.
roma95 » 15 янв 2014, 23:21
Большое спасибо) разобрался с этим) а для эти два файла? Что они делают?
Nesenin » 16 янв 2014, 20:38
а там нужный код для настройки входов и подсчета длины импульса.
roma95 » 16 янв 2014, 21:07
а можно тут в программе как то расширить центральное положение стика?, чтобы реле не щелкали (триммеры механические, аппаратура приметив)
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 раз.
roma95 » 16 янв 2014, 22:27
так получается 0,250-это промежуток частоты ШИМ от 0 до 255, 0,350 от куда берется? изначально
Добавлено спустя 25 минут 5 секунд:
в вашей программе 3 канал получается вырубает шим с обоих каналов?
if(button > 1500)
{left = 0;
right = 0;
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 при выключенном передатчике (потере сигнала) ничего не делали с машиной.
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, и использовать третий канал допустим для включения фонарей и пр.?
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);
не сорвется ли ваш танк куда нить ехать при потере сигнала. и если да то надо что то придумать
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. или нет?
Nesenin » 17 янв 2014, 21:48
что там код выдаст в переменных gas, rudder надо глянуть и от этого условие писать.
это вроде как на всех длительность сигнала от 1000 до 1900. а там уж надо смотреть сколько в реале на конкретном приемнике
roma95 » 17 янв 2014, 21:52
ай, нашел. от 1000 до 2000 равен
Nesenin » 17 янв 2014, 21:54
ага. 2000 max
roma95 » 17 янв 2014, 22:15
а atmega использует кварц при работе с данной программой? можно ли его исключить если собирать драйвер на отдельной плате?
roma95 » 03 фев 2014, 20:05
ну вот( на arduino nano все работает как нужно, а на arduino mega 2560 вообще ни как. в чем может быть проблема?
подключал к одноименным цифровым ножкам.
roma95 » 05 фев 2014, 21:47
ни кто не подскажет?