Например TDA7294

Форум РадиоКот :: Просмотр темы - UDN2981 и динамическая индикация
Форум РадиоКот
https://radiokot.ru/forum/

UDN2981 и динамическая индикация
https://radiokot.ru/forum/viewtopic.php?f=61&t=197819
Страница 1 из 1

Автор:  metan [ Сб май 03, 2025 07:16:06 ]
Заголовок сообщения:  UDN2981 и динамическая индикация

Всем добрый дзен!
Поделюсь с сообществом информацией, может быть кому-то поможет сэкономить время и нервы.
Лет 15 назад сделал часики из того, что было. Все взлетело на ура. Ничего хитрого, 12 больших синих индикаторов с общим катодом (5 Вольт им конечно было мало), катодные ключи на советском аналоге ULN2003 через сдвиговые регистры 561ИР9, а 8 анодов кормились через простейший драйвер - преобразователь уровней на дискретных элементах.
На днях сделал еще одни друзьям. Программа и схема почти та же, только регистры уже 74HC595. Гляжу, в сети народ юзает набор ключей UDN2981 для подобной индикации. По диагонали глянул даташит, вроде все подходит. Для подачи 12 вольт на аноды самое то, решил я. Вместо почти полусотни дискретных элементов один чип, красота!
Сделал, короче.
Получил развлечение на несколько вечеров. Паразитная засветка сегментов. Если вывести восьмерку, она же будет ощутимо светиться в следующем по порядку разряде. Нужно отметить, что у моих индикаторов очень хорошая отдача, когда вызванивал цоколевку, сегменты чуток светились прямо через меня.
И началось :facepalm:
Включал / выключал / изменял режимы диммирования, заливал всякие тесты, вешал ёмкости, резисторы. До красноглазия вглядывался в код. Прерывание только одно, по таймеру, там примерно всё как в десятках моих старых проектов.

Код:
interrupt [TIM0_COMPA] void timer0_compa_isr(void) {
  if ( conv_ms > 0 ) conv_ms--;
 
  ANODES = 0;                // выключаем индикатор ваще
 
  if (idx==0) {
    DS_DATA=1;
    STROBE=1;
    STROBE=0;
    DS_DATA=0;
  }
 
  STROBE=1;
  STROBE=0;

  ANODES = att[idx];
 
  idx++;
  if (idx>11) idx = 0;

}



Короче, развлекался как мог, пока не обратил внимание на то, что паразитная засветка радикально увеличивается с ростом частоты динамической индикации. И тут меня начали мучать мутные сомнения :)
Одна добавленная строка в прерывание решила проблему. Короче, найдите одно отличие:

Код:
interrupt [TIM0_COMPA] void timer0_compa_isr(void) {
  if ( conv_ms > 0 ) conv_ms--;
 
  ANODES = 0;                // выключаем индикатор ваще
 
  delay_us(10);
   
  if (idx==0) {
    DS_DATA=1;
    STROBE=1;
    STROBE=0;
    DS_DATA=0;
  }
 
  STROBE=1;
  STROBE=0;

  ANODES = att[idx];
 
  idx++;
  if (idx>11) idx = 0;

}



Да, да, знаю-знаю :)) Кровь из глаз, и прочий быдлокодинг, делеи в прерываниях. Но задержка крошечная по сравнению с частотой прерывания (1кГц). Да и что-то не нашлось хорошей идеи, как красиво реализовать задержку.

Этот сволочной чип просто не успевал выключаться, никогда бы не подумал.
Но глянув еще раз даташит (лучше поздно, чем никогда, ага...), я узрел там такой нотес:
Цитата:
NOTES: Turn-off delay is influenced by load conditions. Systems applications well below the specified output loading may require timing considerations for some designs, i.e., multiplexed displays or when used in combination with sink drivers in a totem pole configuration.


Короче, он только для реле по-ходу :dont_know:


Дополнительные материалы

Старая схема с мосфетами:
Изображение

Новая схема с UDN2981:
Изображение

Что вышло:
Изображение

Даташит UDN2981:
Вложение:
UDN2981.pdf [135.73 KiB]
Скачиваний: 34

Автор:  vlasovzloy [ Сб май 03, 2025 08:29:04 ]
Заголовок сообщения:  Re: UDN2981 и динамическая индикация

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

Добавлено after 55 seconds:
Ну и частота индикации может и правда большая быть

Автор:  metan [ Сб май 03, 2025 08:55:13 ]
Заголовок сообщения:  Re: UDN2981 и динамическая индикация

vlasovzloy писал(а):
Или на общий провод резисторы
Пробовал одним из первых, ставил 1 кОм, может мало конечно, но совсем не повлияло. Осциллографом смотрел, к сожалению не заскринил. В ноль перепад явно очень сильно затянут, как будто ёмкости там стоят. Но может, конечно, ёмкости печатных проводников так влияют, они довольно длинные и рядышком. Но в схеме с полевиками такого безобразия даже близко не было, хотя печатных плат вообще было две (на одной только индикаторы, разведенные как и на новой плате), и соединялись плоским кабелем в 20 проводников.

Вот монтаж
Изображение

Автор:  jcxz [ Пн май 05, 2025 19:39:01 ]
Заголовок сообщения:  Re: UDN2981 и динамическая индикация

Да и что-то не нашлось хорошей идеи, как красиво реализовать задержку.
Просто два прерывания. С интервалами между ними: 10 мкс, 990 мкс.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/