Arduino для BAIT BOAT...

Панкратов_Сергей

Александр, не утруждайтесь. Это не “не понимаем”.
Дурака включать или уводить спор в сторону на месте где нужно было написать: извините, ошибся- это обычное поведение оппонента.

Probelzaelo
V_Alex:

В Вашем примере 100% импульса - 2200 мкс и 255 тиков. В таком случае один тик равен 2200/255 = 8,63 мкс.

понимаем! но жуем одно и то же. дело еще и в том что 0 тоже далеко не 0мкс , минимуму соответствует примерно 700мкс(для апаратуры) поэтому делить нужно не 2200.

V_Alex:

По Вашему сценарию, когда 700 мкс - это 0%, 2200 мкс - это 100%, а один тик равен (2200-700)/255 = 5,8 мкс, таймер придется запускать дважды.

он и работает “дважды” один отрабатывает период, запускает процес формирования импульса заданной частотой(порядка 50 гц), а второй отслеживает скважность(длительность) каждого импульса. А за протяженностью оставшегося времени(паузы) ни кто специально не следит, ибо оно не нужно

V_Alex:

Перед информационной частью импульса в любом случае идет “пустышка” - 700 мкс.

Именно! А я не учитываю что это время тоже кушает тики того же самого таймера. Исправляюсь!

V_Alex:

АТМEGA своим 8-разрядным таймером формирует этот импульс целиком.

Вот в этом мнении мы точно расходимся. я не учитываю что импульс то формируется аппаратно. Таймер в течении отработки импульса не работает два раза чтобы отработать 700, а потом остальное. Тут вы правы 100%

И больше того 2200 которые “предел” для сервы, но тоже еще не край для таймера. он же после срабатывания должен будет и дальше щелкать …

Панкратов_Сергей:

Дурака включать … … - это обычное поведение оппонента.

Нам это давно понятно и вАм не хворать…

V_Alex
Панкратов_Сергей:

Александр, не утруждайтесь. Это не “не понимаем”…

Сергей, тут дело чуть сложнее. Я для себя пытаюсь разобраться в возможностях Ардуино при работе со стандартными библиотеками. Пока я пришел в выводу, что библиотеки для работы с сервами годятся для построения наглядных пособий по робототехнике.
Получается, что для обработки и генерации сервоимпульсов нормального качества нужно использовать 16-разрядный таймер, либо делать это программно.
Учитывая тот факт, что сервоимпульс максимальной длительности 2 мс занимает 10% от такта в 20 мс, то на прием и выдачу на выход такого импульса требуется не более 20% рабочего времени контроллера, остальные 80% спокойно идут на математику. У меня программно получается сделать один тик равный 6 тактам микроконтроллера. При 8 МГц получается разрешение 2667 тиков на импульс в 2 мс. Соответственно, никакого джиттера нет и в помине.

Панкратов_Сергей
V_Alex:

Сергей, тут дело чуть сложнее. Я для себя пытаюсь разобраться в возможностях Ардуино при работе со стандартными библиотеками.

Библиотеку “серво” с натяжкой можно назвать стандартной или базовой.
Но вопрос даже не в этом а в том что свойства какой то библиотеки начали приписывать самому микроконтроллеру.
Было бы не верно даже свойства какой то библиотеки приписывать среде ардуино, а не то что микроконтроллеру.
Все работает и без джиттера и на атмеге и в среде ардуино. Масса примеров этому.

V_Alex

В возможностях Меги 328 я не сомневаюсь. Меня больше интересует летопись “Великого грабельного похода” 😃

appolinari
Панкратов_Сергей:

Все работает и без джиттера и на атмеге и в среде ардуино. Масса примеров этому.

Дайте ссылку на примеры… Или на ресурс, где можно об этом почитать?
Если можно, с привязкой к ардуино… 😃

V_Alex

Появилась достаточно забавная приблуда - DigiSpark. Это платка с attiny85, которую можно программировать из среды Arduino через USB порт.
Обзор тут: mysku.ru/blog/china-stores/36691.html
Она в несколько раз меньше и легче Ардуины-Нано и ИМХО идеально подходит для большинства околомодельных задач.

Панкратов_Сергей
V_Alex:

Появилась достаточно забавная приблуда - DigiSpark. Это платка с attiny85, которую можно программировать из среды Arduino через USB порт.

А мне тут мало было 328-й, таймеров, последовательных портов, нашел компактную плату , уже испытал.
ru.aliexpress.com/item/…/32802520577.html
И да, получил желтого утенка - внешнего датчика эхолота.
Попытал- протокол до примитивности прост. Будет в моей лодке, конечно без штатного радиоканала. Радиоканал будет собственный, общий- двунаправленный.
Управление-телеметрия.

appolinari:

Дайте ссылку на примеры…

Практически все LRS- ки на атмеге и писались в среде ардуино, хотя знаю что некоторые щеки надувают, стесняются про это говорить.
Несколько проектов- открытые.

esau

Уважаемые форумчане, никто не заморачивался привязки GPS к ардуино и по радио каналу скидывать положение кораблика на вторую ардуино и на LCD экран ? В идеале конечно лучше запоминать точки прикормки и гнать автопилотом , но готовых решений не видел . Конечно на тубе есть ,но все как то скудновато по реализации .

Панкратов_Сергей
esau:

Уважаемые форумчане, никто не заморачивался привязки GPS к ардуино и по радио каналу скидывать положение кораблика на вторую ардуино и на LCD экран ? В идеале конечно лучше запоминать точки прикормки и гнать автопилотом , но готовых решений не видел . Конечно на тубе есть ,но все как то скудновато по реализации .

Заморачивались. Только вряд ли кто выложит готовое решение, а не на уровне полуфабрикатов.
И потом- LCD разные бывают. Цветные на солнце- только нервы трепать.
У меня будет чернобелый, причем практически только текстовая инфа. Максимум из графики - стрелка направления и расстояние.

Musgravehill:

Сергей, можно подробнее?

Как выше писали- вначале синхроимпульс…
А вот за ним через время прохождения туда-сюда пачки ультразвука ответный импульс. Единственно, что вас и и многих путало- есть защитный интервал ( время прохождения 40-50 см ( *2)- в это время ничего не будет приниматься. И все…
С температурой не разбирался, да и в моем утенке датчика нет. Но там думаю все тоже просто… После интервала времени, отведенного для ответного импульса максимальной дальности идет 2 байта значения температуры.

appolinari
esau:

…никто не заморачивался привязки GPS к ардуино…

Я пытался использовать ардуинку для подобного проекта, но ни чего хорошего из этого не вышло. Ардуино не сильно любит числа с плавающей точкой и, из за этого страдает точность позиционирования… 😦

Панкратов_Сергей
appolinari:

Я пытался использовать ардуинку для подобного проекта, но ни чего хорошего из этого не вышло. Ардуино не сильно любит числа с плавающей точкой и, из за этого страдает точность позиционирования…

Надуманная проблема. К тому же все можно считать целочисленкой.

appolinari

Надумайте её решение и опишите.
А пустые изречения держите при себе.

Панкратов_Сергей
appolinari:

А пустые изречения держите при себе.

Подобные этому-

appolinari:

Я пытался использовать ардуинку для подобного проекта, но ни чего хорошего из этого не вышло.

Или обосновывайте, что же в ардуинке мешает решить такую простую задачу…
То что не вышло у вас- это же не значит что это невозможно .

appolinari

Ну вот. Как обычно :“Сам дурак!”
Я там ссылку давал. Читали?
Запустите на ардуино:

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()
{
}

Панкратов_Сергей
appolinari:

Ну вот. Как обычно :“Сам дурак!”
Я там ссылку давал. Читали?
Запустите на ардуино:

Зачем?
Нужно иметь совсем немного знаний, чтобы так не делать при выполнении поставленной задачи.

appolinari:

Я там ссылку давал. Читали?

Где?

esau
Панкратов_Сергей:

Подобные этому-

Или обосновывайте, что же в ардуинке мешает решить такую простую задачу…
То что не вышло у вас- это же не значит что это невозможно .

Немного не понял причем тут плавающая запятая . Считываем одной ардуиной координаты и по радиоканалу скидываем на вторую . При длине строки в 20 символов думаю уместится все с головой .