piątek, 7 listopada 2014

Zdalnie sterowany samochód - kod RC5




    Cel i założenia projektowe

Celem projektu jest opracowanie i praktyczne wykonanie sterownika zdalnie sterowanego pojazdu spełniającego następujące założenia:
·       Wykonany pojazd powinien być sterowany zdalnie przy użyciu wybranego sposobu transmisji danych na odległość.
·  Układ ma zawierać czujniki, informujące użytkownika o napotkanej przeszkodzie na trasie sterowanego samochodu. Po wykryciu obiektu, pojazd nie powinien zderzyć się z tą przeszkodą.
·         Zasilanie bateryjne.
W projekcie wykorzystane zostaną gotowe podzespoły mechaniczne takie jak silniki, podwozie oraz układ skrętny.


Część sprzętowa

    Na rys. 1 przedstawiony został schemat blokowy układu sterowania pojazdem. Składa się on z: jednostki centralnej, odbiornika podczerwieni, czujnika odległości, układu sterującego napędem, układu sterującego położeniem osi kół przednich oraz modułu zawierającego diody sygnalizacyjne i przyciski 

Opis poszczególnych modułów

  • Jednostka centralna


Jednostka centralna sterownika pojazdu oparta została na mikrokontrolerze AVR rodziny Atmega typu ATMega32.

Do zasilenia jednostki centralnej, wykorzystano stabilizator napięcia LM7805. Napięcie uzyskane na wyjściu układu podawane jest na porty AVCC, VCC oraz Reset.
W celu poprawnego zasilenia mikrokontrolera, zastosowano dwa kondensatory monolityczne o wartości 100nF dołączone do portów AVCC oraz VCC. Ich celem jest odfiltrowanie zbędnych zakłóceń generowanych na wymienionych wyżej wejściach mikrokontrolera. Wartość kondensatorów dobrana została zgodnie z notą katalogową.
Sygnał RESET został na stałe podłączony do napięcia zasilania poprzez rezystor polaryzujący. Użytkownik nie ma możliwości zerowania mikrokontrolera.
Częstotliwość taktowania procesora została ustawiona na 8Mhz. Do tego celu wykorzystano wewnętrzny oscylator.

  • Nadawanie i odbieranie podczerwieni

W projekcie do komunikacji z modelem pojazdu wykorzystano transmisję bezprzewodową opartą na modułach odbiorników/nadajników podczerwieni. Wiąże się to jednak z pewnymi ograniczeniami i problemami. Pierwszym z nich jest większa moc potrzebna do przeprowadzenia transmisji. Drugim jest interferencja ze sztucznymi i naturalnymi źródłami światła. Trzecim i najważniejszym problemem jest ograniczony zasięg transmisji, który zależny jest od wzajemnego położenia nadajnika i odbiornika oraz warunków atmosferycznych. W zastosowaniach teleinformatycznych, zaletą tego typu rozwiązań może być to, że transmisja ta zapewnia nieprzenikalność przez ściany. Dzięki temu zwiększa się bezpieczeństwo przesyłanych danych oraz brak zakłóceń pomiędzy systemami zainstalowanymi w innych pomieszczeniach.
 

Jako odbiornik zastosowano układ scalony TSOP31236 pracujący na częstotliwości 36Khz. 
Jako nadajnik podczerwieni w projekcie zastosowano pilot działający w standardzie RC5. Podczas wykonywanych testów, problemem i ograniczeniem tego typu transmisji jest brak możliwości wysyłania dwóch komend jednocześnie. Nie jest możliwe wciśnięcie przycisku odpowiedzialnego za poruszanie się do przodu i jednoczesne naciśnięcie przycisku odpowiedzialnego za skręcanie kół pojazdu. Omówienie rozwiązania tego problemu zostało przedstawione w dalszej części opisu projektu.

  • Sterowanie silnikami   


Do sterowania silnikiem wykorzystano układ scalony L293D pełniący funkcję mostka H.
Mostek H jest układem elektrycznym umożliwiającym sterowanie silnikami prądu stałego DC. W zależności na który port tego układu zostanie podane napięcie, będzie to skutkować odpowiednim kierunkiem obrotu wirnika w silniku.
Układ zasilany jest dwoma napięciami. Pierwsze, czyli 5V służy do zasilenia układu scalonego. Drugie, czyli 9V podawane jest na wyjścia 1Y / 2Y oraz 3Y/4Y, które podłączone są do silników. Konkretna wartość napięcia, jaka będzie podawana zależy od sygnałów „Jazda_pwm” oraz „Skret_pwm”. W celu odfiltrowania zbędnych zakłóceń, zastosowano kondensator monolityczny o wartości 100nF. Kondensator został dobrany zgodnie z notą katalogową układu scalonego.
W celu uniknięcia zbyt dużych skoków prądowych podczas ruszania samochodu, zastosowano modulację szerokości impulsu - PWM podawaną na port oznaczony 1-2EN układu scalonego L293D. Do tego celu wykorzystano licznik Timer0, którego alternatywne wyjście OC0 jest bezpośrednio podłączone do sygnału „Jazda_pwm”.
Samochód po naciśnięciu klawisza odpowiedzialnego za jazdę do przodu / tyłu nie rusza z maksymalną prędkością, lecz stopniowo rozpędza się. Dzięki temu nie występują duże skoki prądowe co spowoduje dłuższe i bezawaryjne działanie układu.


  •   Czujnik odległości

    Do wykrywania obiektów znajdujących się przed pojazdem wykorzystano gotowy czujnik odległości. Zasięg maksymalny tego urządzenia wynosi 30cm. Dzięki potencjometrowi, układ ma możliwość dowolnego ustawienia odległości, przy której przeszkoda ma zostać wykryta.

    Układ oparty jest na odbiorniku podczerwieni działającym na częstotliwości 38 kHz i zasilany  napięciem 5V.


  •   Zasilanie

    Samochód zasilany jest z 5 baterii typu AA 1.2V. Napięcie to jest bezpośrednio doprowadzone do mostka H, które jest przekazywane do silników.
    Układy cyfrowe zasilane są napięciem 5V. W tym celu zastosowano stabilizator napięcia LM7805


Napięcie uzyskane na wyjściu stabilizatora służy do zasilania modułów: 

·         Jednostka Centralna,
·         Odbiornik podczerwieni TSOP31236,
·         Czujnik odległości,
·         Mostek H – L293D.

Oprogramowanie urządzenia


Na początku programu następuje inicjalizacja mikrokontrolera. W tym miejscu ustawiane są parametry liczników, przerwań oraz ustawiane są rejestry portów jako wejścia i wyjścia. Za inicjalizację mikrokontrolera odpowiedzialna jest funkcja sys_init().
Następnie program czeka na nadesłanie danych z pilota podczerwieni. Po wykryciu przesłanej ramki, następuje proces sprawdzenia, czy ramka nie zawiera błędów.
Jeżeli wszystko przebiegnie pomyślnie, następuje sprawdzenie adresu urządzenia, wysłanej komendy i toggle_bit (bit sprawdzający nadesłanie tej samej komendy ponownie) według następujących instrukcji w programie:
·         command = IrData & 0b0000000000111111,
·         address = (IrData & 0b0000011111000000) >> 6,
·         toggle_bit = (IrData & 0b0000100000000000) >> 11.
Command, address oraz toggle_bit są to dane zawarte w przesyłanej ramce podczerwieni. W zależności od tego, jaką informację chcemy odczytać z nadesłanej ramki danych, odpowiednie bity są maskowane. Maskowanie polega na użyciu operatora binarnego AND pomiędzy ciągiem bitów a maską w celu pozostawienia tylko tych danych, które potrzebujemy.
Do odbioru i przetworzenia dostarczonej ramki danych z nadajnika podczerwieni zastosowano gotową bibliotekę autorstwa Mirosława Kardasia. Na potrzeby projektu została ona zmodyfikowana o obsługę przycisków na pilocie, które wykorzystywane są do sterowania pojazdem.
Po odebraniu danych wykonywana jest komenda jaka została wysłana do urządzenia. Jeżeli użytkownik naciśnie przycisk odpowiedzialny za jazdę pojazdu do przodu/tyłu, ustawiany zostanie znacznik kierunek_przód bądź kierunek_tył. Na schemacie ponieżej zostało to uproszczone do jednego znacznika FLAGA.
Po ustawieniu znacznika, jeżeli użytkownik naciśnie przycisk odpowiedzialny za skręcanie samochodu a wcześniej ustawiony był znacznik kierunek_przód=1 (na schemacie FLAGA=1), to pojazd pojedzie do przodu jednocześnie skręcając. Prędkość oraz wychylenie przedniej osi kół zależy od czasu przytrzymania przycisku przez użytkownika. Analogicznie dzieje się w przypadku skręcania w innych kierunkach.
Jeżeli moduł czujnika odległości będzie aktywny (domyślnie jest wyłączony, lecz użytkownik ma możliwość go załączyć), to w momencie wykrycia przeszkody ustawiony zostanie znacznik obiekt=0. Spowoduje to brak możliwości poruszania się samochodu do przodu. Jedyna dostępna wtedy funkcja pojazdu to cofanie wraz z możliwością skrętu, bądź wyłączenie modułu czujnika odległości.


 

Wnioski

    Zrealizowany układ spełnia wszystkie założenia projektowe. Samochód świetnie nadaje się do zabawy. Dzięki sterowaniu bezprzewodowemu, użytkownika nie musi ograniczać żaden kabel, przez co sterowanie staje się jeszcze przyjemniejsze. Ze względu na ograniczone możliwości kontroli, pojazd dobrze sprawuje się w terenie otwartym, gdzie jest mało przeszkód.
    Poniżej w tabeli przedstawione zostały podstawowe parametry samochodu. Dane te zostały zmierzone i wyliczone na podstawie przeprowadzonych pomiarów w domu.

Zasięg pilota
18m
Maksymalna prędkość
2 km/h
Czas do Vmax
 1s

Zastosowanie czujnika odległości pozwoliło zwiększyć bezpieczeństwo pojazdu. Nie zostanie on uszkodzony, ponieważ gdy nastąpi wykrycie przeszkody, samochód zatrzyma się i nie pozwoli użytkownikowi na nią wjechać. Użytkownik zawsze ma możliwość włączenia/wyłączenia czujnika odległości.
Zaprojektowany układ elektroniczny przymocowany jest śrubami do obudowy samochodu, przez co płytka jest stabilna i nie ulegnie uszkodzeniu

 

 

 

 

 

 

 

 

















Brak komentarzy:

Prześlij komentarz