Перейти к содержанию
    

Закажу написание прошивки

Прием ДМХ512 данных, динамическая индикация - довольно легко получить описаннный вами эффект из за неправильного подхода к организации вывода на индикатор , не умелого использования прерываний и других особенностей, так как ДМХ512 работает на скорости 250000 - то прерывания по UART  идут очень часто, и могут влиять на индикацию. Но это будет проявляться в плавающей яркости индикации. Но никак как вы пишите "Каждая цифра имела свою яркость (1 светилась ярче чем 8)."

Что то темните.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 minutes ago, smart_pic said:

Но это будет проявляться в плавающей яркости индикации. 
Что то темните.

Глядя на схему такое вполне может быть.
Сдвиговый регистр перегружен, и чем больше сегментов зажигает тем сильнее на нем падает напряжение. Это к разнице яркостей у разных цифр.
А вспышки потому что перегруженный регистр дает неправильный логический уровень на следующий регистр, а тот неправильно зажигает знакоместа соответственно. 
А если плата еще и на макетке сделана, то полный капец и наступает.
Я сочувствую тому программисту.   

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 часов назад, Vasily_ сказал:

 А с конденсатором на dtr, глюки гарантированны.

С чего бы вдруг ? Не говоря уж о том, что некоторая "неэстетичность" схемотехники к упомянутым артефактам индикации вообще никаким боком///

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Явных ошибок на схеме я не вижу.

Разная яркость индикаторов, когда "1" ярче "8", можно объяснить большим сопротивлением ключей Q1..Q4, притягивающих катоды разрядов к земле. По характеристикам BSS138 вроде не должны влиять, но кто знает, может на плате установлены другие транзисторы или те, но открываются не полностью по каким-либо причинам.

 

Тогда при всех подключенных сегментах ("8") их суммарный ток создаёт большое падение на ключе и ток/яркость сегментов падает. Когда горит только два сегмента "1", падение на ключе маленькое, а ток/яркость сегментов выше. Верно ли это — можно проверить осциллографом.

 

Если моя догадка верна, сделать яркость равномерной можно заменив транзисторы на другие, с меньшим падением в открытом состоянии или уменьшить ток сегментов, увеличив номинал резисторов R3..R10 с 220 до 390..470 Ом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

40 минут назад, ae_ сказал:

Явных ошибок на схеме я не вижу.

Выше сказали, что регистр перегружен. Максимальный ток 6 мА на контакт, а по схеме 10 мА (грубо).

14 часов назад, AlexandrY сказал:

А вспышки потому что перегруженный регистр дает неправильный логический уровень на следующий регистр, а тот неправильно зажигает знакоместа соответственно. 

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

Здесь, скорее, другая проблема: возможен выход регистра из строя из-за перегрузки по току через Vcc, т.к. суммарный ток может быть большое допустимых по ДШ 70 мА.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 hours ago, smart_pic said:

Прием ДМХ512 данных, динамическая индикация - довольно легко получить описаннный вами эффект из за неправильного подхода к организации вывода на индикатор , не умелого использования прерываний и других особенностей, так как ДМХ512 работает на скорости 250000 - то прерывания по UART  идут очень часто, и могут влиять на индикацию. Но это будет проявляться в плавающей яркости индикации. Но никак как вы пишите "Каждая цифра имела свою яркость (1 светилась ярче чем 8)."

Что то темните.

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

16 hours ago, AlexandrY said:

Сдвиговый регистр перегружен, и чем больше сегментов зажигает тем сильнее на нем падает напряжение. Это к разнице яркостей у разных цифр.
А вспышки потому что перегруженный регистр дает неправильный логический уровень на следующий регистр, а тот неправильно зажигает знакоместа соответственно. 
А если плата еще и на макетке сделана, то полный капец и наступает.
Я сочувствую тому программисту. 

 

2 hours ago, ae_ said:

Разная яркость индикаторов, когда "1" ярче "8", можно объяснить большим сопротивлением ключей Q1..Q4, притягивающих катоды разрядов к земле. По характеристикам BSS138 вроде не должны влиять, но кто знает, может на плате установлены другие транзисторы или те, но открываются не полностью по каким-либо причинам.

 

Тогда при всех подключенных сегментах ("8") их суммарный ток создаёт большое падение на ключе и ток/яркость сегментов падает. Когда горит только два сегмента "1", падение на ключе маленькое, а ток/яркость сегментов выше. Верно ли это — можно проверить осциллографом.

 

Если моя догадка верна, сделать яркость равномерной можно заменив транзисторы на другие, с меньшим падением в открытом состоянии или уменьшить ток сегментов, увеличив номинал резисторов R3..R10 с 220 до 390..470 Ом.

 

 

Как писал выше - проблема чисто программная, т.к. мой код не имел таких эффектов. Проверялась прошивка на плате изготовленной на заводе. Транзистор был установлен BSS138 и с ним не было проблем.

Изменено пользователем Ugene

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

37 минут назад, Ugene сказал:

Как писал выше - проблема чисто программная, т.к. мой код не имел таких эффектов. Проверялась прошивка на плате изготовленной на заводе. Транзистор был установлен BSS138 и с ним не было проблем.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

28 minutes ago, makc said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, Ugene сказал:

Согласен, что схема не идеальна, как и все в этом мире.

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

4 минуты назад, Ugene сказал:

Но при качественном техническом решении, а именно качественном коде, этих эффектов не будет.

CPU not found, trying software emulation (c) :dash2:

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

6 минут назад, Ugene сказал:

Исполнитель даже не предлагал внести изменения в схему, т.к. понимал, что это не поможет устранить эффекты, из-за того, что проблема именно программная. А вот почему он не захотел устранить этот эффект для меня остается загадкой.

Возможно, что Вы не смогли с ним  найти общий язык. В будущем предъявляйте в ТЗ требования по эргономике и т.п.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 минут назад, Ugene сказал:

А вот почему он не захотел устранить этот эффект для меня остается загадкой.

Гарантировать правильную работу кода на заведомо кривой схемотехнической базе - невозможно в принципе. Вне зависимости от качества этого кода.

Даже абсолютно правильное ПО на такой схеме может глючить.

6 минут назад, Ugene сказал:

Схему переделать для меня - было самое простое решение

Ну да, а пока мы тут видим только упорное желание доказать (перед кем-то?) вину именно программиста. Невзирая на любые аргументы.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, makc said:

Выше сказали, что регистр перегружен. Максимальный ток 6 мА на контакт, а по схеме 10 мА (грубо).

Выше я нигде не увидел про 6 мА на вывод. Есть скриншот параметров ATMega, там тоже нет про 6 мА.

Вот параметры от HC595, одиночный выход держит до 35 мА, суммарный ток до 75 мА, что даёт до 9,3 мА на каждый из 7 сегментов + точка.

Поэтому я сомневаюсь, что заметная разница яркости возникает из-за перегрузки 595 регистра.

MC74HC595A.png.057164ba12c0e496be0735d04a3ed006.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А чего бы осциллографом не глянуть, перегружен регистр или нет?

Изменено пользователем stells

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 минут назад, ae_ сказал:

Вот параметры от HC595, одиночный выход держит до 35 мА, суммарный ток до 75 мА, что даёт до 9,3 мА на каждый из 7 сегментов + точка.

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

1192187051_.thumb.png.713c9dd8f9182ddc42aaa7c352f75c92.png

И да, по Вашей же таблице 8*10 мА > 75 мА - перегрузка.

12 минут назад, stells сказал:

А чего бы осциллографом не глянуть, перегружен регистр или нет?

Эмпирический путь хорош, но зачем, если расчёт показывает перегрузку?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 минут назад, makc сказал:

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

А кто сказал, что для управления сегментом LED необходимо выдерживать уровень напряжения ?

Критерий тут один - обеспечить непревышение максимального тока выходной линии (что заведомо соблюдается) и общего тока "земли" (или питания) - вот тут да, и в самом деле есть небольшое превышение (даже с учетом внутреннего сопротивления канала выходного каскада). Вывести регистр из строя - маловероятно, но чтобы было по феншуй, надо соблюдать нормы.

 

Изменено пользователем rx3apf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только что, rx3apf сказал:

А кто сказал, что для управления сегментом LED необходимо выдерживать уровень напряжения ?

Нужно выдерживать ток. Током мы управлять в данной схеме мы непосредственно не можем, т.е. приходится выкручиваться и управлять напряжением.

1 минуту назад, rx3apf сказал:

Критерий тут один - обеспечить непревышение максимального тока выходной линии (что заведомо соблюдается) и общего тока "земли" (или питания) - вот тут да, небольшое превышение и в самом деле есть небольшое превышение (даже с учетом внутреннего сопротивления канала выходного каскада). Вывести регистр из строя - маловероятно, но чтобы было по феншуй, надо соблюдать нормы.

Для чего тогда пишутся Absolute maximum ratings? Где грань, за которой будет выход из строя?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...