Bądź: Wyszukaj na stronie z użyciem Google
reklama:

poniedziałek, 27 grudnia 2010

Budujemy robota Open Source. Część 3: Odczytujemy wartości z czujników

Autor: , 17:39, poniedziałek, 27 grudnia 2010


Najprostszy czujnik podłączamy do naszego cyfrowego mózgu
Ostatnio zajmowaliśmy się podstawami programowania mikrokontrolera, jednak bez zewnętrznych czujników, nasz robot jest całkowicie pozbawiony zmysłów. Choć może wykonywać polecenia, które wprowadziliśmy mu "na sztywno", bez dodatkowych czujników straci wiele ze swojej "cyfrowej inteligencji".

Czym jest fotorezystor?

Tym razem skupimy się na najprostszym zamienniku oka, czyli fotorezystorze. Pozwoli nam on stwierdzić, jak mocno oświetlone jest otoczenie w różnych punktach. Jest to element bardzo prosty w użyciu i podobnie jak w przypadku normalnego rezystora, kierunek przyłożonego do niego napięcia nie wpływa na jego działanie. Musimy też wiedzieć, że im mocniej fotorezystor jest oświetlony, tym większa jego konduktancja, czyli mniejsza rezystancja, czyli po ludzku: przepuszcza więcej prądu.

Fotorezystory mają jedną ogromną zaletę - są bardzo tanie. Koszt jednego to około złotówka, więc warto się wyposażyć w kilka, by nasz robot mógł na przykład sprawdzać, czy zmierza w kierunku światła, a może wprost przeciwnie. Wykorzystując te elementu można także prosto sprawić, by urządzenie podążało za jasnym punktem. Jak zwykle ograniczeniem jest tutaj głównie wyobraźnia.

Ciekawe wykorzystanie?

Jednym z najciekawszych pomysłów na wykorzystanie fotorezystorów było według mnie użycie ich w prostym ramieniu, na końcu którego znajdowało się ogniwo fotowoltaiczne. Ogniwo podążało za ruchem słońca i zasilało Adruino oraz serwomechanizmy (silniczki z odrobiną elektroniki). Powstała więc niebanalna konstrukcja, która nie wymagała zewnętrznego zasilania, konsumująca sama energię, którą zgromadziła.

Podłączenie fotorezystora

Rezystancyjny dzielnik napięcia. Fot: Wikipedia
Naszego fotorezystorka nie wpinamy bezpośrednio, lecz podobnie jak w przypadku diod LED musimy nieco ograniczyć napięcie, które do niego dopływa. W tym celu posłużymy się prostym obwodem zwanym dzielnikiem napięcia.

Całość wygląda dokładnie tak jak na obrazku po prawej stronie. R1 to nasz fotorezystor, R - zwykły opornik (najczęściej 10K omów).

Trzy kropki można by właściwie ograniczyć do jednej - podłączamy je do źródła 5V. Kropkę znajdującą się między dwoma rezystorami (w centrum grafiki) podłączmy do wejścia analogowego A0 (można do innego, ale takie zostało użyte w poniższym przykładzie kodu). No i pozostaje jeszcze górna kropka, która wędruje do złącza GND zwanego uziemieniem.

Mam nadzieję, że nie będzie problemów z podłączeniem. Jeśli jednak by się pojawiły w internecie jest sporo instrukcji na temat dzielników prądowych, a także podłączania fotorezystorów do Arduino.

Najważniejszy jest kod

No właściwie nie najważniejszy, bo jeśli źle podłączymy fotorezystor to i tak nie zadziała. Tak czy inaczej, kod i podłączenie są tutaj kluczowe, jednak to właśnie przy tym pierwszym możemy popełnić najwięcej błędów.

Cały kod najprostszego programu, który odczytuje wartości z fotorezystora wygląda następująco:

int fotoPin = 0; //definiujemy pin dla fotorezystora

void setup()
{
pinMode(fotoPin, INPUT);
Serial.begin(9600); //Rozpoczynamy komunikację szeregową
}

void loop()
{
Serial.println(analogRead(fotoPin));
delay(100); //ustalamy opóźnienie z jakim odczytywana będzie jasność
}

Nie należy się sugerować względnie dużą ilością linijek, za chwilę pokażę, że prościej się nie da.

Pomiary zwracane przez program
Na start ustalamy który z analogowych pinów będzie wykorzystywany do odczytu wartości z fotorezystora. Aby nie być zbyt wyrafinowanym, w programie jest to pierwszy z brzegu pin 0. Dalej w sekcji void setup() jak zwykle musimy jeszcze raz wskazać które wyjścia/wejścia będą używane i do czego.

Warto zwrócić uwagę na linijkę umożliwiającą rozpoczęcie komunikacji szeregowej między Adruino i komputerem. Obok samej informacji dla kompilatora, że chcemy skorzystać z takiego dobrodziejstwa, podajemy też w nawiasie szybkość transmisji.

Dalej już w sekcji void loop() ustawiamy jaką wartość ma wyświetlać nasza konsola i opóźnienie z jakim będą wykonywane kolejne pomiary. Wystarczy teraz skompilować kod, wysłać go do mikrokontrolera i włączyć w programie konsolę (ostatnia ikona z prawej).

Co dalej?

Jeśli potrafimy już przechwytywać wartość z czujnika, można się nieco pobawić w jej interpretację. Zasady są takie jak w języku C++. Możemy stworzyć instrukcje warunkowe, które pozwolą w odpowiedni sposób reagować na zmiany oświetlenia i tak dalej. Tymi zabawami zajmiemy się w kolejnych częściach.
blog comments powered by Disqus

Prześlij komentarz


Popularne posty

Etykiety