roboforum.ru

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

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

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

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

Сообщение setar » 28 дек 2015, 18:13

в одну кучу смешали аппаратный SPI и аппаратный Serial

для того чтобы использовать аппаратный порт для дебага и software spi для сенсора пришлось вводить flg_software_serial

и почему запись в порт не вынести в отдельную процедуру, которая в зависимости от аппаратного и программного порта сама решала как писать ( Serial.write или MyDbgSerial.write)

Добавлено спустя 7 минут 11 секунд:
получил отклик от ADNS-2610 + Arduino nano с питанием через ноги контроллера
вопрос: как устанавливать пороги и как снимать графики которые вы смотрите ?
P.S. сенсор без оптики совсем
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

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

Сообщение Dmitry__ » 28 дек 2015, 18:46

setar писал(а):в одну кучу смешали аппаратный SPI и аппаратный Serial

для того чтобы использовать аппаратный порт для дебага и software spi для сенсора пришлось вводить flg_software_serial

Ну не ругайся :)
Аппаратный spi идет на помойку, для него нужен +1 лишний пин: sdi, sdo, не может переназначаться на другие пины и он работает медленнее программного, flg_software_spi всегда должен быть определен. Просто за исходник моих исходников был взят код с аппаратным spi и потом долго оптимизировался и в результате переделан под программный spi. Надо выпилить аппаратный spi, чтоб вопросов не возникало.
setar писал(а):и почему запись в порт не вынести в отдельную процедуру, которая в зависимости от аппаратного и программного порта сама решала как писать ( Serial.write или MyDbgSerial.write)

dccharacter уже наступал на эти грабли, потому что отдельная процедура - это лишние такты на call и return. А скорость работы нужна высокая. Чем не устраивают pin_SDIO_LOW; ? Отсутствием скобочек? :cry:
setar писал(а):вопрос: как устанавливать пороги и как снимать графики которые вы смотрите ?

Порог отдефайнен в Config.h, но реально используется только "#define ConstMax" в ветке: "#ifndef flg_serial_debug". Менять порог в соотв. месте своего сенсора. Для аднс2610 это тут:
Код: Выделить всёРазвернуть
#ifdef flg_ADNS_type_ADNS_2610

   #define ARRAY_WIDTH         18
   #define ARRAY_HEIGHT      18
   
   //#define Motion         0x02
   #define Delta_X            0x03
   #define Delta_Y            0x02
   #define squal            0x04
   #define Shutter_Upper      0x09
   #define Shutter_Lower      0x0a
   #define Maximum_Pixel      0x05
   #define Pixel_Sum         0x07
   #define Minimum_Pixel      0x06
   #define Pixel_Grab         0x08
   #define   Mask_pixel_value   0x3f
   #define   Pixel_data_valid   0x40
   #define   delay_tSWW         100
   #define   delay_tSRAD         100

   #define   ConstMax         59
   #define   ConstMin         3
   #define   ConstPixMin         50
   #define   ConstPixMax         70

#endif

Другие порогои в программе не используются, т.к. еще не определились с алгоритмами.
Графики строить по текстовым логам режимов:
Код: Выделить всёРазвернуть
flg_serial_debug = 3   Передача в текстовом виде на терминал данных: Max_Pix, Min_Pix, Pix_Sum, Shutter
flg_serial_debug = 4   Как 3-й режим, но по разрешению сигнала pin_TRIG (лог точно ограничен сигналом z_probe)

Т.е. компилишь прошивку с нужным режимом, запускаешь терминалку, в терминалке включаешь запись лога в файл. А потом импорт файла в электр. таблицы. А там уже постройка графиков.

Добавлено спустя 1 минуту 17 секунд:
setar писал(а):P.S. сенсор без оптики совсем

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

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

Сообщение setar » 28 дек 2015, 18:51

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

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

Сообщение Dmitry__ » 28 дек 2015, 18:59

Ой, я говорил про flg_software_spi, щаз подправлю предыдущее сообшение...

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

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

Сообщение dccharacter » 28 дек 2015, 19:02

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

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

Сообщение elmot » 28 дек 2015, 19:08

Dmitry__ писал(а): потому что отдельная процедура - это лишние такты на call и return.

А inline в АВР нету что-ли?
https://en.wikipedia.org/wiki/Inline_function
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

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

Сообщение Dmitry__ » 28 дек 2015, 19:09

dccharacter писал(а):setar, лови проект с выводом параметров при визуализации (всякие макс пикселы под картинкой показывает)

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

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

Сообщение elmot » 28 дек 2015, 19:12

setar писал(а):да, лампа дневного света.
только не понятно почему диагональными полосами.

Частота модуляции света ~ 2.5 частоты сканирования строк. Поэтому наискось, по 2 полосы на строку.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

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

Сообщение dccharacter » 28 дек 2015, 19:13

Теперь, как снимать графики
Включаешь визуализацию с параметрами, подводишь датчик к столу, чтобы пятно пока еще не начало попадать в поле зрения. Макс пиксел должен начать чуть светлеть, шаттер должень начать чуть проваливаться. Запоминаешь координату.
Дальше ведешь датчик ближе к столу, чтобы пятно прошло все поле зрения и вышло из него - макс пиксел должен опять упасть к 50-ти примерно, шаттер почти вернуться в изначальное состояние. Смотришь координату, вычисляешь полный ход датчика (у меня 5мм примерно). Делаешь G92 Z0 для установки координаты в ноль.
Код: Выделить всёРазвернуть
G1 F2000 Z5   ;travel to initial position (absolute) <- здесь z устанавливаешь равным полному ходу датчика
G4 S1      ;sleep for 1 sec
M42 P4 S255   ;set trigger pin 4 HIGH (servo 4 signal pin)
G1 F60 Z0   ;travel to end position slowly
M400      ;wait for previous command to complete
M42 P4 S0   ;set trigger pin LOW

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

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

Сообщение Dmitry__ » 28 дек 2015, 19:13

elmot писал(а):А inline в АВР нету что-ли?

Да там одна строка на обработку порта, компилирующаяся в одну-две команды асма, меня не напрягает вообще. Проблемы только у читателей кода :)
Код: Выделить всёРазвернуть
#define   pin_SDIO_Mode_INPUT      pin_SDIO_DDR      &=~(1<<pin_SDIO_bit)
#define   pin_SDIO_Mode_OUTPUT   pin_SDIO_DDR      |= (1<<pin_SDIO_bit)
#define   pin_SDIO_LOW         pin_SDIO_PORT      &=~(1<<pin_SDIO_bit)
#define   pin_SDIO_HIGH         pin_SDIO_PORT      |= (1<<pin_SDIO_bit)
#define   pin_SDIO_IN            pin_SDIO_PORT_IN   &  (1<<pin_SDIO_bit)
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

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

Сообщение dccharacter » 28 дек 2015, 22:40

Без фонаря:
Код: Выделить всёРазвернуть
13:25:16.404 : 1 of 10   z: 3.219985
13:25:32.126 : 2 of 10   z: 3.232750
13:25:47.880 : 3 of 10   z: 3.218984
13:26:03.618 : 4 of 10   z: 3.224991
13:26:19.389 : 5 of 10   z: 3.217232
13:26:34.950 : 6 of 10   z: 3.220486
13:26:50.708 : 7 of 10   z: 3.213227
13:27:06.467 : 8 of 10   z: 3.211475
13:27:22.238 : 9 of 10   z: 3.211475
13:27:38.004 : 10 of 10   z: 3.212977
13:27:43.223 : Mean: 3.218358
13:27:43.223 : Standard Deviation: 0.006403
13:27:43.227 : echo:endstops hit:  Z:3.21


С фонарем (первые 7 измерений)
Код: Выделить всёРазвернуть
13:35:13.683 : 1 of 10   z: 3.360148
13:35:29.433 : 2 of 10   z: 3.312092
13:35:45.142 : 3 of 10   z: 3.404699
13:36:00.885 : 4 of 10   z: 3.355643
13:36:16.504 : 5 of 10   z: 3.392185
13:36:32.238 : 6 of 10   z: 3.247767
13:36:47.808 : 7 of 10   z: 3.411707
13:37:03.586 : 8 of 10   z: 3.207971
13:37:19.164 : 9 of 10   z: 3.209974
13:37:35.033 : 10 of 10   z: 3.214979
13:37:40.298 : Mean: 3.311717
13:37:40.302 : Standard Deviation: 0.079973


Добавлено спустя 1 минуту 10 секунд:
К сожалению иногда вылетают вот такие штуки, пока не отловил, что это:
Код: Выделить всёРазвернуть
13:22:35.265 : 6 of 10   z: 3.216982
13:22:48.094 : 7 of 10   z: 5.445817
13:23:03.139 : 8 of 10   z: 3.220486
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

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

Сообщение dccharacter » 29 дек 2015, 05:24

Че-т загнулась тема...

Мои последние результаты

Стекло
Код: Выделить всёРазвернуть
20:05:05.963 : 1 of 10   z: -5.435054
20:05:21.758 : 2 of 10   z: -5.441562
20:05:37.558 : 3 of 10   z: -5.478355
20:05:53.357 : 4 of 10   z: -5.453826
20:06:09.144 : 5 of 10   z: -5.450823
20:06:24.972 : 6 of 10   z: -5.485113
20:06:40.780 : 7 of 10   z: -5.460334
20:06:56.521 : 8 of 10   z: -5.444816
20:07:12.349 : 9 of 10   z: -5.455328
20:07:28.137 : 10 of 10   z: -5.424793
20:07:33.397 : Mean: -5.453000
20:07:33.401 : Standard Deviation: 0.017476
20:07:33.401 : echo:endstops hit:  Z:-5.42


Белая бумага, наклееная на то же стекло, координаты те же
Код: Выделить всёРазвернуть
20:10:01.530 : 1 of 10   z: -4.736995
20:10:17.178 : 2 of 10   z: -4.741750
20:10:32.879 : 3 of 10   z: -4.747257
20:10:48.551 : 4 of 10   z: -4.746005
20:11:04.233 : 5 of 10   z: -4.746506
20:11:19.925 : 6 of 10   z: -4.731238
20:11:35.588 : 7 of 10   z: -4.734992
20:11:51.257 : 8 of 10   z: -4.731488
20:12:06.926 : 9 of 10   z: -4.740499
20:12:22.614 : 10 of 10   z: -4.742752
20:12:27.829 : Mean: -4.739948
20:12:27.829 : Standard Deviation: 0.005703
20:12:27.832 : echo:endstops hit:  Z:-4.74


Черная бумага рядом, координаты те же
Код: Выделить всёРазвернуть
20:13:44.172 : 1 of 10   z: -4.936977
20:13:59.914 : 2 of 10   z: -4.938729
20:14:15.606 : 3 of 10   z: -4.884165
20:14:31.257 : 4 of 10   z: -4.885167
20:14:46.918 : 5 of 10   z: -4.885167
20:15:02.668 : 6 of 10   z: -4.922710
20:15:18.398 : 7 of 10   z: -4.933473
20:15:34.128 : 8 of 10   z: -4.927216
20:15:49.817 : 9 of 10   z: -4.883915
20:16:05.559 : 10 of 10   z: -4.946488
20:16:10.802 : Mean: -4.914401
20:16:10.802 : Standard Deviation: 0.025062
20:16:10.806 : echo:endstops hit:  Z:-4.95


Матовый полупрозрачный скотч рядом, координаты те же
Код: Выделить всёРазвернуть
20:17:02.956 : 1 of 10   z: -5.198029
20:17:18.653 : 2 of 10   z: -5.200532
20:17:34.354 : 3 of 10   z: -5.195527
20:17:50.043 : 4 of 10   z: -5.193524
20:18:05.727 : 5 of 10   z: -5.183513
20:18:21.392 : 6 of 10   z: -5.187767
20:18:37.081 : 7 of 10   z: -5.194526
20:18:52.772 : 8 of 10   z: -5.196027
20:19:08.457 : 9 of 10   z: -5.188018
20:19:24.159 : 10 of 10   z: -5.191021
20:19:29.378 : Mean: -5.192849
20:19:29.378 : Standard Deviation: 0.004961
20:19:29.378 : echo:endstops hit:  Z:-5.19


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

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

Сообщение Dmitry__ » 29 дек 2015, 06:44

dccharacter писал(а):Че-т загнулась тема...

Работаем, зацени визуализатор. Только удали передачу лишнего байта в исходниках датчика. Т.е. везде "+1 +6" надо заменить на "+6"
Визуализатор теперь не надо компилить при изменении конфигурации датчика. Смена скорости порта делается в программе, а также сама определяет колич. байт в потоке и выставляет нужный размер поля пзс.

Добавлено спустя 8 минут 52 секунды:
Менять скорость в визуализаторе можно на ходу. При нажатии "старт" полностью переинициализируется порт. Ну в линухе так, как в ваших вендах - хз, кста расскажите.

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

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

Сообщение dccharacter » 29 дек 2015, 07:14

Дим, сил уже нет туда сюдя блоки кода копировать. Давай уже git учить

Добавлено спустя 11 минут 23 секунды:
Ээээ, ну заценил :-) Я уже неделю с таким работаю :-)
Только у тебя картинка сильнее скачет (строки съезжают на пиксел)

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

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

Сообщение Dmitry__ » 29 дек 2015, 08:25

dccharacter писал(а):Дим, сил уже нет туда сюдя блоки кода копировать. Давай уже git учить

Рано еще, мы чайники :)

dccharacter писал(а):Ээээ, ну заценил Я уже неделю с таким работаю
Только у тебя картинка сильнее скачет (строки съезжают на пиксел)

Тут главное что перекомпилировать не надо, один ехе на все.

Сделал картинки на adns2610, лазер слабый, shutter только на белой поверх. работает.

Белый, ход 3мм:
belyj_3mm.jpg

Белый, ход 7мм:
belyj_7mm.jpg

маркер, ход 3мм:
marker_3mm.jpg

маркер, ход 7мм:
marker_7mm.jpg

стекло, ход 3мм, дикий график за основным - сигнал от нижн. повех. Можно прямо посчитать толщину стекла, горб от основного поля около 2-х мм. От начала горба осн. поля до начала горба от нижнего слоя = 4мм :)
steklo_3mm.jpg

стекло, ход 7мм:
steklo_7mm.jpg

Ну что сказать? картинки абсолютно однозначные, видно почему на белой повертх. получается +0.17mm. Можно похимичить еще с мощностью лазера, но это если делать абсолютно всеядный датчик. Если использовать только один материал стола, то можно тупо подобрать лазер.
Я спать...

Добавлено спустя 5 минут 12 секунд:
Да, squal нагло показывает центр поля :shock:
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Пред.След.

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

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

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