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

Проект Инфо-Панели Для Офиса Телефонии


Рекомендуемые сообщения

Данный пост планировался давно, но всё не получалось собраться написать его.

Собственно, что получилось.

 

История создания проекта могла бы и не начаться, если бы не одно непритяное "Но" - в отделе имеется занятное оборудование, которое должно работать бесперебойно, в режиме 24/7/365 (круглосуточно, без выходных, всегда) - собственно, это аппратные станции и SIP сервера телефонии (а так же Call центр, но это не столь фатально).
Оборудование находится в серверной, удалённой от кабинета и достаточно зашумлённой (50-80db внутри - это норма).
За оборудованием в случае сбоя (как с нашей стороны, так и со стороны присоединённых операторов), нужно сделить и вовремя принимать соответствующие меры для восстановления работоспособности.
Меры принимаются, но ранее это происходило с некоторой задержкой в виду отсутствия возможности контроля.
Визуальный контроль за оборудованием возможен (индикация предупреждений и аварий предусмортена), но вот проблема с оповещением присутствует.
Простейшим вариантом стал комплекс их:
- Виртуального сервера (ubuntu 11.04, 512MB RAM, NoGUI).
- Скриптов на оной виртуалке.
- Устройства оповещения типа "Мигалка".

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

Всё работает, но не сказать, что удобно - неизвестно, ЧТО себя плохо чувствует.


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

Суть устройства:
MCU: ATMega1284p (выбрал то, что имелось в наличии), кварц на 18.432MHz;
Ethernet модуль: ENC28J60;
Индикация: 20 модулей 8x8 LED DOT Matrix (приобретены на E-Bay);
Звук: Пьезоизлучатель, DAC 8bit R-2R на резисторах, частота сэмплирования будет ~22kHz, Однотональные сигналы;
Дополнительная переферия: Термомерты DS12B20;
Питание: В настоящий момент под вопросом, поскольку не хочется лишних проводов к устройству, и есть желание собрать его по схеме POE, но подуль не выдержит 48V, потому, вероятно, будет использован 12V БП
В качестве внутреннего источника питания, и стабилизатора, используется модуль Step-Down DC-DC Converter на LM2596 (с того же E-Bay);
Отладка: UART в режиме RS232 (на скорости 115200), включается только при старте ЦП, если есть потенциал на заданном пине ЦП, иначе не включен и не потребляет системных ресурсов;

Конструкция
Устройство конструкционно будет представлять собой инфо-панель (напоминать таковые в автобусах), но размером поменьше (оригинальную не смог найти - не гуглится то, что представлено в наших автобусах, но напоминает оно бегущую строку).
Готовое устройство будет иметь размер видимой области 20х400мм (1 строка на 20 модулей), возможно в дальнейшем станет двустрочным, или увеличит шрифт (вероятнее первое).
Планируется работа в сети Ethernet (самостоятельная). В настоящее время (в первом устройстве "Мигалка" используется виртуальный COM-порт Ethernet <--> RS232).
Сеть организовывается через модуль ENC28J60 (особая благодарность пользователю easyelexnronix, Lifelover за драйвер модуля, а так же примеры работы с ним).
Планируется возможность звуковых оповещений (выключаемая на стороне сервера), а так же возможность воспроизведения потокового звука (декодирование будет происходить так же, на стороне сервера, проблема с воспроизведением и малой процессорной мощностью, а так же полное отстутствие DMA, решается прямым воспроизведением из кольцевого буфера), индикация - динамическая.

Теперь по порядку:
Ядро системы
От ЦП устройства требуется многозадачность, и одновременно жёсткое реальное время (для звука), потому была попытка использовать FreeRTOS, что не увенчалось успехом. Потребность воспроизводить звук сводит на нет все достоинства ОСРВ (т.к. накладные расходы на обработку слишком частых прерываний системного таймера (22кГц) требуют высоких расходов). При стандартной частоте системных прерываний (100..1000Гц) звук PCM воспроизвести невозможно.
По этой причине пришлось отказаться от FreeRTOS, и писать как и раньше.
Обработка звука будет производиться в прерывании отдельного таймера. То же прерывание, при отсутствии данных в буфере звука, будет самостоятельно отключать себя.
Однотональная пищалка будет подключена к выходам PWM-генератора, что не исключает возможности работы только одного пьезоизлучателя для оповещений.
Прерывание таймера заставляет обработчик переместить указатель буфера на шаг вперёд, проверить, не переместился ли он при этом за конец буфера, если да - вернуть в начало, вычесть 1 из оставшихся байт в буфере, если 0 - остановить воспроизведение, отключить таймер и вывести тот же 0 на порт DAC, иначе - вывести на порт байт из буфера.

Индикатор
Реализация индикатора планируется на сдвиговых регистрах с защёлками 74HC595 + IRLML2402 в качестве драйвера строк (регистры используются в качестве драйвера столбцов, т.к. их токовая нагрузка позволяет запитать целую строку (8 точек) одновременно).
Данные для отображения на самом табло будут заводиться в сдвиговый регистр, постепенно заполняя строку (биты будут проталкиваться справа налево, чтобы не городить огород с дополнительными буферами), и отображаться построчно (примерно, как в ТВ, за тем исключением, что данные строки будут отображаться 1мс, затем произойдёт переключение на следующую строку).
Благодаря наличию защёлок в регистрах, удастся полностью избежать мерцания при переключении строк.

Источник питания
Как уже оговаривалось, питание будет поступать из вне на модуль ENC28J60, т.к. его конструкция позволяет, снимать напряжение с 3 и 4 пар кабеля (они не замкнуты на корпус и ни к чему не подключены). Затем это напряжение будет поступать на DC-DC преобразователь и понижаться до 5V.
В настоящий момент стоит вопрос уровней напряжения:
Ядро нужно питать от 4.5-5V, т.к. иначе не гарантируется работа его на частоте выше 12MHz (допустима для 3.3V), но сетевой интерфейс обязательно питать от 3.3V, иначе чип сильно греется, и есть опасность его выхода из строя. Преобразователь в наличии только один, потому необходим доволнительный Low Drop 5V -> 3.3V на ток до 250mA, опять же, желательно импульсный с высоким КПД. В наличии, к сожалению, нет.

В настоящий момент имеется:
- Частично собранная библиотека (сеть видится, осталось добить проверку наличия линка и обработчики данных)
- Ethernet модуль ENC28J60

_1yb5M_WUuw.jpg


- Step-Down DC-DC Converter (LM2596)
Фото:

pMj0FjjpG8A.jpg


- Индикаторы (в разобранном виде) (20 шт)
Фото:

suDt9b7gp4A.jpg
(Сами модули)
mtbOu_tH5vQ.jpg
Модуль в сборе + сзади распиновка и частично видна схема переходника


Ссылка на сами LED-модули, а так же управление ими здесь.
- MCU ATMega1284p на отладочной плате (выглядит довольно неряшливо, но она делелась для себя).
Фото:

YcFQhBm6kgg.jpg
Отладочная плата + модуль в ней. Светит ГОРАЗДО ярче, чем на фото. Запитан от 5В без ограничительных резисторов. Зря-зря-зря.... но работает же! Второй столбец питается через резистор-подтяжку, придерживающий 1-Wire для DS18B20 (левее)


- Пищалка....
- Термометр DS18B20, переписанная с нуля библиотека. Базовый минимум функций: "Прочитать", "Запуск преобразования". Библиотека будет переписана для оптимизации и исключения задержек в работе ЦП при преобразовании. В настоящий момент, преобразование температуры заставляет замереть ЦП на ~750мс, что фатально для работы в сети, а так же, звука.
Потому данные будут считываться таймслотами, следуя не чаще чем 1 в 1мс.
В библиотеке будет реализован простейший автомат с конечными состояниями.

Чего нет:
- Переходников для LED модулей (цоколёвка модулей просто ужасна, а для панели удобнее будет собирать их, когда ряд с одной стороны, а столбцы - с другой.
Заказывать переходники оказалось коммерчески не выгодно. Цену на заводе заломили в размере 4000 (без НЗС) за 40 штук. С НДС получаем почти 5k деревянных. Придётся оттачивать навыки работы с мини-дрелью и ЛУТа.
- Законченной версии библиотеки
- DMA а очень жаль.

- Знакогенератор.
Матрица символов планируется 6х8, без оптимизаций шрифтов.

//A
{
0b00000000,
0b00100000,
0b01010000,
0b01010000,
0b10001000,
0b11111000,
0b10001000,
0b00000000,
}

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

Была идея купить Raspberry PI и написать скрипт поверх неё.. но это не спортивно. Там система ARM-11, 512MB RAM, Linux.... да там можно поднять сам сервер мониторинга!.. но вот реальное время в любой *nix системе - мягкое, а для вывода индикации требуется жёсткое.
Конечно, можно было сделать RPI + любой более простой контроллер типа ATMega48 (да, тоже есть в наличии), с обменом по SPI/UART и переферией поверх самого контроллера, но это тоже не спортивно.
Цель проекта ставилась для себя "Уложиться в малый бюджет и собрать устройство оповещения", потому выполняется именно так. Почти здоровый спортивный интерес.

Проект постепенно собирается, обновления будут позже.
Спасибо.

 

 

Кстати, нашёл самую похожую бегущую строку (что применяется в автобусах):

Здесь

inside.jpg

Изменено пользователем Alan
Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 164
  • Создана
  • Последний ответ

Топ авторов темы

Интересный проект! Всегда приятно видеть что-то подобное на форуме.

 

По поводу DC/DC конверторов 48V/5V - для обеспечения должной надежности придется ваять на рассыпухе по топологии бака или флая, т.е. организовать управление внешним силовым ключом. Это проще всего. Конечно, существуют специализированные интегральные микрухи, требующие минимума обвеса и выдерживающие свыше 50V, например, Si3402, но они могут быть труднодоставаемыми и труднопаябельными.

 

Конверторы уровней - штука простая, особенно если линии однонаправленные. Для сопряжения 5V и 3V3 уровней - используй 74LVC244, 74LVC245. И, да, входы ENC28J60 5V-толерантны.

 

Для двунаправленных линий советую ADG3308. Но иногда можно обойтись и мосфетами. :)

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

Как интересно) Интерфейс комп - индикация состояния)).. Хотя тут бы какую нить прогу бы запилить с минимальным интерфейсом сигналов сбоя и нумерации линий и всего остального.. В прочем это надо смотреть что с чем завязано и как оно работает на месте) Возможно ли это завязать програмно с друг другом.. От тутда через интерфейс RS- 232 или 485. Или сеть..Сие посадить на комп какой нить и с него мониторить и возможно управлять всем прочим.. Но опять же я не программист..

Но это вполне имеет решение уже давно.. Но оно денег стоит)

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

Обдумывали варианты, и пришли к мысли, что:

- Компьютер может зависнуть/отключиться/глюкануть/сломаться... в моём компе, например, имеется физический порт RS-232, но он сдох.. Передавать данные не может более.

Плюс, нужен сервис.

Да, можно сделать что-то подобное, но решили максимально абстрагироваться. Не знаю, как остальные, но я - точно.

Получился именно подобный проект. На виртуалке крутится скрипт-опросник. Где-то в сети висит устройство оповещения.

На текущий момент - уже мельком упомянутый виртуальный порт RS232 (Арлан-9000). Кому интересно, вот ссылка.

 

Raymond, спасибо ^_^  Вообще, не очень хотелось делать на рассыпухе по простой причине - через него должна проходить немаленькая мощность (по прикидкам в критическом случае: Активен Ethernet + Горит вся линия (160 точек * 10mA), получаем порядка 1600mA+200mA = 1.8A*3.3V = ~6W, что довольно прилично)

Плюс, обязательно потребуется два уровня напряжения питания - 4.5~5.5V для MCU (иначе не сможет запуститься на 18MHz (планирую использовать кварц на 18.432MHz), т.к. там тайминги меньше по понятным причинам, а вот на ENC28J60 требуется 3.3V, иначе утюг... ::annoyed  Проверялось... неприятно горячая уже за пару минут.

Потому думаю не использовать готовый POE модуль, а просто подать через гнездо-переходник где-нибудь 12V. И будет счастье. А уже LowDrop делать от 5V после стабилизатора.. хотя, есть варианты, опять же.

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

Вообще, не очень хотелось делать на рассыпухе по простой причине - через него должна проходить немаленькая мощность (по прикидкам в критическом случае: Активен Ethernet + Горит вся линия (160 точек * 10mA), получаем порядка 1600mA+200mA = 1.8A*3.3V = ~6W, что довольно прилично)

Так для больших мощностей как раз и делают на рассыпухе, хотя этот термин не очень корректен - имеется в виду микросхема контроллера с внешним ключом (или ключами в случае синхронного выпрямителя). :) Хотя 6W в нагрузке - это большая мощность разве что для линейного стабилизатора и для импульсника не проблема.

 

ENC28J60 греется изрядно и на штатном питании у меня, это - норма (5V даже в голову не приходило на нее подавать). В принципе, питал и от линейного стаба, например, такой LDO как LF33. Но если ты заделаешь конвертор флаем, ничто не мешает сделать отвод от вторичной обмотки транса на 3V3. Еще один плюс в сторону флая - гальваническая развязка девайса, что очень желательно для устройства, питаемого через длинный кабель.

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

ENC28J60 греется изрядно и на штатном питании у меня, это - норма (5V даже в голову не приходило на нее подавать). В принципе, питал и от линейного стаба, например, такой LDO как LF33. Но если ты заделаешь конвертор флаем, ничто не мешает сделать отвод от вторичной обмотки транса на 3V3.

Так в том-то и проблема, что не хочется городить трансформаторы. Ну, не люблю я трансформаторы собирать ^^''''

Проще бы было запитать так:

+12 -----> [3..35 -> 5]----(5V)----[LDO]----(3.3V)---> ENC28J60

А 5V питать MCU+его переферию.

Возникла идея засунуть до кучи ещё и RTC в проект.. и синхронизировать время из сети... но это чуть позже.

 

Так вот, насчёт LDO 5 -> 3.3V. К сожалению, не слишком легко ориентируюсь в имеющейся элементарной базе, да  и рядом со мной магазин так же не слишком радует.

Есть довольно простенький вариант, который морально подходит для питания относительно малыми токами:

LM358 + опорное напряжение + делитель + IRF...ну, допустим.. 7306/7316 с радиатором. Примерно получаем: (5-3.3)*0.2A = 1.7*0.2 = 0.34W (по спецификации может потреблять 0.25A, тогда 0.41W).

Datasheet для IRF7306/7416 описывают максимальную мощность рассеянья в 1.4W @+70°C, так что 0.5W должно быть относительно допустимо.

Грубовато.

Изменено пользователем Alan
Ссылка на комментарий
Поделиться на другие сайты

Заметка проекта получила на Хабре плюс, не знаю, чем именно, но инвайт получен.

>'^..^'<

 

Первый пост на Хабрахабр.

Изменено пользователем Alan
Ссылка на комментарий
Поделиться на другие сайты

БУ ! Давненько я сюда не заглядывал. :)

Изложу некоторые свои мысли по сабжу:

1) индикация:

Использование матричных светодиодных индикаторов - это конечно очень

красиво и стильно, но обслуживание такого индикатора - это несколько

более громоздко, чем кажется на первый взгляд.

Тут есть несколько граблей:

a) Программная развертка, темже процессором, который выполняет еще и другие задачи реального времени - скорее всего породит неприятное мерцание индикации, за счет того что периоды горения разных столбцов будут немного неодинаковыми, т.к. проц не вовремя отреагировал на прерывание (был занят чем-то другим). Светодиоды - они такие штуки очень хорошо чувствуют. А если вы отдадите индикации наивысший преоритет - есть риск что или звук начнет "хрипеть", либо данные с интерфейса теряться, либо чего еще. Тем более, если это 8-битная атмега, там и так быстродействие не запредельное.

Решение - поставить на индикацию отдельный процессор например ATmega8, и передавать в него данные, например по RS232 . Еще на него можно повесить сканировние клавиатуры (развертывается темже дешифратором что и индикатор, строка индикации на вывод - строка клавиш - на ввод, ключ к питанию он один и несколько милиампер на считывание клавиши - его не сильно нагрузят), и сделать такой "терминал", который по нажатию кнопки - передает в центральый процессор ее скан-код, а обратно принимает то, что надо напечатать на экране (тоже в символьном виде, знакогенератор - находится в процессоре индикации, как и видеобуфер). Это сильно экономит ноги основного процессора, и, кроме всего прочего, упрощает трассировку печатной платы. (можно сделать вообще отдельным модулем, чтобы при вненсении изменений в основное устройство - не переделывать еще и это). Кроме того, в виду наличия достаточно большого количества свободных ног у процессора индикации - можно обойтись без программного "выталкивания" 1-битного последовательного потока - выставил данные на полный 8-битный порт - и дал строб. Когда "зарядил" все данные в 1 строку - перезащелкнул. Аппаратно это можно реализовать на 8шт тех же самых 74HC595, работающих параллельно (каждая обслуживает свой бит выходного порта процессора, на выходе, после перезащелкивания - 64 бита). Либо на параллельными 8-битными защелками (74AC374, 74AC273 (аналоги ИР23, ИР35) и т.д. )они более легкопокупаемы, но их потребуется двойное количество, для синхронного перезащелкивания выходного слова (в HC595 - выходной регистр - встроенный). А столбцы - очень удобно перебирать дешифратором (74HC154), "надставленным" p-канальными полевиками. Кстати рекомендую обратить внимание на сборки по 2 транзистора в SOIC-8 (например IRF7304, IRF7314, IRF7329) - заметно удобнее паять и разводить чем SOT23, да и сами транзисторы там помещаются еще более "толстые", а места на плате занимают и стоят почти столькоже.

б) следует помнить, что импульсный ток светодиода - не безграничен ! внимательно почитайте datsheet на используемый индикатор. Это я к тому, что организовать разветку матрицы 2х10 индикаторов (16х80 точек), как вы хотели столбцами по 16 точек, горящих 1/80 периода - скорее всего не выйдет чисто энергетически. А если и выйдет, то не забывайте, что первое-же зависание программы с включенным 1 столбцом (а там всегда какой-то столбец будет включен) - приведет к мгновенному выгоранию данного столбца (2 индикаторов), ибо, как подсказывает К.О. , токозадающие резисторы у вас - обязаны быть рассчитаны на 80-кратный ток.

Надо бы развертывать по строкам, 80точек, со скважностью 1/16, но это значительно более громоздко, с аппаратной точки зрения: требуется 16 шт 74HC595, и 40 транзисторов IRLML2402 (либо 20шт IRF8910, IRF7311) Может немного спасти использование логики 74AC (у нее выходной ток - громадный, на 16 светодиодиков - должно вполне хватать), но 74AC595 - штука весьма экзотическая (беглый анализ вызывает подозрение что вообще снята с производства), так что придется юзать 20шт (74AC374, 74AC273), с "двойным презащелкиванием", зато без транзисторов.

в) как показывает практика, матричные индикаторы - нужны далеко не всегда.

Можно сделать матрицу гибридной, на матричных и 7-сегментных индикаторах, включив последние в общую схему развертки (каждый 7-сегментный - это еще один столбец в 8 светодиодов). Как вариант, вместо 2шт 8х8 матричных - поставить 16шт - семисегментных (по 8 шт - в конце каждой строки, или по 4шт в начале, и по 4шт в конце). Если подобрать индикаторы одного размера и высоты с матричными - смотрется будет весьма стильно, а "информационная емкость" дисплея - сильно возрастет. Или добавить еще 7-сегментных к вашей матрице. Тут надо внимательно смотреть, что именно вы собираетесь там отображать. В принципе, "раз пошла такая пьянка", 16х80 - можно вполне безболезенно расширить до 16х128. 80-цифра некрасивая ;).

г) в принципе, если вы уж так не хотите ставить дополнительный процессор, можно вспомнить как это делали лет 15-20 назад, и изобразить аппаратную развертку микросхемы SRAM (например 6216 ака 537РУ10, хотя скорее всего сейчас придется купить чтото бОльшего обьема, вроде 6264, и часть адресных ног - заглушить) счетчиком. Но это явно более громоздко чем доп. процессор (хотя на фоне 2 десятков 74AC373 - может быть и не так страшно), и делать такое имеет смысл только "по приколу". (Только железо ! только хардкор ! :) ) Если всеже желание не пропало, могу попробовать прорисовать, когда будет время.

2) Пищалка: Как известно, для хорошей громкости, на пьезики надо подавать побольше напряжения.

Если используешь 1-битовую, подключенную к выходу таймера - для увеличения громкости (амплитуды) можно использовать свободный вентиль преобразователя уровня RS232 (ADM202, MAX232, или что там стоит. 1 вентиль обычно остается "без дела"), он дает +-10в, да еще, если включить пищалку между его выходом и входом - получится +10...-15в. У меня например, при таком включении, зуммер (EFM290) слышно из закрытого корпуса, в достаточно шумной машине. А на время отладки на столе - заклеиваю куском изоленты, чтобы не било по ушам.

Если пищалка работает с ЦАП-а - можно разогнать парой операционников, вплоть до +-30в (парафазный выход, при питании усилителей +-15в), тут единственная сложность - в организации относительно высоковольтного питания.

Но прикол в том, что подключать к такой системе пьезик - не очень хорошо, ибо пьезик имеет очень острый резонанс. И звук получится весьма убогим. Лучше поставить какой-нибудь аудио-усилитель (желательно класса-D, за супер качеством - все равно не гонимся, а грется лишний раз - не к чему. ШИМ-рулит), и раскачать им электромагнитный динамик. Например полифонический звонок от мобильника. Они достаточно громкие, причем питания 5в - более чем хватит.

3) питание:

a) если предполагается POE, то не следует забывать про 2 вещи:

1. Необходима микросхема для "опознания" нагрузки хостом, и коммутации

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

не отдаст. (сочтет что вы есть устройство, для этого не

предназначенное, и выключит, чтобы не пожечь).

Почитать про это, можно хотябы тут http://ru.wikipedia.org/wiki/POE

Для этого есть специализированные микрухи. Например TPS2378, LM5073.

2. Необходим преобразователь с гальванической изоляцией,

если только устройство не полностью "взвешенное"

(без внешних разьемов, в пластмассовом корпусе).

Про что тоже написано, по приведенной ссылке в wiki.

Так что:

Так в том-то и проблема, что не хочется городить трансформаторы. Ну, не люблю я трансформаторы собирать ^^''''

А придется ;) Стандарт обязывает.

На такую мощность - однозначно обратноходовка. Можно вульгарно,

на UC3845/44. Но сейчас я бы использовал что нибудь посовременнее.

Из личного опыта могу порекомендовать NCL30000. Копеечная микросхемка

очень малопотребляющая. Очень мало обвязки. Переключение по нулевому

напряжению, реализованное на анализе служебной обмотки трансформатора,

(с которой онаже сама и питается). То что микросхема предназначенна

для сетевых PFC - смотреть не надо. Никто не заставляет делать

"медленную" (менее 100гц) обратную связь, и ставить минимальный

конденсатор по входу. А без этого - она превращается в обычную

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

преобразования (за счет ZVS: следующий цикл начинается сразу, как

только израсходовалась энергия в трансформаторе, запасенная на

предидущем), но к этому можно превыкнуть, главное подобрать

индуктивность первички, чтобы частота не получалась слишком большой

или слишком маленькой, во всем диапазоне нагрузок.

Вобщем сейчас у меня это "дежурная микросхема", чтобы по быстренькому сделать преобразователь. Хоть с сети, хоть с чего пониже. К сожаленью оптимальные витки трансформатора, для 48в-5в - так прямо не скажу, тем более что у меня большинство девайсов с ней сделаны на ETD29, N87, зазор 2*0.2мм, а он для данного применения - великоват. Тут надо бы что-нибудь вроде E20. Если всеже будете использовать ETD29, то ориентировочно 30/3/7витков (первичка/вторичка/служебка).

На вторичной стороне - классика: TL431+оптрон.

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

(Да, да Raymond ;), почти то самое, что вы упомянули )

Которую нормально работать, так и не смог заставить (несмотря на то, что все сделано по Datasheet-у, даже с рекомендованным покупным трансформатором). Опознание устройства - срабатывает нормально, ключ питания - замыкается. На единицы ватт - преобразователь работает. Чуть больше - выносит микросхему, и совершенно непонятно почему, и не посмотреть ничего (все "внутри"). Потратил недели 2. Перерыл все апноты. Еще и менять эту дрянь, в "безногом" корпусе, с "медным пузом" - то еще удовольствие. Редкостное г... До сих пор вызывает рвотные позывы. Можно конечно надеятся, что в упомянутой Si3402 - все баги исправлены, ага ... Но я бы очень не рекомендовл использовать что нибудь от Si-Labs (У знакомых были "нежданчики" с другими их микросхемами). Уж лучше от Ti, NS, ON, или ST, чего нибудь поискать (tps23757 - вроде ничего).

Есть довольно простенький вариант, который морально подходит для питания относительно малыми токами: LM358 + опорное напряжение + делитель + IRF...ну, допустим.. 7306/7316 с радиатором. Примерно получаем: (5-3.3)*0.2A = 1.7*0.2 = 0.34W (по спецификации может потреблять 0.25A, тогда 0.41W).

Очень, очень кривой вариант ! Прежде всего потому, что транзистор включается в режиме "усилителя" а не в режиме "эмитерного повторителя", что приводит к фиг-знает-какому петлевому усилению, а при работе "генератора тока", коим является сток (коллектор) транзистора, на емкостную нагрузку - еще и к большому сдвигу фазы. Все это вместе создает предпосылки к динамической неустойчивости. Вобщем эта проблемма есть даже у "фирменных" LDO, стабилизаторов. Если почитаете апноты - то там очень подробно описывается, что не надо вешать керамические конденсаторы прямо на выход микросхемы, а следует поставить ферритовую бусину... бла-бла-бла. А уж если можно - то прямо на титульном листе datasheet-а - большими буквами "anycap", или что нибудь в этом роде.

Это все не просто так. Проблеммы с частотной коррекцией могут вылезти совершенно неожиданно, например при резком скачке потребления (типа передачи очередного пакета), будет возникать "провал" приводящий к порче данных или зависанию чего нибудь. Вероятность не очень большая, но если "повезет" - отлавливать задолбаешся. Если так уж хочется сделать LOWdrop-стабилизатор из "рассыпухи" - озаботьтесь "вольтодобавкой", чтобы поднять затвор полевика выше питания. Ток потребления от вольтодобавки - ничтожен (<1ма) и о потерях мощности там говорить не приходится. Взять можно очень много откуда (в крайнем случае сотворить зарядовую помпу из любого генератора с двухтактным выходом (хоть 1/6 74AC14), конденсатора и пары диодов в sot23). Обычно такой источник в системе уже есть. Например вывод микросхемы драйвера RS232, на котором он накапливает повышенное питание (для ADM202 - 2выв). Или "первичное" питание (там вроде 12в предполагалось). Если все это питается от преобразователя от PoE, то вообще не проблемма, даже если у транса единствення вторичная обмотка, на 5 в - сделать, параллельный выпрямителю, канал с удвоением можно на чип конденсаторе, резисторе и паре диодов sot23.

А если есть вольтодобавка - LOWdrop-стабилизатор - делается на TL431, n-канальном полевике, и 3 резисторах. Причем если полевик достаточно низкоомный, то он будет просто LOW-LOW-LOW-drop (по сравнению с большинством серийных микросхем) :)

Да и проще это чем "LM358 + опорное напряжение + делитель + IRF" (если делать отдельную зарядовую помпу - то равноценно по сложности). Если кажется большим собственное потребление TL431 (1ма от вольтодобавки), то можно использовать ее микропотребляющие аналоги NCP431 (собственное потребление менее 50мка), или TLV(собственное потребление менее 80мка, опорное напряжение 1.25в).

Datasheet для IRF7306/7416 описывают максимальную мощность рассеянья в 1.4W @+70°C, так что 0.5W должно быть относительно допустимо.

Полвата на SOIC-8, ИМХО многовато. Только если он "сливает" через обединенные ноги коллекторов на медный полигон на плате (печатный радиатор). Кроме того, учтите что транзисторов в упомянутом приборе 2 шт. Если Vgs_th - у 2 кристаллов - заметно отличается, то запараллелить их в линенйном режиме - не очень просто, это вам не ключи. Лучше поискать хотябы "одиночный" транзистор в SOIC-8. А еще лучше D-pak, SOT-89, SOT223 - они "в случае чего" -легко сопрягаются с печатными радиаторами (или просто обрезком медной фольги).

А вообще, понижающие DC-DC, в данном случае - рулят. Всячески рекомендую ST1S10 + IHLP2525 10uH, для этой задачи (5в->3.3в) - самое то, что надо. Работает железобетонно. Уже не первый раз применяю. На нейже можно сделать и все остальные напряжения питания, из первичного (если не более 18в. если более - юзаем ST1S14). КПД- значительно выше чем у LM2596, который при 3.3в выходном - выдает менее 74% (ST1S10 - более 95%). Количество обвязки - минимально: дроссель, 2 резистора для задания выходного напряжения, конденсатор частотной коррекции 2000-4000рF параллельно одному из резисторов (обычно все работает и без него), резистор на 1Ом (или ферритовая бусинка), последовательно с питанием самой микросхемы, и конденсаторы фильтров по входу, выходу, и питанию самой микросхемы. Единственная особенность: входной и выходной конденсатор - несколько десятков микрофарад керамики X7R (X5R), (но нынче это совершенно не проблемма) танталлы - толко как дополнительные, сплошная "земля" по обратной стороне, и конденсаторы с дросселем - далеко не утягивать (сигналы по ногам микросхемы разложены вполне грамотно, это само собой получается), ибо частота преобразования - мегагерц.

4)

Возникла идея засунуть до кучи ещё и RTC в проект.. и синхронизировать время из сети... но это чуть позже.

Ну, про RTC - тут у нас уже был большой разговор.

5) не очень понятно, за каким лешим вам в таком контроллере сдалась ОС ?

Какие функции она будет там выполнять (кроме потребления системных ресурсов, и организации глюков :) ) ?

Пишешь все "с нуля", с обращением прямо "к железу", и радушься жизни :).

6)

Отладка: UART в режиме RS232 (на скорости 115200), включается только при старте ЦП, если есть потенциал на заданном пине ЦП, иначе не включен и не потребляет системных ресурсов;

А какие такие ресурсы у вас будет потреблять RS232, чтобы его выключать ? Изменено пользователем dr.Nimnul
Ссылка на комментарий
Поделиться на другие сайты

З.Ы.Попытался нарыть даташит на ваш индикатор

http://www.g-nor.com/html/GNM-7881Ax-Bx.pdf

К сожаленью он очень короткий, и китайский (моя по китайски не понимает).

Необходимых цифер там просто нету.

Так что все что я сказал про импульсный ток светодиода и развертку матрицы - особенно актуально.

Вот, для сравнения, даташит, на похожий индикатор от Kingbright.

http://www.kingbright.com/attachments/file/psearch/000/00/00/TC15-11SURKWA(Ver.5A).pdf

Peak Forward Current - 185ма. Т.е. при работе таким током со скважностью 1/80 средний ток единичного элемента будет составлять всего 2.3ма . Больше НИЗЗЯ ! Для "сверхяркого красного" - это конечно не очень мало, но хочется иметь возможность включить и поярче... Кроме того, это всетаки Kingbright. А какие кристаллы стоят в вашем noname - одному богу ведомо (а его как известно нет).

Но если ты заделаешь конвертор флаем, ничто не мешает сделать отвод от вторичной обмотки транса на 3V3.

Вы несколько неправы. Сколько не наблюдал попыток сделать +5в и+3.3в на одном транчформаторе - обычно все оканчивалось фейлом. Причины 2:

1) Кросстабилизация. Оба напряжения, (если это стандартные питания логики) - имеют достаточно маленький допуск, и по сути требуют индивидуальной обратной связи. А с общим трансом - ОС возможна только от одного из, либо от их весовой суммы (стабилизация некоего среднего значения).

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

2) Эту проблемму можно обозвать "некратное деление обмотки". Например у меня в последнем трансе, который делает +5в, во вторичке - 2витка. Откуда отвод делать :) ? Если от середины - получится примерно (5+0.5)/2-0.5=2.25в, а больше - просто неоткуда.

И почти в любом случае, витков на 5в - получается очень мало. Там особо и свободы для подбора то и нет.

Не просто так, в ATX-х блоках питания делают отдельный стабилизатор, на 3.3в, с насыщаемым дросселем (ака управляемое реактивное сопротивление в цепи переменного тока, снятого с 5-вольтовой вторички), и своей локальной обратной связью (как правило, на отдельной TL431). Но не думаю, что ту есть смысл так заморачиваться. Я не разу такого сам не делал, но что-то мне подсказывает, что это далеко не так просто как выглядит со стороны ;).

Так что,+3.3в - проще делать отдельным преобразователем, не смотря на кажущуюся простоту схемы с отводом. Причем, крайне желателен синхронный (без диода), в виду малого выходного напряжения, иначе КПД - будет удручающе низким.

Кроме всего прочего, КПД, (при использовании синхронного преобразовтеля на ST1S10) - будет такимже, несмотря на 2 ступенчатое преобразование, ибо при выпрямлении 5в - относительные потери на падение диода - меньше, чем при непосредственном выпрямлении +3.3в. Если принять падение на диоде за 0.5в то при непосредственном выпрямлении получается 3.3/3.8=0.86, а если делать сперва 5в, то получается 5/5.5*0.95=0.86 (все прочие потери - считаем равными в обоих случаях).

В принципе, с этой точки зрения, даже выгоднее сделать сперва, ну скажем +12в (для звука например), а потом из него, 2 преобразователями +5в, и +3.3в (12/12.5*0.95=0.91).

 

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

Не просто желательно, а строго обязательно по стандарту PoE. Ethernet - всегда предусматривает гальваническую развязку. Причем НА ОБОИХ КОНЦАХ КАБЕЛЯ. Как по линиям данных (сигнальными трансформаторами), так и по питанию (через изолирующие преобразователи). Изменено пользователем dr.Nimnul
Ссылка на комментарий
Поделиться на другие сайты

dr.Nimnul, приветствую, рад видеть!

 

Об организации периферии. Для управления светодиодами рекомендую MBI5026, узнал о драйвере по проекту LightPack в свое время, использовал в нескольких проектах. По-сути, тот же сдвиговый регистр со стабилизацией тока. Ток задается на всех выходах внешним резистором, управляется все через быстрый SPI на 10MHz. Конечно, для этого лучше выделить отдельный контроллер, для связи я бы использовал I2C слейв (ибо SPI у контроллера уже занят в режиме мастера), благо, все это будет сидеть на одной плате и далеко тащить провода шины с пулапами не придется. А UART можно использовать с большей пользой.

 

В качестве экзотики (использовал на практике) - периферийные контроллеры от Princeton для LED (PT6958) и для VFD (PT6312). Единственный недостаток при сканировании кнопок - отсутствие выхода прерывания, т.е. полный слейв. Клаву обычно реализую отдельно по I2C используя расширители портов. PCF8574 - самый простой вариант, и как следствие - наиболее быстрое обращение к нему. Есть варианты посложнее, многопортовые, с кучей регистров и индивидуальной настойкой пинов. Опробовано и использовано в целой куче проектов. Никакого сканирования клавы с тратой ресурсов - все по прерыванию. Антидребезг на капах - работает стабильно в т.ч. в сложной электромагнитной обстановке. Выгодное решение, если кнопок не сотня. А если сотня, то можно еще декодировать PS2, что тоже делалось.

 

Еще бы, если делать РоЕ по всем стандартам - это достойная задача на самом деле, и весьма ощутимая часть описанного в стартпосте проекта. Конечно же, с полной гальванической изоляцией (думаю, и без капса, все, кто читает эту тему, знает что физический уровень Ethernet всегда гальванически развязан ; ) ) Но, я так понял, Alan хотел упростить задачу и просто использовать свободные жилы кабеля и питать устройство просто по линии от своего источника (сделать врезку-переходник в сеть чтобы подключиться к жилам - совсем просто же). Хотя это далеко не самый красивый вариант, да и стандартизация - всегда плюс.

 

По поводу флая - в целом согласен, что на таком низком напряжении - это сложно (это можно прикинуть и рассчитать ради интереса). Хотя никто не мешает подогнать напряжение с отвода до 3,3 вольт с помощью LDO, всяко потерь будет меньше. Но делал на более высоком напряжении, с отводами, с кросстабилизацией вполне можно бороться. Все что вы говорите о необходимости повторной стабилизации (зависимость падения напряжения на диодах от вариации нагрузки, дроссель с насыщением как в ATX) - совершенно правильно, для тех мощностей (хотя там кросстабилизация по 5 и 12 вольтам порой вылезает : ) ). Здесь же ситуация гораздо проще, тем более, что жрет в основном пятивольтовое питание, по которому и ОС и которое наиболее меняется под действием нагрузки индикатора, нагрузка по 3.3 вольтам на физику Ethernet - вполне постоянна. Но учитывая простоту и эффективность современных синхронных импульсных преобразователей, правильнее и красивее деле сконвертить до пяти вольт и потом степдауном к 3.3, что и делается (тут скорее всего КПД будет зависеть от правильной трассировки платы, правильного выбора индуктивности и обмазыванию преобразователя годной керамикой).

 

Управлять пьезоизлучателем проще всего с помощью индуктивности и ключа. Индуктивность к питанию, ключ к земле, а-ля буст без диода, прямо к ключу - пищалку. Расчётом дросселя можно добиться неплохого визга. Правда, здесь громкость будет зависеть от частоты, но для сигнализаций монотональных - вполне сойдет. Идея успешно применялась в наручных часах, тамагочи, и прочих гениях китайской мысли. Кстати, по этой же топологии некоторые умельцы реализовывали класс Е раскачки электрострикционного излучателя.

 

А вот это

 

>> Пишешь все "с нуля", с обращением прямо "к железу", и радушься жизни

 

В рамочку и на стенку. :)

 

P.S. Что именно от силабов еще глючило, кроме POE? Ибо сам не очень юзаю их продукцию, активно - только USB-мосты, с ними проблем нет.

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

Об организации периферии. Для управления светодиодами рекомендую MBI5026, узнал о драйвере по проекту LightPack в свое время, использовал в нескольких проектах. По-сути, тот же сдвиговый регистр со стабилизацией тока. Ток задается на всех выходах внешним резистором, управляется все через быстрый SPI на 10MHz.

вполне достойная идея. Я как-то упустил из виду специализированные микрухи для управления светодиодами. С указанными лично не общался, хотя подобные штуки (сдвиговый регистр+перезащелка+генераторы токов) встречал. Потом посмотрю что это такое. Тут важно только чтобы оно обеспечивало должный ток (и не перегревалось при этом). Ибо придется ему работать не на 1 светодиод, а на целую колонку, в виду маленькой скважности - ток придется умножать в N-раз.

 

Клаву обычно реализую отдельно по I2C используя расширители портов. PCF8574 - самый простой вариант, и как следствие - наиболее быстрое обращение к нему. Есть варианты посложнее, многопортовые, с кучей регистров и индивидуальной настойкой пинов. Опробовано и использовано в целой куче проектов. Никакого сканирования клавы с тратой ресурсов - все по прерыванию.

 

Можно и так. Но если используется проц индикации, то программное сканирование - получается "на халяву", одновременно с разверткой индикатора: Одним и темже ключем (с дешифратора, или напрямую к контроллеру, если ног хватит)одновременно коммутируешь, к +5в, строку индикатора и строку матрицы клавиатуры. Столбцы клавиатуры - притянуты к земле, и заведены на отдельные входы считывани. По таймерному прерыванию:

1) Считал слово с клавиатуры. Если чего нажато - кинул в буфер, (и)или сразу в интерфейс (тутже реализуется и антидребезг по счетчику циклов опроса).

2) погасил индикацию (закрыл все ключи), чтобы не было паразитных засветок от переключения

3) перезащелкнул очередное слово на следующую строку индикации

4) сменил номер строки (в порту, который управляет ключами строк)

5) зажег индикацию (открыл установленный ключ)

6) загрузил в сдвиговый регистр следующее слово на индикацию, из видеобуфера

Конец обработчика. До следующего вызова - горит очередная строка, и происходит распространение сигналов в матрице клавиатуры.

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

Еще бы, если делать РоЕ по всем стандартам - это достойная задача на самом деле, и весьма ощутимая часть описанного в стартпосте проекта.

Да ничего особо достойного там нет. Единственная относительно сложная штука - собственно сам изолирующий преобразователь. Взаимодействие с хостом, и опознание - осуществляется специализированной микросхемой (протокол там кстати элементарный). Эта микросхема все и делает. По окончании "рукопожатия" - подключает полевик на основной преобразователь. Необходимо приделать к ней резистор, программирующий класс устройства по нагрузке (таблица обычно преведена в даташите), многофазный диодный мост (со всех дифпар интерфейса, чтобы как не включишь - всегда питание приходило куда надо) - 8 диодов или 2 мостовых сборки, и, если изолирущие трансформаторы по сигнальным парам не имеют отводов от середины - высокочастотные фильтрующие дросселя, с каждого провода дифпары (впрочем если есть отвод от серединки транса - дроссель все равно полезен, для доп фильтрации). И не увлекаться емкостью фильтра ДО ключа подключающего основной преобразователь (там ЕМНИП, не более 0.1мкф положено), чтобы в процессе детектирования, вас не приняли бы за КЗ, из-за тока заряда этого конденсатора. Основной конденсатор должен располагаться ПОСЛЕ ключа.

Все ! Более никаких сложностей там нету. Если такая уж проблемма сделать преобразователь - вот пожалуйста:

4498100m.gif правда, пока - это "не совсем то". Я выдрал источник служебного питания из своего сетвого 700ваттного PFC. Но даже в таком виде оно работает в диапазоне входных напряжений 60-395в. Если надо - могу оптимизировать под входное около 48в, выкинуть лишнее, прикинуть трансформатор (и транзистор на 800в - слишком высокоомный, такой там нафиг не нужен, и цепочки из резисторов можно покороче сделать, и т.д.). Эта схема дает мощность порядка 40вт, это немного избыточно, хотя, если транс на ETD29 - устраивает, то можно не напрягаться, как говорится "запас карман не тянет"(в принципе - как раз, верхняя граница допустимой нагрузки для PoE), индикатор может сожрать немало, особенно если в дальнейшем его планируется делать "настенного" размеру (такиеже сборки, только большие, потребуют бОльших токов для обеспечения тойже яркости).

 

Но, я так понял, Alan хотел упростить задачу и просто использовать свободные жилы кабеля и питать устройство просто по линии от своего источника (сделать врезку-переходник в сеть чтобы подключиться к жилам - совсем просто же). Хотя это далеко не самый красивый вариант, да и стандартизация - всегда плюс.

Не самый красивый. Вы правы. Тем более что использовать стандартный разьем - тут не очень правильно. А вдруг кто-нибудь туда воткнет что-то другое ? В гигабитном ethrnet-е, эти контакты - уже не свободные. (Сами же мне в свое время этим тыкали в теме про DC-AC преобразователь :) )

Кроме того, в PoE не так просто используется все 8 проводников и контактов, и относительно высокое напряжение. А 12в - это достаточно большие токи (мощность там уже далеко не совсем "копеечная"). По длинному ethernet-кабелю, да только по одной паре, да через те обжатые контакты... ф-у-у ! Тады уж лучше воткнуть обычный AC-DC с 220, на 12в, (неужели в помещении нет розетки ?) и с него все сделать. Кстати

этой задачи - я уже давал, причем даже с примеро разводки. Оно работает без нареканий. Единственное , что сейчас я ставлю дросселя по 10uH, и конденсаторов по 10мкф X7R, по выходу - не по 1, как нарисовано, а по 2-3шт (в зависимости от тока).

А если пустить по кабелю теже 48в - возвращаемся к тому с чего начинали - преобразователь основная проблемма. А добавить к нему, положенную по стандарту микруху - совсем не сложно. У меня эта часть заработала "с листа", даже с силабсовской микрухой.

 

По поводу флая - в целом согласен, что на таком низком напряжении - это сложно (это можно прикинуть и рассчитать ради интереса).

Рассчитать довольно сложно на самом деле. Реальные наблюдения за людьми, которые пытались такую штуку сделать (именно +5 и +3.3, пускай и с относительно небольшими нагрузками), показывают что АБСОЛЮТНО ВСЕ, со временем от этого отказались, ибо результат "не айс"(хотя "в легких условиях", может быть на пределе допустимого, и на какоето время - удовлетворять), а сделать степ-даун - нынче совершенно не проблемма. Следователно, нафига парнокопытному - клавишно-духовой музыкальный инструмент :)

Хотя никто не мешает подогнать напряжение с отвода до 3,3 вольт с помощью LDO, всяко потерь будет меньше.

Ну, вот так, кстати можно. Особенно если вольтодобавочку с тогоже транса сделать, да на этом стабилизаторе где-то 0.5-0.05в ронять (покупных микрух, с такими параметрами, я как-то не знаю, а вот TL431+полвик+3резистора - рулят). Вполне себе годное решение. Но все равно макетировать надо. С первого раза в оптимальные витки - точно не попадешь.

Но делал на более высоком напряжении, с отводами, с кросстабилизацией вполне можно бороться. Все что вы говорите о необходимости повторной стабилизации (зависимость падения напряжения на диодах от вариации нагрузки, дроссель с насыщением как в ATX) - совершенно правильно, для тех мощностей (хотя там кросстабилизация по 5 и 12 вольтам порой вылезает : ) ).

На высоких напряжениях, ака 5 и 12 - это совершенно другое дело. Хотя даже там, как вы правильно заметили, оно "порой вылезает". На 5 и 3.3 - оно будет безобразно.

Здесь же ситуация гораздо проще, тем более, что жрет в основном пятивольтовое питание, по которому и ОС и которое наиболее меняется под действием нагрузки индикатора, нагрузка по 3.3 вольтам на физику Ethernet - вполне постоянна

Нифига она не проще. По 5в каналу нагрузка будет меняться примерно процентов на 90-95, в зависимомти от того, что на индикаторе нарисовано. Да еще и импульсно потреблять, в процессе динамической развертки этого индикатора (порождая переходные процессы в преобразователи). Это, как раз - самый "ахтунг".

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

Я могу вам расказать страшную историю, как у меня сетевой преобразователь на TOP-switch, оказался полностью не работоспособен, из-за программной динамической развертки на нещастных 8шт семисегментных индикаторах, не смотря на то, что они потребляли "всего-то" процентов 50 общего потребления прибора, а все остальное - практически константа. Там микропроцессорная система была с аналоговщиной, +5в - для "цифири" - основной потребитель (и по нему обратная связь, на TL431), +-15в - для аналоговой части, с отдельными стабилизаторами на 7815/7915, и еще изолированный канал +5в (для опторазвязанного интерфейса), со своей 78L05. Как это не смешно, но единственное, как можно было заставить эту хрень более-мене заработать - это прицепить на 5в - мощный резистор на 20 Ом, и уменьшить ток индикатора, почти до предела (нормально видно, но заказчик наивно спросил "а нельзя ли поярче" :) ). Иначе: "8.8.8.8. " на индикаторе - и процессор повис. А влепишь электролит по +5в - преобразователь запустится не может (запасенная в служебном конденсаторе энергия заканчивается раньше, чем зарядится выходной электролит, засветится оптрон, и начнет поступать питание со служебной обмотки, преобразователь уходит в шотдаун, за это время выходной электролит успевает разряжаться, и так до бесконечности). Увеличшь служебный электролит - еще больше испортится переходный процесс, и придется еще сильнее увеличивать выходной (и этот процесс бесконечен).

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

(тут скорее всего КПД будет зависеть от правильной трассировки платы, правильного выбора индуктивности и обмазыванию преобразователя годной керамикой).

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

 

Управлять пьезоизлучателем проще всего с помощью индуктивности и ключа. Индуктивность к питанию, ключ к земле, а-ля буст без диода, прямо к ключу - пищалку. Расчётом дросселя можно добиться неплохого визга. Правда, здесь громкость будет зависеть от частоты, но для сигнализаций монотональных - вполне сойдет. Идея успешно применялась в наручных часах, тамагочи, и прочих гениях китайской мысли. Кстати, по этой же топологии некоторые умельцы реализовывали класс Е раскачки электрострикционного излучателя.

Забавная идея. Голь на выдумку ... Но скорее всего проблемма будет в том, что очень острый резонанс - т.е. только на 1 частоту, как вы и сказали. Вариант со свободным вентилем ADM202 - он хорошо работает в достаточно широком диапазоне частот, и получается обычно совсем "на халяву" .

 

P.S. Что именно от силабов еще глючило, кроме POE? Ибо сам не очень юзаю их продукцию, активно - только USB-мосты, с ними проблем нет.

Я "хлебнул" только с POE. (похоже что ключевой транзистор на 100в, "на борту" - там сделан "на пределе технологии", или параметры даже хуже завленных. Одно неверное движение - и все вынесло, похоже что по напряжению, хотя если верить осцилу - снубер все ограничивал "с запасом") У знакомых глючил какой-то из Ethernet - контроллеров, причем глючил редко и труднообяснимо. Кончилось тем, что от него тоже отказались и перешли ЕМНИП на micrel. Краем уха слышал, что флеши у них еще где-то есть "кривые" (самостираются без видимых причин). Изменено пользователем dr.Nimnul
Ссылка на комментарий
Поделиться на другие сайты

вполне достойная идея. Я как-то упустил из виду специализированные микрухи для управления светодиодами.

 

 Просто ради информации - использовал микрухи типа PCA9532 и урезанный четырехбитный PCA9533. Хотя у них нет стабилизации тока - на борту готовый ШИМ, иногда экономит таймер. Частота может меняться, так что пищать от этой микрухи вполне себе можно. И вообще у NXP много забавной продукции, все и не перепробуешь. :)

 

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

Ну это на усмотрение топикстартера. Это мы с вами на преобразователях "собаку съели", хотя с помощью, думаю, осилит сию задачу. :) Но я имел в виду именно микруху управления РоЕ - не доводилось мне сие ваять пока, хотя вы правы - там не должно быть ничего особо сложного. Даже в доме пока что нет ни одного РоЕ-свича, от которого можно было бы запитаться.

 

Я могу вам расказать страшную историю, как у меня сетевой преобразователь на TOP-switch, оказался полностью не работоспособен, из-за программной динамической развертки на нещастных 8шт семисегментных индикаторах

Прохладная история, тем более учитывая "капризность" и несколько обманчивую простоту TOP-switch. Хотя у меня опыт скорее положительный по работе с ними, проблемы запуска приходилось отдебаживать пару раз.

 

NCL30000 - хорошая вещь, только, жаль, на ней нельзя заделать преобразователи, питаемые напряжением ниже 12V, не стартует по даташиту, и эту защиту никак не обойдешь. Но здесь это и не нужно.

 

И таки да, к Alan'у - ждем твоего решения как виновника торжества. :)

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

  • 2 недели спустя...

Ох, сколько комментариев получил во время отпуска.... О____о
Хорошо, постараюсь ответить по порядку. Итак:
 

Изложу некоторые свои мысли по сабжу:
1а) индикация: (Программная развертка)

Соглашусь. Реализация будет полностью программной, и БЕЗ дополнительного сопроцессора. Как раз индикация будет выполняться с наивысшим приоритетом (за исключением звука), но тот будет отъедать (по прикидкам) не более 1-2us (мкс), а развёртка планируется в 1kHz (тактирование), 125Hz вертикальная.
И выводиться будет построчно.

Тем более, если это 8-битная атмега, там и так быстродействие не запредельное.

Опять же, Вы абсолютно правы, спасибо. Но в данном случае, будет применяться тактовый генератор на 18.432MHz, что для данной задачи довольно быстро.
Кстати, точное время выполнения процедуры (точнее, положение относительно других довольно "шустрых", ещё не решено).
Опять же, процедура вывода звука занимает порядка 100-130 тактов. Там идёт несколько проверок, идёт ли воспроизведение, есть ли ещё данные в буфере, обработка ссылок и вывод нового байта. Да, будет ЦАП (R-2R). Насчёт того, какой у меня динамик... пока вопрос. Мне кажется, это пьезоизлучатель.. Могу ошибаться в настоящий момент. Проверю чуть позже.

1б) индикация: следует помнить, что импульсный ток светодиода - не безграничен

Никаких возражений!
Кстати, из следующего поста, вижу мануал.... (у меня он открылся вообще БЕЗ пояснительных надписей, видимо нет шрифтов в Ubuntu) но по результатам домашней проверки, суммарный ток на линию для достаточной яркости индикатора - это 10-15mA на точку, что для индикации 8-ми точек доходит до 80-120mA, для 80-ти (ВСЕ точки в линии) - 800-1200mA.
[datasheet]
В моём случае, это индикаторы Ultra Red (тип соединения - неизвестен, т.к. одна линия соединяет аноды, а другая - катоды... вот и угадывай) 660/625 (длинна волны) 1.8/2.0 (V) 20/20 (mA) 25/30 (min) 30/35 (max) Lumen (Яркость).
Примерно так.
[/datasheet]
Кстати, второй datasheet от KB, идёт на чуть бОльший индикатор, потому он не совсем подходит. И там рекомендуют уже 30mA средний ток и до 185mA импульсный.... многовато. Источник питания меня просто пошлёт ^_^''

Выводить, напомню, собираюсь горизонтально. Вертикальная индикация требует слишком большой скважности, или большего количества процессорного времени. В качестве драйверов строк будут выходить IRLML2402 (держат ток до 2A), а столбцами управлять будут сами 74HC595 (и ограничительные резисторы на 150 Ом).

1в) индикация: как показывает практика, матричные индикаторы - нужны далеко не всегда.

Что поделать, у нас чаще будет отображаться текст. Причём, где угодно.
Но мысль использовать сегментники, была.

1г) индикация: Внешняя SRAM.

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

2) Пищалка

Ох, молю, не напоминайте.. =)
И так голова кругом. В том числе, по работе в настоящий момент. Так что.. звук пока что на второй план.. Вместе с термометром, а он там будет О_о

3) питание

Над питанием пока тоже думаем. На самом Ethernet модуле, есть две свободных пары выводов. На них можно спокойно подпаяться и брать от туда питание. Насчёт уровня напряжения пока вопрос.. Модуль, который есть (готовый), не любит напряжений выше 35V на входе, что для POE является проблемой, ибо 48V. Придётся городить огород в начале. Но это чуть позже. В начале нужно собрать библиотеки в один проект и хотя бы доделать макетку.
Насчёт развязки питания - хороший пинок.. Задумаюсь.
ЗЫ: Те модули POE, что присутствуют у нас, являются довольно дубовыми (пара розеток + разъём для питания) - чуть позже выложу фото. Так что, с наличинем 48V проблем не возникнет. Придётся городить огород из развязки и понижающего преобразователя до приемлемых величин.. Вероятно, буду сбрасывать до 48->5V, а далее - 5->3.3V.

Опять же, благодарю за описание возможных грабель с ФНЧ для моего варианта "стабилизатора". Сам прекрасно понимаю, что это было довольно некрасиво придумано. Опять же, на нём можно собрать довольно простой импульсник... разве что, другой MOSFET выбрать, т.к. данные не выживут при питании >=30V.
 

4)Ну, про RTC - тут у нас уже был большой разговор.

Не укажете адреса разговора? :)
 

5) не очень понятно, за каким лешим вам в таком контроллере сдалась ОС ?
Какие функции она будет там выполнять (кроме потребления системных ресурсов, и организации глюков :) ) ?
Пишешь все "с нуля", с обращением прямо "к железу", и радушься жизни :).

Собственно, была мысль использовать ту самую FreeRTOS (опять же, познакомиться с оной и попробовать на вкус), но после прикидок требований к ресурсам.... отказался, в общем. На 22kHz не вытянет.
 

6)А какие такие ресурсы у вас будет потреблять RS232, чтобы его выключать ?

Если включена отладка, то в некоторых местах кода можно выводить отладочные сообщения (типа вывода мини-дампа пакета, уведомлений, и прочего). Если отладка выключена (не инициализировалась), то будет проходить проверка типа:
if (debug==1) {
<Вывод сообщения>
};
Собственно, в случае отсутствия отладки, даже не будет тратиться времени на передачу данных. Опять же, реализация обмена USART требует синхронности (отключаем прерывания и долго молотим строку символов, отправляя её через аппаратный порт наружу).

2 Raymond:
 

Об организации периферии. Для управления светодиодами рекомендую MBI5026, узнал о драйвере по проекту LightPack в свое время, использовал в нескольких проектах. По-сути, тот же сдвиговый регистр со стабилизацией тока.

Нашёл MBI5026 у себя в городе. 54.26р за 16 каналов... При этом, 74HC595 всего 7.90 р за 8 каналов.
Бюджет проекта мал.. потому выбор идёт на более простой чип.
Опять же, никто не запрещает мне использовать дополнительный PWM-генератор со стороны MCU (есть ещё один свободный таймер, а со стороны регистров есть вывод управления; всё вполне приемлемо).

Клавиатура не требуется, управление по сети, да и настройки сети меняться не должны. Потому ничего сложного не будет. Если что - запишу конфигурацию в EEPROM и буду инициализировать всё из памяти.

Но, я так понял, Alan хотел упростить задачу и просто использовать свободные жилы кабеля и питать устройство просто по линии от своего источника (сделать врезку-переходник в сеть чтобы подключиться к жилам - совсем просто же). Хотя это далеко не самый красивый вариант, да и стандартизация - всегда плюс.

Yep! Именно так и собирался делать. Теперь подумаю о вариантах. Возможно, постараюсь сделать более красиво и с развязкой и более прямым POE.
 

А вот это

>> Пишешь все "с нуля", с обращением прямо "к железу", и радушься жизни

В рамочку и на стенку. :)

Да, порадовало. Так и пишу, иначе не хватает тактовой. Чтобы всё работало на RTOS, пришлось бы задирать частоту выше 60MHz... и это очень печально. А так - 1kHz прерывания (большая часть - SysTick(), остальные по необходимости) при 18.432MHz - это довольно мало.


Итак, опишу кратко по питанию:
Всё, конечно, под вопросом. Буду стараться найти более удачное решение с нормальной гальванической развязкой, но это для меня пока сложновато, плюс детали могут оказаться достаточно дефицитными, а намоточного медного провода в городе днём с огнём не сыскать. Уже успел оббежать ВСЕ известные мне магазины - ничего. Есть только обычный монтажный, но на нём ухи, что называется, не сваришь - трансформатор намотать будет крайне проблемно.
Итак, ищу: преобразователь POE с гальванической развязкой (50+V -> 5V @3~4A), то есть, с допуском до 15~20W.
Преобразовывать напряжение для модуля Ethernet буду с 5V, т.к. при этом не потребуется дополнительный "качественный" преобразователь POE->3.3V @0.25A.

Звук: Будет ЦАП, и не обсуждается xD
Да, хочу там воспроизвести Nyan-Cat (ну да, такая мелкая замашка). Так что, вопрос с адекватным звуком - актуален.

Индикация - динамическая, строчная. Вывод синхронный, без регулировки яркости (либо с ней, но довольно простой - PWM).

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

Кстати, неожиданно обнаружил в своём магазине позитивный(!) фоторезист. Разве что обозвали они его "Фотопечатный лак".



Как и обесчал, нашёл картинку: Производитель PoE модуля. Да, конечно, фирма на букву "D". Но что контора закупает, тем и богаты. ::blush

Изменено пользователем Alan
Ссылка на комментарий
Поделиться на другие сайты

Возникла довольно неплохая (лично на мой взгляд) идея - использовать часть ATX блока питания (конкретно, переделанный источник дежурного напряжения 5B USB), немного его модифицировав (ну и собрав плату с нуля).

По идее, должен оставаться работоспособным при пониженном напряжении (40-50V, что удовлетворяет условиям PoE), но вероятно, придётся менять транзистор, а так же, пересчитывать трансформатор. Изначально напряжение на выходе 5V с током до 2А (под потолок), что мало, потому нужно переделывать.

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

Возникла довольно неплохая (лично на мой взгляд) идея - использовать часть ATX блока питания (конкретно, переделанный источник дежурного напряжения 5B USB), немного его модифицировав (ну и собрав плату с нуля).

По идее, должен оставаться работоспособным при пониженном напряжении (40-50V, что удовлетворяет условиям PoE), но вероятно, придётся менять транзистор, а так же, пересчитывать трансформатор. Изначально напряжение на выходе 5V с током до 2А (под потолок), что мало, потому нужно переделывать.

 

ИМХО, Идея абсолютно бесполезная. После такой переделки - от исходной схемы - ничего не останется :). Заводится от 40-50V - такой источник совершенно не обязан. Ибо если он удовлетворяет стандарту 80-265 VAC - то при 80в переменки, на коненсаторах будет около 110в постоянки (огромный конденсатор, рассчитанный на мощность несколько сот ватт, режим близкий к холостому ходу, т.е. заряд практически до амплитудного значения), да и не всегда при работе в "дежурном" режиме - обеспечивается полный выходной ток (а как только источник включается - активный PFC - разгонит напряжение на конденсаторах, до 400в, даже если на входе 80-переменки) так что даже готовый трансформатор использовать скорее всего не получится (надо перематывать первичку, причем бОльшим сечением, а она там обычно в самом низу, подо всеми остальными обмотками...). Только что сердечник от него взять, но они частенько бывают хорошо склеены эпоксидкой, да еще и в лак окунуты - не всегда и размотаешь. Кроме того, если это автогенератор (обычно в старых и дешевых источниках) - то штука ОЧЕНЬ капризная, и чего-то менять в схеме - себе дороже, а если на если используется какая-то микруха управления (более новые и более дорогие источники), то она может оказаться во первых: очень экзотической - у вас будет 1 экземпляр (выдранный из конкретного источника), спалишь - и все можно начинать с начала( с новой схемой и с новой микросхемой, ога...), да и тиражировать потом, даже в 2-3 экземплярах - будет проблемматично, во вторых: в современных источниках, эти микрухи очень жестко оптимизированы под микропотребление в режиме холостого хода (новые веяния моды, однако уже включенные в стандарт, чтобы компы в дежурном режиме елепстричества не потребляли, блин), что может породить довольно много неприятных сюрпризов, вроде очень маломощного драйвера затвора (попытка поставить полевик "потолще" - приведет к фейлу), либо вообще встроенного ключа (а он на 700в и 5 Ом Rds_on.... упс), да и автоматика перевода в режимы с "прерывистой" генерацией - может доставить гемор при наладке (в каждой микрсхеме производители "намудрили" по своему, и разбираться как это запретить - нет никакого желания).

Собственно схема преобразователя которую я привел - это и есть ровно тоже самое :) - вспомогательный источник, от большой силовой платы, с питанием от сети 80-265в, и с активным PFC на входе. В исходном виде запускается от 60в, правда несколько секунд (долго заряжается C30, через высокоомную "гирлянду" R7-10, рассчитанную на значительно бОльшие напряжения), слишком высокоомен ключ. Если делать на 48в, то:

1) "гирлянду" R7-10 - сокращаем до 1 резистора на 51к (желательно 1206)

2) "гирлянду" R12-14 - сокращаем до 1 резистора на 200к (желательно 1206)

3) Транзистор подбираем на 150-200в, и что-нибудь вроде 0.06-0.2 Ом, в открытом состоянии.

4) Шунт (R23, R24) уменьшаем до 0.05 Ом.

5) R21 - 27к

6)Диоды VD8, VD9 - оставляем один из 2, ибо избыточно.

7) VD5- последоватльно с питанием - можно выкинуть (закоротить), ибо он нужен для снижения тока потребления, пока C30 заряжается мизерным током, что для таких входных напряжений - не столь критично, правда учитывая что он в одном корпусе с диодом плавного запуска (который полезен) - можно и оставить.

8) трансформатор: ETD29 N87, с зазором 0.2мм на обоих "половинках" (суммарный зазор 0.4мм) (B66358G0200X187- сердечник, B66359W1013T001,

B66359A1013T001, B66359B1013T001 - Каркас горизонтальный, B66359S200X000 -Скоба) Первичка - 20 витков, d=0.4мм*6, вторичка на 5в - 2 витка, в 2 пучка (каждый на свой диод), по 8 проводов d=0.4мм в каждом, если вторичка на 12в - то 5-6 витков(и R27 - пересчитать естественно) , служебка - 8 витков d=0.4мм - в один провод. Мотать именно в таком порядке (первичка, вторичка (2 шт, друг над другом), служебка). В качестве межслойной изоляции, для кустарного исполнения - неплохо подойдет строительный бумажный скотч, шириной 20мм (между обмотками - по 4-5 слоев, межслойная , в пределах одной обмотки - по 1-2 слоя).

9)C16, С17 - высоковольтная керамика (на 1600в - минимум)

С15, С88 - пленочные С15 - на 250в (лучше - на 400), с88 - на 160в впрочем С88, еще должен быть задублирован электролитом, и он может быть и керамическим X7R, на 100в и более емкость - чем больше тем лучше (в разумных пределах), например чип 1206, на 1мкф, 100в - прекрасно подойдет.

10) С23-С27 - может хватить и 3шт, если места сильно жалко и не ставьте их "вплотную" по напряжению, для 5в выходного имеет смысл взять их на 16в, а для 12 - 1500-1000мкф на 25в. Выходной фильтр (L6, С28,29) - по желанию (для чистого питания), в качестве L6 - можно взять ферритовую бусинку с 1-2 витками, или готовое колечко из "раcпыленного железа", от паленой материнки, главное - толстым проводом, чтобы не было падения напряжения.

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

Вообще, по питанию, думается мне, имеет смысл сделать 2 неизолирующих Step-Down преобразователя (схему тут я уже давал, и с комментариями), с небольшого, не очень хорошо стабилизированного, напряжения (типа 12в), от негоже запитать и звук (там 5в-маловато будет). Временно работать от подключенного сетевого адаптера на 12в. А потом добавить модуль PoE, с изолирующим флаем на 48-->12в, можно через "диодное смешение" с сетевым адаптером (венее диод нужен только адаптеру, онже "противодуриковый", описанный флай - прекрасно выдержит включение стороннего источника "в лоб", у него и так выпрямительный диод имеется).

 

, а намоточного медного провода в городе днём с огнём не сыскать. Уже успел оббежать ВСЕ известные мне магазины - ничего. Есть только обычный монтажный, но на нём ухи, что называется, не сваришь - трансформатор намотать будет крайне проблемно.

Печально. Советую поискать по свалкам, выброшенные электромагнитные пускатели, реле, или другую электротехнику с большими НЕ ПРОПИТАННЫМИ (их хрен размотаешь) катушками.

В сетевых пускателях, эмальпровод как раз вроде того что вам нужен 0.3-0.5мм, его много (одного пускателя хватит на несколько трансформаторов) и они обычно не залиты и не пропитаны. Смотрите только чтобы совсем в луже не валялся долго (обычно это видно по степени коррозии металлических деталей) - испортится провод.

Либо еще можно мотать проводом МГТФ, во фторопластовой изоляции, правда он сильно дорогой, если его покупать, но быват большие запасы с советских времен. Если на ETD29 - то трансформатор достаточно свободный - должно влезть, хотя изоляция там и толще. Мотать проводом в ПВХ изоляции - точно не стоит, т.к. из-за толстой изоляции - вам придется сильно уменьшить сечение меди, а это нагрев. ПВХ - совершенно не термостоек. Изоляция "поплывет", (особенно внутри катушки, вы и не увидите, пока не размотаете) - и здравствуй межвитковое КЗ. Проходил я уже через это.

Впрочем поищете другие фирмы. Часто ферритами и намоточным проводом торгуют совершенно другие конторы. Не те что продают радиодетали.

 

Звук: Будет ЦАП, и не обсуждается xD

Да, хочу там воспроизвести Nyan-Cat (ну да, такая мелкая замашка). Так что, вопрос с адекватным звуком - актуален.

Да бога ради. Только тогда лучше не парится с пьезиками (очень убогая АЧХ, с острым резонансом, с которрым почти невозможно бороться), и поставить нормальный динамик. Если у вас большой IT-отдел - можно из старого корпуса выломать PC-speaker, там (за исключением самых современных) обычно вполне приличный 0.25Вт электромагнитный громкоговоритель. Раскачать его от +12в, посредством любого доступного операционника, "надставленного" комплементарной парой биполярных транзисторов, (второй конец - на емкостную среднюю точку питания). Либо использовать готовую микросхему аудиоусилителя, вроде 174УН14 (тысячи их). И не забудьте, перед усилителем - отсекающий постоянный уровень конденсатор.

По индикации:

Как я понял, планируется только 10 индикаторов, в одну строку, с организацией в матрицу 8х80 светодиодов (точек) ?

 

Вывод синхронный, без регулировки яркости (либо с ней, но довольно простой - PWM).

Если хотите использовать вход OE 74HC595 - не забывайте, что это надо делать ТЕМЖЕ таймером, который генерирует прерывание для загрузки очередной строки из видеобуфера. И никак иначе. Чтобы было строго синхронно со сменой сюжета.

 

В качестве драйверов строк будут выходить IRLML2402 (держат ток до 2A), а столбцами управлять будут сами 74HC595 (и ограничительные резисторы на 150 Ом).

Ну IRLML2402, на 800-1200ма, да еще и 1/8-ю времени - в принципе пройдут.

Хотя, падение на нем будет заметным (у него 0.25Ом) и эффект понижения яркости отдельной точки, при включении строки целиком - наблюдаться явно будет будет, что не очень красиво. (0.25Ом при токе в 1А -0.25в, что даст изменение тока около 8-10%, это хорошо заметно, особенно если сюжет динамически меняется).

А вот выходной ток 74HC595 - 6мА на ногу. А вам надо 80-120. УПС... так что "надставляйте" транзисторами. Хотябы биполярными, в режиме повторителя (хотя это и не лучший вариант). Либо на столбцы - 2N7002, в режиме ключа (один из самых дешевых, и доступных полевиков, тут вполне подходит) с резисторами примерно на 30 Ом. Их правда 80 шт надо ... ой, ё-ё.... Но такова жизнь. Если использовать 2N7002, в режиме ключа - то они будут замыкать "к земле", следовательно матрицу придется реорганизовать "катодами к столбцам", а на строки поставить 8 мощных ключей (заметно менее 0.1Ом), P-канальных (ибо придется подключать к +5в) лучше всего сдвоенных в SOIC-8, и управлять ими или напрямую с контроллера, или (для экономии ног) - с дешифратора 74HC138.

Не забывайте, что если точка в столбце горит 1/8-ю времени - то ей и ток надо в 8 раз больше, чем для свечения постоянным током. Правда это не совсем справедливо, дело в том, что глаз субьективно воспринимает короткие вспышки высокой яркости - несколько более яркими, нежели непрерывное свечение с сохранением среднего значения, но тут запас очень небольшой, да и компенсируется он отчасти неленейностью люкс-амперной характеристики светодиода (светодиод 80ма - светится МЕНЕЕ чем в 8 раз ярче, нежели 10ма, ибо КПД на высоких токах падает), так что в первом приближении - следует считать именно так: импульсный ток - в 8 раз больше среднего, необходимого для комфортной яркости.

 

Кстати, второй datasheet от KB, идёт на чуть бОльший индикатор, потому он не совсем подходит. И там рекомендуют уже 30mA средний ток и до 185mA импульсный.... многовато.

Я это приводил просто к тому, что нельзя бесконечно увеличивать скважность. Если даже у такого большого индикатора - максимальный импульсный ток - до 185мА, то у вашего - маленького, да еще и китайского - он еще меньше, и загонять в него стопиццот ампер, пускай даже очень малое время, (не превышая среднего значения) - низзя.

 

Соглашусь. Реализация будет полностью программной, и БЕЗ дополнительного сопроцессора. Как раз индикация будет выполняться с наивысшим приоритетом (за исключением звука), но тот будет отъедать (по прикидкам) не более 1-2us (мкс)

Лично я, в свое время, решал почти аналогичную задачу, и на этом как раз пролетел. Процессор был 80C188XL (86-х совместимая система команд) тактовая - 20Мгц. Индикация - 8шт семисегментных индикаторов (матрицей 8х8 светодиодов). Ну, до кучи, еще прием комманд (эпизодически), по RS232, от управляющего компа, (но для мерцания индикатора хватало и без него). Параллельно вывод аналогового сигнала на ЦАП (это не звук, но требования по частоте квантования, полосе, джиттеру - примерно такиеже), сигнал получался из паттернов записанных в ПЗУ, либо напрямую, либо сложением 2 паттернов, вывод по прерыванию от таймера. Вобщем ничего сложного. Единственное что несколько усложняло задачу - это необходимость плавного масштабирования по частоте выходного сигнала, что осуществалялось плавной перестройкой частоты таймера, генерирующего прерывания для вывода в ЦАП. Это делало практически невозможным строгую синхронизацию с индикацией.

Получалось, что проц вобщемто и не загружен (он дастаточно мощный), но если в момент прихода преывания вывода на индикацию - он находится в обработчике вывода в ЦАП - то прерывание ждет, и предидущий квант индикации - удлинняется (на матрице горит строка которая должна бы уже сменится следующей), а последующий - укорачивается на туже величину. Это приводило к очень заметному мерцанию индикатора, похожему на мерцание не очень исправной люминисцентной лампы. Вроде волн по нему пробегающих. В виду полной несинхронности - характер мерцания затейливым образом менялся при перестройки частоты сигнала, а уж если влезал RS232 - вообще получалась "цветомузыка". Причем время загрузки ЦАП-а - по всем прикидкам тоже составляло менее 1%, от длительности такта индикации. Если разрешить вложенные прерывания, и задать индикации высший преоритет чтобы индикация могла "влезать" посреди перезагрузки ЦАП-а - мерцание почти исчезало, но появлялся заметный "джиттер" в выходном сигнале (что было абсолютно неприемлемо).

Спастись сумели только сделав вывод на индикацию синхронным с выводом в ЦАП, но до кучи, пришлось еще делать обработчик прерывания таким образом, чтобы все ветки всех ветвлений - выполнялись равное время, те чтобы процедура перегрузки ЦАП-а всегда занимала константное время (там счетчики тиков были и выборы из каких патернов брать данные), и после него начиналась процедура вывода на индикацию, тоже со своими счетчиками тиков (ибо не каждый тик надо менять, и еще привязывать к-т пересчета к изменяющейся частоте сигнала), тоже выровненными по времени... Вобщем победили конечно (почти, когда вклинивался RS232 - оно все равно помигивало, правда эпизодически, но на это уже все забили), но на$$$$$$$сь - "по самое не балуйся".

У вас конечно 1-2мкс, - это 0.1-0.2% от кванта индикации, да и чуть снизить частоту развертки можно, и у атмеги - есть приятная особенность - у не все комманды по 2 такта, и вход-выход в прерывание - быстрый. Вобщем думайте сами. Минздрав вас предупредил.

Изменено пользователем dr.Nimnul
Ссылка на комментарий
Поделиться на другие сайты

Благодарствую :) Будем читать.

 

upd: Почитал. Особо ничего нового, откровенно не нашёл, но и на том спасибо :)

Опять же, относительно недавно взялся за ту же DS1307, прикупил первые попавшиеся (самые дешёвые) "часовые" кварцы (если не ошибаюсь, эти) и они завелись с первой попытки, так что... Честное слово, ничего не делал, оно само ^_^

 

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

Да, таки повторюсь: Индикация будет 8*160 точек, то есть, 20 индикаторов 8*8.

 

Возникла довольно неплохая (лично на мой взгляд) идея - использовать часть ATX блока питания (конкретно, переделанный источник дежурного напряжения 5B USB), немного его модифицировав (ну и собрав плату с нуля).

По идее, должен оставаться работоспособным при пониженном напряжении (40-50V, что удовлетворяет условиям PoE), но вероятно, придётся менять транзистор, а так же, пересчитывать трансформатор. Изначально напряжение на выходе 5V с током до 2А (под потолок), что мало, потому нужно переделывать.

ИМХО, Идея абсолютно бесполезная.

<...>

Благодарю за пояснение. Жаль, что идея оказалась довольно... неподходящей. Жаль. А есть несколько старых ATX БП.

 

Собственно схема преобразователя которую я привел - это и есть ровно тоже самое :)

Попробуем собрать.

А вот идея с двойным преобразованием хороша:

48V -> 12V
        | 12V -> 5V
        | 12V -> 3.3V
Самый крупный Омский магазин говорит, что у них вообще нет подобных трансформаторов (как и вообще чего-то похожего). Итак, привет, намотка, и поиски медной проволоки! ^_^

[offtop]А кое-кто так надеялся этого избежать, да..[/offtop]

По индикации:

Как я понял, планируется только 10 индикаторов, в одну строку, с организацией в матрицу 8х80 светодиодов (точек) ?

Если хотите использовать вход OE 74HC595 - не забывайте, что это надо делать ТЕМЖЕ таймером, который генерирует прерывание для загрузки очередной строки из видеобуфера. И никак иначе. Чтобы было строго синхронно со сменой сюжета.

Ответил выше: 20х1 (итого, 160*8px)

По динамике индикации, конкретно для данных чипов-регистров, планирую использовать не только вывод ~OE, но так же Latch, который будет стробом пропускать данные из первого ряда регистра на выходные регистры. Фактически, эти микросхемы - гибрид сдвигового регистра и параллельного регистра-защёлки.

Данные проталкиваются в последовательный порт D0, выходя через Q7S, а по стробу на Latch, они попадают на выходы Q0-Q7, то есть, заменить состояние ВСЕХ 168 минов (в том числе, вертикальной защёлки) можно за 1 такт. Это оказалось очень удобно (не то, что в предыдущем проекте часов, где приходилось для смены "изображения" гасить индикацию полностью).

Datasheet, страницы 2-3 - схема микросхемы.

Код функций пока не приведу - они ещё дописываются. Хотя, основа такова:

void LED_Sync(void) {
	// Заготовка
	LED_PORT |= (1<<LED_OE);			// Переводим выходы всех регистров в Z-состояние
	LED_PORT |= (1<<LED_LATCH);			// Защёлкиваем данные
	LED_PORT &= ~(1<<LED_LATCH);			// Хватит защёлкивать. Опускаем пин.
	LED_PORT &= ~(1<<LED_OE);			// Разрешаем выводам работать. Возможно предосторожность изляшняя.
};
void LED_NextLine(void) {
	LED_PORT &= ~(1<<LED_DATA);			// Опускаем пин данных.
	LED_PORT |= (1<<LED_C_V);			// Проталкиваем бит в вертикальный регистр
 	LED_PORT &= ~(1<<LED_C_V);			// ОДИН раз.
	// Синхронизировать не нужно. Это должно делаться в процедуре вывода строки!
	CurrLine++;
	CurrLine &= 0x07;
};

void LED_PushBits(unsigned char DataByte, unsigned char Bits) {
	while (Bits > 0)				// Для оставшихся битов
	{
		Bits--;					// Отсчитываем 1 колонку
		if (DataByte & 0x80)			// Если старший бит = 1 (после сдвигов)
		{
			LED_PORT |= (1<<LED_DATA);	// Поднимаем пин "Data"
		} else {
			LED_PORT &= ~(1<<LED_DATA);	// Иначе - опускаем его
		};
		LED_PORT |= (1<<LED_C_H);		// И дёргаем такт для горизонтальной синхронизации
		LED_PORT &= ~(1<<LED_C_H);		// Проталкиваем 1 бит в горизонтальные регистры.
		DataByte <<= 1;				// Сдвигаем оставшиеся биты влево на 1.
	};						// Повторяем, пока не закончатся колонки.
};
void LED_DrawChar(uint8_t CharN, uint8_t LineNum, uint8_t SkipCols, uint8_t ShowCols)
{
	unsigned char temp = 0;
	unsigned char cols;
	cols = ShowCols;
	if (CharN == 168) {
		temp = pgm_read_byte(&CharsRu[65][LineNum]);
	};
	if (CharN == 184) {
		temp = pgm_read_byte(&CharsRu[66][LineNum]);
	};
	if (CharN > 191) {
		temp = pgm_read_byte(&CharsRu[CharN-192][LineNum]);
	};
	if ((CharN > 32)|(CharN <= 126)) {
		temp = pgm_read_byte(&Chars[CharN-32][LineNum]);
	};

	// Экономия RAM. Было бы быстрее из памяти, но так всего +1 такт (формально, 1 такт.... вероятно, больше).
	while (SkipCols > 0)
	{
		SkipCols--;					// Вычитаем 1
		temp <<= 1;					// Сдвигаем байт влево.
		cols--;						// Уменьшаем количество колонок, которые нужно вывести.
	};
	LED_PushBits(temp, cols);				// Оставшееся выводим на экран
};

В процессе написания:
void LED_DrawString(void)
{
	if (CurrLine==0)
	{
		// Что-то
	} else {
		// Что-то другое....
	};
	LED_NextLine();
	// Всё остальное, если что-то будет здесь.
	
};

Ну IRLML2402, на 800-1200ма, да еще и 1/8-ю времени - в принципе пройдут.

Хотя, падение на нем будет заметным (у него 0.25Ом) и эффект понижения яркости отдельной точки, при включении строки целиком - наблюдаться явно будет будет, что не очень красиво. (0.25Ом при токе в 1А -0.25в, что даст изменение тока около 8-10%, это хорошо заметно, особенно если сюжет динамически меняется).

Да, догадываюсь, но будем надеяться, что тока будет достаточно, чтобы они не сильно мерцали.

Откровенно, у меня несколько бОльшие опасения насчёт самих дорожек. Дорожки получатся порядка 25-30см длинной, что уже не очень хорошо, т.к. строковые будут силовыми. Думаю сделать несколько параллельных "КЗ" прямо поверх дорожки несколькими отрезками провода - возможно, удастся уменьшить индукцию и сопротивление. Ставить конденсаторы категорически нельзя. А вот конденсаторы в цепях питания будут - гарантировано. Думаю о керамических SMD в настоящий момент. Конечно, 0.47uF + 10uF возле каждой 3-4 микросхемы.

А вот выходной ток 74HC595 - 6мА на ногу. А вам надо 80-120. УПС...

Задумывался.

Datasheet говорит (страница 6) о допустимом токе до +- 35mA на ногу. При этом страница 9 просит ограничить суммарный ток на уровне 80mA (10mA на ногу).

Пока не пытался запустить динамическую индикацию (да, даже тестовая плата индикации пока что не сделана), потому не могу судить, достаточно ли будет импульсного тока в 10mA для индикатора при скважности в 1/8. Возможно, разгоню выше.

Питание логики будет на уровне 5V. Гасящие резисторы думаю поставить на 100 Ом (потом уточню на месте).

 

Лично я, в свое время, решал почти аналогичную задачу, и на этом как раз пролетел. Процессор был 80C188XL (86-х совместимая система команд) тактовая - 20Мгц. Индикация - 8шт семисегментных индикаторов (матрицей 8х8 светодиодов).

<...>

Да, прекрасно понимаю. К сожалению, в моём случае, прерывания не имеют уровней - все прерывания для MCU одинаково важны, но да, таки они очень шустрые (если обработчик прерывания хорошо сделан, что у компилятора страдает - типичный вход в прерывание - это упаковка 16(!) регистров в стэк, выполнение 10-15 инструкций, распаковка регистров обратно, и наконец-то, выход из него).

Писал как-то на ASM-е более шустрые версии. Думаю переписать потом часть кода вставками... если получится.

С обработчиками как раз и воюю, стараясь выбрать наиболее удобное расположение кода. Допустим, обработку пакета данных от enc28J60 ещё можно приостановить и продолжить (благо, обмен синхронный), а вот индикация - динамическая, да и звук (если включен) требует для себя очень высокой точности. Его прерывания пропускать - ой, как нежелательно. Потому думаю.

Кстати, по поводу этого:

Если такая уж проблемма сделать преобразователь - вот пожалуйста:

4498100m.gif

Крайне печально, но в моём распоряжении нет NCL30000. То есть, в принципе. Заказывать из Default City? Nope. Слишком накладно выйдет для штучного заказа. Хотя, если с намоточной медью.... Изменено пользователем Alan
Ссылка на комментарий
Поделиться на другие сайты

Да, таки повторюсь: Индикация будет 8*160 точек, то есть, 20 индикаторов 8*8.

Тут имеет смысл рассмотреть организацию в 2 ряда, как 16*80 точек (даже если физически они у вас стоят в 1 ряд).

Самый крупный Омский магазин говорит, что у них вообще нет подобных трансформаторов (как и вообще чего-то похожего). Итак, привет, намотка, и поиски медной проволоки! ^_^

[offtop]А кое-кто так надеялся этого избежать, да..[/offtop]

Готовые трансы для импульсных источников - обычно купить ОЧЕНЬ тяжело, даже в крупных городах. В принципе, PULSE, делает похожие вещи, но доставать задолбаешся, да и часто оказывается что нужно "такуюже штуку, только без крыльев ©", потому обычно мотаю сам. В принципе намотать такой трансформатор - ничего сложного, даже руками, без намоточного станка, витков там немного, это вам не 50гц-трансформатор мотать.

У меня где-то полчаса-час уходит (максимум), вместе со всеми изоляциями, рапайкой и зачисткой концов, и т.д.

По динамике индикации, конкретно для данных чипов-регистров, планирую использовать не только вывод ~OE, но так же Latch, который будет стробом пропускать данные из первого ряда регистра на выходные регистры. ....

Ну, рассказывать мне "как работает 74HC595" - не надо :), я ее давно применяю.

Я имел в виду, что если вы по ~OE - собираетесь гнать ШИМ, (от таймера) который будет управлять общей яркостью индикатора, то этот ШИМ должен быть строго синхронен, с разверткой динамической индикации. Т.е. возникло прерывание от таймера, одновременно включилась индикация (на установленное время), сменили строку (по прерыванию от ТОГОЖЕ таймера), таймер отсчитывает длительность горения строки (в соответстви с загруженным в регистр сравнения значением), потом строка гаснет, до следующего тика таймера. Таким образом получаем ШИМ-регулирование яркости, на халяву.

Это оказалось очень удобно (не то, что в предыдущем проекте часов, где приходилось для смены "изображения" гасить индикацию полностью).

Ну здесь тоже, есть заковыка. Дело в том, что строго одновременно сменить строку, и перезащелкнуть значение в выходные регистры 74HC595 - вы все равно не сможете (это как минимум 2 ПОСЛЕДОВАТЕЛЬНЫЕ команды процессора). Потому имеет смысл: записать в регистр строк - нули (погасить все 8(16) строк), затем перезащелкнуть (заранее загруженные) данные в 74HC595, а затем записать в регистр строк значение для включения соотв строки. Все это можно (и нужно) делать последовательными коммандами, без задержек.

Правда можно поступить хитрее: управление выводами строк - тоже запихаь в общую батарею 74HC595 (удлиннив ее на 8(16) бит). Вот тогда смена значений по X и по Y - будет абсолютно одновременной. Заодно и ноги у проца сэкономите.

Кстати еще "фишка" : Не загружайте 74HC595 - побитно ! Это неудобно, тратится довольно много ресурсов проца, на сдвигание и побитное выталкивание. У вас их полюбому достаточно много, чтобы поставить по 8шт-параллельно, выделив под это дело целый порт. Выставляешь байт (целиком, из видеобуфера), дергаешь стробом записи, и одновременно 8регистров захватывают и сдвигают, каждый по 1 битику из этого байта. Потом уже выходы регистров следует "перепутать", так чтобы на 8 следующих друг за другом столбцов матрицы, приходилось по 1 биту от всех 8 сдвиговых регистров.

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

Для организации 16х80 получается 16шт 74HC595, что дает 128 выходов, из них 80 - на столбцовые ключи, 16 - на строчные ключи, и 32 - остаются неиспользованными. На процессоре требуется 10 ног (8 -данные + стрб сдвига + строб параллельной перезаписи).

ИМХО - вполне оптимально.

Откровенно, у меня несколько бОльшие опасения насчёт самих дорожек. Дорожки получатся порядка 25-30см длинной, что уже не очень хорошо, т.к. строковые будут силовыми. Думаю сделать несколько параллельных "КЗ" прямо поверх дорожки несколькими отрезками провода - возможно, удастся уменьшить индукцию и сопротивление.

В принципе, если у вас есть сложности с изготовлением печатных плат, может иметь смысл вообще сделать "модуль индикации" - все светодиодные индикаторы впаять в макетную плату, и спаять луженкой, в тонком (1мм) фторпластовом кембрике (чтобы не зачищать немерянное количество кусочков МГТФ-а). просто отрезаешь длинный кусок проволоки, припиваешь к ножке, надеваешь отмерянный прямо по месту кусочек кембрика, припаиваешь после него (возможно накрутив виток на торчащую из макетки ногу индикатора), надеваешь следующий кембрик, и так до конца матрицы, не отрезая проволоку, потом напаиваешь конец на соединительный штырь, и отрезаешь излишек луженки. В результате получаем "большой индикатор", (с относительно малым числом выводов), который можно использовать и в макетах, а потом и в готовом устройстве (имеет смысл сразу паять аккуратно, "начисто"). Это может оказаться проще чем делать двусторннюю плату достаточно большого размера, по ЛУТ, и сверлить в ней 320 с лишним отверстий.

А вот конденсаторы в цепях питания будут - гарантировано. Думаю о керамических SMD в настоящий момент.

Конечно, 0.47uF + 10uF возле каждой 3-4 микросхемы.

вообще сейчас уже нет нужды ставить электролиты, и тем более к каждой микросхеме (а вот керамика - обязательна !), сейчас легкодоступны керамические чипы, большой емкости. В принципе, по 0.47uF, возле каждого корпуса - более чем достаточно (при наличии сосредоточенной большой емкости), только следите, чтобы эти конденсаторы были X7R или X5R, ибо конденсаторы Y5V и Z5U - обладают крайне фиговыми частотными свойствами, и высоким внутренним сопротивлением. Увеличение допустимого напряжения - тоже способствует снижению внутреннего сопротивления и индуктивности (конденсатор на 16в - лучше чем на 10в). Либо вообще, поставьте к каждому корпусу, по несколько микрофарад керамики X7R - и не парьтесь. Я например, применяю 1206 X5R 25в 10uF, - как сосредоточенную емкость (по несколько штук, нпример по 1 в начале каждого ряда, и 3-4 - по выходу источника питания), и к каждому корпусу - по 0.33-2.2uF и электролитов часто вообще не ставлю.

А задавить низкочастотную пульсацию, от переключения строк индикатора (например если одна строка горит целиком, а другая - погашена) - так все равно будет очень трудно, ибо токи вытекают из одних микросхем (или транзисторов), и втекают в другие. Основная емкость (и вот здесь таки возможно, действительно 3-4 электролита, на несколько сотен микрофарад) тут должна стоять в точках соединения питания ключей строк и столбцов.

Datasheet говорит (страница 6) о допустимом токе до +-35mA на ногу.

Это исключительная фишка NXP(Philips), и то +- 35mA -даны как "absolute maximum ratings" - т.е. стрессовая ситуация, практически не допустимая.

Никто не запрещает отдельным производителям выпускать микросхемы "лучше", чем у всех остальных. Вообще судя по, приведенному вами, даташиту от NXP - эту микросхему уже следовало бы назвать скорее 74AC595 (частота в 100МГц, и повышенная нагрузочная способность - уже более типичны для логики 74AC, но видимо чтото они таки до AC немного не дотянули).

Так что это только для микросхем производства NXP.

Например даташит от TI/NS дает типичные для логики 74HC цифры: +-6mA на ногу (прямо в заголовке), и около 30мгц предельной частоты.

При этом страница 9 просит ограничить суммарный ток на уровне 80mA (10mA на ногу).

Читайте внимательнее ! На 9-й странице приведено потребление НА САМУ МИКРОСХЕМУ, (причем в МИКРОамперах) :). Максимальный ток по выводам земли и питания приведен тамже, на 6-й старнице, и составляет 70ма. Что дает +-8.75ма на ногу, если все выводы включены в 1 состояние. Так что, таки да, низя по всем ногам снять по 35ма - никак, даже для микрухи от NXP :( .

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

Пока не пытался запустить динамическую индикацию (да, даже тестовая плата индикации пока что не сделана), потому не могу судить, достаточно ли будет импульсного тока в 10mA для индикатора при скважности в 1/8. Возможно, разгоню выше.

10mA при скважности в 1/8 - скорее всего мало. В принципе, не так трудно прикинуть: Если вы знаете средний ток, необходимый для нормального горения точки (попробовать от лабораторного источника с резистором), то просто умножаете его на скважность. На субективный эффект от динамической индикации - особо рассчитывать не стоит, это еще процентов 30 сверх, пускай он будет "стратегическим запасом". А чтобы "разгонять выше" - надо иметь запас по нагрузочной способности ключей. А в случае применения небуферизованных 74HC595 - его нету совсем.

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

Можно снизить их (ключей) количество в 2 раза, организовав матрицу как 16х80 (по предельной скважности - еще вроде проходит, но вот больше - уже точно нельзя). Об чем я уже упоминал. Да, ток столбцового ключа - вырастет еще в 2 раза, но 2n7002 - еще вполне потянет 160ма (в отличии от микросхемы). Токи строчных ключей (импульсные)- тоже возрастут конечно, но их всего 16шт, тут проще. Поставить 8 спаренных P-канальных полевиков, по 0.05 Ом или менее - не такая проблемма (IRF7329, IRF7324 на крайняк - IRF7314).

Питание логики будет на уровне 5V. Гасящие резисторы думаю поставить на 100 Ом (потом уточню на месте).

100ом - явно много. Считаем: питание(5в)-падение на светодиоде(из даташита на индикатор, при данном токе, примерно 2в),разделить на требуемый ток 80ма(160ма). Получаем 16-33Ом, хотя "уточнять на месте" скорее всего, все равно приедется, но лучше не делать это лишний раз.

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

Вот именно. Об чем я вам и говорю. Именно по этому, на это дело обычно ставят вспомогательный процессор, а раньше (когда процессоры были большими)- ставили логический автомат на счетчиках и микросхеме ОЗУ.

Кстати, по поводу этого:Крайне печально, но в моём распоряжении нет NCL30000. То есть, в принципе. Заказывать из Default City? Nope. Слишком накладно выйдет для штучного заказа. Хотя, если с намоточной медью....

А чего вообще есть ? Обратноходовку можно еще очень много на чем сделать, хотя NCL30000 - конечно весьма приятственная вещь.

И каковы условия заказа ?

Может имеет смысл вообще заказать "большую посылку" ? несколько NCL30000, несколько ST1S10 (и дроссели IHLP2525 на 10uH, к ним), ключевые полевики (и на преобразователь и на строчные/столбцовые ключи), провод, сердечник (с каркасом), высокоемкие керамические конденсаторы, еше подумать, чего надо.

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

*** добавлять закончил *** :)

Изменено пользователем dr.Nimnul
Ссылка на комментарий
Поделиться на другие сайты

Эксперименты с блокинг-генератором не очень удались.. Собрал нечто, что при 12В питания выдаёт пики в 60 и более В на выходе трансформатора (хотя тот изначально стоял в цепи 5VFB блока питания ATX).

Не очень умеет ИИП.. ::sad

 

В загашниках обнаружелось ферритовое кольцо.. С обмотками пока что проблема. Тонкая раскачивает вторичные, но не обеспечивает достаточную мощность... Плюс, блокинг-генератор пытается сгореть, если вообще генерит.. Надо ставить нормальный MOSFET и вообще управление нужно >_<

Нужна микросхема-драйвер, которые не ищутся у нас.. Чиорт!

Есть прямо в метре от меня DBL494 - ШИМ... Но в "традиционной" схеме она не имеет гальванической развязки.

Схема

 

Иииииииииииииии, таки да! У меня именно NXP 74HC595D

 

Проверил при токе в 100mA на строку.. Не очень ярко. Придётся лепить драйверы на столбцы :evil:

 

Выбор:

Драйверы строк: IRLML2402 (закуплены). Возможна замена на IRF7301/7304 (в наличии)

Драйверы столбцов: IRLML6401 (160+ штук <_< )  Какая.... жаль. // 160*3.60 = 576 рублей / $16.5 //

Угу. Дешёвая панель получается, да.... Ладно, допустим, доделаю преобразователь на том, что есть...

Нашёл ферритовое кольцо.. о_о

10 (ширина) 5 (толщина) 23 (диаметр)

Да-да-да, та самая катушка-фильтр из цепи питания БП. (На схеме выше, справа, после трансформатора и диодов).

Итак, я наконец готов ответить на часть поста:

Поставить 8 спаренных P-канальных полевиков, по 0.05 Ом или менее - не такая проблемма (IRF7329, IRF7324 на крайняк - IRF7314).

100ом - явно много. Считаем: питание(5в)-падение на светодиоде(из даташита на индикатор, при данном токе, примерно 2в),разделить на требуемый ток 80ма(160ма). Получаем 16-33Ом, хотя "уточнять на месте" скорее всего, все равно приедется, но лучше не делать это лишний раз.

Запустил динамическую индикацию силами одного только контроллера: "Греется, зараза" (с)

Итог: Протекающий ток: ~86мА (мультиметр показывает приблизительно это значение; холостых циклов нет; скважность 1/8). Яркость приемлема для общих условий (непрямая засветка сбоку).

Теперь, выбрав дополнительные драйверы, думаю добавить регулировку яркости (ШИМ 10kHz) на отдельном таймере (благо, остался).

Вопрос, как проверять яркость? Фоторезистор? Где его теперь найти..

 

Ну здесь тоже, есть заковыка. Дело в том, что строго одновременно сменить строку, и перезащелкнуть значение в выходные регистры 74HC595 - вы все равно не сможете (это как минимум 2 ПОСЛЕДОВАТЕЛЬНЫЕ команды процессора). Потому имеет смысл: записать в регистр строк - нули (погасить все 8(16) строк), затем перезащелкнуть (заранее загруженные) данные в 74HC595, а затем записать в регистр строк значение для включения соотв строки. Все это можно (и нужно) делать последовательными коммандами, без задержек.

Правда можно поступить хитрее: управление выводами строк - тоже запихаь в общую батарею 74HC595 (удлиннив ее на 8(16) бит). Вот тогда смена значений по X и по Y - будет абсолютно одновременной. Заодно и ноги у проца сэкономите.

Эммм.... Или я чего-то не понял... но в моём случае, вывод Latch - общий для всех чипов. Да, я не могу загрузить в них данные параллельно (да мне и не нужно), потом я отдельно загружаю данные в строку и столбец (столбец можно вообще не трогать, как и строку), хотя линия данных - общая (идёт на входы строки и столбца), а вот линия такта разделена.

 

Кстати еще "фишка" : Не загружайте 74HC595 - побитно ! Это неудобно, тратится довольно много ресурсов проца, на сдвигание и побитное выталкивание. У вас их полюбому достаточно много, чтобы поставить по 8шт-параллельно, выделив под это дело целый порт. Выставляешь байт (целиком, из видеобуфера), дергаешь стробом записи, и одновременно 8регистров захватывают и сдвигают, каждый по 1 битику из этого байта. Потом уже выходы регистров следует "перепутать", так чтобы на 8 следующих друг за другом столбцов матрицы, приходилось по 1 биту от всех 8 сдвиговых регистров.

Идея классная, но получается ТАКАЯ мешанина на плате.... а её ведь ещё нужно изготовить. И никакого омеднения отверстий, никаких допусков в 0.1мм, никаких сквозных соединений.... Только хардкор (с) Т_Т

В принципе, если у вас есть сложности с изготовлением печатных плат, может иметь смысл вообще сделать "модуль индикации" - все светодиодные индикаторы впаять в макетную плату, и спаять луженкой, в тонком (1мм) фторпластовом кембрике (чтобы не зачищать немерянное количество кусочков МГТФ-а). просто отрезаешь длинный кусок проволоки, припиваешь к ножке, надеваешь отмерянный прямо по месту кусочек кембрика, припаиваешь после него (возможно накрутив виток на торчащую из макетки ногу индикатора), надеваешь следующий кембрик, и так до конца матрицы, не отрезая проволоку, потом напаиваешь конец на соединительный штырь, и отрезаешь излишек луженки. В результате получаем "большой индикатор", (с относительно малым числом выводов), который можно использовать и в макетах, а потом и в готовом устройстве (имеет смысл сразу паять аккуратно, "начисто"). Это может оказаться проще чем делать двусторннюю плату достаточно большого размера, по ЛУТ, и сверлить в ней 320 с лишним отверстий.

!!!!!! АААААААААААААААААААААА, Я КРЕТИН, Поздравьте меня! >_<

Но похоже, поздно.. Уже начал делать на платы-переходники, ибо хотел модульность.

Хотя, в моём случае (да, больше мороки с пайкой и ЛУТом) входить на "модуль" индикации будет только... с десяток проводов: Питание (2), Тактирование (2), Защёлкивание (1), Данные (1), Разрешение выхода (1). Итого: 7. Для варианта с макеткой было бы 168... но шлейф.... в общем, я в задумчивости, сделать ли ещё одного Франкенштейна, из мешанины проводов, или попытаться обойтись чем-то более красивым?

Хочется красиво.

А двусторонний ЛУТ будет только на одном месте - плата-переходник для индикаторов, которая превращает этот их рандом на выводах в два красивых ряда С1, С2, С3... С8 и R1, R2...R8.

К сожалению, изготовление плат на заводе обошлось бы в 4 тыс. рублей. Заказать на Ebay? Но не находил пока таких, к сожалению.

В принципе, по 0.47uF, возле каждого корпуса - более чем достаточно (при наличии сосредоточенной большой емкости), только следите, чтобы эти конденсаторы были X7R или X5R, ибо конденсаторы Y5V и Z5U - обладают крайне фиговыми частотными свойствами, и высоким внутренним сопротивлением.

Не знал, не знал... Благодарю, возьму на заметку. Изменено пользователем Alan
Ссылка на комментарий
Поделиться на другие сайты

Эксперименты с блокинг-генератором не очень удались.. Собрал нечто, что при 12В питания выдаёт пики в 60 и более В на выходе трансформатора (хотя тот изначально стоял в цепи 5VFB блока питания ATX).

Не очень умеет ИИП.. ::sad

.................................

... Плюс, блокинг-генератор пытается сгореть, если вообще генерит..

Это закономерно. Я уже упоминал, что с блокингами тут заморачиваться не стоит, особенно при отсутствии большого опыта в построении преобразователей. У вас достаточно большое входное, и достаточно большая мощщность, чтобы построение надежного блокинга превратилось в "занятие для сильных духом"  ;)

Это вы еще не добрались до старт-стопных процессов, стабилизации, устойчивой работы во всем диапазоне нагрузок....

 

Надо ставить нормальный MOSFET и вообще управление нужно >_<

 Золотые слова.

Нужна микросхема-драйвер, которые не ищутся у нас.. Чиорт!

Есть прямо в метре от меня DBL494 - ШИМ... Но в "традиционной" схеме она не имеет гальванической развязки.

 Гальваническая развязка - фигня. Копируете кусок с оптроном и 431-й, из любой моей схемы, и радуетесь жизни. Только не забудьте внутренний операционник у контроллера импулсного преобразователя, включить с небольшим к-том усиления (типа 2...6), иначе, если будут 2 опера с "бесконечным" усилением, в кольце ОС - почти наверняка загенерит, и бороться будет очень тяжело.

Гораздо хуже, что у 494-ой (ака 1114ЕУ4) - нету нормального (пушпульного) драйвера затвора (там выход - просто биполярный транзистор), и нету поциклового ограничения тока. Первое приводит к необходимости изобретать драйвер из рассыпухи (или искать какой-нибудь IR4427). А второе - вынуждает делать бОльший запас по насыщению трансформатора - что приводит к увеличению габаритов оного. Можно попытаться сделать на ней двухтактную пушпулку (с отводом от средней точки трансформатора), с "могучим" дросселем - во вторичной цепи, но ИМХО, для данного применения - это громоздко и излишне.

Попробуйте нарыть где-нибудь UC3845. Ну, уж эта то в магазинах обязана быть.

Кстати, если у вас имеется старая оргтехника, то попробуйте не ATX-блоки питания разбирать, а поискать старые ЭЛТ-мониторы. Вот там, как раз импульсны источник очень часто строится на UC3845(UC3842, UC2842...), да и ферритов там можно наквырять более подходящих. Возможно, что даже удастся что-нибудь размотать на провод (у китайцев, довольно часто трансформаторы бывают не пропитанные).

Вот вам схемко: 4689831m.gif

Это кусок из еще одной моей старой разработки, наиболее подходящей в данном случае. К сожаленью, там было 24в входного, что влечет за собой изменение ключевого транзистора, ну, например на IRF640 (их кстати, тоже полно в старых ЭЛТ-мониторах, в развертке часто по нескольку штук стоит, конденсаторы подключает). Трансформатор - придется увеличивать количество витков первички. И вспомогательный стабилизатор питания самой UC3845 - там 78L12- уже не прокатит (ибо до 35в по входу), придетсся выдрать линейник на транзисторе и 431-й, из предидущей схемы (на NCL30000) , только транзистор там желательно -составной (Дарлингтона), и резистор между базой и коллектором (на той схеме обозначен как R4) - побольше - килоом 20, иначе слишком большой ток в 431-ю потечет, с 48 то вольт.

Несколько громоздкая частотная коррекция там обьясняется необходимостью взятия обратной связи, после дросселя "второй ступени" фильтрации (там с логики стоял ЦАП на R2R, требовались "точные и чистые" 5в, оттудаже и подстройка), в вашем случае - такой надобности нет: для звука - поставить доп. дроссель, желательно, но вот охватывать его ОС - смысла нету. Незначительные отклонения 5в - приведут лишь к изменению громкости на 1-2%. "Абсолютная точность опорного напряжения" - тут не нужна. Хотя можете попробовать содрать "один в один", но с изменением трансформатора - скорее всего, все равно придется подбирать, чтобы не возбуждалось, а в такой системе для этого уже нужен некоторый навык.

Естественно такая многоканальность - вам без надобности :). Оставил просто чтобы было видно: сколько витков, на какое напряжение. А также просто от лени :)

Микросхема бывает в 8- и 14-выводном корпусах. У меня номера ног даны для 14-выводного.

Оптрон MCT6 - лучше заменить на маленький планарный PC357. Большой двухканальный MCT6 - там стоял потому, что второй канал - использовался в другом месте, для передачи еще одного сигнала.

Иииииииииииииии, таки да! У меня именно NXP 74HC595D

 Поздравляю. Но как я и говорил, это вас не сильно спасет. Что похоже и подтверждается.

 

Придётся лепить драйверы на столбцы :evil:

Это было немного предсказуемо.

 

Выбор:

Драйверы строк: IRLML2402 (закуплены). Возможна замена на IRF7301/7304 (в наличии)

Драйверы столбцов: IRLML6401 (160+ штук <_< )  Какая.... жаль. // 160*3.60 = 576 рублей / $16.5 //

Угу. Дешёвая панель получается, да.... Ладно, допустим, доделаю преобразователь на том, что есть...

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

На столбцы - хорошо пойдут IRLML2402. Если будет СИЛЬНО дешевле - можно заменить на 2N7002 (у нас они вообще по 80коп в розницу лежат, в Симметроне) Но это несколько хуже т.к. они на 60в,что тут совершенно избыточно, и достаточно высокоомные( особенно если делать скважность 1/16 - то по току уже близко к пределу, там от производителя зависит, как и с 74HC595), так что не сильно желательно, особенно если будете организовывать матрицу как 16х80.

На строки - неплохо пойдут IRLML6401, IRF7301, IRF7329, IRF7324, и несколько хуже - IRF7314, IRF7304 (особенно последний). Их относительно немного - там можно поставить и что подороже.

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

Нашёл ферритовое кольцо.. о_о

10 (ширина) 5 (толщина) 23 (диаметр)

Да-да-да, та самая катушка-фильтр из цепи питания БП. (На схеме выше, справа, после трансформатора и диодов).

Если это выходной дроссель, то скорее всего это не феррит, а распыленное железо. Бело-желтая окраска ? Тогда это К26. В принципе это единственное что более-менее подходит для такого транса. Хотя у К26 - относительно большие магнитные потери, и на кольце мотать не сильно удобно, но можено попробовать. Кольца из феррита (высокопроницаемого), от входных фильтров например - тут не сильно применимы, ибо требуется немагнитный зазор. Лучше бы найти Ш- образный, с зазором, (или в крайнем случае, собрать на прокладки). Кстати, опять таки, смотрите старые ЭЛТ-мониторы, и основной трансформатор от вашего источника питания, если только можно разобрать (не пропитано, и не залито).

 И не очень понял, какого габарита у вас кольцо (что такое "ширина" и что такое "толщина"). Обычно указывается внешний диаметр, внутренний диаметр, высота, (именно в этом порядке) , обозначается как К23х13х10 - я правильно вас понял ? Просто если да, то у вас очень маленькое колечко. Поищите БП помощнее.

Итак, я наконец готов ответить на часть поста:

Запустил динамическую индикацию силами одного только контроллера: "Греется, зараза" (с)

Итог: Протекающий ток: ~86мА (мультиметр показывает приблизительно это значение; холостых циклов нет; скважность 1/8). Яркость приемлема для общих условий (непрямая засветка сбоку).

Кто греется ? 74HC595 как я понимаю ? Если да, то все очевидно и предсказуемо.

Теперь, выбрав дополнительные драйверы, думаю добавить регулировку яркости (ШИМ 10kHz) на отдельном таймере (благо, остался).

Как я уже писал - не надо делать отдельный асинхронный ШИМ. Там можно биения получить. Сделайте его на томже таймере, что выставляет прерывания для обновления индикации. Пускай будет 1 период ШИМ, на время горения 1 строки - это совершенно нестрашно,  зато будет гореть равномерно, с гарантией.

Вопрос, как проверять яркость? Фоторезистор? Где его теперь найти..

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

Только вот нафига вам все это ? Яркость прекрасно оценивается визуально, и это самый лучший критерий. Если этого мало, то учтите, что она практически пропорциональна току. А сделать измеритель повторяющий субьективную чувствительность человеческого глаза, к коротким импульсам - ОЧЕНЬ трудно. Не стоит даже пытаться.

 

Эммм.... Или я чего-то не понял... но в моём случае, вывод Latch - общий для всех чипов. Да, я не могу загрузить в них данные параллельно (да мне и не нужно), потом я отдельно загружаю данные в строку и столбец (столбец можно вообще не трогать, как и строку), хотя линия данных - общая (идёт на входы строки и столбца), а вот линия такта разделена.

Тоесть, ключами строк вы управляете с еще одной 74HC595 ? И перезащелкиваете по одному сигналу, данные для строк и для столбцов ? Как я и предлагал? Если так, то возражения снимаются.

UPD. Это так и есть. Я невнимательно прочитал ваш пост, про "заменить состояние ВСЕХ 168 минов (в том числе, вертикальной защёлки)" . Прошу прощенья.

Идея классная, но получается ТАКАЯ мешанина на плате.... а её ведь ещё нужно изготовить. И никакого омеднения отверстий, никаких допусков в 0.1мм, никаких сквозных соединений.... Только хардкор (с) Т_Т

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

!!!!!! АААААААААААААААААААААА, Я КРЕТИН, Поздравьте меня! >_<

Но похоже, поздно.. Уже начал делать на платы-переходники, ибо хотел модульность.

 Поздравляю. :) Но переделать то никогда не поздно :)

Вообще, лучше всетаки сперва думать, а потом делать что надумал, чтобы опосля не думать, что наделал :)

Хотя, в моём случае (да, больше мороки с пайкой и ЛУТом) входить на "модуль" индикации будет только... с десяток проводов: Питание (2), Тактирование (2), Защёлкивание (1), Данные (1), Разрешение выхода (1). Итого: 7.

Для варианта с макеткой было бы 168... но шлейф.... в общем, я в задумчивости, сделать ли ещё одного Франкенштейна, из мешанины проводов, или попытаться обойтись чем-то более красивым?

Если сделать аккуратно - то ничего особо "франкенштейновского" - там нет. Главное - достаньте тонкий фторопластовый кембрик - это ключевой компонент для аккуратного монтажа, в данном случае. Хорошую длинную луженку можно добыть "распустив" многожильный силовой провод, с лужеными жилками (подобрать такой, чтобы отдельные жилочки были около 0.5мм, и не темные), это нетрудно, практически при любом дефиците, главное не берите провода в резиновой изоляции (после длительного контакта с вулканизатором от резины проволока становится совершенно непаяемой).

Альтернативный вариант, если кембрик достать таки не выйдет - сделать "читстилку" для МГТФ-а, - "обжигалку" с 2 петельками из раскаленной нихромовой проволоки. Но это сложнее, по любому.

А вот ключи и микросхемы - лучше располагать на отдельной плате, соединенной с индикаторами посредством жестких штырей PLS-40 (можно разьемно, можно на пайке). (Это "штырьки" на которые в копьютерах джамперы надеваются, продаются в виде "линеек" по 40 контактов, с шагом 2.54мм, по месту отрезается сколько надо, стоят - копейки). Плата - строго такогоже размеру как и плата индикаторов, располагается под ней, с зазором около 5мм. После запайки сотни контактов - это будет монолитная конструкция, и весь обьемный монтаж - будет спрятан между платами. А вот с этой платы - таки действительно пойдет немного концов.

Контроллер - либо на этой-же плате, либо, если вы хотите модульности - отдельным "этажем". Если конструкция становится сильно многоэтажной (более 2 этажей), то вот тут штыри уже лучше не запаивать, с 2 концов, а применить ответные части к ним. Называются PBS - однорядные PBD - двухрядные, (для двухрядных штырей PLD-80). Хотя контроллер можно уже и гибким шлейфом присоединить - там проводов немного.

 

А двусторонний ЛУТ будет только на одном месте - плата-переходник для индикаторов, которая превращает этот их рандом на выводах в два красивых ряда С1, С2, С3... С8 и R1, R2...R8.

 ИМХО, сажать каждый индикатор, на индивидуальную плату - есть верх извращения. Во первых, вы получите дополнительное активное сопротивление, на всей этой печати. Во вторых, индикаторы у вас, в конечном счете, скорее всего будут стоять криво, ибо погрешности нескольких плат, да еще и с ручной сверловкой - суммируются. А заводская макетка - это поле дырок с шагом 2.54, просверленных весьма точным ЧПУ (руками так не насверлишь).

В третьих вам фактически предется сверлить, "тройной набор" отверстий (в переходниках, и в основной плате) для индикаторов 320*3=960.... рука устанет :)

Изменено пользователем dr.Nimnul
Ссылка на комментарий
Поделиться на другие сайты

Как обычно, хорошая мыслЯ - приходит опослЯ . Давеча вас поздравлял, с тем, что вы кретин, ну теперь можете меня поздравить ...

Додумался, как сделать гарантированно без мерцания, и джиттера у звука. :idea:

И так: Перезащелкиваем выходные регистры 74HC595, по выходу аппаратного таймера. Он всегда будет без джиттера. Он таки аппаратный . Этотже таймер - выставляет прерывание, по которому процессор обязан перегрузить содержимое сдвигового регистра, но ему совершенно необязательны такие жесткие временные рамки, важно только успеть до следующего тика таймера. Причем этотже таймер - осуществляет ШИМ-регулирование яркости (шириной своего импульса). Входы LATCH и OE всех 74HC595 - соединяем одним проводом и заводим на выход таймера: когда приходит нулевой импульс - строка горит (заданное время, определяемое длительностью этого импульса), по его окончанию - презащелкиваются следующие данные, и одновременно проц получает прерывание, что можно перегружать сдвиговую цепочку. Со звуком - совершенно аналогично: ставим 2 паралельных защелки 74xx374, 74xx574 (вторую - неизмеримо удобнее разводить), подряд, первую - загружаем программно (кстати можно с ТОЙЖЕ параллельной 8-битной шины, с которой осуществляется байтово-параллельный вывод на индикацию, только строб другой), вторую - перезащелкиваем по выходу таймера, причем ее не вредно запитать через ферритовую "бусинку" , и поставить десяток-другой микрофарад керамики ей по питанию, ибо на ее выходах - висит R2R-ЦАП, и ее питание - это по сути REF. А еще можно все это дело (индикацию, и защелку для звука) - адресовать как внешнюю память, тогда даже стробами программно дергать не придется, процессор сам сформирует данные, адрес и строб записи, по одному единственному обращению, к внешней ячейке памяти. Только тут понадобится еще 1 параллельная защелка (74xx373, 74xx573) - для адеса, и дешифратор (74xx138).

P.S. если кто не понял :), в обозначении "74xx" имеется в виду, что xx - это AC, HC, ACT, HCT, AHC.

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

Попробуйте нарыть где-нибудь UC3845. Ну, уж эта то в магазинах обязана быть.

А вот эта, как раз, есть. И даже довольно дёшевая, что хорошо. Оптопару возьму из того же БП. На схеме обозначена некая MCT6, но у меня в наличии с такой маркировкой: COSMO 1010 817 B46 B Здесь, например, такая описана.

Вот вам схемко: 4689831m.gif

*Схоронил* ^_^

Да, полевик буду ставить другой. Где-то под лапой был старый BUZ90, но какое-то ощущение, что он будет несколько медленным и слишком высоковольтным для данной схемы. Больше ничего подходящего в пределах досягаемости не обнаружено.

Кстати, о звуке.. Решил разнести пищалку и ЦАП на разные "динамики", ибо нечего. >_> Да, АЧХ хочется получше. Да и подумаю о дроссельном питании пьезоизлучателя.

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

Да, вот с навыком как раз проблема в настоящий момент. Баловался с блокинг-генератором, забыл подключить подтяжку к питанию на базу транзиатора, но тот всё равно завёлся. САМ... То есть, в схеме: Трансформатор, Транзистор, Конденсатор. Пробой последнего исключается - керамика, да ещё поменял на другой - те же симптомы. Думаю, "трюк" оказался в межвитковой ёмкости трансформатора. Но всё равно, было забавно.

 

На столбцы - хорошо пойдут IRLML2402. Если будет СИЛЬНО дешевле - можно заменить на 2N7002 (у нас они вообще по 80коп в розницу лежат, в Симметроне) Но это несколько хуже т.к. они на 60в,что тут совершенно избыточно, и достаточно высокоомные( особенно если делать скважность 1/16 - то по току уже близко к пределу, там от производителя зависит, как и с 74HC595), так что не сильно желательно, особенно если будете организовывать матрицу как 16х80.

На строки - неплохо пойдут IRLML6401, IRF7301, IRF7329, IRF7324, и несколько хуже - IRF7314, IRF7304 (особенно последний). Их относительно немного - там можно поставить и что подороже.

Да, вариант с 2N7002 подходит получше, чем бригада из IRLML6401 (получаем уже 160*0.95 = 156.80 вместо 576 рублей), что есть гуд.

В матрице 16*80 смысла особого не вижу, т.к. уже закуплены 74HC595 (с приличным запасом по количеству). А вот идею экономии одного порта и полной линии в 160+8 точек - подумаю :)

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

 

Если это выходной дроссель, то скорее всего это не феррит, а распыленное железо. Бело-желтая окраска ? Тогда это К26. В принципе это единственное что более-менее подходит для такого транса. Хотя у К26 - относительно большие магнитные потери, и на кольце мотать не сильно удобно, но можено попробовать. Кольца из феррита (высокопроницаемого), от входных фильтров например - тут не сильно применимы, ибо требуется немагнитный зазор. Лучше бы найти Ш- образный, с зазором, (или в крайнем случае, собрать на прокладки). Кстати, опять таки, смотрите старые ЭЛТ-мониторы, и основной трансформатор от вашего источника питания, если только можно разобрать (не пропитано, и не залито).

И не очень понял, какого габарита у вас кольцо (что такое "ширина" и что такое "толщина"). Обычно указывается внешний диаметр, внутренний диаметр, высота, (именно в этом порядке) , обозначается как К23х13х10 - я правильно вас понял ? Просто если да, то у вас очень маленькое колечко. Поищите БП помощнее.

Вот когда в техподдержке с абонентом общались похожим образом, отгадывая недосказанное, говорили, что у оператора уровень прокачки навыка "Чтение мыслей" запределен... Я не сказал, что кольцо жёлтое... о_О *Боится [utl=http://drakia.com/forum/user/282-drnimnul/]dr.Nimnul'а. Надел шапочку из фольги*

 

 

Итак, я наконец готов ответить на часть поста:

Запустил динамическую индикацию силами одного только контроллера: "Греется, зараза" (с)

Итог: Протекающий ток: ~86мА (мультиметр показывает приблизительно это значение; холостых циклов нет; скважность 1/8). Яркость приемлема для общих условий (непрямая засветка сбоку).

Кто греется ? 74HC595 как я понимаю ? Если да, то все очевидно и предсказуемо.

 

Пардон, забыл уточнить. Прошу не сильно кидаться снежками... но это было запитано напрямую от 1284-й Меги. БЕЗ токоограничительных резисторов.

Предыдущий "эксперимент" показал общую нагрузочную способность чипа до (а возможно, и более) 0.5A (дальше не позволил USB порт), но индикатор светился знатно. И, нет, он абсолютно цел!.

Как я уже писал - не надо делать отдельный асинхронный ШИМ. Там можно биения получить. Сделайте его на томже таймере, что выставляет прерывания для обновления индикации. Пускай будет 1 период ШИМ, на время горения 1 строки - это совершенно нестрашно, зато будет гореть равномерно, с гарантией.

А, кстати, идея.. Почему-то я о таком не подумал. Считал "Прерывание таймера и так работает за 1 такт". Теперь думаю, за какой 1 такт?...

 

Тоесть, ключами строк вы управляете с еще одной 74HC595 ? И перезащелкиваете по одному сигналу, данные для строк и для столбцов ? Как я и предлагал? Если так, то возражения снимаются.

UPD. Это так и есть. Я невнимательно прочитал ваш пост, про "заменить состояние ВСЕХ 168 минов (в том числе, вертикальной защёлки)" . Прошу прощенья.

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

Поздравляю. :) Но переделать то никогда не поздно :)

Вообще, лучше всетаки сперва думать, а потом делать что надумал, чтобы опосля не думать, что наделал :)

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

Опять же, спаять я могу и на монтажной плате всё. Главное, что красиво это не будет. Нет у меня таких плат и широких шлейфов. Это жаль, но ладно уж. Попробуем сделать проще - плата будет просто давать контактные площадки, а поверх них пущу тонкий лакированный провод. Снизу, наверное, собиру "гребёнку" из 160+8 контактов. Надо будет достать макетку.

 

А вот ключи и микросхемы - лучше располагать на отдельной плате, соединенной с индикаторами посредством жестких штырей PLS-40 (можно разьемно, можно на пайке). (Это "штырьки" на которые в копьютерах джамперы надеваются, продаются в виде "линеек" по 40 контактов, с шагом 2.54мм, по месту отрезается сколько надо, стоят - копейки). Плата - строго такогоже размеру как и плата индикаторов, располагается под ней, с зазором около 5мм.

Вот эти разъёмы как раз знаю. Очень удобны, в том числе, для изготовления меньших по количеству контактов, разъёмов. Иногда сложно найти что-то на 8-12 соединителей, а на 40 - легко! Вот и приходится брать кусачки. С гнёздами, конечно, сложнее.

Мой вариант, изначально был следующим:

Плата ЦП + Модуль Ethernet + Источник питания + Плата индикации.

Причём, плата индикации должна была быть "почти" двухярусной. На каждый индикатор делается своя плата-переходник, выравнивающая его, а далее, он устанавливается в гнездо 2*8 рядом со "своей" микросхемой. Мда. Теперь всё будет иначе... но думаю, это того стоит!

 

Додумался, как сделать гарантированно без мерцания, и джиттера у звука. :idea:

И так: Перезащелкиваем выходные регистры 74HC595, по выходу аппаратного таймера. Он всегда будет без джиттера. Он таки аппаратный . Этотже таймер - выставляет прерывание, по которому процессор обязан перегрузить содержимое сдвигового регистра, но ему совершенно необязательны такие жесткие временные рамки, важно только успеть до следующего тика таймера. Причем этотже таймер - осуществляет ШИМ-регулирование яркости (шириной своего импульса). Входы LATCH и OE всех 74HC595 - соединяем одним проводом и заводим на выход таймера: когда приходит нулевой импульс - строка горит (заданное время, определяемое длительностью этого импульса), по его окончанию - презащелкиваются следующие данные, и одновременно проц получает прерывание, что можно перегружать сдвиговую цепочку. Со звуком - совершенно аналогично: ставим 2 паралельных защелки 74xx374, 74xx574 (вторую - неизмеримо удобнее разводить), подряд, первую - загружаем программно (кстати можно с ТОЙЖЕ параллельной 8-битной шины, с которой осуществляется байтово-параллельный вывод на индикацию, только строб другой), вторую - перезащелкиваем по выходу таймера, причем ее не вредно запитать через ферритовую "бусинку" , и поставить десяток-другой микрофарад керамики ей по питанию, ибо на ее выходах - висит R2R-ЦАП, и ее питание - это по сути REF. А еще можно все это дело (индикацию, и защелку для звука) - адресовать как внешнюю память, тогда даже стробами программно дергать не придется, процессор сам сформирует данные, адрес и строб записи, по одному единственному обращению, к внешней ячейке памяти. Только тут понадобится еще 1 параллельная защелка (74xx373, 74xx573) - для адеса, и дешифратор (74xx138).

P.S. если кто не понял :), в обозначении "74xx" имеется в виду, что xx - это AC, HC, ACT, HCT, AHC.

Идея красивая, да, но есть одна сложность. Странно, что я её не описал..

Звук будет работать на гораздо бОльшей частоте, нежели обработчики индикатора. Формально, получаем:

- Таймер регенерации "экрана" - 1kHz (125Hz суммарная частота кадров, раз уж есть 8 строк - кстати, ещё одна причина, по которой не хочется делать 16*80 - получаем уже 62.5Hz).

- Таймер обработки "звука" - ~22.0 kHz (получил, конечно, приблизительное значение).

Итого, если пытаться запустить обработчик "изображения" сразу после обработки звука, получим:

18432000 / 22050 (44100/2) = 835,9 такта. То есть, суммарно есть менее 1000 тактов. Звук требует порядка.... 100 тактов, а это 12-13% процессорного времени только на звук. Хотя, прерывание довольно лёгкое - его код я уже приводил. Проблема в компиляторе, который старательно упаковывает и извлекает в/из стэк(а) 19 регистров(!). Да, он это любит...

Опция -O0 генерирует 23 инструкции при входе в прерывание.

Опция -O1 даёт 19 инструкций - немного "быстрее".

Опция -O2 дала 12 инструкций - чуть более "быстрый" результат работы. И суммарное количество инструкций в прервании - 30+18 инструкций (2 и 4 байта), это должно быть порядка 66 тактов.

Опция -O3 даёт 12 инструкций... то есть, ничего не меняется.

Пожалуй, перепишу Makefile на работе на опцию -O2.

Так вот. Обработка изображения потребует значительно больше тактов: 160*8 + обмен с памятью + вычисление первых строк (да, работаю над скроллингом текста ^_^), а это уже значительно больше, чем 835. Потому ЭТО будет работать в основном цикле и может прерываться звуком. Фактически, звук будет единственным обработчиком ВНУТРИ прерывания. Остальные будут за пределами очень требовательных инструкций.

Кстати, там же возникает вопрос в обработчике сети - он может занять более 1мс (но это будет проверяться в отладке), что потенциально должно сбить обработку изображения.. А весовых обработчиков в Меге нет. Либо я о них не знаю.

Но вызвать прерывание в прерывании, вроди бы, никто не запрещает.

Иллюстрация:

main()    SysTick()    Sound()
   |
   |
   |-------->|
             |
             |---------->|
             |<----------|
             |---------->|
             |<----------|
             |
   |<--------|
   |
   |-------------------->|
   |<--------------------|

Ну да, можно добавить уровень "Sleep", где ЦП остановлен и ждёт прерываний, т.к. он уже всё сделал на последнюю милисекунду, и делать ему нечего.

Предположительно, в этом времени он будет находиться порядка.... 18432000/1000 = 18432t - 160*10 ~ 1400~~3000t = 15000-17000t/18432 = 81~92% времени.

Буду искать монтажную плату... Надо кого-то отправить в магазин в рабочее время ::confused

 

Мда.... Подумал поискать транзисторы... угу. Смешно. То, что есть в интернете - как правило не поддаётся нормальному поиску (или подбору). Если что-то нашлось, этого нет в нашем проклятом магазине :|

Пошло оно к чёрту, покупаю 180 штук 2n7002 и-и-и-и-и.....

(5-2)/0.08 = 3/0.08 = 35 (36) Ом. И пусть светятся на максимальной яркости.

 

Кстати, до меня только что дошло.. Я не могу реализовать регулировку яркости на том же таймере.. Он работает в режиме CTC == Clear Timer on Compare. Иначе я не могу получить милисекундные тики на частоте кварца. Потому, придётся рисовать костыль в виде второго таймера в качестве регулятора яркости.

"Жаль! Очень жаль! Вот, ваш ганарар. Настоящие Гавайцы!" (с) "Приключения Капитана Врунгеля".

Изменено пользователем Alan
Ссылка на комментарий
Поделиться на другие сайты

А вот эта, как раз, есть. И даже довольно дёшевая, что хорошо.

Ну она просто не может не есть :).

Оптопару возьму из того же БП. На схеме обозначена некая MCT6, но у меня в наличии с такой маркировкой: COSMO 1010 817 B46 B Здесь, например, такая описана.

Нормально. Если это 817-й - то это как раз таки штыревой (DIP-4) вариант упомянутого мной PC357. Они отличаются только корпусом.

*Схоронил* ^_^

Не забудьте про комментарии, которые я там дал к этой схеме !Повторю еще раз: она работала от 24в входного. На 48 - надо немного переделать. Там описано как.

Да, полевик буду ставить другой. Где-то под лапой был старый BUZ90, но какое-то ощущение, что он будет несколько медленным и слишком высоковольтным для данной схемы. Больше ничего подходящего в пределах досягаемости не обнаружено.

BUZ90 - 2 Ом 600в - не катит совершенно. Он не медленнее, но сильно высокоомный, ибо высоковольтный. Потери будут ужасающими. Поищите IRF640. Про что-нибудь посовременне, с маленьким зарядом затвора, и маленьким сопротивлением, от ST, - я уже даже не заикаюсь. Но IRF640 - должен гдето встречаться. Вещь очень распространенная (еще раз повторю: старые ЭЛТ мониторы - рулят, почти в каждом, по несколько штук есть).

Кстати, о звуке.. Решил разнести пищалку и ЦАП на разные "динамики", ибо нечего. >_> Да, АЧХ хочется получше. Да и подумаю о дроссельном питании пьезоизлучателя.

А нафига собственно ? ежели уж ставите электромагнитный динамик, то зачем еще и пищалка ? Если так уж хочется иметь возможность попищать таймером, не занимая процессор на генерацию звуков - ну смешайте выход таймера, с выходом ЦАП-а, через резисторы (прямо к выходу R2R матрицы, подключить эту ногу, через резистор, сопротивлением R - будет как раз смешение 1:1), и далее - на вход аудиоусилителя, и на динамик.

Да, вариант с 2N7002 подходит получше, чем бригада из IRLML6401 (получаем уже 160*0.95 = 156.80 вместо 576 рублей), что есть гуд.

Это закономерно. Только не забудьте "перевернуть" индикаторы "катодами к столбцам".

В матрице 16*80 смысла особого не вижу, т.к. уже закуплены 74HC595 (с приличным запасом по количеству).

А транзисторы ??

А вот идею экономии одного порта и полной линии в 160+8 точек - подумаю :)

Не совсем понял. Вы же вроде сами писали, что строчные ключи - тоже с линеки 595-х ??

Делать матрицу более квадратной не хочется - либо больше накладные расходы на пересчёт данных при выводе, либо требования к буферу памяти, либо ещё сложности с разводкой (просто нужна одна строка - ничего такого уж масштабного там не планируется рисовать,

Пересчета данных - никакого. Расположить их в одну строку - вам никто не запрещает. Некоторая трудность с разводкой там есть: кинуть 80 проводов на вторую половинку, которая стот не "под первой", а "рядом с ней", но это всяко проще чем городить еще 80 ключей.

а вот возможность поменять на бОльшие по размеру индикаторы - нужно будет обдумать).

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

Вот когда в техподдержке с абонентом общались похожим образом, отгадывая недосказанное, говорили, что у оператора уровень прокачки навыка "Чтение мыслей" запределен... Я не сказал, что кольцо жёлтое... о_О *Боится [utl=http://drakia.com/forum/user/282-drnimnul/]dr.Nimnul'а. Надел шапочку из фольги*

А чего нас бояться ©. А если серьезно, то я не просто так спросил. Если кольцо монотонно желтое (а не желтое с белым боком) - то это скорее всего даже не K26, а MPP125 , что значительно лучше. Если правильно померяете габариты кольца - можно примерно рассчитать витки. По крайней мере, чтобы не упираться в насыщение, не перегреваться магнитными потерями, и т.д. Еще очень желательно, если есть возможность где-нибудь померить индуктивность - намотать витков 20-30 любого провода, и написать тут измеренную индуктивность этой обмотки (и сколько точно витков было намотано), чтоы хоть примерно прикинуть, корректность рассчета, и что это именно тот материал, который я предполагаю.

Пардон, забыл уточнить. Прошу не сильно кидаться снежками... но это было запитано напрямую от 1284-й Меги. БЕЗ токоограничительных резисторов.

Ну ей же больно ! ©

Предыдущий "эксперимент" показал общую нагрузочную способность чипа до (а возможно, и более) 0.5A (дальше не позволил USB порт), но индикатор светился знатно. И, нет, он абсолютно цел!.

А вообще - не следует так мучать компоненты. ТО что не сгорел сразу - вовсе не значит что не деградировал по яркости, и что именно этот индикатор или это процессор - не сдохнет неожиданно позднее (и потом будете голову ломать почему ? да отчего ?). Предельно допустимые значения - НЕ ПРЕВЫШАЕМ, и нефиг заниматься такими экспериментами. Баловство это.

Можно исхитриться, поставив рещим ШИМ (PWM) с инверсией, и тогда можно не просто не гасить индикацию, но и прогонять данные сразу же. Просто в этот момент, вывод ~OE будет в запрещающем состоянии.

"прогонять данные сразу же" - можно в любом случае. Вывод LATCH - срабатывает единомоментно ПО ФРОНТУ. Все остальное время - можете там "сдвигать" все что угодно. И OE - гасить тоже нет надобности, если строчные ключи перезащелкиваются тойже защелкой Одно состояние - единомоментно (десятки НАНОсекунд) сменяется другим.

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

Попробуйте узнать, нет ли возможности заказать через "Резонит"

http://newservice.rezonit.ru/

Они вообще в другие города возят, или высылают по почте. Там всетаки цены подемократичнее. (расчитал по приведенному калькулятору двуслойку 35мкм, 1.5мм, 100х200мм, - получилось 1840руб-за 1шт и 2380-за 2шт. судя по моему опыту общения с ними - это примерно соответсвует действительности)

 

Попробуем сделать проще - плата будет просто давать контактные площадки, а поверх них пущу тонкий лакированный провод. Снизу, наверное, собиру "гребёнку" из 160+8 контактов. Надо будет достать макетку.

Все верно, кроме "лакированного провода". Вот с этим связываться - очень не советую. "Самофлюсующийся" отечественный (ПЭВТЛК) - вообще выкиньте нафиг, его и для намотки использовать - вредно для душевного здоровья, и макеты им паять - себя не любить. "Самофлюсующийся" импортный - получше, но очень сильно зависит от условий хранения, от производителя. Если старый - может быть такойже дрянью, как и отечественный (самофлюсующийся лак - портится гораздо быстрее обычного). А обычный эмальпровод (ПЭТВ-2, ПНЭТ-150, ПНЭТ-120 ...) зачищать еще противнее чем МГТФ, и тоже на макетах бывает что эмаль прокалывается в неподходящем месте (реже чем с ПЭВТЛК, но всеже). Требуются ОЧЕНЬ хорошие монтажные навыки (моих не хватает), и тщатльно подобранный "правильный" провод (вплоть до того что с одной партией может получаться, а с другой - нет), чтобы качественно паять такие платы.

Не ищите лишноего гемороя на свою ж...

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

В крайнем случае - тоненький одножильный провод в ПХВ изоляции. Зачищать прямо паяльником, по месту, но монтаж получится достаточно "грязным", хотя (при некоторой сноровке) - можно сделать надежно.

Но нетермостойкая изоляция - это очень не гуд, ибо плавится паяльником там где не надо, и слезает от места пайки, при небольшом перегреве, обнажая большой кусок неизолированного провода. Тут либо "распатронить" витую пару для Ethernet, либо поискать провод для монтажа "накруткой" (раньше им очень любили собирать задние стенки многплатных "коробов", для больших ЭВМ, до сих пор на многих предприятиях - огромными бобинами валяется, и никому не нужнен обычно) Там очень хорошо паяемое покрытие на меди, и сама медь исключительно вязкая, проволока мягкая. Им паять поприятнее будет, чем раскуроченным сетевым. Но, к сожаленью тоже ПХВ-изоляция.

 

Мой вариант, изначально был следующим:

Причём, плата индикации должна была быть "почти" двухярусной. На каждый индикатор делается своя плата-переходник, выравнивающая его, а далее, он устанавливается в гнездо 2*8 рядом со "своей" микросхемой.

Если это еще и с панельками - точно полный ахтунг получится. Не устройство сделаете а "глюкодром", с перманентно не горящими частью пикселей.

Идея красивая, да, но есть одна сложность. Странно, что я её не описал..

Звук будет работать на гораздо бОльшей частоте, нежели обработчики индикатора. Формально, получаем:

- Таймер регенерации "экрана" - 1kHz (125Hz суммарная частота кадров, раз уж есть 8 строк - кстати, ещё одна причина, по которой не хочется делать 16*80 - получаем уже 62.5Hz).

- Таймер обработки "звука" - ~22.0 kHz (получил, конечно, приблизительное значение).

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

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

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

Таймер работает на частоте 22кГц, генерирует ШИМ - для управления яркостью, и по фронтам - перезащелкивает регистр для ЦАП-а. Его частота делится внешним счетчиком (например 74хх161) на 16, (да, частота индикации получится не 1 кГц, а 1.375кГц, но кого это волнует ?). Выход таймера заведен на входы OE всех 74HC595, для управления яркостью (на время горения одной строки - придется аж целых 16 периодов ШИМ-а, как вы и хотели, да), а выход счетчика (частота деленная на 16) - заведен на вход LATCH, всех 74HC595, и на вход внешнего прерывания контроллера, чтобы генерировать прерывание для обновления сдвиговых регистров 74HC595. Хотя, если совсем уж выпендриваться, то можно обойтись и одним прерыванием: надо "рассредоточить" загрузку сдвиговых регистров на 16 "звуковых" обработчиков: для чего в "звуковом" обработчике заводим счетчик по модулю 16 (прерастить байт, и маскировать старшую тетраду), и далее, либо переходом по таблице: switch((counter++)&0x0F){case 0: .... case 15:}, на загрузку соотв части видеоданных, либо просто используя этот счетчик как смещание в памяти - если получится. Впрочем, завести выход счетчика, на вход внешнего прерывания контроллера - не вредно, а использовать это прерывание или нет - жизнь покажет.

Еще вместо внешнего счетчика - можно использовать и канал таймера (тут можно и 8 битный), в режиме деления на 16, и генерации прерывания.

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

И да, байтово-параллельная загрузка индикации - рулит, несмотря на некоторое усложнение топологии (совсем небольшое на самом деле).

 

Кстати, до меня только что дошло.. Я не могу реализовать регулировку яркости на том же таймере.. Он работает в режиме CTC == Clear Timer on Compare. Иначе я не могу получить милисекундные тики на частоте кварца. Потому, придётся рисовать костыль в виде второго таймера в качестве регулятора яркости.

Чего-то попахивает бредом. Сдается мне, вы немного тупите. Можно поподробнее плизз. Что мешает перевести таймер в PWM моде? где и частота и скважность задаются независимо. И почему нельзя в таком режиме генерить прерывания, и получать милисекундные тики ? Изменено пользователем dr.Nimnul
Ссылка на комментарий
Поделиться на другие сайты

Но IRF640 - должен гдето встречаться. Вещь очень распространенная

Таки есть. Но сегодня уже не куплю - магазин работает до 18-ти, а мы - до 18:15 :3

Это закономерно. Только не забудьте "перевернуть" индикаторы "катодами к столбцам".

Спасибо, не забуду. Вообще, совет с макетной платой очень дельный. Печально, что панелька с шагом 2.00 мм, а плата - 2.54 мм. Ну, ладно, не важно. Придумаю что-нибудь.

А транзисторы ??

Не успел ::blush

Не совсем понял. Вы же вроде сами писали, что строчные ключи - тоже с линеки 595-х ??

Да. Толлько изначально мне показалось более логичным разнести управление ими на разные пины процессора, вот и... что получилось.

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

Идея очень понравилась. Главное теперь суметь это сделать на монтажной плате... Резисторы закупил 0805, они как раз должны нормально ложиться между отверстиями (немного внахлёст, но это даже лучше - будут держаться).

Если кольцо монотонно желтое (а не желтое с белым боком) - то это скорее всего даже не K26, а MPP125 , что значительно лучше. Если правильно померяете габариты кольца - можно примерно рассчитать витки. По крайней мере, чтобы не упираться в насыщение, не перегреваться магнитными потерями, и т.д. Еще очень желательно, если есть возможность где-нибудь померить индуктивность - намотать витков 20-30 любого провода, и написать тут измеренную индуктивность этой обмотки (и сколько точно витков было намотано), чтоы хоть примерно прикинуть, корректность рассчета, и что это именно тот материал, который я предполагаю.

Мерять, к сожалению, не на чем. Разве что, могу собрать генератор либой мощности до 1-2Вт и замерить параметры на осциллографе (DSO Quad). Точность не очень большая, но обычно достаточно для большинства нужд.

Попробуйте узнать, нет ли возможности заказать через "Резонит"

http://newservice.rezonit.ru/

Они вообще в другие города возят, или высылают по почте. Там всетаки цены подемократичнее. (расчитал по приведенному калькулятору двуслойку 35мкм, 1.5мм, 100х200мм, - получилось 1840руб-за 1шт и 2380-за 2шт. судя по моему опыту общения с ними - это примерно соответсвует действительности)

Прикинул цены - выходит лучше, чем у нас на заводе "Иртыш". Те загнули 4000 (кажется, с мелочью) без НДС (+18% и приближаемся к 5к).

А обычный эмальпровод (ПЭТВ-2, ПНЭТ-150, ПНЭТ-120 ...) зачищать еще противнее чем МГТФ, и тоже на макетах бывает что эмаль прокалывается в неподходящем месте (реже чем с ПЭВТЛК, но всеже). Требуются ОЧЕНЬ хорошие монтажные навыки (моих не хватает), и тщатльно подобранный "правильный" провод (вплоть до того что с одной партией может получаться, а с другой - нет), чтобы качественно паять такие платы.

Либо у меня слишком большое терпение, либо у меня хороший провод. Ни одного прокола изоляции не наблюдал. Вообще, провод ведёт себя отменно. Лак не слезает при пайке, зачищать можно быстро кончиком канцелярсного ножа, хоть на 0,5мм (примерно на глаз, меньше - уже не получается).

Таким проводом подпаивался к контактным площадкам разъёма дисплейного модуля Nokia 1110i (тот ещё гад, хоть и всего 2*5 пинов).

Кстати, до меня только что дошло.. Я не могу реализовать регулировку яркости на том же таймере.. Он работает в режиме CTC == Clear Timer on Compare. Иначе я не могу получить милисекундные тики на частоте кварца. Потому, придётся рисовать костыль в виде второго таймера в качестве регулятора яркости.

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

Последняя догадка верна. Изначально таймер настроен на отработку милисекундных тиков для библиотеки TCP/IP (ну и UDP тоже), потому он и настраивается на режим работы CTC (хоть это и тоже PWM, но при достижении счётчиком заданного значения, генерится прерывание и счётчик сбрасывается). Это сделано, чтобы получить максимально приближённые милисекундные интервалы.

Datasheet

В случае с кварцем на 18.432MHz, получаем сетку значений (для делителей 64,256,1024): 288 (много) 72, 18. /Страница 107 в Datasheet'е/

Опять же, сейчас у меня заняты два таймера, и два свободны. В общем случае, можно получить ещё пару прерываний. В том числе, используя 16-ти битные таймеры, на которых можно даже сделать PWM, подходящий для работы преобразователя (sic!).

Был бы у меня кварц на 12.800, или 25.600MHz... но на первом прерывания будут идти с частотой 500Hz (в случае FastPWM (256)), а во втором - вряд ли заведётся чип.

Да и кварца на 25.600 не наблюдается. Есть на 12.833MHz. И, что-то я отклонился от темы...

Хочу предделитель, как в ARM-ках. С кучей крутилок и свистелок. ^_^

Итак, ладно. В чём сложность.

Я могу выставить предделитель + счётчик на значение 144 (для 18.432MHz), при этом смогу управлять яркостью в пределах 0..143 единицы, что в принципе, довольно много. Но "нормальный" PWM режим с возможностью менять значения 0..255 получить не смогу.

Хотя, думаю, 144 делений будет выше крыши. Думаю, Вы натакливали меня на данную мысль?

Изменено пользователем Alan
Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

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

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

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

Загрузка...

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