Оглавление:

Самый простой монитор Arduino VESC: 4 шага
Самый простой монитор Arduino VESC: 4 шага

Видео: Самый простой монитор Arduino VESC: 4 шага

Видео: Самый простой монитор Arduino VESC: 4 шага
Видео: Electric unicycle project. Arduino control of VESC with bidirectional motor rotation. 2024, Июль
Anonim
Самый простой монитор Arduino VESC
Самый простой монитор Arduino VESC

Привет, В этом проекте мы сделаем простой монитор VESC. Это было бы полезно, когда вы хотите контролировать свою температуру и выяснять проблемы, как у меня с перегревом моего Vesc (что я обнаружил только с этим монитором), или вы можете использовать его просто для прикрепления дисплея к вашей доске или рулю и следите за своей скоростью., пробег, процент заряда батареи и многое другое. Итак, приступим к строительству!

Шаг 1: Детали

Запчасти
Запчасти
Запчасти
Запчасти

1. - Arduino (я использую UNO, но вы также можете использовать любую другую плату, включая esp8266 или esp32)

2. - некоторые кабели для подключения (попробуйте найти разъем для вашего разъема для vesc, потому что будет намного проще отсоединить 1 большой разъем по сравнению с множеством маленьких кабелей)

3. - дисплей (я использую Oled 124 x 32, но вы можете использовать любой другой, изменив библиотеку)

4. - необязательно - макетная плата (это для людей, которые не хотят паять или для тех, кто хочет сделать это временно)

5. - USB-кабель для вашего ардуино

Шаг 2: Соединение деталей вместе

Соединение частей вместе
Соединение частей вместе
Соединение частей вместе
Соединение частей вместе
Соединение частей вместе
Соединение частей вместе

дисплей: Vcc до 3,3 В

Gnd на Gnd

Sck (или scl) в A5

Sda в A4

VESC: 5 В от Vesc до Vin на Arduino

Gnd на Gnd

RX на VESC в TX на Arduino

TX на VESC в RX на Arduino

Шаг 3. Загрузка и изменение кода в соответствии с вашими предпочтениями

КОД:

/ ** Код 2020 от Лукаса Янки Монитор VESC с дисплеем Oled Если вам нужно что-то спросить, свяжитесь со мной по [email protected] или по моим инструкциям. Надеюсь, это вам поможет.

*/

#include #include #include #include #include #include #include #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET 4 Отображение Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, & Wire, OLED_

VescUart UART;

int rpm; плавающее напряжение; плавающий ток; int power; поплавок амфур; поплавок тач; плавающее расстояние; скорость поплавка; float Watthour; процент поплавка;

SimpleKalmanFilter Filter1 (2, 2, 0,01);

void setup () {

Serial.begin (115200); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); display.fillScreen (0); display.display ();

/ ** Настройка порта UART (Serial1 на Atmega32u4) * / // Serial1.begin (19200); в то время как (! серийный номер) {;}

/ ** Определить, какие порты использовать как UART * / UART.setSerialPort (& Serial);

}

void loop () {

////////// Прочитать значения ////////// if (UART.getVescValues ()) {

об / мин = (UART.data.rpm) / 7; // «7» - это количество пар полюсов в двигателе. Большинство двигателей имеют 14 полюсов, поэтому напряжение 7 пар полюсов = (UART.data.inpVoltage); текущий = (UART.data.avgInputCurrent); мощность = напряжение * ток; amphour = (UART.data.ampHours); Вт · ч = ам · ч * напряжение; тач = (UART.data.tachometerAbs) / 42; // '42' - это количество полюсов двигателя, умноженное на 3 distance = tach * 3,142 * (1/1609) * 0,72 * (16/185); // Обороты двигателя x Pi x (1 / метр на милю или км) x Диаметр колеса x (шкив двигателя / шкив) скорость = об / мин * 3,142 * (60/1609) * 0,72 * (16/185); // Обороты двигателя x Pi x (секунды в минуту / метры в миле) x Диаметр колеса x (шкив двигателя / шкив колеса) batpercentage = ((Voltage-38.4) / 12) * 100; // ((Напряжение аккумулятора - минимальное напряжение) / количество ячеек) x 100

}

////////// Filter ////////// // вычисляем оценочное значение с помощью фильтра Калмана float powerfiltered = Filter1.updateEstimate (power);

display.fillScreen (0); display.setCursor (10, 5); display.setTextColor (1); display.setTextSize (1); display.print (напряжение);

display.setCursor (10, 20); display.setTextColor (1); display.setTextSize (1); display.print (мощность);

display.setCursor (10, 40); display.setTextColor (1); display.setTextSize (1); display.print (об / мин);

display.setCursor (10, 55); display.setTextColor (1); display.setTextSize (1); display.print (текущий); display.display ();

задержка (50);

}

Вы можете изменять и отображать любое значение из кода, которое хотите

Шаг 4: проверка работы

Проверка работы
Проверка работы
Проверка работы
Проверка работы
Проверка работы
Проверка работы

Теперь, когда вы проверите, работает ли он, пришло время припаять его и добавить метки к вашим значениям, например, вольт или ампер. Припаяйте его к arduino nano, чтобы он был меньше, или вы даже можете передать его с другим arduino на свой пульт дистанционного управления. но для этого есть много других руководств (поиск передаваемых значений с помощью arduino). Я надеюсь, что это помогло вам решить вашу проблему или создать красивую телеметрию vesc.

Рекомендуемые: