Телеметрия для Авто
Всем привет, есть такое желание собрать недорогую телеметрию для авто. передатчик и приемник взять на 433 МГц. сборка
на передатчике подключить ATMega8
1.до 3-х датчиков температуры (DS18b20);
2.датчик тока;
3.до 3-х входов измерения напряжения
4.можно еще датчик холла для измерения скорости.
Мега будет все показания собирать, кодировать и отправлять на другую мегу которая будет все расшифровывать и выводить на LCD 16х2.
как то так я себе это представляю.
Примерная схема передатчика.
Они тормозят только в протеусе, потому что у них стоит по умолчанию большое время ожидания. Измени время ожидания, в свойствах датчика, и будет работать быстро. В железе они работают мнгновено ничего не тормозит.
Они тормозят только в протеусе, потому что у них стоит по умолчанию большое время ожидания. Измени время ожидания, в свойствах датчика, и будет работать быстро. В железе они работают мнгновено ничего не тормозит.
Спасибо, но все таки наверно остановлюсь на LM35DZ (нашел недорого на Китае)
Вот накидал примерно схему приемника, пока с экраном 20х4, может потом будет графический 128х64, а пока так.
В меню думаю будут настройки алармов по напряжению, температуры, потом настройка скорости по длине колеса и хотелось настройку включение подсветки по фоторизистору.
попробовал накидать программу для приемника. UP- настройка алармов (“left”- “right”+ установка) down выход.
right другие настройки.
добавил таймер с момента включения.
Сергей подскажите как у вас реализован датчик скорости?
Сергей подскажите как у вас реализован датчик скорости?
будет на датчике холла, и два магнита на внутренней стороне обода. считаем сколько пришло импульсов за 500 мс дальше вычитаем из расчета длины колеса.
Датчик холла тот который выдает “0” при наличии магнитного поля.
Прошу помощи.
при расчете “выкаченных 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” ?
используйте фиксированную точку. например, переменную 4-х байтную, типа long. ваше значение умножайте на 1000 и так храните. перед выводом на экран поделите на 1000.
Уперся в написание протокола передачи данных. мне нужно сначала послать знак признака переменной (< - ADC0, > - ADC1, @ - ADC2 и т.д. ) потом надо передать саму переменную но так как переменная больше 8 бит ее надо разделить и отправить.
В как приемнике организовать условие что бы данные из буфера RX записались в нужную переменную???
if (getchar() == ‘<’)
ub=getchar();
С одним таким условием записывается переменная, а если поставить больше условий
if (getchar() == ‘<’)
sb=getchar();
if (getchar() == ‘>’)
ub=getchar();
то нечего не пишется. 😦
может надо после определения признака переменной сдвинуть буфер ???
Не влезал глубоко в твою тему, но а если:
char temp=getchar();
switch(temp)
{
case ‘<’:
sb=getchar(); break;
case ‘>’:
ub=getchar(); break;
default:
…
}
Можно еще попробовать функцию, которая не считывает символ из буфера и удаляет прочтенное значение (getchar()), а только считывает значение. Сейчас уже не помню (спрыгнул с сишки), вроде peek зовется.
Получилось закодировать, передать и раскодировать 6 переменных по 8 бит. скорость 2400 бит/с (скорость обновления данных получилась большая) приемник передатчик этот (не для рекламы), просто хотел посмотреть на что он годиться. вышел на стадион передатчик положил на землю, стабильное расстояние 50м. , отошел на 100 метров тоже берет без ошибок. так это при том что нет контрольной суммы для проверки подлинности результатов.
Всем доброго дня, вчера вытравил плату передатчика.
Сегодня делали вылазку на стадион. Немного погоняли, жаль забыли взять нормальную камеру, что бы заснять работу телеметрии. Так что снимали телефоном
Связь держит практически до 100 метров иногда проскакивают ошибки но работает.
характеристики: измерение 2х банок акка; замер температуры двигателя, регулятора (ESC) и LiPo; замер тока, расчет выкаченных mAh, время с момента включения; Температура воздуха (датчик установленный на приемнике); скорость; напряжение акка приемника.
Теперь по меню…(кнопка вверх) установка максимальных значений температур, минимальных значений акков. включение выключение звука.
дальше (кнопка вправо) установка длины круга колеса (для расчета скорости), установка контрастности дисплея, установка яркости подсветки дисплея, чувствительность включение подсветки по фоторезистору.
еще (кнопка влево) средня скорость, максимальная скорость. (кнопка вниз) сброс времени и выкаченных mAh.
Ну прикольно! Молодец!
Только мне применить ни где…
Я авиамоделист. И у меня уже БПЛА летает, с автопилотом, ну телеметрия само собой.
как реалезована снятие информации о напряжении банок??? я имею ввиду железо. я когда делал для скорости использовал стандартгый traxxas комплект датчик хола и магнит.
а если можно схематично делитель как что подрублено. ну или на словах. на сколько понял к балансировочнм разьемам запитано?
я пульт делал у меня проблема была что мог принять тока 1 значение с передатчика. потом как то стал читать поочередно порт и смог читать по несколько значений.
Верно, балансировочный разъем подключается.
а какие кондеры на кристале и стабилизаторе? делал на атмеге но что то грелся у меня стабилизатор.
а как определить выкаченый ток?
на стабилизаторе 1000х25в плюс 100n. на входа ADC не ставил, поставил на AREF 100n и на AVCC поставил индуктивность и 100n.
а как определить выкаченый ток?
Ir=Ir+((I*10)/2.88); // по прерыванию раз в секунду.
где Ir - выкаченные, I - ADC полученное с передатчика. тип Ir, I - unsigned long int