Índice:

Monitor Arduino VESC mais fácil: 4 etapas
Monitor Arduino VESC mais fácil: 4 etapas

Vídeo: Monitor Arduino VESC mais fácil: 4 etapas

Vídeo: Monitor Arduino VESC mais fácil: 4 etapas
Vídeo: VESC LispBM: Display Driver + Rotating 3D Cube 2024, Novembro
Anonim
Monitor Arduino VESC mais fácil
Monitor Arduino VESC mais fácil

Oi, neste projeto iremos facilitar o monitor VESC. Isso seria útil quando você quiser monitorar sua temperatura e descobrir problemas como os que tive com o superaquecimento do meu Vesc (que descobri apenas com este monitor) ou você pode usá-lo simplesmente para anexar o monitor à sua placa ou guidão e observar sua velocidade, quilometragem, porcentagem da bateria e muito mais. Então, vamos começar a construir!

Etapa 1: Peças

Peças
Peças
Peças
Peças

1. - Arduino (estou usando UNO, mas você também pode usar qualquer outra placa, incluindo esp8266 ou esp32)

2. - alguns cabos para conectar (tente encontrar o conector para o seu conector para vesc porque será muito mais fácil desconectar 1 conector grande em vez de muitos cabos pequenos)

3. - display (estou usando 124 x 32 Oled, mas você pode usar qualquer outro mudando a biblioteca)

4. - opcional - placa de ensaio (isso é para pessoas que não querem soldar ou para aqueles que querem fazê-lo temporariamente)

5. - Cabo USB para seu arduino

Etapa 2: conectando as peças

Conectando as peças
Conectando as peças
Conectando as peças
Conectando as peças
Conectando as peças
Conectando as peças

display: Vcc a 3,3V

Gnd para Gnd

Sck (ou scl) para A5

Sda para A4

VESC: 5V de Vesc para Vin no Arduino

Gnd para Gnd

RX no VESC para TX no Arduino

TX no VESC para RX no Arduino

Etapa 3: Upload e modificação do código de acordo com sua preferência

CÓDIGO:

/ ** Código 2020 por Lukas Janky Monitor VESC com display Oled Se você precisar me perguntar qualquer coisa, entre em contato pelo e-mail [email protected] ou pelo meu instructables. Espero que isso ajude você.

*/

#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 rpm; tensão flutuante; float current; poder interno; float amphour; float tach; distância de flutuação; velocidade de flutuação; float watthour; float batpercentage;

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

void setup () {

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

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

/ ** Defina quais portas usar como UART * / UART.setSerialPort (& Serial);

}

void loop () {

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

rpm = (UART.data.rpm) / 7; // O '7' é o número de pares de pólos no motor. A maioria dos motores tem 14 pólos, portanto 7 pares de pólos tensão = (UART.data.inpVoltage); current = (UART.data.avgInputCurrent); potência = tensão * corrente; amphour = (UART.data.ampHours); watthour = amphour * voltagem; tach = (UART.data.tachometerAbs) / 42; // O '42' é o número de pólos do motor multiplicado por 3 distance = tach * 3,142 * (1/1609) * 0,72 * (16/185); // RPM do motor x Pi x (1 / metros em uma milha ou km) x Diâmetro da roda x (polia do motor / polia) velocidade = rpm * 3,142 * (60/1609) * 0,72 * (16/185); // RPM do motor x Pi x (segundos em um minuto / metros em uma milha) x Diâmetro da roda x (polia do motor / polia) batpercentage = ((voltagem-38,4) / 12) * 100; // ((tensão da bateria - tensão mínima) / número de células) x 100

}

////////// Filter ////////// // calcular o valor estimado com Kalman Filter float powerfiltered = Filter1.updateEstimate (power);

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

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

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

atraso (50);

}

Você pode modificar e exibir qualquer valor do código que desejar

Etapa 4: verificar se funciona

Verificando se funciona
Verificando se funciona
Verificando se funciona
Verificando se funciona
Verificando se funciona
Verificando se funciona

Agora, quando você verificar se está funcionando, é hora de soldá-lo e adicionar rótulos aos seus valores como Volts ou Amps. Solde-o no arduino nano para que fique menor ou você pode até mesmo transmiti-lo com outro arduino para o seu controle remoto. mas para isso há muitos outros tutoriais (procure transmitir valores com o arduino). Espero que isso tenha ajudado a resolver seu problema ou a fazer uma pequena telemetria vesc.

Recomendado: