Емельянов Эдуард Владимирович (eddy_em) wrote,
Емельянов Эдуард Владимирович
eddy_em

Category:

Управление Canon EF200, (окончание?)

Итак, повторение-матючение закончилось, и я написал простой интерфейс управления фотоаппаратом посредством STM32F103: код на гитхабе. Заодно обновил материалы здесь.
Рабочее место

Для выполнения минимальных действий нужно не так-то и много команд. Но сначала — как подключить объектив.

Подключение объектива


Схем подключения в интернете полным-полно, возьму, например, эту:

Контакт AGND на фотоаппарате двойной, а на объективе одинарный (при подсоединении объектив замыкает эти два, и фотоаппарат узнает, что объектив есть, т.е. можно "общаться").
Подключать к микроконтроллеру надо следующим образом:
  • AGND и DGND соединить с землей МК и землей блока питания;

  • VBAT соединить с VDD и подать на оба +5В от блока питания; ВНИМАНИЕ! Блок питания должен быть достаточно мощный и подключен нормальными проводами (я пробовал тоненьким USB-шнурком, при активации моторов напряжение проседало и логика отключалась), для надежности можно между DGND и VDD воткнуть конденсатор эдак на тысячу микрофарад;

  • DCLK == SPI CLK; DOUT == MISO; DIN == MOSI.


О дурацком протоколе я говорил в прошлой заметке. Чтобы не было проблем, нужно после передачи каждого байта делать паузу. Я на всякий случай делаю паузу в 2мс. Из-за такой дурости в протоколе, использовать DMA при общении с объективом не получится. Разве что найдете микроконтроллер с 9-битным SPI и DMA.
Часть команд 85-го объектива из сводной таблички у EF200 имеет другое действие. Скажем, положение F в метрах EF200 не выдает, а отдает на команду 194 какую-то белиберду, разделяющую диапазон фокусировки на группы.

Управление с STM32


В управлялке с STM32 реализованы:
  • перемещение фокуса до упора влево/вправо;

  • перемещение фокуса на 127 шагов;

  • полное открытие/закрытие (но закрывается не до конца, маленькая дырочка остается) диафрагмы;

  • изменение положения диафрагмы на 10 шагов;

  • вывод значения отсчетов мотора привода фокуса;

  • ввод вручную последовательности команд (строка, формат цифр — десятичный, восьмеричный или шестнадцатеричный), разделенных любыми не-цифрами;

  • повтор последовательности при нажатии Enter или ввода команды r (ввод однобуквенных команд завершается enter'ом; список команд можно узнать, набрав h, enter).


Я долго ковырялся с командными последовательностями, но так и не нашел команды, позволяющей выяснить текущее положение диафрагмы.
Но! Управление работает, реализовано на относительно современном микроконтроллере и не составит труда воспроизвести все вышеуказанные действия любому желающему.
Tags: stm32, железяки, управление
Subscribe

promo eddy_em september 3, 12:13 8
Buy for 10 tokens
Уже больше полугода занимаюсь разработкой, вот, наконец-то в мастерских взялись за меня и начали выдавать первые детали. Сегодня сделал тестовую сборку (как обычно, местами пришлось "доработать напильником"): Пока прибор без названия (да и как-то не лезет в голову ничего, у меня нет…
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 2 comments