Satura rādītājs:

Vienkāršākais Arduino VESC monitors: 4 soļi
Vienkāršākais Arduino VESC monitors: 4 soļi

Video: Vienkāršākais Arduino VESC monitors: 4 soļi

Video: Vienkāršākais Arduino VESC monitors: 4 soļi
Video: PID demo 2024, Jūlijs
Anonim
Vienkāršākais Arduino VESC monitors
Vienkāršākais Arduino VESC monitors

Sveiki, šajā projektā mēs izgatavosim vienkāršu VESC monitoru. Tas būtu noderīgi, ja vēlaties kontrolēt savu temperatūru un noskaidrot tādas problēmas kā man ar Vesc pārkaršanu (ko es uzzināju tikai ar šo monitoru), vai arī varat to izmantot, vienkārši pievienojot displeju pie tāfeles vai stūres un skatoties ātrumu, nobraukumu, akumulatora procentuālo daudzumu un daudz ko citu. Tāpēc ķersimies pie celtniecības!

1. darbība: detaļas

Daļas
Daļas
Daļas
Daļas

1. - Arduino (es izmantoju UNO, bet jūs varat izmantot arī jebkuru citu dēli, ieskaitot esp8266 vai esp32)

2. - daži kabeļi savienošanai (mēģiniet atrast savienotāju savam savienotājam, jo būs daudz vieglāk atvienot 1 lielu savienotāju no daudziem maziem kabeļiem)

3. - displejs (es izmantoju 124 x 32 Oled, bet jūs varat izmantot jebkuru citu, mainot bibliotēku)

4. - pēc izvēles - maizes dēlis (tas ir paredzēts cilvēkiem, kuri nevēlas lodēt, vai tiem, kas to vēlas darīt īslaicīgi)

5. - USB kabelis jūsu arduino

2. darbība: detaļu savienošana kopā

Daļu savienošana kopā
Daļu savienošana kopā
Daļu savienošana kopā
Daļu savienošana kopā
Daļu savienošana kopā
Daļu savienošana kopā

displejs: Vcc līdz 3.3V

Gnd uz Gnd

Sck (vai scl) līdz A5

Sda līdz A4

VESC: 5V no Vesc līdz Vin uz Arduino

Gnd uz Gnd

RX no VESC līdz TX uz Arduino

TX no VESC līdz RX uz Arduino

3. darbība: koda augšupielāde un modificēšana pēc jūsu izvēles

KODS:

/** 2020. gada kods, ko izveidojis Lukas Janky VESC monitors ar Oled displeju Es ceru, ka tas jums palīdzēs.

*/

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

VescUart UART;

int rpm; pludiņa spriegums; pludiņa strāva; int jauda; pludiņa amfūra; pludiņa tach; pludiņa attālums; peldēšanas ātrums; pludiņa vatstunda; pludiņa batpercentage;

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

void setup () {

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

/ ** Iestatiet UART portu (Serial1 uz Atmega32u4)*/ // Serial1.begin (19200); kamēr (! Seriāls) {;}

/ ** Nosakiet, kurus portus izmantot kā UART*/ UART.setSerialPort (& Serial);

}

void loop () {

////////// Lasiet vērtības ////////// if (UART.getVescValues ()) {

rpm = (UART.data.rpm)/7; // “7” ir motora pāru skaits. Lielākajai daļai motoru ir 14 stabi, tāpēc 7 polu pāru spriegums = (UART.data.inpVoltage); pašreizējais = (UART.data.avgInputCurrent); jauda = spriegums*strāva; amphour = (UART.data.ampHours); vatstundas = ampērs*spriegums; tach = (UART.data.tachometerAbs)/42; // “42” ir motora polu skaits, kas reizināts ar 3 attālumiem = tah**3,142*(1/1609)*0,72*(16/185); // Motora apgriezieni x Pi x (1/ metri jūdzē vai km) x Riteņa diametrs x (motora skriemelis/ riteņa skriemelis) ātrums = apgr./min*3,142*(60/1609)*0,72*(16/185); // Motora apgriezieni x Pi x (sekundes minūtē / metri jūdzē) x Riteņa diametrs x (motora skriemelis / riteņa skriemelis) batpercentage = ((spriegums-38,4) / 12)*100; // ((Akumulatora spriegums - minimālais spriegums) / šūnu skaits) x 100

}

////////// Filter ////////// // aprēķiniet paredzamo vērtību, izmantojot Kalman Filter pludiņu powerfiltered = Filter1.updateEstimate (jauda);

display.fillScreen (0); display.setCursor (10, 5); display.setTextColor (1); display.setTextSize (1); displejs.druka (spriegums);

display.setCursor (10, 20); display.setTextColor (1); display.setTextSize (1); displejs.druka (jauda);

display.setCursor (10, 40); display.setTextColor (1); display.setTextSize (1); displejs.druka (apgr./min);

display.setCursor (10, 55); display.setTextColor (1); display.setTextSize (1); display.print (pašreizējais); display.display ();

kavēšanās (50);

}

Jūs varat mainīt un parādīt jebkuru vēlamā koda vērtību

4. darbība: pārbaudiet, vai tas darbojas

Pārbaude, vai tā darbojas
Pārbaude, vai tā darbojas
Pārbaude, vai tā darbojas
Pārbaude, vai tā darbojas
Pārbaude, vai tā darbojas
Pārbaude, vai tā darbojas

Tagad, kad pārbaudāt, vai tas darbojas, ir pienācis laiks to lodēt un pievienot vērtībām etiķetes, piemēram, volti vai ampēri. Lodējiet to arduino nano, lai tas būtu mazāks, vai arī jūs pat varat to pārraidīt ar citu arduino uz tālvadības pulti. bet tam ir daudz citu pamācību (meklēšana, kas pārraida vērtības, izmantojot arduino). Es ceru, ka tas palīdzēja jums atrisināt jūsu problēmu vai izveidot jauku mazu telemetriju.

Ieteicams: