Inhaltsverzeichnis:

Einfachster Arduino VESC-Monitor - Gunook
Einfachster Arduino VESC-Monitor - Gunook

Video: Einfachster Arduino VESC-Monitor - Gunook

Video: Einfachster Arduino VESC-Monitor - Gunook
Video: VESC + Arduino == 1kW Robotics Projects! (Featuring SimpleFOC) 2024, Juli
Anonim
Einfachster Arduino VESC-Monitor
Einfachster Arduino VESC-Monitor

Hi, In diesem Projekt werden wir einen einfachen VESC-Monitor machen. Dies wäre nützlich, wenn Sie Ihre Temperatur überwachen und Probleme wie ich mit meiner Vesc-Überhitzung feststellen möchten (die ich gerade bei diesem Monitor festgestellt habe) oder Sie können es einfach verwenden, um das Display an Ihrem Board oder Lenker zu befestigen und Ihre Geschwindigkeit zu beobachten, Kilometerstand, Batterieprozentsatz und vieles mehr. Kommen wir also zum Bauen!

Schritt 1: Teile

Teile
Teile
Teile
Teile

1. - Arduino (ich verwende UNO, aber Sie können auch jedes andere Board verwenden, einschließlich esp8266 oder esp32)

2. - einige Kabel zum Anschließen (versuchen Sie, einen Stecker für Ihren Vesc-Stecker zu finden, da es viel einfacher ist, einen großen Stecker im Vergleich zu vielen kleinen Kabeln zu trennen)

3. - Anzeige (ich verwende 124 x 32 Oled, aber Sie können jede andere verwenden, indem Sie die Bibliothek wechseln)

4. - optional - Steckbrett (dies ist für Leute, die nicht löten möchten oder für diejenigen, die es vorübergehend tun möchten)

5. - USB-Kabel für Ihr Arduino

Schritt 2: Teile miteinander verbinden

Teile miteinander verbinden
Teile miteinander verbinden
Teile miteinander verbinden
Teile miteinander verbinden
Teile miteinander verbinden
Teile miteinander verbinden

Anzeige: Vcc bis 3.3V

Gnd zu Gnd

Sck (oder scl) zu A5

Sda auf A4

VESC: 5V von Vesc zu Vin auf Arduino

Gnd zu Gnd

RX auf VESC zu TX auf Arduino

TX auf VESC zu RX auf Arduino

Schritt 3: Hochladen und Ändern des Codes nach Ihren Wünschen

CODE:

/ ** 2020-Code von Lukas Janky VESC-Monitor mit Oled-Display Wenn Sie mich etwas fragen müssen, kontaktieren Sie mich unter [email protected] oder auf meinen Anleitungen. Ich hoffe, dass Ihnen dies hilft.

*/

#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 U/min; Schwebespannung; Schwimmerstrom; int-Leistung; Schwimmerampere; Schwimmertacho; Schwimmdistanz; Schwimmgeschwindigkeit; Float-Wattstunde; Float-Batterie-Prozentsatz;

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

Leere Einrichtung () {

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

/** UART-Port einrichten (Serial1 auf Atmega32u4) */ // Serial1.begin (19200); while (!Seriell) {;}

/** Definiere, welche Ports als UART verwendet werden sollen */ UART.setSerialPort(&Serial);

}

Leere Schleife () {

////////// Werte lesen ////////// if (UART.getVescValues()) {

rpm = (UART.data.rpm)/7; // Die '7' ist die Polpaarzahl im Motor. Die meisten Motoren haben 14 Pole, also 7 Polpaare Spannung = (UART.data.inpVoltage); aktuell = (UART.data.avgInputCurrent); Leistung = Spannung*Strom; Amperestunde = (UART.data.ampHours); Wattstunde = Amperestunde*Spannung; tach = (UART.data.tachometerAbs)/42; // Die '42' ist die Anzahl der Motorpole multipliziert mit 3 Abstand = Tach * 3,142 * (1/1609) * 0,72 * (16/185); // Motordrehzahl x Pi x (1 / Meter in einer Meile oder km) x Raddurchmesser x (Motorriemenscheibe / Riemenscheibe) Geschwindigkeit = U/min * 3,142 * (60/1609) * 0,72 * (16/185); // Motordrehzahl x Pi x (Sekunden in einer Minute / Meter in einer Meile) x Raddurchmesser x (Motorriemenscheibe / Riemenscheibe) Batprozent = ((Spannung-38,4)/12) * 100; // ((Batteriespannung - Mindestspannung) / Zellenzahl) x 100

}

////////// Filter ////////// // Berechnung des Schätzwertes mit Kalman Filter float powerfiltered = Filter1.updateEstimate(power);

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

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

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 (aktuell); display.display();

Verzögerung (50);

}

Sie können jeden gewünschten Wert aus dem Code ändern und anzeigen

Schritt 4: Überprüfen, ob es funktioniert

Überprüfen, ob es funktioniert
Überprüfen, ob es funktioniert
Überprüfen, ob es funktioniert
Überprüfen, ob es funktioniert
Überprüfen, ob es funktioniert
Überprüfen, ob es funktioniert

Wenn Sie nun überprüfen, ob es funktioniert, ist es an der Zeit, es zu löten und Ihren Werten Labels wie Volt oder Ampere hinzuzufügen. Löten Sie es auf Arduino Nano, damit es kleiner wird, oder Sie können es sogar mit einem anderen Arduino auf Ihre Fernbedienung übertragen. aber dafür gibt es viele andere Tutorials (Suche Übertragungswerte mit arduino). Ich hoffe, dass dies Ihnen geholfen hat, Ihr Problem zu lösen oder eine nette kleine Vesc-Telemetrie zu erstellen.

Empfohlen: