Обсуждаем контроллеры компании Atmel.
Ответить

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

Ср мар 11, 2015 21:33:06

Вчера приехали фоторезисторы. Слава Укрпочте! Договорились с Китаем, письмо прилетает за 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 KiB) Скачиваний: 290

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

Чт мар 12, 2015 10:10:33

offtopic

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

Пт мар 13, 2015 23:16:15

значит пора браться) спасибо за платку)

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

Сб мар 14, 2015 11:02:58

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

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

Сб мар 14, 2015 14:22:34

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 KiB) Скачиваний: 316
Последний раз редактировалось KomSoft Сб мар 14, 2015 19:05:10, всего редактировалось 1 раз.

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

Сб мар 14, 2015 14:33:57

KomSoft, ок, тогда подождём-с :)

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

Сб апр 04, 2015 09:38:24

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

Изображение

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

Успехов!
Вложения
FotoGallery.rar
Фотогалерея
(985.44 KiB) Скачиваний: 457
ClockThermMega8_12r.part02.rar
Полный набор всего - описание, прошивки, схемы, доработки, платы (часть 2)
(572.66 KiB) Скачиваний: 604
ClockThermMega8_12r.part01.rar
Полный набор всего - описание, прошивки, схемы, доработки, платы (часть 1)
(800 KiB) Скачиваний: 606

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

Сб апр 04, 2015 13:00:40

KomSoft :solder: Спасибо! Будет время - займемся :)

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

Ср июл 01, 2015 20:53:54

Слегка достало мерцание индикаторов при некоторых уровнях яркости и я добрался до программы. В процедуре "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 
}

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

Пн авг 17, 2015 22:20:10

Прошло два месяца - полет нормальный, мерцания не заметил. Хотя в предыдущем посте в исходнике я сильно намудрил. В итоговой версии - упростил. Итак, чтобы устранить мигание на границах переключения яркости, заливаем прошивку от 2015-07-07, а вход разрешения OE# регистра U12 подключаем напрямую к ноге 13 контроллера (вывод PB1) безо всяких инверторов. Мертвые зоны установлены 2 единицы, этого достаточно. Все закомментировано в процедуре "set_yarkost"
Вложения
Clock-Term-Alarm_12LED_2015-07-07.rar
Прошивка с исходниками от 2015-07-07 для устранения мерцания на границах яркости
(91.71 KiB) Скачиваний: 379

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

Пт окт 16, 2015 08:10:22

Всем доброго дня.
Может у кого есть печатка для 1,8" сигментов и мега в корпусе TQFP, буду очень признателен. :beer:
Во вложении моя попытка пере развести плату.
Вложения
проект часы 12led 1,8 TQFP октябрь.rar
(158.71 KiB) Скачиваний: 308

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

Вс окт 18, 2015 09:11:15

Всем доброго дня.
13 ножка меги должна соединятся с 13 ножкой U12, у меня она на минусе?
Печатку наконец переразвел.
Вложения
проект часы (12led TQFP октябрь).rar
(58.8 KiB) Скачиваний: 347

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

Вс окт 18, 2015 18:39:29

В исходной схеме от Данко 13 нога 595 регистра сидит на земле. Это вход разрешения выходных каскадов регистра. Когда он на земле - регистр всегда передает сигналы на выход. Соединяя его с 13 ногой меги мы получаем возможность управлять яркостью, т.к. выходы регистра периодически отключаются и индикаторы гаснут - реализуется ШИМ-управление. Только Вам нужно поменять PR31 и R3 местами (PR31 подключается к +5В) и использовать прошивку от 2015-07-07.rar (на пару постов выше), в которой есть программная инверсия сигнала яркости

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

Пн окт 19, 2015 05:15:19

Фоторезистор подправил. Транзистор Q2 для второго будильника?

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

Пн окт 19, 2015 06:08:34

Почти., но этот выход не пищит, он просто подает +5в. Это для музыкальной открытки. Оба будильника пищат через первый выход и про то включают второй (т.е. они как бы параллельны)

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

Пн окт 19, 2015 08:07:28

:beer: Спасибо, буду сегодня печатку ЛУТИТЬ :)))

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

Вс фев 28, 2016 19:00:32

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

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

Вс фев 28, 2016 20:36:15

У меня три экземпляра живут почти нормально, одни из них - на работе, т.е. питание включается утром, а вечером выключается. Сбой второго датчика волшебным образом (!?) устранился стиранием мс перед заливкой, причина неясна. Назад перескочили один раз в конце ноября, как будто переход на зимнее время на месяц позже.
Еще в одном экземпляре не усианавливался 11 месяц - с 9 прыгал на 0А и сразу на 1. Причина также неясна - основную программу смотрел, там все правильно, и сбой только в одном экз. Но календарь влияет только на откл. будильников по сб-вс, поэтому дальше не рыл. А так - доволен

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

Вс фев 28, 2016 21:09:49

Есть еще подозрение на ds1307. Я их брал на али десяток, так при сборке часов пару выкинули как нерабочие совсем. Может при записи-чтении в нее (если она глючная) и происходят сбои, т.к. в основной программе вроде все правильно. Косвенно это подтвердается тем, что в соседей ветке про такие часы на 4 разряда более 100 страниц и немало места занимает обсуждение замены RTC. Может китай глючит...

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

Пн фев 29, 2016 18:34:51

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