Часы Super Clock - VFD
- Kotto
- Опытный кот
- Сообщения: 795
- Зарегистрирован: Чт ноя 08, 2012 22:28:05
- Откуда: Ижевск
- Контактная информация:
Re: Часы Super Clock - VFD
Есть еще эффектик, те лампы, что не севшие и светят ярко, ощущение что их свет отражается от внутренней стороны колбы и создает еще засветку. У ламп с подсевшим люминофором такого эффекта нет
- Kotto
- Опытный кот
- Сообщения: 795
- Зарегистрирован: Чт ноя 08, 2012 22:28:05
- Откуда: Ижевск
- Контактная информация:
Re: Часы Super Clock - VFD
Продолжаю возиться с часиками. Все работает, но никак не могу опять же побороть в некоторых лампах паразитное свечение. Не понятно от чего это зависит (( Запирающее напряжение есть, резисторы перепробовал от 400 кОм до 240 кОм. Если менять лампы, в некоторых оно сильнее, в некоторых слабее, бывает если лампу трогать пальцем, засветка усиливается. Заметно это на минимуме яркости. Транзисторы пробовал DTA114 без обвязки, напрямую от контроллера и BC857 npn с базовым резистором 10 кОм. Флюс отмачивал в тазике с изопропанолом зубной щеткой, после сушил феном, плата блестит.
Наиболее заметно засветка проявляется между 1й лампой (десятки часов) и 6й лампой (единицы секунд).
Алгоритм индикации следующий:
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0xFE;
switch (a) {
case 0:
print (hours / 10);
break;
case 1:
print (hours % 10);
break;
.
.
.
case 5:
print (seconds % 10);
break;
}
c++;
if (c > 10) {
off_all_setka ();
off_all_segment ();
a++;
if (a > 5) {a = 0;}
}
}
немного сокращенно, но суть думаю понятна. В основной части программы ничего пока особо нет, только чтение времени с ds3231.
Эффект конечно крайне не значительный, но люто бесит. Помогите пожалуйста что нибудь сделать с этим (
PS функция print включает нужные сегменты в зависимости от того, какая цифра на входе. Функции off_all выключают либо все сегменты сразу, либо все сетки. Добавление каких либо delay в этих местах эффекта не дает никакого.
Лампы ИВ-12.

На фото конечно не видно абсолютно, но оно есть
Наиболее заметно засветка проявляется между 1й лампой (десятки часов) и 6й лампой (единицы секунд).
Алгоритм индикации следующий:
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0xFE;
switch (a) {
case 0:
print (hours / 10);
break;
case 1:
print (hours % 10);
break;
.
.
.
case 5:
print (seconds % 10);
break;
}
c++;
if (c > 10) {
off_all_setka ();
off_all_segment ();
a++;
if (a > 5) {a = 0;}
}
}
немного сокращенно, но суть думаю понятна. В основной части программы ничего пока особо нет, только чтение времени с ds3231.
Эффект конечно крайне не значительный, но люто бесит. Помогите пожалуйста что нибудь сделать с этим (
PS функция print включает нужные сегменты в зависимости от того, какая цифра на входе. Функции off_all выключают либо все сегменты сразу, либо все сетки. Добавление каких либо delay в этих местах эффекта не дает никакого.
Лампы ИВ-12.
На фото конечно не видно абсолютно, но оно есть
- RoboC
- Мудрый кот
- Сообщения: 1795
- Зарегистрирован: Ср апр 04, 2012 09:55:53
- Откуда: Северодонецк
- Контактная информация:
Re: Часы Super Clock - VFD
Вы бы лучше весь исходник приложили.
Может вы в print сначала сегменты включаете , а потом сетки?
Почему 2 прерывания не использовали по совпадению и переполнения, как обычно это делают?
не заметил где "с" обнуляется.
Может вы в print сначала сегменты включаете , а потом сетки?
Почему 2 прерывания не использовали по совпадению и переполнения, как обычно это делают?
не заметил где "с" обнуляется.
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
- Kotto
- Опытный кот
- Сообщения: 795
- Зарегистрирован: Чт ноя 08, 2012 22:28:05
- Откуда: Ижевск
- Контактная информация:
Re: Часы Super Clock - VFD
Вот мой код, немного стыдно за него, ибо программист из меня так себе... Да, действительно я сначала включаю сегменты, потом сетки, это сильно критично? А то уже не знаю за что взяться, разобрал трансформатор, с целью понизить анодное. Подумал может завысил чуток...
---
И да, зачем два прерывания?
---
И да, зачем два прерывания?
- Вложения
-
- Часы на ИВ-12.rar
- (59.29 КБ) 254 скачивания
-
ncbelov
- Потрогал лапой паяльник
- Сообщения: 338
- Зарегистрирован: Чт апр 02, 2015 17:04:07
- Откуда: Тольятти
Re: Часы Super Clock - VFD
[uquote="Kotto",url="/forum/viewtopic.php?p=3303332#p3303332"]Вот мой код[/uquote]
архив битый
архив битый
-
ncbelov
- Потрогал лапой паяльник
- Сообщения: 338
- Зарегистрирован: Чт апр 02, 2015 17:04:07
- Откуда: Тольятти
Re: Часы Super Clock - VFD
Скачать я тоже скачал да вот открыть его не могу,ну да ладно.
Последний раз редактировалось ncbelov Ср фев 07, 2018 18:11:50, всего редактировалось 1 раз.
- RoboC
- Мудрый кот
- Сообщения: 1795
- Зарегистрирован: Ср апр 04, 2012 09:55:53
- Откуда: Северодонецк
- Контактная информация:
Re: Часы Super Clock - VFD
[uquote="Kotto",url="/forum/viewtopic.php?p=3303332#p3303332"]Вот мой код, немного стыдно за него, ибо программист из меня так ..
И да, зачем два прерывания?[/uquote]
Я тоже не программист, для меня єто хобби
Вы прочитали эту статью, и надо было еще эту прочитать.
используя одно прерывание я бы написал его так, примерно:
Изменяя в основной программе brightness, вы меняете яркость
Изменяя числа в массиве out[6], вы меняете символы на лампах.
Таймер надо настроить делителями на частоту = 2*частота индикации*кол-во ламп
И да, зачем два прерывания?[/uquote]
Я тоже не программист, для меня єто хобби
Вы прочитали эту статью, и надо было еще эту прочитать.
используя одно прерывание я бы написал его так, примерно:
Спойлер
Код: Выделить всё
volatile unsigned char brightness = 0;
volatile unsigned char Trigger = 0;
volatile unsigned char out[6] = {10, 10, 10, 10, 10, 10};
volatile unsigned char dig;
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
if (Trigger == 1)
{
TCNT0=brightness; // brightness = 20 // 235 тиков счетчика будет гореть 1 сегмент
// получаем из массива out[а] число
//номер числа в массиве указывает "а" - номер сегмента
dig = out[а];
//обрабатываем число диг dig , обычно это взять из массива маску для порта для нужной цифры и записать ее в порт;
print (dig); // только вывод в порты!!!
// только не расклавывайте числа в прерывании как в примере по моей ссылке . Оно, прерывание, должно быть как можно короче!!!!!
// все вычисления, конвертации должны быть сделаны в основной программе!!!!
// дальше открываем нужную сетку
if (dig!=10) // если dig равно 10 то это пробел, мы не зажигаем лампу
{
switch (a) {
case 0:
PORTA.4 = 0;
break;
case 1:
PORTA.5 = 0;
break;
case 2:
PORTA.6 = 0;
break;
case 3:
PORTB.2 = 0;
break;
case 4:
PORTB.3 = 0;
break;
case 5:
PORTB.4 = 0;
break;
}
}
a++; // следующий сегмеент
if (a == 6) {a = 0;}
Trigger = 0;
}else
{
TCNT0=255-brightness; // 20 тиков счетчика все индикаторы будут выключены для подавления засветки
Trigger = 1;
//тут выключаем сначала сетки , потом аноды.
}
}Изменяя числа в массиве out[6], вы меняете символы на лампах.
Таймер надо настроить делителями на частоту = 2*частота индикации*кол-во ламп
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
- Kotto
- Опытный кот
- Сообщения: 795
- Зарегистрирован: Чт ноя 08, 2012 22:28:05
- Откуда: Ижевск
- Контактная информация:
Re: Часы Super Clock - VFD
RoboC, спасибо за ссылки, их как раз читал ) Все это конечно хорошо, но как это связано с засветкой? Попробовал перемотать трансформатор, намотал всего 35 витков вторички для анодов, засветка все равно осталась, хотя и видно ее теперь разве что под микроскопом
Зато очень сильно упала максимальная яркость.
Есть ли разница, когда включать сегменты, до включенной сетки или после? Я как то думал, что если сетка у лампы не включена, то на сегменты можно хоть что выводить, видно это не будет.
Ну вот и написал так: все погасить, выставить нужные сегменты, включить сетку, изображение появится. Дальше выключить сетку, выставить новую цифру, включить следующую сетку и т.д.
Может я конечно вообще сильно придираюсь сам к себе, но на чужих видео я вообще не вижу никаких спецэффектов в виде засветок. Впрочем если снимать и мои часы на видео, видно этого не будет. Или может забить и так и должно быть? Свечение то едва заметно, нужно специально внимательно вглядеться, чтобы заметить легкую засветку люминофора не той цифрой.
Есть ли разница, когда включать сегменты, до включенной сетки или после? Я как то думал, что если сетка у лампы не включена, то на сегменты можно хоть что выводить, видно это не будет.
Ну вот и написал так: все погасить, выставить нужные сегменты, включить сетку, изображение появится. Дальше выключить сетку, выставить новую цифру, включить следующую сетку и т.д.
Может я конечно вообще сильно придираюсь сам к себе, но на чужих видео я вообще не вижу никаких спецэффектов в виде засветок. Впрочем если снимать и мои часы на видео, видно этого не будет. Или может забить и так и должно быть? Свечение то едва заметно, нужно специально внимательно вглядеться, чтобы заметить легкую засветку люминофора не той цифрой.
Re: Часы Super Clock - VFD
При включенной сетке погасить сегменты - пауза для исчезновения тока - выключить сетку - включить сегменты следующего индикатора - включить сетку оного.
Re: Часы Super Clock - VFD
Если паразитная засветка в некоторых лампах, посмотрите еще в сторону чистоты плат. Флюсы из за высоких частот и повышенного напряжения частенько дают сопротивление.
- RoboC
- Мудрый кот
- Сообщения: 1795
- Зарегистрирован: Ср апр 04, 2012 09:55:53
- Откуда: Северодонецк
- Контактная информация:
Re: Часы Super Clock - VFD
Выключить сетку,погасить сегмент,пауза, включить сегменты следующего индикатора,включить сетку оного.
aivcon, человек писал что все отмыл.
Если нет паузы, то на следующем индикаторе чуть видно предыдущий.
Если засветка общая, то, скорее всего, это при включенной сетке у вас меняются сегменты.
aivcon, человек писал что все отмыл.
Если нет паузы, то на следующем индикаторе чуть видно предыдущий.
Если засветка общая, то, скорее всего, это при включенной сетке у вас меняются сегменты.
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
- Kotto
- Опытный кот
- Сообщения: 795
- Зарегистрирован: Чт ноя 08, 2012 22:28:05
- Откуда: Ижевск
- Контактная информация:
Re: Часы Super Clock - VFD
А сильно ли критично анодное напряжение? Под нагрузкой накала и 6 ламп на анодах было изначально 45 Вольт. Так же с некоторыми лампами было достаточно трогать их за колбу для появления посторонней засветки.
Флюс отмыт в тазике со спиртом зубной щеткой и все тщательно вымыто. При работе с газоразрядными лампами такого эффекта никогда не встречал. На счет LED не знаю, никогда на них ничего не делал.
Флюс отмыт в тазике со спиртом зубной щеткой и все тщательно вымыто. При работе с газоразрядными лампами такого эффекта никогда не встречал. На счет LED не знаю, никогда на них ничего не делал.
Re: Часы Super Clock - VFD
[uquote="RoboC",url="/forum/viewtopic.php?p=3303665#p3303665"]Выключить сетку,погасить сегмент,пауза...[/uquote]
Ваше право, но когда вы выключаете сетку перед выключением сегментов зарядам некуда стекать. Вот и появляется "туева хуча" резисторов.Kotto писал(а):выключить сетку, выставить новую цифру, включить следующую сетку и т.д.
- Kotto
- Опытный кот
- Сообщения: 795
- Зарегистрирован: Чт ноя 08, 2012 22:28:05
- Откуда: Ижевск
- Контактная информация:
Re: Часы Super Clock - VFD
akl О как оказывается, просто никогда не работал с ВЛИ, не знал такого эффекта, получается гасим сегменты до выключения сетки. А на счет туевой хучи резисторов не понял. Не так уж у меня их много, а при использовании DTA114 вообще нет никаких, ну кроме тех что внутри транзистора стоят. Если использую BC857, то только на базах резисторы.
Re: Часы Super Clock - VFD
Имелись ввиду разрядные резисторы между анодом-сегментом и потенциалом накала. Хотя... Они всё равно желательны.
- RoboC
- Мудрый кот
- Сообщения: 1795
- Зарегистрирован: Ср апр 04, 2012 09:55:53
- Откуда: Северодонецк
- Контактная информация:
Re: Часы Super Clock - VFD
между коллектором bc857 и - 35v резистора нет?
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
- Kotto
- Опытный кот
- Сообщения: 795
- Зарегистрирован: Чт ноя 08, 2012 22:28:05
- Откуда: Ижевск
- Контактная информация:
Re: Часы Super Clock - VFD
RoboC, Разумеется есть, запирающее напряжение, по показаниям тестера там все нормально. Если измерять относительно 5 вольт напряжения питания логики, то при погашенном сегменте/сетке там будет -сколько-то вольт, при включенном сегменте/сетке 0 вольт. Резисторы я эти брал от 240 кОм до 400 кОм.
---
Наконец то дошло, как использовать два прерывания, надеюсь получится и все это поможет избавиться от хоть и крохотной, но неприятной засветки
---
Что лучше использовать, DTA 114 или BC857 с 10 кОм на базе? В плане припаять они для меня равнозначны, в плане изготовления платы в общем то тоже.
Добавлено after 8 hours 45 minutes 57 seconds:
Уважаемые коты! Сделал на двух прерываниях, при минимуме яркости все равно есть засветка. Вот так выглядит при комнатном рассеянном свете.

А вот так в полной темноте

Транзисторы DTA114, число витков вторичной обмотки 52.
Исходник во вложении. Посмотрите пожалуйста, так и должно быть или где то я накосячил? Все сделал по статье http://radioparty.ru/prog-avr/program-c ... egment-avr
Правда код пришлось немного изменить, переключение сегмента сделал при переполнении и добавил задержки после отключения сегментов и сеток иначе засветка была очень уж сильной.
Если где то не верно, подскажите, где именно в моем коде. Хочется понять до конца как надо.
---
Наконец то дошло, как использовать два прерывания, надеюсь получится и все это поможет избавиться от хоть и крохотной, но неприятной засветки
---
Что лучше использовать, DTA 114 или BC857 с 10 кОм на базе? В плане припаять они для меня равнозначны, в плане изготовления платы в общем то тоже.
Добавлено after 8 hours 45 minutes 57 seconds:
Уважаемые коты! Сделал на двух прерываниях, при минимуме яркости все равно есть засветка. Вот так выглядит при комнатном рассеянном свете.
А вот так в полной темноте
Транзисторы DTA114, число витков вторичной обмотки 52.
Исходник во вложении. Посмотрите пожалуйста, так и должно быть или где то я накосячил? Все сделал по статье http://radioparty.ru/prog-avr/program-c ... egment-avr
Правда код пришлось немного изменить, переключение сегмента сделал при переполнении и добавил задержки после отключения сегментов и сеток иначе засветка была очень уж сильной.
Если где то не верно, подскажите, где именно в моем коде. Хочется понять до конца как надо.
- Вложения
-
- исходник.zip
- (83.26 КБ) 219 скачиваний
Re: Часы Super Clock - VFD
Похоже "перенакал"... Поиграйтесь с накальной обмоткой.