roboforum.ru

Технический форум по робототехнике.

Датчик касания оптический, триангуляция

Обсуждение технологии печати на 3D принтерах. Самостоятельное изготовление и приобретение. RepRap и его последователи.

Re: Датчик касания оптический, триангуляция

Сообщение Madf » 11 фев 2016, 18:26

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

А чем не подходит такой вариант?

Да и у твоего гравера должна быть "насадка-регулятор глубины"?
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Re: Датчик касания оптический, триангуляция

Сообщение Dmitry__ » 11 фев 2016, 22:58

Ну все так, но после фрезеровки дорожек есть сверловка и контур. Ну очень напрягает поиск "z0" тестовой бумажкой, а тут такой датчик рождается. Я о таком датчике и мечтать не мог 15 лет назад...
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Датчик касания оптический, триангуляция

Сообщение Madf » 11 фев 2016, 23:26

Я же ссылку дал, какая бумажка. (
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Re: Датчик касания оптический, триангуляция

Сообщение Dmitry__ » 12 фев 2016, 01:48

Ну? Фрезернул плату этим способом, сменил фрезу, настройки нуля улетели. Вся плата перестала быть сплошной металлизацией, как для контура ноль настраивать?
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Датчик касания оптический, триангуляция

Сообщение Dmitry__ » 12 фев 2016, 06:34

А чего-то я туплю, от ухода "z" при смене инструмента, датчик не спасает. Нужна физическая кнопка калибровки высоты инструмента. Сказывается длительная пауза в работе с cnc. Ладн, будем считать, что хотел сказать, что просто хочу датчик на cnc :D
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Датчик касания оптический, триангуляция

Сообщение dccharacter » 12 фев 2016, 07:30

А чо б насквозь не сверлить?
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Датчик касания оптический, триангуляция

Сообщение Dmitry__ » 12 фев 2016, 09:23

Насквозь можно, но желательно стол не портить, подложка - кусок текстолита 2мм. А еще фрезеровка контура, свои печатные платы обычно сложной формы. Фрезеруется за примерно 5 проходов (текстолит 2мм.), т.е. 0.4 мм за проход, отсюда довольно высокая точность установки инструмента...

Займусь на выходных датчиком, все зарелизились на гитах? Списывать буду. :)
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Датчик касания оптический, триангуляция

Сообщение Madf » 12 фев 2016, 12:08

Dmitry__ писал(а):как для контура ноль настраивать?

Так такая точность нужна только для гравировки, сверлить и выпиливать можно с допусками, всё равно на станину прокладывается прокладка.
Потом можно кстати извращнуться, у меня в imodela im-01 знаешь как ноль выставляется? Очень просто, ослабляешь цангу, фреза сама под действием гравитации падает на материал - всё! Т.е. после фрезеровки, командуешь ЧПУ встать в ноль, матрица поверхности не сбрасывается же, дальше поднимаешь фрезу, выкручиваешь, вставляешь другую (сверло) и без затяжки, командуешь встать на ноль по Z (ведь по XY он уже в нуле), а саму фрезу на это время придерживаешь, дальше когда на ноль всё встало, отпускаешь фрезу, она падает на поверхность - вот те ноль, затягиваешь цангу...
В общем долго писать, но руками быстро делать! :D
Ты не с теми проблемами борешься, вот обработка двух сторон - вот где изврат, правда и там можно извращнуться:

Изображение
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Re: Датчик касания оптический, триангуляция

Сообщение setar » 12 фев 2016, 16:11

обновил репо
  • добавил возможность регулирования мощности лазера к заданному значению Max_Pix
  • добавил алгоритм вычисления полки минимума регулировки через фиксированное время достижения пятном центра поля (пока голая теория без проверки на железе)
  • пытался поправить алгоритм среднескользящих но запутался в процедуре обработчика (видимо косяк в работе с данными и ссылками на данные)
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: Датчик касания оптический, триангуляция

Сообщение linvinus » 12 фев 2016, 21:56

Сергей, я понимаю что на коленке делается, но может лучше через машину состояний (конечный автомат)?

для Algo_TimeBased
Код: Выделить всёРазвернуть
typedef enum {
  WAITPROBE,
  FIRSTPROBE,
  SECONDPROBE
}state_machine;


state_machine state=WAITPROBE;
.....

#if defined(Algo_TimeBased)

    //порегулируем мощность лазера
    while( ((dataMax = ADNS_read(ADNS_MAX_PIX)) || 1) &&
           ( dataMax > laser_power_pwm_target ||
           ( dataMax < laser_power_pwm_target && RegPowLaser < 255) ) ){
      RefrPowerLaser(dataMax);
    }

    if (RegPowLaser < 255) {                // лазер в поле зрения
      switch(state){
        case WAITPROBE:
          FirstSensedTime=millis();         //начинаем замер времени
          state=FIRSTPROBE;                 // первый этап
         break;
       case FIRSTPROBE:                     //первый замер
          if (sensed){                      // уже было срабатывание
            if (RegPowLaser > (BasePowLaser + 50)){ //  отошли от базового уровня на достаточное расстояние, переход ко второму этапу
              state=SECONDPROBE;            // второй этап
              PIN_HIGH(LED);sensed=false;   // отключаем сигнал срабатывания
            }
          }else{                            // ждем время
            currentTime=millis();
            if (currentTime >= (FirstSensedTime + TimeBased_wait_center)){ // время вышло, останавливаемся
              PIN_LOW(LED);sensed=true;     // сигнал срабатывания
              BasePowLaser=RegPowLaser;     // запоминаем значение регулировки лазера
            }
          }
        break;
       case SECONDPROBE :                   //второй замер
          if (!sensed){                     // пока не было срабатывания
            if (RegPowLaser < (BasePowLaser + 5)){//  подошли близко к базовому уровню срабатываем
              PIN_LOW(LED);sensed=true;     // включаем сигнал срабатывания
            }
          }else{                            // было финальное срабатывание на втором этапе
            ;
          }
        break;
      }//switch
    }else{                                  // лазер вне поля зрения
      if(state != WAITPROBE){               // если вне режима ожидания
        if (sensed){
          switch(state){                    // выход лазера из поля после срабатывания - нормальная ситуация
            case FIRSTPROBE:                // выход лазера из поля зрения между замерами, переходим ко ожиданию второго этапа
              state=SECONDPROBE;            // второй этап
              PIN_HIGH(LED);sensed=false;   // отключаем сигнал срабатывания
            break;
            case SECONDPROBE:               // выход лазера из поля после финального срабатывания, переходим ко ожиданию
              state=WAITPROBE;              // ожидание
              PIN_HIGH(LED);sensed=false;   // отключаем сигнал срабатывания
            break;
          }
        }else{                               // выход лазера из поля без срабатывания - аварийная ситуация
          PIN_LOW(LED);sensed=true;          // включаем сигнал срабатывания
          state=WAITPROBE;                   // ожидание
        }
      }//state != WAITPROBE

    }//else RegPowLaser < 255

#endif //Algo_TimeBased

Последний раз редактировалось linvinus 13 фев 2016, 13:54, всего редактировалось 2 раз(а).
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!
Аватара пользователя
linvinus
 
Сообщения: 1672
Зарегистрирован: 29 апр 2011, 12:37
Откуда: Москва
прог. языки: С

Re: Датчик касания оптический, триангуляция

Сообщение setar » 12 фев 2016, 22:00

не поверишь - уже :)
отлаживаю
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: Датчик касания оптический, триангуляция

Сообщение linvinus » 12 фев 2016, 22:17

думаю скользящая средняя должна выглядеть как то так

Код: Выделить всёРазвернуть
float GetSMA(uint8_t *buffer,byte depth,byte LastValue)
{
  float result=0;
  for (byte x=depth-1 ; x>1 ; x--){
    buffer[x] = buffer[x-1]; //сдвигаем массив результатов вправо
    result+= buffer[x];
  }
  buffer[0] = LastValue; //добавляем новое значение
  result+= buffer[0];
  result = result/(float)depth;
  return result;
}
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!
Аватара пользователя
linvinus
 
Сообщения: 1672
Зарегистрирован: 29 апр 2011, 12:37
Откуда: Москва
прог. языки: С

Re: Датчик касания оптический, триангуляция

Сообщение 3DPrinter » 13 фев 2016, 14:51

Микро мнение со стороны:
Во-первых, глубочайшее спасибище за Вашу работу. Фактически Вы сечйчас коллективными усилиями генерируете один из самых важных прорывов в сфере бытовой 3D печати.
Во-вторых, может имеет смысл писать столь перспективное ноу-хау для более продвинутой прошивки?
http://smoothieware.org/
Мне кажется, что АРМ даст Вам куда больше возможностей.
http://smoothieware.org/zprobe#toc2

китайские платы недорогие, прошивка открытая. возможностей у платформы больше.
Аватара пользователя
3DPrinter
 
Сообщения: 603
Зарегистрирован: 23 янв 2014, 01:13
Откуда: Украина. Киев.
Skype: kiev_3dprinter
ФИО: Печать трехмерная

Re: Датчик касания оптический, триангуляция

Сообщение ales2k » 13 фев 2016, 15:00

Есть идея сделать подсветку. Сейчас буду пробовать.
Делаем подсветку поля светодиодом например от мыши.
1 Подсветка поля выключена, лазер на максимум, едем вниз
2 Как только макспикс начал меняться(30 например)
2.1 выключаем лазер(можно просто сильно занизить мощность), подсветка включена, узнаем свойства фона
2.2 выключаем подсветку, включаем лазер с уже нужной мощностью
3 Ждем срабатывания по максимальному макспикс

Думаю что 2.1 и 2.2 не займут много времени.

Что скажите?

Добавлено спустя 5 минут 38 секунд:
Очень хочется сделать решение именно на замену датчику и не зависимое от прошивки принтера.
"Мы не в Англии случиться может всякое" Сказано главой МИ6 в Эдинбурге Шотландия.
Аватара пользователя
ales2k
 
Сообщения: 463
Зарегистрирован: 30 июн 2014, 12:50

Re: Датчик касания оптический, триангуляция

Сообщение linvinus » 13 фев 2016, 18:08

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

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

Как делает Сергей пока непонятно.

Главное достоинство этого метода в том что минимум есть всегда, вне зависимости от поверхности, но его уровень разный в зависимости от поверхности, и есть ограничение, если лазер слабоват, не работает на очень тёмных материалах.
Дмитрий пробует использовать более мощный лазер.

Второй вариант который я описывал выше опираться на SQUAL но он сложнее т.к. нужно создать условия для наличия большого количества SQUAL на поверхности (специальное пятно от лазера),а также требует более точной фокусировки (пятно лазера должно попадать строго в зону резкости ), и скорее всего будет так же плохо работать на темных материалах, но я полагаю что с таким методом будет проще искать высоту в один заход.
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!
Аватара пользователя
linvinus
 
Сообщения: 1672
Зарегистрирован: 29 апр 2011, 12:37
Откуда: Москва
прог. языки: С

Пред.След.

Вернуться в 3D печать

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

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