Zakres materiału:

  1. biblioteki arduino – link
  2. interfejs komunikacyjny UART – biblioteka Serial
  3. biblioteka do LCD – LiquidCrystal
  4. przetwornik analogowo-cyfrowy – biblioteka Analog
  5. kody ASCI (“ENTER” – Carriage Return) – link

Pytania wstępne:

  • jak działa interfejs komunikacyjny UART? Jakie parametry transmisji należy ustawić w urządzeniu? jakie są potrzebne linie do transmisji?
  • jak działa wyświetlacz LCD? Co oznacza, że ma rozmiar 2×16?

 

 

Zadanie 0:

 

Uruchomić wyświetlacz LCD z przykładowym kodem znajdującym się powyżej.

Następnie napisać kod programu, który wyświetli  imię/imiona autorów w pierwszej linii.

W drugiej linii wyświetlacza zaprogramować funkcję licznika, który liczy od 0-16.

Zadanie 1 (ocena 3):

Jak działa interfejs komunikacyjny UART? Jakie parametry transmisji należy ustawić w urządzeniu? jakie są potrzebne linie do transmisji?

Wykorzystać bibliotekę Serial i wysłać na terminal w Arduino napis: “Hello World!!! i”, gdzie i to licznik, jego wartość ulega zwiększeniu, co 1 sekundę.

Odebrać znak z terminala – ‘a’, który włączy diodę LED, ‘b’-wyłączy diodę LED.

Zadanie 2 (ocena 4):

Odebrać z terminala znaki i zrobić na ich podstawie menu z podprogramami:

  • ‘a’ – program wysyła na terminal napis “Hello world”
  • ‘b’ -włącza diodę LED, ponowne wysłanie znaku wyłączy diodę LED1
  • ‘c’ – program prosi o podanie roku urodzenia osoby z terminala, po wpisaniu roku, następuje obliczenie ile dana osoba ma lat i wyświetlenie tej informacji na terminalu
  • ‘d’ – uruchamia program działający w tle, mruga dioda LED2 z częstotliwością 1Hz, ponowne wysłanie znaku wyłączy program
  • ‘?’ – wyświetla możliwe opcje z menu terminalu

wszystkie opcje z menu po wybraniu, wyświetlają na terminalu odpowiednie komunikaty.

Zadanie 3 (ocena 4.5):

Potencjometr należy podłączyć do wejść analogowych (Ax) przy mikrokontrolerze i do potencjometru – złącze “Pot_1”.

Dodać kolejną opcję:

  • ‘e’ – dokonuje pojedynczego pomiaru analogowego na potencjometrze A_POT1-podłączyć do A0, wyświetla wartość w V na terminalu
  • ‘f’ – dokonuje cyklicznego pomiaru (częstotliwość 1 Hz) na kanale A0, wciśnięcie ‘x’ kończy operację i wraca do menu

sprawdzić opcję rysowania wykresów w oprogramowaniu Arduino z trybem ‘f’. Do przygotowania wykresów należy wykorzystać wbudowaną w środowisko Arduino funkcję “Kreślarka”.

Zadanie 4 (ocena 5):

dla opcji z menu ‘c’,’e’, ‘f’ odpowiednie informacje są wyświetlane równocześnie na wyświetlaczu LCD. Np. Opcja ‘c’ wypisuje po dokonaniu obliczeń: “Twój wiek to: 24lata”, opcja ‘f’ wyświetla na LCD aktualne napięcie w formacie “Napięcie: 4.56V”

 

Wszystkie funkcje powinny działać równocześnie (bez blokowania programu na długich opóźnieniach).

Warto wykorzystać funkcję millis() i tworzyć opóźnienia w formie warunków.

 

 

 

 

 

 

Zakres laboratorium 2017-2021 (nie aktualne)

Zajęcia stacjonarne:

Zakres laboratorium:
  1. Przetwornik A/D
  2. Timer – generator sygnału PWM (link, link2)
  3. Regulator dwustawny (link)
  4. Regulator dwustawny z histerezą
  5. Regulator trójstawny
  6. Regulator PID(link)

 

Przed wysłaniem programu należy sprawdzić jego działanie dla wszystkich wykonanych regulatorów i w każdym zakresie ustawienia potencjometrów.

Czy program poprawnie reaguje na wartości ujemne itd.

Zastanowić się nad przykładami urządzeń, w jakich występują zaprezentowane regulatory, potrafić wymienić minimum 3 urządzenia dla każdego regulatora.

Zadanie 1 – ocena 3

Program realizujący funkcję woltomierza:

  • podłączyć LCD, potencjometr (kanał A0) do mikrokontrolera
  • podłączyć elementy i napisać program, gdzie mikrokontroler wykorzystuje przetwornik A/D do pomiaru napięcia i  wyświetla je na wyświetlaczu LCD
  • w pierwszej linii LCD wyświetlana jest wartość mierzonego napięcia w woltach i wartość od 0-100, proporcjonalnie odpowiadająca mierzonemu napięciu, 0V to 0, 2,5V to 50 itd.
Zadanie 2 – ocena 4

Program realizujący funkcję regulatora dwupołożeniowego bez histerezy i z histerezą oraz regulatora trójpołożeniowego:

  • do programu z zadania 1 dodajemy:
    • podłączyć 4 diody z linijki diodowej i nazwać je L1, L2,L3A i L3B
  • tworzymy 3 funkcje, jedna funkcja to jeden regulator, funkcja przyjmuje parametr (uint8_t wartośćZadana, uint8_t wartoscRzeczywista)
  • zadaniem każdej funkcji jest realizacja następującego działania:
    • regulator dwupołożeniowy – realizuję działanie regulatora dwustanowego i wyświetla swoje stany na diodzie L1
    • regulator dwupołożeniowy z histerezą – realizuję działanie regulatora dwustanowego z histerezą i wyświetla swoje stany na diodzie L2, histerezę ustawić na 0,5V
    • regulator trójpołożeniowego – realizuję działanie regulatora trójpołożeniowego i wyświetla swoje stany na diodach L3A i L3B
  • wartość zadana to wartość stała (ustawić połowę zakresu pomiarowego), a wartość rzeczywista to napięcie z potencjometru,
  • jak działają poszczególne regulatory, jakie są ich wady i zalety?
Zadanie 3 – ocena 4,5

Do programu z zadania 2 dodajemy regulator PID:

  • dodajemy funkcję, realizującą zdanie regulatora PID – przyjmuje takie same parametry jak pozostałe funkcje regulatorów
    • w obecnym zadaniu działanie regulatora PID ograniczamy tylko do członu “P”,
    • wyliczamy uchyb regulacji,
    • uchyb przeliczamy przez współczynnik członu proporcjonalnego “Kp” i otrzymujemy wartość sterującą,
    • wartość sterująca powinna być w zakresie 0-100, gdzie 50 to gdy uchyb wynosi 0 a pozostałe wartości są proporcjonalne i wypełniają cały zakres sterowania,
    • wartość wyświetlamy na  wyświetlaczu LCD w postaci: MOC:xxx%
Zadanie 4 – ocena 5

Do programu z zadania 3 dodajemy wyjście PWM ustawiane przez regulator PID:

  • należy ustawić Timer1 do pracy w trybie PWM, należy wybrać odpowiedni tryb i skonfigurować układ licznikowy,
  • funkcja PID z zdania 3 powinna sterować wypełnieniem sygnału PWM w zakresie 0-100,
  • podłączyć do wyprowadzenia mikrokontrolera (tam gdzie będzie generowany sygnał PWM) miernik/oscyloskop – zapytać prowadzącego zajęcia o sprzęt

 

 

 

Zajęcia zdalne:
Dodatkowe materiały:
  1. Laboratorium 1.1
  2. Laboratorium 1.2
Podłączyć:
  • 8 x dioda LED do portu D, wykorzystać linijkę diodową (LedBar)
  • podłączyć klawiaturę do portu C (KeyPad) – klawiaturę należy zmodyfikować zgodnie z rysunkiem poniżej (ustawiamy zgodnie z parametrami po lewej stronie):
Zadania na symulatorze:
  1. napisać funkcję setLED(uint8_t led,uint8_t stan), gdzie led to numer diody od 1-8, a stan 1-dioda świeci 0 – dioda nie świeci,
  2. napisać funkcję getButton(), która zwraca numer przyciśniętego przycisku na klawiaturze z zakresu 1-12, oraz numer 13-16 dla dodatkowych przycisków. Informacje o obsłudze klawiatury matrycowej można znaleźć w zadaniu 4 z laboratorium 1.2,
  3. stworzyć program (wykorzystując stworzone funkcje), który po wciśnięciu przycisku 1-8 (z klawiatury spowoduje zaświecenie odpowiedniej diody), ponowne przyciśnięcie przycisku wyłączy diodę, dodatkowo “*” włącza wszystkie diody, “#” wyłącza wszystkie diod led.

 

Zaliczenie:
  1. kod programu i plik symulacji wysłać przez e-portal w odpowiednim terminie,
  2. zaprezentować działanie programu prowadzącemu.

 

Dodatkowe materiały:
  1. Laboratorium 1.1
  2. Laboratorium 1.2
Zadania na symulatorze:
  1. podłączyć klawiaturę do portu C (KeyPad) i zmodyfikować zgodnie z rysunkiem klawiatury:
  2. podłączyć wyświetlacz LCD według rysunku z paczki (pliki) i sprawdzić działanie przykładowego programu (po uruchomieniu w pierwszej linii LCD będą wyświetlać się kolejne cyfry),
  3. stworzyć program realizujący obsługę kalkulatora, umożliwiającego wprowadzanie liczb od 0-999, wykonującego działania dodawanie, odejmowanie, mnożenie oraz kasowanie obliczeń.

 

Zaliczenie:
  1. kod programu i plik symulacji wysłać przez e-portal w odpowiednim terminie,
  2. zaprezentować działanie programu prowadzącemu.