Датчик оптического потока PAT9125
Современные компьютерные мыши, тачпады, сенсорные панели и мобильная робототехника, обязаны своей точностью и отзывчивостью миниатюрным системам движения. Одним из таких является PAT9125 - это высокоточный двухосевой оптический датчик, способный с невероятной точностью отслеживать перемещение по различным поверхностям.
PAT9125 представляет собой интеллектуальный датчик, в основе которого - микроскопическая камера и инфракрасная подсветка. Он реализует текстуру поверхности под собой, фиксируя мельчайшие смещения и на основе полученных данных изображений рассчитывает вектор движения. Благодаря высокой кадровой частоте, датчик способен точно отслеживать даже быстрое перемещение, сохраняя стабильность и минимальную задержку.
Основные характеристики:
Количество осей: 2 (X и Y);
Разрешение: до 1200 CPI (Counts Per Inch);
Интерфейсы связи: I2C и SPI;
Скорость кадров: до 2300 FPS (кадров в секунду);
Рабочее расстояние: около 1.2мм ± 0.2мм от поверхности.
Применение и обработка данных
Считывание данных с датчика по I2C и SPI - интерфейсам, дает доступ к приращениям по осям X и Y. Эти значения можно использовать для расчета абсолютного перемещения, а при необходимости - перевести в сантиметры или метры, учитывая установленное разрешение (CPI), Таким образом, PAT9125 может эффективно выполнять роль оптического энкодера, позволяя измерять расстояние, путь и даже направление движения.
Виды отслеживания оптического датчика
Пример схемы электрической принципиальной, подключение к микроконтроллеру STM32F103 по интерфейсу I2C.
Реализация программного кода (Настройка, прием данных, конвертация) PAT9125 и микроконтроллера STM32F103.
Настройка в CubeIDE
Выберем I2C и выставим параметры:
I2C Speed Mode: Standard Mode;
I2C Speed Frequency(KHz): 100.
Создание переменных и определение макросов
Метод PAT9125_Init
В данном методе производится инициализация датчика:
Считывание ID и проверка доступности устройства;
Установление разрешения CPI, через метод PAT9125_SetCpi().
Метод PAT9125_SetCPI
Данный метод, устанавливает заданный CPI в регистры X[0x0D] и Y[0x0E], считывает один байт из регистра датчика PAT9125 по I2C, (выставлено 1000 CPI, что эквивалентно 0.0254 мм/отсчет).
Метод PAT9125_ReadReg
Считывает один байт из регистра датчика PAT9125 по I2C (используется для чтения текущих значений (идентификатора устройства, данных движения и т.д.)).
Метод PAT9125_WriteReg
Данный метод, записывает значение value в регистр reg датчика PAT9125, используется для настройки параметров датчика, например (Установка CPI-разрешения).
Метод PAT9125_ReadMotion
Данный метод, считывает информацию о перемещении по осям X и Y из датчика (режим Burst Read), так же обновляет общее смещение total_x, total_y, и вызывает функцию обновления общего пройденного пути, простыми словами (используется каждый раз, когда нужно получить новые данные движения с датчика).
Поддерживает форматы:
- 8-битный формат и 12-битный (определяется макросом USE_12BIT_FORMAT), для работы в 8-битном формате, просто закоментируйте макрос(#define USE_12BIT_FORMAT)
- в режиме 12-бит, данные собираются из старших и младших байтов и расширяются до знакового значения.
Метод ProcessMotionData
Данный метод является основным обработчиком движения, вызывает метод PAT9125_ReadMotion, обрабатывает данные и формирует строки для вывода по UART.
Метод UpdateTotalDistance
Данный метод вычисляет прирост пройденного пути на основе новых данных смещения и обновляет общий путь total_distance_cm
Метод convert_to_cm
Преобразует значение смещения из отсчетов в сантиметры, используя установленное разрешение CPI
Метод calculateBetaRadians
Данный метод вычисляет угол направления движения по данным X и Y
Главный метод
Запускается в главном цикле while.
Вывод
Это полноценный драйвер + обработчик данных с датчика PAT9125, включающий:
- Считывание и обработку данных о движении;
- Перевод в физические единицы (см, мм, радианы);
- Калибровка чувствительности.
Ссылка на скачивание исходного кода [ #исскуствомк_исходный_код -оптический_датчик_PAT9125]
В целом, PAT9125 - это пример того, как миниатюрные технологии могут обеспечить высочайшую точность в системах, где важна каждая микронная деталь, благодаря своей компактности, энергоэффективности и простоте интеграции, он становится идеальным выбором для современных устройств ввода и мобильных систем позиционирования.
Если статья показалась Вам интересной, буду рад выпустить для Вас еще множество статей исследований по всевозможным видам устройств, так что, если не хотите их пропустить – буду благодарен за подписку на мой ТГ-канал: https://t.me/ChipCraft.