VBCores Docs
HomeGitHub
  • VBCores
  • Hardware
    • VBCore VB32G4
    • VB STM32 Programmer
    • BLDC motor driver 30A
    • DC motor driver 15A
    • Stepper motor driver 10A
    • Ethernet - CAN-FD
    • CAN-FD - Raspberry PI
      • Setting up CAN on Raspberry Pi
      • Troubleshooting
      • Работа с CAN FD через Python
    • PowerBoard 30A
    • SBus-HID
    • DC-DC 12V
    • USB 2.0-HUB
    • IMU BNO055
    • IMU BHI360
    • T-encoder
  • Software
    • Arduino IDE
      • Arduino IDE setup
      • Selecting MCU
      • Optional hardware preparation
      • Prepairing a sketch
      • Libraries
      • Examples
        • Все переписать нахрен
        • Работа с I2C
        • I2C detect
        • Датчик BNO055 / I2C
        • Датчик AS5047P / SPI
        • Датчик AS5600 / I2C
        • Работа с бесколлекторными двигателями
          • Simple FOC. Управление скоростью. Нахождение количества пар полюсов.
          • Simple FOC. Управление моментом
          • Чтение данных с датчика тока
        • Работа с коллекторным двигателем
          • Вращение DC мотором
          • Чтение угла по энкодеру. Управление DC мотором по углу
          • Чтение скорости вращения мотора по энкодеру
        • Работа с шаговым двигателем
          • Вращение шагового двигателя.
          • Контроль двигателя по интерфейсу SPI
    • STM32 CUBE IDE
      • Типовые настройки
      • Подсказки начинающим
        • Cube IDE для начинающих
        • Clock configuration
        • Таймеры - прерывания
        • Таймеры - ШИМ
        • Отладка программ
        • Коммуникации - FDCAN
        • Управление DC-мотором
        • Backup программы
  • Cyphal CAN
    • Cyphal CAN
    • PyCyphal
    • Yakut
    • Cyphal Arduino
      • Отправка и получение сообщений по cyphal
  • Работа с ROS
    • Установка Ubuntu, ROS и Arduino
    • ROS_LIB
    • Возможные ошибки
    • Примеры
      • Publisher. Hello World!
      • Publisher with Subscriber
      • Rotation by DC motor
  • Example projects
    • Motor-wheel upgrade
Powered by GitBook
On this page
  1. Software
  2. Arduino IDE
  3. Examples

Датчик AS5600 / I2C

Для работы с датчиком AS5600 вам понадобится скачать библиотеку . Там также имеется несколько рабочих примеров, в которых вам необходимо только подключить заголовочный файл VBCoreG4_arduino_system.h и указать пины SDA и SCL, используя функции setSDA и setSCL из Wire.h. Напомним, что пинами SDA и SCL являются PB_7_ALT1 и PC6. Или же можно просто воспользоваться их именами pinSDA и pinSCL, определенными в библиотеке. Ниже приведен код программы, читающей угол по датчику AS5600

#include <Wire.h>
#include <VBCoreG4_arduino_system.h>
//необходимо скачать библиотеку Seeed_Arduino_AS5600-master можно по ссылке https://github.com/Seeed-Studio/Seeed_Arduino_AS5600
//и скопировать ее в libraries
#include <AS5600.h>

AMS_5600 ams5600;

int ang = 0;

void setup()
{
  Wire.setSDA(pinSDA); //PB_7_ALT1
  Wire.setSCL(pinSCL); //PC6
  Serial.begin(115200);
  
  Wire.begin();
  Serial.println(">>>>>>>>>>>>>>>>>>>>>>>>>>> ");
  if(ams5600.detectMagnet() == 0 ){
    while(1){
        if(ams5600.detectMagnet() == 1 ){
            Serial.print("Current Magnitude: ");
            Serial.println(ams5600.getMagnitude());
            break;
        }
        else{
            Serial.println("Can not detect magnet");
        }
        delay(1000);
    }
  }
}
/*******************************************************
/* Функция: convertRawAngleToDegrees
/* Вход: данные об угле из AMS_5600::getRawAngle
/* Выход: человекочитаемые градусы в виде float
/* Описание: берет необработанный угол и вычисляет
/* его float значение в градусах.
/*******************************************************/
float convertRawAngleToDegrees(word newAngle)
{
  /* Исходные данные отображают 0 - 4095 тиков, что составляет 0,087 градуса */
  float retVal = newAngle * 0.087;
  ang = retVal;
  return ang;
}
void loop()
{
    Serial.println(String(convertRawAngleToDegrees(ams5600.getRawAngle()),DEC));
}

Seeed_Arduino_AS5600
2KB
AS5600_ReadAngle.ino