Обсуждаем контроллеры компании Atmel.
Ответить

Динамическая индикация.

Сб апр 22, 2017 20:44:19

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

Re: Динамическая индикация.

Сб апр 22, 2017 20:50:00

Ну если в предыдущих устройствах не было проблем с такой схемотехникой, то ищите в коде ошибку.

Re: Динамическая индикация.

Сб апр 22, 2017 21:11:51

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

Re: Динамическая индикация.

Сб апр 22, 2017 21:36:19

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

Re: Динамическая индикация.

Сб апр 22, 2017 23:02:19

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

Re: Динамическая индикация.

Вс апр 23, 2017 06:29:22

Понизьте частоту смены разрядов, например 1 Гц и сразу станет понятно откуда ноги растут.

Re: Динамическая индикация.

Вс апр 23, 2017 07:40:09

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

Re: Динамическая индикация.

Вс апр 23, 2017 08:11:52

Попробуйте снизить частоту переключения разрядами и зашунтировать резисторами (десяток килоом) переходы БЭ транзисторов

Re: Динамическая индикация.

Вс апр 23, 2017 08:29:34

При установке перемычки на одном разряде между выходом микроконтроллера и коллектором транзистора, засветка неактивных сегментов в этом разряде пропала. Подозреваю что неправильно выбран режим работы транзистора. Транзистор ставился, чтобы питание разряда шло с блока питания, а не с порта микроконтроллера. Не подскажете, что нужно добавить, чтобы работало нормально. На примере выше используется транзистор ВС327. В моем устройстве используется ВС857. Вся остальная обвязка одинаковая.
wws63 - переходы БЭ нужно зашунтировать резисторами, чтобы транзистор больше открывался? И не было засветки индикатора?

Re: Динамическая индикация.

Вс апр 23, 2017 09:37:54

melandr писал(а): переходы БЭ нужно зашунтировать резисторами, чтобы транзистор больше открывался? И не было засветки индикатора?

наоборот - чтоб надежнее запирались транзисторы неработающих разрядов. Десяток килоом не дадут эффекта, надо бы единицы килоом (1,5...4,7).
AndTer писал(а): Переключение разрядов должно происходить одновременно со сменой состояния порта с сегментами.

Это обязательно ? И возможно только, если сегменты и разряды были бы на одном порту, а так не бывает. Сменили код сегмента а затем бит разряда - вот вам и засветка на "прежнем" разряде. Наоборот - засветка на вновь-включенном разряде. Пауза на гашение разрядов никому помешать не может. В конце концов, попробовать можно.

Re: Динамическая индикация.

Вс апр 23, 2017 10:00:03

Шунтирование б-э для транзисторов при таком управлении не актуально, разве, что МК когда разряд выключен, делает вывод входом или переводит в третье состояние. Выход МК притягивает базу к +5 В через резистор меньшего сопротивления, чем вы предлагаете шунтировать б-э.
Вот если ключи питаются от бОльшего, чем 5В источника, тогда причина проблемы будет очевидна.

Re: Динамическая индикация.

Вс апр 23, 2017 14:23:51

Вот нашел - http://microkontroller.ru/praktikum-mik ... indikator/, правда непонятно, как рассчитать это сопротивление в цепи базы. Ставил 4,7к особой разницы не заметил. По поводу кода, ну работает же рядом отладочная плата с этим кодом.
А вот фото с шунтированием транзистора, и управление напрямую портом микроконтроллера
Первое фото, выводится 2 во второй разряд, все остальные разряды должны быть погашены
Изображение
Второе фото, зашунтировал перемычкой переход б-к, то есть даю сигнал с порта микроконтроллера через резистор 2,2к и сразу на анод 2 разряда индикатора
Изображение
Третье фото, зашунтировал перемычкой полностью резистор и переход б-к, видно что все разряды погашены кроме 2
Изображение
ЗЫ: Может у кого будет толковая мысль. Установил перемычку на первый разряд индикатора. Если вывожу в другие разряды цифры, то засветки нет. Как только вывожу в первый разряд, появляется засветка этой же цифрой. Методом научного тыка определил, что засвет происходит от первого разряда. Куды теперь копать? Может транзистор припаленный в первом разряде? Если убираю перемычку и вывожу цифры в о второй и третий разряды, то засвет все равно происходит. Попробую поискать транзистор смд такой же. Может поможет

Re: Динамическая индикация.

Вс апр 23, 2017 17:58:58

Решение: поставить резисторы на базу-эмиттер. 10 кОм. Делать задержку между переключениями индикаторов. Задержку (микросекунды) подбирать, пока не исчезнет засветка. У меня такой алгоритм. Когда смена индикаторов (по прерыванию таймера или в основном цикле по программному таймеру), отключаем порты, готовим данные, выводим на порты, включаем порты. Этой задержки обычно хватает. Другое дело полевые транзисторы. Также столкнулся с ULN-ками. Нужно еще вводить дополнительную задержку (микросекунды).

Re: Динамическая индикация.

Вс апр 23, 2017 21:02:10

Транзистор заменил. Не помогло. Но не понятно вот что, рядом работает такой же индикатор, только транзисторы другие и там никакой засветки нет. По поводу кода (введения задержек). При замыкании линии первого разряда, засветка на других разрядах пропадает . Еще грешу на печатную плату, может где-то не до конца протравилось, и дает наводку. Сейчас думаю перевести его в статический режим и проверить как будет работать.
Короче прошил простейший код
Спойлер
Код:
           DDRC |= (1 << PC0)|(1 << PC1)|(1 << PC2)|(1 << PC3);
      PORTC &= ~((1 << PC0)|(1 << PC3));
      PORTC |= (1 << PC2)|(1 << PC1);

      PORTD &= ~((1 << PD1)|(1 << PD7));

PORTC - это разряды индикатора
PORTD - сегменты индикатора.
Индикатор с общим анодом.

Включил разряды первый и четвертый, а сегменты В и С.
Светятся ярко первый и четвертый разряды. Но также подсвечивает второй и третий разряды. Меряю напряжение на пинах микроконтроллера РС0 - 0,03В, РС1 - 4,38В, РС2 - 4,38В, РС3 - 0,03В.
Никакой динамической индикации. Микроконтроллер не может подтянуть свой вывод к +5В, поэтому происходит засветка. То есть код динамической индикации однозначно отбрасываем. Проблема в схемотехнике.Сейчас попробую подтяжку сделать б-э 10к
ЗЫ: вроде резистор 10к между б и э помог, разряд потух, Тогда вощникает вопрос, а поможет без резистора б-э, изменеие сопротивления резистора в базовой цепи до 10 к или больше?

Re: Динамическая индикация.

Пн апр 24, 2017 02:32:14

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

Re: Динамическая индикация.

Пн апр 24, 2017 18:15:31

А как же тут это рекомендуют
http://microkontroller.ru/praktikum-mik ... indikator/
https://avrlab.com/node/130

Re: Динамическая индикация.

Пн апр 24, 2017 18:20:47

melandr писал(а):А как же тут это рекомендуют

Надо книжки по азам электроники читать, а не рекомендации.

Re: Динамическая индикация.

Пн апр 24, 2017 19:42:36

Да дело в том, что я схемотехнику перетянул с отладочной платы .которая почему-то работает. А на форуме все умные шпынять, а конкретно ответить на вопрос не могут. Поэтому насчет
Demiurg писал(а):Надо книжки по азам электроники читать, а не рекомендации.

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

Re: Динамическая индикация.

Вт апр 25, 2017 02:28:43

melandr писал(а):Вы бы и рассказали, а не умничали.

Почему мы должны тратить свое личное время, обьясняя каждому элементарные азы? Взялись за электронику, извольте почитать хотя бы книжки типа Электроника для чайников, начинающих. Нужное подчеркнуть.

Re: Динамическая индикация.

Вт апр 25, 2017 07:06:39

Ну вот все такие умные, книжки все прочитали. Но никто так и не сказал, почему на двух платах с одинаковой схемотехникой, но с разными транзисторами и индикаторами - на одной плате индикация работает нормально, а на другой с засветкой. Мысль с транзисторами между б-э очень неплоха, но просто для себя хочется разобраться, от чего эта индикация зависит, и как в дальнейшем не делать таких ошибок.
Ответить