7. Автомобильные часы с двумя DS18x20 и двумя маленькими индикаторами

По просьбе @SUSA была доработана схема и прошивка вот этих часов: 

 
 
 
В результате получилось очень даже не плохо. 
 
Схема на PIC16F876
 
 
Схема на PIC16F886
 
 
Схема на PIC16F886 с измерением напряжения 25,5 Vmax (по кнопке "+" показывается только время и напряжение, по кнопке "-" часы переводятся в обычный режим "день-напряжение-температура")
 
 
Без часов на контроллере PIC16F873
 
 
Часы-термометр-вольтметр
 
Пробежимся по настройкам меню:
1 - часы
2 - секунды
3 - день
4 - время отображения дня (сек)
5 - время отображения температуры (сек)
6 - коррекция (0.096 сек/сутки)
7 - яркость
8 - время ночи (пониженной яркости)
9 - с чего регулируется яркость (по времени (AUTO) или с переключателя «СВЕТ» (VHOD))
10 - частота кварца (4.000/4.096)  (с кварцем 4.000 – подгонял точность хода экспериментально)
11 - термометр 1 (HET/DS18S20/DS18B20)
12 - термометр 2 (HET/DS18S20/DS18B20)
13 - настройка коррекции (одинарная/двойная)
14 -  «0» в температуре (нет/есть)
15 -  «0» в часах (нет/есть)
16 - точка (одна/две)
 

С датчиком DS18S20 точность 0,5 ⁰С (-55..+99 ⁰С).
С датчиком DS18B20 точность 0,1 ⁰С (-55..+99 ⁰С).
 
Работа датчиков температуры:
       
- измерение температуры      <-----
- 5 секунд                                    |
- считывание температуры 1         |
- 5 секунд                                    |
- считывание температуры 2         |
- 5 секунд -----------------------------------

 

 

Принцип управления часами описан в предыдущих статьях.

Плата

Фотки от @SUSa

Часы-термометр-вольтметр

 

Кварц с частотой 4.000 МГц лучше не использовать, ход часов будет не точный, это связано с особенностью TMR0, используемого для формирования временных интервалов часов (относится к версиям ниже 2.0).
 
Плата от @SUSa
Плата моя (версия прошивки 2.1 код EEPROM "03")
Схема
На контроллере PIC16F876
Протеус PIC16F876
Прошивка, исходник (PIC16F876 v1.0c)
На контроллере PIC16F873
Протеус PIC16F873
Прошивка, исходник (PIC16F873 v1.0)
На контроллере PIC16F886
Протеус PIC16F886
Прошивка, исходник (PIC16F886 v1.0)
 
Обновление 20.08.2014
Обновление 11.09.2014
Обновление 09.03.2015
Обновление 11.05.2015
Изменения:
1 - меню переработано и разделено на 2 группы:
    - длинное нажатие (1 секунда)
      CLOC - настройка часов и минут
      SEC   - настройка минут, сброс секунд
      dAY    - настройка дня недели
      tdAY   - время отображения дня недели в дежурном меню
      ttEr     - время отображения температуры в дежурном меню
      Corr    - коррекция хода +/- 24.0 сек/сут с шагом 0,1
      LIGH   - ночная яркость
      nIGH   - ХХ.ХХ - "время начала ночи"."время конца ночи"
    - длинное нажатие (6 секунда)
      LIGH - LDr - яркость от датчика освещения
              - tIПE - яркость изменяется по времени
      FREQ - частота кварца 4.000/4.096 MHz
      dAt1   - 18B/18S/no - датчик 1 DS18B20/DS18S20/нет
      dAt2   - 18B/18S/no - датчик 2 DS18B20/DS18S20/нет
      otEr    - знак градуса в термометре
      dECt   - десятичная точка в термометре
      Ind      - индикатор с общим анодом/катодом
      oCLC  - незначащий ноль в часах
      dot      - мигает одна точка/две точки 88,88/88,'88
2 - устранено мигание индикаторов при опросе датчиков температуры
3 - полностью устранен неконтролируемый уход времени при использовании кварца 4,000 МГц
     и предустановки TMR0 (TMR0 не предустанавливается - предделитель не сбрасывается)
4 - изменено отображение дней недели
5 - добавлена возможность программно выбрать конфигурацию прошивки под разработанные мной платы с
     разными индикаторами (5 плат)
6 - изменен алгоритм коррекции хода: +/- 24.0 сек/сут с шагом 0,1
7 - все параметры (кроме номера схемы) могут изменяться в меню и сохраняются в EEPROM через 20 секунд
     после отпускания кнопок
8 - добавлен выбор индикаторов с общим анодом/катодом
9 - выключен резервный переход на внутренний генератор контроллера при отказе или долгой раскачке кварца
10 - переработан алгоритм перехода на низкую/высокую яркость от внешнего датчика освещения
11 - начало и конец ночи настраиваются от 0 до 23 часов. При равенстве значений, яркость остается максимальной.

Обновление 13.05.2016
Изменения:
1 - знакогенератор перенесен в EEPROM.
2 - вдвое повышена частота динамической индикации (122 Hz).
3 - медленное изменения яркости от LDR.
4 - изменен принцип опроса датчиков DS18x20, что исключает подмигивание индикатора, кроме самой минимальной яркости. Необходимо в меню подобрать минимальную яркость индикаторов ночью, при которой подмигивания незаметны. Обновление температуры 1 раз в 1,5 секунды.
5 - исправлены ошибки в прошивке 873/876 контроллеров.
Прошивки, исходники, схемы, платы v2.2 (для PIC16F873/876/883/886 v2.2)
 
Модификация 1
На контроллере PIC16F886 с одним термометром и вольтметром до 25,5 V
Протеус PIC16F886 с одним термометром и вольтметром
Прошивка, исходник с вольтметром (PIC16F886 v1.0)
(по кнопке "+" показывается только время и напряжение, по кнопке "-" часы переводятся в обычный режим "день-напряжение-температура")

 
Обновление модификации с вольтметром (05.03.2016)
- изменения смотри в описании в архиве.
- исправлена точка в вольтметре
Прошивки, исходники, схемы, платы v2.1 (для PIC16F873/876/883/886 v2.1)
 
Модификация 2 (17.04.2017)
Без часов на контроллере PIC16F873
- два термометра без часов
- кнопки "+" и "-" регулируют яркость
- скрытая кнопка "меню" - вход в меню настройки типа датчиков
- кварц 8,000 МГц
 

 

 

 

Категория: Часы | Добавил: Boroda (01.05.2012) W
Просмотров: 14144 | Комментарии: 65 | Теги: Часы-термометр, вольтметр, автомобильные часы, PIC16F886, PIC16F873, PIC16F876
Всего комментариев: 65
35 Mazz   (29.10.2015 15:16) [Материал]
Здравствуйте Boroda! Собрал Ваши часы вольтметр "Обновление модификации с вольтметром 11.05.2015" 2,1. Все хорошо но есть вопросы. Регулировка яркости от внешнего датчика работает только когда замыкаю накоротко выход контроллера RB4. В остальных случаях горит на максимуме (резистор на землю ставил 100к и 22к, одинаково, ни какого фото транзистора не подключено). И подсвечиваются сегменты B на верхнем индикаторе во всех цифрах не зависимо от яркости (Индикатор ОК FYQ-2841, резисторы в анодах 150Ом). При опросе датчика температуры каждую секунду подмигивает индикатор. В чем может быть проблема? Пробовал контроллеры 876 и 873А. Заранее спасибо

36 Boroda   (29.10.2015 19:02) [Материал]
На какой плате собирали? Как настроен пункт LIGH во втором меню?

37 Boroda   (29.10.2015 20:06) [Материал]
Есть какой-нибудь логический анализатор или осцил? Посмотрите что творится на ноге B4 при нормальном состоянии (резистор на ноге В4 на землю 22кОм) и при замыкании этой ноги на +5 через 1кОм. Сравните с протеусом.

З.Ы. хотите спалить контроллер, можно замкнуть и без резистора.

38 Boroda   (29.10.2015 20:10) [Материал]
Индикатор реально подмигивает или если долго пристально смотреть выпучив глаза, то можно заметить?

39 Boroda   (29.10.2015 20:34) [Материал]
У вас RB4 скорее всего где-то на + питания коротит. Выньте контроллер и прозвоните на обоих платах. Если все нормально, то вы спалили RB4.

40 Mazz   (29.10.2015 23:00) [Материал]
Коротыша нет. Есть еще контроллеры, проверю (RB4).По поводу подмигивания сильно заметно. Помогает отключение термометра

41 Boroda   (29.10.2015 23:21) [Материал]
Плата какая? Моя? Резисторы на RB4 какие стоят?

42 Mazz   (29.10.2015 23:25) [Материал]
Плата Ваша. Резистор на землю 22к, и 1к на +5

43 Boroda   (29.10.2015 23:27) [Материал]
Как настроен пункт LIGH во втором меню?

44 Mazz   (29.10.2015 23:28) [Материал]
Ldr

45 Boroda   (29.10.2015 23:30) [Материал]
И отключение резистора 1кОм через 5 секунд не уменьшает яркость? А пункт LIGH в первом меню как настроен?

46 Mazz   (29.10.2015 23:34) [Материал]
00. Не уменьшает. Только накоротко если. Менял в исходнике "Portb4=0", т.е поменял наоборот управление нулем, то всегда притушена яркость, при коротыше на землю максимум яркости

47 Boroda   (29.10.2015 23:37) [Материал]
Ну кнопки-то по такому же принципу работают! Бред... ниче не понимаю

48 Boroda   (29.10.2015 23:38) [Материал]
Что может тянуть вывод к плюсу, когда даже индикаторы ОК?

49 Mazz   (29.10.2015 23:40) [Материал]
Так индикатор анодом подключен к порту RB4. Может сам порт?

50 Mazz   (29.10.2015 23:44) [Материал]
Ладно я на работу пошел (у меня 7 час утра) smile . На  работе осцил гляну че на порту твориться

51 Boroda   (29.10.2015 23:44) [Материал]
Ок

52 Mazz   (30.10.2015 13:08) [Материал]
Часы
Осциллограмма
Короче снял осциллограмму. На трех контроллерах одно и тоже. На порту RB4 постоянно висит где то 0,7В. Они и подсвечивают сегменты. Либо ставить больше резюки  в анодах, либо пытаться программно исправить как то. И может замутить плавную регулировку яркости от фоторезистора вместо датчика температуры? Мне именно вольтметр часы нужен

53 Boroda   (30.10.2015 20:59) [Материал]
Так как у Вас индикатор с ОК, то транзистор прижимает общий вывод сегментов к земле, а с порта RB4 должно подаваться +5В на сегмент, чтоб он зажегся. Следовательно с 0,7 вольтами на порту RB4 сегмент В вообще не должен гореть. Посмотрите осциллограмму в протеусе и сравните со своей.

54 Boroda   (30.10.2015 21:13) [Материал]
Увидел осциллограмму. У Вас через период, в промежутках когда сегмент НЕ должен светиться, появляется напряжение 4,2 вольта. Вот оно и подсвечивает сегменты. А в другие промежутки это напряжение 0,7 вольта... Оно же откуда-то появляется?

55 Boroda   (30.10.2015 21:44) [Материал]
Ладно, предположим напряжение 4,2 вольта - это подтяжка резисторами 22к и 1к. Это напряжение должно появляться 1 раз в 4мс на время примерно 500мкс. А оно появляется совсем не так...

56 Boroda   (30.10.2015 21:57) [Материал]
Ошибся. 4,2 вольта это напряжение, когда сегмент светится (просадка напряжения), 0.7 вольта - когда не светится, а 5 вольт - напряжение во время измерения датчика освещенности, в это время нога контроллера переведена на вход (внутренняя подтяжка отключена). Эта осциллограмма снята с установленным резистором в 1кОм? А теперь без него снимите осциллограмму. И потом без блока индикации (с резистором 1кОм и без него).

З.Ы. четкие 5 вольт не могут взяться с делителя 1к/22к, там будет 4,7 вольта - ищите коротыш на +5вольт. Отпаяйте все чипы с RB4, кроме индикаторного, выньте контроллер и прозвоните на 2кОм (или на диоде) со всеми соседними дорожками. Чудес не бывает.

57 Boroda   (30.10.2015 22:26) [Материал]
Насчет плавной регулировки яркости - порт RA4 цифровой, аналоговый датчик на него не повесишь.

58 Mazz   (31.10.2015 02:31) [Материал]
Индикатор ОК, отпаивал все, и прозванивал. Данная осциллограмма снята без всяких резисторов на +5В. Только 22к на землю. Ладно буду разбираться. Реально ли сделать фоторезистор на любой аналоговый порт ацп? А вывод на транзистор перенести на RA4. Термометр мне не нужен. Есть подозрения что партия контроллеров битая. Куплю в другом магазине проверю

59 Boroda   (31.10.2015 15:21) [Материал]
883/886 дешевле выйдут. Надо поэкспериментировать с фоторезистором на RB4, там АЦП есть. На землю 100к поставить, а фотик через 4,7к на +5 вольт посадить.

60 Mazz   (31.10.2015 15:39) [Материал]
Любой какой Вам удобно контроллер. Готов тестировать. Правда в продаже таких нет. Есть в наличии 877, 876, 873

61 Boroda   (31.10.2015 16:29) [Материал]
876

62 Mazz   (02.11.2015 14:04) [Материал]
Здравствуйте Boroda! Над фоторезистором не думали еще? Макетка собрана, фоторезисторы есть.

63 Boroda   (02.11.2015 20:12) [Материал]
Да пока времени нет. Контроллер новый купили, как результаты? Все равно RB4 придется использовать как вход/выход, а там откуда-то +5 вольт. Надо с этим сначала разобраться.

64 Mazz   (03.11.2015 11:23) [Материал]
Купил два 876 в другом магазине. Все ОТЛИЧНО работает!!! Итог: три контроллера с такой проблемой на порту RB4. Обидно

65 Boroda   (25.11.2015 21:04) [Материал]
Засада... У 876 только 5 аналоговых входов: на 4х из них висят транзисторы индикаторов, на 5м вольтметр... Не получится фотодатчик зацепить.

25 gen_09   (11.10.2015 15:34) [Материал]
Доброго времени суток!  
Уважаемый Boroda, возможно ли прошивку под PIC16F876 без часов и на два трехразрядных индикатора с ОА?

26 Boroda   (12.10.2015 00:49) [Материал]
Конечно. Как раз собирался сделать расширенную версию с разными режимами индикации.

27 Boroda   (12.10.2015 23:47) [Материал]
Тестируйте, проверял только в протеусе. Особое внимание уделите подмигиванию индикатора при минимальной яркости каждую секунду. Есть ли оно?

29 Boroda   (16.10.2015 21:35) [Материал]
Я чувствую нах никому не нужно

30 gen_09   (18.10.2015 04:00) [Материал]
Уважаемый Boroda, большое спасибо, но в данный момент в длительной командировке, руководству не прикажешь.

31 gen_09   (18.10.2015 04:12) [Материал]
З.Ы. Борода, ты ГЕНИЙ!!!
З.Ы.З.Ы. При трехразрядном индикаторе, при минусовых температурах, десятых не будет?

32 Boroda   (18.10.2015 11:21) [Материал]
Ну минус-то надо отображать! До "-9,9" десятые отображаются, а ниже только целые. Выше "+99,9" тоже только целые.

23 beddramer   (10.10.2015 07:40) [Материал]
Добрый день, уважаемый создатель этого чуда) у меня есть почти все часы с Вашего сайта, все работает идеально) но вот решил собрать отцу в авто эти часики, и появилась пара вопросов. У меня плата для сао4-41, pic16f876a, прошивка 2.1 с вольтметром. 1 как можно настроить вольтметром? При подаче 10в он показывает 10в, при подаче 12в он показывает 10,5в, и при подаче 15в он показывает 11,3в. 2 в этой прошивке нельзя подключить 2 датчика 18b20? Просто на плате 2 места под них, а программно только 1.

24 Boroda   (10.10.2015 10:48) [Материал]
Добрый день! На процессорной плате скорее всего у Вас стоят резисторы для второго термодатчика, которые искажают показания вольтметра. Второй термодатчик в данной реализации подцепить нельзя.

28 Boroda   (12.10.2015 23:58) [Материал]
Получилось?

33 beddramer   (24.10.2015 18:33) [Материал]
все получилось, извиняюсь за свою невнимательность) делал отцу - Вы не представляете, сколько было радости) спасибо Вам happy

34 Boroda   (25.10.2015 09:21) [Материал]
Ну и хорошо!

22 плесень   (03.04.2014 20:40) [Материал]
Здравствуйте! Собрал часы по обновлённой схеме на PIC 16F876A.   Работают нормально. Нужна модификация прошивки. Нужно чтобы термометр работал ещё и в режиме термостата, т.е по заданной температуре можно было включать и отключать нагрузку через транзисторный ключ.Один термометр можно убрать освободится один вывод контролёра.Ещё термометр не обнаруживает датчик DS18B20 на длинном 10м проводе. На 1м обнаруживает.

20 Freud_z   (08.05.2012 11:53) [Материал]
Доброго времени суток!

Ребят, можете помочь с модификацией прошивки?
Нужно оставить один индикатор, убрать календарь.
На индикаторе постоянно отображаются часы, по нажатию кнопки - поочередно (с каждым нажатием) каждая температура - потом возврат к часам или автоматически через 2 секунды возврат к часам.
если не очень сложно - то хотелось бы, чтобы яркость при включении габаритов (либо датчик освещенности) понижалась.

21 Boroda   (08.05.2012 13:25) [Материал]
Привет! Тут не все так просто - вся индикация завязана на два индикатора. Проще переделать часы из 8й статьи.

13 Picavit   (03.05.2012 21:00) [Материал]
Спасибо за прошивку smile А в схеме нет измерения U на аккумуляторе?

14 Boroda   (03.05.2012 21:08) [Материал]
Пока нет, но можно делитель напряжения подцепить только на вход AN4 (7 нога контроллера).

15 Picavit   (03.05.2012 21:23) [Материал]
Значит одну из температур не будет мерить? Мне пойдет

16 Boroda   (03.05.2012 22:45) [Материал]
Добавил напряжение. Тестировал только в протеусе, так что тест в железе за тобой!

17 Boroda   (03.05.2012 23:05) [Материал]
Можно было бы добавить еще кучу функционала, но тут тупиковый вариант - ноги все заняты, да и не знаю какие функции еще прикрутить smile

18 Picavit   (06.05.2012 07:22) [Материал]
По мне, так измерение температуры тут нафиг не нужно. На этом месте в автомобиле нужны: часы, измерение напряжения на аккумуляторе с сигнализацией при уходе напряжения из определенных пределов и думаю.... бакометр тоже с сигнализацией минимального остатка smile
Не нашел блин у себя нужных индикаторов, заказал. Придут, сделаю и отпишусь обязательно

19 Boroda   (06.05.2012 16:19) [Материал]
ну насчет всего этого: мне парнишка заказал в классику приборчик... бакомер, часы, 2 температуры, тахометр, напряжение... на каждый параметр свой индикатор... большинство индикаторов встают на место прикуривателя в бороду семерки... вот потихоньку далаю.

11 Picavit   (03.05.2012 20:39) [Материал]
С меня схема и печатка biggrin

10 Picavit   (03.05.2012 20:36) [Материал]
Стас! а что ты думаеш насчет применения тут дисплея от Nokia 1110i. Сложно будет под него переделать прошивку?

12 Boroda   (03.05.2012 20:52) [Материал]
Никогда не имел с ними дела, да и считаю их более пригодными для портативной техники, где нужна легкость и компактность...

8 Picavit   (03.05.2012 15:17) [Материал]
А перекомпилить возможно на 16f886 или 16f877a, у меня только такие в наличии???

9 Boroda   (03.05.2012 15:20) [Материал]
Конечно можно, с работы приеду сделаю под 886.

6 Picavit   (03.05.2012 06:48) [Материал]
Привет Стас!
Отличные часики! А возможно переделать схему часов на мегу 8а (TQFP), взамен измерения тем-ры вставить измерение напряжения на аккумуляторе. И совсем наглость....сделать дисплей от сотика 1110i

7 Boroda   (03.05.2012 08:02) [Материал]
Привет! С АВР'ами не дружу... Не прижились они как-то у меня... А с напряжением можно и тут попробовать замутить. smile

5 Boroda   (01.05.2012 22:32) [Материал]
Кстати, это самый удобный автомобиль для установки уличного термодатчика! Весь горячий воздух назад уходит, а впереди мест установки море! smile

4 Boroda   (01.05.2012 22:25) [Материал]
up это наверное самый навороченный прибор в машине! Приближаемся к мерседесу!

3 @SUS   (01.05.2012 22:18) [Материал]
http://cs304800.userapi.com/v304800408/154/aWSP6JPMLWw.jpg тебе спасибо, Boroda , поставил на свое железо, только не смейтесь, это заз))

1 @SUS   (01.05.2012 19:52) [Материал]
отличные часы!

2 Boroda   (01.05.2012 19:55) [Материал]
С твоей помощью! smile

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]