Mittwoch, 26. Dezember 2012

Time machine: Encoder.


Всем привет. Я не планировал описывать каждую деталь статьёй. Но энкодер стоит отдельного внимания. Для «Машины времени» я планировал купить самый доступный энкодер и использовать готовую библиотеку, коих на сайте Arduino много. Энкодер от Panasonic понравился наличием массивной ручки, в документации написано, что он long-life, что очень хорошо, размеры как раз подходят под мой корпус, очень привлекательная цена. Я купил пару штук EVEQDBRL416B и сделал под них платы. Когда я добрался до написания кода, оказалось, что ни одна библиотека на Arduino не работает с этим энкодером хорошо. У этого энкодера всего два состояния между переключениями. Фронт в канале «B» очень близко находится к месту фиксации, что добавляет проблемы при переключении. От небольшого нажима на ручку энкодера происходят ложные срабатывания. После небольших проб с готовыми библиотеками у меня возникло желание заменить этот энкодер на другой.
Но мысль о том, что надо переделывать уже готовые платы питания и интерфейса, останавливала открыть окно и выбросить энкодер. На написание библиотеки я потратил целый день. После третьего подхода получился очень простой обработчик энкодера.
Надеюсь эта библиотека будет полезной не только мне!!!
/*
  Pan_Encoder_ABC.cpp - A library for reading Encoder PANASONIC EVEQDBRL416B.

  Copyright 2012 Andrew Buckin(aka, "ka_ru"), except for the code at the end marked
  "The following was taken from the Arduino's code."  That portion is copyright by
  Andrew Buckin and is distributed under the GNU Lesser General Public License 2.1
  or any subsequent version.

  For those portions Copyright by Andrew Buckin, the following license applies.

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

    Questions?  Send mail to ka_ru2003@msn.com
*/

#include <PinChangeInt.h>

enum PinAssignments {
  encoderPinA = A2,   // rigth
  encoderPinB = A3,   // left
  clearButton = 8    // another two pins
};

volatile unsigned int encoderPos = 100;  // a counter for the dial
unsigned int lastReportedPos = 1;   // change management
static boolean rotating=false;      // debounce management

// interrupt service routine vars
volatile boolean ABc = false;
volatile boolean BBc = false;
volatile boolean AAc = false;
volatile boolean BAc = false;
int8_t clicks = 0;      // Counter to indicate cumulative clicks in either direction
int8_t direction = NULL;   // indicator
int8_t enc = NULL;   // indicator

void setup() {

  pinMode(encoderPinA, INPUT); 
  pinMode(encoderPinB, INPUT); 
  pinMode(clearButton, INPUT);
 // turn on pullup resistors
  digitalWrite(encoderPinA, HIGH);
  digitalWrite(encoderPinB, HIGH);
  digitalWrite(clearButton, HIGH);

  PCintPort::attachInterrupt(encoderPinA, &doEncoderA, CHANGE);
  PCintPort::attachInterrupt(encoderPinB, &doEncoderB, CHANGE);

  Serial.begin(9600);  // output
}

// main loop, work is done by interrupt service routines, this one only prints stuff
void loop() { 
  rotating = true;  // reset the debouncer
   
  if (direction != NULL){
   enc = !NULL;
    if (direction > 0) clicks++;
    else clicks--;
    direction = NULL;
  }
    
  if (enc != NULL) {
    Serial.print("Index:");
    Serial.println(encoderPos  + clicks, DEC);
    enc = NULL;
  }
 
  if (digitalRead(clearButton) == LOW )  {
    encoderPos = 0;
  }
}

// Interrupt on A changing state
void doEncoderA(){
  delayMicroseconds(50);
  AAc = digitalRead(encoderPinA);
  BAc = digitalRead(encoderPinB);
  if (!ABc && AAc && !BBc && !BAc){direction=1;}
  if (ABc && !AAc && BBc && BAc){direction=1;}
  if (!ABc && AAc && BBc && BAc){direction=-1;}
  if (ABc && !AAc && !BBc && !BAc){direction=-1;}

}

// Interrupt on B changing state
void doEncoderB(){
  delayMicroseconds(50);
  ABc = digitalRead(encoderPinA);
  BBc = digitalRead(encoderPinB);
}


Успешных вам кадров.
© Andrew Buckin.

Shutterstock Dreamstime
Fotostream http://www.flickr.com

Time machine: Analog.


Этот модуль попал в «Машину времени» по необходимости. Статья будет небольшой. Как я уже писал ранее, после проб с микрофоном, усиления 20дБ оказалось мало. Микрофон я купил не самый лучший, но это не означает, что его нельзя использовать. Пришлось поставить ещё один каскад усиления. Чтобы в будущем не испытывать неудобств в регулировании и не зависить от качества микрофона, поставил схему усилителя с программированным уровнем усиления на цифровом потенциометре с SPI интерфейсом(TPL0501). SPI у меня пока не занят. :) Так как я не собираюсь заниматься в «Машине времени» обработкой сигналов, отказался от использования АЦП и применил аналоговый компаратор с последующей обработкой по прерыванию, что позволит сократить код и уменьшить время реакции на событие. Для регулирования порога срабатывания компаратора установил ещё один цифровой потенциометр.

Плата аналогового усилителя сделана для макетирования, схема немного избыточна, в конечном устройстве будет стоять только то, что нужно.


Для тестирования написал маленькую программу.

#include <PCD8544.h>
volatile long newPosition = 0;
volatile long oldPosition  = 0;
#include <SPI.h>
//#include <WProgram.h>  // This include should go first, otherwise does not compile.
#include <Button.h>
#include <TicksPerSecond.h>
#include <RotaryEncoderAcelleration.h>

//static const byte glyph[] = { B00010000, B00110100, B00110000, B00110100, B00010000 };
static PCD8544 lcd;
static RotaryEncoderAcelleration rotor;

static const byte LCD_WIDTH = 84;
static const byte LCD_HEIGHT = 48;

const int analogInPin = A7;
const int TPL0501_CS1 = A0;
const int TPL0501_CS2 = A1;
const int rotorPinA = A2;    // One quadrature pin
const int rotorPinB = A3;    // the other quadrature pin

int sensorValue = 0;        // value read from the Microphon
int sensorMAX = 0;
unsigned long time =0;

void setup() {

  lcd.begin(84, 48);
  //lcd.createChar(0, glyph);
  
  lcd.setCursor(0, 0);
  lcd.print("Value");

  lcd.setCursor(0, 2);
  lcd.print("MAX Value");

  lcd.setCursor(0, 4);
  lcd.print("Encoder");
  
  pinMode (TPL0501_CS1, OUTPUT);
  pinMode (TPL0501_CS2, OUTPUT);
  
  digitalWrite(TPL0501_CS1,HIGH);
  digitalWrite(TPL0501_CS2,HIGH);
  
  SPI.begin(); 
  Pot_value_SET(TPL0501_CS1, 0);
  
  rotor.initialize(rotorPinA, rotorPinB);
  rotor.setMinMax(0, 255);
  rotor.setPosition(0);
}

long lastRotor = 0;

void loop() {
  
  rotor.update();
  long pos = rotor.getPosition();
  
  sensorValue = analogRead(analogInPin);
  //Serial.print("analogInPin"); 
  if (sensorValue > sensorMAX) sensorMAX = sensorValue;
  if (millis() > time){
  sensorMAX = 0; 
  time = millis() + 3000;
  }
  
  lcd.setCursor(0, 1);
  lcd.clearLine();
  lcd.print(sensorValue, DEC);

  lcd.setCursor(0, 3);
  lcd.clearLine();
  lcd.print(sensorMAX, DEC);
 
  lcd.setCursor(0, 5);
  lcd.clearLine();
  lcd.print(pos, DEC);  
 
  //lcd.setCursor(80, 0);
  //lcd.drawColumn(84, map(sensorValue, 0, 1023, 0, LCD_HEIGHT)); 
    
  delay(10);                     
}

int Pot_value_SET(int Chip, int value) {
  // take the SS pin low to select the chip:
  digitalWrite(Chip,LOW);
  //  send in the value via SPI:
  SPI.transfer(value);
  // take the SS pin high to de-select the chip:
  digitalWrite(Chip,HIGH);
}





Описание «железа» на этом можно закончить. В будущем планирую оснастить «Машину времени» Bluetooth и сделать Android APPs и Shell для PC, но этим я займусь, когда будут реализованы основные функции. Теперь я отвлекусь от «железа» и займусь подготовкой кода.
PS:
Конечно можно было не затевать схему с программированным усилителем, а поставить усилитель- ограничитель. Но. Поживем - попробуем. :)
PPS:
К проекту подключился мой коллега программист Евгений Глушко. Пока я буду заниматься сведением общей схемы. Женя обещал подготовить первый релиз программы.

Успешных вам кадров.

© Andrew Buckin.
Shutterstock Dreamstime
Fotostream http://www.flickr.com

Sonntag, 4. November 2012

Time machine: Microphone.



Зачем фотографу микрофон? Чтобы сфотографировать бурные авиации. :) Если без шуток, то очень нужная возможность при съёмке воды, взрывов и всего того что создаёт звуковые волны. Примеры снимков я покажу в самой последней статье про «Машину Времени» - МВ.
В сети можно найти с десяток различных примеров как подключить микрофон к Arduino. Большинство из них - усилитель на одном транзисторе с парой конденсаторов и резисторов. Как для фотографии этого было бы достаточно. Ведь для фотографии не нужен супер усилитель High Fidelify(HiFi) или High-end качества. Я отказался от «простой» схемы. Выбор схемы определила не цена, а микрофон. Зачем нужен усилитель «с лучшими параметрами»? У меня дома три различных электретных микрофона и для МВ я купил ещё один китайский(2$) у всех разная чувствительность. Опыт мой враг. Пару лет назад я разрабатывал индустриальный микшер для фирмы Thales. Микрофонов было всего 4 типа, микрофоны были от правильных производителей с высокой чувствительностью. Даже у них разброс чувствительности отличался на порядок. Чтобы как то удовлетворить китайские микрофоны я потратил один доллар на интегрированный усилитель с постоянным усилением в 20дБ, меньшего размера чем транзистор. :) После небольших поисков выбор пал на усилитель фирмы Maxim MAX9812. В пробной схеме я поставил вариант с питанием 3.3V. В заключительной схеме будет стоять чип на 5V. Вся схема занимает очень мало места на плате и при желании усилитель можно выключить.


Пока плата сделана для удобства с выводами. Можно всё попробовать в Breadboard.

Маленькая тестовая программа проверки работы усилителя.

#include <PCD8544.h>
#include <Encoder.h>
Encoder myEnc(3, 4);
volatile long newPosition = 0;
volatile long oldPosition  = 0;


// A custom glyph (a smiley)...
static const byte glyph[] = { B00010000, B00110100, B00110000, B00110100, B00010000 };
static PCD8544 lcd;

static const byte LCD_WIDTH = 84;
static const byte LCD_HEIGHT = 48;

const int analogInPin = A7;
int sensorValue = 0;        // value read from the pot
int outputValue = 0;        // value output to the PWM (analog out)
int sensorMAX = 0;
unsigned long time =0;

void setup() {
  // PCD8544-compatible displays may have a different resolution...
  lcd.begin(84, 48);
  
  // Add the smiley to position "0" of the ASCII table...
  lcd.createChar(0, glyph);
  //Serial.begin(9600); 
}


void loop() {
  
  newPosition = myEnc.read();
  
  sensorValue = analogRead(analogInPin); 
  if (sensorValue > sensorMAX) sensorMAX = sensorValue;
  if (millis() > time){
  sensorMAX = 0; 
  time = millis() + 3000;
  }
  
  lcd.setCursor(0, 2);
  lcd.clearLine();
  lcd.print(sensorValue, DEC);

  lcd.setCursor(0, 3);
  lcd.clearLine();
  lcd.print(sensorMAX, DEC); 
 
  lcd.setCursor(30, 0);
  //lcd.clearLine();
  lcd.drawColumn(84, map(sensorValue, 0, 1023, 0, LCD_HEIGHT)); 
    
  //delay(10);                        // wait 100ms for next reading
  
  if (newPosition != oldPosition) {
    oldPosition = newPosition;
    lcd.setCursor(0, 0);
    lcd.print("Encoder");
    lcd.setCursor(0, 1);
    lcd.clearLine();
    //Serial.println(newPosition);
    lcd.print(newPosition, DEC);
  }
}

После некоторых проб выяснилось что усиления в 20дБ не достаточно. Китайский микрофон не очень хорош. :( Для комфортной работы нужен ещё один каскад усиления, но об этом в другой раз.

Успешных вам кадров.

© Andrew Buckin.
Shutterstock Dreamstime
Fotostream http://www.flickr.com

Mittwoch, 31. Oktober 2012

Time machine: Power.

Питание для мобильного устройства очень ответственный модуль. Как по мне, даже системный. Почему? При покупки любого электронного устройства всегда надо учитывать, чем устройство будет питаться. Если батарейки, то какие, это определяет размер устройства. Для своей «машины времени — МВ» я выбрал самый маленький покупной корпус из пластмассы с встроенным отсеком для 9V батарейки. Прибор я планирую повесить на ремень. Эргономика и удобства в работе очень важно для маленького прибора. Где какие кнопки и сколько их, надо определить сразу, а не добавлять в процессе разработки. Важно как включать/выключать. Я не механик, и припаять электронную блоху 2х2 мм мне проще, чем просверлить лишнее отверстие. :) От отдельного механического выключателя питания отказался. У механического выключатель есть как минимум два недостатка: размер, вес и эргономичность. Если с размером все понятно, то с эргономичностью не все очевидно - где установить, можно ли выключить электронно?  Я стараюсь свести механические работы к минимуму. Все управление МВ будет состоять из энкодера с кнопкой. Кнопкой будет включаться и всё выбираться в меню, а энкодером осуществляться навигация по меню. Выключаться прибор будет из меню или по таймеру. Для МВ я выбрал открытую систему Arduino Mini (12€) с прицелом, что к моему проекту подключатся такие же энтузиасты, как и я. И разработка пойдёт живее.  Современные устройства, как правило, не питаются от 9V.  У Arduino  рабочее напряжение 5V, так что все периферийные модули в МВ будут 5V совместимые. На плате Arduino уже есть линейный преобразователь, но я не стал его использовать, так как им нельзя управлять, а курочить плату Arduino не хотелось. При выборе типа регулятора напряжения 5V я перебрал под полсотни datasheets, выбирая между LDO и DC/DC. От LDO отказался в пользу DC/DC. так как у DC/DC выше КПД под 80..95% и им легче управлять. Нашёл у Linear преобразователь LT3470 с очень широким диапазоном входного напряжения, и это, пожалуй, один из немногих DC/DC с очень низким током в Shutdown Mode 0.1мкА. МВ можно питать от 7 до 40V. В выключенном режиме МВ потребляет менее 1мкА, обычной Alkaline батарейки хватит более, чем на 200000h. Для включения поставил Pushbutton On/Off Controller LTC2955-1. Он включает преобразователь, убирает дребезг контакта кнопки и транслирует нажатие к контроллеру. При нажатии на кнопку более чем на 5 секунд, прибор выключится. При желании конденсатор С6 можно заменить на сопротивление ноль ом. Тогда выключить можно только из меню или вытащив батарейку. :) После выбора всех компонентов за час была готова схема и разведена плата,

а ещё через час плата была готова к пайке. После монтажа осталась проверить, что все работает как запланировано.

Если вы захотите повторить схему, то после изготовления не забудьте хорошо помыть плату от канифоли. У меня грязная плата потребляла 3мкА, а после помывки 0.5мкА. :) Схема в большом разрешении есть у меня на Flickr, ссылка внизу. На самом верхнем снимке сборка модуля питания дисплея и Arduino.  

Успешных вам кадров.

© Andrew Buckin.

Shutterstock Dreamstime

Fotostream http://www.flickr.com

Samstag, 27. Oktober 2012

Time machine: Display.



Этой статьёй хочу открыть цикл статей — проектов о «Машине времени». Если описывать все возможности прибора, то статья получиться очень большой. Да и единого устройства пока нет. Есть маленькие проекты для Arduino, которые можно комбинировать. Для тех, кто не знает, что такое «Машина времени», далее МВ . В фото кругах «Машина времени» - это жаргонное выражение для прибора, позволяющего синхронизировать события в студии. Незаменимая вещь при съёмке воды, огня и быстро протекающих событий. Обычно такие приборы имеют вход для микрофона, датчиков света, магнитного поля, датчика вибрации, можно управлять мотором и так далее. С помощью МВ можно регулировать задержки между событиями, измерять длительности импульсов света студийных блоков. В этой статье пойдёт речь о OLED дисплее.
Дисплей сделан в формате Arduino Mini и может быть установлен прямо на Arduino Mini.
 
Для соединения нужно всего 5 контактов. Сам дисплей небольшой с маленьким потреблением и не требует подсветки. так как сам светиться. Рабочая область 96х16 точек с I2C интерфейсом. Чтобы использовать дисплей на прямую с Arduino mini на модуль, есть свой LDO регулятор 3.3V, а так же преобразователь уровня для I2C шины.

     Схема с большим разрешением есть у меня в стриме, ссылка внизу статьи.  В схеме есть пару лишних сопротивлений ноль ом, чтобы плата была  односторонней.

Когда все детали в наличии, на монтаж ушло минут 15. 

Для управления использую библиотеку Adafruit.
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306
http://learn.adafruit.com/adafruit-gfx-graphics-library
После того как вы установите библиотеки в директорию Arduino,
останется написать маленький скетч для проверки,
и придумать, что  выводить на экран.  :)
#define OLED_RESET 10  //Pin # the OLED module's RST pin is connected to.

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

Adafruit_SSD1306 display(OLED_RESET);

void setup()   {                  
  // by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
  display.begin(SSD1306_SWITCHCAPVCC);
  // init done
  
  //display.display(); // show splashscreen
  //delay(2000);
  display.clearDisplay();   // clears the screen and buffer

  // draw a single pixel
  display.fillRect(0, 0, display.width()-1, display.height()-1, WHITE);
  display.display();
  delay(2000);
  display.clearDisplay();
}


void loop() {

   // text display tests
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.println(12345678);
  display.display();
  delay(500);
  //display.clearDisplay();
  
  display.fillRect(36,0,12, 16, BLACK);

  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(36,0);
  display.println(">");
  display.display();
  delay(500);
  display.clearDisplay();
  
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.println("Circuit for the Photos.");
  display.display();
  delay(1000);
  display.clearDisplay();  

  display.setTextSize(1);
  display.setTextColor(BLACK, WHITE); // 'inverted' text
  display.setCursor(0,0);
  display.println(12345678);
  display.display();
  delay(500);
  //display.clearDisplay();
  
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0,9);
  display.println(12345678);
  display.display();
  delay(500);
  //display.clearDisplay();
  
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(49,0);
  display.println(1234567);
  display.display();
  delay(500);
  display.clearDisplay();
 
}





Успешных вам кадров.


PS:
продолжение следует.


Samstag, 13. Oktober 2012

50° Grid for Softbox Deep Octa 100 cm.

Пару лет назад я купил себе Softbox Deep Octa 100 cm. Очень хороший свет. Как, впрочeм, и все оборудование у Elinchrom. Но. Не знаю почему производитель не производит соты к этой окте. Сами не делают и видно другим не дают. Trauriges Smiley Купить у китайцев, корейцев нельзя.

Есть всего одна фирма, выпускающая под них соты. Отсутствие конкуренции поднимает цены на эти соты до небес. Не то чтобы мне было жалко заплатить или я не смог бы договорится с жабой. Была бы вещь уникальная! Нет, тут дело в другом. Можете мне поверить, что соты с одинаковых шагом за 50€ и 500€ будут обеспечивать одинаковый световой рисунок. Не буду долго описывать причины, почему я не купил за 500€. Я решил сделать подходящие соты под эту окту. Делать соты с нуля было бы очень долго. Да и швейной машинкой я не сильно владею. Я рискнул и купил на ebay соты для 120 см окты фирмы Quantuum в надежде что после хирургическиx вмешательств, размер будет 100 см. За пару дней соты были у меня в почтовом ящике. А через 15 минут после открытия посылки и готовые соты. Для самоделки нужны ножницы, скоросшиватель и два десятка прищепок. Ещё полоски прорезиненной ткани, на которых соты будут крепиться к окте. Первым делом нужно развернуть окту и распределить Quantuum соты на окте. Закрепить соты прищепками к краям окты. По возможности так, чтобы совпадали углы сот с углами окты и не было натяжения. К этому нужно подойти очень внимательно, чтобы не обрезать лишнего. Шаг в 120 см сотах совпадает с углами окты. У меня все совпало, думаю и у вас всё получится. Отрезаем лишнее. :) Теперь нужно отрезать длинную полоску из прорезиненной ткани шириной 7 см и длиной по периметру окты. Прикладываем плотную ткань по периметру сот и сшиваем степлером ткань и соты.

Соты почти готовы. Для того чтобы обеспечить лучшее крепление сот на окте, на гранях степлером делаем складки.

Вот теперь всё.

Осталось всё проверить, найти модель и сделать пару портретов. Что я регулярно и делаю. И вам того же желаю.  Этот портрет снят с этими сотами.

Успешных вам кадров.

© Andrew Buckin.

Shutterstock Dreamstime

Fotostream http://www.flickr.com

Mittwoch, 10. Oktober 2012

Myths and realities Х-sync with studio light. (eng)

 

In this article I will try to explain whether it is possible to work with studio light while using short exposition time. From the moment of appearance of new “Pockets” on the market, on various forums very often appear topics about usage of studio light for short exposition times. Rapturous owners of “Pockets” describe how excellently everything works, but when you ask them to send a few pictures, nobody sends anything. I decided to investigate this. I have the drafts of the article lying around for over half a year already. Now autumn has come, and forced me into the warm house, a good reason to describe the work done. So far there will not be any talk about any working device, but small helpers were still required – Arduino and a Breadboard.

So here is the list of all the myths.

Myth one: “On the synchronizer, the “Pocket” generates a number of short impulses. That way it causes the generator to create a number of short flashes.”

Wow! “Pocket” is great. Sounds almost like a flash system in FP mode. I would like to believe in this. I would be so happy if the developers of Elinchrom would permit a design flaw, and allowed such a possibility. Then I would be one of the first who would make TTL for a studio. However marketers do not allow engineers to implement many of the useful innovations. But this is all just talk. In reality everything is simple. It does not work. But it has to be tested. I began by measuring the duration of the signal on the central contact of the camera. For Nikon it is 7,6 uSec. I connected the generator to Arduino, and while changing the duration and the number of flash signals for the generator, I measured the light for all durations with a flashmeter. No wonder happened. The light always stays the same, and corresponds to the set value on the generator. Lets hope that engineers defeat the marketers, and the firms will supply photographers with advanced technologies, instead of feeding us from a teaspoon. Nowadays I do not see a reason, technically or technologically, to not make X-synch with TTL in a studio.

Myth two: “By controlling the delay between the camera and the flashlight one can use X-synch with system flashlights.”

Sounds tempting. But it does not work. In my camera the minimal exposition time with flashlight is 1/250, and with 1/320 a black line appears on the picture. I connected Arduino to the camera and the generator. By increasing the delay, the black line became only bigger. But therefor I could measure the LAG of the shutter. I set the exposition time to 1/250 and by increasing the delay, I achieved that the picture became completely black. In D700 the LAG of the shutter is approximately 100 uSec.

What does “Pocket” use?

To answer this question I had to go a bit deeper into the protocol of communication between the camera (D700) and the flashlight (SB-900). About the protocol itself I will write another time. Up to this moment the behavior of the camera and the flashlight was predictable and understandable. The shutter is triggered, and when the frame is completely open, the signal is sent to the flashlights. But after connecting a flashlight with an FP mode to the camera, everything changes. It practically works like this: the camera triggers the flash, the flash lights up, the camera triggers the shutter. I assume that the delay time can be changed, and that it depends on the model of the flashlights and other things. Turns out, the camera adjusts the triggering of the shutter to the flashlight. There is no limit to the happiness. What use does this knowledge have to us? Very simple. By attaching SB-900 to the camera in the “M-FP mode 1/128” and by attaching the generator to the camera via PC port, one can photograph with short exposition times without a “Pocket”. This solution has a problem though. Depending on the exposition time, a gradient appears on the pictures. “Pocket” has the same problem, by the way. But it can be dealt with too. For that, one has to program Arduino a bit. The program is very simple. The signal comes, a little delay, signal goes. My Arduino is connected to an LCD display of a mobile phone, and an encoder to change the values for the delay. This circuit is put into the cable between the camera and the generator.

With what light does it all work?

I repeated the work on three different blocks, and two generators. With an additional delay circuit with Arduino, everything works with a precision of up to 1/8000. With such an initiation of blocks, a dependency can be observed: the worse the block, the better the light. The gradient is less noticeable. The cheaper block's duration of the light impulse is longer, and it is easier to choose a delay with which the gradient on the picture is minimal. With the fastest head Quadra A Head Action, one can easily make pictures with up to 1/1000. The delays on Arduino turned out as following.

shutter speed      delay uS

320                          3000

400                          2900

500                          2540

1000                        1440

I connected to the PC port a radio trigger RF-602 and EL-Skyport Transmitter SPEED. Everything works without complications. If you do not need TTL, why should you buy “Pocket”?

Conclusions and perspectives?

Knowing the specifics about how the camera works in the FP mode, one can make pictures with any studio light and with short exposition times. The light can be synchronized via cable or via radio. With inexpensive light, pictures can be made with even shorter exposition times.

What I plan.

I intend to thoroughly learn the Nikon protocol between the camera and the flashlight. Then I intend to put the SB-900 emulator and the delay circuit inside of RF-602. And afterward I want to make a hot shoe with the delay for comfortable work with EL-Skyport Transmitter SPEED.

Successful shots to you.

P.S.:

I would not call this approach ideal, but it can be used.

© Andrew Buckin.

Shutterstock Dreamstime

Fotostream http://www.flickr.com

Sonntag, 7. Oktober 2012

Myths and realities Х-sync with studio light.

 

В этой статье я постараюсь рассказать реально ли работать со студийным светом на коротких выдержках. С момента появления на рынке новых «Покетов» на различных форумах очень часто поднимается тема о работе студийного света на коротких выдержках. Восторженные обладатели «Покетов» описывают, как все замечательно работает, но, когда просишь прислать пару кадров, никто ничего не присылает. Я решил с этим разобраться. Наброски статьи лежат у меня уже полгода, настала осень и загнала меня в тёплый дом, хорошая причина описать проделанное. Пока не о каком законченном устройстве речи не будет, но маленькие помощники все же понадобились – Arduino и макетная плата.

И так все мифы по порядку.

Миф первый.

На синхроконтакте «Покет» генерирует последовательность коротких импульсов. Тем самым вынуждает генератор делать последовательность коротких вспышек. Вау! «Покет» молодец. Звучит почти как системная вспышка в FP режиме. Хотелось бы в это верить. Как бы я радовался, если бы разработчики Elinchrom допустили ошибку в дизайне и оставили такую возможность. Я бы тогда был одним из первых, кто сделал ТТЛ для студии. Увы маркетологи не позволяют инженерам сделать многих полезных инноваций. Но это все слова. На деле обстоит все просто. Не работает. Но проверить нужно. Для начала я измерил длительность сигнала на центральном контакте камеры. У Nikon это 7,6 микросекунд. Подключил генератор к Arduino и, изменяя длительность и количество сигналов поджига для генератора, измерил свет флешметром на всех длительностях. Чуда не произошло. Свет всегда остаётся постоянным и соответствует выставленному значению на генераторе. Будем надеяться, что инженеры победят маркетологов, и фирмы будут снабжать фотографов передовыми технологиями, а не кормить нас по чайной ложке. Так как сегодня технически и технологически я не вижу причин почему не сделать Х-sync и ТТЛ в студии.

Миф второй.

Регулируя задержку между камерой и вспышкой можно использовать Х-sync со студийными вспышками. Звучит заманчиво. Но не работает. В моей камере минимальная выдержка работы камеры со вспышкой 1/250, и при 1/320 на фотографии появляется чёрная полоса. Я подключил Arduino между камерой и генератором. При добавлении задержки чёрная полоса только увеличивается. Зато я смог измерить ЛАГ затвора. Установил выдержку 1/250 и, добавляя задержку, добился того, что кадр стал полностью чёрным. В D700 ЛАГ затвора составляет около 100 микросекунд.

Что использует «Покет»?

Для того чтобы ответить на этот вопрос пришлось немного углубится в протокол общения между камерой (D700) и вспышкой (SB-900). О самом протоколе я напишу в другой раз. До этого момента поведение камеры и вспышки было предсказуемо и понятно. Срабатывает затвор и, когда кард полностью открыт, приходит сигнал на вспышку. Но, после того, как на камеру устанавливается вспышка, умеющая работать в FP моде, все меняется. На деле это выглядит так: камера поджигает вспышку, вспышка начинает светит, в камере срабатывает затвор. У меня есть предположение, что время задержки можно изменять, и зависит задержка от модели вспышки и др. Получается, что камера подстраивает срабатывание затвора под вспышку. Радости нет предела. Какая польза нам от таких знаний? Да очень прямая. Установив SB-900 на камеру в «M-FP mode 1/128» и подсоединив к камере генератор через PC разъём можно снимать на коротких выдержках без «Покета». Правда у такого решения есть проблема. В зависимости от выдержки на снимках появляется градиента. Кстати, у «Покет» та же проблема. Но и с этим можно бороться. :) Для этого нужно немного запрограммировать Arduino. Программа очень проста. Сигнал пришёл, маленькая задержка, сигнал ушёл. У меня к Arduino подключён LCD от телефона и энкодер для изменения значений задержки. Эта схема устанавливается в разрыв кабеля между камерой и генератором.

С каким светом всё работает?

Я проверил работу на трёх различных блоках и двух генераторах. С дополнительной схемой задержки на Arduino всё работает до 1/8000. :) При таком запуске блоков наблюдается зависимость: чем хуже блок - тем лучше свет. Smiley Меньше заметна градиента. У более дешёвых блоков длительность импульса света больше и легче подобрать задержку, при которой на снимке градиента минимальна. Для примера, с самой быстрой головой Quadra A Head Action, можно спокойно снимать до 1/1000. Задержки на Arduino получились такие.

 

shutter speed      delay uS

320                          3000

400                          2900

500                          2540

1000                        1440

Я подключал к PC разъём радио триггер RF-602 и EL-Skyport Transmitter SPEED. Всё работает без замечаний. Если вам не нужен ТТЛ, то зачем покупать «Покет»? Smiley

Выводы и перспективы?

Зная особенности работы камеры в FP режиме, можно снимать с любым студийным светом на коротких выдержках. Синхронизировать свет можно по кабелю или по радио. С недорогим светом можно снимать на более коротких выдержках. Smiley Что я планирую. Более досконально изучить Nikon протокол между камерой и вспышкой. Разместить эмулятор SB-900 и схему задержки внутри RF-602. Сделать горячий башмак с задержкой для удобной работы с EL-Skyport Transmitter SPEED.

Удачных вам кадров.

PS:

Я бы не назвал такой подход идеальным, но использовать его можно.

 

© Andrew Buckin.

Shutterstock Dreamstime

Fotostream http://www.flickr.com

Samstag, 6. Oktober 2012

My Precious. (eng)

Why did I call an article about a photo holder like that? Well, probably because when I made the first prototype, “The Lord of the Rings”  was  on TV. A very simple thing – a holder for an umbrella. Why is the market filled with all kinds of crap (shit)?

But all in the right order.

When somebody buys the first reflex camera, the second thing he takes, is a flash system. And it does not matter, what he will do next, a strobist or a family album, the next acquisition is in the most cases a flash system. Many people stop there, and “others” start thinking about light, buy umbrellas, holders, Light Stand and so on. This list is very long, and I will not write it all here. I was unlucky, and I was infected with the disease called “photography”. Just like everyone else in the minority. I bought a flashlight, a rack, a holder for the umbrella, and started to actively try out how all this light works. I tried out many kinds of holders, I will not describe all the shortcomings of all the systems on the market. I rather describe how cool mine is. Most holders fix the umbrella with a bolt, which leads to the deformation of the umbrella's tubule. Where the tubule is being held, it is being deformed by the bolt. It becomes hard to close the umbrella. As a result the tubule breaks, and if your umbrellas are like mine, from a brand, then you can not replace it straight away, because a true brand used a tubule with a nonstandard diameter, 7mm. So I did not buy a new umbrella, and instead found where to buy 2 meters of a brass tube, and replaced the original one with the brass one. After that the umbrella gained 30 grams weight. Did you ever ask yourself, why the light on the umbrella is always on the top, and not on the axis? You can get accustomed to it and use it, but it surely can be simpler and more understandable. Did you try to use pilot light with flash systems? Such pleasure is not available for all the systems, and not for all the flashlights. For me this problem is constructively solved and there is a  space to attach pilot light. When the light becomes too little for you, you either buy studio lights, or a second flashlight. With studio lights everything is clear, they have their own cappings and attachments, but what to do about a bracing for a second flashlight? The merits could be described with delight for a long time. Hence allow me to introduce my holder for the umbrella.

My precious is an aluminum bar with a collet chuck for fixing umbrellas or studio attachments. The surface of the bar is covered with densely rubbered cloth, to not scratch the flashlights, the sizes are calculated for use with the flashlight SB900 or smaller ones. The holder has notches for the fastening belts, two landing carvings, two mounting holes for LED pilot light and an additional mounting pad. So far nothing else was required.

How it all works.

You can attach flashlights from both sides. The flashlights are put on the rubbered surface and are fastened by belts with velcros, or attached to the additional pad. I prefer the belts.

You can attach anything, and as much as you want. One flashlight with pilot, two flashlights with one pilot, one flashlight and two pilots. So far the space was enough for everything, and satisfying my “EGO”, all the light is on the axis of the umbrella.

While using parabolic reflectors, it's very important. What else is this mounting capable of? For example you can attach it in the center of Ring Flash and use Ring Flash with an umbrella or an octa.

For not too heavy soft boxes I made an adapter for studio attachments and use flash systems in the studio. The holder can easily be attached to a tripod or a Light Stand.

In one word, it has become a good universal solution. The holder reminds me of a LEGO piece and does not cease to amaze me with the diversity of its usability. You can attach the sources in any way, one turned to the ceiling, another for translucent umbrella, even at a degree of 180°. Various nuts and bolts can of course not be avoided. One can think up very many unusual attachment patterns, and not only for flashlights.

You may ask, why anyone needs that? A very correct question. In photography the deciding thing is light and the control over it. Compare the light spot of a normal holder and that of mine.

On this picture the translucent umbrella set a normal holder not on the axis.

What is bad about this light, is a bright white hotspot from the lamp, a non-symmetric gradient of light from top to bottom, and the shadow of the tube of the umbrella.

As you can see on the second picture, there are no such shortcomings with axial positioning of the flashlight.

On this picture is an example of the spot of Ring Flash with the translucent umbrella.

The badly criticized Ring Flash has turned with an umbrella into a source of soft controllable light. As for me, this is a very useful ability. After making a “trash” session, everything can be set up for a portrait or NUDE very fast, and you do not have to take a second light source with you.

Successful shots to you.

© Andrew Buckin

P.S.:

Currently I do not have the ability for mass production of this holder. So if anyone has the wish to acquire one, I have to disappoint you with a high price. Everything is made manually.