Mundarija:

Eng oson Arduino VESC monitor: 4 qadam
Eng oson Arduino VESC monitor: 4 qadam

Video: Eng oson Arduino VESC monitor: 4 qadam

Video: Eng oson Arduino VESC monitor: 4 qadam
Video: VESC LCD Display 2024, Iyul
Anonim
Eng oson Arduino VESC monitor
Eng oson Arduino VESC monitor

Salom, Ushbu loyihada biz VESC monitorini osonlashtiramiz. Agar siz haroratni kuzatib borishni istasangiz va Veskning haddan tashqari qizib ketishi bilan bog'liq muammolarni bilishni xohlasangiz, bu foydali bo'ladi (men buni faqat shu monitor yordamida bilib oldim) yoki siz uni displeyni boshqaruv paneli yoki rulda ulash va tezligingizni kuzatish uchun ishlatishingiz mumkin., kilometr, batareya ulushi va boshqalar. Shunday qilib, qurilishga kiraylik!

1 -qadam: qismlar

Qismlar
Qismlar
Qismlar
Qismlar

1. - Arduino (men UNO -dan foydalanaman, lekin siz boshqa har qanday taxtadan ham foydalanishingiz mumkin, jumladan esp8266 yoki esp32)

2. - ulanish uchun ba'zi kabellar (ulagichingiz uchun ulagichni topishga harakat qiling, chunki 1 katta ulagichni va ko'pgina kichik kabellarni ajratish ancha oson bo'ladi)

3. ekran

4. - ixtiyoriy - non paneli

5. - Arduino uchun USB kabeli

2 -qadam: qismlarni bir -biriga ulash

Qismlarni bir -biriga ulash
Qismlarni bir -biriga ulash
Qismlarni bir -biriga ulash
Qismlarni bir -biriga ulash
Qismlarni bir -biriga ulash
Qismlarni bir -biriga ulash

displey: VC dan 3.3V gacha

Gnd - Gnd

A5 ga tekshiring (yoki scl)

Sda dan A4 gacha

VESC: Arduino -da Vesdan Vinga 5V

Gnd - Gnd

VESC -dagi RX - Arduino -dagi TX

VESC -dagi TX - Arduino -dagi RX

3 -qadam: Kodni yuklash va o'zgartirish

KOD:

/** OLED displeyli Lukas Janky VESC monitorining 2020 yil kodi Agar siz menga biror narsa so'rasangiz, [email protected] elektron pochta manzili yoki ko'rsatmali telefonlarim bilan bog'laning. Umid qilamanki, bu sizga yordam beradi.

*/

#include #include #include #include #include #include #deecine SCREEN_WIDTH 128 #deecine SCREEN_HEIGHT 64 #delein_RESET 4 Adafruit_SSD1306 displeyini aniqlang (SCREEN_WIDTH, SCREEN_HEIGHT, & WIGHT;

VescUart UART;

int rpm; suzuvchi kuchlanish; suzuvchi oqim; int kuchi; suzuvchi amfur; suzuvchi taxta; suzish masofasi; suzish tezligi; suzuvchi suzish; suzuvchi batareya ulushi;

SimpleKalmanFilter Filtr1 (2, 2, 0.01);

bo'sh o'rnatish () {

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

/ ** UART portini sozlash (Atmega32u4 -da Serial1)*/ // Serial1.begin (19200); while (! Seriyali) {;}

/ ** Qaysi portlarni UART sifatida ishlatilishini aniqlang*/ UART.setSerialPort (& Serial);

}

void loop () {

////////// Qiymatlarni o'qing ///////// if (UART.getVescValues ()) {

rpm = (UART.data.rpm)/7; // "7" - bu dvigateldagi qutb juftlarining soni. Ko'pgina dvigatellarda 14 qutb bor, shuning uchun 7 qutbli juftlik kuchlanish = (UART.data.inpVoltage); joriy = (UART.data.avgInputCurrent); quvvat = kuchlanish*oqim; amphour = (UART.data.ampHours); watthour = amphour*kuchlanish; tach = (UART.data.tachometerAbs)/42; // "42" - bu dvigatel qutblari soni 3 masofaga ko'paytirildi = tach*3.142*(1/1609)*0.72*(16/185); // Dvigatelning aylanish tezligi x Pi x (mil/ km ga 1/ metr) x G'ildirak diametri x (motor kasnagi/ g'ildirak g'ildiragi) tezligi = rpm*3,142*(60/1609)*0,72*(16/185); // Dvigatelning aylanish tezligi x Pi x (bir soniyada bir soniyada / metrda) x G'ildirak diametri x (motor kasnagi / g'ildirakli g'altakning) bosimi foiz = ((kuchlanish-38,4) / 12)*100; // ((Batareya quvvati - minimal kuchlanish) / hujayralar soni) x 100

}

////////// Filtr ////////// // Kalman Filter float powerfiltered = Filter1.updateEstimate (quvvat) yordamida taxminiy qiymatni hisoblang;

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

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

display.setCursor (10, 40); display.setTextColor (1); display.setTextSize (1); displey.print (rpm);

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

kechikish (50);

}

Siz xohlagan koddan har qanday qiymatni o'zgartirishingiz va ko'rsatishingiz mumkin

4 -qadam: Ishlayotganini tekshirish

Ishlayotganligini tekshirish
Ishlayotganligini tekshirish
Ishlayotganligini tekshirish
Ishlayotganligini tekshirish
Ishlayotganligini tekshirish
Ishlayotganligini tekshirish

Ishlayotganini tekshirganingizda, uni lehimlash va Volt yoki Amper kabi qiymatlarga teglar qo'shish vaqti keldi. Uni arduino nanosiga lehimlang, shunda u kichikroq bo'ladi yoki siz uni boshqa arduino bilan masofadan boshqarish pultingizga o'tkazishingiz mumkin. lekin buning uchun boshqa ko'plab darsliklar (arduino yordamida qiymatlarni uzatish). Umid qilamanki, bu sizning muammongizni hal qilishga yoki teleko'rsatuvlarni yaxshi bajarishga yordam berdi.

Tavsiya: