Taula de continguts:

Monitor Arduino VESC més fàcil: 4 passos
Monitor Arduino VESC més fàcil: 4 passos

Vídeo: Monitor Arduino VESC més fàcil: 4 passos

Vídeo: Monitor Arduino VESC més fàcil: 4 passos
Vídeo: VESC + Arduino == 1kW Robotics Projects! (Featuring SimpleFOC) 2024, De novembre
Anonim
Monitor Arduino VESC més fàcil
Monitor Arduino VESC més fàcil

Hola, en aquest projecte facilitarem el monitor VESC. Això seria útil si voleu controlar la vostra temperatura i esbrinar problemes com el que he tingut amb el sobrecalentament de Vesc (que he descobert només amb aquest monitor) o podeu utilitzar-lo simplement per connectar la pantalla al tauler o al manillar i veure la vostra velocitat., quilometratge, percentatge de bateria i molts més. Així que comencem a construir!

Pas 1: parts

Parts
Parts
Parts
Parts

1. - Arduino (estic fent servir UNO, però també podeu fer servir qualsevol altra placa inclosa esp8266 o esp32)

2. - Alguns cables per connectar (intenteu trobar el connector per al vostre connector per a vesc perquè serà molt més fàcil desconnectar 1 connector gran en comparació amb molts cables petits)

3. - pantalla (estic fent servir 124 x 32 Oled, però podeu fer servir qualsevol altre canviant la biblioteca)

4. - opcional - tauler de suport (és per a persones que no volen soldar o per a persones que vulguin fer-ho temporalment)

5. - Cable USB per al vostre arduino

Pas 2: connectar peces juntes

Connexió de peces juntes
Connexió de peces juntes
Connexió de peces juntes
Connexió de peces juntes
Connexió de peces juntes
Connexió de peces juntes

pantalla: Vcc a 3,3V

Gnd a Gnd

Sck (o scl) a A5

Sda a A4

VESC: 5V de Vesc a Vin a Arduino

Gnd a Gnd

RX a VESC a TX a Arduino

TX a VESC a RX a Arduino

Pas 3: penjar i modificar el codi a la vostra preferència

CODI:

/ ** Codi 2020 del monitor VESC de Lukas Janky amb pantalla Oled Si necessiteu alguna pregunta, poseu-vos en contacte amb mi a [email protected] o als meus instruccions. Espero que això us ajudi.

*/

#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; tensió flotant; corrent flotant; int power; amfora flotant; tach flotant; distància de flotació; velocitat de flotació; flotador watthour; percentatge de flotador;

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

configuració nul·la () {

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

/ ** Configuració del port UART (Serial1 a Atmega32u4) * / // Serial1.begin (19200); while (! Serial) {;}

/ ** Definiu quins ports s'utilitzaran com a UART * / UART.setSerialPort (& Serial);

}

bucle buit () {

////////// Llegiu valors ////////// if (UART.getVescValues ()) {

rpm = (UART.data.rpm) / 7; // El '7' és el nombre de parells de pols del motor. La majoria dels motors tenen 14 pols, per tant tensió de 7 parells de pols = (UART.data.inpVoltage); current = (UART.data.avgInputCurrent); potència = tensió * corrent; àmfora = (UART.data.ampHours); watthour = amfora * voltatge; tach = (UART.data.tachometerAbs) / 42; // El "42" és el nombre de pols del motor multiplicat per 3 distància = tach * 3,142 * (1/1609) * 0,72 * (16/185); // RPM del motor x Pi x (1 / metres en una milla o km) x Diàmetre de la roda x (politja / roda del motor) velocitat = rpm * 3,142 * (60/1609) * 0,72 * (16/185); // RPM del motor x Pi x (segons en un minut / metres en una milla) x Diàmetre de la roda x (politja del motor / polea de roda) percentatge de batper = ((voltatge-38,4) / 12) * 100; // ((Tensió de la bateria: tensió mínima) / nombre de cel·les) x 100

}

////////// Filtre ////////// // calcula el valor estimat amb Kalman Filter float powerfiltered = Filter1.updateEstimate (power);

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

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

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

retard (50);

}

Podeu modificar i mostrar qualsevol valor del codi que vulgueu

Pas 4: comproveu si funciona

Comprovació de si funciona
Comprovació de si funciona
Comprovació de si funciona
Comprovació de si funciona
Comprovació de si funciona
Comprovació de si funciona

Ara, quan comproveu si funciona, és hora de soldar-lo i afegir etiquetes als vostres valors, com ara volts o amplificadors. Soldeu-lo amb arduino nano perquè sigui més petit o fins i tot el pugueu transmetre amb un altre arduino al controlador remot. però per a això hi ha molts altres tutorials (cerca de transmissió de valors amb arduino). Espero que això us hagi ajudat a resoldre el vostre problema o a fer una petita telemetria vesc.

Recomanat: