roboforum.ru

Технический форум по робототехнике.
Текущее время: 20 май 2025, 03:01

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 1502 ]  На страницу Пред.  1 ... 52, 53, 54, 55, 56, 57, 58 ... 101  След.
Автор Сообщение
 Заголовок сообщения: Re: Датчик касания оптический, триангуляция
СообщениеДобавлено: 16 фев 2016, 12:39 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
набросал логику алгоритма который работает при постоянном регулировании мощи лазера:
сначала находит полку минимального значения регулирования путем таймаута при известной скорости приближения,
а при втором приближении ждет начала найденного порога.

Добавлено спустя 11 минут 37 секунд:
обновил


Вложения:
Снимок экрана 2016-02-16 в 11.37.53.png
Снимок экрана 2016-02-16 в 11.37.53.png [ 122.01 КиБ | Просмотров: 1654 ]
logic.xls [68.5 КиБ]
Скачиваний: 239
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Датчик касания оптический, триангуляция
СообщениеДобавлено: 16 фев 2016, 12:53 
Не в сети
Аватара пользователя

Зарегистрирован: 13 май 2011, 21:37
Сообщения: 3202
Откуда: Bb
dccharacter писал(а):
..добавлять не только описания успешных опытов в шапку, но и испробованные, но отвергнутые варианты. Ае?

Языком простым суть дела чётко изложил


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Датчик касания оптический, триангуляция
СообщениеДобавлено: 16 фев 2016, 15:45 
Не в сети
Аватара пользователя

Зарегистрирован: 30 июн 2014, 12:50
Сообщения: 463
setar писал(а):
набросал логику алгоритма который работает при постоянном регулировании мощи лазера:
сначала находит полку минимального значения регулирования путем таймаута при известной скорости приближения,
а при втором приближении ждет начала найденного порога.

Добавлено спустя 11 минут 37 секунд:
обновил


Может лучше не в 2 прохода делать,а при выходе лазера за кадр? На входе калибруешь, на выходе сигналишь.
Или я чего не так понял?

_________________
"Мы не в Англии случиться может всякое" Сказано главой МИ6 в Эдинбурге Шотландия.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Датчик касания оптический, триангуляция
СообщениеДобавлено: 16 фев 2016, 16:09 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
идея основана на вот этих двух графиках forum107/topic15929-720.html#p347528
и контрольные точки тут такие:
Вложение:
Снимок экрана 2016-02-10 в 22.18.29.png
Снимок экрана 2016-02-10 в 22.18.29.png [ 197.06 КиБ | Просмотров: 1616 ]

в общем пытаюсь привязаться к концу первого фронта регулирования лазера, для того чтобы знать уровень полки даю паузу от первого срабатывания для гарантированного нахождения пятна в центре датчика

Добавлено спустя 6 минут 29 секунд:
ales2k писал(а):
Может лучше не в 2 прохода делать,а при выходе лазера за кадр? На входе калибруешь, на выходе сигналишь.
Или я чего не так понял?

тут есть нюансик. от входа до выхода большое расстояние, в зависимости от геомертии сенсора от 3 до 10-15 мм
это во первых очень долгое тестирование одной точки,
а во вторых у меня вообще точка за область не выходит - в стол сопло упирается (зазор между фокусом оптики и соплом =5мм)

Добавлено спустя 1 минуту 5 секунд:
для того чтобы эти графики снять я уровень стола накладкой поднимал, на видео видно


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Датчик касания оптический, триангуляция
СообщениеДобавлено: 16 фев 2016, 16:20 
Не в сети
Аватара пользователя

Зарегистрирован: 30 июн 2014, 12:50
Сообщения: 463
А Max почему ровный??? Ты же на его изменение ориентируешься?

Ну да, в стол упираешься потому, что фокус у линзочек от мелких лазеров 5мм.

Ты все таки в 2 прохода ходишь? Может сделать 2 лазера одинаковых на расстоянии 2-3мм и последовательно включать?

_________________
"Мы не в Англии случиться может всякое" Сказано главой МИ6 в Эдинбурге Шотландия.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Датчик касания оптический, триангуляция
СообщениеДобавлено: 16 фев 2016, 16:37 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
два раза работает стандартная прошивка марлина:
первое срабатывание, откат, и возврат с медленной скоростью

а макс ровный это признак того что регулирование проходит успешно, я сначала регулирую мощность а затем уж замеры остальных параметров делаю.
там обрати внимание и регулирование лазера не 255, а ниже. просто график взят не из далека, а около границы поля зрения.

Добавлено спустя 1 минуту 26 секунд:
два лазера мне ставить не хочется, я пока не исчерпал задумки на простой схеме


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Датчик касания оптический, триангуляция
СообщениеДобавлено: 16 фев 2016, 16:39 
Не в сети
Аватара пользователя

Зарегистрирован: 30 июн 2014, 12:50
Сообщения: 463
Я к марлину еще не прикручивал.
Тогда не понимаю по какому параметру срабатывание.

_________________
"Мы не в Англии случиться может всякое" Сказано главой МИ6 в Эдинбурге Шотландия.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Датчик касания оптический, триангуляция
СообщениеДобавлено: 16 фев 2016, 16:50 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
наброски логики, пока не стабильно, но суть думаю понятна

конфиг
Код:
#define Algo_TimeBased        // режим обнаружения минимума регулирования мощности лазера основаный на ожидаемом времени попадания пятна в центр датчика
                              // экспериментальный, базируется на геометрических размерах датчика и скорости Z 3D принтера
#define TimeBased_wait_center 250 // время в милисекундах за которое пятно перемещается от срабатывания по алгоритму Algo_MaxPix до центра датчика
#define TimeBased_wait_second 5000 // время в милисекундах в течении которого ожидаем второго замера (на молой скорости)


логика
Код:
#if defined(laser_power_pwm_target)
void RefrPowerLaser(uint8_t power)
{
  if (power > laser_power_pwm_target && RegPowLaser > 1){
    RegPowLaser--;
    analogWrite(LASER_VCC_PIN,RegPowLaser);
  }
  if (power < laser_power_pwm_target && RegPowLaser < 255){
    RegPowLaser++;
    analogWrite(LASER_VCC_PIN,RegPowLaser);
  }
}
#endif


Код:
#if defined(Algo_TimeBased)
  unsigned long SensedTime;
  byte BasePowLaser;
  typedef enum {
    START,
    WAIT_FIRST,
    FIRST_TIMER,
    ERR_OUT,
    FIRST_SENSED,
    WAIT_SECOND,
    SECOND_SEARCH,
    SECOND_SENSED
  }state_machine;
  state_machine state=START;
#endif//Algo_TimeBased
//-------------------------------------------------------------------------------------------
#if defined(Algo_TimeBased)
    //порегулируем мощность лазера
    while( (dataMax = ADNS_read(ADNS_MAX_PIX)) &&
           ( dataMax > laser_power_pwm_target ||
           ( dataMax < laser_power_pwm_target && RegPowLaser < 255) ) ){
      RefrPowerLaser(dataMax);
      delay(2);
    }
    if (RegPowLaser < 255 ) {                // лазер в поле зрения
      switch(state){
        case START:
          PIN_HIGH(LED);                  // сбросим сигнал срабатывания
          // помигаем в знак ожидания работы 255=включить лазер , 0=выключить
          analogWrite(LASER_VCC_PIN, 0);
          delay(250);
          analogWrite(LASER_VCC_PIN, RegPowLaser);
          delay(250);
         break;
        case WAIT_FIRST:
          SensedTime=millis();              // начинаем замер времени
          state=FIRST_TIMER;                // работает таймер
         break;
        case FIRST_TIMER:
          currentTime=millis();             // текущее время
          if (currentTime >= (SensedTime + TimeBased_wait_center)){ // время вышло, останавливаемся
            PIN_LOW(LED);                   // сигнал срабатывания
            BasePowLaser=RegPowLaser;       // запоминаем значение регулировки лазера
            SensedTime=currentTime;         // начинаем замер времени
            state=FIRST_SENSED;             // первый подход сработал
          }
         break;
        case FIRST_SENSED:
          if (RegPowLaser >= (BasePowLaser + 50)){ //  отошли от базового уровня на достаточное расстояние
            PIN_HIGH(LED);                   // отключаем сигнал срабатывания
            state=SECOND_SEARCH;             // второй этап
          }
          currentTime=millis();             // текущее время
          if (currentTime >= (SensedTime + TimeBased_wait_second)){ // время вышло, повторно не тестировали
            state=START;                    // начинаем цикл по новой
          }
         break;
         case WAIT_SECOND:
           SensedTime=millis();             // начинаем замер времени
           state=SECOND_SEARCH;             // возврат пятна после удаления на первое срабатывание
          break;
         case SECOND_SEARCH:
           if (RegPowLaser <= (BasePowLaser+5)){//  подошли близко к базовому уровню : срабатываем
             PIN_LOW(LED);                  // включаем сигнал срабатывания
             state=SECOND_SENSED;           // второй подход сработал
             delay(10);
             PIN_HIGH(LED);                 // отключаем сигнал срабатывания
           }
           currentTime=millis();             // текущее время
           if (currentTime >= (SensedTime + TimeBased_wait_second)){ // время вышло, порог не найден
             state=START;                    // начинаем цикл по новой
           }
          break;
      } // end switch
    }else{                                  // лазер вне поля зрения
      switch(state){
        case START:
          PIN_HIGH(LED);                    // сбросим сигнал срабатывания
          state=WAIT_FIRST;                 // переходим к ожиданию первого вхождения
         break;
        case FIRST_TIMER:
          PIN_LOW(LED);                     // сигнал срабатывания
          state=START;                      // пролетели поле зрения, авария!
         break;
         case FIRST_SENSED:
           PIN_HIGH(LED);                   // отключаем сигнал срабатывания
           state=WAIT_SECOND;               // было удаление после первого срабатывания
          break;
         case WAIT_SECOND:
           PIN_HIGH(LED);                   // отключаем сигнал срабатывания
           state=SECOND_SEARCH;             // возврат пятна после удаления на первое срабатывание
          break;
          /*
         case SECOND_SEARCH:
           PIN_LOW(LED);                    // сигнал срабатывания
           state=START;                     // пролетели поле зрения, авария!
          break;
          */
         case SECOND_SENSED:
           PIN_HIGH(LED);                   // отключаем сигнал срабатывания
           state=START;                     // цикл замера успешно завершен
          break;
      } // end switch
    }
#endif //Algo_TimeBased


Добавлено спустя 3 минуты 47 секунд:
первое срабатывание как 250мс от времени начала уменьшения мощности лазера.
второе при приближении этой мощности к ожидаемому минимуму

Добавлено спустя 1 минуту 51 секунду:
я наверное запутал названием переменной laser_power_pwm_target
ее нужно было назвать laser_power_MaxPix_target


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Датчик касания оптический, триангуляция
СообщениеДобавлено: 16 фев 2016, 17:10 
Не в сети
Аватара пользователя

Зарегистрирован: 30 июн 2014, 12:50
Сообщения: 463
Вот теперь понял. Спасибо за пояснение.

Как на разных поверхностях работает? Допустим одну половину стола полили лаком/пивом чуть больше чем другую и она темнее.

_________________
"Мы не в Англии случиться может всякое" Сказано главой МИ6 в Эдинбурге Шотландия.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Датчик касания оптический, триангуляция
СообщениеДобавлено: 16 фев 2016, 17:17 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
за одинаковость срабатывания на разных поверхностях и борюсь,
надеюсь что фронты на разных поверхностях совпадают по дистанции.
но пока ответа нету.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Датчик касания оптический, триангуляция
СообщениеДобавлено: 16 фев 2016, 18:24 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
ilalexey писал(а):
Языком простым суть дела чётко изложил

Йо майо, я приветствую вас магистр на планете Земля.
Вот теперь все сходится :ROFL:
Нате вам шиповника плодов сироп, самый любимый ваш из всех... :)

Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Датчик касания оптический, триангуляция
СообщениеДобавлено: 16 фев 2016, 19:09 
Не в сети
Аватара пользователя

Зарегистрирован: 13 май 2011, 21:37
Сообщения: 3202
Откуда: Bb
Dmitry__ писал(а):
Нате вам шиповника плодов сироп, самый любимый ваш из всех

В точку. Ох люблю, ужас просто ..но курить больше(с) :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Датчик касания оптический, триангуляция
СообщениеДобавлено: 17 фев 2016, 00:00 
Не в сети
Аватара пользователя

Зарегистрирован: 30 июн 2014, 12:50
Сообщения: 463
Что то с калибровкой на белом не ладится
В начале все как у Сергея на графике
Снижаем мощность лазера - чуть падает MaxPix
Продолжаем снижать мощность а MaxPix растет - похоже чип регулирует свою чувствительность...
Вложение:
2016-02-16.png
2016-02-16.png [ 115.75 КиБ | Просмотров: 1477 ]


Добавлено спустя 3 минуты 46 секунд:
Причем на темном поле при повышении мощности лазера ничего такого не наблюдается...
Не нравится мне это
Вложение:
мда.jpg
мда.jpg [ 158.24 КиБ | Просмотров: 1468 ]

_________________
"Мы не в Англии случиться может всякое" Сказано главой МИ6 в Эдинбурге Шотландия.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Датчик касания оптический, триангуляция
СообщениеДобавлено: 17 фев 2016, 01:06 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
Посмотри на частоту этих "ростов maxPix", не 50 ли герц

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Датчик касания оптический, триангуляция
СообщениеДобавлено: 17 фев 2016, 01:19 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
ales2k писал(а):
Что то с калибровкой на белом не ладится

Так ты даже близко еще не подошел к линейному режиму пзс. Вот данные мощности лазера от типа поверхности:
Код:
Мощность лазера на разных поверхностях:
белая 12
черный сплошной тонер 120
черный пластик 170

Белый фон - мощность 12, а у тебя график закончился на 75. :shock:


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 1502 ]  На страницу Пред.  1 ... 52, 53, 54, 55, 56, 57, 58 ... 101  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO