Страница 10 из 19

Re: Часы Super Clock - VFD

Добавлено: Вт янв 30, 2018 13:29:58
Kotto
Есть еще эффектик, те лампы, что не севшие и светят ярко, ощущение что их свет отражается от внутренней стороны колбы и создает еще засветку. У ламп с подсевшим люминофором такого эффекта нет

Re: Часы Super Clock - VFD

Добавлено: Ср фев 07, 2018 12:43:10
Kotto
Продолжаю возиться с часиками. Все работает, но никак не могу опять же побороть в некоторых лампах паразитное свечение. Не понятно от чего это зависит (( Запирающее напряжение есть, резисторы перепробовал от 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.

Изображение Изображение Изображение

На фото конечно не видно абсолютно, но оно есть

Re: Часы Super Clock - VFD

Добавлено: Ср фев 07, 2018 16:44:54
RoboC
Вы бы лучше весь исходник приложили.
Может вы в print сначала сегменты включаете , а потом сетки?
Почему 2 прерывания не использовали по совпадению и переполнения, как обычно это делают?

не заметил где "с" обнуляется.

Re: Часы Super Clock - VFD

Добавлено: Ср фев 07, 2018 17:57:10
Kotto
Вот мой код, немного стыдно за него, ибо программист из меня так себе... Да, действительно я сначала включаю сегменты, потом сетки, это сильно критично? А то уже не знаю за что взяться, разобрал трансформатор, с целью понизить анодное. Подумал может завысил чуток...
---

И да, зачем два прерывания?

Re: Часы Super Clock - VFD

Добавлено: Ср фев 07, 2018 18:02:05
ncbelov
[uquote="Kotto",url="/forum/viewtopic.php?p=3303332#p3303332"]Вот мой код[/uquote]
архив битый

Re: Часы Super Clock - VFD

Добавлено: Ср фев 07, 2018 18:05:32
Kotto
скачал архив отсюда, который залил, все открылось отлично
Изображение

Re: Часы Super Clock - VFD

Добавлено: Ср фев 07, 2018 18:09:36
ncbelov
Скачать я тоже скачал да вот открыть его не могу,ну да ладно.

Re: Часы Super Clock - VFD

Добавлено: Ср фев 07, 2018 18:11:47
Kotto
Перезалил в zip

Re: Часы Super Clock - VFD

Добавлено: Ср фев 07, 2018 19:31:15
RoboC
[uquote="Kotto",url="/forum/viewtopic.php?p=3303332#p3303332"]Вот мой код, немного стыдно за него, ибо программист из меня так ..
И да, зачем два прерывания?[/uquote]
Я тоже не программист, для меня єто хобби :tea:
Вы прочитали эту статью, и надо было еще эту прочитать.

используя одно прерывание я бы написал его так, примерно:
Спойлер

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

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;
		//тут выключаем сначала сетки , потом аноды.
      }
  
}
Изменяя в основной программе brightness, вы меняете яркость
Изменяя числа в массиве out[6], вы меняете символы на лампах. :)

Таймер надо настроить делителями на частоту = 2*частота индикации*кол-во ламп

Re: Часы Super Clock - VFD

Добавлено: Чт фев 08, 2018 06:09:39
Kotto
RoboC, спасибо за ссылки, их как раз читал ) Все это конечно хорошо, но как это связано с засветкой? Попробовал перемотать трансформатор, намотал всего 35 витков вторички для анодов, засветка все равно осталась, хотя и видно ее теперь разве что под микроскопом :)) Зато очень сильно упала максимальная яркость.

Есть ли разница, когда включать сегменты, до включенной сетки или после? Я как то думал, что если сетка у лампы не включена, то на сегменты можно хоть что выводить, видно это не будет.

Ну вот и написал так: все погасить, выставить нужные сегменты, включить сетку, изображение появится. Дальше выключить сетку, выставить новую цифру, включить следующую сетку и т.д.

Может я конечно вообще сильно придираюсь сам к себе, но на чужих видео я вообще не вижу никаких спецэффектов в виде засветок. Впрочем если снимать и мои часы на видео, видно этого не будет. Или может забить и так и должно быть? Свечение то едва заметно, нужно специально внимательно вглядеться, чтобы заметить легкую засветку люминофора не той цифрой.

Re: Часы Super Clock - VFD

Добавлено: Чт фев 08, 2018 07:41:39
akl
При включенной сетке погасить сегменты - пауза для исчезновения тока - выключить сетку - включить сегменты следующего индикатора - включить сетку оного.

Re: Часы Super Clock - VFD

Добавлено: Чт фев 08, 2018 07:51:36
aivcon
Если паразитная засветка в некоторых лампах, посмотрите еще в сторону чистоты плат. Флюсы из за высоких частот и повышенного напряжения частенько дают сопротивление.

Re: Часы Super Clock - VFD

Добавлено: Чт фев 08, 2018 07:55:31
RoboC
Выключить сетку,погасить сегмент,пауза, включить сегменты следующего индикатора,включить сетку оного.
aivcon, человек писал что все отмыл.

Если нет паузы, то на следующем индикаторе чуть видно предыдущий.
Если засветка общая, то, скорее всего, это при включенной сетке у вас меняются сегменты.

Re: Часы Super Clock - VFD

Добавлено: Чт фев 08, 2018 08:13:08
Kotto
А сильно ли критично анодное напряжение? Под нагрузкой накала и 6 ламп на анодах было изначально 45 Вольт. Так же с некоторыми лампами было достаточно трогать их за колбу для появления посторонней засветки.

Флюс отмыт в тазике со спиртом зубной щеткой и все тщательно вымыто. При работе с газоразрядными лампами такого эффекта никогда не встречал. На счет LED не знаю, никогда на них ничего не делал.

Re: Часы Super Clock - VFD

Добавлено: Чт фев 08, 2018 08:37:30
akl
[uquote="RoboC",url="/forum/viewtopic.php?p=3303665#p3303665"]Выключить сетку,погасить сегмент,пауза...[/uquote]
Kotto писал(а):выключить сетку, выставить новую цифру, включить следующую сетку и т.д.
Ваше право, но когда вы выключаете сетку перед выключением сегментов зарядам некуда стекать. Вот и появляется "туева хуча" резисторов.

Re: Часы Super Clock - VFD

Добавлено: Чт фев 08, 2018 08:48:29
Kotto
akl О как оказывается, просто никогда не работал с ВЛИ, не знал такого эффекта, получается гасим сегменты до выключения сетки. А на счет туевой хучи резисторов не понял. Не так уж у меня их много, а при использовании DTA114 вообще нет никаких, ну кроме тех что внутри транзистора стоят. Если использую BC857, то только на базах резисторы.

Re: Часы Super Clock - VFD

Добавлено: Чт фев 08, 2018 09:07:04
akl
Имелись ввиду разрядные резисторы между анодом-сегментом и потенциалом накала. Хотя... Они всё равно желательны.

Re: Часы Super Clock - VFD

Добавлено: Чт фев 08, 2018 09:16:11
RoboC
между коллектором bc857 и - 35v резистора нет?

Re: Часы Super Clock - VFD

Добавлено: Чт фев 08, 2018 19:03:35
Kotto
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

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

Если где то не верно, подскажите, где именно в моем коде. Хочется понять до конца как надо.

Re: Часы Super Clock - VFD

Добавлено: Чт фев 08, 2018 19:13:40
Grey1975
Похоже "перенакал"... Поиграйтесь с накальной обмоткой.