roboforum.ru

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

Датчик касания дифференциальный ИК

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

Re: Датчик касания дифференциальный ИК

Сообщение Dmitry__ » 12 окт 2015, 03:02

Поковырял прошивку на выходных. Фильтр данных ацп присутствует. Фильтр скользящего среднего, ширина фильтра задается "cyclesAveragedIR", который "must be a power of 2, max 64" и равен 8. Т.е. наши 2кгц. делим на 8 = 250 герц :cry: . Ну, можно учесть более ранний отклик фильтра (фчх такого фильтра линейная), имеем около 500 герц.

Вообще, повыпиливал из прошивки сиплюсплюснутость. После изучения этой прошивки, я больше никогда не буду тем, кем был. Теперь я видел все :)

Угадайте что это?
Код: Выделить всёРазвернуть
   // Readings have been collected into all three of nearData, farData, and offData.
   // We are looking for a pullup resistor of no more than 75K on the output to indicate that we should use a digital output.
   digitalOutput = offData_sum + nearData_sum + farData_sum >= (3600UL * cyclesAveragedIR * 1024UL * 3)/(75000UL + 3600UL);


Да, это тест пина, есть подтяжка или нет :D
Т.е. подключены 3 (ТРИ) фильтра скользящего среднего для определения резистора на входе пина, при этом в прерываниях делается постоянный опрос бита разрешения (только ради этого прикола). Потом данные сравниваются с эпичным числом "(3600UL * cyclesAveragedIR * 1024UL * 3)/(75000UL + 3600UL)" и после этого принимается решение - а есть ли резистор на входе пина?
Само прерывание - в лучших традициях c++ со структурами и методами, что приводит вот к такому сохранению контекста:
Код: Выделить всёРазвернуть
  40:   1f 92          push   r1
  42:   0f 92          push   r0
  44:   0f b6          in   r0, 0x3f   ; 63
  46:   0f 92          push   r0
  48:   11 24          eor   r1, r1
  4a:   2f 93          push   r18
  4c:   3f 93          push   r19
  4e:   4f 93          push   r20
  50:   5f 93          push   r21
  52:   6f 93          push   r22
  54:   7f 93          push   r23
  56:   8f 93          push   r24
  58:   9f 93          push   r25
  5a:   af 93          push   r26
  5c:   bf 93          push   r27
  5e:   ef 93          push   r30
  60:   ff 93          push   r31

И соотв. к такому же восстановлению контекста. Т.е. если в таком прерывании больше ничего не делать то это 117кгц. А еще в прерывании есть ожидалка :shock:
Код: Выделить всёРазвернуть
   while (TCNT0 < 3 * 8) {}  // delay a little until the ADC s/h has taken effect. 3 ADC clocks should be enough, and 1 ADC clock is 8 timer 0 clocks.


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

Re: Датчик касания дифференциальный ИК

Сообщение barakuda62 » 13 окт 2015, 02:18

Диман... Это всяко ловчее чем брушелесики, пусть даже и код не фонтан, ну признайся ! чё уж там. 8)
Вот замер по 9 точкам без загонов, и печать слоем 100 микрон в 1 слой, фактически он его вмазал в ABS покрытие стола, что бы там ни было а оно работает, и работает нормально даже на самосборе.
P1010021.JPG

P1010022.JPG

грязный стол канеш вносит погрешность, найду прозрачный ABS обязательно попробую 50 микрон.
Printer: H-Boot cube aluminium (промежуточный вариант), Firmware: Marlin
Delta all aluminium, Firmware: Marlin
Electronics: Arduino MEGA 2560 + RAMPS 1.4
barakuda62
 
Сообщения: 292
Зарегистрирован: 28 дек 2014, 02:33
Откуда: Рязань
прог. языки: С#, JAVA

Re: Датчик касания дифференциальный ИК

Сообщение Dmitry__ » 13 окт 2015, 05:56

barakuda62 писал(а):и печать слоем 100 микрон в 1 слой, фактически он его вмазал в ABS покрытие стола, что бы там ни было а оно работает

ППЦ, 13 страниц доказательств, что с этим можно печатать :)
Я просил сделать тест, пока один игнор. Я не против этого датчика, если бы вы привели результаты теста, и он обеспечил точность да хоть в 3 сотки, я бы успокоился. В 0.1мм точность не интересует совсем.
Наклеить скотч, сделать несколько G30 с разным рисунком маркером на скотче. Это так трудно? На фига мне эти примеры с замерами по тцать точек? Это не тест датчика касания.

barakuda62 писал(а):ну признайся ! чё уж там.

Признаюсь, как увижу результат теста на скотче :P

Добавлено спустя 1 час 32 минуты 44 секунды:
Ну шо? Проверил, пичалька :)

Код: Выделить всёРазвернуть
03:07:11.501 : Bed X: 7.90 Y: 14.00 Z: 2.96
03:07:11.800 : ok
03:07:11.802 : echo:endstops hit:  Z:2.97
03:07:53.895 : N334 G30 *62
03:07:56.022 : Bed X: 7.90 Y: 14.00 Z: 2.57
03:07:56.323 : ok
03:07:56.323 : echo:endstops hit:  Z:2.57

2.96 - чистый белый участок скотча. 2.57 - черточка синим маркером. О.4мм. толщины, кажись много для такой черточки. Скотч - удачной покупки :ROFL:
IMG_3792.JPG


Добавлено спустя 1 час 32 минуты 14 секунд:
И еще один тестик. Давно хотел проверить этот датчик на горящей спичке. :) Спичек не нашел, взял галогенку 40ватт. Поверхность не менял, просто вкл/выкл лампа:
Код: Выделить всёРазвернуть
04:40:43.554 : N104 G30 *63
04:40:46.409 : Bed X: 0.00 Y: -3.00 Z: -10.49
04:40:50.778 : N108 G30 *51
04:40:53.613 : Bed X: 0.00 Y: -3.00 Z: -10.48
04:40:59.219 : N111 G30 *59
04:41:02.419 : Bed X: 0.00 Y: -3.00 Z: -10.76
04:41:06.594 : N115 G30 *63
04:41:09.880 : Bed X: 0.00 Y: -3.00 Z: -10.75

Да и по морганию светодиода все понятно, без движения по "Z". Выставляем уровень так, чтоб светодиод мигал. Включаем лампу накаливания и направляем на датчик. Светодиод полностью зажигается, показывая что он все видит :D
Кста, barakuda62, а картинка-то у тебя не очень. Буква "A" - хлам. Надеюсь это просирающаяся голова, а не результат датчика :)
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Датчик касания дифференциальный ИК

Сообщение setar » 13 окт 2015, 12:49

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

Re: Датчик касания дифференциальный ИК

Сообщение barakuda62 » 13 окт 2015, 14:31

setar писал(а):куда дальше двигаемся ?
держу в руках оптическую голову от cdrom, думаю может ее попробуем прикрутить ?

Если делать тесты как Диман, на разных да к тому же разноцветных столах, то любая оптика тут не пойдёт, ведь ясно же что разная поверхность даст разное отражение.
Тут надо пояснить, работаем с одной поверхностью.
Printer: H-Boot cube aluminium (промежуточный вариант), Firmware: Marlin
Delta all aluminium, Firmware: Marlin
Electronics: Arduino MEGA 2560 + RAMPS 1.4
barakuda62
 
Сообщения: 292
Зарегистрирован: 28 дек 2014, 02:33
Откуда: Рязань
прог. языки: С#, JAVA

Re: Датчик касания дифференциальный ИК

Сообщение setar » 13 окт 2015, 15:21

не согласен: лазерный дальномер на принципе триангуляции работать будет на любой поверхности.
лазер \ _поверхность_ / фотодатчик
или еще круче
лазер \ _поверхность_ / линейная матрица ПЗС

Добавлено спустя 2 минуты 23 секунды:
у меня вообще мысль крамольная :
хочу чтобы датчик от повехности воды работал - для построения матрицы коррекции базовой оси (той но которой X бегает)
как показывают мои замеры она чато тоже не идеальна, до 0.1 прогибы бывают

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

Re: Датчик касания дифференциальный ИК

Сообщение Dmitry__ » 13 окт 2015, 15:37

barakuda62 писал(а):ведь ясно же что разная поверхность даст разное отражение.
Тут надо пояснить, работаем с одной поверхностью.

Ты думаешь, что твой алюминиевый стол с чистой поверхностью, а рядом сопля abs - это не разная поверхность? Ню-ню. Да это будет круче чем синий маркер на скотче. Ты себе представляешь контраст: отражающая способность чистого алюминия и пластика? А тест с лампочкой - это одна поверхность, только разная тень в разных местах, на солнце это вообще будет жесть :wink:
setar писал(а):держу в руках оптическую голову от cdrom, думаю может ее попробуем прикрутить ?

Это готовый датчик уровня, но пипец какой сложный, лучше реле :)
В сидиромных головах есть зачетная микросхема - координатный фотодетектор.
http://www.datasheetlib.com/datasheet/2 ... #datasheet
Вощем впрягаться в "Focus servo : astigmatic method" :o

setar писал(а):куда дальше двигаемся ?

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

Re: Датчик касания дифференциальный ИК

Сообщение dccharacter » 13 окт 2015, 16:09

setar писал(а):Добавлено спустя 2 минуты 23 секунды:
у меня вообще мысль крамольная :
хочу чтобы датчик от повехности воды работал - для построения матрицы коррекции базовой оси (той но которой X бегает)
как показывают мои замеры она чато тоже не идеальна, до 0.1 прогибы бывают

Добавлено спустя 34 секунды:
ставим на стол емкость плоскую, заливаем водой и калибруем базовую ось.

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

Re: Датчик касания дифференциальный ИК

Сообщение setar » 13 окт 2015, 16:15

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

Re: Датчик касания дифференциальный ИК

Сообщение Dmitry__ » 13 окт 2015, 16:26

Вах-вах-вах
http://www.diyouware.com/DiyoPCB-MKI
И начальная страница там интересная
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Датчик касания дифференциальный ИК

Сообщение Dmitry__ » 13 окт 2015, 21:08

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

Re: Датчик касания дифференциальный ИК

Сообщение Акелла » 13 окт 2015, 22:58

У меня имеется датчик купленный у автора.
Вообщем кто желает тесты могу сделать их,
распишите алгоритм теста который хотите увидеть, ПОДРОБНО что куда и как. постараюсь все по пунктам описать без хорошо или плохо только чистые цифры.
Косель мини, плата управления DUET на reprap firmware от DC42, E3Dv6
Распечатаю на заказ.
Kossel config E3D.h
Акелла
 
Сообщения: 771
Зарегистрирован: 27 май 2014, 13:35
Откуда: London. UK
Skype: pioneerko
ФИО: Александр

Re: Датчик касания дифференциальный ИК

Сообщение Dmitry__ » 13 окт 2015, 23:19

Наклеить на стол кусок белого скотча. Сделать над этим местом 3 раза G30 (для статистики). Маркером начертить короткий штрих (прямо под датчиком). Сделать еще 3 раза G30. Еще сделать один штрих маркером. Еще 3 теста G30. Лог данных скинуть на форум. Можно провести несколько таких тестов. Если штрихи удачно попадут между фокусом светодиодов, то можно получить очень неожиданный результат.
Примерно как у меня:
download/file.php?id=38548&t=1
Второй тест - проще:
Делаем G30 над белой поверхностью. Направляем лампу накаливания на стол. Делаем G30. И так 3 раза. Смотрим данные координаты "z". Лог на форум.
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Датчик касания дифференциальный ИК

Сообщение de-si-gn » 14 окт 2015, 21:14

Спаял и я себе для пробы датчик, диоды и транзистор вытащил из оптопары.
Расположение диодов на плате отличается от авторского варианта, D2 стоит ближе к приемнику, сделал как у barakuda62.
Первые испытания руками показали, что на черной поверхности датчик срабатывает на 10мм, на белой около 20мм.

опто.jpg


плата.jpg
de-si-gn
 
Сообщения: 31
Зарегистрирован: 15 янв 2014, 17:52
Откуда: Нижний Новгород

Re: Датчик касания дифференциальный ИК

Сообщение Акелла » 15 окт 2015, 00:40

Dmitry__ писал(а):Наклеить на стол кусок белого скотча. Сделать над этим местом 3 раза G30 (для статистики). Маркером начертить короткий штрих (прямо под датчиком). Сделать еще 3 раза G30. Еще сделать один штрих маркером. Еще 3 теста G30. Лог данных скинуть на форум. Можно провести несколько таких тестов. Если штрихи удачно попадут между фокусом светодиодов, то можно получить очень неожиданный результат.
Примерно как у меня:
download/file.php?id=38548&t=1
Второй тест - проще:
Делаем G30 над белой поверхностью. Направляем лампу накаливания на стол. Делаем G30. И так 3 раза. Смотрим данные координаты "z". Лог на форум.


Вообщем незнаю делаю правильно или нет, у меня при срабатывании датчика показывает разницу между соплом и точкой срабатывания (у меня выставленно 2.1, т.е. если опустить на 2.1 сопло вниз то оно будет в 0)
Это касаемо данных,

сделал измерения, каждый тест повторял 3 раза

тест 1
печатная поверхность билдтак цвет черный
все ровно высота срабатывания 2.1, опустил проверил зазор сопла в 0 все отлично.
тест 2
использовал листок для записок желтого цвета
высота выставилась с офсетом на листок т.е. те же 2.1 + толщина листа
тест 3
розовая прозрачная линейка попалась под руку
датчик сработал и на ней без проблем.

тест 4
прозрачная крышка похожая на крышку от сд кейса
датчик показал 2.1 в реале получилось 2


вообщем далее судите сами, если нужно чтото еще проверить пишите.
Косель мини, плата управления DUET на reprap firmware от DC42, E3Dv6
Распечатаю на заказ.
Kossel config E3D.h
Акелла
 
Сообщения: 771
Зарегистрирован: 27 май 2014, 13:35
Откуда: London. UK
Skype: pioneerko
ФИО: Александр

Пред.След.

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

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

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