Чипуем старый объектив Sigma
Вроде проблема известная, а подробного поста нет. Непорядок! Представим вы купили где-то на барахолке старый объектив Sigma с креплением Canon EF, которые использовались еще с пленочными фотоаппаратами Canon и поставили на свой цифровой фотоаппарат Canon. Объектив работает — автофокус шевелится и на открытой диафрагме снимки получаются. Но при попытке сфотографировать с прикрытой диафрагмой фотоаппарат выдает ошибку Err 01.
С такой же проблемой столкнулся и я. Купил на барахолке вот такой объектив:
И тут моя вина — невнимательно читал описание. Объектив старый, для старых ПЛЕНОЧНЫХ камер Canon EOS. И продавец честно предупредил в описании, что с современными цифровыми камерами работает только с открытой диафрагмой. Я расстроился и пошел в гугл искать как решить проблему. И нашел.
Источник проблемы в протоколе общения объектива с камерой. Объективы Canon EF принимают два варианта команды установки диафрагмы 0х12 YY
и 0х13 YY
, где YY
значение шагов закрытия диафрагмы. Старые пленочные фотоаппараты canon отдавали для установки диафрагмы команду 0х12
, а вот цифровые фотоаппараты для установки диафрагмы стали использовать команду 0х13
. Разработчики в Sigma такое разнообразие протокола не предусмотрели, поэтому некоторые старые объективы от пленочных камер могут выдавать ошибку err 01. (весьма подробный реверс и разбор протокола общения фотоаппаратов Canon с объективами я нашел на французком языке: http://jp79dsfr.free.fr/Docs%20et%20infos/Photo%20Tech%20%20Canon%20EOS-EF%20Protocol.pdf)Для исправления этой ошибки необходимо внедрить микроконтроллер на линию между объективом и фотоаппаратом, который бы на лету подменял злосчастную команду 0х13
на 0х12
. К счастью в интернете есть несколько проектов, где авторы уже решили эту задачку. К сожалению по некоторым ссылкам сайты более недоступны. В такие моменты поминаешь добрым словом проект Web Archive, но к сожалению они сохраняют не все.
Я использовал проект Гектора Мартина: https://github.com/marcan/sigmafix Преимущество его варианта — микроконтроллер не висит посредником на линии, пропуская всю коммуникацию через себя, а висит параллельно линии подслушивая и «прихлопывает» последний бит команды 0х13 превращая ее в 0x12, для чего в линию DCL запаивается сопротивление.
Для реализации нам нужен максимально компактный микроконтроллер. Автор использовал attiny13A. Я его заказал на Озоне(сам удивлен), с доставкой дороговато, зато быстро — ну не ехать же через весь город в мою любимую промэлектронику ради одного микроконтроллера? Нам нужен в корпусе SOIC-8.
При помощи тонких проводов припаиваем к микроконтроллеру колодку ISP (внутрисхемного программирования). Рекомендую использовать самый тонкий провод МГТФ — его фторопластовая изоляция при пайке не сползает.
Обычно программатор питается от колодки ISP, поэтому понадобится подключить питание — 5В. Схема под 10-пиновый ISP разъем:
Словив флешбеки из студенческой юности ищем в ящике со старым хламом программатор, я использовал AS-4 от Argussoft.
Если у вас нет программатора, в качестве оного можно использовать… arduino! Про это даже была статья на хабре (https://habr.com/ru/post/247329/) Заливаем в микроконтроллер .hex файл с прошивкой. В репозитории только исходники и скомпилировать прошивку нужно самостоятельно. Для ленивых файлик тут (https://www.dropbox.com/s/xli8me26z4jzaet/sigmafix.hex?dl=0)
Прошиваем FUSE биты, как указал автор проекта. LFUSE=0x72 HFUSE=0xfb
Это позволит переключить режим работы встроенного тактового генератора, с завода включен делитель частоты на 8, а он здесь не нужен. Для программатора Argussoft меню установки FUSE бит на фотографии:
Готово, микроконтроллер готов к запайке. Схема следующая:
Линии справа (PGND и VBAT) это два более широких контакта на байонете, они расположены чуть глубже. Микроконтроллер подключается к линиям питания VDD и GND, а также связи LCLK и DCL. На линию DCL в разрыв добавляется резистор 220 Ом (я использовал 470 Ом отпаяв с попавшейся под руку платы — донора. Можно использовать любой резистор с номиналом от 220 Ом до 1К, точность сопротивления здесь не критична), что позволяет микроконтроллеру при необходимости вмешаться и подтянуть линию к земле, обнулив передаваемый бит не спалив выходы в камере. Учитывая компактность — в схеме нет ни конденсатора по питанию, ни даже подтяжки линии reset, что формально работоспособность не гарантирует, но фактически оно как-то работает.
Первый раз в жизни разбираю объектив с электронной начинкой с требованием не сломать. Понадобится маленькая отвертка, пинцет, много света, и желательно постелить на стол силиконовый мат, можно использовать кулинарный — оброненные на него винтики не упрыгивают далеко.
Линзу я заклеил для защиты. Шлейф от разъема уходит в корпус. Для каждого варианта объектива внедрение чипа — импровизация, поэтому если у вас не Sigma AF Zoom UC 70-210mm f/4-5.6 но начинка может выглядеть иначе. Разбираем дальше:
Шлейф подходящий к контактам на байонете — часть гибко-жесткой платы, так что подключиться как на фото в описании автора проекта не выйдет. Удобного места на плате где можно соскрести маску и перерезать дорожку я не нашел. Собираем обратно, решение я придумал такое — отпаять контакт от шлейфа — там есть небольшой зазор между контактом и площадкой на шлейфе. И на этот небольшой зазор-разрыв напаять резистор в SMD корпусе. Для удаления лишнего припоя использовал оплетку. Все паял на весу без каких-либо луп и микроскопов, у вас тоже получится .
Припаиваем к ножкам микроконтроллера кусочки провода марки МГТФ, оборачиваем в каптоновый скотч и припаиваем согласно схеме. Чем тоньше будет провод — тем проще и нежнее удастся разместить чип, чтобы он ничему не мешал и ни во что не упирался. В принципе можно использовать даже просто эмалированный провод, которым делают обмотки у катушек, а изоляцию сжигать на нем прижав горячим жалом к таблетке аспирина (главное не вдыхать дым). Незаменим здесь только хороший острый пинцет.
Микроконтролер отлично прячется под изгиб шлейфа. Критически важно, чтобы при работе объектива, всех его перемещениях наша модификация не мешала, иначе появится трещина и ошибка 01 уже будет из-за нарушенной связи с объективом.
Готово! Все работает.В интернете на ebay можно найти готовые комплекты для чипирования объектива в виде микроконтроллера на маленькой плате. За такое удовольствие просят 20-30$, что больше, чем стоил этот объектив на барахолке) Огромная признательность Гектору Мартину (https://marcan.st/) за вклад в Open Source, а я надеюсь этот пост воодушевит взять в руки паяльник и вернуть в строй хорошие объективы.
В Attiny85 программной памяти больше. Хотя с прихлопыванием битов справится даже десятая тинька — миниатюрная, как… В общем, я не знаю — вот такая она полезная для милипусерных проектов.