Добавляем панорамирование к Timelapse.

Хочется веб-камерой и побольше пространства охватить, и в деталях не потерять? Тогда решением может стать панорамирование в автоматическом режиме.

Однако панорамирование в сочетании с Timalpse да еще и с не самым коротким фокусным расстоянием - не такая простая задача как кажется на первый взгляд. Нужно панорамирующее устройство способное поворачиваться очень медленно и очень плавно. В некоторых случаях также желательно иметь возможность программного управления с компьютера. В моем случае требуется панорамировать днем, а в темное время сток лучше, если камера будет стоять неподвижно.

Короче, мне такую панорамирующую головку за разумные деньги найти не удалось. Чтож, мы не из ленивых и безруких - сделаем сами.

Дальше все зависит от наличия подходящих деталей и оборудования/инструмента. Так вышло, что я в результате сделал аж три разнотипных панорамных устройства, которые здесь и опишу.

Конструкция №1 - винт с гайкой.

Самая простая конструкция с точки зрения необходимых компонентов и их доступности. Весь механизм состоит из шпильки М5, гайки и сервомотора с достаточной редукцией. Управление осуществляется парой концевых выключателей, реле и потенциометра для регулировки скорости.Главный недостаток - то, что панорамирование возможно только на угол около 30 град. И еще конструкция получается довольно громоздкой.


Конструкция №2 - шестеренчатый редуктор.

Этот механизм сейчас используется для панорамирования строгинкой камеры.

# Скрипт управления Ардуино с компьютера.
echo Скрипт управления Ардуино.
#активируем порт для связи с arduino
for port in /dev/ttyUSB[0-9]
do
#stty -F $port cs8 9600
stty -F $port cs8 9600 ignbrk igncr -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts -hupcl
break
done
echo activated port ok $port
echo $(date +"%d-%m-%Y %H %M -- старт - arduino_control.sh -$port") >> ~/script/arduino.log

while :
do
{

#Решаем стоит ли делать панорамирование
t=$(date +%k%M)
echo "текущее время $t"
if [ "$t" -ge 1030 ] && [ "$t" -le 1730 ];
then echo -n 'I' > $port ; echo "$port панорамируем"
else echo -n 'X' > $port ; echo "$port стоим неподвижно"
fi

sleep 110

}
done

Программка для Ардуино:

char val; int i,j,x1;

void setup() {
  Serial.begin(9600);
  val='X'; // по умолчанию стоим после запуска

  pinMode(5, OUTPUT);//dir
  pinMode(6, OUTPUT);//step
  pinMode(7, OUTPUT);// sleep
  pinMode(13, OUTPUT);//red light when running
  digitalWrite(5,HIGH);
  digitalWrite(7,HIGH);
  digitalWrite(13,HIGH);
//ставим в исходную позицию
  x1=analogRead(A6);
  if (x1<960) {
   for(i=0;i<4000;i++) {
      digitalWrite(6,HIGH);
      digitalWrite(6,LOW);
      delay(10);
         x1=analogRead(A6);
         if(x1>970) break;}
  }
}

void loop() {
  for(j=0; j<2; j=(j++)%2) { // чередуем движение вправо и влево

    //если был сигнал на останов - стоим и ждем сигнала на продолжение работы
    if (val == 'X') {
   digitalWrite(13, LOW); //гасим лампочку
  digitalWrite(7, LOW); // дезактивируем драйвер
while((val != 'I')&&(j==0)){delay(1000); while (Serial.available() > 0) {val = Serial.read(); }}}

   //если последний поступил сигнал на продолжение работы - работаем
    digitalWrite(13, HIGH);//зажигаем красную лампочку
    digitalWrite(7, HIGH);//активируем драйвер
    delay(5);//задержка на активацию драйвера
    if(j==1) digitalWrite(5, HIGH); else digitalWrite(5,LOW); //задаем направление вращения


// начинаем движение  

for(i=0;i<4000;i++) {
      digitalWrite(6,HIGH);
      digitalWrite(6,LOW);
      delay(150); //сделали один шаг и подождали заданный интервал времени.


// читаем команду с компьютера        
        while (Serial.available() > 0) {val = Serial.read();} 

             
//считываем положение с потенциометра,
//и если вышло за диапазон заданных значений разрываем цикл.  

          x1=analogRead(A6);    
          if((x1>970)&&(j==1)||(x1<770)&&(j==0))break;

    }
  }

}


Конструкция №3 - червячный редуктор.

Очень плавный механизм, состоит из большой шестерни от лзерного принтера и шпиьки М8.


Для вопросов и предложений: job21(at)flagman.ru

Спонсор проекта: Флагман - изготовление флагов