8бит в 16бит (термодатчик ds1821 в ds18b20)
-
pelia
- Родился
- Сообщения: 18
- Зарегистрирован: Ср мар 06, 2013 01:24:25
- Откуда: Ukraine
- Контактная информация:
8бит в 16бит (термодатчик ds1821 в ds18b20)
Здравствуйте, уважаемые! Только начал я осваивать прелести микропроцессоров, как тут же "напоролся" на проблему. Собственно о ней: решил я сделать для машины електронный термометр на двух цифровых датчиках. Купил проц PIC16F84A, датчики DS18B20, ЛСД на основе HD44780, нашел готовую схему с прошивкой, прошил проц. И только после включения схемы и внимательного изучения даташитов понял, что программа предназначалась для датчика ds1821, а он 8-ми битный, а я купил ds18b20 (16-ти битный). DS18B20 у нас в городе достать можно, ds1821 - нет. У Вас, я уверен, есть "заготовки" с детства цифровых датчиков, а для меня - большая проблема на уровне микропроцессора переделать формат принимаемых данных. Очень прошу помочь переделать программу под ds18b20. Просьба не пинать начинающего и помочь в переделке программы ( прилеплена ), или ткнуть носом где можно взять PIC16F84A+DS18B20(2-4штуки)+ЛСД на основе HD44780(форматом 16х1), как котенка в молоко на первой неделе его жизни. Вся информация взята осюда: http://electromost.com/publ/bytovaja_tekhnika/termometr_s_temodatchikom_ds1821/4-1-0-11 Спасибо!
P.S.Какое удовольствия заняться чем-то новым, собрать/сделать - работает! А когда делаешь/мучишся/учишся/пробуешь а оно не выходит - руки опускаются....
P.S.Какое удовольствия заняться чем-то новым, собрать/сделать - работает! А когда делаешь/мучишся/учишся/пробуешь а оно не выходит - руки опускаются....
- Вложения
-
- 241_ds1821.zip
- (5.31 КБ) 271 скачивание
-
orinoko
Re: 8бит в 16бит (термодатчик ds1821 в ds18b20)
У меня есть заготовка, которую я делал для работы. Но она собрана в конфигурации АТмega8535+6*DS18B20+WH4004A(40*4), так как у меня выдаётся кроме температуры серийный номер. Датчики к PIC-ам я не подключал.
Вот может поможет http://chipenable.ru/index.php/programming-avr/item/106-1-wire-rabota-s-ds18b20-ispolzovanie-dvuh-datchikov-chast-4.html
Вот может поможет http://chipenable.ru/index.php/programming-avr/item/106-1-wire-rabota-s-ds18b20-ispolzovanie-dvuh-datchikov-chast-4.html
-
pelia
- Родился
- Сообщения: 18
- Зарегистрирован: Ср мар 06, 2013 01:24:25
- Откуда: Ukraine
- Контактная информация:
Re: 8бит в 16бит (термодатчик ds1821 в ds18b20)
Извините, я ищу для PIKa.........Море всего в нете, только не то,что нужно...orinoko писал(а):собрана в конфигурации АТмega8535+6*DS18B20+WH4004A(40*4)
Re: 8бит в 16бит (термодатчик ds1821 в ds18b20)
pelia писал(а):...внимательного изучения даташитов понял, что программа предназначалась для датчика ds1821, а он 8-ми битный, а я купил ds18b20 (16-ти битный)....
бряхня(из кинухи)!!!
по разрешению 1821 = 0,01 градуса. 1820 = 0,06 градуса. погрешность у них одинаковая - т.к. реализованы одинаково (терморезистор, генератор, регистры подсчёта, 1Wire(у 21 - протокол усечён)). отличия есть но небольшие короче говоря.
так, что не те ДШ читали явно.
удачи вам
(круглый)
-
pelia
- Родился
- Сообщения: 18
- Зарегистрирован: Ср мар 06, 2013 01:24:25
- Откуда: Ukraine
- Контактная информация:
Re: 8бит в 16бит (термодатчик ds1821 в ds18b20)
У меня на ЛСД оба датчика всегда показывают 0,1С. Другого оправдания я не нашел - только несоответствие сигналов с датчика. По даташиту они не взаимозаменяемые. Отличие - длина передаваемой кодировки. Или я не прав?
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: 8бит в 16бит (термодатчик ds1821 в ds18b20)
Код передается один и тот же, просто при меньшей битности в коде больше не несущих информацию нулей... Они отличаются, но не принципиально. DS18B20 имеет изменяемую битность, смысл только в том что чем меньше бит измеряет - тем быстрее. Могут отличатся кодами команд и всего лишь. и да DS18B20 перед использованием надо подготовить - записать в его куций EEPROM настройку на нужную битность, иначе получишь фигню - т.к. количество бит одинаковое а страдает выравнивание, в результате универсальной процедурой не обойтись - каждую битность надо интерпретировать по-своему.
-
pelia
- Родился
- Сообщения: 18
- Зарегистрирован: Ср мар 06, 2013 01:24:25
- Откуда: Ukraine
- Контактная информация:
Re: 8бит в 16бит (термодатчик ds1821 в ds18b20)
Этого я не ожидал, потому не заметил. Спасибо! Буду исправлятьAlexeyslav писал(а):DS18B20 перед использованием надо подготовить
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: 8бит в 16бит (термодатчик ds1821 в ds18b20)
Либо предусмотреть в прошивке процедуру подготовки термометра, инициируемую нажатием SMD-кнопки на плате или джампером. Вдруг накроется и придется ставить другую...
Почему нельзя это делать каждое включение... операция записи занимает время, и тратится ресурс встроенной в термометр EEPROM, однажды от просто накроется самопроизвольно.
Почему нельзя это делать каждое включение... операция записи занимает время, и тратится ресурс встроенной в термометр EEPROM, однажды от просто накроется самопроизвольно.
-
orinoko
Re: 8бит в 16бит (термодатчик ds1821 в ds18b20)
DS18B20 готовить предварительно не надо. Есть параметры по умолчанию с завода, включаемые при подаче питания - 12 бит (если датчик новый), выравнивание вправо. Для проверки, что записано в ЕЕПРОМ, можно произвести чтение Scratchpad'а, и проверить биты конфигурации. Если они в нужном состоянии, то ничего писать не надо. Посто подать команду "Convert", через >750 мс (при макс. точности) прочитать командой "Read Scratchpad" (9 байт). первые два байта - температура с дискретностью 1/16 градуса. Как я понял из ДШ на 1821, там есть команда чтения температуры, которая выдаёт 1 байт (целое число градусов). Чтобы получить что-то после запятой, требуется доп. телодвижения - запросить двумя отдельными командами два регистра, и провести арифмерические действия с ними.
Соответственно, коды команд этих микросхем разный.
Русское описание DS18B20
http://www.e-voron.dp.ua/files/pdf/maxim/ds18b20-rus.pdf
Соответственно, коды команд этих микросхем разный.
Русское описание DS18B20
http://www.e-voron.dp.ua/files/pdf/maxim/ds18b20-rus.pdf
Re: 8бит в 16бит (термодатчик ds1821 в ds18b20)
orinoko писал(а):..первые два байта - температура с дискретностью 1/16 градуса....Чтобы получить что-то после запятой...
апсолютно верно.
1/16 = 0,0625 (DS18x20)
1/100 = 0,01 (DS1821)
и там и там - повышенную точность надо вычислять(лень лезть в код по 20 - но вроде как и его так-же надо было к 0,06 разрешению приводить). даташиты на этот счёт имеются.
готовить не надо. но если 21 - он может быть переведён в режим термостата. и это доп. гимор с точки зрения железа и софта. работа с 20 и 21 - очень похожа. (если одиночное)запуск на преобразование, ждём, чтение регистров, запуск на преобразование ....
команды очень близки либо совпадают. по допускам и кривизны - терморезистор внутри. приход к реальной температуре - 5 минут (физика процесса передачи тепла). 20 в пром. установках - менее удобны.
удачи вам
(круглый)
-
pelia
- Родился
- Сообщения: 18
- Зарегистрирован: Ср мар 06, 2013 01:24:25
- Откуда: Ukraine
- Контактная информация:
Re: 8бит в 16бит (термодатчик ds1821 в ds18b20)
Решил перейти на готовую прогу того-же устройста, только на ATTiny. Учитывая, что и 10 лет назад она была практичнее ( пусть не убьют меня PICовци ), всегда мечтал програмировировать именно Атмел. Ну больше он мне нравился и нравится, извините.... Но тоже, естественно, нужны советы. Правда это уже совсем другая тема http://radiokot.ru/circuit/digital/home/24/
Последний раз редактировалось pelia Сб мар 09, 2013 22:46:59, всего редактировалось 2 раза.
Re: 8бит в 16бит (термодатчик ds1821 в ds18b20)
Вероятно,если писать на asm для датчиков ds18b20,памяти и хватит 2313-ой.Ну а,если попроще,на C,да использовать для этого функцию sprinntf,да ещё,к тому-же использовать тип данных float для вывода температуры,то ниже меги8 не обойтись.
-
pelia
- Родился
- Сообщения: 18
- Зарегистрирован: Ср мар 06, 2013 01:24:25
- Откуда: Ukraine
- Контактная информация:
Re: 8бит в 16бит (термодатчик ds1821 в ds18b20)
Да...Для Вас это может и попроще........Vov123 писал(а):Ну а,если попроще,на C,да использовать для этого функцию sprinntf,да ещё,к тому-же использовать тип данных float для вывода температуры,то ниже меги8 не обойтись.
Re: 8бит в 16бит (термодатчик ds1821 в ds18b20)
Да учите всё,да на разные контроллеры.PIC-и,AVR,LPC,STM,8051.Один день одно,два дня другое.Ведь в школе алгебра с литературой не путалось?
Вот для начала,то чего Вам надо,но на меге8.Разбирайтесь.Не забывайте смотреть настройки компилятора в свойствах проекта,ведь там может "спрятано" основное.
Вот для начала,то чего Вам надо,но на меге8.Разбирайтесь.Не забывайте смотреть настройки компилятора в свойствах проекта,ведь там может "спрятано" основное.
- Вложения
-
- 12.rar
- (131.81 КБ) 248 скачиваний
-
pelia
- Родился
- Сообщения: 18
- Зарегистрирован: Ср мар 06, 2013 01:24:25
- Откуда: Ukraine
- Контактная информация:
Re: 8бит в 16бит (термодатчик ds1821 в ds18b20)
Vov123, до Меги8/16/32 мне еще далеко. Я только учусь. Для начала был очень большой "напряг" выставить фусы.... ( Я уверен он опять повторится ) Я имел ввиду что когда-то давно пробовал освоить Assembler, когда еще не было ( я не видел ) программ для написания на С. Я понимаю - это НАМНОГО проще но, на Ассемблере это "первый" код, на более "низком" уровне ( перед самым програмированием проца ). Он максимально точен ко всем командам процессора. А если вобщем: высказываясь Вашим языком: зная некоторые стихотворения проще изучить сам язык, верно? Но а Ассемблере можна сделать "чудеса" недоступные любому другому языку програмирования - лично мое мнение
Re: 8бит в 16бит (термодатчик ds1821 в ds18b20)
Ну,что-ж,желаю Вам удачи и терпения.Когда Ваши желания и мысли перейдут рубеж 1Кб кода асм (половина 2313),я думаю Вы сами выберите удобный для Вас язык высокого уровня.
А пока могу порекомендовать самоучитель Белова.Там и про асм,и те-же примеры программы на Си (CVAVR,а на диске и WinAVR),программаторах и программировании,фусах и русский перевод даташита 2313.
А пока могу порекомендовать самоучитель Белова.Там и про асм,и те-же примеры программы на Си (CVAVR,а на диске и WinAVR),программаторах и программировании,фусах и русский перевод даташита 2313.
-
pelia
- Родился
- Сообщения: 18
- Зарегистрирован: Ср мар 06, 2013 01:24:25
- Откуда: Ukraine
- Контактная информация:
Re: 8бит в 16бит (термодатчик ds1821 в ds18b20)
Спасибо! Уже качаю
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: 8бит в 16бит (термодатчик ds1821 в ds18b20)
Мега 8 в самый раз для начала. Куда там далеко? Она самая простая в линейке и достаточно выводов для экспериментов. Можно определить целый порт под отладочные нужды и еще останется. Собственно, у атмеловских контроллеров система команд одна - отличаются они лишь набором переферии и адресами регистров в каждой из них - но это вас беспокоить не должно, к каждому контроллеру уже заранее составлен заголовочный файл с определениями. А если его нет - можно набросать самому, по примеру соседнего по функциональности - останется только сверить адреса регистров.
На самом деле, на ассемблере писать довольно тяжело если пользоваться исключительно ассемблером, вставлять в код магические числа и напрочь забыть что есть такие вещи как INCLUDE, .DEFINE и .MACRO
Если правильно все использовать писать на ассемблере становится даже интересно.
На самом деле, на ассемблере писать довольно тяжело если пользоваться исключительно ассемблером, вставлять в код магические числа и напрочь забыть что есть такие вещи как INCLUDE, .DEFINE и .MACRO
Если правильно все использовать писать на ассемблере становится даже интересно.
Re: 8бит в 16бит (термодатчик ds1821 в ds18b20)
pelia писал(а):...а Ассемблере можна сделать "чудеса" недоступные любому другому языку...
азм отличается от других языков только одной вещью:
что сделал = сам дурак.
всё остальное - не плюсы. и размеры программ - это не то, ради чего потом начинают задействовать другие языки. рубеж 1к - это хэллоу ворд для пром. заказа. размер тут не критерий. и боязни не вызывает. вызывает напряг другое - скорость разработки(ввод нового имеется ввиду), отвлечение внимания не только на логику работы, и т.п. вещи..
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: 8бит в 16бит (термодатчик ds1821 в ds18b20)
Ага, а в других языках можно на компилятор грешить. 