Pull to refresh

Обратная разработка аналоговой видеокамеры

Reading time 25 min
Views 16K

Ранее на Хабре я публиковал статьи, связанные с системой аналогового видеонаблюдения. В частности, были статьи, связанные с изучением файловой системы HDD видеорегистратора (DVR). В данной статье речь пойдёт про обзор навороченной аналоговой видеокамеры модели Evidence EVR-Y2022F с точки зрения пользователя и подробное изучение её устройства с инженерной точки зрения.

В настоящее время чаще применяется современная система видеонаблюдения на базе сетевых IP камер и соответствующего видеорегистратора. Однако, прежде всего, за счёт невысокой цены, аналоговая система видеонаблюдения всё ещё остаётся актуальной. Существует множество аналоговых видеокамер. Помимо характеристик качества изображения, есть ряд других характеристик, в частности, наличие интерфейса PTZ. Данный интерфейс позволяет управлять видеокамерой по линии RS-485 по протоколу PELCO-D с помощью DVR. Это, как правило, купольные камеры, которые можно вращать, изменяя ракурс видео. Реже встречаются камеры с интерфейсом PTZ, которые поддерживают управление оптическим зумом и фокусировкой (фокусом). Именно о такой камере пойдёт речь в данной статье.

Общий вид данной видеокамеры представлен как на обложке, так и на фотографии ниже (рис. 1). У неё удобный простой корпус и большой объектив, что привлекает внимание. Сзади расположены кнопки и разъёмы (рис. 2).


Рис. 1. Вид видеокамеры спереди.


Рис. 2. Вид видеокамеры сзади.

Как видно из рисунка, имеется разъём питания 12В, выход видео, RS-485 (A+, B-), и ещё какой-то ZFCM. Кроме этого, имеется контрольный светодиод питания и пять кнопок. Исходя из названия кнопок, очевидно, камера имеет экранное меню настроек и ручное управление зумом и фокусом. Сразу хочу отметить, что полноценного руководства по эксплуатации не существовало, и я его в Интернете также не нашёл. В упаковке был вложен только один листик с техническими характеристиками камеры. Меня очень сильно интересовал интерфейс ZFCM. В Интернете внушительной информации по этому поводу я не нашёл также, но интуитивно догадывался, что он служит для удалённого управления кнопками камеры.

При подаче напряжения на камеру на экране телевизора (или монитора), к которому она подключена, кратковременно высвечивается белая крупная надпись «HELLO» на синем фоне. Одновременно с этим слышно, как внутри камеры вращаются моторчики, перемещающие линзы. Затем появляется изображение. Направляя камеру на различные по расстоянию объекты, по изображению на экране становится понятно, что камера способна фокусироваться автоматически. Кнопками «TELE/WIDE» можно менять зум, то есть, приближать или отдалять. При этом каждый раз происходит автофокусировка. При нажатии на кнопки «NEAR/FAR» автофокусировка отключается, и фокус можно подстраивать вручную. Эта функциональная особенность очень интересна и полезна. Её можно встретить, разве что, в профессиональной фото или видеокамере. Дело в том, что алгоритм автоматический фокусировки в некоторых случаях работает не всегда эффективно. Например, тонкая ветка дерева перед камерой на фоне очень далёких объектов не будет захвачена автофокусом. Ручной фокус позволяет подстроиться на любой объект перед объективом. Кроме того, камера имеет довольно хороший зум (заявлено 22Х). На рисунках 3 и 4 продемонстрированы максимальный зум на удалённый объект и различные конфигурации ручной фокусировки при фиксированном зуме. Все изображения с камеры (стоп-кадры) в этой статье я создавал с помощью устройства видеозахвата, затем уменьшил масштаб вдвое. Ещё стоит отметить, что на экране с ЭЛТ видео с данной камеры отображается качественнее, чем на плоском ЖК мониторе.


Рис. 3. Минимальный и максимальный зум.


Рис. 4. Различные дистанции фокусировки.

При нажатии на кнопку «MENU» вызывается экранное меню белыми буквами на фоне видеоизображения. Меню состоит из разделов. Главная страница меню имеет следующий вид.


Рис. 5. Главная страница меню («MAIN»).

Методом тыка нетрудно догадаться, как управлять этим меню. Выбор пункта меню осуществляется кнопками управления зума (они же – «вверх/вниз»), а активация и конфигурирование выбранного пункта – кнопками управления фокуса (они же – «влево/вправо»). Выход из меню – повторное нажатие кнопки «MENU», причём из любого места. Для перехода на главную страницу из раздела нужно активировать последний пункт «BACK». Активация последнего пункта главной страницы «EXIT» также приводит к выходу из меню. Признаком выбранного пункта меню служит мигание параметра (если это параметр) или стрелочка справа (если это раздел меню). На рисунке выше я уже выбрал второй пункт меню на главной странице.

Первый пункт меню главной страницы – адрес камеры для протокола PELCO-D. Последний пункт (не считая EXIT) – сброс на заводские настройки. Рассмотрим остальные пункты – 6 разделов меню. На страницах разделов последний пункт «BACK» для перехода на главное меню уже подсвечен стрелочкой, а признак активации данного пункта – мигающая стрелочка. Ещё стоит отметить, что над пунктами посередине экрана высвечивается слово «MAIN» на главной странице меню и название раздела меню на страницах раздела.


Рис. 6. Раздел меню «FOCUS».

С помощью первого пункта раздела «FOCUS» (рис. 6) можно выбрать принудительно автофокусировку, принудительно ручную фокусировку, или режим по нажатию. Последнее означает, что нажатие кнопок фокуса отключает автофокусировку, а нажатие кнопок зума (смена характеристики приближения) – включает её. Второй пункт позволяет ограничить ближнюю дистанцию фокусировки. Третий пункт – принудительная инициализация зума и фокуса, как при включении камеры. Четвёртый и пятый – ограничение зума.


Рис. 7. Раздел меню «WB MODE».

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


Рис. 8. Раздел меню «AE MODE».

Третий раздел (рис. 8) посвящён настройке экспозиции. Первый пункт данного раздела позволяет выбрать автоматический или ручной режим экспозиции. При ручной экспозиции доступны три следующие пункта (2, 3, 4). С помощью второго пункта раздела настраивается значение характеристики АРУ (автоматической регулировки усиления). С помощью третьего – значение яркости (но там есть ещё значение «AUTO»). С помощью четвёртого – значение затвора. Оно также влияет на усиление и яркость изображения.


Рис. 9. Раздел меню «GENERAL» с активным параметром «MIRROR».

Четвёртый раздел (рис. 9) посвящён другим отдельным настройкам. Первый пункт – режим зеркального изображения (отображение слева направо). В данном случае, как видно из рисунка, он активен, и изображение на заднем фоне зеркально развёрнуто. Это я сделал специально, чтобы продемонстрировать данный режим. Второй пункт – компенсация заднего света. Третий пункт – режим день/ночь. Можно выбрать дневной режим, ночной режим или автоматическое определение. В ночном режиме камера выдаёт чёрно-белое изображение. Четвёртый пункт – выбор скорости передачи данных RS-485 для протокола управления. Наконец, пятый пункт данного раздела – выбор протокола. Кроме «PELCOD», другие варианты здесь отсутствуют.


Рис. 10. Раздел меню «OSD DIS».

В пятом разделе (рис. 10) настраиваются параметры отображения на экран той или иной информации при работе камеры. Первый пункт позволяет выбрать режим отображения: отображать всегда, никогда не отображать, или, как выбрано по умолчанию, отображать несколько секунд при изменении фокуса/зума. Второй пункт разрешает отображение номера камеры, точнее, адреса в RS-485. Он отображается в верхнем левом углу. Третий пункт разрешает отображение режима фокусировки. Четвёртый пункт разрешает отображение значения зума. Оба параметра отображаются в нижнем правом углу (в обычном режиме, когда меню не активно). На одном из шести изображений с камеры на рис. 4 можно заметить отображение данной информации, которое ещё не успело исчезнуть.


Рис. 11. Раздел меню «IR LIGHT».

Последний шестой (рис. 11) раздел посвящён настройке управления инфракрасной подсветкой. В данной камере подсветка или её интерфейс отсутствуют, следовательно, данный раздел меню носит бесполезный характер. Но, видимо, прошивка универсальная, поэтому это предусмотрено. Как я понимаю, можно настроить включение одной из трёх подсветок на том или ином интервале положения зума. Первый пункт – включение или отключение всего этого функционала. Второй пункт – выбор номера подсветки (1, 2, 3). Следующие три пункта – настройка параметров для каждой подсветки в отдельности. То есть, третий пункт – включение или отключение данного функционала для текущей выбранной подсветки. Четвёртый пункт – значение зума для включения подсветки (левая граница интервала). Пятый пункт – значение зума для отключения подсветки (правая граница интервала).

Вот я и закончил рассмотрение настроек меню. Стоит отметить, что навигация по меню неудобна, и имеются небольшие задержки. Несмотря на то, что конфигурация камеры с помощью меню происходит один раз или очень редко, всё равно это напрягает. Точнее, отсутствует возможность «быстро бегать» по меню опытному пользователю. А одногерцовое мерцание символа или параметра, как признак выбора текущего пункта, вовсе непривычно. Даже в процессе захвата изображений меню для иллюстраций я не всегда успевал поймать тот момент, чтобы активный мигающий параметр был на экране. Короче говоря, реакция на нажатие кнопки не мгновенна, следовательно, очень быстрые нажатия не обрабатываются. Я вспоминаю кнопочные телефоны середины двухтысячных, в частности, Nokia или Siemens, где нажатия на кнопки обрабатывались мгновенно. Современные дешёвые кнопочные телефоны не обладают такой возможностью. Нечто похожее наблюдается и в случае с навигацией по меню в описываемой камере.

Теперь приступим к разборке камеры. На это дело меня побудил не только технический интерес, но и более банальная причина: через несколько месяцев эксплуатации камеры она «приказала долго жить». Причина выхода из строя была предположительно очевидна: сдохла прошивка. Тем не менее, я решил заглянуть во внутрь камеры, надеясь на удачный исход ремонта.

Визуально камера состоит из трёх печатных плат. Я сразу же начал подробно рассматривать первую плату, на которой расположены кнопки с разъёмами. Отсоединив плату от гибкого шлейфа и перевернув на другую сторону, я увидел, главным образом, пять оптронов, микросхему преобразователя UART в RS-485 и её линейный регулятор на 5В (кренку). Решил зарисовать схему этой платы, вызванивая все дорожки и контакты тестером. Получилась такая схема.


Рис. 12. Схема первой платы.

В процессе зарисовки схемы сразу стало понятно, как пользоваться интерфейсом ZFCM, но обо всём по порядку. Пять имеющихся кнопок подключены к цепочке последовательно соединённых резисторов. То есть, контроллер обрабатывает нажатия кнопок за счёт АЦП всего по одному пину. Каждой нажатой кнопке соответствует определённое напряжение на нём за счёт резистивного делителя, а нажатия нескольких кнопок не обрабатываются. Ну, с этим всё понятно, это классика. Теперь по поводу оптронов. А они как раз и нужны для ZFCM! К каждой кнопке параллельно приделан транзисторный оптрон своей выходной частью, а входные светодиодные части оптронов (в дальнейшем – анод и катод) хитро соединены с клеммами ZFCM. Срабатывание каждого оптрона эквивалентно нажатию на соответствующую ему кнопку. Анод оптрона, соответствующему кнопке «MENU», идёт на клемму «M» (Menu), а катод – на клемму «C» Светодиодные части оптронов, соответствующие двум кнопкам зума, соединены между собой встречно-параллельно, и эти два конца идут на клеммы «C» и «Z» (Zoom). Такая же история и с оптронами кнопок фокуса, только клеммы – «C» и «F» (Focus). Таким образом, получается, клемма «С» – общая (Common). В цепи оптронов стоят ограничительные резисторы по 2.2 КОм, предположительно для того, чтобы оптроны зажигать от напряжения 12В. То есть, для удалённого нажатия на кнопку «MENU» нужно от обычного БП подать 12В на клеммы «C» (минус) и «M» (плюс). С кнопками зума и фокуса посложнее. Для удалённого нажатия, например, на кнопку «WIDE» (она же – кнопка «вниз») нужно подать 12В на клеммы «Z» и «C» с аналогичной полярностью. А для эмуляции кнопки «TELE» (она же – кнопка «вверх») полярность нужно сменить. Аналогичная операция будет и для оставшихся двух кнопок, то есть для фокуса, только вместо клеммы «Z» будет участвовать клемма «F». Пульт управления для реализации ZFCM можно выполнить, например, так.


Рис. 13. Реализация пульта управления для ZFCM.

Схема требует двухполярного источника питания, но можно поставить две батарейки по 12В, и даже «Кроны». Резисторы по 620 Ом (такие попались мне под руку) предотвращают короткое замыкание при одновременном нажатии парных кнопок зума или фокуса и, в целом, негативно на работу не сказываются. В целом, схема первой платы простая, в дополнительных комментариях не нуждается. Ещё могу отметить, что в целях помехоустойчивости «земля» видеосигнала приходит отдельно от общей «земли». А ещё, приёмопередатчик MAX485 (в схеме – его китайский аналог) работает только на приём информации, так как 2 и 3 выводы его соединены с GND. И это несмотря на то, что его вывод «DI» выведен на разъём J302 и подключен к МК.

После изучения первой я поверхностно рассмотрел остальные платы, а именно – все большие микросхемы, входящие в их состав. Платы двухсторонние, и обе стороны набиты компонентами одинаково плотно. На самой большой плате расположен «мозговой центр» – контроллер FBS101 неизвестного происхождения, а также куча микросхем, транзисторов и других мелочей. На третьей плате, которая поменьше (расположена за первой) находится куча микросхем фирмы SONY, в частности, ПЗС (то есть видеоглазок), плотно соединённый с оптической частью камеры, а также куча других мелочей. Судя по нумерации компонентов, третья плата на самом деле не третья, а вторая, а вторая – третья. Но я с самого начала условился считать наоборот. Первая и третья платы соединены со второй (главной) двумя гибкими шлейфами. Также со второй платой соединён шлейф, на котором смонтированы два моторчика (для зума и фокуса) и два соответствующие им концевика. Они не видны и размещены внутри оптической части. Забегая вперёд, сразу отмечу, что концевики (концевые выключатели) на самом деле служат датчиками нулевого положения и стоят не на концах, а посередине.

Я нашёл даташит на самую большую микросхему третьей платы (видеопроцессор CXD3142R). Затем – даташиты на остальные микросхемы той же платы. В частности, одна из микросхем, как я выяснил, служит так называемым знакогенератором (PD6464A). Через неё проходит сформированный видеопроцессором аналоговый видеосигнал на видеовыход, и она отвечает за наложение символов на видео. Именно она формирует надписи на экране, в частности, меню. Микросхема популярная, даташит на неё достаточно простой. Данная микросхема (или аналогичные ей) применялась в видеомагнитофонах и VHS камерах из девяностых.

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

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

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


Рис. 14. Видеокамера в разобранном виде.


Рис. 15. Виды печатных плат с обратной стороны.


Рис. 16. Видеокамера в полуразобранном виде.

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



Рис. 17. Структурная схема видеокамеры.

Самый большой «прямоугольничек» – это главный микроконтроллер (МК) U501 на основной плате. Кстати, маркировки всех компонентов написаны на платах рядом с компонентами, что очень удобно. Внутри МК на рисунке много пустого места, поэтому я решил прямо там поместить таблицу с описанием сигнальных выводов. Видеопроцессор U201 связан с МК не только SPI интерфейсом (выводы 20 (XCK), 26 (CLK), 27 (DATA_IN), 28 (DATA_OUT)), но и дополнительными сигналами. Прежде всего, это параллельная 8-битная шина цифрового видеосигнала. А также – синхронизирующие импульсы строк (38), кадров (39) и каждого элемента изображения (29). Благодаря подсчёту этих импульсов контроллер знает, о каком пикселе какого поля или кадра приходит информация по шине цифрового видеосигнала. Через вывод RST (19) МК осуществляет сброс видеопроцессора при старте. А через вывод AGC (80) МК знает о состоянии значения АРУ, поступающего с одной из периферийных микросхем видеопроцессора. Как я уже писал, аналоговый видеосигнал проходит на выход «сквозь» знакогенератор U402. На него от МК идёт SPI интерфейс параллельно SPI интерфейсу видеопроцессора, за исключением строб-сигнала (выбор чипа) – вывод (21) МК. Видеопроцессор способен выдавать видеосигнал, как в аналоговой форме, так и в цифровой. Цифровой сигнал, приходящий на МК, нужен, очевидно, для функции автофокусировки. Именно МК и осуществляет управление моторчиками зума и фокуса. Моторчики являются обычными биполярными шаговыми двигателями (ШД). На каждый двигатель МК выделено по 4 вывода. Для зума – (44, 46, 54, 55), а для фокуса – (45, 47, 50, 51). Драйверы ШД, о которых я напишу позже, устроены так, что сигналы подаются на них уже в дешифрованном виде. Вообще, для управления механическим узлом при помощи ШД или другого привода с позиционированием достаточно одного концевика, который будет являться ноль-меткой, а за конечными положениями узла можно следить программно, считая шаги ШД. В таком случае при включении системы нужно произвести «инициализацию», то есть, «доехать» до ноль-метки и вернуться обратно, при этом запомнить, сколько шагов проехали. В нашем случае так оно и реализовано, и данный алгоритм инициализации происходит каждый раз при включении камеры. Сигнал с концевика ноль-метки фокуса приходит на вывод (4) МК, а зума – на вывод (5). Концевиками служат открытые оптопары, и по выводу (18) МК происходит включение светодиодных частей обоих концевиков. Однако, забегая вперёд, на протяжении всего времени работы камеры данный сигнал всегда активен. На вывод (1) МК приходит аналоговый сигнал с кнопок, а на вывод (42) (UART-RX) – информация с интерфейса RS-485. Таким образом, МК управляет видеопроцессором, знакогенератором (что печатает на экране буквы и цифры), обрабатывает команды с кнопок и PELCO-D, управляет оптическим зумом и фокусом. Но самая ключевая и сложная фишка МК – обработка и анализ видеосигнала, приходящего по цифровой шине, для реализации автофокусировки.

Что ещё интересного на основной плате? Есть два неизвестных и незапаянных разъёма (места для них). Один из них J503 – 12-пиновый – я расшифровал, когда нарисовал схему. Уже изначально я догадывался, что этот разъём служит для перепрошивки. Так оно и получилось. Назначение второго разъёма J505 (5-пинового) я разгадал гораздо позже. К нему цепляется та самая инфракрасная подсветка (точнее, три), о которой шла речь при описании последнего раздела меню. Рядом с разъёмом J503 расположена микросхема U503 SPI EEPROM. Я сразу не понял её назначение, так как её маркировка не так просто пробивалась в Интернете. Сначала я думал, что это I2C EEPROM. Под ней, на другой стороне платы, расположена ещё одна микросхема U502 с маркировкой HA125. Это 4-канальный повторитель, похожий на популярную микросхему 74HC244. Каждый канал можно открыть или закрыть логическим сигналом. Один канал работает на схему сброса МК, как повторитель. А через оставшиеся три канала определённым образом проходит линия SPI между МК, третьей платой, и EEPROM. Данная связь изображена на схематическом рисунке ниже (рис. 18). Это нужно для работы с программатором. При подключении программатора в разъём J503 осуществляется деактивация трёх каналов повторителя U502, тем самым, отсоединяя МК от SPI EEPROM.


Рис. 18. Структурная схема организации SPI и периферии.

По рисунку видны назначения каждого вывода разъёма J503. Остальные выводы – питание и «земли», которые я не отметил. Разъём J502 – выходной разъём к третьей плате с видеопроцессором. Через разъём программирования J503 можно не только работать с EEPROM U503 (по выводам разъёма 7, 9, 11, 5), но и обмениваться данными с видеопроцессором (выводы разъёма 5, 10, 8, 12). Возможно, на той третьей плате тоже можно что-то перепрошивать. А вообще, можно вести отладку всего видеотракта внешним SPI устройством. Ещё рядом с U502 имеется мелкая микросхема U504, которая, видимо, служит активным сумматором сигналов MISO интерфейсов SPI, приходящих с EEPROM и с видеопроцессора. Видимо, EEPROM работает только на этапе загрузки прошивки при включении камеры. В дальнейшем она не отправляет свои данные по SPI в сторону МК. В процессе работы камеры данные по SPI будут приходить только от видеопроцессора (если вообще будут). То есть, перемешивания входящих в сторону МК SPI сигналов не происходит.

Схема организации электропитания оказалась не очень простая. Её компоненты занимают, чуть ли не половину всей платы: куча DC-DC преобразователей, линейных регуляторов и стабилитроны. Чтобы было более понятно, я нарисовал структурную схему.


Рис. 19. Структурная схема организации электропитания.

На первой плате всё просто. Элемент U201 служит для питания U202 MAX485, он вырабатывает 5В. На второй плате всё гораздо сложнее. Элементы U803 и U805 вырабатывают напряжения соответственно 3.3В и 1.8В для питания МК, U801 – для питания ШД (5.5В). Элемент U804 вырабатывает 5В, в основном, для третьей платы. На текущей плате он используется только в одном месте, и то, в незначительном. Элемент U802 вырабатывает вспомогательное напряжение 3.6В, которое является входным для U803 и U805. Оно же ещё поступает на элемент U207 третьей платы, который вырабатывает 3.3В. Отсюда же, совместно с Q801 и Q802 непонятно каким образом рождаются напряжения -8В (отрицательное) и 18В. Я в это дело особо не вникал. Они поступают сразу на третью плату. Там отрицательное напряжение -8В с помощью стабилитрона D201 превращается в -5.1В, а 18В с помощью U205 преобразуется в 12В. Отрицательное напряжение требует ПЗС исходя из физических особенностей преобразования «свет-сигнал».

При изучении схемы основной платы я выявил присутствие драйвера ещё одного моторчика, который в данной камере отсутствует. Прослеживая шлейф с ШД и концевиками от соответствующих выводов разъёма, можно заметить, что соответствующие дорожки на нём заворачивают в сторону объектива, и в этом месте шлейф обрывается. Вероятнее всего эта часть шлейфа, как и лишний драйвер на плате, предназначена для двигателя диафрагмы, который не предусмотрен в данной модели камеры. Ещё на шлейфе есть лишние дорожки, соответствующие выводы разъёма которых вовсе не задействованы. Возможно, они предназначены для концевиков диафрагмы. Или же, часть неиспользуемых дорожек шлейфа имеют отношение к механическому затвору (та самая «защёлка» на многих моделях видеокамер). Возможно, неиспользуемый драйвер на плате как раз для него и предназначен. На рисунке ниже приведены для удобства типовые схемы драйверов, применяемые в камере. Первая схема – одна из двух одинаковых схем управления ШД. Вторая схема – неиспользуемый драйвер, судя по всему, для защёлки. Он же может служить драйвером для управления обычным DC моторчиком, но для привода диафрагмы логичнее было бы ставить ШД.


Рис. 20. Типовые схемы драйверов для механизмов оптики.

Схемы классические, поэтому в подробных комментариях могут не нуждаться, но я всё же напишу кратко. Первая схема работает следующим образом. При подаче логической «1» на «упр.1» и «0» на «упр.3» работает одна (верхняя) обмотка ШД в прямой полярности. Если поменять «0» и «1» местами – полярность на обмотке меняется. Если подать оба «0», то напряжение на обмотке пропадает. Обе «1» являются запрещённой комбинацией (можно догадаться, что будет). Аналогично – для нижней обмотки («упр.2» и «упр.4»). Таким образом, если подавать «1» по очереди в нужном порядке на эти четыре входа управления, то ШД будет вращаться в ту или иную сторону. Вторая схема работает похожим образом, как одна из двух половинок первой схемы. Если в качестве моторчика будет стоять обычный DC мотор, то логические комбинации «0-1» и «1-0» на управляющих входах реализуют его прямое и обратное вращение соответственно, а одноимённые комбинации «0-0» и «1-1» реализуют его остановку. Если вместо моторчика будет стоять электромагнитная защёлка, то есть механический затвор, то логические комбинации «0-1» и «1-0» будут реализовывать его открытие и закрытие. Диоды на приведённых схемах, включенные встречно с нагрузкой, служат для гашения обратной ЭДС.

Пришла пора представить полные схемы второй и третьей плат.


Рис. 21. Схема второй платы (основная плата).


Рис. 22. Схема третьей платы (плата с ПЗС и видеопроцессором).

Вокруг микроконтроллера напаяно много резисторов и конденсаторов, которые занимают половину всех выводов. Ещё на платах присутствует множество диодных сборок (маркировка «A7»), стоящие в защитных целях, а в драйверах ШД – сдвоенные транзисторные сборки. Кварц МК Y501 имеет частоту 12 МГц. Не отражённые на схеме «нулевые» резисторы R645, R646, R647, R648 нарисованы в стороне. Они были обнаружены довольно поздно, когда все схемы были уже оформлены. Для минимизации линий и предания схеме хоть какой-нибудь наглядности, я применил шинный принцип, а линии питания раскидал входящими и выходящими стрелками внутри которых написаны имена значений напряжений (переменные Vcc1…Vcc5, их значения отображены в углу схемы). Схема третьей платы получилась запутаннее. Номинал кварца видеопроцессора Y201 в 18.9375 МГц выбран исходя из параметров видеосигнала для заявленной системы цветности PAL. Одна из периферийных микросхем – 8-канальный ЦАП U204, служит для формирования опорных нужных напряжений, значения которых можно изменять через SPI видеопроцессора. Напряжение с одного из свободных каналов ЦАП (AO7) поступает на 23 вывод знакогенератора. По даташиту, туда подаётся опорное напряжение для задания уровня выходного видеосигнала с этой микросхемы. Это сделано для возможности программного изменения значения этого опорного напряжения через видеопроцессор по определённой команде через SPI.

Кроме схем, я нарисовал эскизы печатных плат с обеих сторон в масштабе 2:1, где изображены все компоненты с их маркировками (рис. 23). Сравнивая перечни компонентов схем и эскизов, я делал работу над ошибками по упущенным компонентам. Именно на этом этапе я обнаружил отсутствие тех самых четырёх перемычек, решив дорисовать их в стороне.


Рис. 23. Эскизы печатных плат.

В заключение этой части статьи приведу схему разводки шлейфа с ШД и концевиками.


Рис. 24. Схема разводки шлейфа с ШД и концевиками.

Затем я приступил к более детальному исследованию каждого узла, предварительно отпаяв МК U501 и EEPROM U503.

Концевики расположены примерно посередине траекторий, по которым перемещаются линзы зума и фокуса. Перемещения происходят за счёт вращения винта на осях ШД. Их можно демонтировать, чтобы перемещать узлы вручную, при этом они очень легко перемещаются, даже под собственным весом. Именно таким образом я установил, в каком месте срабатывают концевики, при этом зафиксировал направления переходов сигналов с концевиков из «0» в «1». Данное направление я условился считать положительным. Возникла идея ввести систему целочисленных координат F(Z) для наглядности и облегчения моделирования. За ноль условился считать ту точку, в которой срабатывают концевики. В качестве значений координат взял целые числа – шаги ШД, так как положения вала ШД, а, следовательно, и положение линз, дискретны. Осталось только определить пределы (границы) по зуму и фокусу. Их я определял эмпирически, сделав тестовую прошивку на отладочной плате и припаяв 8 проводочков к драйверам ШД. Удобнее всего припаивать к резисторам, которые стоят в цепях баз после соответствующих выводов МК. Передвигая вручную зацепления (узлы), я обнаружил интересную особенность данной механической системы. Если узел фокуса отодвинуть полностью влево до конца, а узел зума плавно перемещать из среднего положения вправо, то перед самой крайней правой границей (не доходя примерно 10% всей длины) он начинает тянуть за собой узел фокуса. Это особенность механики оптики, которая закрыта и недоступна (я её не разбирал). То есть, получается, нельзя одновременно отодвинуть узел фокуса до упора влево и узел зума до упора вправо. Эту особенность я также принял во внимание. Эмпирически я установил значение координаты зума, при которой начинает происходить эта особенность. Если сделать зарисовку на плоскости, в роли абсциссы взять зум, а в роли ординат – фокус, то получится примерно такая картинка.


Рис. 25. Область ограничения регулировок зума и фокуса.

Жирной линией на координатной плоскости изображена почти прямоугольная область, ограничивающая допустимые координаты, точнее, возможные положения узлов зума и фокуса. Почему почти? Потому что, исходя из особенностей хитрости механики, о чём я написал выше, нижний правый угол прямоугольной области исключается. По горизонтали прямоугольник больше примерно вдвое, чем по вертикали. Это связано с тем, что по линейным размерам длина перемещения зума больше, чем фокуса, о чём я уже писал ранее. А винты, передаточные числа и ШД – одинаковые. Как видно из рисунка, зум изменяется от -600 до 600, то есть ноль-метка расположена ровно посередине. Для фокуса этот интервал составляет от -340 до 280, ноль-метка немножко смещена. Вообще, теоретически, ноль-метку (концевик) можно располагать в любом месте. Относительные координаты среза нижнего правого угла составляют -100 на -100. То есть, когда фокус находится в крайнем отрицательном положении, а зум увеличивается в плюс, то, когда он дойдёт до 500, он механически потянет за собой фокус. Напомню, что числа (значения координат) – это шаги ШД. Пунктирные линии за пределами рабочей пятиугольной области – это границы области «с натяжкой», когда механика ещё простит ошибки. Хотя, при исследовании я ошибался не раз, и ШД с треском прокручивались сквозь зацепления, которые упирались в край. Не знаю, какая реально рабочая область была в работающей камере, но мне кажется, что она была гораздо меньше и, конечно же, прямоугольная. Прямоугольник лежал внутри в данной пятиугольной области, а срезанный угол оставался за его пределами. Иными словами, реальные пределы зума и фокуса в оригинальной прошивке возможно были меньше, чем это позволяет механика. Вряд ли бы китайцы так заморачивались. Да и понятно, что не каждая точка в данной области имеет практический смысл, ибо нас интересуют только сфокусированные изображения. Да и, возможно, внутри области присутствует множество бессмысленных точек с точки зрения оптики, но здесь не ставится задача вдаваться в её теорию и разбираться в механике. В оригинале, скорее всего, имеются ограничение по фокусу снизу (от -240) и немножко сверху (до 240), доводя область до прямоугольной формы с центральной симметрией, заодно исключая срез в нижнем правом углу. Тем не менее, у меня были планы реализовать в собственной прошивке всю пятиугольную область, а затем посмотреть, как это будет отражаться на практике. Да и с нижним правым углом я уже придумал, как справиться.

Для продолжения исследования я нашёл точно такую же камеру в рабочем состоянии. Первым делом я тупо припараллелил выход SPI МК рабочей камеры, что идёт на видеопроцессор, к нерабочей камере. То есть, МК рабочей камеры производил инициализацию сразу двух видеопроцессоров параллельно. Кратко говоря, я убедился в том, инициализация прошла успешно, и нерабочая камера начала выдавать изображение. Исследуя осциллографом сигналы на ШД, я убедился в наличии ШИМ, скважностью 1:4 и частотой примерно 400 кГц.

Затем я начал изучать даташит на видеопроцессор. В отличие от даташита на знакогенератор, он оказался мутноватым. Чтобы сильно не забивать голову, я сделал на своей макетной плате временное вспомогательное устройство под названием «SPI анализатор». Кстати, забегая вперёд, замечу, что SPI видеопроцессора изначально использует уровни 3.3В, но и с уровнями 5В всё работает успешно. Возможно, чип допускает толерантность к 5В. Я не вдавался в детали, насколько это критично. Дело было несколько лет назад, и сейчас я сам уже не помню, какие факты я тогда принимал во внимание. Сначала я подключил свой анализатор к знакогенератору работающей камеры. Вызывая меню и бегая по нему, я ловил и записывал через UART терминал байты, приходящие на знакогенератор. Отдельно обратил внимание на инициализацию знакогенератора при включении питания видеокамеры. Всё было сравнимо с даташитом, всё успешно. А вот с байтами на видеопроцессор оказалось всё интереснее. В даташите на видеопроцессор представлена куча регистров, которые разделены на категории (группы). У каждой категории есть также свой адрес (номер). Среди всей этой кучи через «Ctrl+F» я нашёл ключевое слово «MIRROR». Этому параметру соответствует бит 7 девятого регистра в третьей категории. Видимо, МК опрокидывает данный бит, когда пользователь выбирает в меню функцию «MIRROR». Это режим зеркального изображения, при обзоре меню я упоминал об этой функции. И я решил привязаться именно к этому параметру. Пока не обращая внимания на байты инициализации, я зашёл в соответствующий раздел меню и начал щёлкать этот параметр. При этом SPI анализатор записывал байты, которые он принимал. При включении зеркального режима МК отправил видеопроцессору 48 байт, большая часть из которых были нулевые. Я начал смотреть только ненулевые байты. Они никак не подгонялись под те адреса в даташите, где присутствует функция «MIRROR». Я решил с помощью Excel реверсировать биты этих байт. Вот только тогда уже начало что-то сходиться и проясняться. Пришёл к выводу, что в параметрах SPI для видеопроцессора применяется бит-реверсный порядок (LSB First). Посылку из 48 байт я условно разделил на три группы по 16 байт. В каждой группе первые 4 байта ненулевые, а остальные 12 – нулевые. Первый ненулевой байт в четвёрке имеет всегда постоянное значение (0x04) (в чём я также убедился в дальнейшем). Второй байт – номер категории. Третий – номер параметра в категории, и, наконец, четвёртый – значение параметра. Как раз, четыре байта в третьей группе полностью подходили под адреса и значения, соответствующие «MIRROR». Как при включении, так и при отключении я увидел изменение соответствующего бита. А первые две группы байт при этом повторялись. Первая группа байт зачем-то прописывала 0x00 в регистр №1 категории №2, что есть значением по умолчанию (согласно даташиту), а вторая группа байт выставляла bit4 регистра №4 категории №2 в «1». Значение этого регистра в сводке даташита я не понял. На рисунке ниже представлен скриншот Excel с трафиком SPI при включении режима «MIRROR» Красным цветом выделена нужная «единичка», ради которой всё затевалось. Первые две колонки – принятые байты без реверсирования битов. А колонки «S-T» – с реверсированными битами.


Рис. 26. Анализ SPI трафика в Excel.

Потом я решил сконструировать «SPI генератор» на той же отладочной плате, чтобы попробовать отослать видеопроцессору упрощённую команду из четырёх байт, вместо 48. Первый байт – константа (4). Второй байт – адрес категории (3), третий байт – адрес параметра (9), четвёртый байт – значение параметра. Если для «MIRROR» это бит 7, то, сохраняя остальные биты (взятые из принятых данных), получается, что «0xB0» включает зеркальный режим, а «0x30» – отключает. Эксперимент завершился успешно! Таким образом, SPI посылка видеопроцессору может выглядеть так: (0x04, CAT, PAR, VALUE), то есть, константа 4, номер категории, номер параметра в категории и значение параметра. В этом я убедился, проверив ещё на нескольких примерах по другим адресам с понятными параметрами. А почему же МК отправляет видеопроцессору столько лишних нулевых байтов? Я решил подключить свой SPI анализатор к выводу «SO» (то же, что и MISO) видеопроцессора. Как оказалось, видеопроцессор в сторону МК отправляет различные байты, в то время как МК передаёт нули. Я не занимался их расшифровкой, да и в даташите мало внятной информации по поводу «Serial Out».

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

Затем я перешёл к исследованию байтов инициализации видеопроцессора. При этом я зафиксировал 47 4-байтовых посылок. Среди них было множество повторений! Не знаю, почему так сделано. Я поместил в свой SPI генератор все эти посылки, исключив повторы. В результате получилась 21 посылка, и инициализация собственным SPI генератором также прошла успешно.

После инициализации я начал исследовать перехватываемые байты, которые МК отправляет видеопроцессору во время изменения тех или иных пунктов меню. Весь «протокол» я вёл в таблице Excel. Также наблюдалось множество «лишних» посылок и повторений, как и при инициализации, но я обращал внимание только на ключевые моменты, опираясь на даташит видеопроцессора. Параметры меню, одноимённые с параметрами в даташите, я комментировать не буду. Отмечу лишь самые интересные моменты, которые касались не совсем понятных параметров в меню. Это, прежде всего, третий параметр в разделе «GENERAL», который называется «D/N». Я уже упоминал, что он имеет три значения: «день», «ночь», «авто». Как оказалось, значение параметра «день» полностью идентично значению параметра «авто». То есть, по сути, здесь на самом деле только два уникальных параметра. Анализатор показал, что при смене значения параметра редактируется девятый байт в третьей категории, как и в случае с параметром «MIRROR». Но при смене параметра «MIRROR» редактировался только один бит (bit7) этого байта. А при переключении «D/N» редактируются bit5 и bit4. В дневном режиме эти биты подняты в «1», а в ночном – «0». Если поглядеть в даташите на структуру этого байта, то видно, что самые младшие пять битов (bit0…bit4) отвечают за уровень «burst» составляющей видеосигнала, а bit5 – за его инверсию. Получается, что ночной режим соответствует нулевому значению уровня burst с его инверсией, а дневному режиму – уровню burst, равным 0x10, и без инверсии. И значение уровня, кстати, отличается от значения по умолчанию, указанного в даташите (0x12 для NTSC и 0x13 для PAL). С помощью своего SPI отладчика я проделал эксперименты с этим байтом, отправляя его видеопроцессору различными значениями. Если параметр «Уровень burst» будет нулевым, то изображение будет чёрно-белым независимо от значения бита «Инверсия burst». По мере увеличения уровня burst на экране прибавляется цветность изображения, а инверсия burst меняет красные и синие цвета местами (судя по всему, меняются местами цветоразностные компоненты видеосигнала) Значение уровня 0x10 визуально почти ничем не отличается от значения из даташита 0x13. Таким образом, «ночной» и «дневной» режим в настройках камеры – это просто чёрно-белое или цветное изображение. А «авто» – это то же самое, что и «дневной». Возможно, что МК осуществляет дополнительные манипуляции с механическим затвором, отсутствующий в данной модели. Но я не контролировал сигналы на входах неиспользуемого драйвера. И ещё есть одно замечание в третьем разделе меню «AE MODE», посвящённый настройкам экспозиции. Третий параметр, с помощью которого настраивается яркость, имеет 15 градаций (1…15) и ещё значение «AUTO», о чём я упоминал в обозрении меню выше. Что показал анализатор? При изменении этого параметра редактируется пятый байт шестой категории, соответствующий значению опорного напряжения видеопроцессора. Оно вырабатывается на шестом канале периферийного ЦАП U204, про который я уже кратко писал. Рекомендуемое значение по умолчанию из даташита – 0x58 (или 88). В нашем же случае он меняется от 40 (при значении яркости 1) до 96 (при значении яркости 15), то есть, с шагом, равным 4 (если посчитать). Сразу приведу список значений, которое отправляет МК в зависимости от различных 15-ти значений яркости из меню: 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96. А вот, когда выбирается значение «AUTO», то МК отправляет значение байта, равное 66. Если заметить или посчитать, это значение соответствует среднему значению яркости (между значением 7 и значением 8), то есть типа посередине. Вот такую идею воплотили китайцы в своей прошивке.

Исследуя последний раздел меню, у меня интуитивно возникла мысль померить напряжения на неизвестном разъёме J505. Щёлкая параметры этого раздела, я увидел изменение уровней напряжения на некоторых выводах этого разъёма, после чего я сразу понял его предназначение.

Ну, в принципе, на этом можно закончить данную большую статью. Следующая статья, как продолжение этой, будет посвящена разработке собственной прошивки для данной сломанной камеры. Перед разработкой были произведены все необходимые процедуры. Мной были не только нарисованы и изучены схемы, но и подробно изучены и исследованы протоколы обмена МК с периферией. А также, исследована механическая часть и выполнены необходимые измерения.
Tags:
Hubs:
+41
Comments 14
Comments Comments 14

Articles