Servo controller Uniwersalny sterownik serwomechanizmów modelarskich. Zestawy uruchomieniowe www.evboards.eu 1
Servo controller umożliwia sterowanie do 16 serwomechanizmów analogowych przy pomocy komputera PC lub innego urządzenia posiadającego interfejs USB. Urządzenie pozwala na pozycjonowanie każdego z serwomechanizmów z dokładnością 16000 kroków oraz z regulowaną prędkością również z dokładnością 16000 kroków. Istnieje możliwość ustawienia prędkości dla wszystkich serwomechanizmów oraz dla każdego z osobna. Urządzenie jest wykonane w formie małego modułu elektronicznego do zabudowy. Szczególnie przydatne dla hobbystów zajmujących się modelarstwem lub robotyką. Pozwala na sterownie serwomechanizmami za pomocą komputera bez stosowania innych układów elektronicznych. Wystarczy jedynie podpiąć serwomechanizmy, zasilanie i przewód sterujący USB. Zalety Servo controller-a: Możliwość podłączenia do portu USB, szczególnie istotne w urządzeniach nie posiadających portu COM Proste podłączenie Złącza kołkowe do podłączenia serwomechanizmów Napięcie zasilania 4-8V DC Dioda LED sygnalizująca podłączenie zasilania Dioda LED sygnalizująca odebranie rozkazu sterującego Prosty protokół transmisji Małe wymiary oraz wygodne otwory montażowe pozwalają zabudować urządzenie w modelu lub robocie. Program testowy na komputer PC pozwala szybko sprawdzić działanie urządzenia oraz podejrzeć przesyłane do układu rozkazy Spis treści Wymiary urządzenia...2 Podłączenie zasilania...2 Podłączenie serwomechanizmów...4 Konfiguracja portu USB...4 Program testowy...5 Protokół transmisji...6 Wymiary urządzenia Płytka sterownika ma wymiary 45x60mm. Posiada 4 otwory montażowe przystosowane do śrub M3 (otwór o średnicy 3,2mm). Podłączenie zasilania Servo controller należy przyłączyć do źródła napięcia stałego o wartości odpowiedniej dla zastosowanych serwomechanizmów. Układ jest przystosowany do zasilania napięciami w zakresie 3V-8V. Napięcie należy podać na złącze śrubowe zaznaczone na poniższym rysunku. Przekrój przewodu należy dobrać adekwatnie do prądu pobieranego przez serwomechanizmy podłączone do sterownika. Zestawy uruchomieniowe www.evboards.eu 2
Na płytce umieszczone są dwie diody LED. Dioda zielona sygnalizuje obecność napięcia zasilającego, natomiast dioda czerwona zapala się na 50ms po odebraniu prawidłowego rozkazu sterującego. Zestawy uruchomieniowe www.evboards.eu 3
Podłączenie serwomechanizmów Serwomechanizmy podłączamy do złącza szpilkowego typu goldpin zaznaczonego na rysunku. Należy pamiętać o prawidłowej polaryzacji. Kolejność sygnałów w złączu jest następująca (licząc od wewnętrznej strony płytki) : 1 2 3 S + - Konfiguracja portu USB Przed uruchomieniem programu testowego należy podłączyć servo controller do portu USB komputera i po wykryciu przez system nowego urządzenia należy wskazać lokalizację plików ze sterownikiem do układu FTDI FT232R. Następnie należy sprawdzić jaki numer wirtualnego portu COM został przypisany do naszej płytki. W tym celu należy uruchomić zakładkę właściwości klikając prawym przyciskiem myszy na ikonę system. W zakładce sprzęt wybieramy Menadżer urządzeń i rozwijamy (klikając na ikonkę +) dostępne porty COM i LPT. Nasza płytka będzie widoczna pod nazwą USB Serial Port (Patrz poniższy rysunek) będzie także podany przypisany jej numer numer portu COM. Zestawy uruchomieniowe www.evboards.eu 4
Program testowy Do sterownika załączamy program testowy pozwalający szybko sprawdzić działanie sterownika oraz podejrzeć przesyłane do niego rozkazy. Dom programu dołączone są biblioteki runtime, które należy zainstalować w przypadku gdyby nie chciał się uruchomić sygnalizując brak jakiś plików. Po uruchomieniu program ma wygląd jak na poniższym rysunku. Następnie należy kliknąć na przycisk konfiguracja i wybrać port COM pod którym zlokalizowany jest nasz sterownik. Po kliknięciu na przycisk połącz następuje otwarcie portu i sprawdzenie czy sterownik faktycznie jest podłączony do danego portu. Jeśli nie wystąpiły błędy możemy już sterować położeniem każdego z 16-tu serwomechanizmów za pomocą podpisanych suwaków. Z lewej strony znajduje się okno gdzie możemy zobaczyć aktualne rozkazy przesyłane z i do sterownika. Zestawy uruchomieniowe www.evboards.eu 5
Protokół transmisji Urządzenie przyjmuje rozkazy i dane w postaci znaków z tablicy ASCII. Dane liczbowe są przesyłane w ich tekstowej reprezentacji, w notacji dziesiętnej. Każda komenda musi być zakończona znakiem \r - jego kod ASCII to 13(dec). Każda odpowiedź układu również jest zakończona znakiem \r. Suma kontrolna jest alternatywą rozłączną (XOR) wszystkich parametrów liczbowych. Układ odpowiada na każdą komendę jednym z komunikatów: Gdy komenda została prawidłowo wykonana. i urządzenie jest gotowe do przyjęcia kolejnej. +OK Gdy komenda została prawidłowo wykonana. -SER SyntaxError. Bład składni. Gdy zostało przekazana nie właściwa liczba parametrów. -UNC Unknown Command. Nie znana komenda. -CSE Chcecksumm Error. Gdy wystąpił błąd sumy kontrolnej. -TER Transmission Error. Gdy wystapił błąd komunikacji. Po włączeniu zasilania układ odpowiada: READY. [] - opcja <> - parametr Echo. Służy do sprawdzenia komunikacji z układem. E brak Terminal Echo. Włącza/wyłącza echo przesyłanych znaków do terminala. TE=<b> b = <0,1> - 0 oznacza wyłączenie echa, 1 - oznacza włączenie echa. Domyślnie b=0. Checksum. Włącza i wyłącza przesyłanie sumy kontrolnej. CHS=<b> b = <0,1> - 0 - oznacza wyłączenie kontroli sumy, 1 - oznacza włączenie. Domyślnie b=1. Version. Pyta o wersję urządzenia. VER
brak HW:<hwer> SW:<swer> hwer - wersja sprzętu. swer - wersja firmware. Przykład: VER HW:1.0 SW:1.2 Set Servo Position. Ustawia pozycję wybranego serwa. SSP=<d1>,<d2>[,<d3>] d1 = <0,15> - numer serwa. d2 = <0,16000> - pozycja. d3 = <0,16015>* - suma kontrolna. Przykład: 1. SSP=0,8000 Powoduje ustawienie serwa numer 0 w pozycji 8000. (kontrola sumy wyłączona). powoduje odpowiedź układu w postaci: 2. SSP=0,8000 Gdy kontrola sumy jest włączona sterownik oczekuje parametru d3. Podana komenda spowoduje odpowiedź: -SER co oznacza błąd składni. 3. SSP=0,8000,8000 Gdy kontrola sumy jest włączona podana komenda powoduje ustawienie serwa numer 0 w pozycji 125. Set All Positions. Ustawia pozycję wszystkich serw. SAP=<d1>,<d2>,...,<d16>[,<d17>]
d1 = <0,16000> - pozycja serwa nr 0. d2 = <0,16000> - pozycja serwa nr 1.... d16 = <0,16000> - pozycja serwa nr 16. d17 = <0,16383> - suma kontrolna. Przykład: 1. SAP=1000,2000,3000,4000,5000,6000,7000,8000,9000,8000,7000, 6000,5000,4000,3000,2000 Powoduje ustawienie serw w podanych pozycjach. (kontrola sumy wyłączona). powoduje odpowiedź układu w postaci: 2. SAP=1000,2000,3000,4000,5000,6000,7000,8000,9000,8000,7000, 6000,5000,4000,3000,2000 Gdy kontrola sumy jest włączona sterownik oczekuje parametru d17. Podana komenda spowoduje odpowiedź: -SER co oznacza błąd składni. 3. SAP=1000,2000,3000,4000,5000,6000,7000,8000,9000,8000,7000, 6000,5000,4000,3000,2000,8384 Gdy kontrola sumy jest włączona podana komenda powoduje ustawienie serw w podanych pozycjach. Set Servo with Speed Limit. Ustawia pozycję wybranego serwa. SSL=<d1>,<d2>,<d3>[,<d4>] d1 = <0,15> - numer serwa. d2 = <0,16000> - pozycja. d3 = <0,16000> - prędkość. Wartość 0 odpowiada wyłączeniu ograniczenia prędkości (prędkość maksymalna), pozostałe wartości wyrażone w krokach / cykl** d4 = <0,16015>* - suma kontrolna. Przykład: 1. SSL=0,8000,100 Powoduje ustawienie serwa numer 0 w pozycji 8000, z prędkością 100 kroków na cykl. Podana prędkość jest zapamiętywana jako maksymalna dla tego serwa i obowiązuje również przy przestawianiu tego serwa komenda nie wprowadzającą ograniczenia prędkości (SSP lub SAP). (kontrola sumy wyłączona). powoduje odpowiedź układu w postaci:
2. SSL=0,8000,100 Gdy kontrola sumy jest włączona sterownik oczekuje parametru d3. Podana komenda spowoduje odpowiedź: -SER co oznacza błąd składni. 3. SSL=0,8000,100,7972 Gdy kontrola sumy jest włączona podana komenda powoduje ustawienie serwa numer 0 w pozycji 8000. Set All speed Limits. Ustawia ograniczenia prędkości wszystkich serw. SAL=<d1>,<d2>,...,<d16>[,<d17>] d1 = <0,16000> - prędkość serwa nr 0. d2 = <0,16000> - prędkość serwa nr 1.... d16 = <0,16000> - prędkość serwa nr 16. d17 = <0,16383> - suma kontrolna. Przykład: 1. SAL=1000,2000,3000,4000,5000,6000,7000,8000,9000,8000,7000, 6000,5000,4000,3000,2000 Powoduje ustawienie ograniczeń prędkości serw według podanych wartości. 2. SAL=1000,2000,3000,4000,5000,6000,7000,8000,9000,8000,7000, 6000,5000,4000,3000,2000 Gdy kontrola sumy jest włączona sterownik oczekuje parametru d17. Podana komenda spowoduje odpowiedź: -SER co oznacza błąd składni. 3. SAL=1000,2000,3000,4000,5000,6000,7000,8000,9000,8000,7000, 6000,5000,4000,3000,2000,8384 Gdy kontrola sumy jest włączona podana komenda powoduje ustawienie ograniczeń prędkości serw według podanych wartości.
OBJAŚNIENIA * Podany zakres jest uzależniony od zakresu danych objętych podaną sumą kontrolną ** Jeden cykl trwa nieco ponad 2,5ms. Sterownik generuje impulsy o czasie trwania od 0.5ms dla pozycji 0 do 2.5ms dla pozycji 16000 DODATEK Przykład funkcji generującej sumę kontrolną, wykorzystaną w komunikacji ze sterownikiem: unsigned short int CSEval(unsigned short int * data, unsigned int lenght) { unsigned short int csum=0; for(unsigned int k=0;k<lenght;k++) csum ^= *(data++); return csum; }