Страница 1795 из 2451

Re: Часы на газоразрядных индикаторах

Добавлено: Чт янв 07, 2016 13:04:51
asidalv
Charon писал(а):Да есть альтернатива.
Габариты хоть и побольше, но если использовать SMD, ненамного.
Кстати, для статической индикации, если индикаторы достаточно большие, транзисторы катодных ключей и базовые резисторы можно удобно расположить непосредственно у выводов индикаторов по кругу, и они тогда не будут съедать дополнительно площадь платы.
Транзисторы - смогут управлять лампой но не смогут преобразовать код 1-2-4-8 в 1 включенный выход)) Дешифратор надобно) И опять 25 - надо ставить ИД1 или ИД10 где-то рядышком. Лучше уж пусть одна ИД1 рядом с лампой живет чем что-то там еще + ИД10.

Re: Часы на газоразрядных индикаторах

Добавлено: Чт янв 07, 2016 13:09:32
art100
Charon писал(а):... SMD...ключей ...резисторы... у выводов индикаторов по кругу...
Согласен. Проблема в том, что я слепой уже. Не думаю что на такой подвиг соглашусь. Не отдых это уже.
СпойлерИзображение

Re: Часы на газоразрядных индикаторах

Добавлено: Чт янв 07, 2016 13:14:15
asidalv
На самом деле, все это мелочь насчет ИД1. В этих часах труднее всего оказалось а) выпаять лампы из тех плат что у меня оказались б) установить их в новую плату. Дело в том что шаг выводов ламп не кратен 1.27 и даже не кратен 0.6, поэтому пришлось долго подгонять шаблон шагом 0.3 и все равно, в итоге, когда стал собирать выяснилось что лампа от лампы отличаются , в общем присверливал отверстия по месту. Усилие прилагать недопустимо! Панелек, у меня не было.

Re: Часы на газоразрядных индикаторах

Добавлено: Чт янв 07, 2016 14:56:51
Charon
asidalv писал(а):Усилие прилагать недопустимо! Панелек, у меня не было.
Я так понял, лампы с жесткими ножками, типа ИН-12?
Как впаял? Я использовал, должно быть, известный всем здесь метод - надергал гнезд с мам DB25, которые паяются на плату (не угловые). Но индикаторы слишком торчат :(
asidalv писал(а): И опять 25 - надо ставить ИД1 или ИД10 где-то рядышком.
SO24 занимает примерно такую же площадь на плате, что и DIP16. А по удобству разводки - ИД1 нервно курит в сторонке.

Re: Часы на газоразрядных индикаторах

Добавлено: Чт янв 07, 2016 15:06:05
*Trigger*
Что не так с удобством разводки? Всё отлично разводится. Если, конечно, часы не на логике делать, а на МК. Тогда можно как угодно подключить катоды к ИД1 и входы ИД1 к МК, а потом программно это учесть.
Пример реальной платы часов на ИН-16 (73x80мм, на плате - часы и преобразователь на MC34063):
Изображение

Изображение

Изображение

Кстати говоря, у ИН-16 тоже с разводкой не всё хорошо. Выводы катодов расположены как попало.

Re: Часы на газоразрядных индикаторах

Добавлено: Чт янв 07, 2016 17:15:17
Волосатый
А диодный мост на питании стоит для того, что бы не запариваться с полярностью источника питания, или там сетевой транс ставится?
*Trigger* писал(а):Что не так с удобством разводки? Всё отлично разводится.
Это если придумываешь схему, разводишь и пишешь под это программу сам. А если ты берешь часы без исходника, и тебя не удовлетворяет авторская печатка, вот тут начинаются танцы с бубном трассировщиком. Хорошо, если есть доступ к заводскому изготовлению, а если лут? Привет макарошки :)))

Re: Часы на газоразрядных индикаторах

Добавлено: Чт янв 07, 2016 17:37:34
*Trigger*
Диодный мост там потому, что БП сетевой в виде вилки без выпрямителя.
Кстати, эта плата ЛУТом сделана. Дорожки к индикаторам - 0,35мм.

PS. Только сейчас на этой фотке увидел, что там конденсатор по линии сброса МК не припаян. Забыл я его... А часы работают, далеко от меня. :)))

Re: Часы на газоразрядных индикаторах

Добавлено: Чт янв 07, 2016 17:46:59
Charon
Насчет "перепутать" катоды это идея.

Re: Часы на газоразрядных индикаторах

Добавлено: Чт янв 07, 2016 17:51:13
*Trigger*
Кроме катодов, можно путать и линии данных 1-2-4-8. Оба этих приема использованы на плате выше. Как видите, от МК к ИД1 и от ИД1 к лампам ни одной перемычки.

Re: Часы на газоразрядных индикаторах

Добавлено: Чт янв 07, 2016 18:57:05
woody_mc
*Trigger* писал(а):Кроме катодов, можно путать и линии данных 1-2-4-8.
я всегда этим пользуюсь, если не надо экономить ресурс МК. но иногда проще сделать несколько перемычек, чем программно "выворачивать наизнанку" байты данных для их вывода. с этим столкнулся, когда делал светодиодную матрицу 32х8 на stp16c595 и при загрузке в 2 регистра данных, которые надо было побитно перебирать согласно выводам сегментов, вешал МК.
а вешал по той простой причине, что изначально софт писался с нормальным выводом, где загрузка в регистры занимала минимум действий, а так как это все делалось в прерывании, да еще и с ШИМ в 1 байт, то каждый такт в прерывании очень важен, а еще имеется и тело программы.
в итоге все заработало сократив ШИМ на половину.

так что не везде такой метод применителен.

Re: Часы на газоразрядных индикаторах

Добавлено: Чт янв 07, 2016 19:14:09
*Trigger*
Не надо ничего выворачивать. Вот обработка индикации в часах на ATMega8 (тех, что с эффектами):
Спойлер

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

flash unsigned char razr[6]={0b100000,0b10000,0b1000,0b100,0b10,0b1};
flash unsigned char code[11]={0b000000,0b001000,0b001100,0b100100,0b110000,0b110100,0b010000,0b010100,0b100000,0b000100,0b111100};

// Timer2 overflow interrupt service routine
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{

if(counter<5) counter++;
else counter=0;

PORTD=PIND&0b11000000;

if((ind[counter]!=_ind[counter])&&mode){
  if(change==0){
    if(mode==1) {lum=-1; OCR2=16; TIMSK|=0x80;}
    if(mode==2) rotate=0;       
    div=-1;     
  } 
  change|=(1<<counter);  
} 
if(change==0) _ind[counter]=ind[counter];

if((mode==2)&&(change&(1<<counter))) buffer=code[rotate];
else buffer=code[ind[counter]];  

if(ind[6]&(1<<(5-counter))) buffer=buffer|0b10;

PORTC=(PINC&1)|buffer;

PORTD=PIND|razr[counter];

if(div<24) div++;    
else{
  div=0;
  if(change&&(mode==1)){
    if(lum<14) lum++;
    else{
      lum=0;
      change=0;  
      TIMSK&=(~0x80);   
      _ind[0]=ind[0]; 
      _ind[1]=ind[1];
      _ind[2]=ind[2];
      _ind[3]=ind[3];
      _ind[4]=ind[4];
      _ind[5]=ind[5];
    }
    OCR2=16+14*lum;
  }
  if(change&&(mode==2)){
    if(rotate<9) rotate++;
    else{
      change=0; 
      _ind[0]=ind[0]; 
      _ind[1]=ind[1];
      _ind[2]=ind[2];
      _ind[3]=ind[3];
      _ind[4]=ind[4];
      _ind[5]=ind[5];
    }
  }   
}
} 
Тут так много кода, т.к. эффекты. Основной смысл тут:

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

flash unsigned char razr[6]={0b100000,0b10000,0b1000,0b100,0b10,0b1}; //массив кодов разрядов
flash unsigned char code[11]={0b000000,0b001000,0b001100,0b100100,0b110000,0b110100,0b010000,0b010100,0b100000,0b000100,0b111100}; //массив кодов цифр      

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

buffer=code[ind[counter]];  //помешаем в buffer код цифры. ind[]-экранный буфер, там хранится то, что отображается в данный момент.

if(ind[6]&(1<<(5-counter))) buffer=buffer|0b10; //зажигаем точки

PORTC=(PINC&1)|buffer; //выводим в порт

PORTD=PIND|razr[counter]; //зажигаем разряд       
ШИМ лучше делать вторым прерывание таймера, по совпадению. В нём просто гасить все разряды. Изменяя значение регистра сравнения, можно изменить ширину импульса, т.е. яркость. За одно и паузу при переключении разрядов можно сделать, это избавит от проблем с засветкой.

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

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

flash unsigned char code[10]={0b0100,0b1100,0b0011,0b0001,0b1011,0b0010,0b1010,0b1000,0b1001,0b0000};
//код...
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
  static unsigned char counter=0;
  static unsigned char div=0;    
  
  _dot_l=0;
  _dot_r=0;
  if(dot_l&(1<<(3-counter))) _dot_l=1; //зажигаем точки
  if(dot_r&(1<<(3-counter))) _dot_r=1;
  
  if(ind[counter]!=sp){
    PORTB=code[ind[counter]]; //включаем цифру, доставая код из массива
    PORTB|=(1<<(counter+4)); //включаем анодный ключ, зажигаем лампу
  }
  if(counter<3) counter++; 
  else counter=0; 
  
  if(div<77) div++;
  else{
    div=0;
    kn1=(~_kn1);
    kn2=(~_kn2); 
    kn3=(~_kn3);     
  } 
  
  if(mig_dot) sec_dot=sec&1;  
}

// Timer 0 output compare A interrupt service routine
interrupt [TIM0_COMPA] void timer0_compa_isr(void)
{
  PORTB&=0x0F; //а тут её гасим. Это можно делать раньше выбора следующей, поставив, например, в регистр OCR0A значение 240. (255 - полная яркость, это значение ставить не стоит, МК не успеет обработать два идущих друг за другом прерывания.)
}

Re: Часы на газоразрядных индикаторах

Добавлено: Чт янв 07, 2016 19:34:49
woody_mc
*Trigger* писал(а):Не надо ничего выворачивать
отвечу очень справедливой цитатой с этого форума
A_AVL писал(а): "Да Господи помилуй, каждый сходит с ума по-своему в этом сумасшедшем мире, не надо только мешать друг другу!"

Re: Часы на газоразрядных индикаторах

Добавлено: Чт янв 07, 2016 19:37:07
watchmaker
Это правда, что ИН в динамике издают довольно громкий треск или звон?

Re: Часы на газоразрядных индикаторах

Добавлено: Чт янв 07, 2016 19:41:06
*Trigger*
woody_mc писал(а): отвечу очень справедливой цитатой с этого форума
Извините, не хотел Вас обидеть. Я только привел реализацию перемешивания катодов, которую использую сам. :)

Re: Вот что получилось получается ))

Добавлено: Чт янв 07, 2016 19:57:31
Iggis
asidalv писал(а):Корпус 200*120*30 , возможно это самые "плоские" часы на ГРИ) Можно вешать на стенку)
Фиг вам! :)) 15 мм - http://radiokot.ru/forum/viewtopic.php? ... 4#p2105744

Re: Часы на газоразрядных индикаторах

Добавлено: Чт янв 07, 2016 20:03:08
*Trigger*
watchmaker писал(а):Это правда, что ИН в динамике издают довольно громкий треск или звон?
Всё зависит от того, какие лампы (конкретные экземпляры, а не просто тип), какая частота индикации, какой ток через лампы, какой преобразователь и т.д. Среди всех моих часов только двое пищали - на ИН-12, причём слышно было весьма заметно, и этот писк совпадал с писком дросселя преобразователя, и на ИН-8-2 - эти часы слышно, только если вплотную к уху поднести.
Вроде как, предполагаемая природа писка - деформация катодов от их нагрева разрядом, который то есть, то его нет (в динамике).
Точно сказать, будут пищать или нет, нельзя. Нужно пробовать собирать часы. Меньше вероятность писка при статической индикации, хотя там тоже он может быть, при плохом преобразователе.

Re: Часы на газоразрядных индикаторах

Добавлено: Чт янв 07, 2016 20:04:15
woody_mc
*Trigger* писал(а):Извините, не хотел Вас обидеть.
еще нехватало на форумах обижаться.

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

Re: Вот что получилось получается ))

Добавлено: Чт янв 07, 2016 20:29:52
Ян
Iggis писал(а):Фиг вам! :)) 15 мм - http://radiokot.ru/forum/viewtopic.php? ... 4#p2105744
Так не честно! Вот это недоделанное изделие с торчащей платой 10мм. :))
Изображение

Re: Часы на газоразрядных индикаторах

Добавлено: Чт янв 07, 2016 20:55:43
Iggis
Ян писал(а):Вот это недоделанное изделие с торчащей платой 10мм
У вас кондеры торчат! И дроссель с кнопками Изображение.
А у меня гнездо питания 11.5мм плюс два текстолита по 1.5мм. И всё!
Изображение


Ян, на фотке - это ваше очередное?

Re: Часы на газоразрядных индикаторах

Добавлено: Чт янв 07, 2016 21:00:35
Ян
Iggis писал(а): Ян, на фотке - это ваше очередное?
Это очень старое изделие, вас тогда с нами и не было.
Изображение
Я и не стремился все убрать, так как была еще мраморная верхушка. В нее то все и спряталось. Все вместе примерно 20 с небольшим миллиметров.