Comments 47
- почему не выбрали другую мыжь?
- почему бы на поверхность не нанести контрастные микронасечки?
2. Микронасчеки можно, но за нас это сделала природа, например дерево или бумага.
да, но насечки природного происхождения неупорядоченные.
Мда. Совсем неправильный метод решения задачи вы выбрали. Ну ничего — многому научились зато. Ну и, надеюсь, мышь и Распберри не пропали даром?
— Обычно когда двигаешь мышку, ее координаты меняются с учетом ускорения движения, т.е. резкий рывок мышью даст большее значение чем медленный но на то же самое расстояние. Возможно незаметно для себя вы движете мышь вперед со скоростью, отличной от движения мыши назад.
— Это фичереквест менеджеров, чтобы в будущем выпустить мышь
— Некий инженер со склонностью петь и танцевать в любой непонятной ситуации, написал в коде:
if ( device_move_direction.to_string = g_move_backward.to_string )
{
// it's about time to sing and dance now
g_error_rate = g_error_rate * random();
}
Первый вариант скорее всего верный — для измерительных целей в драйвере нужно выключить аксселерацию.
+ Интересует вопрос: а стелко увеличительное с сенсора сняли?(Если оно было)
На данный момент все производители мышей гонятся за DPI, из-за чего прибегают к «грязным трюкам» типа увеличительных стекол.
Идея простая — жертвуем максимальным ускорением мыши (G) но увеличиваем DPI (т.е. передвижение курсора на X точек за Y дюймов)
Соответственно просто скорость движения вверх и вниз неравномерны отчего и создаётся данная проблема.
Решение — использовать мышь с сенсором не имеющим акселерацию, помимо конечно отключения софтварной акселерации
объясните существенную разницу в погрешностях измерения вперед и назад
разные фронты сигналов
PS Столкнулся с той же проблемой, когда делал датчик перемещения для 3D принтера. Но я там оптическую головку крепил прямо на экструдер, а объектив смотрел на потолок корпуса, таким образом я одним датчиком читал и X и Y.
1. Лучше брать проводную мышь постарше, года так 2010-2015, у них пристойное разрешение и они отдают картинку, и подпаяться просто. Я работал на чипе ADNS-2051 (даташит)
2. С чипом мыши можно общаться двумя способами: через серийный порт (просто, но медленно, не больше 30 fps) или читать квадратурные выходы (до 1500 fps, там вроде по сдвигу генерится прерывание и дергается нога)
3. Чипы среднехреновые, в том числе по шуму и расстоянию между пикселами… По шуму можно откалиброваться, но геморно.
4. Разрешение указывают маркетологи, более точной оценкой является расстояние между центрами пикселов делить на 2,5. Можно улучшить разрешение постпроцессингом, в первую очередь через обработку subpixel shift.
5. Оптическая система важна. Или ставьте на прототип вместе с пластиковой родной линзой, или пересчитывайте фокусное расстояние и увеличение
6. Чтобы уменьшить «плытие» и улучшить результаты постпроцессинга используйте подложку с фактурой. Идеал — диффракционная решетка с шагом в 1/2 пиксела сенсора, но и плотная (ок 80 г/м) матовая немелованная бумага подойдёт, волокна работают каак chaotic test target
2. Ардуино и мышь, одна из первых попыток
3. Ардуино и мышь-2, более подробно
4. Ардуино, мышь и JS Хипстота, зато сразу в браузер
5. Арудиновская библиотека для работы с мышиными сенсорами
6. ATMega8 и сенсор
7. AVRовская библиотека AVRCam, чтение мышиного сенсора, постобработка, трекинг. Можно скачать бесплатно, там просто ссылка незаметная
https://sensing.honeywell.com/honeywell-sensing-longfellow2-linear-position-transducer-productsheet.pdf
— max7219 оказалась с рабочим напряжением 5 В
Я проверял два модуля на этих чипах, никаких проблем они не испытывали пари работе от 3,3В и питание и сигналы, и спокойно работали при 5В питании, и 3.3 логике управления.
Его автор — Walkie, как раз использует мышиные сенсоры, на производстве, для определения перемещения.
Если нужен реальный результат советую Вам с ним связатся.
Кстати w-mouse имеет счетчик посланных отсчетов по X и Y, зная текущее дпи легко подсчитывать смещение.
скрин экрана настройки
На датчике мыши я делал энкодеры, и они меня не разочаровали. Посмотреть можно здесь:
http://www.rlocman.ru/shem/schematics.html?di=162625 там же и ссылки на некоторые чипы.
Если это критично, то можно сделать так: микроконтроллер считывает показания в ОЗУ (регистр), цепь питания двухступенчатая, то есть, присутствует ещё что-то вроде конденсатора или ионистора. Напряжение от блока или элементов питания подаётся на один из входов микроконтроллера, и когда оно падает ниже критического уровня, наступает прерывание, в ходе обработки которого показания быстро переписываются в энергонезависимую память. После включения, если они не пусты, то считываются в ОЗУ.
P.S. Раньше микро-ЭВМ успевали всю свою память записывать на диск, когда напряжение 220 Вольт пропадало, но постоянное напряжение ещё держалось на конденсаторах блока питания.
используют код грея вроде штангенциркули, емкостной метод. но на небольшом расстоянии - чтобы дельту измерять.
но если дернешь быстрее периода считывания и больше некоторого порога удержания - расстояние уплывёт.
И корректировать вперед-назад с двух? И то же самое сделать по второй координате?
И не нашел подключение мыши в картинке названия контактов на RPi.
Все многочисленные проекты использующие мышиный сенсор испытывают примерно одинаковые проблемы, мышиный сенсор пропускает движение.
За последние лет 10-15 ничего особо в этом плане не изменилось.
Если использовать редуктор, т.е. большое передаточное число на колесико мышки?
хотя там вылезет другая проблема - как с штангенциркулями или с камерами без глобального затвора - скорость считывания. в процессе считывания будет уходить считываемое значение.
Да можно и редуктор. Но энкодер от принтера вполне дешевое рабочее решение. В редукторах, люфты, да и в целом с редуктором сложнее.
Если использовать Single Track Gray Code (STGC) - то можно частично компенсировать, до полуоборота, потери на считываемый код, т.е. при быстром изменении, высокое разрешение на 1 датчик - есть опасность что скорость сигнала будет выше чем скорость считывания с энкодера на таймер.
А при использовании STGC и например 8 датчиках, чтобы удобно считывать байтами :) , можно достичь контроля до +- 100-120 шагов от предыдущего считывания. точное положение. максимальное количество положений 2**N-4... примерно.
Компьютерная мышка как точный датчик