Arduino для BAIT BOAT...
Нет, 256 это протяженность импульса, пауза специально отрабатывается…
Сам импульс меняется не от 0% до 100%, а от 50% до 100% (от 1 до 2 мс). Если 100% - 255 тиков, то 50% - это 127 тиков.
Сам импульс меняется не от 0% до 100%, а от 50% до 100% (от 1 до 2 мс). Если 100% - 255 тиков, то 50% - это 127 тиков.
это для случая когда есть нейтраль где то по середине но сигнал может быть и 1 и 50 тиков 0-50% одним словом примерно такие должны быть параметры – 700мс=0%=0, 1510мс=50%=127, 2200мс=100%=255
так что если у вас положение 0, это среднее положение стика, то да, это 127.
Мы опять не понимаем друг друга. В Вашем примере 100% импульса - 2200 мкс и 255 тиков. В таком случае один тик равен 2200/255 = 8,63 мкс. Для формирования импульса в 700 мкс нам понадобится 81 тик. Диапазон полезного сигнала составит 2200-700 = 1500 мкс или 174 тика (условно). Перед информационной частью импульса в любом случае идет “пустышка” - 700 мкс.
По Вашему сценарию, когда 700 мкс - это 0%, 2200 мкс - это 100%, а один тик равен (2200-700)/255 = 5,8 мкс, таймер придется запускать дважды.
В первом цикле он должен сформировать “пустышку” в 700 мкс (119 тиков по 5,8 мкс каждый), а во втором - информационную часть импульса - от 0 до 255 тиков по 5,8 мкс. На практике импульс формируется за один цикл работы таймера, а ход ручки соответствует изменению импульса от 1150 до 1850 мкс, остальная часть достается триммеру и дуалрайтам. По факту на управление сервой от ручки остается (1850-1150)/8,63 = 81 тик.
Александр, не утруждайтесь. Это не “не понимаем”.
Дурака включать или уводить спор в сторону на месте где нужно было написать: извините, ошибся- это обычное поведение оппонента.
В Вашем примере 100% импульса - 2200 мкс и 255 тиков. В таком случае один тик равен 2200/255 = 8,63 мкс.
понимаем! но жуем одно и то же. дело еще и в том что 0 тоже далеко не 0мкс , минимуму соответствует примерно 700мкс(для апаратуры) поэтому делить нужно не 2200.
По Вашему сценарию, когда 700 мкс - это 0%, 2200 мкс - это 100%, а один тик равен (2200-700)/255 = 5,8 мкс, таймер придется запускать дважды.
он и работает “дважды” один отрабатывает период, запускает процес формирования импульса заданной частотой(порядка 50 гц), а второй отслеживает скважность(длительность) каждого импульса. А за протяженностью оставшегося времени(паузы) ни кто специально не следит, ибо оно не нужно
Перед информационной частью импульса в любом случае идет “пустышка” - 700 мкс.
Именно! А я не учитываю что это время тоже кушает тики того же самого таймера. Исправляюсь!
АТМEGA своим 8-разрядным таймером формирует этот импульс целиком.
Вот в этом мнении мы точно расходимся. я не учитываю что импульс то формируется аппаратно. Таймер в течении отработки импульса не работает два раза чтобы отработать 700, а потом остальное. Тут вы правы 100%
И больше того 2200 которые “предел” для сервы, но тоже еще не край для таймера. он же после срабатывания должен будет и дальше щелкать …
Дурака включать … … - это обычное поведение оппонента.
Нам это давно понятно и вАм не хворать…
Александр, не утруждайтесь. Это не “не понимаем”…
Сергей, тут дело чуть сложнее. Я для себя пытаюсь разобраться в возможностях Ардуино при работе со стандартными библиотеками. Пока я пришел в выводу, что библиотеки для работы с сервами годятся для построения наглядных пособий по робототехнике.
Получается, что для обработки и генерации сервоимпульсов нормального качества нужно использовать 16-разрядный таймер, либо делать это программно.
Учитывая тот факт, что сервоимпульс максимальной длительности 2 мс занимает 10% от такта в 20 мс, то на прием и выдачу на выход такого импульса требуется не более 20% рабочего времени контроллера, остальные 80% спокойно идут на математику. У меня программно получается сделать один тик равный 6 тактам микроконтроллера. При 8 МГц получается разрешение 2667 тиков на импульс в 2 мс. Соответственно, никакого джиттера нет и в помине.
Сергей, тут дело чуть сложнее. Я для себя пытаюсь разобраться в возможностях Ардуино при работе со стандартными библиотеками.
Библиотеку “серво” с натяжкой можно назвать стандартной или базовой.
Но вопрос даже не в этом а в том что свойства какой то библиотеки начали приписывать самому микроконтроллеру.
Было бы не верно даже свойства какой то библиотеки приписывать среде ардуино, а не то что микроконтроллеру.
Все работает и без джиттера и на атмеге и в среде ардуино. Масса примеров этому.
В возможностях Меги 328 я не сомневаюсь. Меня больше интересует летопись “Великого грабельного похода” 😃
Все работает и без джиттера и на атмеге и в среде ардуино. Масса примеров этому.
Дайте ссылку на примеры… Или на ресурс, где можно об этом почитать?
Если можно, с привязкой к ардуино… 😃
К вопросу о джиттере на контроллере с 8-битным таймером, который не используется 😃 :
Появилась достаточно забавная приблуда - DigiSpark. Это платка с attiny85, которую можно программировать из среды Arduino через USB порт.
Обзор тут: mysku.ru/blog/china-stores/36691.html
Она в несколько раз меньше и легче Ардуины-Нано и ИМХО идеально подходит для большинства околомодельных задач.
Появилась достаточно забавная приблуда - DigiSpark. Это платка с attiny85, которую можно программировать из среды Arduino через USB порт.
А мне тут мало было 328-й, таймеров, последовательных портов, нашел компактную плату , уже испытал.
ru.aliexpress.com/item/…/32802520577.html
И да, получил желтого утенка - внешнего датчика эхолота.
Попытал- протокол до примитивности прост. Будет в моей лодке, конечно без штатного радиоканала. Радиоканал будет собственный, общий- двунаправленный.
Управление-телеметрия.
Дайте ссылку на примеры…
Практически все LRS- ки на атмеге и писались в среде ардуино, хотя знаю что некоторые щеки надувают, стесняются про это говорить.
Несколько проектов- открытые.
Уважаемые форумчане, никто не заморачивался привязки GPS к ардуино и по радио каналу скидывать положение кораблика на вторую ардуино и на LCD экран ? В идеале конечно лучше запоминать точки прикормки и гнать автопилотом , но готовых решений не видел . Конечно на тубе есть ,но все как то скудновато по реализации .
Попытал- протокол до примитивности прост.
Сергей, можно подробнее?
Уважаемые форумчане, никто не заморачивался привязки GPS к ардуино и по радио каналу скидывать положение кораблика на вторую ардуино и на LCD экран ? В идеале конечно лучше запоминать точки прикормки и гнать автопилотом , но готовых решений не видел . Конечно на тубе есть ,но все как то скудновато по реализации .
Заморачивались. Только вряд ли кто выложит готовое решение, а не на уровне полуфабрикатов.
И потом- LCD разные бывают. Цветные на солнце- только нервы трепать.
У меня будет чернобелый, причем практически только текстовая инфа. Максимум из графики - стрелка направления и расстояние.
Сергей, можно подробнее?
Как выше писали- вначале синхроимпульс…
А вот за ним через время прохождения туда-сюда пачки ультразвука ответный импульс. Единственно, что вас и и многих путало- есть защитный интервал ( время прохождения 40-50 см ( *2)- в это время ничего не будет приниматься. И все…
С температурой не разбирался, да и в моем утенке датчика нет. Но там думаю все тоже просто… После интервала времени, отведенного для ответного импульса максимальной дальности идет 2 байта значения температуры.
…никто не заморачивался привязки GPS к ардуино…
Я пытался использовать ардуинку для подобного проекта, но ни чего хорошего из этого не вышло. Ардуино не сильно любит числа с плавающей точкой и, из за этого страдает точность позиционирования… 😦
Я пытался использовать ардуинку для подобного проекта, но ни чего хорошего из этого не вышло. Ардуино не сильно любит числа с плавающей точкой и, из за этого страдает точность позиционирования…
Надуманная проблема. К тому же все можно считать целочисленкой.
Надумайте её решение и опишите.
А пустые изречения держите при себе.
А пустые изречения держите при себе.
Подобные этому-
Я пытался использовать ардуинку для подобного проекта, но ни чего хорошего из этого не вышло.
Или обосновывайте, что же в ардуинке мешает решить такую простую задачу…
То что не вышло у вас- это же не значит что это невозможно .
Ну вот. Как обычно :“Сам дурак!”
Я там ссылку давал. Читали?
Запустите на ардуино:
float AAA = 2.00000000;
float BBB = 3.00100000;
void setup()
{
Serial.begin(9600);Serial.print (“2.1+3.1=”);
Serial.println (2.1+3.1, 7);Serial.print (AAA, 7);
Serial.print (" + “);
Serial.print (BBB, 7);
Serial.print (” = ");
Serial.println (AAA+BBB, 7);
}
void loop()
{
}
Ну вот. Как обычно :“Сам дурак!”
Я там ссылку давал. Читали?
Запустите на ардуино:
Зачем?
Нужно иметь совсем немного знаний, чтобы так не делать при выполнении поставленной задачи.
Я там ссылку давал. Читали?
Где?