roboforum.ru

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

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

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

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

Сообщение dccharacter » 10 янв 2016, 01:55

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

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

Сообщение Dmitry__ » 10 янв 2016, 02:01

Я показывал, ты сказал:"Молодец! А что эти зеленые буквы и цифры на белом фоне значат?" :)
Ааааааа, картинки же нужны :) Ща видева сниму.
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

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

Сообщение dccharacter » 10 янв 2016, 02:05

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

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

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

Вот блин, дай говна, дай ложку :(
Повтор:
Код: Выделить всёРазвернуть
Mean: 0,996937  синий маркер
Mean: 1,073625  белая пленка (Смещение 5мм.)
Mean: 1,014469  синий маркер
Mean: 1,084656  белая пленка (Смещение 5мм.)
Mean: 1,016906  синий маркер
Mean: 1,091938  белая пленка (Смещение 5мм.)

Т.е. различия около 0.07мм. При этом наклон стола:
Код: Выделить всёРазвернуть
Mean: 0,946125
Mean: 0,960500

Это 10 тестов на белом месте, смещение на 5 мм. на синий маркер, 10 тестов на маркере, возврат обратно на белый фон. И так 3 раза.
Все тута:
forum107/topic15929-450.html#p344141

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

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

Сообщение dccharacter » 10 янв 2016, 02:29

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

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

Сообщение Dmitry__ » 10 янв 2016, 02:42

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

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

Сообщение Dmitry__ » 10 янв 2016, 12:35

Фсе, други мои, контраст не влияет на показометр :)
Зацениваем работу регулировки лазера

Код: Выделить всёРазвернуть
Синий маркер
11:24:43.828 : 1 of 10   z: 14.388438
11:24:56.494 : 2 of 10   z: 14.379063
11:25:09.158 : 3 of 10   z: 14.393438
11:25:21.815 : 4 of 10   z: 14.392500
11:25:34.472 : 5 of 10   z: 14.396250
11:25:47.136 : 6 of 10   z: 14.377188
11:25:59.803 : 7 of 10   z: 14.390313
11:26:12.463 : 8 of 10   z: 14.392188
11:26:25.123 : 9 of 10   z: 14.391563
11:26:37.782 : 10 of 10   z: 14.396563
11:26:44.221 : Mean: 14.389750
11:26:44.222 : Standard Deviation: 0.006270
11:26:44.225 : echo:endstops hit:  Z:14.40

белый фон, смещение 5мм.
11:28:04.240 : 1 of 10   z: 14.403125
11:28:16.915 : 2 of 10   z: 14.415000
11:28:29.594 : 3 of 10   z: 14.389375
11:28:42.286 : 4 of 10   z: 14.376563
11:28:54.971 : 5 of 10   z: 14.405938
11:29:07.651 : 6 of 10   z: 14.398751
11:29:20.335 : 7 of 10   z: 14.400000
11:29:33.012 : 8 of 10   z: 14.412501
11:29:45.680 : 9 of 10   z: 14.422188
11:29:58.355 : 10 of 10   z: 14.398125
11:30:04.807 : Mean: 14.402158
11:30:04.809 : Standard Deviation: 0.012407
11:30:04.811 : echo:endstops hit:  Z:14.40
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

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

Сообщение setar » 10 янв 2016, 22:25

по результатам экспериментов меняю концепт дизайн датчика:
Снимок экрана 2016-01-10 в 21.18.43.png


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

на мысль натолкнули эксперименты по нахождению фокусного расстояния лазера:
Снимок экрана 2016-01-10 в 16.55.18.png
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

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

Сообщение setar » 11 янв 2016, 03:31

Реализовал концепт, работает:
Снимок экрана 2016-01-11 в 1.50.30.png

Снимок экрана 2016-01-11 в 1.52.21.png

Снимок экрана 2016-01-11 в 2.25.47.png

Снимок экрана 2016-01-11 в 2.26.04.png


тесты:

стекло
Код: Выделить всёРазвернуть
SENDING:M48 P20 X200 Y150 V2
M48 Z-Probe Repeatability test
1 of 20   z: 2.377500
2 of 20   z: 2.381875
3 of 20   z: 2.390625
4 of 20   z: 2.380000
5 of 20   z: 2.376250
6 of 20   z: 2.379375
7 of 20   z: 2.380000
8 of 20   z: 2.383125
9 of 20   z: 2.381250
10 of 20   z: 2.379375
11 of 20   z: 2.380000
12 of 20   z: 2.378125
13 of 20   z: 2.376875
14 of 20   z: 2.372500
15 of 20   z: 2.376250
16 of 20   z: 2.375000
17 of 20   z: 2.378750
18 of 20   z: 2.376250
19 of 20   z: 2.376875
20 of 20   z: 2.380000
Mean: 2.379000
Standard Deviation: 0.003625


белое (желтый скотч, другого не нашел):
Код: Выделить всёРазвернуть
SENDING:M48 P20 X200 Y150 V2
M48 Z-Probe Repeatability test
1 of 20   z: 3.243125
2 of 20   z: 3.244375
3 of 20   z: 3.235625
4 of 20   z: 3.218125
5 of 20   z: 3.226875
6 of 20   z: 3.240625
7 of 20   z: 3.225625
8 of 20   z: 3.218750
9 of 20   z: 3.220000
10 of 20   z: 3.213125
11 of 20   z: 3.218750
12 of 20   z: 3.208750
13 of 20   z: 3.218750
14 of 20   z: 3.206250
15 of 20   z: 3.218125
16 of 20   z: 3.214375
17 of 20   z: 3.216250
18 of 20   z: 3.206250
19 of 20   z: 3.204375
20 of 20   z: 3.205625
Mean: 3.220188
Standard Deviation: 0.012118


черное (покрасил скотч маркером):
Код: Выделить всёРазвернуть
SENDING:M48 P20 X200 Y150 V2
M48 Z-Probe Repeatability test
1 of 20   z: 2.853125
2 of 20   z: 2.835625
3 of 20   z: 2.828125
4 of 20   z: 2.875000
5 of 20   z: 2.831875
6 of 20   z: 2.813125
7 of 20   z: 2.834375
8 of 20   z: 2.823750
9 of 20   z: 2.852500
10 of 20   z: 2.873750
11 of 20   z: 2.854375
12 of 20   z: 2.856875
13 of 20   z: 2.853750
14 of 20   z: 2.853750
15 of 20   z: 2.853125
16 of 20   z: 2.816875
17 of 20   z: 2.838125
18 of 20   z: 2.816875
19 of 20   z: 2.851875
20 of 20   z: 2.817500
Mean: 2.841719
Standard Deviation: 0.018221


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

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

Сообщение dccharacter » 11 янв 2016, 04:09

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

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

Сообщение Dmitry__ » 11 янв 2016, 10:46

setar писал(а):по результатам экспериментов меняю концепт дизайн датчика:

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

Вообще, пятно лазера имеет форму кирпича, т.е. ровно такую, какую имеет торец излучающего тела. На стол лазер надо фокусировать так, чтоб продольная часть кирпича заходила в поле пзс. Тогда наклон лазера доведет этот кирпич до более-менее квадратного пятна. Это когда разрез латунной трубки лазера расположен вертикально. Не видите этот кирпич из-за огромной яркости точки. Чтоб увидеть - расфокусируйте точку лазера на стене, чтоб картинка была больше 10х10 см. Расфокусировка - неточное слово, луч лазера не расфокусируется ибо когерентен, просто увеличит картинку, повторяя форму торца лазера. Чтоб увидеть этот кирпич на наших расстояниях, надо понижать мощность лазера. Запитайте лазер от регулируемого бп. Регулировка бп еще даст много ответов, почему на разном контрасте имеем ошибку.
setar писал(а):как видно повторяемость хорошая (как сказал знакомый профессор - воспроизводимость)
а вот разница черное - белое велика = 0.38
Дима, колись как ты убрал эту зависимость ?

Регулировкой мощности лазера :)
Я разобрал всю программу и еще нахожусь в активной фазе доработок. Куда-то сливать полуживую прогу - нет смысла. Или надо какую-то тестовую ветку делать, чтоб было видно кауда я двигаюсь. На пальцах сделал так:
Инициируем аппаратный pwm, делаем его на макс. частоту, для дигиспарк это:
Код: Выделить всёРазвернуть
FAVOR_PHASE_CORRECT_PWM set to 0
MS_TIMER_TICK_EVERY_X_CYCLES set to 1

FAVOR_PHASE_CORRECT_PWM to 0 in:
arduino-1.0x/hardware/digispark/cores/tiny/core_build_options.h

MS_TIMER_TICK_EVERY_X_CYCLES symbol in:
arduino-1.0x/hardware/digispark/cores/tiny/wiring.c

Pin0 = 64453 Hz:
закомментировать TIMER0_SUPPORTS_PHASE_CORRECT_PWM в вветке #if defined( __AVR_ATtinyX5__ )
.arduino15/packages/digistump/hardware/avr/1.6.5/cores/tiny/core_timers.h



Далее делаем интегратор:
Код: Выделить всёРазвернуть
uint8_t RegPowLaser = 0;

void RefrPowerLaser(uint8_t power)
{
  if(power < ConstMax && RegPowLaser < 255)
  {
    RegPowLaser++;
    analogWrite(pin_HwPwm_bit, RegPowLaser);
  }
  else if(power > ConstMax && RegPowLaser > 0)
  {
    RegPowLaser--;
    analogWrite(pin_HwPwm_bit, RegPowLaser);
  }
}


Которому часто и постоянно скармливаем данные Maximum_Pixel

Код: Выделить всёРазвернуть
   while(!pin_TRIG_IN)   //шаг1
   {   
      dataMax = ADNS_read(Maximum_Pixel);
      RefrPowerLaser(dataMax);
   ......
   }

Тогда лазер будет все время поддерживать мощность на уровне ConstMax и вам сразу станет понятно почему уходит на 0.3мм на белых поверхностях :)

Я щаз сильно пилю марлин, делаю примитивный протокол перестукивания через стенку пинами pin_TRIG и pin_led. На марлине дебажу через штатную пищалку :D
Код: Выделить всёРазвернуть
    // 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();

   Beep_my(500, 30);
   delay(30);
   Beep_my(500, 30);
   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();

   Beep_my(500, 30);
   delay(30);
   Beep_my(500, 30);
   delay(30);
   Beep_my(500, 30);
   delay(30);
...

void Beep_my(int beepS, int beepP)
{
   if (beepS > 0)
   {
      #if BEEPER > 0
         tone(BEEPER, beepS);
         delay(beepP);
         noTone(BEEPER);
      #elif defined(ULTRALCD)
         lcd_buzz(beepS, beepP);
      #elif defined(LCD_USE_I2C_BUZZER)
         lcd_buzz(beepP, beepS);
      #endif
   }
   else
   {
      delay(beepP);
   }
}



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

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

Сообщение setar » 11 янв 2016, 11:43

dccharacter писал(а):Сергей, а что за провал у тебя в центре?

это не провал, это первое срабатывание на приближении , а второе на удалении

Добавлено спустя 9 минут 2 секунды:
Dmitry__ писал(а): Самая популярная версия марлина кто?

https://github.com/MarlinFirmware/MarlinDev

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

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

Сообщение dccharacter » 11 янв 2016, 18:16

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

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

Сообщение setar » 11 янв 2016, 21:22

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

Добавлено спустя 3 часа 2 минуты 38 секунд:
Dmitry__ писал(а):Далее делаем интегратор:

Дима, зачем интегратор ?
по факту ты делаешь пилу и вешаешь на нее компаратор, а можно несколькими импульсами сделать 5-6 приближений больше/меньше:
100% мощности лазера, ждем отклика
если получен отклик то
подали 50% интенсивности и решаем увеличивать или уменьшать питание следущий цикл
второй цикл выставляем 50+25% или 50-25% и так несколько приближений
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

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

Сообщение Dmitry__ » 11 янв 2016, 21:55

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

Пред.След.

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

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

Сейчас этот форум просматривают: Google [Bot] и гости: 13