Inhoudsopgave:

Eenvoudigste Arduino VESC-monitor: 4 stappen
Eenvoudigste Arduino VESC-monitor: 4 stappen

Video: Eenvoudigste Arduino VESC-monitor: 4 stappen

Video: Eenvoudigste Arduino VESC-monitor: 4 stappen
Video: Управляем звуком с Arduino и TDA8425. Самодельный темброблок 2024, November
Anonim
Eenvoudigste Arduino VESC-monitor
Eenvoudigste Arduino VESC-monitor

Hoi, in dit project zullen we een eenvoudige VESC-monitor maken. Dit zou handig zijn als je je temperatuur wilt controleren en problemen wilt ontdekken zoals ik had met mijn Vesc-oververhitting (waar ik net achter kwam met deze monitor) of je kunt het eenvoudig gebruiken om het display aan je board of stuur te bevestigen en je snelheid te bekijken, kilometerstand, batterijpercentage en nog veel meer. Dus laten we beginnen met bouwen!

Stap 1: Onderdelen

Onderdelen
Onderdelen
Onderdelen
Onderdelen

1. - Arduino (ik gebruik UNO, maar je kunt ook elk ander bord gebruiken, inclusief esp8266 of esp32)

2. - enkele kabels om aan te sluiten (probeer een connector voor je connector voor vesc te vinden, want het zal veel gemakkelijker zijn om 1 grote connector los te koppelen versus een heleboel kleine kabels)

3. - display (ik gebruik 124 x 32 Oled, maar je kunt elke andere gebruiken door van bibliotheek te veranderen)

4. - optioneel - breadboard (dit is voor mensen die niet willen solderen of voor degenen die het tijdelijk willen doen)

5. - USB-kabel voor je arduino

Stap 2: Onderdelen met elkaar verbinden

Onderdelen met elkaar verbinden
Onderdelen met elkaar verbinden
Onderdelen met elkaar verbinden
Onderdelen met elkaar verbinden
Onderdelen met elkaar verbinden
Onderdelen met elkaar verbinden

weergave: Vcc tot 3.3V

Gnd naar Gnd

Sck (of scl) naar A5

Sda naar A4

VESC: 5V van Vesc naar Vin op Arduino

Gnd naar Gnd

RX op VESC naar TX op Arduino

TX op VESC naar RX op Arduino

Stap 3: Uploaden en wijzigen van de code naar uw voorkeur

CODE:

/** 2020-code door Lukas Janky VESC-monitor met Oled-display Als je me iets wilt vragen, neem dan contact met me op via [email protected] of via mijn instructables. Ik hoop dat dit je zal helpen.

*/

#include #include #include #include #include #include #include #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET 4 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

VescUart UART;

int. toerental; vlotter spanning; vlotterstroom; int macht; vlotter ampère; vlotter toerenteller; vlotter afstand; vlottersnelheid; vlotter wattuur; vlotter batpercentage;

SimpleKalmanFilter Filter1(2, 2, 0.01);

ongeldige setup() {

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

/** UART-poort instellen (Serial1 op Atmega32u4) */ // Serial1.begin (19200); terwijl (!Serial) {;}

/** Bepaal welke poorten u wilt gebruiken als UART */ UART.setSerialPort(&Serial);

}

lege lus() {

////////// Lees waarden ////////// if (UART.getVescValues()) {

rpm = (UART.data.rpm)/7; // De '7' is het aantal poolparen in de motor. De meeste motoren hebben 14 polen, dus 7 poolparen spanning = (UART.data.inpVoltage); huidige = (UART.data.avgInputCurrent); vermogen = spanning*stroom; amphour = (UART.data.ampHours); wattuur = ampère*spanning; tach = (UART.data.tachometerAbs)/42; // De '42' is het aantal motorpolen vermenigvuldigd met 3 afstand = tach*3.142*(1/1609)*0.72*(16/185); // Motortoerental x Pi x (1 / meter in een mijl of km) x Wieldiameter x (motorpoelie / wielpoelie) snelheid = tpm*3.142*(60/1609)*0.72*(16/185); // Motortoerental x Pi x (seconden in een minuut / meter in een mijl) x Wieldiameter x (motorpoelie / wielpoelie) batpercentage = ((voltage-38,4)/12)*100; // ((Batterijspanning - minimumspanning) / aantal cellen) x 100

}

////////// Filter ////////// // bereken de geschatte waarde met Kalman Filter float powerfiltered = Filter1.updateEstimate(power);

display.fillScreen(0); display.setCursor(10, 5); display.setTextColor(1); display.setTextSize(1); display.print(spanning);

display.setCursor(10, 20); display.setTextColor(1); display.setTextSize(1); display.print(kracht);

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(huidig); weergave.weergave();

vertraging (50);

}

U kunt elke gewenste waarde uit de code wijzigen en weergeven

Stap 4: Controleren of het werkt

Controleren of het werkt
Controleren of het werkt
Controleren of het werkt
Controleren of het werkt
Controleren of het werkt
Controleren of het werkt

Als u nu controleert of het werkt, is het tijd om het te solderen en labels toe te voegen aan uw waarden zoals Volt of Ampère. Soldeer het op arduino nano zodat het kleiner is of je kunt het zelfs met een andere arduino naar je afstandsbediening sturen. maar daarvoor zijn veel andere tutorials (zoek naar verzendende waarden met arduino). Ik hoop dat dit je heeft geholpen bij het oplossen van je probleem of het maken van leuke kleine vesc-telemetrie.

Aanbevolen: