Lekkie śledzenie i unikanie robota opartego na Arduino: 5 kroków
Lekkie śledzenie i unikanie robota opartego na Arduino: 5 kroków
Anonim
Lekkie śledzenie i unikanie robota opartego na Arduino
Lekkie śledzenie i unikanie robota opartego na Arduino

Jest to prosty projekt, który podąża za światłem lub unika go.

Wykonałem tę symulację w Proteus 8.6 pro. Wymagane komponenty:-1) Arduino uno.

2) 3 LDR.

3) 2 motoreduktory prądu stałego.4) Jeden serwo.5) Trzy rezystory 1k.6) Jeden mostek H l290D7) Jeden włącznik i wyłącznik [do zmiany warunków programu]

8) Bateria 9V i 5V

Krok 1: Kod Ardunio

Kod Arduino jest nieco zmodyfikowany Data 23 lutego 2016]

Ten kod jest bardzo komentowany, nie chcę wyjaśniać, ale jeśli potrzebujesz pomocy, skontaktuj się ze mną pod adresem ([email protected])

Uwaga:-Używam dwóch warunków w tym programie 1. dla światła podążającego.2 i dla unikania światła.

O ile te warunki są spełnione, robot będzie podążał za światłem lub go unikał. [Jest to minimalna wartość LDR, którą wybieram. W normalnym świetle jego zakres wynosi od 80 do 95, ale w miarę jak jego intensywność rośnie, coraz więcej indukowanych napięć indukuje się, ponieważ działa na zasadzie dzielnika napięcia int a = 400; // Wartość tolerancji]

Krok 2: Pliki Proteusa

Do pobrania biblioteki Arduino z tego linku

Krok 3: Jak działa Twój mostek H

Jak działa Twój mostek H
Jak działa Twój mostek H
Jak działa Twój mostek H
Jak działa Twój mostek H

L293NE/SN754410 to bardzo prosty mostek H. Ma dwa mostki, jeden po lewej stronie chipa, a drugi po prawej, i może sterować 2 silnikami. Może zasilać prąd o natężeniu do 1 A i działać w zakresie od 4,5 V do 36 V. Mały silnik prądu stałego, którego używasz w tym laboratorium, może bezpiecznie działać przy niskim napięciu, więc ten mostek H będzie działał dobrze. Mostek H ma następujące styki i funkcje: Pin 1 (1, 2EN) włącza i wyłącza nasz silnik, niezależnie od tego, czy podaje WYSOKI, czy NISKI Pin 2 (1A) jest pinem logicznym dla naszego silnika (wejście jest WYSOKIE lub NISKI)Pin 3 (1Y) jest dla jednego z zacisków silnikaPin 4-5 jest dla uziemieniaPin 6 (2Y) jest dla drugiego zacisku silnikaPin 7 (2A) jest pinem logicznym dla naszego silnika (wejście jest WYSOKIE lub NISKI)Pin 8 (VCC2) to zasilanie dla naszego silnika, należy to uwzględnić, biorąc pod uwagę napięcie znamionowe Twojego silnikaPin 9-11 są niepodłączone, ponieważ używasz tylko jednego silnika w tym laboratorium. Pin 12-13 są dla uziemieniaPin 14-15 są niepodłączonePin 16 (VCC1) jest podłączony do 5V. Powyżej schemat mostka H i które piny robią co w naszym przykładzie. Do schematu dołączona jest tabela prawdy wskazująca, jak silnik będzie działał zgodnie ze stanem pinów logicznych (ustawionych przez nasze Arduino).

W tym projekcie pin włączający łączy się z pinem cyfrowym w Arduino, dzięki czemu można go wysłać na WYSOKI lub NISKI i włączyć lub wyłączyć silnik. Piny logiczne silnika są również podłączone do wyznaczonych cyfrowych pinów na Arduino, dzięki czemu można je wysłać WYSOKI i NISKI, aby silnik obracał się w jednym kierunku, lub NISKI i WYSOKI, aby obracał się w innym kierunku. Napięcie zasilania silnika łączy się ze źródłem napięcia dla silnika, którym zwykle jest zewnętrzne źródło zasilania. Jeśli twój silnik może działać na 5 V i mniej niż 500 mA, możesz użyć wyjścia 5 V Arduino. Większość silników wymaga wyższego napięcia i większego poboru prądu, więc będziesz potrzebować zewnętrznego źródła zasilania.

Podłącz silnik do mostka H Podłącz silnik do mostka H, jak pokazano na drugim rysunku.

Lub, jeśli używasz zewnętrznego zasilacza dla Arduino, możesz użyć pinu Vin.

Krok 4: Jak działa LDR

Teraz pierwszą rzeczą, która może wymagać dalszych wyjaśnień, jest użycie rezystorów zależnych od światła. Light Dependent Resistors (lub LDR) to rezystory, których wartość zmienia się w zależności od ilości światła otoczenia, ale jak możemy wykryć rezystancję za pomocą Arduino? Cóż, naprawdę nie można, jednak można wykryć poziomy napięcia za pomocą pinów analogowych, które mogą mierzyć (w podstawowym użyciu) między 0-5V. Teraz możesz zapytać „No dobrze, jak zamienić wartości rezystancji na zmiany napięcia?”, to proste, robimy dzielnik napięcia. Dzielnik napięcia pobiera napięcie, a następnie wyprowadza część tego napięcia proporcjonalną do napięcia wejściowego i stosunku dwóch wartości użytych rezystorów. Równanie dla którego jest:

Napięcie wyjściowe = Napięcie wejściowe * (R2 / (R1 + R2)) Gdzie R1 jest wartością pierwszego rezystora, a R2 jest wartością drugiego.

Teraz to wciąż nasuwa pytanie „Ale jakie wartości oporu ma LDR?”, dobre pytanie. Im mniejsza ilość światła otoczenia tym wyższa rezystancja, więcej światła otoczenia oznacza niższy opór. Teraz dla poszczególnych LDR użyłem ich zakres rezystancji wynosił od 200 do 10 kilo omów, ale to się zmienia dla innych, więc upewnij się, że sprawdziłeś, skąd je kupiłeś i spróbuj znaleźć arkusz danych lub coś w tym rodzaju. Teraz w tym przypadek R1 to tak naprawdę nasz LDR, więc przywróćmy to równanie i zróbmy trochę matematyki i magii (matematycznej magii elektrycznej). Teraz najpierw musimy przekonwertować te wartości kiloomów na omy: 200 kiloomów = 200 000 omów 10 kilo-om = 10 000 omówAby dowiedzieć się, jakie jest napięcie wyjściowe, gdy jesteśmy w absolutnej czerni, podłączamy następujące liczby: 5 * (10000 / (200000 + 10000)) Wejście to 5 V, ponieważ to właśnie otrzymujemy z Arduino. Powyższe daje 0,24V (zaokrąglone). Teraz ustalamy, jakie napięcie wyjściowe jest w szczytowej jasności, używając następujących liczb:5 * (10000 / (10000 + 10000))A to daje nam dokładnie 2,5V. Czyli są to wartości napięć, które dostaniemy na piny analogowe Arduino, ale nie są to wartości, które zobaczymy w programie „Ale dlaczego?” możesz zapytać. Arduino wykorzystuje układ analogowo-cyfrowy, który przekształca napięcie analogowe na użyteczne dane cyfrowe. W przeciwieństwie do cyfrowych pinów Arduino, które mogą odczytywać tylko stan WYSOKI lub NISKI o wartości 0 i 5 V, piny analogowe mogą odczytywać od 0-5 V i konwertować to na zakres liczb 0-1023. Teraz z trochę więcej matematyki i magii. możemy faktycznie obliczyć, jakie wartości Arduino faktycznie odczyta.

Ponieważ będzie to funkcja liniowa, możemy użyć następującego wzoru: Y = mX + C Gdzie; Y = wartość cyfrowa gdzie; m = nachylenie, (wzrost / bieg), (wartość cyfrowa / wartość analogowa)Gdzie; Punkt przecięcia C = Y Punkt przecięcia Y wynosi 0, co daje nam: Y = mXm = 1023 / 5 = 204,6 Dlatego: Wartość cyfrowa = 204,6 * Wartość analogowa Tak więc w kolorze czarnym wartość cyfrowa wyniesie: 204,6 * 0,24 Co daje około 49. w szczytowej jasności będzie to: 204,6 * 2,5 Co daje w przybliżeniu 511. Teraz z dwoma z nich ustawionymi na dwóch pinach analogowych możemy utworzyć dwie zmienne całkowite do przechowywania ich wartości dwóch i wykonać operatory porównania, aby zobaczyć, która z nich ma najniższą wartość, obracając robota w tym kierunku.