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
  4. Работа с бесколлекторными двигателями

Чтение данных с датчика тока

Датчик ACS711KEXLT-31AB-T имеет диапазон тока +- 31 А. Напряжение с фаз A, B и C читаем с пинов PC1, PC2 и PC3 соответственно. Значения мы получаем от 0 до 4096, максимальное напряжение 3.3V. Чтобы получить ток с фаз, необходимо напряжение поделить на коэффициент Sensitivity = 45 mV/A = 0.045 V/A. Любой датчик дает некоторый шум, поэтому в самом начале установим так называемый offset - напряжение в "состоянии покоя" для каждой из фаз. При расчете тока напряжение будет сдвигаться на этот offset.

Ниже приведен пример программы, написанной на ардуино, которая читает ток с датчика и выводит его значение в амперах в Serial порт.

#include <VBCoreG4_arduino_system.h>

#define EN_GATE PB3
float sensitivity = 45; // mV/A

float i_A_offset =0;
float i_B_offset = 0;
float i_C_offset = 0;
void setup() {
  analogReadResolution(12);
  Serial.begin(115200);

  pinMode(PC1, INPUT); //ph A
  pinMode(PC2, INPUT); // ph B
  pinMode(PC3, INPUT); // ph C
  
  pinMode(EN_GATE, OUTPUT);
  digitalWrite(EN_GATE, HIGH);
  delay(10);
  
  //посчитаем offset для каждой из фаз
  for (int i = 0; i < 64; i++) {
    i_A_offset += (3.3f * (float)analogRead(PC1) / 4096.0f);
    i_B_offset += (3.3f * (float)analogRead(PC2)/ 4096.0f);
    i_C_offset += (3.3f * (float)analogRead(PC3) /4096.0f);
    delay(1);
}
//усредняем
i_A_offset /= 64.0f;
i_B_offset /= 64.0f;
i_C_offset /= 64.0f;
}

float i_A, i_B, i_C;
void loop() {
  i_A = (3.3f*(float)analogRead(PC1)/4096.0f - i_A_offset )/(sensitivity/1000); //A
  i_B = (3.3f*(float)analogRead(PC2)/4096.0f- i_B_offset )/(sensitivity/1000); //A
  i_C = (3.3f*(float)analogRead(PC3)/4096.0f- i_C_offset )/(sensitivity/1000); //A

   Serial.print(" A: ");
   Serial.print(i_A);
   Serial.print("\t ");
   Serial.print(" B: ");
   Serial.print(i_B);
   Serial.print("\t");
   Serial.print(" C: ");
   Serial.print(" ");
   Serial.println(i_C);
  delay(100);
}

Подробнее ознакомиться с датчиком тока можно в документации

2MB
ACS711-Datasheet.pdf
pdf