Cuprins:

Cel mai simplu monitor Arduino VESC: 4 pași
Cel mai simplu monitor Arduino VESC: 4 pași
Anonim
Cel mai ușor monitor Arduino VESC
Cel mai ușor monitor Arduino VESC

Salut, în acest proiect vom face un monitor VESC ușor. Acest lucru ar fi util atunci când doriți să vă monitorizați temperatura și să aflați probleme precum cele pe care le-am avut cu supraîncălzirea Vesc (pe care am aflat-o doar cu acest monitor) sau îl puteți folosi pur și simplu pentru a atașa afișajul la placa sau ghidonul și pentru a urmări viteza dvs., kilometraj, procentul bateriei și multe altele. Așa că hai să ne construim!

Pasul 1: Piese

Părți
Părți
Părți
Părți

1. - Arduino (folosesc UNO dar puteți utiliza și orice altă placă, inclusiv esp8266 sau esp32)

2. - unele cabluri pentru conectare (încercați să găsiți conectorul pentru conectorul dvs. pentru vesc, deoarece va fi mult mai ușor să deconectați un conector mare față de o mulțime de cabluri mici)

3. - afișaj (folosesc 124 x 32 Oled, dar puteți utiliza orice altul schimbând biblioteca)

4. - opțional - breadboard (aceasta este pentru persoanele care nu doresc să lipească sau pentru cei care doresc să o facă temporar)

5. - Cablu USB pentru arduino

Pasul 2: Conectarea pieselor împreună

Conectarea părților împreună
Conectarea părților împreună
Conectarea părților împreună
Conectarea părților împreună
Conectarea părților împreună
Conectarea părților împreună

afișaj: Vcc la 3,3V

Gnd la Gnd

Sck (sau scl) la A5

Sda la A4

VESC: 5V de la Vesc la Vin pe Arduino

Gnd la Gnd

RX pe VESC către TX pe Arduino

TX pe VESC la RX pe Arduino

Pasul 3: Încărcarea și modificarea codului la preferința dvs

COD:

/ ** Cod 2020 de monitorul Lukas Janky VESC cu afișaj Oled Dacă trebuie să mă întrebați ceva, contactați-mă pe [email protected] sau pe instructabile. Sper că acest lucru vă va ajuta.

*/

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

VescUart UART;

int rpm; tensiune de plutire; curent plutitor; puterea int; amfor plutitor; flot tach; distanță de plutire; viteza de plutire; float watthour; procent de batper plutitor;

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

configurare nulă () {

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

/ ** Configurare port UART (Serial1 pe Atmega32u4) * / // Serial1.begin (19200); while (! Serial) {;}

/ ** Definiți ce porturi să utilizați ca UART * / UART.setSerialPort (& Serial);

}

bucla nulă () {

////////// Citiți valorile ////////// if (UART.getVescValues ()) {

rpm = (UART.data.rpm) / 7; // „7” este numărul de perechi de poli din motor. Majoritatea motoarelor au 14 poli, deci 7 perechi de poli tensiune = (UART.data.inpVoltage); current = (UART.data.avgInputCurrent); putere = tensiune * curent; amphour = (UART.data.ampHours); watthour = amfor * tensiune; tach = (UART.data.tachometerAbs) / 42; // „42” este numărul de poli ai motorului înmulțit cu 3 distanță = tach * 3.142 * (1/1609) * 0.72 * (16/185); // RPM motor x Pi x (1 / metri într-o milă sau km) x Diametru roată x (fulie motor / roată) viteză = rpm * 3.142 * (60/1609) * 0.72 * (16/185); // RPM motor x Pi x (secunde într-un minut / metri într-o milă) x Diametrul roții x (fulie motor / roată) procentul de baterie = ((tensiune-38,4) / 12) * 100; // ((Tensiunea bateriei - tensiunea minimă) / numărul de celule) x 100

}

////////// Filter ////////// // calculați valoarea estimată cu Kalman Filter float powerfiltered = Filter1.updateEstimate (power);

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

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

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

întârziere (50);

}

Puteți modifica și afișa orice valoare din codul dorit

Pasul 4: Verificați dacă funcționează

Verificarea dacă funcționează
Verificarea dacă funcționează
Verificarea dacă funcționează
Verificarea dacă funcționează
Verificarea dacă funcționează
Verificarea dacă funcționează

Acum, când verificați dacă funcționează, este timpul să-l lipiți și să adăugați etichete la valorile dvs., cum ar fi Volți sau Amperi. Lipiți-l pe arduino nano, deci va fi mai mic sau îl puteți transmite chiar și cu alt arduino la telecomanda dvs. dar pentru asta sunt multe alte tutoriale (căutare transmitând valori cu arduino). Sper că acest lucru te-a ajutat să-ți rezolvi problema sau să faci o mică telemetrie vesc.

Recomandat: