Емельянов Эдуард Владимирович (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

  • А что, в С так нельзя?

    Пытаюсь передать в функцию цвет как массив. Функция такая: void Pattern_draw3(Img3 *img, Pattern *p, int xul, int yul, uint8_t colr[3]); И…

  • DHT22/DHT11 на STM32F103

    Добил шайтана! Сначала ожидал, что нужно будет полноценным захватом ШИМ пользоваться, но т.к. в протоколе неинформативная часть имеет постоянную…

  • Свеженькие железячки

    Получил сегодня с али ожидаемые железки, в т.ч. для восстановления моей файлопомойки. Во-первых, это блок питания на 16.8В, который я брал для…

promo eddy_em august 17, 2019 12:33 3
Buy for 10 tokens
Юра намедни напечатал корпус для хронометра. Для первого блина получилось неплохо: И еще немного фотографий:
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 2 comments