Miesięczne archiwum: Maj 2010

Sonar

Jeśli odwiedzasz ten blog i jesteś posiadaczem Arduino zapewne marzyłeś kiedyś o budowie własnego robota. Te najłatwiejsze wykonują proste rozkazy (obróć się, przesuń o 20 cm). Co innego, gdy chcemy zbudować robota o większej autonomii. Takiego, który samodzielnie szuka drogi do celu, który omija przeszkody. Brzmi fantastycznie? Oczywiście! Ale to nić trudnego wymaga odrobiny praktyki i…
… czujników zmysłów.

Jednym z nich jest oferowany w Nettigo sonar (Maxbotix MB1010). Sensor ten mierzy odległość do przeszkody. Robi to za pomocą ultradźwięków czyli fal o częstotliwości tak wysokiej, że nie reaguje na nie ludzkie ucho (około 42 kHz). Czujnik ten normalnie wykorzystywany jest w systemach alarmowych (w odróżnieniu od czujników na podczerwień pasywną, w tym można ustalić odległość, której przekroczenie powoduje uruchomienie alarmu), oraz w systemach parkowania do samochodów.
Umieszczając ten czujnik w robocie, zyskasz możliwość ustalania jak daleko znajduje się on od przeszkód lub stworzyć mapę otoczenia.
Maksymalna odległość wykrywana przez czujnik to 255 cali czyli ponad 6 metrów z dokładnością do 1 cala [2,54 cm]. Szerokość wiązki dźwięku „gołego” czujnika to około 24 cale [61 cm]. Minimalna odległość jaką wykrywa czujnik to 6 cali [15 cm].

Sonar EZ1 ma sporo wyprowadzeń, ale nie powinieneś się obawiać ich ilości. Większość z nich jest dla Twojej wygody. Pierwsze dwa (GND i +5) służą do zasilania czujnika. Podłącza się je w ich odpowiedniki w Arduino.

Pozostałe wyprowadzenia to różnorodne sygnały przedstawiające wykrytą odległość od przeszkody.

Czytaj dalej

Arduino i czas czyli DS1307

Arduino nie ma wbudowanego zegara. Znaczy to, że pewne operacje związane z czasem da się przeprowadzać (opóźnienia o zadany interwał), ale już kontrolowanie czasu i daty nie jest takie proste.

Aby Arduino mogło wiedzieć dokładnie jaki jest czas potrzebny jest zewnętrzny układ zegara. Takim układem jest Dallas DS1307, dostępny na Nettigo.pl w formie modułu do Arduino. Moduł ten posiada podtrzymywanie bateryjne, więc czas raz ustawiony nie zostaje skasowany po wyłączeniu Arduino.

Montaż

Moduł jest zlutowany, ale kwestia podłączenia do Arduino pozostaje otwarta. Moduł wygląda tak:

Moduł zegara DS1307

Moduł zegara DS1307

W lewym górnym rogu znajduje czteropinowe złącze o rastrze (odstępie między pinami) 2.54 mm. Niestety nie posiadamy na razie w ofercie kabelków do tego złącza. Pozostaje kombinowanie samemu, lub podłączenie się przez gniazdo (do ICSP) i goldpiny. Elementy te są dostępne razem z modułem (jak widać na zdjęciu), ale trzeba je przylutować do modułu (proste nawet dla początkujących).

Korzystając z kabelka możemy moduł podłączyć do dowolnego kontrolera wspierającego protokół I2C.

Gniazdo do podłączenia ICSP (z którego moduł w takim układzie bierze zasilanie) ma dwie pozycje w które można go przylutować. Jedna jest dla Arduino Duemilanove (i klonów zgodnych jeśli chodzi o rozmiary i wyprowadzenie pinów) lub Seeeduino Mega. Moduł przy takim podłączniu (przez ICSP i goldpiny) nie współpracuje z Arduino Mega (wzajemne położenie pinów ICSP i wyjścia magistrali I2C są różne).

Oczywiście zawsze zostaje opcja przylutowania kabelków zamiast goldpina oraz ICSP i wtedy możemy podłączyć się do dowolnego mikrokontrolera wspierającego I2C. Jak wygląda moduł z przylutowanym gniazdem i goldpine oraz założony na Arduino pokazują poniższe zdjęcia:

Moduł RTC zlutowany

Moduł RTC zlutowany

Moduł DS1307 założony na Arduino

Moduł DS1307 założony na Arduino

Co możemy zrobić?

Czytaj dalej

Lutowanie goldpin-a

Podczas spotkań z czytelnikami dowiedziałem się, że wielu podoba się projekt Arduino, ale największą przeszkodą w rozpoczęciu przygody jest lutowanie. Niektórzy boją się tego wręcz panicznie – trzęsą im się ręce. W tym wpisie chcę odczarować lutowanie.

Część elementów elektronicznych dostępnych w postaci płytek drukowanych z uruchomionym podzespołem (modułów) ma gotowe wyprowadzenia sygnałów w otworach na płytce. Brakuje im tylko złącz lub przewodów. Do zastosowań w Arduino najlepszym rozwiązaniem będzie wlutowanie w te otwory „Goldpin-a”.

Goldpin to rodzaj wtyku z rzędowo rozmieszczonymi bolcami. W większości przypadków odstęp między bolcami i otworami w płytce drukowanej jest standardowy i wynosi 2,5 mm.
Goldpin bardzo dobrze nadaje się w prototypowaniu z użyciem płytki stykowej.
W tym wpisie zajmiemy się wlutowywaniem goldpina do Ultradźwiękowego czujnika odległości.

Składniki

Do lutowania potrzebne nam będą:

Lutownica

Jeśli jesteś elektronikiem amatorem – hobbystą, nie musisz kupować wyrafinowanych i drogich narzędzi. Sam od dawna używam prostej i taniej lutownicy o mocy 40W, dostępnej w sklepach z elektroniką za kilkanaście zł. Polecam oczywiście lutownicę kolbową. Lutownice pistoletowe nadają się bardziej do lutowania przewodów niż drobnych elementów, dlatego odrzucając je unikniesz wielu kłopotów.
W obsłudze lutownicy najważniejsze jest wiedzieć, który koniec się nagrzewa. Łapanie za nieodpowiedni może się źle skończyć.
Lutownica nagrzewa się około 2 minut. Poznajemy to po tym, że grot (zaostrzony koniec) łatwo topi cynę.

Cyna lutownicza

Cyna to rodzaj drutu ze stopu ołowiu i cynku z domieszką odpowiednich chemikaliów. Cynę zwykle można nabyć w postaci nawiniętej szpulki – drutem o różnych średnicach.
Polecam cynę o średnicy do 1 mm. Należy wziąć pod uwagę, że im mniejsza średnica, tym drobniejsze elementy możemy lutować. Jednak jeśli średnica będzie zbyt mała będziemy potrzebowali znaczne długości cyny do lutowania większych elementów, co może być niewygodne.
Do lutowania używam cyny 1 mm i w poniższym przypadku uważam, że jest ona trochę za gruba.

Goldpin

Goldpiny są dostępne w różnych konfiguracjach (od jednego do kilku rzędów). Nam wystarczy 1 rząd. Zwykle sprzedaje się je w rzędzie po 50 PINów.
Jeśli nasz układ wymaga mniej PINów, zwyczajnie odłamujemy tyle ile jest nam potrzebne.

Przygotowania

Otwory i miejsca lutownicze możemy przemyć z tłuszczu za pomocą szmatki nasączonej alkoholem, rozpuszczalnikiem lub wodą. Większość producentów zaleca ten ostatni środek, jednak należy być ostrożnym, gdyż woda łatwo powoduje zwarcia i długo odparowuje z trudno dostępnych szczelin takich jak miejsca pod układami scalonymi.

Odłamujemy potrzebną ilość PINów.

Przymierzamy czy pasują do płytki.

Dalsze przygotowania

Właściwie mógłbyś rozpocząć już lutowanie, gdyby nie fakt, że brakuje nam „trzeciej ręki”. Ciężko utrzymać element w miejscu podczas gdy w jednym ręku mamy lutownice, a w drugim cynę. Element oparty o podłoże goldpin-em nie da się zlutować prosto (tzn. pod kątem 90°).
W celu rozwiązania tego problemu wymyślono już wiele. Najpopularniejszymi rozwiązaniami są przykręcane do stołu szkła powiększające z „krokodylkami”. Ja jednak idąc ścieżką całkowitego amatorstwa użyłem…

…małego imadła.

Płytki nie należy wkręcać bezpośrednio w imadło. Mogłoby to ją uszkodzić. Poza tym nie będzie się stabilnie trzymała. Proponuję zatem obsadzić zaciski imadła czymś w rodzaju styropianowej gąbki służącej do izolowania rur.

Co zrobić z wypadającym z płytki goldpin-em?
Proponuję plastikowe końce złącza posmarować klejem typu „kropelka” i przykleić do płytki.

Proces lutowania

Lutowanie polega na przyłożeniu rozgrzanego grota w okolice punktu lutowniczego. Następnie do zaostrzonej końcówki grota przykładamy cynę, która musi spłynąć do punktu lutowniczego i go wypełnić.

Musisz pamiętać, że do jednego punktu nie można zbyt długo przykładać lutownicy. Producenci zalecają maksymalnie 2..3s.
Jeśli cyna przypadkowo rozpłynie się na dwa PINy łącząc je, należy ją roztopić i szybkim ruchem przerwać miejsce między PINami. Możemy to zrobić za pomocą kawałka zaostrzonego drewna (najlepiej wykałaczki lub dolnej części zapałki).

Prawidłowo zlutowany koniec ma kształt stożka.

Nieprawidłowe lutowanie najczęściej polega na dostarczeniu do punktu lutowniczego zbyt małej (punkt nie jest do końca pokryty cyną) lub zbyt dużej (zamiast stożka jest kulka) ilości cyny.

Moje lutowanie

Aby ostatecznie rozwiać strach związany z lutowaniem, postanowiłem nagrać materiał video z mojego lutowania goldpin-a.

Jak widzisz drogi czytelniku, to nie jest wcale takie trudne.

Czujnik wilgotności

Każda amatorska jak i profesjonalna stacja meteo do pełni szczęścia wymaga czujnika wilgotności. Czujnik ten wraz z termometrem pozwala przewidzieć tzw. „punkt rosy”.
Punktem rosy jest temperatura, w której przy odpowiedniej wilgotności skrapla się para wodna zawarta w powietrzu. Zwykle powoduje to powstanie rosy na trawie, lecz w pewnych warunkach pozwala także przewidywać powstanie mgły, obliczyć wysokość na jakiej są chmury lub stwierdzić czemu w kuchni odpada tynk z sufitu ;-).

Kondensator

Urządzenie dostępne w Nettigo jest pojemnościowym czujnikiem wilgotności HCH-1000. Pojemnościowy oznacza, że sensor jest kondensatorem w którym pojemność zależy wprost proporcjonalnie od wilgotności. Średnia pojemność tego kondensatora to około 330 pF.

Kondensator to w najprostszym tłumaczeniu element, który przechowuje ładunek elektryczny. Jeszcze prościej (wybaczcie prawdziwi elektronicy) to taki akumulator o bardzo małej pojemności.

Wyznaczanie pojemności kondensatora

Każdy kto miał do czynienia z akumulatorem (choćby w telefonie komórkowym) wie, że jego załadowanie i rozładowanie wymaga odpowiedniej ilości czasu. Ilość tego czasu zależy od pojemności akumulatora i zapotrzebowania na prąd przez urządzenie. Nie inaczej jest w przypadku kondensatorów.

Fachowo nazywamy to szeregowym obwodem RC (dlatego, że składa się z rezystora i kondensatora połączonych szeregowo).


Wykres ten przedstawia czas w jakim napięcie na kondensatorze (V kondensatora) w obwodzie RC osiągnie procent wartości napięcia zasilania obwodu (V zasilania). Można z niego wywnioskować, że 63,2% napięcia osiągnie w jednej jednostce czasu, którą można wyznaczyć ze wzoru:

t = RC

gdzie:

  • t – czas w sekundach
  • R – Rezystancja rezystora w Ω
  • C – Pojemność kondensatora w Faradach

Zakładając, że użyjemy rezystora 10 MΩ, a czujnik wilgotności ma około 330 pF, ładowanie do 63,2% napięcia będzie trwało:

t = RC = 10 MΩ * 330 pF = 10000000 Ω * 0,00000000033 F = 0,0033 s

Łatwiej obliczać używając potęg jednostek

t = 10 * 10^6 Ω * 330 * 10^-12 F = 10 * 330 * 10^-6 = 3300 * 10^-6 = 3300 µs.

Ładowanie do większych części napięcia zasilania to, zgodnie z wykresem wielokrotność tego czasu. Np. dla 95% jest to 3 razy dłuższy czas.

t = 3RC = 3 * 3300 * 10^-6 = 9900 µs

Rozładowywanie jest odwrotnym procesem, w którym przydział czasu rozładowania do wartości napięcia przebiega w ten sposób:

Realizacja w Arduino

Podstawowy model działania układu w projekcie będzie musiał realizować następujące punkty programu:

  • Ładowanie Kondensatora
  • Badanie stopnia naładowania
  • Mierzenie czasu ładowania
  • Rozładowywanie kondensatora

Układ elektryczny podstawowego modelu przedstawia poniższy rysunek.


PIN 3 odpowiada za ładowanie kondensatora, PIN 2 za rozładowywanie. Analogowy PIN 0 mierzy napięcie kondensatora. Do PIN 3 podłączony jest rezystor ładujący 10 MΩ, Do PIN 2 – rezystor rozładowujący 220 Ω.
Procedura pomiaru pojemności składa się z dwóch następujących po sobie podprogramów.

Czytaj dalej