Съдържание:

Най -лесният монитор Arduino VESC: 4 стъпки
Най -лесният монитор Arduino VESC: 4 стъпки

Видео: Най -лесният монитор Arduino VESC: 4 стъпки

Видео: Най -лесният монитор Arduino VESC: 4 стъпки
Видео: ГИГАНТСКИЙ ЭКРАН ДЛЯ ARDUINO 2024, Ноември
Anonim
Най -лесният монитор Arduino VESC
Най -лесният монитор Arduino VESC

Здравей, в този проект ще направим лесен VESC монитор. Това би било полезно, когато искате да следите температурата си и да откриете проблеми, каквито имах с прегряването на Vesc (което открих точно с този монитор) или можете да го използвате просто за прикачване на дисплей към дъската или кормилото и да наблюдавате скоростта си, пробег, процент на батерията и много други. Така че нека се впуснем в сградата!

Стъпка 1: Части

Части
Части
Части
Части

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

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

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

4. - по избор - макет (това е за хора, които не искат да запояват, или за такива, които искат да го направят временно)

5. - USB кабел за вашия arduino

Стъпка 2: Свързване на части заедно

Свързване на части заедно
Свързване на части заедно
Свързване на части заедно
Свързване на части заедно
Свързване на части заедно
Свързване на части заедно

дисплей: Vcc до 3.3V

Gnd към Gnd

Sck (или scl) към A5

Sda към A4

VESC: 5V от 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);

VescUart UART;

int rpm; плаващо напрежение; поплавъчен ток; int мощност; плаващ амфур; плаващ тач; плаващо разстояние; скорост на плаване; поплавък; процент на плаващ батерия;

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); while (! Сериен) {;}

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

}

void loop () {

////////// Четене на стойности ////////// if (UART.getVescValues ()) {

rpm = (UART.data.rpm)/7; // '7' е броят на полюсите в двигателя. Повечето двигатели имат 14 полюса, следователно напрежение със 7 полюса = (UART.data.inpVoltage); ток = (UART.data.avgInputCurrent); мощност = напрежение*ток; amphour = (UART.data.ampHours); ваттур = ампур*напрежение; tach = (UART.data.tachometerAbs)/42; // '42' е броят на полюсите на двигателя, умножен по 3 разстояние = 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 (моторна ролка / ролка) процент на натоварване = ((напрежение-38,4) / 12)*100; // ((Напрежение на батерията - минимално напрежение) / брой клетки) x 100

}

//////////// Филтър ////////// // изчисляване на прогнозната стойност с Kalman Filter float powerfiltered = Filter1.updateEstimate (мощност);

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 (rpm);

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

забавяне (50);

}

Можете да променяте и показвате всяка стойност от кода, който искате

Стъпка 4: Проверете дали работи

Проверка дали работи
Проверка дали работи
Проверка дали работи
Проверка дали работи
Проверка дали работи
Проверка дали работи

Сега, когато проверите дали работи, е време да го запоите и да добавите етикети към вашите стойности като волта или ампера. Запояйте го на arduino nano, така че той ще бъде по -малък или дори можете да го предадете с друг arduino на вашето дистанционно управление. но за това има много други уроци (търсене на предаване на стойности с arduino). Надявам се, че това ви е помогнало да решите проблема си или да направите хубава малка телеметрия.

Препоръчано: