Zakres laboratorium:
- Komunikacja po interfejsie UART
- Odbieranie danych na terminalu komputera – rysowanie wykresów
- Wysyłanie danych z terminala komputera
- Program do obliczania wieku
1. Komunikacja po interfejsie UART
Skonfigurować interfejs komunikacyjny UART:
- prędkość transmisji 19200bps
- rozmiar danych: 8 bitów
- bity parzystości: – brak
- bity stopu: 1
Wysłać napis “Hello World: 1” na terminal komputera. Napisy powinny być wysyłane co jedną sekundę, a licznik powinien być zwiększany o 1 przy każdym wysłaniu. Każdy wysłany napis powinien wyświetlić się od początku nowej linii terminala.
W celu podglądu wysyłanych danych na komputer należy uruchomić aplikację komunikującą się na wybranym porcie COM. W środowisku Arduino jest wbudowana taka funkcja “Narzędzia->Monitor portu szeregowego”. Pojawi się nowe okno terminala, gdzie należy ustawić parametry transmisji na zgodne z ustawionymi po stronie mikrokontrolera. Jeśli wszytsko zrobiliśmy poprawnie to w białym oknie powinien pojawiać się nasz wysyłany napis.
Interfejs UART na płytce Arduino Nano jest podłączony przez konwerter UART/USB do złącza USB. Tym samym konwerterem/złączem programujemy mikrokontroler, dlatego nie należy wykonywać żadnych dodatkowych podłączeń.
2. Odbieranie danych na terminalu komputera – rysowanie wykresów
Na podstawie zadania 4 z laboratorium 1.4 należy zaprezentować działania regulatora za pomocą wykresów rysowanych na komputerze PC.
Do przygotowania wykresów należy wykorzystać wbudowaną w środowisko Arduino funkcję “Kreślarka” .
Należy narysować (na jednym wykresie kilka przebiegów):
- przebieg napięcia z fotorezystora
- przebieg napięcia z potencjometru
- przebieg binarny przedstawiający działanie włącznika zmierzchowego
przeanalizować za pomocą wykresów działanie wyłącznika i histerezy. Zrobić zdjęcia ekranu i opisać punkty zadziałania w notatce z zajęć.
3. Wysyłanie danych z terminala komputera
Napisać program, który odbierze pojedyncze znaki wysyłane z terminala i wykona następujące operacje:
- odebrany znak ‘a’ – włączenie diody LED1 – wyświetli na terminalu komunikat “LED1 ON”
- odebrany znak ‘s’ – wyłączenie diody LED1 – wyświetli na terminalu komunikat “LED1 OFF”
- odebrany znak ‘d’ – sprawdzenie stanu pinu, gdzie podłączymy przycisk – komunikat o stanie przycisku należy wysłać na terminal
- odebrany znak ‘f’ – wyświetlamy ilość sekund od uruchomienia programu (licznik liczący sekundy powinien działać w tle programu)
4. Program do obliczania wieku
Napisać program, który po uruchomieniu poprosi użytkownika (wyśle odpowiedni komunikat na terminal komputera) o podanie roku urodzenia. Użytkownik wysyła za pomocą terminala rok swojego urodzenia. Program odbiera dane i oblicza wiek użytkownika, wysyła odpowiedź na terminal z odpowiednim komentarzem. Program powinien posiadać zabezpieczenia na błędne podanie roku urodzenia itd.
Jeśli użytkownik podany zły rok, to należy wyświetlić odpowiedni komunikat.
Program działa w sposób ciągły, po obliczeniu wieku, wyświetla ponownie komunikat z prośbą o podanie kolejnego roku.
Komentarz do obliczonego wieku:
- x to obliczony wiek, a “…” to miejsce na wymyślony komentarz, logiczne dokończenie komunikatu:
- jeśli wiek <18 – “Masz x lat”, ” …”,
- dla 18<=wieku < 25 – “Masz x lat”, ” …”,
- dla 25<=wieku < 65 – “Masz x lat”, ” …”,
- dla 65<=wieku – “Masz x lat”, ” …”,
Zakres laboratorium 2017-2021 (nie aktualne)
Zakres laboratorium:
Na zajęcia należy przynieść kątomierz.
Zadania do wykonania:
- Wejściówka
- Zadanie 2.1
- Zadanie 2.2
- Zadanie 2.3 – zadanie na ocenę 5,5
- Zadanie 3.1
1. Sygnał PWM
Przygotować informacje o sygnale PWM (wejściówka):
- co to jest sygnał PWM?
- do czego służy – wymienić 3 zastosowania
- narysować przebiegi sygnału PWM (sygnał o długości 3 okresów):
- urządzenie wyłączone
- urządzenie włączone na 50% mocy
- urządzenie włączone na 100% mocy
2. Serwo modelarskie – sterowanie
Podstawowe informacje o serwomechanizmach modelarskich można znaleźć na stronie: Link. Serwo modelarskie jest urządzeniem, któremu za pomocą sygnału nazywanego RC-PWM można zadać położenie ramienia, układ wewnętrzny serwa ustawia ramię odpowiednio do podanego sygnału. Sygnał sterujący jest to sygnał ciągły o częstotliwości 50Hz (długość pojedynczego impulsu to 20ms). Do sterowania wykorzystywane jest tylko część tego sygnału, ponieważ sterujący impuls posiada szerokość w zakresie 0,5-2,5ms (w zależności od serwa). Proces sterowania widać na poniższym rysunku:
Ustawienie pozycji skrajnej “+90” oznacza podanie sygnału o okresie 20ms ale długość stanu wysokiego to tylko 0,9ms. Położenie “-90” to podanie sygnału, w którym stan wysoki wynosi 2,4ms. Inne długości stanu wysokiego oznaczają inne pośrednie położenia.
Pierwsze kroki:
- podłączyć serwomechanizm do płytki EDU według poniższego schematu:
- przewód czarny/brązowy – podłączyć do GND
- przewód czerwony – podłączyć do +5V
- przewód żółty/biały – podłączyć do PD5
- podłączyć dwa przyciski do mikrokontrolera zgodnie z wcześniejszymi laboratoriami
- utworzyć projekt według szablonu i skopiować:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
int main() { //Ustawic wyprowadzenie OC1A jako wyjscie //Ustawienia rejestrow Time1 //Tabela 16.2-16.4 - Fast PWM - Clear OC1A... //Tabela 16.5 - Fast PWM - Top: ICR1 //Prescaler: clk/8 //Zapisac do rejestru ICR1, wartosc aby czestotliwosc sygnalu wynosila 50Hz ICR1 = 0; while (1) { //Ustawic pozycje -90 OCR1A = 0; _delay_ms(2000); //Ustawic pozycje 0 _delay_ms(2000); //Ustawic pozycje +90 _delay_ms(2000); //Ustawic pozycje 0 _delay_ms(2000); } } |
Zadanie 2.1
- serwo podłączone jest do nóżki PD5 posiadającą funkcję OC1A (wyjście Kanału A z Timer1), dzięki takiej konfiguracji na tym wyprowadzeniu można generować sprzętowo sygnały z wykorzystaniem Time1, skopiować powyższy kod programu i uzupełnić zgodnie z komentarzami
- w pętli while(1) – dopisać sterowanie (ustawianie wypełnienia/długości stanu wysokiego) zgodnie z komentarzami. Serwo powinno poruszać się według następującej sekwencji: -90, 0, +90, 0, …
Zadanie 2.2
Za pomocą dwóch podłączonych przycisków zrealizować następujące zadanie:
- Przycisk Up – zwiększa wychylenie serwomechanizmu
- Przycisk Down – zmniejsza wychylenie serwomechanizmu
Zadanie 2.3 – zadanie na ocenę 5,5
- podłączyć wyświetlacz LCD (jak podłączyć LCD) i wyświetlić wartość:
- aktualnie podawanego wypełnienia – szerokości impulsu w ms
- kąt aktualnego położenia serwomechanizmu – 0-180 st.
- zmieniać wartość przy pomocy przycisków i zrobić tabelkę, w której zostanie porównana wartość wypełnienia z kątem wychylenia, narysować wykres
Zagadnienia na przyszłe zajęcia:
- powtórzenie całego materiału
- RS232/UART – komunikacja z komputerem PC
3. Propozycja oceny – zaliczenie kursu
Warunki zaliczenia: Link
Zadanie 3.1
- przedstawienie propozycji oceny
- odpowiedź ustna