roboforum.ru

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

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

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

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

Сообщение setar » 01 фев 2016, 23:39

я тут мал по малу разрабатываю новые концепты компановки.
вырисовывается вот такая универсальная модель под сменный тип крепления.
должна подойти на большинство типовых кареток (сами крепежи пока не смоделировал)
датчик работает с немного меньшей точностью ~0.05мм (вероятно из за меньшего угла между осевыми линиями)
которые мне удалось вернуть в желаемые 0.01 посредством вот такой проверки:
Код: Выделить всёРазвернуть
  byte dataMax, dataMin, dataPix_Sum, data_su;

  while(1){
    data_su = ADNS_read(Shutter_Upper);
    if (data_su < 3){
        dataMax = ADNS_read(Maximum_Pixel);
        dataMax > ConstMax ? pin_led_LOW : pin_led_HIGH;
    } else {
      pin_led_HIGH;
    }

я обратил внимание что значение Shutter опускается достаточно низко когда пятно показывается в кадре полностью,
а Maximum_Pixel тогда когда появляется его краешек.
сочетание событий и использую для более достоверной идентификации пятна в кадре.
правда на светлом отражении срабатывает раньше а на черном только когда пятно в центре.
на относительно равномерном по текстуре столе это не существенно.
Вложения
Снимок экрана 2016-02-01 в 22.28.08.png
Снимок экрана 2016-02-01 в 22.28.15.png
Снимок экрана 2016-02-01 в 22.28.59.png
Снимок экрана 2016-02-01 в 22.29.11.png
Снимок экрана 2016-01-31 в 1.43.58.png
Снимок экрана 2016-01-31 в 1.42.09.png
Снимок экрана 2016-01-31 в 1.42.47.png
Аватара пользователя
setar
Site Admin
 
Сообщения: 10984
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

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

Сообщение dccharacter » 01 фев 2016, 23:55

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

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

Сообщение setar » 02 фев 2016, 00:07

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

Добавлено спустя 1 минуту 21 секунду:
проявлялся эффект туннеля - эхо от лазера появлялось раньше основного луча, причем значительное по интенсивности
Вложения
Снимок экрана 2016-02-01 в 23.05.29.png
Аватара пользователя
setar
Site Admin
 
Сообщения: 10984
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

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

Сообщение dccharacter » 02 фев 2016, 08:08

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

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

Сообщение setar » 02 фев 2016, 11:25

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

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

Сообщение Dmitry__ » 02 фев 2016, 16:16

setar писал(а):поделись - как называется тот чудесный тип проводков которые ты используешь и где их можно прикупить ?

Наверно ты говоришь про мгтф провод. По крайней мере только его я за монтажный провод считаю :)
Вообще у меня 2 технологии монтажа мгтфом. 1-й классический - откусил, зачистил, запаял. Но он очень трудоемкий, мгтф очень сложно зачистить, надо острые кусачки с ограничивающим смыкание винтиком.
2-й способ: Аккуратно снимаешь изоляция с провода (около 10-20см) и эту трубку используешь как кембрик для одножильного провода. Тогда монтаж напоминает шуструю вышиванку макраме :)
http://www.chipdip.ru/search/?searchtext=%D0%BC%D0%B3%D1%82%D1%84&auc=1

Добавлено спустя 3 минуты 2 секунды:
setar писал(а):проявлялся эффект туннеля - эхо от лазера появлялось раньше основного луча, причем значительное по интенсивности

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

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

Сообщение Madf » 02 фев 2016, 16:18

я мгтф чищу подобными штуками:

Изображение

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

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

Сообщение ilalexey » 02 фев 2016, 16:29

А я мгтф турбозажигалкой. Обычная коптит. Пяток проводков в пальцах держишь и одним махом чирик. Тут-же сразу пролудить.
Такая у меня:
Вложения
sids_zt-n-sh.jpg
Аватара пользователя
ilalexey
 
Сообщения: 3202
Зарегистрирован: 13 май 2011, 21:37
Откуда: Bb

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

Сообщение setar » 02 фев 2016, 16:33

Dmitry__ писал(а):Блин, блин, блин, надо таки выложить прошивку с регулировкой мощности лазера, там такой засады не будет.

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

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

Сообщение Dmitry__ » 02 фев 2016, 17:04

Только надо марлин пилить, но там мало изменений. Алгоритм порога должен быть на обратном ходе головы:
Едем в стол, сработал датчик, замедляем скорость и проезжаем еще 0.3мм. Датчик в это время сильно уменьшает мощность лазера. Потом медленно поднимаем голову до порога от датчика. Только я разобрал все проги. Все в тестовом режиме. Щаз мой марлин больше смахивает на синклеровский синтезатор :) Но попробуй вытащить алгоритм:

Код: Выделить всёРазвернуть
static void run_z_probe() {

    plan_bed_level_matrix.set_to_identity();
    feedrate = homing_feedrate[Z_AXIS];
   st_synchronize();

    // move down until you find the bed
    float zPosition = -10;
    plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], zPosition, current_position[E_AXIS], feedrate/60, active_extruder);
    st_synchronize();

   buzz(50, 500);
   delay(300);

    // we have to let the planner know where we are right now as it is not where we said to go.
    zPosition = st_get_position_mm(Z_AXIS);
    plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], zPosition, current_position[E_AXIS]);
   st_synchronize();


    // move back down slowly to find bed
   clean_up_after_endstop_move();
    zPosition -= 0.3;
    plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], zPosition, current_position[E_AXIS], feedrate/600, active_extruder);
    st_synchronize();
   setup_for_endstop_move();

    // we have to let the planner know where we are right now as it is not where we said to go.
    zPosition = st_get_position_mm(Z_AXIS);
    plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], zPosition, current_position[E_AXIS]);
   st_synchronize();

   buzz(30, 500);
   delay(30);
   buzz(30, 500);
   delay(30);

   zPosition += 0.6;
   plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], zPosition, current_position[E_AXIS], feedrate/1000, active_extruder);
   st_synchronize();

    current_position[Z_AXIS] = st_get_position_mm(Z_AXIS);
    // make sure the planner knows where we are as it may be a bit different than we last said to move to
    plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
   st_synchronize();

   buzz(30, 500);
   delay(30);
   buzz(30, 500);
   delay(30);
   buzz(30, 500);
   delay(30);

/*
    plan_bed_level_matrix.set_to_identity();
    feedrate = homing_feedrate[Z_AXIS];
   st_synchronize();

    // move down until you find the bed
    float zPosition = -10;
    plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], zPosition, current_position[E_AXIS], feedrate/60, active_extruder);
    st_synchronize();

    // we have to let the planner know where we are right now as it is not where we said to go.
    zPosition = st_get_position_mm(Z_AXIS);
    plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], zPosition, current_position[E_AXIS]);
   st_synchronize();

    // move back down slowly to find bed
   clean_up_after_endstop_move();
    zPosition -= 0.15;
    plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], zPosition, current_position[E_AXIS], feedrate/600, active_extruder);
    st_synchronize();
   setup_for_endstop_move();

    // we have to let the planner know where we are right now as it is not where we said to go.
    zPosition = st_get_position_mm(Z_AXIS);
    plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], zPosition, current_position[E_AXIS]);
   st_synchronize();
   
   zPosition += 0.3;
   plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], zPosition, current_position[E_AXIS], feedrate/60, active_extruder);
   st_synchronize();

   zPosition -= 0.3;
   plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], zPosition, current_position[E_AXIS], feedrate/600, active_extruder);
   st_synchronize();

    current_position[Z_AXIS] = st_get_position_mm(Z_AXIS);
    // make sure the planner knows where we are as it may be a bit different than we last said to move to
    plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
   st_synchronize();
*/



/*
    plan_bed_level_matrix.set_to_identity();
    feedrate = homing_feedrate[Z_AXIS];

    // move down until you find the bed
    float zPosition = -10;
    plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], zPosition, current_position[E_AXIS], feedrate/60, active_extruder);
    st_synchronize();

    // we have to let the planner know where we are right now as it is not where we said to go.
    zPosition = st_get_position_mm(Z_AXIS);
    plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], zPosition, current_position[E_AXIS]);

    // move up the retract distance
    zPosition += home_retract_mm(Z_AXIS);
    plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], zPosition, current_position[E_AXIS], feedrate/60, active_extruder);
    st_synchronize();

    // move back down slowly to find bed
    feedrate = homing_feedrate[Z_AXIS]/4;
    zPosition -= home_retract_mm(Z_AXIS) * 2;
    plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], zPosition, current_position[E_AXIS], feedrate/60, active_extruder);
    st_synchronize();

    current_position[Z_AXIS] = st_get_position_mm(Z_AXIS);
    // make sure the planner knows where we are as it may be a bit different than we last said to move to
    plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
*/
}



Добавлено спустя 13 минут 33 секунды:
Судя по твоим последним фоткам, я так понял, тебе больше приглянулись мелкие дуины? Типа спарка?

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

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

Сообщение dccharacter » 02 фев 2016, 18:21

Ээээ, мгтф же оплетка не плавится, там какая-то тефлоновая хрень. А зажигалкой, коворят, какие-то вредные газы испускает, травануться можно

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

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

Сообщение Dmitry__ » 02 фев 2016, 18:30

dccharacter писал(а):А ты, дим, учись пользоваться гитом, тогда сборка-разборка программ не будет проблемой

Заблуждение, гит ничего тут не дает. Ты ваще слабо понимаешь зачем он нужен :)
Гиты еще не умеют собирать из разобранного, вернуться к старому - да, только мне это наф не нужно.
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

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

Сообщение Madf » 02 фев 2016, 18:37

Вам ещё для пущей неволи не хватает "код ревью" делать. :D
Гит собирать умеет, но при условии, что все ковырялись не в одном месте, иначе - да, Ж!
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

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

Сообщение dccharacter » 02 фев 2016, 18:38

Dmitry__ писал(а):
dccharacter писал(а):А ты, дим, учись пользоваться гитом, тогда сборка-разборка программ не будет проблемой

Заблуждение, гит ничего тут не дает. Ты ваще слабо понимаешь зачем он нужен :)
Гиты еще не умеют собирать из разобранного, вернуться к старому - да, только мне это наф не нужно.

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

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

Сообщение imdefined » 02 фев 2016, 18:49

Madf писал(а):Вам ещё для пущей неволи не хватает "код ревью" делать. :D
Гит собирать умеет, но при условии, что все ковырялись не в одном месте, иначе - да, Ж!

Когда все ковырялись в одном месте в гите надо будет из 3х диффов собрать один, а руками проще застрелиться :crazy:
imdefined
 
Сообщения: 351
Зарегистрирован: 25 янв 2016, 23:06

Пред.След.

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

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

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