Przewodnik po mikrosilnikach XiaoMi CyberGear

Czym jest XiaoMi CyberGear Mikrosilnik

Mikrosilnik Xiaomi CyberGear to kompaktowy, a jednocześnie potężny mikrosilnik zaprojektowany do zaawansowanych zastosowań robotycznych i bionicznych. Charakteryzuje się wysokim stosunkiem momentu obrotowego do rozmiaru, szybkim czasem reakcji oraz precyzyjną kontrolą, co umożliwia realistyczne i płynne ruchy w kończynach i mechanizmach robotycznych. Jego modułowa konstrukcja oraz inteligentne algorytmy sterowania ułatwiają bezproblemową integrację złożonych systemów, czyniąc go odpowiednim do zastosowań od bionicznych protez po zaawansowane robotyczne zwierzęta domowe. Xiaomi podkreśla jego potencjał do tworzenia bardziej realistycznych i interaktywnych doświadczeń robotycznych.

 

Instrukcja obsługi mikrosilnika CyberGear

Środki ostrożności

  • Proszę używać go zgodnie z parametrami pracy określonymi w tym artykule, w przeciwnym razie spowoduje to poważne uszkodzenie tego produktu!
  • Tryb sterowania nie może być zmieniany podczas pracy przegubu. Jeśli potrzebujesz zmienić tryb, musisz najpierw wysłać polecenie zatrzymania przed przełączeniem.
  • Proszę sprawdzić, czy wszystkie części są nienaruszone przed użyciem. Jeśli części są brakujące lub uszkodzone, prosimy o niezwłoczny kontakt z pomocą techniczną.
  • Nie demontuj silnika samowolnie, aby uniknąć nieodwracalnych uszkodzeń.
  • Upewnij się, że nie ma zwarcia podczas podłączania silnika oraz że interfejs jest podłączony prawidłowo zgodnie z wymaganiami.

Informacje prawne

Przed użyciem tego produktu użytkownik musi dokładnie przeczytać niniejszą instrukcję i obsługiwać produkt zgodnie z jej treścią. Jeśli użytkownik będzie korzystał z tego produktu niezgodnie z treścią tej instrukcji, firma nie ponosi odpowiedzialności za jakiekolwiek szkody majątkowe lub wypadki powodujące obrażenia ciała. Ponieważ produkt składa się z wielu części, nie należy dopuszczać dzieci do kontaktu z tym produktem, aby uniknąć wypadków. Aby wydłużyć żywotność produktu, prosimy nie używać go w warunkach wysokiej temperatury i wysokiego ciśnienia. Niniejsza instrukcja starała się jak najlepiej zawrzeć różne opisy funkcji i instrukcje użytkowania w momencie druku. Jednak ze względu na ciągłe ulepszanie funkcji produktu, zmiany w projekcie itp., mogą wystąpić rozbieżności w stosunku do produktów zakupionych przez użytkowników.
Mogą występować różnice między niniejszą instrukcją a rzeczywistym produktem pod względem koloru, wyglądu itp. Prosimy o odniesienie się do rzeczywistego produktu. Niniejsza instrukcja jest publikowana przez Xiaomi lub jej lokalne oddziały. Xiaomi może wprowadzać niezbędne poprawki i zmiany w tej instrukcji dotyczące błędów typograficznych, nieścisłości najnowszych informacji lub ulepszeń programów i/lub sprzętu w dowolnym momencie bez wcześniejszego powiadomienia. Takie zmiany będą zamieszczane w nowej wersji tej instrukcji. Prosimy zeskanować kod QR tej instrukcji, aby ją uzyskać. Wszystkie zdjęcia służą wyłącznie do opisu funkcji. Prosimy o odniesienie się do rzeczywistego produktu.

Polityka posprzedażowa

Obsługa posprzedażowa tego produktu jest ściśle zgodna z "Ustawą o ochronie praw i interesów konsumentów Chińskiej Republiki Ludowej" oraz "Ustawą o jakości produktów Chińskiej Republiki Ludowej". Zakres usług jest następujący:

Okres i zakres gwarancji

  Użytkownicy, którzy złożą zamówienie na zakup tego produktu za pośrednictwem kanałów online, mogą skorzystać z usługi zwrotu bez podania przyczyny w ciągu siedmiu dni od dnia otrzymania. Przy zwrocie towarów użytkownicy muszą przedstawić ważny dowód zakupu oraz zwrócić fakturę. Użytkownicy muszą zapewnić, że zwracane towary zachowują swoją oryginalną jakość i funkcjonalność, ich wygląd jest nienaruszony, a znaki towarowe i logotypy towarów oraz akcesoriów są kompletne. Jeśli dołączone były prezenty, muszą zostać zwrócone razem z produktem. Jeśli produkt jest uszkodzony sztucznie, rozmontowany ręcznie, brak opakowania lub brak części zamiennych, zwroty nie będą realizowane. Koszty logistyczne związane ze zwrotem towarów ponosi użytkownik (patrz "Standardy opłat za serwis posprzedażowy" w celu poznania standardów opłat). Jeśli użytkownik nie ureguluje opłat logistycznych, rzeczywista kwota zostanie potrącona z kwoty zwrotu. Zapłacona cena zostanie zwrócona użytkownikowi w ciągu siedmiu dni od daty otrzymania zwróconych towarów. Metody zwrotu są takie same jak metody płatności. Konkretna data przybycia może być uzależniona od czynników takich jak banki i instytucje płatnicze.
  Jeśli awaria wynikająca z przyczyn niezwiązanych z uszkodzeniem przez użytkownika wystąpi w ciągu 7 dni od dnia następnego po podpisaniu odbioru przez użytkownika, centrum serwisowe Xiaomi zajmie się zwrotem po przeprowadzeniu inspekcji i potwierdzeniu. Przy zwrocie produktu użytkownik musi okazać ważny dowód zakupu oraz fakturę zwrotną. Wszelkie prezenty muszą zostać zwrócone razem z produktem.
  Jeśli uszkodzenie lub awaria działania niezwiązana z człowiekiem wystąpi w ciągu 7 do 15 dni od dnia następnego po podpisaniu odbioru przez użytkownika, centrum obsługi posprzedażowej Xiaomi zajmie się wymianą dla użytkownika i wymieni cały zestaw produktów po inspekcji i potwierdzeniu. Po wymianie okres gwarancji na produkt zostanie ponownie obliczony.
  Od 15 do 365 dni od dnia następującego po dniu podpisania przez użytkownika, po inspekcji i potwierdzeniu przez centrum serwisowe Xiaomi, jest to wada jakościowa samego produktu, a usługi naprawcze mogą być świadczone bezpłatnie. Wymieniony wadliwy produkt należy do firmy Xiaomi. Produkt bez wad zostanie zwrócony w stanie oryginalnym. Ten produkt opuszcza fabrykę po przejściu różnych rygorystycznych testów. Jeśli wystąpi jakakolwiek wada jakościowa niezwiązana z samym produktem, zastrzegamy sobie prawo do odmowy zwrotu lub wymiany przez użytkownika.
Jeśli polityka posprzedażowa w tym podręczniku jest niezgodna z polityką posprzedażową sklepu, obowiązuje polityka posprzedażowa sklepu.

Regulacje dotyczące braku gwarancji: Następujące sytuacje nie są objęte gwarancją:

  Przekracza okres gwarancji określony w warunkach gwarancji.
  Uszkodzenie produktu spowodowane niewłaściwym użyciem bez przestrzegania instrukcji.
  Uszkodzenia spowodowane niewłaściwą obsługą, konserwacją, instalacją, modyfikacją, testowaniem oraz innym nieprawidłowym użytkowaniem.
  Konwencjonalne mechaniczne straty i zużycie spowodowane wadami nienależącymi do jakości.
  Uszkodzenia spowodowane nienormalnymi warunkami pracy, w tym między innymi upadkiem, uderzeniem, zanurzeniem w cieczy, gwałtownym uderzeniem itp.
  Szkody spowodowane przez klęski żywiołowe (takie jak powodzie, pożary, uderzenia piorunów, trzęsienia ziemi itp.) lub siłę wyższą.
  Uszkodzenia spowodowane użyciem powyżej maksymalnego momentu obrotowego.
  Przedmioty, które nie są oryginalnymi produktami Xiaomi, mogą nie być w stanie dostarczyć prawnego dowodu zakupu.
  Inne awarie lub uszkodzenia nie spowodowane problemami takimi jak projekt produktu, technologia, produkcja, jakość itp.
  Używaj tego produktu do celów komercyjnych.
Jeśli wystąpi powyższa sytuacja, użytkownicy muszą sami pokryć opłaty. Szczegóły dotyczące polityki posprzedażowej grupy można znaleźć w: https://www.mi.com/service/serviceAgreement?id=17

 

Specyfikacje silnika

1.1 Wygląd i wymiary montażowe

1.2 Standardowy status użytkowania

1.2.1 Napięcie znamionowe: 24 VDC
1.2.2 Zakres napięcia roboczego: 16V—28 VDC
1.2.3 Obciążenie znamionowe (CW): 4 N.m
1.2.4 Kierunek obrotu: zgodny z ruchem wskazówek zegara/przeciwny do ruchu wskazówek zegara, patrząc od strony wału
1.2.5 Pozycja użytkowania: Kierunek osi jest poziomy lub pionowy
1.2.6 Standardowa temperatura pracy: 25±5°C
1.2.7 Zakres temperatury pracy: -20 ~ 50°C
1.2.8 Standardowa wilgotność robocza: 65%
1.2.9 Zakres wilgotności roboczej: 5 ~ 85%, bez kondensacji
1.2.10 Zakres temperatury przechowywania: -30 ~ 70°C
1.2.11 Poziom izolacji: Klasa B

1.3 Charakterystyka elektryczna

1.3.1 Prędkość bez obciążenia: 296 obr./min ±10%
1.3.2 Prąd jałowy: 0,5 Arms
1.3.3 Obciążenie znamionowe: 4 N.m
1.3.4 Nominalna prędkość obciążenia: 240obr/min±10% 1.3.5 Nominalny prąd obciążenia (szczytowy): 6,5A±10% 1.3.6 Szczytowe obciążenie: 12 N.m
1.3.7 Prąd szczytowy (wartość szczytowa): 23A±10%
1.3.8 Rezystancja izolacji/uzwojenie stojana: DC 500VAC, 100M Ohm 1.3.9 Odporność na wysokie napięcie/ stojan i obudowa: 600 VAC, 1s, 2mA 1.3.10 Siła elektromotoryczna zwrotna silnika: 0,054-0,057Vrms/obr./min
1.3.11 Opór linii: 0,45Ω±10%
1.3.12 Stała momentu obrotowego: 0,87N.m/Arms
1.3.13 Indukcyjność silnika: 187-339μH
1.3.14 Krzywa T-N
1.3.15 Maksymalna krzywa przeciążenia Warunki testu:
Temperatura otoczenia: 25°C
Temperatura graniczna uzwojenia: 120°C
Prędkość: 24 obr./min
Krzywa maksymalnego obciążenia
Maksymalny czas przeciążenia (s) a moment obrotowy (N.m)
Dane testowe

Ładuj Czas pracy (s)
12 28
11 45
10 60
9 90
8 160
7 320
6 700
5 1800
4.5 2500
4 oceniany

1.4 Właściwości mechaniczne

1.4.1 Waga: 317g±3g
1.4.2 Liczba biegunów: 28 biegunów 1.4.3 Liczba faz: 3 fazy
1.4.4 Tryb jazdy: FOC
1.4.5 Stosunek redukcji: 7,75:1

Informacje o produkcie Drive

2.1 Wprowadzenie wyglądu kierowcy i specyfikacje produktu

Zasilacz 24V i zintegrowany terminal komunikacji CAN;
Wersja sprzętu i laserowe grawerowanie kodu QR;
Port pobierania MCU;
Punkt testowy komunikacji CAN;
Lampka kontrolna;
Otwory montażowe; 7. „C, A, B” to punkty spawania uzwojenia trójfazowego;

Specyfikacje produktu


Napięcie znamionowe pracy 24VDC
Maksymalne dozwolone napięcie 28VDC
Nominalny prąd roboczy 6,5A
Maksymalny dozwolony prąd 23A
Zużycie energii w trybie czuwania ≤18mA
Prędkość bitowa magistrali CAN 1Mbps
Rozmiar Φ58mm
Temperatura środowiska pracy -20°C 50°C
Maksymalna temperatura dozwolona przez płytę sterującą 80°C
Rozdzielczość enkodera 14-bitowa (pojedynczy obrót wartość bezwzględna)

2.2 Definicja interfejsu kierowcy

2.2.1 Diagram interfejsu kierowcy
2.2.2 Zalecane marki i modele interfejsów napędu

# Model płyty Producent marki Model końca linii Producent marki
1 XT30PB(2+2)-M.G.B AMASS (AMS) XT30(2+2)-F.G.B AMASS (AMS)
2 2,0 mm-2P żeński / 2,0 mm-2P męski /
3 2,54mm-4P żeński / 2,54mm-4P męski /
2.2.3 Definicja pinów interfejsu sterownika
Zasilanie i port komunikacji CAN
Płytka testowa komunikacji CAN
Port pobierania


# Funkcja interfejsu PIN Opis
1 Zasilanie i komunikacja CAN 1 Zasilanie dodatnie (+)
2 Biegun ujemny zasilania (-)
3 Komunikacja CAN niskiego poziomu CAN_L
4 Komunikacja CAN wysoka strona CAN_H
2 Punkt testowy komunikacji CAN 1 Komunikacja CAN niskiego poziomu CAN_L
2 Komunikacja CAN wysoka strona CAN_H
3 Port pobierania 1 SWDIO(dane)
2 SWCLK(zegar)
3 3V3 (dodatnie 3,3V)
4 GND (ujemny biegun)

2.3 Definicja kierowcy lampka kontrolna

Niebieska lampka sygnalizacyjna i czerwona lampka zasilania
Definicja lampki kontrolnej

Wskaźnik zasilania (czerwona lampka podczas pracy) Lampka wskaźnika zasilania służy do wskazywania zasilania MCU 3,3V. Gdy całkowite napięcie zasilania wynosi 24V, lampka świeci na czerwono, co potwierdza, że cała sieć jest zasilana prawidłowo. Jeśli zasilanie wynosi 24V, a lampka wskaźnika nie świeci, należy natychmiast odciąć zasilanie.
Wskaźnik sygnału (niebieskie światło podczas włączania) Gdy lampka sygnałowa miga, oznacza to, że MCU działa prawidłowo, a układ sterownika działa prawidłowo

2.4 Główne komponenty i specyfikacje


# Typ komponentu Model Ilość
1 układ MCU GD32F303RET6 1 SZT
2 Układ sterownika 6EDL7141 1 SZT
3 Magnetyczny układ enkodera AS5047P 1 SZT
4 Termistor NXFT15XH103FEAB021/NCP18XH103F03RB 2 SZT
5 Moc MOS JMGG031V06A 6 SZT

Instrukcje użycia debugera (skanowanie Kod QR na końcu papierowego podręcznika, aby uzyskać debugger)

3.1 Konfiguracja sprzętu

Silnik przegubowy używa komunikacji CAN. Istnieją dwie linie komunikacyjne, które są podłączone do debugera za pomocą narzędzia can-to-USB. Debuger wymaga wcześniejszej instalacji sterownika ch340 i domyślnie działa w trybie AT.
Należy zauważyć, że debugger opracowaliśmy na podstawie konkretnego narzędzia CAN do USB, dlatego do debugowania należy używać naszego zalecanego narzędzia portu szeregowego. Jeśli chcesz przenieść go na inne platformy debuggera, możesz odnieść się do rozdziału 3 podręcznika rozwoju.
Narzędzie can to USB zaleca używanie modułu USB-CAN firmy YourCee. Nagłówek ramki odpowiadający protokołowi portu szeregowego to 41 54, a ogon ramki to 0D 0A.

 

3.2 Interfejs debugera i opis

głównie obejmują:
A. Wybór modułu
  • Moduł urządzenia
  • Moduł konfiguracji
  • Moduł analizy
  • Moduł pomocy
B. Wybór podmodułu Moduły sprzętowe obejmują
  • Podłącz lub odłącz sprzęt elektryczny
  • Informacje o wyposażeniu silnika
  • Kalibracja enkodera silnika
  • Modyfikuj identyfikator CAN silnika
  • Ustaw mechaniczne położenie zerowe silnika
  • Aktualizacja programu silnika
Moduły konfiguracyjne obejmują:
  • Tabela parametrów, możesz przeglądać i modyfikować parametry silnika
  • Prześlij parametry. Możesz przesłać parametry w silniku do tabeli parametrów
  • Pobierz parametry. Możesz pobrać dane z tabeli parametrów do silnika
  • Parametry eksportu. Możesz pobrać dane z tabeli parametrów na lokalny dysk
  • Resetowanie do ustawień fabrycznych, możesz przywrócić dane w tabeli parametrów do ustawień fabrycznych.
  • Wyczyść ostrzeżenie, możesz wyczyścić błędy silnika, takie jak nadmierna temperatura itp.
Moduły analityczne obejmują:
  • Oscyloskop do obserwacji zmian parametrów w czasie
  • Częstotliwość, możesz dostosować częstotliwość wyświetlania danych
  • Kanał, możesz skonfigurować dane do wyświetlenia
  • Rozpocznij i zatrzymaj rysowanie
  • Wyprowadź dane fali wyjściowej do lokalnego
Moduły pomocy obejmują:
  • Instrukcje użytkowania, możesz otworzyć instrukcję obsługi
  • O programie, możesz przeglądać informacje o oprogramowaniu
C. Zapytanie o informacje o silniku
  • Informacje o urządzeniu
  • Informacje o tabeli parametrów
D. Kolumna danych
  • Informacje o logu
  • Informacje o komunikacji
E. Uruchom obszar debugowania
  • Wybierz urządzenie
  • Wygodny obszar obsługi, umożliwiający szybkie sterowanie obrotem silnika do przodu i do tyłu
  • Obszar sterowania ruchem, który może kontrolować silnik do pracy w różnych trybach
F. Obszar wyświetlania podmodułu

3.3 Ustawienia silnika

3.3.1 Ustawienia połączenia silnika
Podłącz moduł CAN do narzędzia USB (zainstaluj sterownik ch340, domyślnie działa w trybie AT), wybierz moduł urządzenia, kliknij podmoduł połączenia i wybierz odpowiednie połączenie portu szeregowego.
3.3.2 Podstawowe ustawienia
Zmodyfikuj numer identyfikacyjny silnika.
  • Kalibracja magnetycznego oplotu silnika, ponowny montaż płyty silnika i silnika lub ponowne podłączenie przewodów silnika w innej kolejności itp. wymaga ponownej kalibracji magnetycznego oplotu.
  • Ustaw pozycję zerową (utracona w przypadku awarii zasilania) i ustaw bieżącą pozycję na 0.
  • Aktualizacja programu silnika. Po zaktualizowaniu programu silnika kliknij przycisk aktualizacji, aby wybrać plik aktualizacji do przeprowadzenia aktualizacji.
3.3.3 Lista parametrów
Po pomyślnym podłączeniu silnika kliknij moduł tabeli parametrów w module konfiguracji, a wszystkie parametry zostaną wyświetlone w dzienniku. Ładowanie zakończone sukcesem oznacza, że odpowiednie parametry silnika zostały pomyślnie odczytane (Uwaga: tabela parametrów musi być w stanie gotowości silnika. Konfiguruj w tym stanie, jeśli silnik jest w stanie pracy, tabela parametrów nie może zostać odświeżona). Interfejs wyświetli elektryczne odpowiednie parametry silnika. Niebieskie parametry to wewnętrzne parametry przechowywane w silniku. Można je znaleźć bezpośrednio po odpowiednich parametrach. Zmodyfikuj kolumnę poprzedniej wartości. Kliknij Pobierz parametry, aby pobrać parametry z debuggera do silnika. Kliknij Prześlij. Parametry mogą przesłać parametry z silnika do debuggera. Zielone parametry silnika to obserwowane parametry, które są zbieranymi parametrami i mogą być obserwowane w czasie rzeczywistym.
Uwaga: Proszę nie zmieniać limitu momentu obrotowego silnika, temperatury ochronnej oraz czasu przekroczenia temperatury bez uzasadnionej przyczyny. W przypadku nielegalnej obsługi tej książki, jeśli produkt spowoduje szkodę dla ludzkiego ciała lub nieodwracalne uszkodzenia stawów, nasza firma nie ponosi odpowiedzialności prawnej za jakiekolwiek konsekwencje prawne.
Tabela parametrów

Kod funkcji Nazwa Typ parametru Atrybuty Wartość maksymalna Wartość minimalna Aktualna wartość (do odniesienia) Uwaga
0x0000 Nazwa Łańcuch odczyt/zapis
0x0001 Kod kreskowy Łańcuch odczyt/zapis
0x1000 WersjaKoduStartowego Łańcuch tylko do odczytu 0.1.5
0x1001 DataBudowyBoota Łańcuch tylko do odczytu 16 mar 2022
0x1002 CzasBudowyBootu Łańcuch tylko do odczytu 20:22:09
0x1003 WersjaAppCode Łańcuch tylko do odczytu 0.1.5 Numer wersji programu silnika
0x1004 WersjaAppGit Łańcuch tylko do odczytu 7b844b0fM
0x1005 DataBudowyAplikacji Łańcuch tylko do odczytu 14 kwi 2022
0x1006 CzasBudowyAplikacji Łańcuch tylko do odczytu 20:30:22
0x1007 NazwaAplikacji Łańcuch tylko do odczytu dog_motor
0x2000 echoPara1 uint16 Konfiguracja 74 5 5
0x2001 echoPara2 uint16 Konfiguracja 74 5 5
0x2002 echoPara3 uint16 Konfiguracja 74 5 5
0x2003 echoPara4 uint16 Konfiguracja 74 5 5
0x2004 echoFreHz uint32 odczyt/zapis 10000 1 500
0x2005 PrzesunięcieMechaniczne liczba zmiennoprzecinkowa ustawić 7 -7 4.619583 Kąt przesunięcia enkodera magnetycznego silnika
0x2006 InicjalizacjaMechPos liczba zmiennoprzecinkowa odczyt/zapis 50 -50 4.52 Kąt odniesienia podczas początkowego wielokrotnego obrotu
0x2007 limit_torque liczba zmiennoprzecinkowa odczyt/zapis 12 0 12 Limit momentu obrotowego
0x2008 I_FW_MAX liczba zmiennoprzecinkowa odczyt/zapis 33 0 0 Aktualna wartość prądu osłabiania pola, domyślnie 0
0x2009 motor_index uint8 ustawić 20 0 1 Indeks silnika, oznacza pozycję złącza silnika
0X200a ID_CAN uint8 ustawić 127 0 1 Ten identyfikator węzła
0x200b CAN_MASTER uint8 ustawić 127 0 0 może hostować identyfikator
0x200c CAN_TIMEOUT uint32 odczyt/zapis 100000 0 0 próg limitu czasu CAN, domyślnie 0
0x200d przegrzanie silnika int16 odczyt/zapis 1500 0 800 Wartość temperatury ochrony silnika, temp (stopień) *10
0x200e czasPrzegrzania uint32 odczyt/zapis 1000000 1000 20000 Czas przegrzania
0x200f Przełożenie liczba zmiennoprzecinkowa odczyt/zapis 64 1 7.75 Przełożenie
0x2010 Tq_caliType uint8 odczyt/zapis 1 0 1 Ustawienie metody kalibracji momentu obrotowego
0x2011 cur_filt_gain liczba zmiennoprzecinkowa odczyt/zapis 1 0 0.9 Aktualne parametry filtra
0x2012 cur_kp liczba zmiennoprzecinkowa odczyt/zapis 200 0 0.025 Aktualny kp
0x2013 cur_ki liczba zmiennoprzecinkowa odczyt/zapis 200 0 0.0258 prąd elektryczny ki
0x2014 spd_kp liczba zmiennoprzecinkowa odczyt/zapis 200 0 2 Prędkość kp
0x2015 spd_ki liczba zmiennoprzecinkowa odczyt/zapis 200 0 0.021 prędkość ki
0x2016 loc_kp liczba zmiennoprzecinkowa odczyt/zapis 200 0 30 Lokalizacja kp
0x2017 spd_filt_gain liczba zmiennoprzecinkowa odczyt/zapis 1 0 0.1 Parametry filtra prędkości
0x2018 limit_spd liczba zmiennoprzecinkowa odczyt/zapis 200 0 2 Limit prędkości w trybie pozycji
0x2019 limit_cur liczba zmiennoprzecinkowa odczyt/zapis 23 0 23 Pozycja, limit prądu trybu prędkości
0x3000 timeUse0 uint16 tylko do odczytu (informatyka) 5
0x3001 timeUse1 uint16 tylko do odczytu (informatyka) 0
0x3002 timeUse2 uint16 tylko do odczytu (informatyka) 10
0x3003 timeUse3 uint16 tylko do odczytu (informatyka) 0
0x3004 encoderRaw uint16 tylko do odczytu (informatyka) 11396 Przykładowa wartość enkodera magnetycznego
0x3005 temperaturaMcu int16 tylko do odczytu (informatyka) 337 temperatura wewnętrzna mcu *10
0x3006 temperaturaSilnika int16 tylko do odczytu (informatyka) 333 temperatura czujnika NTC silnika *10
0x3007 vBus(mv) uint16 tylko do odczytu (informatyka) 24195 napięcie szyny zbiorczej
0x3008 adc1Offset int32 tylko do odczytu (informatyka) 2084 Próbkowanie kanału adc 1 zerowy prąd polaryzacji
0x3009 adc2Offset int32 tylko do odczytu (informatyka) 2084 próbka adc kanał 2 zerowe przesunięcie prądu
0x300a adc1Raw uint16 tylko do odczytu (informatyka) 1232 Wartość próbkowania adc 1
0x300b adc2Surowy uint16 tylko do odczytu (informatyka) 1212 adc Wartość próbkowania 2
0x300c VBUS liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 24.195 Napięcie szyny zbiorczej V
0x300d cmdId liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 0 polecenie pierścienia identyfikatora, A
0x300e cmdIq liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 0 polecenie pierścienia iq, A
0x300f cmdlocref liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 0 Polecenie pętli pozycji, rad
0x3010 cmdspdref liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 0 Polecenie pętli prędkości, rad/s
0x3011 cmdMomentObrotowy liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 0 Moment obrotowy, Nm
0x3012 cmdPos liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 0 z poleceniem kąta protokołu
0x3013 cmdVel liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 0 wskaźnik prędkości protokołu mit cnotliwy
0x3014 obrót int16 tylko do odczytu (informatyka) 1 liczba okrążeń
0x3015 modPos liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 4.363409 Nieobliczony kąt mechaniczny silnika, rad
0x3016 pozycjaMecha liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 0.777679 Kąt liczenia pętli po stronie obciążenia, rad
0x3017 mechVel liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 0.036618 prędkość sterowania po stronie obciążenia, rad/s
0x3018 elecPos liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 4.714761 Kąt elektryczny
0x3019 ia liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 0 Prąd linii U, A
0x301a ib liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 0 Prąd linii V, A
0x301b ic liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 0 Prąd linii, A
0x301c zaznacz uint32 tylko do odczytu (informatyka) 31600
0x301d kolejnośćFazy uint8 tylko do odczytu (informatyka) 0 Markery kierunku kalibracji
0x301e iqf liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 0 Wartość filtra iq, A
0x301f temperaturaPłyty int16 tylko do odczytu (informatyka) 359 Temperatura na pokładzie, *10
0x3020 iq liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 0 oryginalna wartość iq, A
0x3021 id liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 0 id Oryginalna wartość, A
0x3022 faultSta uint32 tylko do odczytu (informatyka) 0 Wartość statusu błędu
0X3023 warnSta uint32 tylko do odczytu (informatyka) 0 Wartość statusu ostrzeżenia
0x3024 drv_fault uint16 tylko do odczytu (informatyka) 0 Wartość błędu układu sterownika
0x3025 drv_temp int16 tylko do odczytu (informatyka) 48 Wartość temperatury układu scalonego sterownika, stopień
0x3026 Uq liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 0 napięcie osi q
0x3027 Ud liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 0 napięcie osi d
0x3028 dtc_u liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 0 Cykl pracy wyjścia fazy U
0x3029 dtc_v liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 0 Cykl pracy wyjścia fazy V
0x302a dtc_w liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 0 Cykl pracy wyjścia fazy W
0x302b v_bus liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 24.195 vbus w zamkniętej pętli
0x302c v_ref liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 0 Napięcie wejściowe syntezy vq, vd w pętli zamkniętej
0x302d torque_fdb liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 0 Wartość sprzężenia zwrotnego momentu obrotowego, Nm
0x302e rated_i liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 8 Prąd znamionowy silnika
0x302f limit_i liczba zmiennoprzecinkowa tylko do odczytu (informatyka) 27 Maksymalny limit prądu silnika
3.3.4 Oscyloskop
Ten interfejs obsługuje przeglądanie i obserwację wykresu generowanego przez dane w czasie rzeczywistym. Obserwowalne dane obejmują prąd Id/Iq silnika, temperaturę, rzeczywistą prędkość wyjściową w czasie rzeczywistym, pozycję wirnika (enkodera), pozycję wyjściową itp.
Kliknij moduł oscyloskopu w module analizy, wybierz odpowiednie parametry w kanale (znaczenie parametrów znajduje się w punkcie 3.3.3), ustaw częstotliwość wyjściową i kliknij Rozpocznij Rysowanie, aby obserwować widmo danych, zatrzymaj rysowanie, aby przestać obserwować widmo.

3.4 Demonstracja kontroli

bieg joggingowy:
Ustaw maksymalną prędkość, kliknij Uruchom, a następnie kliknij JOG, aby uruchomić silnik w kierunku do przodu i do tyłu
Przełączanie trybu sterowania:
Tryb sterowania silnikiem można przekształcić w interfejs trybu ruchu.
3.4.1 Tryb zerowego punktu
Kliknij przycisk przełącznika po prawej stronie, a silnik powoli wróci do pozycji zerowej mechanicznej.
3.4.2 Tryb sterowania operacją
Kliknij przycisk przełącznika po prawej stronie, następnie ustaw pięć wartości parametrów, kliknij Start lub Ciągłe wysyłanie, silnik powróci do ramki sprzężenia zwrotnego i będzie działał zgodnie z docelową instrukcją; ponownie kliknij przycisk przełącznika po prawej stronie, a silnik zatrzyma się.
3.4.2 Tryb prądu
Ręcznie przełącz aktualny tryb, kliknij przycisk przełączania po prawej, a następnie ustaw wartość polecenia prądu Iq, rozpocznij lub wysyłaj ciągle, silnik będzie podążał za poleceniem prądu, kliknij ponownie przycisk przełączania po prawej, silnik zatrzyma się.
Kliknij przycisk przełącznika po prawej stronie trybu sterowania, wprowadź amplitudę i częstotliwość sinusoidalnego testu automatycznego, a następnie kliknij przycisk przełącznika po prawej stronie automatycznego testu sinusoidalnego, a prąd iq (A) silnika będzie działał zgodnie z ustawioną amplitudą i częstotliwością.
3.4.3 Tryb prędkości
Ręcznie przełącz na tryb prędkości, kliknij przycisk przełącznika po prawej, a następnie ustaw wartość polecenia prędkości (-30~30rad/s), uruchom lub wysyłaj ciągle, silnik będzie podążał za poleceniem prędkości, kliknij ponownie przycisk przełącznika po prawej, silnik zatrzyma się.
3.4.4 Tryb lokalizacji
Ręcznie przełącz tryb pozycjonowania, kliknij przycisk przełączania po prawej, następnie ustaw wartość polecenia pozycji (rad), uruchom lub wysyłaj ciągle, silnik będzie podążał za docelowym poleceniem pozycji, ponownie kliknij przycisk przełączania po prawej, silnik zatrzyma się. Możesz zmodyfikować maksymalną prędkość podążania za pozycją, ustawiając prędkość.
Kliknij przycisk przełącznika po prawej stronie trybu sterowania, wprowadź amplitudę i częstotliwość automatycznego testu opartego na sinusoidzie, a następnie kliknij przycisk przełącznika po prawej stronie automatycznego testu opartego na sinusoidzie. Pozycja silnika (rad) będzie działać zgodnie z ustawioną amplitudą i częstotliwością.

3.5 Aktualizacja oprogramowania układowego

Pierwszym krokiem jest kliknięcie aktualizacji modułu urządzenia i wybranie pliku bin do nagrania; drugim krokiem jest potwierdzenie aktualizacji, a silnik rozpocznie aktualizację oprogramowania układowego. Po zakończeniu postępu aktualizacja silnika zostanie zakończona i nastąpi automatyczny restart.

Protokół komunikacji kierowcy i instrukcje użytkowania

Komunikacja silnika to interfejs komunikacyjny CAN 2.0, z prędkością transmisji 1 Mbps i rozszerzonym formatem ramki, jak pokazano

Pole danych 29-bitowy identyfikator Obszar danych 8 bajtów
Rozmiar Bit 28 ~ 24 Bit 23 ~ 8 Bit 7 ~ 0 Bajt 0 ~ 7
Opis Typ komunikacji Obszar danych 2 Adres docelowy Obszar danych 1
Tryby sterowania obsługiwane przez silnik obejmują:
  • Tryb sterowania operacją: podano 5 parametrów do sterowania pracą silnika;
  • Aktualny tryb: przy zadanym określonym prądzie Iq silnika;
  • Tryb prędkości: biorąc pod uwagę określoną prędkość pracy silnika;
  • Tryb pozycji: Po podaniu określonej pozycji silnika, silnik będzie działał do określonej pozycji;

4.1 Opis typu protokołu komunikacyjnego

4.1.1 Pobierz identyfikator urządzenia (typ komunikacji 0); Pobierz identyfikator urządzenia oraz 64-bitowy unikalny identyfikator MCU
Ramka żądania:

Pole danych 29-bitowy identyfikator obszar danych 8 bajtów
Pozycja Bit 28 ~ 24 Bit 23 ~ 8 Bit 7 ~ 0 Bajt 0 ~ 7
Opis 0 Bit 15 ~ 8: Identyfikator CAN hosta Silnik CAN_ID 0
Ramka odpowiedzi:

Pole danych 29-bitowy identyfikator obszar danych 8 bajtów
Pozycja Bit 28 ~ 24 Bit 23 ~ 8 Bit 7 ~ 0 Bajt 0 ~ 7
Opis 0 Silnik CAN_ID 0xFE Unikalny identyfikator MCU 64-bitowy
4.1.2 Instrukcje sterowania silnikiem (typ komunikacji 1) w trybie sterowania operacyjnego są używane do wysyłania instrukcji sterujących do silnika.
Ramka żądania:

Pole danych 29-bitowy identyfikator obszar danych 8 bajtów
Pozycja Bit 28 ~ 24 Bit 23 ~ 8 Bit 7 ~ 0 Bajt 0 ~ 7
Opis 1 Bajt 2: Moment obrotowy (0 ~ 65535) odpowiadający (- 12Nm ~ 12Nm) Silnik CAN_ID Bajt 0 ~ 1: Kąt docelowy [0 ~ 65535] odpowiadający (-4π ~ 4π)
Bajt 2 ~ 3: Docelowa prędkość kątowa [0 ~ 65535] odpowiada (- 30rad/s ~ 30rad/s)
Bajt 4 ~ 5: Kp [0 ~ 65535] odpowiada (0,0 ~ 500,0)
Bajt 6 ~ 7: Kd [0 ~ 65535] odpowiada (0,0 ~ 5,0)
Ramka odpowiedzi: Ramka sprzężenia zwrotnego silnika (zobacz typ komunikacji 2)
4.1.3 Dane zwrotne silnika (typ komunikacji 2) są używane do przekazywania statusu pracy silnika do hosta

Pole danych 29-bitowy identyfikator obszar danych 8 bajtów
Pozycja Bit 28 ~ 24 Bit 23 ~ 8 Bit 7 ~ 0 Bajt 0 ~ 7
Opis 2 Bit 8 ~ 15: Identyfikator CAN silnika
Bit 21 ~ 16: Informacje o błędzie (0 - Nie, 1 - Tak)
Bit 21: nie skalibrowany
Bit 20: błąd kodowania HALL
Bit 19: Błąd kodowania magnetycznego
Bit 18: przekroczenie temperatury
Bit 17: przeciążenie prądowe
Bit 16: Błąd niskiego napięcia
Bit 22 ~ 23: status trybu:
0: Tryb resetowania [reset]
1: Tryb Cali [Kalibracja]
2: Tryb silnika [Praca]
Host CAN_ID Bajt 0 ~ 1: Aktualny kąt [0 ~ 65535] odpowiada (-4π ~ 4π)
Bajt 2 ~ 3: Aktualna prędkość kątowa [0 ~ 65535] odpowiada (-30rad/s ~ 30rad/s)
Bajt 4 ~ 5: Aktualny moment obrotowy [0 ~ 65535] odpowiada (-12Nm ~ 12Nm)
Bajt 6 ~ 7: Aktualna temperatura: Temp (stopnie Celsjusza) )*10
4.1.4 Włączanie silnika (typ komunikacji 3)

Pole danych 29-bitowy identyfikator obszar danych 8 bajtów
Pozycja Bit 28 ~ 24 Bit 23 ~ 8 Bit 7 ~ 0 Bajt 0 ~ 7
Opis 3 Bit 15 ~ 8: Identyfikator CAN hosta Silnik CAN_ID
Ramka odpowiedzi: Ramka sprzężenia zwrotnego silnika odpowiedzi (zobacz typ komunikacji 2)
4.1.5 Silnik zatrzymany (typ komunikacji 4)

Pole danych 29-bitowy identyfikator obszar danych 8 bajtów
Pozycja Bit 28 ~ 24 Bit 23 ~ 8 Bit 7 ~ 0 Bajt 0 ~ 7
Opis 4 Bit 15 ~ 8: Identyfikator CAN hosta Silnik CAN_ID Podczas normalnej pracy obszar danych musi zostać wyczyszczony do 0;
Gdy Byte[0]=1: Wyczyść błąd;
Ramka odpowiedzi: Ramka sprzężenia zwrotnego silnika odpowiedzi (zobacz typ komunikacji 2)
4.1.6 Ustawienie mechanicznej pozycji zerowej silnika (typ komunikacji 6) spowoduje ustawienie bieżącej pozycji silnika na mechaniczną pozycję zerową (utracone po awarii zasilania)

Pole danych 29-bitowy identyfikator obszar danych 8 bajtów
Pozycja Bit 28 ~ 24 Bit 23 ~ 8 Bit 7 ~ 0 Bajt 0 ~ 7
Opis 6 Bit 15 ~ 8: Identyfikator CAN hosta Silnik CAN_ID Byte[0]=1
Ramka odpowiedzi: Ramka sprzężenia zwrotnego silnika odpowiedzi (zobacz typ komunikacji 2)
4.1.7 Ustaw CAN_ID silnika (typ komunikacji 7), aby zmienić aktualny CAN_ID silnika, co będzie miało natychmiastowy efekt.

Pole danych 29-bitowy identyfikator obszar danych 8 bajtów
Pozycja Bit 28 ~ 24 Bit 23 ~ 8 Bit 7 ~ 0 Bajt 0 ~ 7
Opis 7 Bit 15 ~ 8: Identyfikator CAN hosta
Bit 16 ~ 23: Nowy CAN_ID silnika
Silnik CAN_ID Byte[0]=1
Ramka odpowiedzi: Ramka nadawcza silnika odpowiedzi (zobacz typ komunikacji 0)
4.1.8 Odczyt pojedynczego parametru (typ komunikacji 17)

Pole danych 29-bitowy identyfikator obszar danych 8 bajtów
Pozycja Bit 28 ~ 24 Bit 23 ~ 8 Bit 7 ~ 0 Bajt 0 ~ 7
Opis 17 Bit 15 ~ 8: Identyfikator CAN hosta Silnik CAN_ID Bajt 0 ~ 1: indeks, patrz 4.1.11 dla listy parametrów
Bajt 2 ~ 3: 00
Bajt 4 ~ 7: 00
Ramka odpowiedzi:

Pole danych 29-bitowy identyfikator obszar danych 8 bajtów
Pozycja Bit 28 ~ 24 Bit 23 ~ 8 Bit 7 ~ 0 Bajt 0 ~ 7
Opis 17 Bit 15 ~ 8: Motor CAN_ID Host CAN_ID Bajt 0 ~ 1: indeks, dla listy parametrów, patrz 4.1.11
Bajt 2 ~ 3: 00
Bajt 4 ~ 7: dane parametru, 1 bajt danych znajduje się w Bajcie 4
4.1.9 Zapis pojedynczego parametru (typ komunikacji 18) (utracony po awarii zasilania)

Pole danych 29-bitowy identyfikator obszar danych 8 bajtów
Pozycja Bit 28 ~ 24 Bit 23 ~ 8 Bit 7 ~ 0 Bajt 0 ~ 7
Opis 18 Bit 15 ~ 8: Identyfikator CAN hosta Silnik CAN_ID Bajt 0 ~ 1: indeks, patrz 4.1.11 dla szczegółów listy parametrów
Bajt 2 ~ 3: 00
Bajt 4 ~ 7: dane parametru
Ramka odpowiedzi: Ramka sprzężenia zwrotnego silnika odpowiedzi (zobacz typ komunikacji 2)
4.1.10 Ramka informacji zwrotnej o błędzie (typ komunikacji 21)

Pole danych 29-bitowy identyfikator obszar danych 8 bajtów
Pozycja Bit 28 ~ 24 Bit 23 ~ 8 Bit 7 ~ 0 Bajt 0 ~ 7
Opis 21 Bit 15 ~ 8: Identyfikator CAN hosta Silnik CAN_ID Bajt 0 ~ 3: wartość błędu (nie 0: błąd, 0: normalny)
Bit 16: Przeciążenie próbkowania prądu fazowego
Bit 15 ~ 8: błąd przeciążenia
Bit 7: enkoder nie skalibrowany
Bit 5: Przeciążenie próbkowania prądu fazy C
Bit 4: Próbkowanie prądu fazy B bit przeciążenia prądowego 3: błąd przepięcia
Bit 2: bit usterki niskiego napięcia bit1: usterka układu sterownika bit0: usterka przegrzania silnika, domyślnie 80 stopni
Bajt 4 ~ 7: wartość ostrzeżenia
Bit 0: ostrzeżenie o przegrzaniu silnika, domyślnie 75 stopni
4.1.11 Modyfikacja prędkości transmisji (typ komunikacji 22) (wersja 1.2.1.5 może być modyfikowana, proszę dokładnie zapoznać się z procesem dokumentu przed modyfikacją. Błędy operacyjne mogą powodować problemy takie jak niemożność połączenia z silnikiem oraz niemożność aktualizacji)

Pole danych 29-bitowy identyfikator obszar danych 8 bajtów
Pozycja Bit 28 ~ 24 Bit 23 ~ 8 Bit 7 ~ 0 Bajt 0 ~ 7
Opis 22 Bit 15 ~ 8: Identyfikator CAN hosta Silnik CAN_ID Byte0: Prędkość transmisji silnika
1: 1Mbps
2: 500kbps
3: 250kbps
4: 125kbps
Ramka odpowiedzi: Ramka nadawcza silnika odpowiedzi (zobacz typ komunikacji 0)
4.1.12 Czytelna i zapisywalna lista pojedynczych parametrów (7019-7020 jest czytelna przez wersję oprogramowania 1.2.1.5)

Indeks parametru nazwa parametru opisać typ Liczba bajtów Możliwe wartości Pozwolenie
0x7005 run_mode 0: Tryb sterowania operacją
1: Tryb pozycji
2: Tryb prędkości
3: Bieżący tryb
uint8 1 W/R
0x7006 iq_ref Aktualny tryb polecenia Iq liczba zmiennoprzecinkowa 4 -23 ~ 23A W/R
0x700A spd_ref Polecenie prędkości trybu prędkości liczba zmiennoprzecinkowa 4 -30 ~ 30rad/s W/R
0x700B limit_torque Limit momentu obrotowego liczba zmiennoprzecinkowa 4 0~12Nm W/R
0x7010 cur_kp Współczynnik Kp prądu liczba zmiennoprzecinkowa 4 Wartość domyślna 0,125 W/R
0x7011 cur_ki Aktualny Ki liczba zmiennoprzecinkowa 4 Wartość domyślna 0,0158 W/R
0x7014 cur_filt_gain Aktualny współczynnik filtra filt_gain liczba zmiennoprzecinkowa 4 0~1.0, domyślna wartość W/R 0.1 W/R
0x7016 loc_ref Polecenie kąta trybu pozycji liczba zmiennoprzecinkowa 4 rad W/R
0x7017 limit_spd Limit prędkości w trybie pozycji liczba zmiennoprzecinkowa 4 0 ~ 30rad/s W/R
0x7018 limit_cur Prędkość Pozycja Tryb Limit Prądu liczba zmiennoprzecinkowa 4 0 ~ 23A W/R
0x7019 pozycjaMecha Załaduj końcowe liczenie nakładek kąt mechaniczny liczba zmiennoprzecinkowa 4 rad R
0x701A iqf wartość filtra iq liczba zmiennoprzecinkowa 4 -23 ~ 23A R
0x701B mechVel Prędkość końcowa obciążenia liczba zmiennoprzecinkowa 4 -30 ~ 30rad/s R
0x701C VBUS napięcie magistrali liczba zmiennoprzecinkowa 4 V R
0x701D obrót Liczba obrotów int16 2 Liczba obrotów W/R
0x701E loc_kp kp pozycji liczba zmiennoprzecinkowa 4 Wartość domyślna 30 W/R
0x701F spd_kp Prędkość w kp liczba zmiennoprzecinkowa 4 Wartość domyślna 1 W/R
0x7020 spd_ki Prędkość ki liczba zmiennoprzecinkowa 4 Wartość domyślna 0,002 W/R

4.2 Instrukcje użytkowania trybu sterowania

4.2.1 Przykład programu
Poniżej przedstawiono przykłady sterowania silnikami w różnych trybach (na przykładzie gd32f303). Poniżej znajdują się biblioteki, funkcje i definicje makr dla różnych przykładów.
#define P_MIN -12.5f
#define P_MAX 12.5f
#define V_MIN -30.0f
#define V_MAX 30.0f
#define KP_MIN 0.0f
#define KP_MAX 500.0f
#define KD_MIN 0.0f
#define KD_MAX 5.0f
#define T_MIN -12.0f
#define T_MAX 12.0f

struct exCanIdInfo{
    uint32_t id:8;
    uint32_t data:16;
    uint32_t tryb:5;
    uint32_t res:3;
};

can_receive_message_struct rxMsg;

can_trasnmit_message_struct txMsg = {
    .tx_sfid = 0,
    .tx_efid = 0xff,
    .tx_ft = CAN_FT_DATA,
    .tx_ff = CAN_FF_EXTENDED,
    .tx_dlen = 8,
};

#define txCanIdEx (((struct exCanIdInfo)&(txMsg.tx_efid)))

// Parse extended frame id into custom data structure
#define rxCanIdEx (((struct exCanIdInfo)&(rxMsg.rx_efid)))

int float_to_uint(float x, float x_min, float x_max, int bits) {
    float zakres = x_max - x_min;
    float offset = x_min;
    jeśli(x > x_max) x=x_max;
    else if(x < x_min) x= x_min;
    return (int) ((x-offset)*((float)((1<
✔ Skopiowano!

 

Instrukcje sterowania silnikiem w trybie sterowania operacją (typ komunikacji 1)
void motor_controlmode(uint8_t id, float moment_obrotowy, float pozycja_mechaniczna, float predkosc, float kp, float kd) {
    txCanIdEx.mode = 1;
    txCanIdEx.id = id;
    txCanIdEx.res = 0;
    txCanIdEx.data = float_to_uint(moment_obrotowy,T_MIN,T_MAX,16);
    txMsg.tx_dlen = 8;
    txMsg.tx_data[0]=float_to_uint(MechPosition,P_MIN,P_MAX,16)>>8;
    txMsg.tx_data[1]=float_to_uint(MechPosition,P_MIN,P_MAX,16);
    txMsg.tx_data[2]=float_to_uint(speed,V_MIN,V_MAX,16)>>8;
    txMsg.tx_data[3]=float_to_uint(prędkość,V_MIN,V_MAX,16);
    txMsg.tx_data[4]=float_to_uint(kp,KP_MIN,KP_MAX,16)>>8;
    txMsg.tx_data[5]=float_to_uint(kp,KP_MIN,KP_MAX,16);
    txMsg.tx_data[6]=float_to_uint(kd,KD_MIN,KD_MAX,16)>>8;
    txMsg.tx_data[7]=float_to_uint(kd,KD_MIN,KD_MAX,16);
    can_txd();
}


✔ Skopiowano!

 

Rama zatrzymania silnika (typ komunikacji 4)
void motor_reset(uint8_t id, uint16_t master_id) {
    txCanIdEx.mode = 4;
    txCanIdEx.id = id;
    txCanIdEx.res = 0;
    txCanIdEx.data = master_id;
    txMsg.tx_dlen = 8;
    for(uint8_t i=0;i<8;i++) {
        txMsg.tx_data[i]=0;
    }
    can_txd();
}


✔ Skopiowano!

 

Polecenie zapisu parametru trybu silnika (typ komunikacji 18, przełączanie trybu pracy)
uint8_t tryb_uruchomienia;
uint16_t indeks;
void motor_modechange(uint8_t id, uint16_t master_id) {
    txCanIdEx.mode = 0x12;
    txCanIdEx.id = id;
    txCanIdEx.res = 0;
    txCanIdEx.data = master_id;
    txMsg.tx_dlen = 8;
    for(uint8_t i=0;i<8;i++) {
        txMsg.tx_data[i]=0;
    }
    memcpy(&txMsg.tx_data[0],&index,2);
    memcpy(&txMsg.tx_data[4],&runmode, 1);
    can_txd();
}


✔ Skopiowano!

 

Polecenie zapisu parametru trybu silnika (typ komunikacji 18, zapis parametru sterowania)
uint16_t indeks;
float ref;
void motor_write(uint8_t id, uint16_t master_id) {
    txCanIdEx.mode = 0x12;
    txCanIdEx.id = id;
    txCanIdEx.res = 0;
    txCanIdEx.data = master_id;
    txMsg.tx_dlen = 8;
    for(uint8_t i=0;i<8;i++) {
        txMsg.tx_data[i]=0;
    }
    memcpy(&txMsg.tx_data[0],&index,2);
    memcpy(&txMsg.tx_data[4],&ref,4);
    can_txd();
}


✔ Skopiowano!

 

4.2.2 Tryb sterowania operacją
Po włączeniu zasilania silnika, domyślnie znajduje się on w trybie sterowania operacyjnego;
Wyślij ramkę uruchomienia włączenia silnika (typ komunikacji 3) -->
Wyślij polecenie sterowania silnikiem w trybie kontroli operacji (typ komunikacji 1) -->
Odbierz ramkę informacji zwrotnej silnika (typ komunikacji 2)
4.2.3 Tryb prądu
Wyślij polecenie zapisu parametru trybu silnika (typ komunikacji 18) i ustaw parametr trybu pracy na 3 --->
Wyślij ramkę uruchomienia włączenia silnika (typ komunikacji 3) -->
Wyślij polecenie zapisu parametru trybu silnika (typ komunikacji 18) i ustaw parametr iq_ref jako wstępnie ustawione polecenie prądu
4.2.4 Tryb prędkości
Wyślij polecenie zapisu parametru trybu silnika (typ komunikacji 18) i ustaw parametr trybu pracy na 2 --->
Wyślij ramkę uruchomienia włączenia silnika (typ komunikacji 3) -->
Wyślij polecenie zapisu parametru trybu silnika (typ komunikacji 18) i ustaw parametr limit_cur dla wstępnie ustawionego polecenia maksymalnego prądu -->
Wyślij polecenie zapisu parametru trybu silnika (typ komunikacji 18), aby ustawić parametr spd_ref na wstępnie ustawione polecenie prędkości
4.2.5 Tryb lokalizacji
Wyślij polecenie zapisu parametru trybu silnika (typ komunikacji 18) i ustaw parametr trybu pracy na 1 -->
Wyślij ramkę uruchomienia włączenia silnika (typ komunikacji 3) -->
Wyślij polecenie zapisu parametru trybu silnika (typ komunikacji 18) i ustaw parametr limit_spd na polecenie maksymalnej prędkości wstępnie ustawionej -->
Wyślij polecenie zapisu parametru trybu silnika (typ komunikacji 18), aby ustawić parametr loc_ref na polecenie pozycji wstępnie ustawionej
4.2.6 Zatrzymanie działania
Wyślij ramkę zatrzymania silnika (typ komunikacji 4)

Biblioteka CyberGear dla M5 stack

https://github.com/project-sternbergia/cybergear_m5/tree/main

cybergear_m5

Biblioteka M5 stack dla cybergear
"Pamiętaj, z wielką moment obrotowy przychodzi wielka odpowiedzialność."

Obsługiwany framework

  • Arduino dla ESP32

Obsługiwane urządzenie (ESP32)

  • M5Stack Basic V2.7

Komponenty H/W (MCP2515)

Komponenty H/W (ESP32 + PWRCAN)

Komponenty H/W (ESP32 + jednostka transceivera CAN)

Jak korzystać z Official GUI narzędzie

To oprogramowanie wymaga konkretnego modułu CAN do USB. Oficjalna dokumentacja zaleca moduł USB do CAN firmy YourCee, który obsługuje protokół szeregowy z nagłówkiem ramki 41 54 i końcem ramki 0D 0A, ale nie jest on łatwo dostępny, więc poszukaliśmy alternatywy na Aliexpress. ※ Należy zauważyć, że nie będzie to działać z ogólnymi modułami.
Testowano (do odniesienia):

Zalecane kable z wstępnie zaciskanymi końcówkami

  • Kabel XT30(2+2)

Jak uruchom próbka

Arduino IDE

  • Klonuj MCP_CAN_LIB i cygergear_m5 do katalogu biblioteki Arduino.
  • cd ~/Arduino/libraries
  • git clone https://github.com/coryjfowler/MCP_CAN_lib.git
  • git clone https://github.com/Locoduino/RingBuffer.git
  • git clone git@github.com:project-sternbergia/arduino-CAN.git
  • git clone https://github.com/project-sternbergia/cybergear_m5.git
  • Umieść ten plik w tym samym folderze co control_mode_example.ino (dla Arduino IDE) Jeśli chcesz używać biblioteki ESP32_CAN, proszę zakomentuj te linie.
  • Zbuduj i zapisz oprogramowanie układowe do M5Stack

Przykładowy kod

control_mode_example.ino

Sprawdź zachowanie cybergear za pomocą M5 stack.
  • Środkowy przycisk - Zmień tryb sterowania (tryb pozycji -> tryb prędkości -> tryb prądu)
  • Prawy przycisk - Zwiększ wartość sterowania
  • Lewy przycisk - zmniejsz wartość sterowania

cybergear_bilateral.ino

Ten przykład używa dwóch cybergearów dla lidera i naśladowcy. Przed przetestowaniem tego przykładu, proszę zmienić identyfikator cybergeara w następujący sposób. Następnie napisz cybergear_m5/przykłady/cybergear_bilateral.ino do m5 stack w całym Arduino IDE.
  • lider cybergear : 0x7F
  • cyberwyposażenie obserwującego : 0x7E

Polecane artykuły

 

Zostaw komentarz

Twój adres e-mail nie będzie opublikowany. Wymagane pola są oznaczone *

Zarejestruj się do naszego newslettera

Otrzymuj najnowsze informacje o naszych produktach i ofertach specjalnych.