Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2)

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
KomSoft
Нашел транзистор. Понюхал.
Сообщения: 157
Зарегистрирован: Вт сен 15, 2009 06:21:27
Откуда: Киев

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Сообщение KomSoft »

Вчера приехали фоторезисторы. Слава Укрпочте! Договорились с Китаем, письмо прилетает за 14 дней! Были куплены 20PCS Photoresistor GL5537 LDR Photo Resistors, 20шт. за $0.99 ибо у нас они от $0.5 до $1 за шт!

Приехавшие резисторы PGM5537 имеют на свету сопротивление ок. 1К, а в темноте у них уходит до 0.5МОм и больше. В данной схеме, возможно из-за предложеного мной варианта дополнительных транзисторных ключей при 4-м уровне яркости (условно заполнение ШИМ до 25%) индикаторы не светятся. Поэтому пришлось немного изменить схему подключения фотоэлемента, добавив параллельно ему резистор. Получился делитель на входе PC1/ADC1, который обеспечивает без фоторезистора (типа в темноте) напряжение от 3.0 до 3.6В (т.е. 3-й уровень яркости, условно 25-50%).
Изображение
Например верхнее плечо - 4К7, нижнее - 10К обеспечивает напряжение 3.4В - минимальный уровень яркости, но индикаторы не погашены. Параллельно нижнему плечу ставим фоторезистор и при его освещении напряжение будет уменьшаться, а яркость индикаторов - возрастать в ТРИ уровня. Висит на стене - работает. Теперь дело за остальными экземплярами для закрепления материала и повторяемости.

Мне кажется, такая схема включения более универсальна, хотя возможно в схеме без дополнительных ключей и получится все 4 уровня яркости, как-нибудь попозже проверю. Изменений в плату можно не вносить, резистор напаивается прямо на ноги фоторезистора.
Вложения
CDS_PhotoResistorPGM5xxx.pdf
Даташит на серию фоторезисторов
(399.8 КБ) 435 скачиваний
Настоящему коту и в декабре МАРТ!
Аватара пользователя
НАПАЛМ
Это не хвост, это антенна
Сообщения: 1314
Зарегистрирован: Пт ноя 27, 2009 19:47:13
Откуда: Казань

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Сообщение НАПАЛМ »

offtopic
Спойлер
KomSoft писал(а):Слава Укрпочте!

Почтальонам слава!
Аватара пользователя
Welten
Потрогал лапой паяльник
Сообщения: 325
Зарегистрирован: Сб янв 16, 2010 22:51:45

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Сообщение Welten »

значит пора браться) спасибо за платку)
Аватара пользователя
KomSoft
Нашел транзистор. Понюхал.
Сообщения: 157
Зарегистрирован: Вт сен 15, 2009 06:21:27
Откуда: Киев

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Сообщение KomSoft »

Подождите еще денек, тут с управление яркостью индикаторов есть нюансы, сейчас мысли оформлю и через денек выложу
Настоящему коту и в декабре МАРТ!
Аватара пользователя
KomSoft
Нашел транзистор. Понюхал.
Сообщения: 157
Зарегистрирован: Вт сен 15, 2009 06:21:27
Откуда: Киев

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Сообщение KomSoft »

to НАПАЛМ: спасибо, очень смело! Хотя судя по ситуации за такое можно сейчас получить бан не только на форуме.... Выражаю соболезнования и произошедшему у Вас...

Управление яркостью индикаторов.

Задействовано управление яркостью индикаторов через ШИМ. Программа дает 4 уровня управления яркостью. Однако, из-за того, что вход OE# регистра U12 инверсный, придется ввести еще одну (дополнительную) инверсию, иначе яркость регулируется наоборот (на свету - самая тусклая). При этом часы включаются с максимальной яркостью, а потом после инициализации и вывода температуры, устанавливают яркость по фотоэлементу.

Сразу скажу, что в авторской схеме, без дополнителных транзисторных ключей мне не удалось нормально запустить регулировку яркости. Испробован вариант 2, как требующий минимальных переделок, но ничего не вышло. При максимальной яркости все хорошо, при ее снижении начинает появляться засветка и при минимальной яркости просто видим 4 восьмерки. Признаюсь, что был расстроен и на реакцию маленьких индикаторов не посмотрел. Дальше не экспериментировал, т.к. это тупиковая ветвь - надежнее поставить доп. ключи.

Как всегда, предлагаю варианты доработки на выбор. Есть еще 4-й вариант - сделать инверсию программно, но мы работаем с железом и не будем плодить еще и массу прошивок, чтобы не запутать окончательно. Работоспособно в схеме с доп. транзисторными ключами.

Изображение

Вариант №1. Правильное направление регулировки яркостью делаем, поменяв местами фоторезистор PR31 и резистор R3. Но поскольку доп. инвертора нет, то получаем 3 уровня яркости, а на 4-м уровне яркости индикаторы гаснут.
Вариант №2. Фоторезистор - как в оригинальной схеме. Инвертор включен между МК и регистром U12. Остается подобрать нижнее плечо R3, чтобы на свету напряжение на PC1/ADC1 было выше 3.7В (т.е. 4-й уровень яркости) У меня реализован вариант №2, а 7407 напаяна прямо на U12 сверху.
Вариант №3. Принципиально не отличается от варианта 2. Он дешевле, чем микросхема и не увеличивает номенклатуру деталей. Кроме того, плата очень плотная и вписать в нее микросхему будет тяжелее, разве что полностью переразводить.

Внимание! При определенной освещенности из-за мигания центральных точек (секунд) наблюдается синхронное изменение яркости индикаторов, видно маловат программный гистерезис на границах переключения. Поэтому фоторезистор нужно отделить от этих точек перегородкой, одеть на них трубочки или вывести его на верхнюю/боковую стенку корпуса.

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

более подробно - в файле. Сорри, сорри, файл добавил
Вложения
lc.rar
Управление яркостью индикаторов
(11.76 КБ) 359 скачиваний
Последний раз редактировалось KomSoft Сб мар 14, 2015 19:05:10, всего редактировалось 1 раз.
Настоящему коту и в декабре МАРТ!
Аватара пользователя
Welten
Потрогал лапой паяльник
Сообщения: 325
Зарегистрирован: Сб янв 16, 2010 22:51:45

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Сообщение Welten »

KomSoft, ок, тогда подождём-с :)
Аватара пользователя
KomSoft
Нашел транзистор. Понюхал.
Сообщения: 157
Зарегистрирован: Вт сен 15, 2009 06:21:27
Откуда: Киев

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Сообщение KomSoft »

Все! Пора заканчивать, а то уже начинает напрягать... Четвертые часы упаковал в корпус, вторые - пакую (с корпусом для меня тяжелее, чем с паяльником... :dont_know: )
Тут все варианты, начиная от первого и заканчивая учетом все доработок, с повышающим модулем (питание +5В) и с классическим питанием на 78хх от +9-12В. Включены три прошивки, чтобы не искать.

Изображение

Только прочитайте еще раз файл, в него кое-где внесены существенные дополнения. Сама конструкция доказала свою отличную повторяемость при правильной сборке.

Успехов!
Вложения
FotoGallery.rar
Фотогалерея
(985.44 КБ) 512 скачиваний
ClockThermMega8_12r.part02.rar
Полный набор всего - описание, прошивки, схемы, доработки, платы (часть 2)
(572.66 КБ) 668 скачиваний
ClockThermMega8_12r.part01.rar
Полный набор всего - описание, прошивки, схемы, доработки, платы (часть 1)
(800 КБ) 674 скачивания
Настоящему коту и в декабре МАРТ!
Аватара пользователя
Welten
Потрогал лапой паяльник
Сообщения: 325
Зарегистрирован: Сб янв 16, 2010 22:51:45

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Сообщение Welten »

KomSoft :solder: Спасибо! Будет время - займемся :)
Аватара пользователя
KomSoft
Нашел транзистор. Понюхал.
Сообщения: 157
Зарегистрирован: Вт сен 15, 2009 06:21:27
Откуда: Киев

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Сообщение KomSoft »

Слегка достало мерцание индикаторов при некоторых уровнях яркости и я добрался до программы. В процедуре "set_yarkost" добавлены "мертвые" зоны, при попадании в которые данных с фоторезистора яркость не изменяется, а остается на прежнем уровне. Очень большими эти зоны делать нельзя, достаточно 2-4 единицы. Заодно сделаны обратные (инверсные) значения яркости для ШИМа. теперь вход разрешения OE# регистра U12 подключается напрямую к ноге 13 контроллера (вывод PB1) безо всяких инверторов. Поставлено на тестирование. Погоняю - выложу прошивку.

Код: Выделить всё

void set_yarkost (void) {
   unsigned char adc_rez, rez_100, rez_75, rez_50, rez_25, hyst;

   adc_rez  = read_adc(1); // данные АЦП с фоторезистора
    hyst = 2;                // hyst = maxfotorez/16;    // добавлено KomSoft 01.07.2015
    // ширина "мертвой" зоны - фиксированная или в частях от maxfotorez
    // чтобы отменить - поставить hyst = 0

   if (maxfotorez == 0xFF) {rez_100 = 190+hyst; rez_75 = 145+hyst; rez_50 = 95+hyst; rez_25 = 45+hyst; }
   else                    {rez_100 = maxfotorez+hyst; rez_75 = (maxfotorez/2) + (maxfotorez/4)+hyst; rez_50 = maxfotorez/2+hyst; rez_25 = maxfotorez/4+hyst;}
   
   if (adc_rez > rez_100) {
      max_yarkost = 0; // яркость 100%
   }

   if ((adc_rez > rez_75) && (adc_rez < (rez_100-2*hyst))) {
      max_yarkost = 64; // яркость 75%
   }

   if ((adc_rez > rez_50) && (adc_rez < (rez_75-2*hyst))) {
      max_yarkost = 128; // яркость 50%
   }

   if ((adc_rez > rez_25) && (adc_rez < (rez_50-2*hyst))) {
      max_yarkost = 192; // яркость 25%
   }

   if (adc_rez < (rez_25-2*hyst)) {
      max_yarkost = 224; // яркость меньше 25%
   }
    // добавлено KomSoft 01.07.2015: гистерезис или "мертвые" зоны при регулировке яркости, чтобы устранить мерцание
    // было "<=" вместо "<"  и отсутствовал "-2*hyst"
    // max_yarkost инвертирована, было 255, 192, 128, 64, 32 
}
Настоящему коту и в декабре МАРТ!
Аватара пользователя
KomSoft
Нашел транзистор. Понюхал.
Сообщения: 157
Зарегистрирован: Вт сен 15, 2009 06:21:27
Откуда: Киев

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Сообщение KomSoft »

Прошло два месяца - полет нормальный, мерцания не заметил. Хотя в предыдущем посте в исходнике я сильно намудрил. В итоговой версии - упростил. Итак, чтобы устранить мигание на границах переключения яркости, заливаем прошивку от 2015-07-07, а вход разрешения OE# регистра U12 подключаем напрямую к ноге 13 контроллера (вывод PB1) безо всяких инверторов. Мертвые зоны установлены 2 единицы, этого достаточно. Все закомментировано в процедуре "set_yarkost"
Вложения
Clock-Term-Alarm_12LED_2015-07-07.rar
Прошивка с исходниками от 2015-07-07 для устранения мерцания на границах яркости
(91.71 КБ) 443 скачивания
Настоящему коту и в декабре МАРТ!
Аватара пользователя
sobolev
Грызет канифоль
Сообщения: 290
Зарегистрирован: Ср мар 09, 2011 14:01:21
Откуда: Донецк

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Сообщение sobolev »

Всем доброго дня.
Может у кого есть печатка для 1,8" сигментов и мега в корпусе TQFP, буду очень признателен. :beer:
Во вложении моя попытка пере развести плату.
Вложения
проект часы 12led 1,8 TQFP октябрь.rar
(158.71 КБ) 359 скачиваний
Аватара пользователя
sobolev
Грызет канифоль
Сообщения: 290
Зарегистрирован: Ср мар 09, 2011 14:01:21
Откуда: Донецк

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Сообщение sobolev »

Всем доброго дня.
13 ножка меги должна соединятся с 13 ножкой U12, у меня она на минусе?
Печатку наконец переразвел.
Вложения
проект часы (12led TQFP октябрь).rar
(58.8 КБ) 406 скачиваний
Аватара пользователя
KomSoft
Нашел транзистор. Понюхал.
Сообщения: 157
Зарегистрирован: Вт сен 15, 2009 06:21:27
Откуда: Киев

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Сообщение KomSoft »

В исходной схеме от Данко 13 нога 595 регистра сидит на земле. Это вход разрешения выходных каскадов регистра. Когда он на земле - регистр всегда передает сигналы на выход. Соединяя его с 13 ногой меги мы получаем возможность управлять яркостью, т.к. выходы регистра периодически отключаются и индикаторы гаснут - реализуется ШИМ-управление. Только Вам нужно поменять PR31 и R3 местами (PR31 подключается к +5В) и использовать прошивку от 2015-07-07.rar (на пару постов выше), в которой есть программная инверсия сигнала яркости
Настоящему коту и в декабре МАРТ!
Аватара пользователя
sobolev
Грызет канифоль
Сообщения: 290
Зарегистрирован: Ср мар 09, 2011 14:01:21
Откуда: Донецк

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Сообщение sobolev »

Фоторезистор подправил. Транзистор Q2 для второго будильника?
Аватара пользователя
KomSoft
Нашел транзистор. Понюхал.
Сообщения: 157
Зарегистрирован: Вт сен 15, 2009 06:21:27
Откуда: Киев

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Сообщение KomSoft »

Почти., но этот выход не пищит, он просто подает +5в. Это для музыкальной открытки. Оба будильника пищат через первый выход и про то включают второй (т.е. они как бы параллельны)
Настоящему коту и в декабре МАРТ!
Аватара пользователя
sobolev
Грызет канифоль
Сообщения: 290
Зарегистрирован: Ср мар 09, 2011 14:01:21
Откуда: Донецк

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Сообщение sobolev »

:beer: Спасибо, буду сегодня печатку ЛУТИТЬ :)))
VOLODIKANA
Родился
Сообщения: 8
Зарегистрирован: Пн окт 06, 2014 20:19:12

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Сообщение VOLODIKANA »

Здравствуйте! Выявились не которые баги с часами. Часы ходят уже больше года. 1 Иногда происходит такое когда выключают свет и включают обратно часы перезапускаются снова и снова. Приходится перезапускать 2-й дат, температуры не знаю с чем это связано 2 Иногда часы переходят на час назад. Проект хороший но меня стали напрягать эти баги интересно у меня только так проявляется или ещё у кого. Вот думаю собирать вторые или нет.posting.php?mode=reply&f=57&t=49530#
Аватара пользователя
KomSoft
Нашел транзистор. Понюхал.
Сообщения: 157
Зарегистрирован: Вт сен 15, 2009 06:21:27
Откуда: Киев

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Сообщение KomSoft »

У меня три экземпляра живут почти нормально, одни из них - на работе, т.е. питание включается утром, а вечером выключается. Сбой второго датчика волшебным образом (!?) устранился стиранием мс перед заливкой, причина неясна. Назад перескочили один раз в конце ноября, как будто переход на зимнее время на месяц позже.
Еще в одном экземпляре не усианавливался 11 месяц - с 9 прыгал на 0А и сразу на 1. Причина также неясна - основную программу смотрел, там все правильно, и сбой только в одном экз. Но календарь влияет только на откл. будильников по сб-вс, поэтому дальше не рыл. А так - доволен
Настоящему коту и в декабре МАРТ!
Аватара пользователя
KomSoft
Нашел транзистор. Понюхал.
Сообщения: 157
Зарегистрирован: Вт сен 15, 2009 06:21:27
Откуда: Киев

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Сообщение KomSoft »

Есть еще подозрение на ds1307. Я их брал на али десяток, так при сборке часов пару выкинули как нерабочие совсем. Может при записи-чтении в нее (если она глючная) и происходят сбои, т.к. в основной программе вроде все правильно. Косвенно это подтвердается тем, что в соседей ветке про такие часы на 4 разряда более 100 страниц и немало места занимает обсуждение замены RTC. Может китай глючит...
Настоящему коту и в декабре МАРТ!
VOLODIKANA
Родился
Сообщения: 8
Зарегистрирован: Пн окт 06, 2014 20:19:12

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Сообщение VOLODIKANA »

Здравствуйте! Спасибо за отклик не думал что кто-то ответит. Я примерно так и думал либо мк либо DS глючат, Вроде DS1307 на Китай не похожи хотя всё возможно брал 5 штук у ЧП. А вчера пришёл домой часы на 1ч отстают перевёл, на следующий день перезапустил часы они перевелись на час вперёд, вот так
Ответить

Вернуться в «AVR»