Tabla de contenido:

El monitor Arduino VESC más sencillo: 4 pasos
El monitor Arduino VESC más sencillo: 4 pasos

Video: El monitor Arduino VESC más sencillo: 4 pasos

Video: El monitor Arduino VESC más sencillo: 4 pasos
Video: TFT screen module based on DAVEga and VESC | Flipsky 2024, Mes de julio
Anonim
El monitor Arduino VESC más sencillo
El monitor Arduino VESC más sencillo

Hola, en este proyecto haremos un monitor VESC fácil. Esto sería útil cuando desee controlar su temperatura y descubrir problemas como el que tuve con el sobrecalentamiento de mi Vesc (que descubrí solo con este monitor) o puede usarlo simplemente para conectar la pantalla a su tabla o manillar y controlar su velocidad, kilometraje, porcentaje de batería y muchos más. ¡Así que empecemos a construir!

Paso 1: Partes

Partes
Partes
Partes
Partes

1.- Arduino (estoy usando UNO pero también puedes usar cualquier otra placa incluyendo esp8266 o esp32)

2.- algunos cables para la conexión (intenta encontrar un conector para tu conector para vesc porque será mucho más fácil desenchufar 1 conector grande que muchos cables pequeños)

3. - pantalla (estoy usando 124 x 32 Oled pero puedes usar cualquier otro cambiando la biblioteca)

4. - opcional - tablero (esto es para personas que no quieren soldar o para aquellos que quieren hacerlo temporalmente)

5.- cable USB para tu arduino

Paso 2: Conexión de piezas juntas

Conexión de piezas juntas
Conexión de piezas juntas
Conexión de piezas juntas
Conexión de piezas juntas
Conexión de piezas juntas
Conexión de piezas juntas

pantalla: Vcc a 3.3V

Gnd a Gnd

Sck (o scl) a A5

Sda a A4

VESC: 5V de Vesc a Vin en Arduino

Gnd a Gnd

RX en VESC a TX en Arduino

TX en VESC a RX en Arduino

Paso 3: Cargar y modificar el código según sus preferencias

CÓDIGO:

/ ** Código 2020 de Lukas Janky Monitor VESC con pantalla Oled Si necesita preguntarme algo, contácteme en [email protected] o en mis instrucciones. Espero que esto te ayude.

*/

#include #include #include #include #include #include #include #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET 4 Pantalla Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, & Wire, OLED_

VescUart UART;

int rpm; voltaje de flotación; corriente de flotación; int power; flotar una hora; flotador tacómetro; distancia de flotación; velocidad de flotación; flotar watthour; porcentaje de murciélagos flotantes;

SimpleKalmanFilter Filter1 (2, 2, 0.01);

configuración vacía () {

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

/ ** Configurar puerto UART (Serial1 en Atmega32u4) * / // Serial1.begin (19200); while (! Serial) {;}

/ ** Defina qué puertos usar como UART * / UART.setSerialPort (& Serial);

}

bucle vacío () {

////////// Leer valores ////////// if (UART.getVescValues ()) {

rpm = (UART.data.rpm) / 7; // El '7' es el número de pares de polos en el motor. La mayoría de los motores tienen 14 polos, por lo tanto, 7 pares de polos voltaje = (UART.data.inpVoltage); actual = (UART.data.avgInputCurrent); potencia = voltaje * corriente; amphour = (UART.data.ampHours); watthour = amphour * voltaje; tach = (UART.data.tachometerAbs) / 42; // El '42' es el número de polos del motor multiplicado por 3 distancia = tacómetro * 3.142 * (1/1609) * 0.72 * (16/185); // RPM del motor x Pi x (1 / metros en una milla o km) x Diámetro de la rueda x (polea del motor / polea de la rueda) velocidad = rpm * 3.142 * (60/1609) * 0.72 * (16/185); // RPM del motor x Pi x (segundos en un minuto / metros en una milla) x Diámetro de la rueda x (polea del motor / polea de la rueda) batpercentage = ((voltage-38.4) / 12) * 100; // ((Voltaje de la batería - voltaje mínimo) / número de celdas) x 100

}

////////// Filtro ////////// // calcula el valor estimado con Kalman Filter float powerfiltered = Filter1.updateEstimate (power);

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

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

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

retraso (50);

}

Puede modificar y mostrar cualquier valor del código que desee

Paso 4: comprobar si funciona

Comprobando si funciona
Comprobando si funciona
Comprobando si funciona
Comprobando si funciona
Comprobando si funciona
Comprobando si funciona

Ahora, cuando verifique si está funcionando, es hora de soldarlo y agregar etiquetas a sus valores como voltios o amperios. Sueldelo en arduino nano para que sea más pequeño o incluso pueda transmitirlo con otro arduino a su control remoto. pero para eso hay muchos otros tutoriales (buscar transmitiendo valores con arduino). Espero que esto te haya ayudado a resolver tu problema o hacer una pequeña telemetría vesc.

Recomendado: