Page 1 of 2

Термометр (AT90S2313 (ATtiny2313), DS18B20, LCD 16*2)

Posted: 13 Feb 2013 16:31
by hardlock
Срезу скажу, что проект очень старый и обновлять его не собираюсь, т.е. отдаю как есть - сами ковыряйтесь, переделывайте и дорабатывайте на свой вкус. Если выложите результаты тут, то буду только благодарен.

Схема.
Возможно не совсем совпадает с прошивкой, но основное правильно. Т.е. Датчики, кнопки, индикатор - точно правильно.
sch.gif
Печатная плата.
Разрабатывалась под размер индикатора и применялась авто для контроля за температурой ОЖ, масла, наружной и в салоне.
pcb.gif
Исходник схемы, платы и прошивки под AT90S2313 во вложениях. Компилируется 2-й версией cvavr без проблем. Перекомпилировать под тиню не просите.

Удаление датчиков:
При нажатой кнопке включаем питание.

Добавление датчиков:
1) Подключаем один датчик (из тех что будем применять). Добавляет по порядку (слева направо, сверху вниз).
2) Удерживая кнопку "Add" включаем питание.

После добавления всех 4-х датчиков их все можо подключить параллельно.

В то же время была сделана ещё одна штука и до сих пор висит и меряет температуру в кабинете и на улице (фото свежее)
DSCN3516.JPG
Символ звоночка указывает на то. что включен звук при превышении 100 градусов на первом датчике, но похоже прошивка, что выложил, не та... Зато в ней есть добавление и удаление датчиков.

Re: Термометр (AT90S2313, DS18B20, LCD 16*2)

Posted: 13 Feb 2013 22:56
by Coviraylhik
Протестировал эту схемку, комплимировал для ATtiny2313 в CodeWizardAVR V2.04.4a ничего в проекте от hardlock не менял, вот подключил 4 датчика, схема рабочая , Сразу плюсы что мне понравилось в этой программе , шустро опрашивает датчики , код небольшого размера (все вмещено в тини да еще и с десятыми градусами) , датчик прописывается в одном месте (в принципе это плюс, но для некоторых устройств это может и минус).
Из грустного только то что не симмулируется в протеусе, и пока вижу трудность применить этот код для своих нужд ( много разных условий вывода температуры, нет мне более "привычных глазу" unsigned char, unsigned int) но это будем еще вникать может и получится что... :-|
hardlock :drink: спасибо за интересную программу.
P.S. при тестировании фьюзы выставил 1MHz.

Re: Термометр (AT90S2313, DS18B20, LCD 16*2)

Posted: 13 Feb 2013 23:25
by hardlock
Coviraylhik, кидай сюда проект под тиню, а то щас начнётся.

Re: Термометр (AT90S2313, DS18B20, LCD 16*2)

Posted: 14 Feb 2013 00:58
by Coviraylhik
Тут собственно проект тот же что в статье firmware v0.3_del_add.rar, взял открыл своим компилятором V2.04
Прошил ATtiny2313 (у меня сроду не было AT90S2313) и все! Image

Re: Термометр (AT90S2313 (ATtiny2313), DS18B20, LCD 16*2)

Posted: 14 Feb 2013 06:29
by hardlock
По идее в свойствах проекта можно поменять на тиню и поставить любую частоту...

Re: Термометр (AT90S2313 (ATtiny2313), DS18B20, LCD 16*2)

Posted: 15 Feb 2013 23:54
by Coviraylhik
Интересно с этим проектом поработать, интересно тем что не используя числа int ,float , используя только два числа char получаем температуру с шагом в 0.1°C в общем кто сталкивался наверное поймут о чем я.....
Немного покрутив проект firmware v0.3_del_add от hardlock , выяснил что изменив значение частоты таймера с TCCR1B=0x05; на TCCR1B=0x03; проект вполне адекватно симулируется в протеусе .
1234.GIF
1234.GIF (13.4 KiB) Viewed 21015 times
Schematic Design_0.3_del_add.rar
Проект протеуса
(20.81 KiB) Downloaded 944 times
Добавлено спустя 6 минут 9 секунд:


А так же по просьбе "трудящихся" пользователь IYra сделал проект, по аналогии или подобию проекту firmware v0.3_del_add , термометр (точнее, до четырех термометров. Можно подключать до 4 датчиков.) на ATtiny2313.
Изображение 010.jpg
С согласия автора прикладываю проект этого термометра с исходником.
2313_i_ZhKI16х2.rar
(55.04 KiB) Downloaded 1164 times
Комплимируется в CodeVisionAVR V2 , фьюзы для Мк выставляются на 4MHz.

Re: Термометр (AT90S2313 (ATtiny2313), DS18B20, LCD 16*2)

Posted: 18 Feb 2013 22:52
by Coviraylhik
Переделал проект firmware v0.3_del_add под мегу8, теперь на меге8 проще будет добавлять код :good: для термостатов различного назначения.
Скомпилирован в CodeVisionAVR V2,4 , фьюзы для Мк выставляются на 4MHz. Проверил в железе работает, и в протеусе тоже все ОК.
Image

Re: Термометр (AT90S2313 (ATtiny2313), DS18B20, LCD 16*2)

Posted: 21 Feb 2013 19:30
by Coviraylhik
hardlock wrote:Сразу скажу, что проект очень старый и обновлять его не собираюсь, т.е. отдаю как есть - сами ковыряйтесь,
Спасибо hardlock полезный проект, вот поковырялся в нем , и кто интересуется результат могут оценить и в железе и в протеусе....

Термостат 4 канала (+2 канала в инверсии) ,
Image
Датчики прописываются вручную, это имеет эдакий плюс, что при мульти опросе датчиков если датчик "отвалится", следующий датчик не занимает его место, это повышает надежность использования такой схемы.
Еще не мало важно, что термостаты адекватно отрабатывают свои установки при переходе через 0°C.
Все каналы термостатов работают идентично по типу нагревателя, только первый еще имеет выход в инверсии (РС0 относительно РС1), и четвертый имеет две раздельные настройки РС4 "нагреватель" , РС5 "охладитель".
После первого включения нужно прописать датчики ,(при монтаже обязательно предусмотрите возможность подключения датчиков по одному),
это делается так КН-2 входим в меню
Image

и далее КН-1 и КН-2. Image

Image
А также при сборке схемы нужно обязательно использовать ЖКИ поддерживающий кириллицу, программа рассчитана для работы с кварцем 4 МHz.

Остальные настройки термостатов не должны вызывать трудностей, используется всего три кнопки, КН-2 входим в меню,
Image Image
и далее КН-2 и КН-1 или КН-3 производим настройки термостатов.
Image

Re: Термометр (AT90S2313 (ATtiny2313), DS18B20, LCD 16*2)

Posted: 21 Feb 2013 23:05
by grogo
Coviraylhik, а вот такоЙ ,жки будет работать в Вашем проекте ? http://www.rct.ru/pdf/lcd/1602f.pdf

Re: Термометр (AT90S2313 (ATtiny2313), DS18B20, LCD 16*2)

Posted: 21 Feb 2013 23:57
by scotland
А у меня протеус 7.7 SP2 и ничто с етиьх дизайни не работает. Для уникалного използувании "время конвертирание темепературьи" - поздравляю , если идея твоя.
Ну ето с кирилизации дисплея не понятно как получается если у меня дисплей 16х2 с Китай и там вписаньи 2 таблици одно европейскоя и другая China ... и как научит его по славянским ???

Re: Термометр (AT90S2313 (ATtiny2313), DS18B20, LCD 16*2)

Posted: 26 Feb 2013 06:07
by hardlock
scotland, проще проект переделать под латиницу.

Re: Термометр (AT90S2313 (ATtiny2313), DS18B20, LCD 16*2)

Posted: 03 Mar 2013 18:33
by IYra
Coviraylhik wrote:
А так же по просьбе "трудящихся" пользователь IYra сделал проект, по аналогии или подобию проекту firmware v0.3_del_add , термометр (точнее, до четырех термометров. Можно подключать до 4 датчиков.) на ATtiny2313.

Комплимируется в CodeVisionAVR V2 , фьюзы для Мк выставляются на 4MHz.
Добавил возможность подключения датчиков DS1820, DS18S20
Определяются автоматически. В Протеусе работает.

Re: Термометр (AT90S2313 (ATtiny2313), DS18B20, LCD 16*2)

Posted: 08 Mar 2013 17:56
by murlum
IYra wrote: Добавил возможность подключения датчиков DS1820, DS18S20
Определяются автоматически. В Протеусе работает.
А можно для AT90S2313 и скомпилировать (BIN или HEX).

Re: Термометр (AT90S2313 (ATtiny2313), DS18B20, LCD 16*2)

Posted: 08 Mar 2013 19:19
by IYra
murlum wrote: А можно для AT90S2313 и скомпилировать (BIN или HEX).
Вот собрал, но не проверял. 4 МГЦ
Так что ......

Re: Термометр (AT90S2313 (ATtiny2313), DS18B20, LCD 16*2)

Posted: 27 Mar 2013 16:39
by murlum
Давно я так голову не тренеровал.
В закромах Родины давно ожидали своего часа горсть AT90S2313 , щепотка DS1820 и экранчик 2х20. А тут почти все что хотелось в одном флаконе. Одновременный вывод, точность 0.1, смешное подключение DS1820 и DS18В20. Глаза заблестели, руки вперед собственного крика за паяльник. Собирать. Но приезд высокопосаженной делегации отодвинул запуск на 10 дней.
Итак. Собрал, прошил, включил, не пошло. Другой микроконтроллер. Не пошло. Микроконтроллер из действующей железки (+ еще 2 заведомо исправных). Прошивка программой из 1 сообщения. Замена кварца на 8.00 (+ еще 5 от 3.83 до 4.9 MGh). Танцы с бубном. Игры с Fuse. Осмотр под микроскопом. Результата нет. Для проверки монтажа из действующей железки дернута ATtiny2313. Прошита 2313_i_ZhKI_16х2. Появились показания, правда с учетом примененных DS1820. Дальнейшее ощупывание показало, что контроллер в стопе, но оживает, если касаться 5 лапы(вход XTAL1). Происходит инициализация дисплея, видно как бежит курсор, появляются кракозябры на экране. Изучение документации ситуацию не прояснило. Не нашел я там ничего об отключение генератора. В голове каша, наобум заливаю эти программы в ATtiny2313. Работает. Появляется мысль. Еще раз читаю ветку и понимаю что хоть она и называется Термометр (AT90S2313 (ATtiny2313), DS18B20, LCD 16*2), но выложенное скомпилировано для ATtiny2313, и даже в AT90S2313_i_ZhKI_16х2 вкралась ошибка.
Итак Термометр собран , кварц на 4.00 . Программатор в наличии (правда любит BIN файлы, но это не проблема). Осталось залить скомпилированный для AT90S2313 файл в микроконтроллер. Но компилятора у меня нет, и я даже не знаю как с ним работать. Ну как-то вот так вот. Может совместно с кем-нибудь, запустим Термометр на AT90S2313.

Re: Термометр (AT90S2313 (ATtiny2313), DS18B20, LCD 16*2)

Posted: 27 Mar 2013 17:52
by Coviraylhik
murlum, А в первом посте от hardlock, разве не под AT90S2313 толька фьюзы там 1 МHz и DS18В20 , в других проектах 4 МHz, ATtiny2313 и DS18В20,
и во всех схемах тут может различаться подключение ЖКИ.

Re: Термометр (AT90S2313 (ATtiny2313), DS18B20, LCD 16*2)

Posted: 28 Mar 2013 02:06
by scotland
Браво ! Я думал что то знаю об "C" для контролеров ,ну етот код бросил меня в илу - код не простой для меня , но очень простой и економичной для контролера , браво. Имея в виду что очень стариь - минимум 10 лет, я буду работат на перевод в "C" для ПИК. Спасибо hardlock.
Сделал что тиь мне советавал, схему под Proteus работает perfect на латин.
Image
Image

Изправил схемам. Компилирал все оба.Тини работает немного медленна. На тини настроил 8 Мхц внутренньи клок и делител на 8.
Таймер настроил на FF00.

Re: Термометр (AT90S2313 (ATtiny2313), DS18B20, LCD 16*2)

Posted: 02 Apr 2013 19:15
by murlum
Были взяты файлы 2313_i_ZhKI_16х2.hex, AT90S2313_i_ZhKI_16х2.hex, multi_termo.hex размер 5728 байт из архива DUBL_v0.3_del_add.rar (аналогичный в Schematic Design_0.3_del_add.rar), multi_termo.hex размер 5753 байта из архива firmware v0.3_del_add.rar (аналогичный в 4xDallas.zip). Залиты в 6 разных м/с AT90S2313. Без изменений. Контроллер в стопе, но оживает «методом пальца», щуп на вход XTAL1. Дисплей инициализируется, пробегают кракозябры.
Для проверки в ATtiny2313 установил Fuse в AT90S2313compatible setting, для внешнего кварцевого резонатора (3 - 8 мГц), и заливал 2313_i_ZhKI_16х2.hex и multi_termo.hex.
С отпаянным кварцем ситуация один в один как с AT90S2313.
С кварцевым резонатором:
2313_i_ZhKI_16х2.hex сразу подхватывает датчики, выводит их показания на экран, на кнопки не реагирует, понимает правильно только DS18B20.
multi_termo.hex (оба размера) датчики не подхватывает, показания на экран выводит в виде дефисов вместо цифр. При нажатии на кнопку Delete all при вкл. питания пишет All is removed. При нажатии на кнопку Add пишет Coolant InDoor Oil OutDoor.
Проверялось на кварцах 4.00 мГц и 8.00 мГц. Без разницы. Изменение CKDIV8 (деление тактовой частоты на 8) тоже ничего не меняло. Кстати желательное состояние Fuse для каждой программы не помешало бы.
ЖКИ у меня без кирилици, вместо колокольчика L с 2 черточками. Под ней n с надчеркушкой.
Посмотрел в архивах файлы исходников (*.с). Во всех обнаружил строки: Chip type : ATtiny2313, #include <tiny2313.h>, и нигде нет упоминания об AT90S2313. Похоже все программы заточена на ATtiny2313, и при инициализации м/с AT90S2313 как ATtiny2313 она как-то не очень хочет работать. Печально, но работающей на AT90S2313 программы таки нет.

Re: Термометр (AT90S2313 (ATtiny2313), DS18B20, LCD 16*2)

Posted: 02 Apr 2013 20:32
by IYra
murlum wrote: 2313_i_ZhKI_16х2.hex сразу подхватывает датчики, выводит их показания на экран, на кнопки не реагирует, понимает правильно только DS18B20.
В этой прошивке и нет реакции на кнопки. А что показывает если подсоединить DS18S20 ?
Данная прошивка проверялась мной только в Протеусе датчики были DS18S20 и DS18B20.
murlum wrote:Посмотрел в архивах файлы исходников (*.с). Во всех обнаружил строки: Chip type : ATtiny2313, #include <tiny2313.h>, и нигде нет упоминания об AT90S2313. Похоже все программы заточена на ATtiny2313, и при инициализации м/с AT90S2313 как ATtiny2313 она как-то не очень хочет работать. Печально, но работающей на AT90S2313 программы таки нет.
AT90S2313_i_ZhKI_16х2.hex был скомпилирован с #include <90s2313.h>
Проверялся мной тоже только в Протеусе на 4 Мгц - там работало.

Re: Термометр (AT90S2313 (ATtiny2313), DS18B20, LCD 16*2)

Posted: 03 Apr 2013 18:33
by murlum
IYra wrote: В этой прошивке и нет реакции на кнопки. А что показывает если подсоединить DS18S20 ?
Данная прошивка проверялась мной только в Протеусе датчики были DS18S20 и DS18B20.
Обращаю внимание, что файл 2313_i_ZhKI_16х2.hex был взят из архива 2313_i_ZhKI16х2.rar, который похоже поддерживает только DS18B20.
В архиве 2313_i_ZhKI_16х2.rar с возможностью подключения датчиков DS1820, DS18S20 только файлы *.c и *.prj, без *.hex.
DS18S20 у меня нет. Есть DS1820, похожие по протоколу. Показывают 2.6 - 3.2 .
IYra wrote: AT90S2313_i_ZhKI_16х2.hex был скомпилирован с #include <90s2313.h>
Проверялся мной тоже только в Протеусе на 4 Мгц - там работало.
У меня Протеуса нет, поэтому проверял в реальном железе. И на 4 Мгц и на 8 Мгц.
Может попробовать еще раз скомпилировать, тщательно все проверив (активация PORTA, других отсутствующих у AT90S2313 регистров)
Вроде пробовал на ATtiny2313 AT90S2313_i_ZhKI_16х2.hex . Но то-ли с Fuse пролетел, то-ли DS1820 не поддержало, в общем позитивно в памяти не отложилось. Будет возможность, перепробую.
p.s. Можно ускорить проверку в железе, если *.hex (желательно в архиве) прислать на /ник/ @ mail . ru

Re: Термометр (AT90S2313 (ATtiny2313), DS18B20, LCD 16*2)

Posted: 03 Apr 2013 19:06
by IYra
murlum wrote: В архиве 2313_i_ZhKI_16х2.rar с возможностью подключения датчиков DS1820, DS18S20 только файлы *.c и *.prj, без *.hex.
DS18S20 у меня нет. Есть DS1820, похожие по протоколу. Показывают 2.6 - 3.2 .
Посылаю hex. Но вообще-то не ужели так трудно поставить CodeVisionAVR :(
А для AT90S2313 разбираться особо желания нет.

Re: Термометр (AT90S2313 (ATtiny2313), DS18B20, LCD 16*2)

Posted: 04 Apr 2013 05:27
by scotland
murlum , когда проектировали AT90S2013 - ето биьло очень давно.
Схема работает с оригиналнии hex от hardlock на 1 Мхц. С 2 и више не получается под симулятора.
И спешить не нада ето термометрь всетаки.

Правка: Схема работает с оригиналнии hex от hardlock на 1 Мхц но с ошибка .

Нада закоментироват :

Code: Select all

CLKPR=0x80;
CLKPR=0x03;
Важно знать что програма записайваеть серииники и если там все настроил и пробуеш другие Dallas то там показания не будут!!!

Re: Термометр (AT90S2313 (ATtiny2313), DS18B20, LCD 16*2)

Posted: 09 Apr 2013 19:35
by murlum
IYra wrote: Посылаю hex. Но вообще-то не ужели так трудно поставить CodeVisionAVR :(
А для AT90S2313 разбираться особо желания нет.
За hex спасибо. А по поводу поставить CodeVisionAVR я думаю не трудно, когда он есть. Только после придется разбираться с не самым простым транслятором, с не очень русским интерфейсом, и изучать язык программирования. А я не программист, я просто хотел повторить проект, которым мне подходил по наличию комплектующих, а он оказался слегка сырым. А поскольку на форуме есть специалисты в совершенстве знающие CodeVisionAVR, то может совместно довести его до ума. Hex проверил, на AT90S2013, не пошел, на ATtiny2313 датчики подхватил, разница показаний + - 0,1, только вместо символа градуса ( ° ) отображает █ .
scotland wrote: Схема работает с оригиналнии hex от hardlock на 1 Мхц но с ошибка .
Наводку понял, попробую добыть кварц на 1 МГц и проверить.
scotland wrote: Нада закоментироват :

Code: Select all

CLKPR=0x80;
CLKPR=0x03;
А это как?

Re: Термометр (AT90S2313 (ATtiny2313), DS18B20, LCD 16*2)

Posted: 13 Apr 2013 03:57
by scotland
но последнее - забудьте об этом если у вас нет компилятора чешскии.
А и символ - странно ето. У стандартниье 16х2 ЖК таблица ROM следующия:
Image

То там код символ правильного 1101 1111 или 0хDF или 223 десетичное для градус,
что у вас есть - 1111 1111 или 0хFF или 255 десетичное - ето странно.
Я буду обсуждать в деталях код и сказать вам.

Добавлено спустя 14 минут 23 секунды:
датчики подхватил, разница показаний + - 0,1
Как вы обнаружили ето ? Поменая датчики ? Ну же все в норме там по pdf + - 0,5 для лудшего моделя DS18B20 !

Добавлено спустя 1 час 9 минут 39 секунд:
Даааа они използуют 0х00 для градус -


void PrintBuf(void)
{
lcd_putchar(byDisplay[0]);
lcd_putchar(byDisplay[1]);
lcd_putchar(byDisplay[2]);
lcd_putchar('.');
lcd_putchar(byDisplay[3]);
lcd_putchar(0x00);
lcd_putchar('C');
}

Сделал замена на дес. 223 и работает идентично. Я думаю что вас ето будет удoвлетворить.

Re: Термометр (AT90S2313 (ATtiny2313), DS18B20, LCD 16*2)

Posted: 13 Apr 2013 12:05
by Coviraylhik
Cимвол ° должен отображаться правильно на любом дисплее, только если в коде нарушили последовательность этих строк.

Code: Select all

flash BYTE char0[8]={
0b0000110,
0b0001001,
0b0001001,
0b0000110,
0b0000000,
0b0000000,
0b0000000,
0b0000000};

void define_char(BYTE flash *pc,BYTE char_code)
{
BYTE i,a;
a=(char_code<<3) | 0x40;
for (i=0; i<8; i++) lcd_write_byte(a++,*pc++);
}
...........

 lcd_putchar(0x00);
...........

define_char(char0, 0);
...........
Тогда место символа ° (0x00) займет █ (0xFF)/
Так что, там просто что-то "зацепили" лишнее в коде.))))