Дмитрий и Андрей, спасибо за ценные замечания и нормальный рабочий диалог.
Dmitry__ писал(а):KomX писал(а):Никаких изменений прошивки я не планирую, да они и ни к чему.
Пока датчик находится в исследовательском режиме, нужен измененный марлин, картинка выше делалась так:
Марлин начинает медленное опускание бошки, датчик следит за порогом сигнала, как только пятно (засветка) начало появляться в поле пзс, датчик дает знать об этом марлину. Марлин останавливает "z" и дальше начинает опускать бошку шагами по 10 микрон, стробируя каждый шаг сигналом. Датчик фоткает картинку на каждом стробе и посылает данные в терминалку. Марлин знает что этот процесс длится например 0.1 сек. Через паузу в 0.1 сек. марлин делает след. шаг в 10 микрон. И так 100 раз (типа больше одного миллиметра, с учетом засветки, ход быть не может) Так я получаю абсолютные значения на графиках. Как это будет в конечной прошивке - хз, но сейчас это может быть только так.
Дмитрий, первым же предложением ты со мною согласился, - в рабочем режиме модернизации ПО менделя не нужна.
Теперь поговорим за описание тестов.
"А дико извиняюсь", но фраза "Слез с броневичка!" куда как к месту.Я не владею информацией о устройстве твоего принтера, но очень сомневаюсь, что у тебя на оси Z стоит прецизионный безлюфтовый мотор-редуктор с редукцией не менее 60:1 для случая самого распространённого аппаратного решения (шаг винта - 1.25 мм., 16 микрошагов/шаг и 1.8 градус/шаг)...
Вот табличка во вложении (убил на неё целое утро и всё равно допустил ляп, теперь надо все результаты в таблице делить на 1000), из которой следует, что самое малое перемещение за один микрошаг равно 9.8 микрон и обеспечивается шаговиками с шагом 0.9 градуса за шаг и пока экзотическими драйверами обеспечивающими возможность управления с точностью 1/256 шага.
Поэтому, как ты получал от менделя столь прецизионную реакцию, -
опускать бошку шагами по 10 микрон, - для меня загадка.
KomX писал(а):Но матрица должна видеть "последний след" пятна, - момент покидания матрицы. Или я не прав?
Dmitry__ писал(а):Прав, вопрос только в том, с какой стороны пятно покидает матрицу. Если это противоположная сторона, то имеем пространственную разницу в 2-4 мм. На котором могут быть совершенно другие условия затухания, например царапина на одном краю поля и отсутствие царапины на противоположном.
dccharacter писал(а):На матрице работают неуправляемые нами алгоритмы выдержки, соответственно пятно покидает поле долго, мучительно и хаотично цепляясь за жизнь.
...
Алгоритм матрицы старается изо всех сил держать МАКС на 50-ти. Соответственно даже небольшая засветка уводит макс в 50.
Картина работы сенсора проясняется, - работает система автозахвата и удержания принимаемого сенсором изображения. А значит для принятия решения принимаем МАКС больше 40-45. Ещё какие-нибудь параметры в этот момент изменяются резко? Спрашиваю с целью дублирования параметра МАКС.
KomX писал(а):Какое расстояние не важно, лишь бы на требуемом участке опускания головки оба пятна успели соприкоснутся с матрицей при условии, что касание второго пятна происходит при уже полностью вышедшем из матрицы первым пятном.
Dmitry__ писал(а):Точность юстировки такой схемы должна быть выше точности датчика, в колхозных условиях это нереализуемо.
dccharacter писал(а):Вообше никакая юстировка не нужна, ты не понял алгоритма.
О какой юстировке речь? Простейший расщепитель пучка, - два равно-калиберных отверстия в светонепроницаемой ширме перекрывающей параллельный или сфокусированный на как можно большое расстояние пучок света от лазера. Расстояние между отверстиями произвольное, но с двумя ограничениями.
1. между двумя пятнами на белой мелованной бумаге должно полностью помещаться поле зрения сенсора, так чтобы ни с одной его стороны не было контакта с пятнами.
2. расстояние между пятнами по линии их лежания либо ограничивается заданным ходом по оси Z (что сложнее из-за уменьшения границ хода до 2-3 мм.), либо определяют это расстояние (совсем просто, подняли головку по-выше на 10-15 мм. и отработали измерение чуть дольше по времени).
Dmitry__ писал(а):И опять вопрос к пространственной разнице, см. выше. Если стол равномерный по контрасту, то датчик, который сейчас есть, работает без вопросов. Разговор идет о датчике работающего на любой поверхности, читай - зебре.
...
Даже если в твоей схеме 2 луча заходят с одной стороны, все равно имеем разные расстояния, а значит и возможный разный контраст поверхности - зебра.
Зёбра, зёбра... Далась тебе эта "зёбра"!
Вот смотри, датчик начинает повышать МАКС достаточно резко уже при засветке первых 3-х полос сенсора (3х15=45, 3х17=51, 3х18=54 и т.д.). Пусть в поле зрения лежит неубранная нами песчинка безбожно бликующая во все стороны или глубокая царапина на столе. Первые же лучи первого пятна освещают сей "дефект", сенсор "поднимает веко" и видит, реагирует на "дефект". Мы принимаем решение, начинаем считать шаги движка. Спустя N-е количество шагов (расстояние между двумя соседними шагами см. в таблице) на "дефект" попадает первый луч второго пятна, попадает под тем же углом к столу и приблизительно той же мощности. Неужели же "дефект" радикально изменит свою реакцию на луч второго пятна по сравнению с реакцией на луч первого пятна? Какие-такие турбулентности заставят попадающий в поле зрения 3-х трёх строк сенсора участок стола, пусть даже исцарапанный по самой контрастной "зебры", перенаправить диффузное рассеяние мимо поля зрения сенсора датчика.
"Дальнейшие текст этого абзаца удален по критерию "+18"" (шутка призванная охладить эмоции).Понимаю, что идеального равенства по мощности светового потока в двух пятнах не получить при любых затратах на юстировку и настройку, но уменьшить разбежку всегда можно. Например, если одно из двух отверстий в шторке сделали чуть больше, - так нам не составит большого труда повернуть блок лазера так, чтобы свет от более яркого отверстия падал на стол чуть дальше, т.е. проходил бы выше оптической оси лазерного блока.
Но я отвлёкся...
Dmitry__ писал(а):Если ты вдумчиво еще раз посмотришь на картинку с 10-ю проходами, то поймешь что датчик уже написан. Ибо на 2-х разных поверхностях четко определяется граница (34). На этом тесте бошка не смещалась по x,y, между белый/черный - закрашивание стола маркером. Ошибка на черной поверхности появляется только из-за деградации яркости лазера. Кста, в реальном датчике этой ошибки может и не быть(с деградирующим лазером), т.к. в тестовом режиме очень большие временные паузы, каждый проход длится около 0.1сек. * 100, имеем 10 сек. * 5 проходов. Нормальным лазером никто и не собирается жечь стол, просто у более мощного лазера не будет деградировать яркость. Точно так же как не деградирует яркость деградирующего
лазера на белой поверхности, т.к. мощность в этом режиме мала.
Я уважаю выбранный тобою путь, но не разделяю его с тобой, извини.
Я ясно вижу, что точность позиционирования ограничена конструктивом принтера (в моем случае не выше 300 микрон). И меня куда больше интересуют вопросы по расчёту реального расстояния между датчиком и столом, ибо реальная картина будет не совсем такова, как описывалась мною выше (в силу дискретности микрошагов движка, в силу точности винта и прочего). Ну, на то она и триангуляция, - в предложенном алгоритме 3 замера-расчёта расстояния и нахождение среднего наиболее приближенного к целочисленной сумме N микрошагов.