Телеметрия для Авто
Всем привет, есть такое желание собрать недорогую телеметрию для авто. передатчик и приемник взять на 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 метров тоже берет без ошибок. так это при том что нет контрольной суммы для проверки подлинности результатов.
Всем доброго дня, вчера вытравил плату передатчика.