С такой же проблемой столкнулся и я. Купил на барахолке вот такой объектив:
И тут моя вина — невнимательно читал описание. Объектив старый, для старых ПЛЁНОЧНЫХ камер 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.
При помощи тонких проводов припаиваем к микроконтроллеру колодку ISP (внутрисхемного программирования). Рекомендую использовать самый тонкий провод МГТФ — его фторопластовая изоляция при пайке не сползает.
Обычно программатор питается от колодки ISP, поэтому понадобится подключить питание — 5В. Схема под 10-пиновый ISP разъём:
Словив флешбеки из студенческой юности, ищем в ящике со старым хламом программатор, я использовал AS-4 от Argussoft.
Если у вас нет программатора, в качестве оного можно использовать… arduino! Про это даже была статья на хабре. Заливаем в микроконтроллер .hex файл с прошивкой. В репозитории только исходники и скомпилировать прошивку нужно самостоятельно. Для ленивых — файлик тут.
Прошиваем 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, а я надеюсь этот пост воодушевит взять в руки паяльник и вернуть в строй хорошие объективы.
Автор: Павел Серков