Turinys:

Lengviausias „Arduino VESC“monitorius: 4 žingsniai
Lengviausias „Arduino VESC“monitorius: 4 žingsniai

Video: Lengviausias „Arduino VESC“monitorius: 4 žingsniai

Video: Lengviausias „Arduino VESC“monitorius: 4 žingsniai
Video: Clock Shield для Arduino, собери себе часы, пятничный DIY 2024, Lapkritis
Anonim
Lengviausias „Arduino VESC“monitorius
Lengviausias „Arduino VESC“monitorius

Sveiki, Šiame projekte mes padarysime paprastą VESC monitorių. Tai būtų naudinga, kai norite stebėti savo temperatūrą ir išsiaiškinti tokias problemas, kaip aš turėjau dėl „Vesc“perkaitimo (ką sužinojau tik su šiuo monitoriumi), arba galite jį naudoti tiesiog pritvirtindami ekraną prie lentos ar vairo ir stebėdami greitį, rida, akumuliatoriaus procentas ir daug daugiau. Taigi pradėkime kurti!

1 žingsnis: dalys

Dalys
Dalys
Dalys
Dalys

1. - „Arduino“(aš naudoju UNO, bet taip pat galite naudoti bet kurią kitą plokštę, įskaitant esp8266 arba esp32)

2. - kai kurie kabeliai prijungimui (pabandykite surasti jungtį, skirtą „Vesc“, nes bus daug lengviau atjungti 1 didelę jungtį, palyginti su daugybe mažų kabelių)

3. - ekranas (aš naudoju 124 x 32 „Oled“, bet pakeisdami biblioteką galite naudoti bet kurį kitą)

4. - neprivaloma - duonos lenta (tai žmonėms, kurie nenori lituoti, arba tiems, kurie nori tai padaryti laikinai)

5. - USB kabelis jūsų arduino

2 žingsnis: dalių sujungimas

Dalių sujungimas kartu
Dalių sujungimas kartu
Dalių sujungimas kartu
Dalių sujungimas kartu
Dalių sujungimas kartu
Dalių sujungimas kartu

ekranas: nuo Vcc iki 3.3V

Gnd į Gnd

Sck (arba scl) iki A5

Sda į A4

VESC: 5V nuo Vesc iki Vin Arduino

Gnd į Gnd

RX nuo VESC iki TX „Arduino“

TX nuo VESC iki RX „Arduino“

3 veiksmas: įkelkite ir pakeiskite kodą pagal savo pageidavimus

KODAS:

/** 2020 m. Kodas Lukas Janky VESC monitorius su Oled ekranu Jei norite manęs ko nors paklausti, susisiekite su manimi el. Paštu [email protected] arba mano instrukcijose. Tikiuosi, kad tai jums padės.

*/

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

„VescUart UART“;

int rpm; plūdės įtampa; plūdės srovė; int galia; plūdinė amfūra; plūdės tach; plūdės atstumas; plūdės greitis; plūduriuojanti vatvalandė; plūdės batpercentage;

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

void setup () {

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

/ ** UART prievado sąranka („Atmega32u4“serijos1)*/ // Serial1.begin (19200); o (! Serialas) {;}

/ ** Nustatykite, kuriuos prievadus naudoti kaip UART*/ UART.setSerialPort (& Serial);

}

void loop () {

////////// Skaitykite reikšmes ////////// if (UART.getVescValues ()) {

aps/min = (UART.data.rpm)/7; // „7“yra variklio polių porų skaičius. Dauguma variklių turi 14 polių, todėl 7 polių porų įtampa = (UART.data.inpVoltage); dabartinis = (UART.data.avgInputCurrent); galia = įtampa*srovė; amphour = (UART.data.ampHours); vatai = amf*įtampa; tach = (UART.data.tachometerAbs)/42; // „42“yra variklių polių skaičius, padaugintas iš 3 atstumų = tach*3,142*(1/1609)*0,72*(16/185); // Variklio apsisukimų dažnis x Pi x (1/ metrai mylioje ar km) x Rato skersmuo x (variklio skriemulys/ rato skriemulys) greitis = aps/ min*3,142*(60/1609)*0,72*(16/185); // Variklio apsisukimų dažnis x Pi x (sekundės per minutę / metrai mylios) x Rato skersmuo x (variklio skriemulys / rato skriemulys) batpercentage = ((įtampa-38,4) / 12)*100; // ((Baterijos įtampa - minimali įtampa) / elementų skaičius) x 100

}

////////// Filtras ////////// // apskaičiuokite apskaičiuotą vertę naudodami „Kalman Filter“plūdę powerfiltered = Filter1.updateEstimate (galia);

display.fillScreen (0); display.setCursor (10, 5); display.setTextColor (1); display.setTextSize (1); ekranas.spaudas (įtampa);

display.setCursor (10, 20); display.setTextColor (1); display.setTextSize (1); ekranas.spaudas (galia);

display.setCursor (10, 40); display.setTextColor (1); display.setTextSize (1); ekranas.spaudas (aps./min.);

display.setCursor (10, 55); display.setTextColor (1); display.setTextSize (1); display.print (dabartinis); display.display ();

vėlavimas (50);

}

Galite keisti ir rodyti bet kurią norimo kodo reikšmę

4 žingsnis: patikrinkite, ar jis veikia

Tikrinimas, ar tai veikia
Tikrinimas, ar tai veikia
Tikrinimas, ar tai veikia
Tikrinimas, ar tai veikia
Tikrinimas, ar tai veikia
Tikrinimas, ar tai veikia

Dabar, kai patikrinate, ar jis veikia, laikas jį lituoti ir pridėti etiketes prie savo vertybių, tokių kaip voltai ar stiprintuvai. Lituokite jį „arduino nano“, kad jis būtų mažesnis arba netgi galite jį perduoti su kitu arduino į nuotolinio valdymo pultą. bet tam yra daug kitų vadovėlių (paieška, perduodanti reikšmes naudojant arduino). Tikiuosi, kad tai padėjo jums išspręsti jūsų problemą arba sukurti gražią mažą telemetriją.

Rekomenduojamas: