Обсуждаем контроллеры компании Atmel.
Сб апр 22, 2017 20:44:19
На устройстве сделана индикация на светодиодном четырехразрядном индикаторе. Но происходит такая проблема. Не до конца закрываются транзисторы, стоящие на разрядах индикатора, получается засветка неиспользуемых сегментов на других разрядах. Не понимаю в какую сторону копать. Раньше с такой же схемотехникой и кодом все работало нормально. Вот схемка
Сб апр 22, 2017 20:50:00
Ну если в предыдущих устройствах не было проблем с такой схемотехникой, то ищите в коде ошибку.
Сб апр 22, 2017 21:11:51
да код тот тоже. Просто была плата неправильно сделана, переделал плату, кое что добавил, но индикация не изменялась. Частота обновления экрана 300 гц. Каждые 3 мс обновляю дисплей
Сб апр 22, 2017 21:36:19
Возможно, дело поправила бы небольшая задержка между выдачей разрешающего уровня разрядов.
Погасили i-й разряд - сменили код сегментов i+1-го разряда - короткая задержка - выдали разрешение i+1-го разряда.
Сб апр 22, 2017 23:02:19
Рядом стоит другая плата с семисегментным индикатором, используется тот же код и все нормально. Вот такие чудеса. Потому грещу не на код а все таки на схемотехнику или плату.Вот такое подключение на соседней макетной плате, на которой бегает этот же код.
Правда у меня транзистор другой BC857.
Вс апр 23, 2017 06:29:22
Понизьте частоту смены разрядов, например 1 Гц и сразу станет понятно откуда ноги растут.
Вс апр 23, 2017 07:40:09
Это может происходить либо от того что частота всё же завышена. Либо в коде проблема. Переключение разрядов должно происходить одновременно со сменой состояния порта с сегментами.
По плате проблемой может быть лишь высокая ёмкость. Плату промывал?
Вс апр 23, 2017 08:11:52
Попробуйте снизить частоту переключения разрядами и зашунтировать резисторами (десяток килоом) переходы БЭ транзисторов
Вс апр 23, 2017 08:29:34
При установке перемычки на одном разряде между выходом микроконтроллера и коллектором транзистора, засветка неактивных сегментов в этом разряде пропала. Подозреваю что неправильно выбран режим работы транзистора. Транзистор ставился, чтобы питание разряда шло с блока питания, а не с порта микроконтроллера. Не подскажете, что нужно добавить, чтобы работало нормально. На примере выше используется транзистор ВС327. В моем устройстве используется ВС857. Вся остальная обвязка одинаковая.
wws63 - переходы БЭ нужно зашунтировать резисторами, чтобы транзистор больше открывался? И не было засветки индикатора?
Вс апр 23, 2017 09:37:54
melandr писал(а): переходы БЭ нужно зашунтировать резисторами, чтобы транзистор больше открывался? И не было засветки индикатора?
наоборот - чтоб надежнее запирались транзисторы неработающих разрядов. Десяток килоом не дадут эффекта, надо бы единицы килоом (1,5...4,7).
AndTer писал(а): Переключение разрядов должно происходить одновременно со сменой состояния порта с сегментами.
Это обязательно ? И возможно только, если сегменты и разряды были бы на одном порту, а так не бывает. Сменили код сегмента а затем бит разряда - вот вам и засветка на "прежнем" разряде. Наоборот - засветка на вновь-включенном разряде. Пауза на гашение разрядов никому помешать не может. В конце концов, попробовать можно.
Вс апр 23, 2017 10:00:03
Шунтирование б-э для транзисторов при таком управлении не актуально, разве, что МК когда разряд выключен, делает вывод входом или переводит в третье состояние. Выход МК притягивает базу к +5 В через резистор меньшего сопротивления, чем вы предлагаете шунтировать б-э.
Вот если ключи питаются от бОльшего, чем 5В источника, тогда причина проблемы будет очевидна.
Вс апр 23, 2017 14:23:51
Вот нашел -
http://microkontroller.ru/praktikum-mik ... indikator/, правда непонятно, как рассчитать это сопротивление в цепи базы. Ставил 4,7к особой разницы не заметил. По поводу кода, ну работает же рядом отладочная плата с этим кодом.
А вот фото с шунтированием транзистора, и управление напрямую портом микроконтроллера
Первое фото, выводится 2 во второй разряд, все остальные разряды должны быть погашены
Второе фото, зашунтировал перемычкой переход б-к, то есть даю сигнал с порта микроконтроллера через резистор 2,2к и сразу на анод 2 разряда индикатора
Третье фото, зашунтировал перемычкой полностью резистор и переход б-к, видно что все разряды погашены кроме 2
ЗЫ: Может у кого будет толковая мысль. Установил перемычку на первый разряд индикатора. Если вывожу в другие разряды цифры, то засветки нет. Как только вывожу в первый разряд, появляется засветка этой же цифрой. Методом научного тыка определил, что засвет происходит от первого разряда. Куды теперь копать? Может транзистор припаленный в первом разряде? Если убираю перемычку и вывожу цифры в о второй и третий разряды, то засвет все равно происходит. Попробую поискать транзистор смд такой же. Может поможет
Вс апр 23, 2017 17:58:58
Решение: поставить резисторы на базу-эмиттер. 10 кОм. Делать задержку между переключениями индикаторов. Задержку (микросекунды) подбирать, пока не исчезнет засветка. У меня такой алгоритм. Когда смена индикаторов (по прерыванию таймера или в основном цикле по программному таймеру), отключаем порты, готовим данные, выводим на порты, включаем порты. Этой задержки обычно хватает. Другое дело полевые транзисторы. Также столкнулся с ULN-ками. Нужно еще вводить дополнительную задержку (микросекунды).
Вс апр 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 к или больше?
Пн апр 24, 2017 02:32:14
Если базу транзистора не подтягивать, то транзистор начинает ловить помехи и наводки сети.
Пн апр 24, 2017 18:20:47
melandr писал(а):А как же тут это рекомендуют
Надо книжки по азам электроники читать, а не рекомендации.
Пн апр 24, 2017 19:42:36
Да дело в том, что я схемотехнику перетянул с отладочной платы .которая почему-то работает. А на форуме все умные шпынять, а конкретно ответить на вопрос не могут. Поэтому насчет
Demiurg писал(а):Надо книжки по азам электроники читать, а не рекомендации.
Вы бы и рассказали, а не умничали.А про подтяжку выше было сказано, а хочется разобраться и понять. Почему работает на отладочной плате
Вт апр 25, 2017 02:28:43
melandr писал(а):Вы бы и рассказали, а не умничали.
Почему мы должны тратить свое личное время, обьясняя каждому элементарные азы? Взялись за электронику, извольте почитать хотя бы книжки типа Электроника для чайников, начинающих. Нужное подчеркнуть.
Вт апр 25, 2017 07:06:39
Ну вот все такие умные, книжки все прочитали. Но никто так и не сказал, почему на двух платах с одинаковой схемотехникой, но с разными транзисторами и индикаторами - на одной плате индикация работает нормально, а на другой с засветкой. Мысль с транзисторами между б-э очень неплоха, но просто для себя хочется разобраться, от чего эта индикация зависит, и как в дальнейшем не делать таких ошибок.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.