Подключение магнитного датчика угла наклона AS5600 к Arduino
В этой статье расскажу о магнитном датчике угла наклона AS5600, датчик хоть и маленький, но уместил в себе четыре датчика холла, с помощью которых, датчик AS5600 измеряет магнитное поле и преобразует его в напряжение. На практике, данный датчик можно использовать для измерения вращения двигателя.
Технические параметры
► Интерфейс: I2C;
► Определяемый угол поворота: от 18⁰ до 360⁰;
► Диапазон рабочих температур: от -40⁰C до 125⁰С;
► Напряжение питания на пине VDD5V; до 6.1 В;
► Напряжение питания на пине VDD3V3: до 4 В;
► Габариты: 23 × 23 × 2 мм;
► Вес: 2 грамма
Описание модуля AS5600
В центре модуля установлена единственная микросхема AS5600, которая собрана в 8-контактом корпусе SOIC8, габариты которого 4.9 х 3.9 мм с высотой 1.75 мм. Вокруг датчика установлена минимальная электронная обвязка, конденсаторы и подтягивающие резисторы для шины I2C. По умолчанию датчика AS5600 используется адрес 0x36, менять его нельзя. Так же, в модуле встроен стабилизатора напряжения, что позволяет подключать его к источнику питания 5В и 3.3В (разные контакты). Конструктивно AS5600 состоит из четырех датчиков холла, сигнал с которых усиливается, затем проходят через 12-битый аналогово-цифровой преобразователь (АЦП), а уже потом сигнал с АЦП измеряется и высчитывается угол поворота.
Используемый магнит для датчика должен состоять из полярности N/S в горизонтальной плоскости, а не в вертикальной. Воздушный зазор между датчиком AS5600 и магнитом составляет от 0,5 мм до 3 мм и зависит от силы магнита.
Как говорилось ранее, датчик поддерживает 12-битное разрешение и за полный оборот магнита в 360 градусов, получаем 4096 шагов, то есть точность датчика ~ 0,087 градуса.
Конфигурация контактов MAX30102
► VDD5V — питание модуля 5В (требуется дополнительный конденсатор 1 мкФ);
► VDD3V3 — питание модуля 3В;
► OUT — Аналоговый вывод PWM;
► GND — минус от источника.
► PGO — цифровой вход
► SDA — цифровой вход/выход (последовательная передачи данных I2C)
► SCL — последовательное тактирование шины данных I2C (serial clock);
► DIR — вывод указания полярность направления, если GND – значения увеличиваются по часовой стрелке, VDD – против.
При работе от напряжения 3.3В пины VDD5V и VDD3V3 должны быть соединены.
Подключение датчика AS5600 к Arduino
В примере покажу как подключить датчик AS5600 к Arduino UNO. В моем комплекте с модулем, есть небольшой магнит для демонстрации работы. Показания будем передавать в последовательный порт.
Необходимые компоненты.
► Arduino UNO R3 x 1 шт.
► Магнитный датчик угла наклона AS5600 x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
► Кабель USB 2.0 A-B x 1 шт
Подключение:
Из приведенной ниже принципиальной схемы можно увидеть, что мы используем пять проводов. Выводы SDA и SCL с датчика AS5600, подключаем к выводам A4 и A5 Arduino UNO. Контакты VCC и GND датчика подключаем к 5 В и GND Arduino UNO.
Установка библиотек:
Для работы, будем использовать библиотеку «AS5600», от RobTillaart. скачать ее можно с github или в конце статьи.
Программа:
Теперь запускаем среду разработку Arduino IDE и загружаем скетч в контроллер.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include "AS5600.h" AS5600 as5600; void setup() { Serial.begin(115200); Wire.begin(); as5600.begin(4); as5600.setDirection(AS5600_CLOCK_WISE); int b = as5600.isConnected(); Serial.print("Connect: "); Serial.println(b); delay(1000); } void loop() { Serial.println(as5600.rawAngle()); delay(1000); } |
Загрузите скетч и откройте «Последовательный монитор» из Arduino IDE. Приложим магнит к датчику и прокрутим его по часово стрелке, данные будут изменятся.
Ссылки
Купить на Aliexpress
Контроллер Arduino UNO R3 на CH340G
Контроллер Arduino UNO R3 на Atmega16U2
Провода DuPont, 2,54 мм, 20 см
Магнитный датчик угла наклона AS5600
Документация на AS5600
Библиотека AS5600 v.0.4.0
Купить в Самаре и области
Контроллер Arduino UNO R3 на CH340G
Контроллер Arduino UNO R3 на Atmega16U2
Провода DuPont, 2,54 мм, 20 см
Магнитный датчик угла наклона AS5600
Исправьте две ошибки:
1. В коде — нужно добавить Wire.begin(); перед as5600.begin(4);
2. В схеме подключения — SDA и SCL модуля подключаются к соответствующим пинам платы, а не к А4 и А5.
Здравствуйте, спасибо поправил
Правильный скетч такой:
#include
#include «AS5600.h»
AS5600 as5600;
void setup()
{
Serial.begin(115200);
Wire.begin(); // Инициализация I2C
as5600.begin(4);
as5600.setDirection(AS5600_CLOCK_WISE);
int b = as5600.isConnected();
Serial.print(«Connect: «);
Serial.println(b);
delay(1000);
}
void loop()
{
Serial.println(as5600.rawAngle());
delay(1000);
}