Телеметрия для Авто

belyay

Всем привет, есть такое желание собрать недорогую телеметрию для авто. передатчик и приемник взять на 433 МГц. сборка
на передатчике подключить ATMega8
1.до 3-х датчиков температуры (DS18b20);
2.датчик тока;
3.до 3-х входов измерения напряжения
4.можно еще датчик холла для измерения скорости.
Мега будет все показания собирать, кодировать и отправлять на другую мегу которая будет все расшифровывать и выводить на LCD 16х2.
как то так я себе это представляю.

belyay

Решил отказаться от цифровых датчиков DS18B20 так как они тормозят все.

ubd

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

belyay
ubd:

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

Спасибо, но все таки наверно остановлюсь на LM35DZ (нашел недорого на Китае)

Вот накидал примерно схему приемника, пока с экраном 20х4, может потом будет графический 128х64, а пока так.
В меню думаю будут настройки алармов по напряжению, температуры, потом настройка скорости по длине колеса и хотелось настройку включение подсветки по фоторизистору.

belyay

попробовал накидать программу для приемника. UP- настройка алармов (“left”- “right”+ установка) down выход.
right другие настройки.
добавил таймер с момента включения.

resiver.rar

belyay

Подскажите возможно ли такие или такие использовать для передачи? Или будут ссориться с аппаратурой управления?
Спасибо.

belyay

3D обзор будующей платы приемника, жаль что в базе не было экрана 20х4.

belyay

Вчерашний вечер принес первые плоды.

YuriK=

Сергей подскажите как у вас реализован датчик скорости?

belyay
YuriK=:

Сергей подскажите как у вас реализован датчик скорости?

будет на датчике холла, и два магнита на внутренней стороне обода. считаем сколько пришло импульсов за 500 мс дальше вычитаем из расчета длины колеса.
Датчик холла тот который выдает “0” при наличии магнитного поля.

belyay

Прошу помощи.
при расчете “выкаченных mA*h” Ir=Ir+(I/8)/3.6;
где Ir- “выкаченные mA*h”, I - 10 бит данных поступившие с борта.
например I-80 (10A, так как 20mV на 1 ампер)
80/8=10/3,6=2.7777777777777777777777777777778
так вот он считает только то что до запятой даже не округляет.
как можно представить функцию без использования “float” ?

RW9UAO

используйте фиксированную точку. например, переменную 4-х байтную, типа long. ваше значение умножайте на 1000 и так храните. перед выводом на экран поделите на 1000.

belyay

Уперся в написание протокола передачи данных. мне нужно сначала послать знак признака переменной (< - ADC0, > - ADC1, @ - ADC2 и т.д. ) потом надо передать саму переменную но так как переменная больше 8 бит ее надо разделить и отправить.
В как приемнике организовать условие что бы данные из буфера RX записались в нужную переменную???
if (getchar() == ‘<’)
ub=getchar();
С одним таким условием записывается переменная, а если поставить больше условий
if (getchar() == ‘<’)
sb=getchar();
if (getchar() == ‘>’)
ub=getchar();
то нечего не пишется. 😦
может надо после определения признака переменной сдвинуть буфер ???

olegbs

Не влезал глубоко в твою тему, но а если:
char temp=getchar();
switch(temp)
{
case ‘<’:
sb=getchar(); break;
case ‘>’:
ub=getchar(); break;
default:

}
Можно еще попробовать функцию, которая не считывает символ из буфера и удаляет прочтенное значение (getchar()), а только считывает значение. Сейчас уже не помню (спрыгнул с сишки), вроде peek зовется.

belyay

Получилось закодировать, передать и раскодировать 6 переменных по 8 бит. скорость 2400 бит/с (скорость обновления данных получилась большая) приемник передатчик этот (не для рекламы), просто хотел посмотреть на что он годиться. вышел на стадион передатчик положил на землю, стабильное расстояние 50м. , отошел на 100 метров тоже берет без ошибок. так это при том что нет контрольной суммы для проверки подлинности результатов.

belyay

Всем доброго дня, вчера вытравил плату передатчика.

TX.rar

7 days later
belyay

Сегодня делали вылазку на стадион. Немного погоняли, жаль забыли взять нормальную камеру, что бы заснять работу телеметрии. Так что снимали телефоном

Связь держит практически до 100 метров иногда проскакивают ошибки но работает.

характеристики: измерение 2х банок акка; замер температуры двигателя, регулятора (ESC) и LiPo; замер тока, расчет выкаченных mAh, время с момента включения; Температура воздуха (датчик установленный на приемнике); скорость; напряжение акка приемника.
Теперь по меню…(кнопка вверх) установка максимальных значений температур, минимальных значений акков. включение выключение звука.
дальше (кнопка вправо) установка длины круга колеса (для расчета скорости), установка контрастности дисплея, установка яркости подсветки дисплея, чувствительность включение подсветки по фоторезистору.
еще (кнопка влево) средня скорость, максимальная скорость. (кнопка вниз) сброс времени и выкаченных mAh.

ubd

Ну прикольно! Молодец!
Только мне применить ни где…
Я авиамоделист. И у меня уже БПЛА летает, с автопилотом, ну телеметрия само собой.

7 days later
Protez1999

как реалезована снятие информации о напряжении банок??? я имею ввиду железо. я когда делал для скорости использовал стандартгый traxxas комплект датчик хола и магнит.

belyay

ADC0 - 1 банка, ADC1 - аккумулятор, 2 банка = аккумулятор- 1 банка. делитель напряжения 18кОм на 2кОм резисторы 1%

Protez1999

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

я пульт делал у меня проблема была что мог принять тока 1 значение с передатчика. потом как то стал читать поочередно порт и смог читать по несколько значений.

belyay

Верно, балансировочный разъем подключается.

Protez1999

а какие кондеры на кристале и стабилизаторе? делал на атмеге но что то грелся у меня стабилизатор.

а как определить выкаченый ток?

belyay

на стабилизаторе 1000х25в плюс 100n. на входа ADC не ставил, поставил на AREF 100n и на AVCC поставил индуктивность и 100n.

Protez1999:

а как определить выкаченый ток?

Ir=Ir+((I*10)/2.88); // по прерыванию раз в секунду.
где Ir - выкаченные, I - ADC полученное с передатчика. тип Ir, I - unsigned long int