Телеметрия (часть 2)
Прошивка v250 готова.
Днем выложу прошивку, фото, картинки, инструкцию по калибровке и т.д.
Ждемс! 😁 Сборка самолета с запихиванием телеметрии глубоко в брюхо отложена до новой прошивки ☕
Прошивка версии 250 от 8 июля 2009
[скачать v250.hex, 23 кб]
[скачать v250nb.hex для плат без бародатчиков, 23 кб]
Изменения относительно прошивки верcии 242:
-
Увеличено до 3 количество попыток перевода в режим 5Гц/38400бод модулей GPS на чипсете MTK (Locosys LS2003x) на старте платы телеметрии
-
Переписан код работы со встроенным АЦП
- Повышена точность обработки всех датчиков, подключенных к АЦП.
-
Убрана автоматическая калибровка датчика тока при старте телеметрии
- Теперь все потребители тока, включая камеру, передатчик, плату телеметрии и т.д. могут быть подключены через датчик тока. Это снижает погрешность при подсчете расхода батарей
-
Введена ручная калибровка датчика тока и запоминание результатов калибровки в EEPROM (энергонезависимая память процессора).
-
Ручная калибровка датчика тока может быть выполнена по желанию пилота в любое время любое количество раз: всего один раз, раз в сезон, перед каждым полетом и т.д.
-
Для выполнения ручной калибровки необходимо выполнить следующие действия:
- Замкнуть контакты +5В и “Вход” разъема ADC6, например, как показано на фото ниже
- Подключить к плате телеметрии датчик тока, при этом к датчику тока не должны быть подключены потребители. Можно провести калибровку прямо на модели, убедившись что к датчику тока в момент калибровки не подключены потребители
- Подключить питание к плате телеметрии
- Выждать 5 секунд
- Отключить питание и разомкнуть контакты на разъеме ADC6
-
Факт необходимости ручной калибровки датчика тока определяется по наличию +5В на входе ADC6, поэтому при нормальной эксплуатации платы телеметрии замыкать контакты ADC6 не надо.
-
При отсутствии или повреждении данных в EEPROM рядом со строкой, отображающей величину тока, рисуется звездочка, что обозначает необходимость [пере]калибровки.
-
Пример подключения платы телеметрии при ручной калибровке датчика тока:
Цену автопилота я пока не рассчитывал.
Сначала телеметрию, а потом автопилот - можно. Личку я вычистил, давайте в личку.
Автопилот - ориентировочно через месяц будет готов на 100%
написал в личку!
Прошивка версии 250 от 8 июля 2009
[*]Замкнуть контакты +5В и “Вход” разъема ADC6, например, как показано на фото ниже
Так вроде на фото перемычка стоит на ADC7, а к ADC6 подключен сам датчик тока?
Это опечатка или я чего-то не доганяю?
Да, ADC7. Это я попутал в тексте. Ща поправлю текст.
На картинке всё правильно.
А в чем, если не секрет было несовершенство работы АЦП и как вы это исправили?
В чем объективно выражается улучшение точности? Вы ведь это улучшение как-то зарегистрировали.
Ну Тим, ты с кабелем подляну кинул. Сегодня объехал 7 ! точек, в т.ч. и Митино - такие кабели говорят были лет 5 назад, когда компы по усб соединяли. Короче купил два провода с такими набалдашниками, буду пробовать сделать из них один…
А советовали то выше прямо противоположное !!!
Во-1 разместить в самолёта патч над штырём почти анриал.
Во-2 полигон патча должен быть отвязан по вч от штыря. Иначе штырь заземлится на него и станет только хуже. Обоим.
От сюда и такие рекомендации - исходя из реалий самолёта и отсутствии инфы о развязке.
Бывают и с двумя - но и цены не те - и скорости очень далеки от нужных нам.
И углы поворота очень ограничены.
Смотря для чего. Еси летать в одну сторону, угла в 180 градусов хватит за газа. Скорость? Важна только при близких полётах, когда сигнал 900 МГц и так попадёт в тарелку. За счёт переотражений. А на удалении в километр шустрость от тарелки уже не нужна.
Итак, насчет усб кабелей. Мое предположение оказалось правильным. Необходимый девайс делается из двух валяющихся усб кабелей. Разрезаем, берем нужные концы, соединяем поцветно все провода. Изолируем, прозваниваем для проверки (главное с питанием не накосячить - это крайние красный и черный или синий). Все работает.
То Тим: в хелпе прошивалки допиши, что надо выбрать тип проца !
>То Тим: в хелпе прошивалки допиши, что надо выбрать тип проца !
У меня всю жисть прошивалка сама тип проца определяет.
>А в чем, если не секрет было несовершенство работы АЦП и как вы это исправили?
АЦП работает в режиме Free Run, в этом режиме он работает сам по себе, без вмешательства с моей стороны, и через какой-то интервал обновляет результаты преобразования аналога в цифру в регистрах ADCL и ADCH.
До прошивки 250 в цикле работы с АЦП я делал всякую математику и т.д., и в том же цикле опрашивал ADCL и ADCH 64 раза, накапливая результат для последующей обработки. Внути цикла на 64 выборки не было никакой гарантии того, что в Х+1-й выборке читаются обновленные значения ADCL и ADCH, а не результат предыдущего преобразования.
Между собственно обращениями к ADCL и ADCH было много математики, а данные читались только после того, как флаг ADIF в регистре ADCSRA взводился самим АЦП. Но вручную он не сбрасывался, то есть ожидание ADIF, вставленное перед опросом ADCL и ADCH, было бесполезно.
Спасало ситуацию наличие большого количества математики - я не читал все 64 значения сразу, а, делая математику, хоть как-то разносил выборки по времени.
Теперь на каждом цикле перед чтением ожидается, а после чтения ADCL и ADCH принудительно сбрасывается флаг ADIF, что гарантирует, что из 64 выборок, входящих в сумму, все 64 являются уникальными.
Глюк никак не проявлял себя до тех пор, пока я из цикла работы с АЦП не убрал всю левую математику. После этого он стал заметен невооруженным взглядом и был, соответственно, сразу же прибит.
Вопрос №3: учитывает ли индикатор тока/расхода потребление телеметрией, если она питается через балансир ?
А зарегистрировал я глюк по левым данным калибровки датчика тока в EEPROM.
5В, деленное на 3 резисторным делителем на входе, очень сложно спутать с чем-то другим, оно в глаза бросается 😃
Пришлось копать, пока не докопался до АЦП.
После калибровки датчкика тока показатели расхода прыгают от 0,14 до 0 хаотично. Это так должно быть ?
>Вопрос №3: учитывает ли индикатор тока/расхода потребление телеметрией, если она питается через балансир ?
Конечно, нет. Хотите, чтоб учитывало - питайте через датчик тока.
Хотите еще, чтоб меряло батарею побаночно - бросьте с балансирного разъема промежуточные напряжения банок на соответствующие входы телеметрии.
Потребление тока по этим входам будет порядка сотых долей микроампера.
>После калибровки датчкика тока показатели расхода прыгают от 0,14 до 0 хаотично. Это так должно быть ?
Да, это шум. Могу встроить сглаживание показаний тока для отображения, но в сам подсчет вставлять не буду, иначе будет недобор потребления при резких пиках тока.
Добавление: Вру, не могу. Места под код осталось 14 байт. Могу при отображении убрать сотые доли ампера, чтоб не смущали. Всё равно при токе больше 9.99А выводится уже два знака перед запятой и 1 после запятой.
Подержите в таком состоянии телеметрию с часик, не думаю, что из-за шума набежит больше 3-5 мАч. У меня не набежало 😃
>Да, это шум. Могу встроить сглаживание показаний тока для отображения, но в сам подсчет вставлять не буду, иначе будет недобор потребления при резких пиках тока.
Кстати, давно хотел спросить, как Вы считаете потребленные мАч: как корень из интерграла квадратов мгновенных выборок, или как накапливаемое среднее?
>Кстати, давно хотел спросить, как Вы считаете потребленные мАч: как корень из интерграла квадратов мгновенных выборок, или как накапливаемое среднее?
Интегрирую методом прямоугольников (так оно вроде называлось? 😃)
По смыслу:
- Я точно знаю, каков интервал между соседними по времени опросами датчика тока. Это происходит с частотой 50/8=6.25 раз в секунду. то есть, интервал между опросами равен 1/6.25=0.16 сек или 160 мсек.
- Получив величину тока с датчика в данный момент, я считаю, что ток был константой в течение 160 мсек перед данным моментом. То есть, потребление батареи за прошедшие 160мсек равно 160мсек*ток.
- Всё это повторяется непрерывно, и в результате из таких вот капелек складывается потребленный заряд батареи.
Artie, що це таке?
Следящая антенна, вестимо. “Водит жалом” (14-децибельное, панельное) за самолеткой.
А як она узнае где самолетка?
А вона ево чуеть ! 😛
На самом деле, на борту gps, а перед стартом я нажимаю на капу кнопочку, чтобы сбросить высоту, полетное время и запомнить координаты “базы”; - вот из разницы текущих координат борта и точки старта и считаются азимут и угол места…