Чипуем старый объектив Sigma для работы с современными камерами Canon

Вроде проблема известная, а подробного поста нет. Непорядок! Представим вы купили где-то на барахолке старый объектив Sigma с креплением Canon EF, которые использовались ещё с плёночными фотоаппаратами Canon и поставили на свой цифровой фотоаппарат Canon. Объектив работает — автофокус шевелится и на открытой диафрагме снимки получаются. Но при попытке сфотографировать с прикрытой диафрагмой фотоаппарат выдаёт ошибку Err 01.

u2mnklcnryzklu9hy3qvw4dgmis.jpeg
С такой же проблемой столкнулся и я. Купил на барахолке вот такой объектив:

a-i8s_6hvco9p8un5b16oip600s.jpeg

И тут моя вина — невнимательно читал описание. Объектив старый, для старых ПЛЁНОЧНЫХ камер Canon EOS. И продавец честно предупредил в описании, что с современными цифровыми камерами работает только с открытой диафрагмой. Я расстроился и пошёл в гугл искать, как решить проблему. И нашёл.

Источник проблемы в протоколе общения объектива с камерой. Объективы Canon EF принимают два варианта команды установки диафрагмы 0х12 YY и 0х13 YY, где YY значение шагов закрытия диафрагмы. Старые плёночные фотоаппараты canon отдавали для установки диафрагмы команду 0х12, а вот цифровые фотоаппараты для установки диафрагмы стали использовать команду 0х13. Разработчики в Sigma такое разнообразие протокола не предусмотрели, поэтому некоторые старые объективы от плёночных камер могут выдавать ошибку err 01. (Весьма подробный реверс и разбор протокола общения фотоаппаратов Canon с объективами я нашел на французском языке.)
Для исправления этой ошибки необходимо внедрить микроконтроллер на линию между объективом и фотоаппаратом, который бы на лету подменял злосчастную команду 0х13 на 0х12. К счастью, в интернете есть несколько проектов, где авторы уже решили эту задачку. К сожалению, по некоторым ссылкам сайты более недоступны. В такие моменты поминаешь добрым словом проект Web Archive, но к сожалению, они сохраняют не все.

Я использовал проект Гектора Мартина. Преимущество его варианта — микроконтроллер не висит посредником на линии, пропуская всю коммуникацию через себя, а висит параллельно линии, подслушивая и «прихлопывая» последний бит команды 0х13, превращая её в 0x12, для чего в линию DCL запаивается сопротивление.

Для реализации нам нужен максимально компактный микроконтроллер. Автор использовал attiny13A. Я его заказал на Озоне (сам удивлён), с доставкой дороговато, зато быстро — ну не ехать же через весь город в мою любимую промэлектронику ради одного микроконтроллера? Нам нужен в корпусе SOIC-8.

qd42wittkf4ozpfwu4sxuhhfrby.jpeg

При помощи тонких проводов припаиваем к микроконтроллеру колодку ISP (внутрисхемного программирования). Рекомендую использовать самый тонкий провод МГТФ — его фторопластовая изоляция при пайке не сползает.

ex6xb9crm-ymlmkia3kpxejiqd4.jpeg

Обычно программатор питается от колодки ISP, поэтому понадобится подключить питание — 5В. Схема под 10-пиновый ISP разъём:

ci5q8brec6gce0vkdlf1jfootr4.jpeg

Словив флешбеки из студенческой юности, ищем в ящике со старым хламом программатор, я использовал AS-4 от Argussoft.

ukacan0unyoio_qktbj8vkhw49u.jpeg

Если у вас нет программатора, в качестве оного можно использовать… arduino! Про это даже была статья на хабре. Заливаем в микроконтроллер .hex файл с прошивкой. В репозитории только исходники и скомпилировать прошивку нужно самостоятельно. Для ленивых — файлик тут.

Прошиваем FUSE биты, как указал автор проекта. LFUSE=0×72 HFUSE=0xfb Это позволит переключить режим работы встроенного тактового генератора, с завода включен делитель частоты на 8, а он здесь не нужен. Для программатора Argussoft меню установки FUSE бит на фотографии:

nvjpzmo-ceguu6puge-niov_rvu.jpeg

Готово, микроконтроллер готов к запайке. Схема следующая:

qhizkleik59i-ifnb5pk2nxawl4.jpeg

Линии справа (PGND и VBAT) это два более широких контакта на байонете, они расположены чуть глубже. Микроконтроллер подключается к линиям питания VDD и GND, а также связи LCLK и DCL. На линию DCL в разрыв добавляется резистор 220 Ом (я использовал 470 Ом, отпаяв с попавшейся под руку платы — донора. Можно использовать любой резистор с номиналом от 220 Ом до 1К, точность сопротивления здесь не критична), что позволяет микроконтроллеру при необходимости вмешаться и подтянуть линию к земле, обнулив передаваемый бит не спалив выходы в камере. Учитывая компактность — в схеме нет ни конденсатора по питанию, ни даже подтяжки линии reset, что формально работоспособность не гарантирует, но фактически оно как-то работает.

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

aec3bk89w7e9sfbpvpg7sp-spss.jpeg

Линзу я заклеил для защиты. Шлейф от разъёма уходит в корпус. Для каждого варианта объектива внедрение чипа — импровизация, поэтому, если у вас не Sigma AF Zoom UC 70–210mm f/4–5.6, но начинка может выглядеть иначе. Разбираем дальше:

zpdylufhee26g8hw0hlldr7t4yu.jpeg

Шлейф, подходящий к контактам на байонете, — часть гибко-жёсткой платы, так что подключиться, как на фото в описании автора проекта, не выйдет. Удобного места на плате, где можно соскрести маску и перерезать дорожку, я не нашел. Собираем обратно, решение я придумал такое — отпаять контакт от шлейфа — там есть небольшой зазор между контактом и площадкой на шлейфе. И на этот небольшой зазор-разрыв напаять резистор в SMD корпусе. Для удаления лишнего припоя использовал оплётку. Все паял на весу без каких-либо луп и микроскопов, у вас тоже получится.

rnobprnvzlbxalwzczckrjobx3g.jpeg

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

nswboqxgaxztnvtxtrrrif_c0cw.jpeg

Микроконтроллер отлично прячется под изгиб шлейфа. Критически важно, чтобы при работе объектива, всех его перемещениях наша модификация не мешала, иначе появится трещина и ошибка 01 уже будет из-за нарушенной связи с объективом.

t7yrhymp720o-samuz5i1r2lacu.jpeg

Готово! Всё работает.

В интернете на ebay можно найти готовые комплекты для чипирования объектива в виде микроконтроллера на маленькой плате. За такое удовольствие просят 20–30$, что больше, чем стоил этот объектив на барахолке) Огромная признательность Гектору Мартину (https://marcan.st/) за вклад в Open Source, а я надеюсь этот пост воодушевит взять в руки паяльник и вернуть в строй хорошие объективы.

image-loader.svg

© Habrahabr.ru