vu meter на ИН-33

в 15:56, , рубрики: arduino, diy или сделай сам, звук, старое железо

Начну с того что пришёл срок замены моего усилителя на нечто новое.
Не скажу что после апгрейда Вега плохо играла, но срок есть срок. И либо надо её полностью перебирать по сроку давности, либо… Сделать новый. Но это отдельная песня. А пока — захотелось к новому усилителю добавить индикатор сигнала.

И всё бы ничего, да вот светодиодные не нравятся. Нет, они современны, просты, симпатичны… И ужасно скучны. А хотелось чего то тёплого, лампового ионного. Всегда имел слабость к ионным лампам…
А посему, на даче был отрыт блок на лампе ИЛТ6-30М. Но радовался я не долго — оказалось кто-то успел спалить его до меня…
И вот, думая чем заменить блок управления, случайно наткнулся на лампу ИН-33.

image

И всё завертелось…

Лампу найти удалось не сразу. А при покупке в единственном магазинчике в Питере, у меня с удивлением спросили — знаю ли я чего вообще покупаю?
Но купить — пол беды. Оригинальной схемы управления не нашлось. А что б было интереснее — лампе надо питание 130 и 250 Вольт постоянки!
А самое печальное, что крайне мало информации по ней. Есть статья на РадиоКоте, где SLvik сделал проект на ней и выложил схему. Есть немецкая статья, где человек тоже сделал проект на ней и выложил алгоритм работы и исходник со схемой. Но лампа там на 8 пин, а моя на 10. Да и распиновка не подходит! Есть мануал на американскую аналогичную лампу. Но там тоже указано 8 пин!

Небольшое отступление.
У лампы 200 сегментов! Каждый можно зажечь ИНДИВИДУАЛЬНО. А выводов всего 10. «Как им удалось?!»
А вот тут самое интересное, чего я, например, даже не слышал:
Лампа представляет из себя декатронный счётчик.

Идея управления же достаточно проста: «зажигаем» «затравочный» сегмент, расположенный в начале колбы. Затем заземляем 1-й катод соседнего элемента, и поток «перескакивает» с затравочного элемента на новый. В это время «гасим» затравочный и вот у нас горит уже второй сегмент. Теперь заземляем второй катод и поток перескакивает на него, загорается 3-й сегмент. И гасим первый катод. Так поступаем и с 3-м катодом. А после него снова первый-второй-третий. Получается эдакий «бегущий» огонёк. И гоним мы его так до нужного нам уровня. А когда «добежал» до нужного нам уровня — отключаем анод и повторяем всё заново.

Рисунок из американского мануала, по устройству индикатора:
image

Итак. Вроде с теорией всё. Индикатор у нас в руках, пора к практике.

Для начала надо получить 130 и 250 Вольт. Была шальная мысль взять «из розетки». Взял диодный мостик, скинул на емкостину конденсатор, получил из действующих 220 амплитудные 310, сбросил через стабилитроны и… Отхватил по самое не балуйся, случайно схватившись за землю устройства и батарею отопления. Больно. Очень.

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

В общем — от идеи питаться от розетки пришлось отказаться. Собирать импульсные повышающие схемы лениво. Но зато пришла мысль взять готовый универсальный инвертор от ламп подсветки LCD дисплеев. Стоит 150 руб штука, трансформатор легко разбирается и перематывается на нужные нам напряжения. Для моего получилось 200 витков на обмотку 130В и плюс 240 витков для 250-и вольт.

Остаётся обмануть систему безопасности инвертора, иначе он через 3 секунды отключается. Для этого для микросхемы DF6109A требуется впаять сопротивление резистор на 12КОм с 13-й ноги на землю.

Дальше — просто: диод, конденсатор и вот нам готовые 130 и 250В. Правда питающее напряжение инвертора пришлось поднять до 15В, иначе мотать обмотки пришлось бы больше. Если мотать более тонким проводом большее кол-во витков, то можно питать и от 12-и В, но у меня не было более тонкого провода.

Итак — Всё почти готово. Делаем плату, крепим на неё инвертор, распаиваем ключи по схеме.
image

Схема (моя, переделанная версия. Оригинал взят у SLvik):
image

Распиновка лампы:
image

1 Первый анод
2 Катоды первой группы
3 Катоды второй группы
4 Первый катод сброса
5 Второй катод сброса
6 Первый вспомогательный анод
7 Второй вспомогательный анод
8 Вспомогательные катоды
9 Катоды третьей группы
10 Анод второй группы

Прошивка.
Пора вспомнить про ардуино. Вроде как на схеме оно особо не светится. А оно есть. Аки тот суслик
Всё дело в том, что ленюсь я. Для игрушечных проектов быстрее накидать скетч и залить его через UART, чем париться с чистым С и развлекаться с ISP. Да и удобнее для начинающих.

Идея такая. Берём ардуино duemilanove, прошиваем скетч, выковыриваем микросхему, впаиваем в плату и всё. Взамен же покупаем за 150 руб новую на ебее. Удобно.

#define pA1 9
#define pA2 10 //Андоды - ПРЯМОЕ управление
#define pK1 8  //Катоды - ИНВЕРТИРОВАННОЕ! 
#define pK2 7
#define pK3 6
#define pKR 5

#define SumCounterMax 13   //Интегральная составляющая. Чем больше - тем медленней отображение.
#define InputMultiplier 8  //Множитель входного сигнала. Чем слаюже сигнал - тем больше ставим.

int Avg1[SumCounterMax];
int Avg2[SumCounterMax];
byte nAvg = 0;

const byte Log_Conv[256] = {0,2,4,5,7,9,10,12,13,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,33,34,35,36,37,37,38,39,40,40,41,42,42,43,44,44,45,45,46,47,47,48,48,49,50,50,51,51,52,52,53,53,54,54,55,55,56,56,57,57,57,58,58,59,59,60,60,60,61,61,62,62,63,63,63,64,64,64,65,65,66,66,66,67,67,67,68,68,68,69,69,69,70,70,70,71,71,72,73,73,73,74,74,74,74,75,75,75,76,76,76,76,77,77,77,78,78,78,78,79,79,79,79,80,81,81,82,82,82,82,83,83,83,83,84,84,84,84,84,85,85,86,86,87,87,87,87,88,88,88,88,88,89,89,89,89,90,90,90,90,90,91,91,91,91,92,93,93,93,93,93,94,94,94,94,94,95,95,95,95,95,96,96,96,96,96,96,97,97,97,97,97,98,98,98,98,98,98,99,99,99,100,100,100,101,101,101,101,101,101,102,102,102,102,102,102,103,103,103,103,103,103,104,104,104,104,104,104,104,105,105,105,105,105,105,106,106,106,106,106,106,106,107,107,107,107,107,107,107};

void setup()
{
	pinMode(pA1, OUTPUT);
	pinMode(pA2, OUTPUT);
	pinMode(pK1, OUTPUT);
	pinMode(pK2, OUTPUT);
	pinMode(pK3, OUTPUT);
	pinMode(pKR, OUTPUT);

	digitalWrite(pA1, LOW);
	digitalWrite(pA2, LOW);
	digitalWrite(pK1, LOW);
	digitalWrite(pK2, LOW);
	digitalWrite(pK3, LOW);
	digitalWrite(pA1, LOW);
	digitalWrite(pA2, LOW);
	digitalWrite(pKR, HIGH);

	delay(100);
	analogReference(INTERNAL);
}

void loop()
{
	//reset
	digitalWrite(pA1, LOW);
	digitalWrite(pA2, LOW);
	digitalWrite(pK1, LOW);
	digitalWrite(pK2, LOW);
	digitalWrite(pK3, LOW);
	digitalWrite(pA1, LOW);
	digitalWrite(pA2, LOW);
	
	//Зажигаем "затравочный" сегмент.
	digitalWrite(pKR, HIGH);
	digitalWrite(pA1, HIGH);
	digitalWrite(pA2, HIGH);

	//Сумматор сигнала входа. *а заодно и замедлитель запуска лампы =)
	nAvg ++;
	if (nAvg == SumCounterMax)
	{
		nAvg = 0;
	}
	Avg1[nAvg] = min(analogRead(4) * InputMultiplier, 255);
	Avg2[nAvg] = min(analogRead(5) * InputMultiplier, 255);
	unsigned long sn1 = 0;
	unsigned long sn2 = 0;
	for(byte i = 0; i < SumCounterMax; i++)
	{
		sn1 += Avg1[i];
		sn2 += Avg2[i];
	}
	int n1 = Log_Conv[sn1 / SumCounterMax];
	int n2 = Log_Conv[sn2 / SumCounterMax];
	
	//сканирование - отображение.
	for (int i = 0; i < max(max(n1, n2), 60) ; i++)
	{
		if ((i + 0) % 3 == 0)
		{
			digitalWrite(pK1, HIGH);
			digitalWrite(pKR, LOW);
			digitalWrite(pK3, LOW);
		}
		if ((i + 2) % 3 == 0)
		{
			digitalWrite(pK2, HIGH);
			digitalWrite(pK1, LOW);
		}
		if ((i + 1) % 3 == 0)
		{
			digitalWrite(pK3, HIGH);
			digitalWrite(pK2, LOW);
		}

		if (i > n1)
		{
			digitalWrite(pA1, LOW);
		}

		if (i > n2)
		{
			digitalWrite(pA2, LOW);
		}
		delayMicroseconds(90);
	}
}

Ну, а в итоге:
image

PS. Однако остались вопросы, для более опытных:
1) — Почему мне пришлось использовать Доп анод и доп катод для стабилизации точки отсчёта в начале шкалы, однако у других оно не используется и ничего не срывается? По мануалу они нужны.
2) — Частота обновления. Насколько критично что она выше/ниже рекомендуемых?
Буду рад ответу в комментариях. Спасибо.

Автор: Skiffrusspb

Источник

Поделиться новостью

* - обязательные к заполнению поля