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

в 9:00, , рубрики: Canon, DIY, diy или сделай сам, dslr, open source, ruvds_статьи, Блог компании RUVDS.com, мкроконтроллеры, Фототехника, чиповка
Вроде проблема известная, а подробного поста нет. Непорядок! Представим вы купили где-то на барахолке старый объектив Sigma с креплением Canon EF, которые использовались ещё с плёночными фотоаппаратами Canon и поставили на свой цифровой фотоаппарат Canon. Объектив работает — автофокус шевелится и на открытой диафрагме снимки получаются. Но при попытке сфотографировать с прикрытой диафрагмой фотоаппарат выдаёт ошибку Err 01.

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

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

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

И тут моя вина — невнимательно читал описание. Объектив старый, для старых ПЛЁНОЧНЫХ камер 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Автор: Павел Серков

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js