Opis stanowiska układy sterowania za pomoc± mikrokontroler


  1. układY sterowania za pomocą mikrokontrolera

    1. Schemat blokowy

W stanowisku laboratoryjnym, można wyróżnić poszczególne bloki: blok mikrokontrolera, klawiaturę, wyświetlacz, blok sterowania silnikiem oraz silnik.

Na rysunku 1 przedstawiono schemat blokowy układu.

0x08 graphic

Rys. 1. Schemat blokowy układu sterowania

    1. Schematy elektryczne poszczególnych bloków układu

      1. Schemat elektryczny zasilacza do układu

Na rysunku 2 przedstawiono schemat elektryczny zasilacza.

Zasilacz stabilizowany dla układu dostarcza dwóch napięć: +5V do zasilania układu scalonego mikroprocesora oraz +12V do zasilania uzwojeń silnika oraz przetwornika cyfrowo-analogowego. Zasilacz został oparty na wykorzystaniu stabilizatorów scalonych 7805 oraz 7812.

0x01 graphic

Rys. 2. Schemat zasilacza stabilizowanego

      1. Schemat elektryczny układu

Na rysunku 3 przedstawiono schemat elektryczny układu sterowania silnikiem krokowym oraz dla sterowania innymi elementami (silnikiem prądu stałego, diodami świecącymi, przetwornikiem dźwiękowym itd.). Wyróżnione na nim zostały bloki: mikroprocesora oraz układy wejścia wyjścia.

0x01 graphic

Rys. 3 Schemat głównego układu mikrokontrolera

0x01 graphic

Rys. 4. Zdjęcie płytki sterownika wraz zamontowanymi elementami

    1. Opis zastosowanego mikroprocesora jednoukładowego ATMEL 8535

      1. Języki programowania mikroprocesorów

Program jest to ciąg instrukcji danego procesora wykonywanych jeden po drugim w określonej przez programistę kolejności. Ciąg ten zapisany w formie symbolicznej, czyli z użyciem symbolicznych nazw instrukcji stworzony przez programistę nazywa się programem źródłowym. Ten sam program przetworzony przez kompilator do postaci kodów dla mikroprocesora nazywamy programem binarnym lub programem wykonywalnym. Ten podział spowodowany jest tym, że mikrokontrolery nie mogą wykonywać programów źródłowych, ponieważ oczekują one ciągu zer i jedynek będących kodami instrukcji. Z drugiej strony człowiek nie może poruszać się w programie binarnym, ponieważ jest on dla niego kompletnie nieczytelny. Stosowany do przetwarzania z zapisu źródłowego na postać binarną program jest kompilatorem, czyli programem tłumaczącym jedną postać na drugą. Dla uniknięcia problemów z interpretacją zapisów w programach stworzony jest specjalny język programowania. Takim językiem jest asembler (jako podstawowy i elementarny język programowania). Oprócz asemblera są stosowane inne języki programowania, wśród których duża popularnością cieszy się język C, natomiast wśród elektroników przeważa prostszy i wygodniejszy do zastosowania język BASCOM.

Język programowania należy uważać za sformalizowany system reguł służących do opisu czynności, jakie ma wykonać program. Sformalizowanie oznacza jednoznaczne określenie składni języka i zdefiniowanie pewnego zbioru słów (w sensie wyrazów) o ściśle określonym znaczeniu.

W programie używa się symbolicznych nazw instrukcji, wskazuje się poprzez nazwy używane zmienne, miejsca w programie. Każda nazwa (nazwa instrukcji, nazwa zmiennej) występująca w programie musi być kompilatorowi nazwą znaną (przykładowo wszystkie nazwy zdefiniowane w opisie języka). Wprowadzenie przez programistę nowych nazw jest związane z jednoznacznym określeniem jej znaczenia. W pewnych sytuacjach użycie nowej nazwy musi być poprzedzone jej definicją, która informuje kompilator o jej znaczeniu (przykładem mogą być nazwy zdefiniowane dyrektywami .equ, .def ). W wielu przypadkach dopuszcza się używanie nowych nazw bez ich wcześniejszego określenia (jak nazw etykiet jako miejsc w programie), które muszą być określone w obrębie programu. Kompilator po napotkaniu końca programu źródłowego sprawdzi, czy wszystkie użyte w programie nazwy są jednoznacznie określone. Jednoznaczność oznacza, że nie może być przykładowo w programie umieszczona jakaś etykieta w dwóch różnych miejscach.

Proces kompilacji (tłumaczenia z przykładowo języka asemblera na postać akceptowaną przez mikrokontrolery) może przebiegać w różny sposób (jest kilka programów różnych producentów będących kompilatorem języka asembler). Kompilator dostarczony przez firmę ATMEL jest programem, który tłumaczy i linkuje program (linkowanie programu oznacza określenie adresów wszystkich elementów występujących w programie).

Język C został napisany przez B. Kernighan'a i D. Ritchie'go. Początkowo język ten był przeznaczony do tworzenia oprogramowania systemowego (przy jego pomocy został napisany system operacyjny UNIX). W miarę upływu czasu stał się językiem ogólnego przeznaczenia.

Pierwsze wersje systemu UNIX były rozpowszechniane w szkołach wyższych wraz z pełnym kodem źródłowym napisanym w języku C. Dlatego język ten dość szybko stał się bardzo popularny. Aby usystematyzować korzystanie z tego języka stworzono amerykański standard tego języka - ANSI C. Był on znacznie rozszerzony w stosunku do wersji Kernighan'a i Ritchie'go. W latach osiemdziesiątych powstały kolejne roszerzenia języka C - umożliwiające programowanie obiektowe. Ich autorem był Bjarne Stroustrup. Swój język nazwał C++ - wskazując, że jest to lepsze C. Również ta wersja doczekała się w krótkim czasie oficjalnego standardu (ANSI).

Dla procesorów z rodziny Atmel dostępne są kompilatory pozwalające na pisanie programów w językach C oraz C++. Producent udostępnia również na swoich stronach internetowych swoja wersję takiego kompilatora.

W celu ułatwienia elektronikom pisania programów dla mikroprocesorów, którzy niekoniecznie znają asembler, lub języki C czy C++ firma MCS Electronics stworzyła szereg programów ułatwiających programowanie.

Jednym z nich jest BASCOM-AVR. Jego podstawowymi zaletami są:

BASCOM-AVR w dużej mierze przyczynił się do rozpropagowania mikroprocesorów jednoukładowych poprzez znaczne ułatwienie ich programowania. Dzięki niemu programowanie mikroprocesorów stało się szybsze i łatwiejsze.

Do wad tego środowiska należy pogorszenie się wydajności kodu - szybkość działania procesorów jest uzależniona od optymalizacji kodu programu, a w przeciwieństwie do programowania w asemblerze, programista ma ograniczony wpływ na kod wynikowy wyprodukowany przez BASCOM.

Inną wadą z jaką należy się liczyć, jest większy rozmiar kodu wynikowego generowanego przez kompilator BASCOM w porównaniu do asemblera, czy C.[4]

      1. Charakterystyka i struktura wewnętrzna układu AT90S8535

AT90S8535 to 8-bitowy mikrokontroler wyposażony w 8KB pamięci Flash. Układ ten jest układem CMOS o niskim poziomie poboru prądu.

Poprzez wykonywanie instrukcji o dużych możliwościach w jednym cyklu zegarowym AT90S8535 osiąga wydajność zbliżona do 1 MIPS, dzięki czemu pozwala projektować bardzo szybkie kontrolery przy niskiej konsumpcji energii.

Głównymi jego cechami są:

Na schemacie z rysunku 6 przedstawiono budowę wewnętrzną mikrokontrolera AVR AT90S8535.

Wspólną cechą rodziny mikrokontrolerów AVR jest połączenie bogatego zestawu instrukcji z 32 rejestrami ogólnego zastosowania. Wszystkie 32 rejestry są połączone bezpośrednio z jednostką arytmetyczno-logiczną (ALU). Dzięki temu dwa niezależne rejestry mogą zostać użyte podczas jednej instrukcji wykonywanej w jednym cyklu zegarowym.

W wyniku zastosowania takiej architektury kod sterujący może być tak napisany, aby być bardziej efektywnym, osiągając wydajność do 10 razy lepszą niż konwencjonalne mikrokontrolery CISC.

Mikrokontroler ten może pracować w 3 różnych trybach pracy oszczędzających energię, które mogą zostać aktywowane z poziomu kodu obsługującego.

Wbudowana pamięć ISP Flash pozwala, aby pamięć z programem była przeprogramowana w czasie działania układu poprzez szeregowy interface SPI.

0x01 graphic

Rys. 6. Struktura wewnętrzna układu ATMEL 8535

Poprzez połączenie 8 bitowego procesora RISC z wbudowaną programowalną pamięcią Flash w jeden układ scalony ATM90S8535 jest wszechstronnym i tanim układem do konstruowania mikroprocesorowych aplikacji kontrolnych. AVR AT90S8535 jest wspierany przez takie narzędzia wspomagające projektowanie jak: kompilatory języka, debuggery, symulatory, emulatory oraz układy uruchomieniowe. [6]

    1. Schemat połączeń mikroprocesora z wyświetlaczem i klawiaturą

      1. Klawiatura

W układzie zastosowano uniwersalną klawiaturę membranową STD44-08, posiadającą połączenia klawiszy w układzie matrycy X-Y. Wygląd klawiatury przedstawiono na rysunku 7. Klawiatura została podłączona do procesora za pomocą układu przedstawionego na rysunku 8.

0x01 graphic

Rys. 7. Wygląd klawiatury

0x01 graphic

Rys. 8. Sposób podłączenia klawiatury do mikroprocesora

Dzięki takiemu połączeniu klawiszy oraz funkcji specjalnych środowiska BAS-COM jest możliwa obsługa 16-klawiszowej klawiatury za pomocą 8-miu pinów wejściowych jednego z portów procesora. W modelu zastosowano gotową klawiaturę membranową, która jest łatwa w montażu i odporna na uszkodzenia oraz zabrudzenia. W programie następuję konwersja kodu otrzymanego z funkcji systemowej na odpowiadający kod klawisza, który następnie jest używany w programie w celu określenia, który z klawiszy został naciśnięty.

      1. Wyświetlacz

Model jest wyposażony w wyświetlacz graficzny LCD firmy WINCOM, model WC1602D1. Jest to wyświetlacz LCD z podświetleniem wewnętrznym, mogący wyświetlić 32 znaki w 2 poziomych liniach. Parametry wyświetlacza zgodnie z dokumentacją producenta zamieszczono na rysunku 9.

0x01 graphic

Rys. 9 Parametry wyświetlacza LCD

Wyświetlacz ten jest podłączony do następujących wejść portu B mikroprocesora:

Db4 - B.7, Db5 - B.6, Db6 - B.5, Db7 - B.4, E - B.2, Rs - B.3.

Jasność podświetlenia wyświetlacza jest sterowana za pomącą dzielnika napięciowego zrealizowanego na potencjometrze montażowym R2 (rysunek 3).

    1. Przetwornik cyfrowo-analogowy sterowany za pomocą magistrali I2C TDA8444

      1. Ogólna charakterystyka magistrali I2C

Standard ten został opracowany przez firmę Philips. Jest stosowany w urządzeniach powszechnego użytku, zwłaszcza audio-video, telekomunikacji i systemach elektroniki przemysłowej. Transmisja danych odbywa się szeregowo, w dwóch kierunkach, przy użyciu dwóch linii. Jedną z nich SCL (serial clock line) przesyła się impulsy zegarowe synchronizujące transmisję, natomiast drugą SDA (serial data line) transmituje się w dwóch kierunkach dane.

W transmisji interfejsem I2C uczestniczy układ nadrzędny (master) oraz jeden lub więcej układów podrzędnych (slave). Transmisja bloku danych jest inicjowana wówczas, gdy stan linii SDA zmieni się z wysokiego na niski, podczas gdy linia zegarowa SCL znajduje się w stanie wysokim. Sytuacja taka jest nazywana warunkiem startowym - Start. Koniec transmisji ma miejsce wtedy, gdy linia SDA zmieni stan z niskiego na wysoki, podczas gdy linia zegara jest w stanie wysokim. Jest to warunek nazywany Stop [11].

      1. Opis układu TDA8444

Zintegrowany układ scalony TDA8444 zawiera osiem programowalnych 6-bitowych przetworników cyfrowo-analogowych. Sterowanie wyjściami przetworników odbywa się poprzez magistralę I2C. Każdy z przetworników może zostać oddzielnie zaprogramowany przez 6-bitowe słowo sterujące zawierające wartość napięcia wyjściowego. Wysokość napięcia wyjściowego jest określana za pomocą napięcia sterującego VMAX. Rozdzielczość przetwornika to 1/64 VMAX. Po włączeniu wszystkie przetworniki są ustawione na najniższą wartość (0). Na rysunku 10 przedstawiono schemat blokowy układu TDA8444. [10]

0x01 graphic

Rys.10 Schemat blokowy układu TDA8444 [10]

      1. Opis zastosowania układu TDA8444

Układ TDA8444 został zastosowany w stanowisku w celu umożliwienia sterowania napięciowego tranzystorami wyjściowymi, które zasilają uzwojenia silnika odpowiednimi wartościami napięcia sterowania. Takie rozwiązanie umożliwiło realizację sterowania mikrokrokowego, w którym potrzebne jest stopniowe zwiększanie i zmniejszanie napięcia zasilania uzwojenia silnika.

W modelu wykorzystywane są 4 z 8 przetworników układu. Są to odpowiednio: DAC0, DAC1, DAC2 oraz DAC3. Ustawienie odpowiedniej wartości napięcia wyjściowego następuje poprzez wysłanie odpowiednio przygotowanego rozkazu pod odpowiedni adres szyny I2C. Adres układu został sprzętowo ustawiony na 64 - wartość ta może zostać zmieniona w części konfiguracyjnej programu kontrolnego.

      1. Schemat bloku sterowania silnikiem krokowym

Poniżej przedstawiono schemat elektryczny modułu sterowania silnikiem. Składa się on z przetwornika TDA8444 komunikującego się z procesorem za pomocą magistrali I2C, czterech tranzystorów npn - po jednym na każde uzwojenie silnika oraz czterech diod zabezpieczających złącze (KE) kolektor-emiter tranzystorów przed przepięciami. Cześć układu zawierającą blok sterowanie silnika przedstawiono na rysunku 11.

0x01 graphic

Rys. 11. Blok sterowania silnikiem krokowym

      1. Tabela wartości napięć sterujących uzyskiwanych za pomocą przetwornika

Przetwornik TDA8444 jest przetwornikiem 6-bitowym, to oznacza ze pozwala na sterowanie analogowym sygnałem wyjściowym z rozdzielczością 1/64 napięcia odniesienia. W tabeli 1 zamieszczono wartości napięć możliwe do uzyskania na uzwojeniach silnika - za stopniem tranzystorowym.

Wartość ustawienia dla przetwornika

Napięcie wyjściowe
[V]

Wartość ustawienia dla przetwornika

Napięcie wyjściowe
[V]

0

0

32

6,4

1

4

33

6,6

2

0,5

34

6,8

3

0,63

35

7

4

0,8

36

7,22

5

0,97

37

7,44

6

1,16

38

7,64

7

1,36

39

7,86

8

1,55

40

8

9

1,75

41

8,23

10

1,97

42

8,37

11

2,16

43

8,67

12

2,37

44

8,85

13

2,52

45

9,04

14

2,79

46

9,23

15

2,95

47

9,44

16

3,18

48

9,64

17

3,38

49

9,87

18

3,58

50

10,06

19

3,78

51

10,27

20

4

52

10,4

21

4,21

53

10,72

22

4,42

54

10,93

23

4,61

55

11,15

24

4,79

56

11,35

25

4,98

57

11,56

26

5,21

58

11,77

27

5,41

59

11,98

28

5,63

60

121,2

29

5,83

61

12,4

30

6,06

62

12,6

31

6,27

63

12,8

Tabela. 1. Wartości napięć uzyskanych za pomocą zastosowanego przetwornika

Dzięki takiej rozdzielczości przetwornika możliwe było zrealizowanie zmian napięcia sterującego w przebiegu podzielonego na 8 poziomów napięć. Dla celów badania układu i dopasowania najlepszego sposobu sterowania w przypadku sterowania mikrokrokowego przygotowano trzy przebiegi sterujące - sinusoidę, przebieg „trójkątny” oraz przebieg „wypełniony”.

Na rysunku 12 zamieszczono wykres pokazujący kształt wszystkich trzech rodzajów przebiegów użytych podczas badania układu.

0x01 graphic

Rys. 12. Wykres zadawanych kształtów przebiegów sterujących użytych podczas badania modelu a) sinusoidalnego, b) „trójkątnego”, c) „wypełnionego”

    1. Parametry silnika krokowego.

Zastosowano silnik firmy Japan Servo, model KP39HM2. Na rysunku 13 przedstawiono notę katalogową producenta tego silnika, z podanymi parametrami silnika. Na rysunku 14 przedstawiono charakterystykę momentu obrotowego w zależności od częstotliwości taktowania przy stałym napięciu wymuszenia, a na rysunku 15 przy stałym prądzie zasilającym.

0x01 graphic

Rys. 13. Nota katalogowa producenta dla zastosowanego silnika [13]

0x01 graphic

Rys. 14. Charakterystyka momentu obrotowego silnika przy stałym napięciu zasilającym [13]


0x01 graphic

Rys. 15. Charakterystyka momentu obrotowego silnika przy stałym prądzie zasilającym [13]

    1. Oprogramowanie sterownika silnika krokowego

Oprogramowanie sterownika zostało wykonane w języku programowania BASCOM. Program sterujący zapewnia obsługę wyświetlacza, klawiatury, przetwornika cyfrowo-analogowego poprzez magistrale I2C oraz diod sygnalizacyjnych. Program został opatrzony komentarzami, pozwalającymi na łatwiejsze zrozumienie poszczególnych sekwencji rozkazów.

      1. Obsługa klawiatury i wyświetlacza

Obsługa klawiatury oraz wyświetlacza jest zrealizowana z użyciem wbudowanych komend BASCOM. Takie rozwiązanie znacznie upraszcza kod programu oraz poprawia jego czytelność.

Do obsługi wyświetlacza wykorzystane zostały komendy ConfigLcd - konfiguruje podpięty wyświetlacz, Lcd - wyświetla podany tekst lub grafikę, Upperline, Lowerline - służy do pozycjonowania kursora.

Klawiatura natomiast jest oprogramowana za pomocą następujących komend: Config Kbd - konfiguruje który z portów został przeznaczony na obsługę klawiatury, Getkbd() - odczytuje kod aktualnie wciśniętego klawisza. Dodatkowo dla ułatwienia oprogramowania obsługi klawiatury zastosowano tablicę z kodami odpowiadającymi wciśniętym klawiszom. Dzięki temu obliczanie liczb wprowadzonych za pomocą klawiatury jest bardzo łatwe.

      1. Sterowanie uzwojeniami silnika krokowego

Sterowanie uzwojeniami odbywa się poprzez wysłanie odpowiedniej komendy używając magistrali I2C do przetwornika cyfrowo-analogowego. Po otrzymaniu takiej komendy przetwornik ustawia odpowiednio swoje wyjścia analogowe sterując czterema tranzystorami wyjściowymi. Wartości napięć przesyłane do przetwornika są wybierane zgodnie z rodzajem sterowania z tablicy zawierającej kształt przebiegu sterującego. Tranzystory wyjściowe sterują napięciem na uzwojeniach silnika, w zależności od cyklu włączając je lub wyłączając.

Kierunek obrotu wirnika jest uzyskiwany za pomocą wyboru odpowiedniej sekwencji wartości napięć na uzwojeniach silnika.

      1. Wygląd modelu i opis rozmieszczenia elementów

Na zdjęciu przedstawiono wygląd stanowiska wraz z zaznaczonym rozmieszczeniem poszczególnych elementów.

0x01 graphic

0x01 graphic

Wygląd stanowiska

0x01 graphic

Opis elementów modelu:

  1. Silnik krokowy

  2. Opis parametrów silnika krokowego wraz z przykładową charakterystyką dla tej klasy silników krokowych

  3. Klawiatura

  4. Wyświetlacz

  5. Włącznik układu

  6. Przycisk resetujący układ

  7. Schemat układu

  8. Diody sygnalizujące załączenie tranzystorów

  9. Diody sygnalizujące załączenie uzwojeń silnika

  10. Złącze ISP pozwalające załadować program sterujący

  11. Układ sterownika

  12. Instrukcja obsługi

      1. Instrukcja użytkownika

W celu uruchomienia układu należy włączyć urządzenie do prądu, podłączyć wyprowadzenie z portu równoległego komputera do wejścia programującego układ, następnie załadować program sterujący.

Po załadowaniu programu należy zresetować układ używając przycisku reset. Wszelkie polecenia i wartości potrzebne do działania programu wprowadzane są za pomocą klawiatury podłączonej do układu. Zmiany w działaniu silnika są dokonywane na bieżąco.