Перейти к содержанию

Рекомендуемые сообщения

а "косяк" с отображением отрицательной температуры

будет убран во всех прошивках, руская англ.. транслит?

----------------------------------

незнаеш что писАть? - молчи

будешь казаться умнее

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

можно использовать хоть 99-литровый бак. (в программе массив уровня топлива делал "с запасом" до 99 литров). единственное НО: схема расчитана на сопротивление датчика уровня топлива 380-390 ом. если сопротивление больше, то нужно пересчитать входной делитель на операционнике.

Отлично! Завтра измерю сопротивление датчика и отпишусь. И есть ещё один вопрос: учтена ли "болтанка" топливного датчика во время движения?

Если долго мучиться, что-нибудь... сломается.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

При пустом баке "0" Ом, а при полном "96" Ом. Что делать?

И второй вопрос: можно ли перебросить второй датчик температуры на свободный 28pin МК.

Изменено пользователем Zvermarkiz

Если долго мучиться, что-нибудь... сломается.

Ссылка на комментарий
Поделиться на другие сайты

Автору поклон за проделанную работу.

Прибор прекрасно работает!!!!!!!

Замечательный девайс, давно мечтал о таком приборе.

От идеи совмещения штатного прибора пришлось отказаться, вы были полностью правы есть температурная зависимость,

сам замечал в холодную погоду вначале врет а после прогрева датчика вставало в норму.

Хотелось бы собрать прибор УПРОЩЕННЫЙ только измерение остатка топлива и остаток на КМ.

Главное чтоб на дисплее ЖК от цэшки М380G или подобный (подсветка не проблема)

Хочеться такой приборчик запехнуть в щиток приборов и чтоб циферки хорошо видеть.

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

p.s На худой конец на светодиодных индикаторах.

Ссылка на комментарий
Поделиться на другие сайты

1/При пустом баке "0" Ом, а при полном "96" Ом. Что делать?

2/И второй вопрос: можно ли перебросить второй датчик температуры на свободный 28pin МК.

1/калибровать "как есть". будет работать нормально. главное, чтобы сопротивление датчика было НЕ БОЛЕЕ 390 ом.

2/зачем? датчики температуры работают на 1-wire шине, которая предусматривает подключение датчиков ПАРАЛЕЛЬНО.

Хотелось бы собрать прибор УПРОЩЕННЫЙ только измерение остатка топлива и остаток на КМ.

p.s На худой конец на светодиодных индикаторах.

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

з.ы. изначально прибор только на измерение остатка топлива рассчитывался. и на 7-ми сегментных светодиодных индикаторах. перелопатил все диски (иногда создаю резервные копии папок, файлов с винта компа) в поиске кода , ранее написанного для вывода на 7-ми сегментные светодиодные индикаторы- не нашел.

___________________________________________________________________

грабли в показе отрицательной температуры исправил только для показа ЦЕЛЫХ значений. для показа с десятичными значениями ничего не приходит в голову. никак не могу воткнуться в работу с ds18b20. обложился кучей даташитов, примеров работы с ds18b20 - пока все бесполезно.

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

Изменено пользователем Юрец

не всё золото, что на контактах...

Ссылка на комментарий
Поделиться на другие сайты

У меня в щитке приборов уже есть термометр работающий с датчиком DS18B20 и он не поддерживает работу с двумя датчиками. А ставить три датчика мне не очень хочется. Я выкладываю схему своего термометра. Какие есть варианты с работой их в паре?

При подключении одного датчика температуры, он ничего не показывает кроме "дв. -" (датчик отдельный. 100% рабочий)

Пробовал калибровать уровень топлива всё работает.

term.rar

Изменено пользователем Zvermarkiz

Если долго мучиться, что-нибудь... сломается.

Ссылка на комментарий
Поделиться на другие сайты

Автору

Нашел схемки и прошивки которые собирал и проверял сам лично,

термостат и термометр с потдержкой этих же датчиков температуры на этой же шине

они коректно показывают и плюс и минус соберал и проверял сам лично

100% работает

Выкладываю может помежет в исправлении

проверенные_схемы.txt

(после загрузки расширение в файле с tхt поменяйте на .eхe - это самораспаковывающийся архив)

Кстати температура не только в минус но и более 100 градусов

показывается в миникомпьютере не очень красиво

Изменено пользователем Жендос

----------------------------------

незнаеш что писАть? - молчи

будешь казаться умнее

Ссылка на комментарий
Поделиться на другие сайты

Как то никто не сказал ЧТО не красиво показывает компьютер в температуре. Сами данные некорректны или формат вывода не удачен? Вроде нет особых проблем с показом хоть тысячных долей градусов. Сначала выделяем из полученного с датчика двенадцатиразрядного числа модуль (если единица в старшем разряде, то находим дополнение и ставим флаг минуса, иначе оставляем как есть). Затем модуль умножаем на 10 [0x00A](если нужны десятые, 100 [0x064] - если сотые и 1000 [0x3E8] если тысячные) и конвертируем результат в двоично-десятичную форму. Только нужно отказаться от встроенных функций компилятора.... или ваще в АСМе кодить... :) По умолчанию DS18B20 шлет двенадцать разрядов...

Изменено пользователем my504

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

Я выкладываю схему своего термометра.
Выкладываю может помежет в исправлении

проверенные_схемы.txt

оба архива содержат только hex файлы. от них помощи никакой. нужен пример кода на Си.

Сначала выделяем из полученного с датчика двенадцатиразрядного числа модуль (если единица в старшем разряде, то находим дополнение и ставим флаг минуса, иначе оставляем как есть). Затем модуль умножаем на 10 [0x00A](если нужны десятые, 100 [0x064] - если сотые и 1000 [0x3E8] если тысячные) и конвертируем результат в двоично-десятичную форму.

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

>Только нужно отказаться от встроенных функций компилятора....

именно это я и пытаюсь реализовать - отказаться от sprintf для экономии объема кода. (ну не помещается программа в памяти микроконтроллера).

в программе делаю так:

temp=ds18b20_temperature(&rom_code[0][0]);

if (temp>0x5dc){temp=0x10000-temp;flag_minus=1;}; //если ниже "0"

//приводим temp к виду TSDE (тысячи, сотни, десятки, единицы)

for (i=temp; i>=1000; i=i-1000) {T++;};

for (i=temp-1000*T; i>=100; i=i-100) {S++;};

for (i=temp-1000*T-100*S; i>=10; i=i-10) {D++;};

for (i=temp-1000*T-100*S-10*D; i>=1; i=i-1) {E++;};

далее:

для вывода целого, и при flag_minus=0: показываем в формате TSDE. -ОК!

для вывода целого, и при flag_minus=1: показываем в формате -TSDE. --не получается

для вывода с десятыми и при flag_minus=0: показываем в формате TSD.E -ОК!

для вывода с десятыми и при flag_minus=1: показываем в формате -TSD.E -не получается

т.е. фактически реализован показ только от 0 до 125 градусов.

//для реальной температуры ,скажем,56 градусов :T=0, S=0, D=5, E=6

задача: нужно грамотно получить из значения temp эти самые T,S,D,E (тысячи, сотни, десятки, единицы). нужен пример на СИ.

скажем так: для вывода целого

при -1,1 градус должно быть: Т=0, S=0, D=0, E=1

при -12,1 градусов должно быть: Т=0, S=0, D=1, E=2

для вывода с десятыми

при -1,1 градус должно быть: Т=0, S=0, D=1, E=1

при -12,1 градусов должно быть: Т=0, S=1, D=2, E=1

Изменено пользователем Юрец

не всё золото, что на контактах...

Ссылка на комментарий
Поделиться на другие сайты

исходя из даташита ds18b20

post-14455-1243138909_thumb.jpg

минусовая температура должна (на мой взгляд) считаться так:

temp=ds18b20_temperature(&rom_code[1][0]);//считываем температуру

if (temp>0x5dc){flag_minus=1;};// если меньше "0"

if (flag_minus){temp=(65536-temp)*0.0625}; //0.0625 - дискретность показаний при 12-ти разрядном значении.

на бумаге так:

температура = -10,125.

расчитываем: 65536-65374 (FF5E для -10,125 по даташиту) * 0,0625 = 10,125

все сходится. что и требуется доказать.

а вот в железе- коряво...

не всё золото, что на контактах...

Ссылка на комментарий
Поделиться на другие сайты

Категорически не верно... Для нахождения модуля нужно по признаку старшего разряда найти дополнение или оставить прежнее число.

Выделяем старший разряд. (старший байт)&0х80 , если не равно 0, то делаем XOR 0xFF с младшим и старшим байтами и прибавляем к результату полного 16 разрядногочисла единицу. Получаем модуль отрицательной температуры. При этом не забываем поставить флаг минуса. В противном случае (если =0) оставляем как есть и флаг минуса сбрасываем.

Затем уже производим преобразование binary to BCD. Причем есть смутное подозрение, что такая функция имеется в библиотеке ...

PS Сорри, Юрец, самое главное... Перед преобразованием умножаем на 10 и делаем четыре правых сдвига (делим на 16). Перед последним сдвигом нужно проверить мл. разряд и если он 1, то результат после этого сдвига увеличить на 1 (округление сотых)

Изменено пользователем my504

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

Итак, что делаем:

//объявляем глобальный буфер
#define BUF_SIZE 5
unsigned char buffer[BUF_SIZE];
...
//пишем функцию
void decbin_ds (unsigned int const* x, unsigned char* buffer) {
  unsigned int i;
  unsigned int buff[BUF_SIZE]; //прмежуточный интовый буфер

	for (i=0; i<BUF_SIZE;i++){buff[i]=0;} //зануляем
	//разлаживаем
	for (i=*x; i>=1000; i-=1000) {buff[0]++;}
	for (i=*x-1000*buff[0]; i>=100; i-=100) {buff[1]++;}
	for (i=*x-1000*buff[0]-100*buff[1]; i>=10; i-=10) {buff[2]++;}
	for (i=*x-1000*buff[0]-100*buff[1]-10*buff[2]; i>=1; i-=1) {buff[4]++;}
	//подгоняем под формат
	for (i=0; i<BUF_SIZE;i++)buff[i]+=0x30; //в ASCII
	buff[3]='.';
	if(buff[0]==0x30) buff[0]=1; //избавляемся от стоящих впереди нулей
	if((buff[0]==1)&&(buff[1]==0x30)) buff[1]=1;
	for (i=0; i<BUF_SIZE;i++){buffer[i]=(unsigned char)buff[i];} //переписываем в наш массив												}
													   }
...
//используем
	  temp=ds1820_temperature_10(&ds1820_rom_codes[0][0]); //тут читаем датчик

	  if (temp>10000){temp=0x10000-temp;flag_minus=1;}
	  temp>>=3; //обязательно делим на 8

	  decbin_ds(&temp, buffer);
	  lcd_gotoxy(0,0); //курсор на нужное место
	  if(flag_minus){lcd_putsf("-");flag_minus=0;}else lcd_putsf("+");
	  lcd_puts(buffer);		  
					   }

Результат:post-20311-1243155922_thumb.jpg

Градусы Цельсия сами нарисуете...

Затем уже производим преобразование binary to BCD. Причем есть смутное подозрение, что такая функция имеется в библиотеке ...

Функция то есть..., но в данном случае она кушает 16.5% памяти меги8, в то время как моя нестандартная - 5.3%. Если поиграться, можно еще уменьшить...

Изменено пользователем Goodefine

Любой, заслуживающий внимания, опыт приобретается себе в убыток...

Ссылка на комментарий
Поделиться на другие сайты

....в то время как моя нестандартная - 5.3%. Если поиграться, можно еще уменьшить...

Эт точно... В АСМе так вообще меньше трех десятков строчек (<3%).

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

В АСМе так вообще меньше трех десятков строчек (<3%).

С цифрами чуть ошибся я(уровень оптимизации по скорости стоял) - где-то 4.4/14.2 %...

Любой, заслуживающий внимания, опыт приобретается себе в убыток...

Ссылка на комментарий
Поделиться на другие сайты

>а "косяк" с отображением отрицательной температуры будет убран во всех прошивках, руская англ.. транслит?

для тестинга выкладываю измененную прошивку для индикаторов с поддержкой кириллицы.

английский и транслит выложу позже. (исправил баги с температурой).

auto_comp.rar

>При подключении одного датчика температуры, он ничего не показывает кроме "дв. -"

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

подключен 1 - показывает топливо+вольтаж+"дв.888"

подключены два - показывает топливо+вольтаж+"дв.888" + "ул.888"

ни один не подключен - топливо+вольтаж.

погоняйте эту прошивку на предмет багов.

Изменено пользователем Юрец

не всё золото, что на контактах...

Ссылка на комментарий
Поделиться на другие сайты

>При подключении одного датчика температуры, он ничего не показывает кроме "дв. -"

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

подключен 1 - показывает топливо+вольтаж+"дв.888"

подключены два - показывает топливо+вольтаж+"дв.888" + "ул.888"

ни один не подключен - топливо+вольтаж.

погоняйте эту прошивку на предмет багов.

Не знаю как у всех, у меня датчик так жэ не определяется.

Если долго мучиться, что-нибудь... сломается.

Ссылка на комментарий
Поделиться на другие сайты

Афигенная тема собрал запустил заработало.

С мк имею дело 1й раз.

Да и в жизни мало паяю.

грабли 1ни были только с тем что VEE был на земле были квадратики потцепил резистор много оборотный на 20 кОм покрутил все за*** с первого раза все прошилось закрутилось

Ссылка на комментарий
Поделиться на другие сайты

Вживил данный девайс в свое авто, очень доволен :rolleyes:

есть предложение автору:

перейти на микросхему с большим количеством памяти

есть еще пару идей, которые можно реализовать в данном устройстве

post-45878-1243694508_thumb.jpg

post-45878-1243694629_thumb.jpg

вот так это у меня выглядит

Изменено пользователем Жендос

----------------------------------

незнаеш что писАть? - молчи

будешь казаться умнее

Ссылка на комментарий
Поделиться на другие сайты

Установил прибор на авто и обнаружил следущее;

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

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

Измерил проводку до датчика на предмет окисления контактов, провод до датчика в норме.

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

Просто новый покупать както в лом когда старый ранее работал.

ВОПРОС :blink: АВТОРУ!!!!!!!!

Будет ли приборчик УПРОЩЕННЫЙ только остаток топлива и километража.

Ссылка на комментарий
Поделиться на другие сайты

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

подключен 1 - показывает топливо+вольтаж+"дв.888"

подключены два - показывает топливо+вольтаж+"дв.888" + "ул.888"

ни один не подключен - топливо+вольтаж.

Будет ли приборчик УПРОЩЕННЫЙ только остаток топлива и километража.

Я бы его наооборот, еще по апгрейдил!

----------------------------------

незнаеш что писАть? - молчи

будешь казаться умнее

Ссылка на комментарий
Поделиться на другие сайты

Народ как в протеусе эмитировать топливный датчик а то собрал девайс при откл. датчике пишет типа 1023 в настройке топлива. + не работает вольт метр пишет 35 вольт крутил переменный резистор нечего не меняется. Градусник работает нормально

Ссылка на комментарий
Поделиться на другие сайты

Народ как в протеусе эмитировать топливный датчик

В этой схеме топливный датчик это обыкновенный переменный резистор

с сопротивлением 330 Ом ( его сопротивление менятся в пределах от 0 до 330 Ом)

у которого средний вывод соединен с одни из крайних

Вот еще рисунок печатной платы

ATmega 8 в корпусе TQFP

LM 324 в корпусе SO-14

резисторы и конденсаторы

в корпусе SMD 1206

стабилизатор 7805 ложится плоской стороной

на плату, а ноги припаиваются к площадкам

получается если переменный резистор запаять со стороны

дорожек, и провода паять к пятачкам с этой же стороны

то на этой плате монтаж выполняется с одной стороны

и свободную сторону можно приклеить к плате индикатора

!!!На этой плате нет узла управления

яркостью LCD я от него отказался,

у меня с габаритов идет сразу на подсветку

LCD через 7805 и резистор 10 ом, также резистор

отвечающий за контраст LCD запаян сразу на нем

TQFP.zip

----------------------------------

незнаеш что писАть? - молчи

будешь казаться умнее

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...