Robot śledzący i unikający światła oparty na Arduino: 5 kroków

Robot śledzący i unikający światła oparty na Arduino: 5 kroków

Spisu treści:

Anonim

To prosty projekt, który podąża za lub omija światło.

Wykonałem tę symulację w Pro 8,8 pro.

Wymagane komponenty: -

1) Arduino uno.

2) 3 LDR.

3) 2 motoreduktory DC.

4) Jeden serwomechanizm.

5) Trzy rezystory 1k.

6) jeden mostek H l9090D

7) Jeden włącznik i wyłącznik do zmiany stanu programu

8) Battry 9v i 5v

Kieszonkowe dzieci:

Krok 1: Kod Ardunio

Ulepszenia: _

Kod Arduino został zmodyfikowany litte -bit Data 23 lutego 2016

Ten kod jest bardzo skomentowany, nie chcę tego wyjaśniać, ale jeśli potrzebujesz pomocy, możesz się ze mną skontaktować pod adresem ([email protected])

Uwaga:-

W tym programie używam dwóch warunków

1st dla Light Follow.

Druga dla unikania światła.

O ile te warunki są spełnione, Robot będzie podążał lub omijał światło.

To jest minimalna wartość LDR, którą wybieram. W normalnym świetle jego zakres wynosi od 80 do 95, ale wraz ze wzrostem jego intensywności coraz więcej napięć indukuje go, gdy pracuje na zasadzie dzielnika napięcia

int a = 400; // Wartość Tolarance

Krok 2: Pliki Proteus

Aby pobrać Arduino Library z tego linku

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

L293NE / SN754410 to bardzo prosty mostek H. Ma dwa mostki, jeden po lewej stronie chipa i jeden po prawej stronie, 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 odpływać z niskiego napięcia, więc ten mostek H będzie dobrze działał. Mostek H ma następujące kołki i cechy: Pin 1 (1,2EN) włącza i wyłącza nasz silnik niezależnie od tego, czy jest on nadawany HIGH lub LOWPin 2 (1A) to pin logiczny dla naszego silnika (wejście jest albo WYSOKIE, albo NISKIE) Pin 3 (1Y) jest dla jednego z zacisków silnikaPin 4-5 są dla masyPin 6 (2Y) dla drugiego zacisku silnikaPin 7 (2A) to pin logiczny dla naszego silnika (wejście jest albo WYSOKIE albo NISKIE) Pin 8 (VCC2) Czy zasilanie naszego silnika, to powinno być podane napięcie znamionowe twojego silnika 9-11 nie jest połączone, ponieważ używasz tylko jednego silnika w tym labPin 12-13 są dla groundPin 14-15 są niepodłączonePin 16 (VCC1) to podłączony do 5 V. Powyżej znajduje się schemat mostka H i które kołki robią to, co w naszym przykładzie. W diagramie znajduje się tabela prawdy wskazująca, w jaki sposób silnik będzie działał zgodnie ze stanem pinów logicznych (ustawianych przez nasz Arduino).

W tym projekcie pin włączający łączy się z cyfrowym pinem na Arduino, dzięki czemu możesz wysłać go HIGH lub LOW i włączyć lub wyłączyć silnik. Piny logiczne silnika są również podłączone do wyznaczonych pinów cyfrowych na Arduino, dzięki czemu można wysłać je WYSOKIE i NISKIE, aby obrócić silnik w jednym kierunku, lub NISKI i WYSOKI, aby obrócić go w innym kierunku. Napięcie zasilania silnika łączy się ze źródłem napięcia dla silnika, który jest zwykle zewnętrznym źródłem zasilania. Jeśli twój silnik może pracować 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 wyższego 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 zdjęciu.

Lub, jeśli używasz zewnętrznego zasilacza Arduino, możesz użyć pin 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. Rezystory zależne od światła (lub LDR) to rezystory, których wartość zmienia się w zależności od ilości światła otoczenia, ale jak wykryć opór za pomocą Arduino? Cóż, tak naprawdę nie można, ale można wykryć poziomy napięcia za pomocą kołków analogowych, które mogą mierzyć (w podstawowym użyciu) pomiędzy 0-5V. Teraz możesz zapytać: „Jak przekształcić wartości rezystancji w zmiany napięcia?”, To proste, tworzymy dzielnik napięcia. Dzielnik napięcia pobiera napięcie, a następnie wyprowadza ułamek tego napięcia proporcjonalny do napięcia wejściowego i stosunku dwóch użytych wartości rezystorów. Równanie dla którego jest:

Output Voltage = Input Voltage * (R2 / (R1 + R2)) Gdzie R1 jest wartością pierwszego rezystora, a R2 jest wartością drugiego.

Teraz wciąż nasuwa się pytanie „Ale jakie wartości oporu ma LDR?”, Dobre pytanie.

Im mniejsza ilość światła otoczenia, tym wyższa odporność, więcej światła otoczenia oznacza niższy opór. Teraz dla poszczególnych LDR użyłem ich zakresu oporności od 200 do 10 kilo omów, ale to zmienia się dla różnych, więc sprawdź, gdzie je kupiłeś i spróbuj znaleźć arkusz danych lub coś w tym rodzaju. przypadek R1 jest w rzeczywistości naszym LDR, więc przywróćmy to równanie i wykonajmy pewną magię-e-magię (matematyczną magię elektryczną). Teraz najpierw musimy przekonwertować te wartości kiloomów na omy:

200 kilo omów = 200 000 omów 10 kiloomów = 10 000 omów

Aby dowiedzieć się, jakie jest napięcie wyjściowe, gdy jesteśmy w ciemności, podłączamy następujące liczby:

5 * (10000 / (200000 + 10000))

Wejście to 5V, ponieważ otrzymujemy to od Arduino.

Powyższe daje 0.24V (zaokrąglone). Teraz odkrywamy, 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 2,5 V dokładnie.

Są to więc wartości napięcia, które dostaniemy do pinów analogowych Arduino, ale nie są to wartości, które będą widoczne w programie „Ale dlaczego?”.

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 na Arduino, które mogą odczytywać tylko stan WYSOKI lub NISKI, wynoszący 0 i 5 V, piny analogowe mogą odczytywać od 0-5 V i przekształcać je w zakres liczbowy 0-1023. Teraz z odrobiną magii e-magicznej.

możemy faktycznie obliczyć, jakie wartości Arduino rzeczywiście 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; Intercept C = Y Punkt przecięcia Y wynosi 0, co daje nam: Y = mXm = 1023/5 = 204,6Tym: Wartość cyfrowa = 204,6 * Wartość analogowa Tak więc w tonacji czarnej wartość cyfrowa będzie: 204,6 * 0,24

Co daje około 49. W szczytowej jasności będzie to: 204,6 * 2,5

Co daje około 511.

Teraz, gdy dwa z nich są ustawione na dwóch kołkach analogowych, możemy utworzyć dwie zmienne całkowite, aby zapisać ich wartości dwa i wykonać operatory porównania, aby zobaczyć, która z nich ma najniższą wartość, obracając robota w tym kierunku.

Krok 5: