Spisu treści:

Najłatwiejszy monitor Arduino VESC: 4 kroki
Najłatwiejszy monitor Arduino VESC: 4 kroki

Wideo: Najłatwiejszy monitor Arduino VESC: 4 kroki

Wideo: Najłatwiejszy monitor Arduino VESC: 4 kroki
Wideo: Бюджетный zigbee сенсор электричества - 220 В / 5 В USB, создание, применение в Home Assistant 2024, Lipiec
Anonim
Najłatwiejszy monitor Arduino VESC
Najłatwiejszy monitor Arduino VESC

Cześć, w tym projekcie zrobimy łatwy monitor VESC. Byłoby to przydatne, gdy chcesz monitorować temperaturę i znaleźć problemy, jakie miałem z przegrzaniem mojego Vesca (co odkryłem właśnie na tym monitorze) lub możesz go użyć po prostu do przymocowania wyświetlacza do deski lub kierownicy i obserwować prędkość, przebieg, procent baterii i wiele innych. Więc zabierzmy się do budowania!

Krok 1: Części

Części
Części
Części
Części

1. - Arduino (używam UNO, ale możesz również użyć dowolnej innej płytki, w tym esp8266 lub esp32)

2. - trochę kabli do podłączenia (spróbuj znaleźć złącze do swojego złącza do vesc, ponieważ znacznie łatwiej będzie odpiąć 1 duże złącze niż wiele małych kabli)

3. - wyświetlacz (używam 124 x 32 Oled, ale możesz użyć dowolnej innej zmieniając bibliotekę)

4. - opcjonalnie - płytka stykowa (dla osób, które nie chcą lutować lub chcą to zrobić tymczasowo)

5. - Kabel USB do twojego arduino

Krok 2: Łączenie części razem

Łączenie części razem
Łączenie części razem
Łączenie części razem
Łączenie części razem
Łączenie części razem
Łączenie części razem

wyświetlacz: Vcc do 3,3 V

Gnd do Gnd

Sck (lub scl) do A5

Sda do A4

VESC: 5V od Vesc do Vin na Arduino

Gnd do Gnd

RX na VESC do TX na Arduino

TX na VESC do RX na Arduino

Krok 3: Przesyłanie i modyfikowanie kodu zgodnie z własnymi preferencjami

KOD:

/** 2020 kod Lukas Janky Monitor VESC z wyświetlaczem Oled Jeśli chcesz mnie o coś zapytać, skontaktuj się ze mną na [email protected] lub na moje instrukcje. Mam nadzieję, że ci to pomoże.

*/

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

VescUart UART;

int obr/min; napięcie pływaka; prąd pływaka; int moc; pływak amgodziny; pływak tach; odległość pływania; prędkość pływania; watogodzina pływaka; pływak procentowy;

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

pusta konfiguracja () {

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

/** Konfiguracja portu UART (Serial1 na Atmega32u4) */ // Serial1.begin(19200); while (!Serial) {;}

/** Zdefiniuj, które porty mają być używane jako UART */ UART.setSerialPort(&Serial);

}

pusta pętla () {

////////// Odczytaj wartości ////////// if (UART.getVescValues()) {

obr./min = (UART.dane.rpm)/7; // '7' to liczba par biegunów w silniku. Większość silników ma 14 biegunów, więc napięcie 7 par biegunów = (UART.data.inpVoltage); bieżący = (UART.data.avgInputCurrent); moc = napięcie*prąd; amphour = (UART.data.ampHours); watogodzina = amperogodzina*napięcie; tach = (UART.data.tachometerAbs)/42; // '42' to liczba biegunów silnika pomnożona przez 3 odległość = tach*3.142*(1/1609)*0.72*(16/185); // Obroty silnika x Pi x (1 / metry w milach lub km) x Średnica koła x Prędkość (koło pasowe silnika / koło pasowe) = obr./min*3.142*(60/1609)*0.72*(16/185); // Obroty silnika x Pi x (sekundy na minutę / metry na milę) x Średnica koła x (silnik / koło pasowe) batpercentage = ((napięcie-38,4)/12)*100; // ((Napięcie akumulatora - napięcie minimalne) / liczba ogniw) x 100

}

////////// Filtr ////////// // oblicz szacunkową wartość za pomocą filtru Kalmana float powerfiltered = Filter1.updateEstimate(power);

display.fillScreen(0); display.setCursor(10, 5); display.setTextColor(1); display.setTextSize(1); display.print(napięcie);

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

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(bieżący); display.display();

opóźnienie(50);

}

Możesz modyfikować i wyświetlać dowolną wartość z kodu, który chcesz

Krok 4: Sprawdzanie, czy to działa

Sprawdzanie, czy to działa
Sprawdzanie, czy to działa
Sprawdzanie, czy to działa
Sprawdzanie, czy to działa
Sprawdzanie, czy to działa
Sprawdzanie, czy to działa

Teraz, gdy sprawdzisz, czy działa, nadszedł czas na przylutowanie i dodanie etykiet do swoich wartości, takich jak wolty lub ampery. Przylutuj go do arduino nano, aby był mniejszy lub możesz go nawet przesłać z innym arduino do swojego pilota. ale do tego jest wiele innych samouczków (wyszukiwanie wartości transmisji za pomocą arduino). Mam nadzieję, że pomogło to w rozwiązaniu twojego problemu lub zrobieniu ładnej małej telemetrii vesc.

Zalecana: