środa, 12 października 2011

Bascom-Avr, Avr-Studio, programator i płytka testowa


    Programy w języku BASCOM z powodzeniem można pisać w zwykłym notatniku. Jednak aby zamienić taki program na kod zrozumiały dla naszego mikroprocesora musimy zaopatrzyć się w oprogramowanie BASCOM-AVR. W czasie kiedy ja poznawałem BASCOMA jego wersja demonstracyjna obsługiwała maksymalnie 2kb pamięci FLASH , teraz jest to już 4kb pamięci.
Darmową wersję tego programu można pobrać z na stronie:
www.mcselec.com

    Program ten można również zakupić. Jego pełna wersja, bez ograniczeń  jest warta ok. 450 zł, natomiast wersja pół-demonstracyjna (bo inaczej się tego nie da nazwać) warta ok. 150zł posiada ograniczenie do 8kb kodu wynikowego przy czym jest ona zarezerwowana wyłącznie dla użytkowników korzystających z polskiej wersji systemu operacyjnego.
Jeśli korzystamy z programatora USB dodatkowo pobieramy także AVR Studio 4 ,który możemy znaleźć na stronie:
www.atmel.com
     
     Najpierw zajmijmy się programem BASCOM-AVR. Okno tego oprogramowania wygląda następująco:

      Największą część okna zajmuje miejce przeznaczone do edycji tekstu. Jest to duże białe pole które możemy wypełniać pisanym przez siebie programem. Wszystkie polecenia języka np. end , dim , as zostają oznaczone kolorem niebieskim. Umożliwia to łatwe znalezienie błędów w programie wynikających z błędnego napisania dyrektywy np. din zamiast dim. Czarnym kolorem wyróżniony jest tekst nie będący poleceniami BASCOMA ,natomiast kolor zielony zarezerwowany jest dla komentarzy które omówię w późniejszym czasie. W BASCOM’ie niema także znaczenia czy piszemy z małej czy z dużej litery. Możemy napisać Dim , dim lub diM i nie ma w tym żadnej różnicy. 

      Ja zajmę się jedynie  funkcjami ,których będziemy używać. Jak każda poczciwa aplikacja działająca w środowisku windows  BASCOM-AVR  zawiera polecenie File. Po wybraniu tegoż polecenia ukaże nam się lista kolejnych poleceń z których przydatne są tak naprawdę cztery:
New –Otwiera nowe okno w którym możemy przystąpić do pisania kolejnego programu
Save – Zapisuje zmiany w już wcześniej zapisanym pliku
Save as – Zapisuje plik ,który wcześniej nie został zapisany
Open  - Otwiera  wcześniej zapisany plik
Teraz zajmę się przyciskami znajdującymi się na pasku narzędzi:
       - Sprawdzanie ewentualnych błędów w programie. W wypadku znalezienia błędu informuje o tym pod programem.
       - Kompiluje gotowy program ,a więc zamienia dyrektywy języku BASCOM na kod zero-jedynkowy.
    - Wysyła kod zero-jedynkowy do mikrokontrolera. Funkcja ta używana jest jedynie w wypadku osób korzystających z programatorów COM. 
      Teraz przyszła pora na skonfigurowanie naszego oprogramowania tak aby mógł współpracować z naszym mikrokontrolerem. Wybieramy więc zakładkę Options à Compiler à Chip.  W tym miejscu w sekcji Chip z rozwijanej listy należy wybrać nasz mikrokontroler , w naszym przypadku będzie to Attiny2313. Jeśli jednak korzystamy z wersji BASCOMA nie zawierającej bibliotek  dla tego procesora możemy spróbować wybrać  90S2313
Dodatkowe ustawienia na które powinniśmy zwrócić uwagę to:
XRAM à None
HW Stack à 32
Soft Stack à 0
Framesize à 50
Dodatkowo  w zakładce Options àEnvironment  à Editor zaznaczamy następujące elementy:
Autointed
Reformat BAS files
Reformat code
Syntax highlight
Show margin
Inne elementy powinny pozostać odhaczone .
Dodatkowo pozostałe ustawienia powinny wyglądać w następujący sposób:
Comment position à 25
TAB – size à 3
Keymapping à Default
No reformat extension à Data
Size of now editor windows à Maximized
     
     W zakładce Simular wybieramy opcje “Use integrated Simulator” natomiast wyłączamy „Run symulator of compilation”. Reszty opcji lepiej nie zmieniać. Powinny one pozostać w ustawieniu domyślnym. Oczywiście do omówienia pozostają nam również zakładki Programmer i Communication  ,ale tym zajmiemy się dopiero po podłączeniu programatora.
     
    Zajmijmy się teraz programatorem. Dla oszczędnych polecam nabyć go w popularnym serwisie aukcyjnym. Można zakupić go także w większości sklepów internetowych. Jeśli zdecydowaliśmy się na rozwiązanie z USB wybieramy programator stk500 ,natomiast w przypadku portu COM będzie to programator stk200. Razem z programatorem powinniśmy otrzymać także płytę ze sterownikami. Po podłączeniu programatora powinno pojawić się okno ”Wykryto nowe urządzenie itp.” I postępujemy zgodnie z instrukcjami wyświetlanymi na ekranie. Zapewne jednym z kilku kroków będzie umieszczenie płyty CD w napędzie. W przeciwnym razie komputer pobierze niezbędne sterowniki automatycznie z internetu. Po dokładniejsze informacje odsyłam do instrukcji ,którą powinieneś otrzymać razem ze swoim programatorem. Po pomyślnym zainstalowaniu sterowników należy sprawdzić na którym porcie com został zainstalowany twój programator. W tym celu wybieramy właściwości à system à menadżer urządzeń i odnajdujemy sterownik odpowiedzialny za nasz programator. Po prawej stronie w nawiasie umieszczona jest informacja o numerze portu do którego przypisany został programator. Jeśli liczba ta będzie dwu cyfrowa wówczas należy zmienić ją na niższą. Spowodowane jest to tym ,że Avr Studio obsługuje tylko porty o numerach od 1 do 9. W celu zmiany nr portu należy kliknąć na niego dwukrotnie lewym przyciskiem myszy w oknie menadżera urządzeń następnie wybrać zakładkę Usawienia portu i kliknąć przycisk Przesuń. Powinno nam się otworzyć okno w którym możliwa jest zmiana nr portu. Wprowadzone zmiany zatwierdzamy przyciskiem Ok.
     Teraz skoro mamy już programator  zainstalowany w systemie przystąpmy do wypełnienia zakładek Programmer i Communication w programie BASCOM-AVR. W tym celu otwórz powyższy program a następnie kliknij Options à  Programmer i wprowadzamy następujące ustawienia:
W sekcji Progrmmer wybieramy programator z którego  będziemy korzystać np. stk200. Jeśli korzystamy z programatora usb nie ma go zapewne na liścię dostępnych programatorów i możemy wybrać obojętnie co.
Dodatkowo zahaczone powinny zostać następujące opcje:
Auto Flash
Auto Verify
Upload Code and Data
Natomiast odhaczamy opcje Erase warning.
Teraz przejdźmy do zakładki Options à Comunication
W tym miejscu bardzo ważna rzeczą jest wybranie numeru portu COM z którego korzysta nasz programator. W przypadku programatora USB nic tu nie musimy zmieniać.

Dodatkowo sprawdź czy wszystkie opcje wyglądają w ten sposób:
Baudrate à 1200
Parity à None
Databits à 8
Stopbits à 1
Handshake à None
Emulation à TYY
RTS odhaczamy
Backcolor à Navy
    Przyszła pora na omówienie programu AVR Studio (uwaga: dotyczy to tylko osób z programatorami USB , w przeciwnym razie możesz ominąć ten tekst). Wygląda on w ten sposób:


      Jednak cała masa opcji tu zawartych jest dla nas bezużyteczna ponieważ my chcemy jedynie wgrać nasz skompilowany plik do mikrokontrolera. W tym celu należy wybrać opcje Tools à Programmer . Wówczas ukaże nam się okno w którym po prawej stronie musimy wybrać nr portu COM do którego przypisany jest nasz programator ,natomiast po lewej nazwę programatora z którego korzystamy np. stk500.  Następnie klikamy connect  i czekamy na otwarcie okna w którym zawarte będą rozmaite opcje służące do konfiguracji. W zakładce Main wybieramy nazwę mikrokontrolera. Ewentualnie w razie problemów możemy tu zmienić także wartość parametru ISP , ale na razie pozostawmy go bez zmian. Sekcja Flash w zakładce Programmer służy do wyboru lokalizacji naszego pliku HEX ,który został wcześniej skompilowany w programie BASCOM-AVR. Przycisk Program wysyła nasz program do mikroprocesora. Po paru sekundach program zostanie przesłany do mikrokontrolera.

     Dużym udogodnieniem w pracy programisty może być także płytka testowa. Jest to układ elektryczny zmontowany na płytce PCB zawierający rozmaite peryferia pomocne przy korzystaniu z mikrokontrolera np. wyświetlacze, przyciski, rezonatory kwarcowe ,głośniki, diody Led itp. Płytka taka zaopatrzona jest również w podstawkę z której można wyjmować oraz wkładać mikroprocesor a także złącze ISP pasujące do wtyku KANDA od programatora.     
      Ceny takich płytek wąchają się od kilkudziesięciu do kilkuset złotych. Są one także zazwyczaj skojarzone z jednym mikroprocesorem albo bardzo wąską grupą mikrokontrolerów. 
  
      Na koniec postaram się podsumować jak będzie wyglądać mechanizm programowania naszego mikrokontrolera .Po napisaniu programu w edytorze tekstu programu BASCOM-AVR  i naciśnięciu przycisku odpowiedzialnego za sprawdzenie ewentualnych błędów należy zapisać nasz program w przygotowanym wcześniej folderze. Następnie klikamy przycisk kompilacji . Po skompilowaniu programu zamykamy program BASCOM-AVR i uruchamiamy AVR Studio. Wybieramy opcje Tools à Programmer à Connect i w sekcji FLASH wybieramy lokalizacje naszego skompilowanego pliku (będzie miał format HEX) i naciskamy przycisk Program.  W kolejnym artykule zajmę się kolejnymi aspektami programowania

niedziela, 9 października 2011

Światłolub



    Tym razem chciałbym przedstawić jak zbudować bardzo prostego robota światłoluba. Jego zdaniem jest podążanie za źródłem światła. Ktoś kiedyś napisał, że"każdy początkujący robotyk powinien zacząć od zrobienia właśnie jego". krótko mówiąc jest to pozycja obowiązkowa. Przyznam się ,że popełniłem błąd przy kolejności zamieszczonych postów, ponieważ najpierw opisałem line followera, co sugeruje ,że to od niego właśnie należy zacząć podczas, gdy na początek lepiej wybrać światloluba. Z drugiej jednak strony oba te roboty są naprawdę proste w budowie i działają na podobnej zasadzie, więc nie ma to ,aż tak wielkiego znaczenia. Jednak oczy światłoluba będą stanowić fotorezystory a nie jak w przypadku line followera fototranzystory, które były wbudowane w czujnik CNY70. Myślę ,ze fotorezystory są elementem optycznym bardziej nadającym się do pracy w światłolubne niż fototranzystory. Poniżej przedstawiam listę konkretnych elementów w które należy się zaopatrzyć.








Spis elementów:
1.Pleksa, laminat lub płyta CD albo (jeśli wolicie być oryginalni) tak jak ja stara myszka komputerowa
2. 2x silniki z przekładniami
3. 2x fotorezystor lub ewentualnie fototranzystor
4. Rezystory - takie ja wymieniłem na schemacie 
5. 2x tranzystor BC337
6. Koszyczek na baterię lub po porostu sama bateria
7. Przewody
8. 2x Koła
9. Izolacja lub koszulki termokurczliwe




     Ja osobiście jako obudowę robota planowałem użyć myszki komputerowej i zmieścić całą jego zawartość w środku. Niestety, okazał się to zupełnie nie trafiony pomysł i stanowczo go odradzam. Ostatecznie nie udało mi się wszystkiego upchnąć i obudowa mojego światłoluba składa się tylko z dolnej części myszki. Lepszym sposobem jest wycięcie podwozia z pleksy. Jeśli zaistnieje konieczność uzyskania bardziej skomplikowanych figur (np. ja preferuje koło) zwykły brzeszczot nie wystarczy.Można wówczas użyć lutownicy transformatorowej i wytopić odpowiedni kształt. Najlepszym a zarazem niestety najdroższym sposobem jest tzw. dreml z piłą tarczową . Używa się go także do precyzyjnego wiercenia otworów (od ułamków do paru milimetrów średnicy).Ostatnim materiałem, o którym chciałbym wspomnieć,jest laminat ,który jednak moim zdaniem nie nadaje się dla początkujących ze względu na jego trudność obróbki, co wymaga specjalistycznego sprzętu. Jeśli ktoś jednak nie lubi się przemęczać i chciałby zaoszczędzić (choćby na pleksie, która jest stosunkowo droga) może użyć płyt CD.




    Kolejnym zagadnieniem są silniki. Myślę że nie ma co się tu zbyt dużo rozpisywać bo było to dokładnie wyjaśnione w temacie o line follower'rze. Przypominam : według mnie idealny silnik powinien mieć wbudowaną przekładnię i prostopadłościenny kształt. Ciekawą alternatywą są tu serwa modelarskie.Przekładnia jest konieczna ponieważ bez niej robot w najlepszym przypadku będzie się bardzo powoli rozpędzał do ogromnych prędkości.W 95 % nie ruszy jednak z miejsca. Prostopadłościenny kształt ułatwia natomiast przymocowanie silnika do korpusu robota np. za pomocą "kropelki" czy innego kleju cyjanoakrylowego.




   Powyżej umieściłem zdjęcie przedstawiające tranzystory w moim robocie. Na schemacie proponuje model BC337 ,ponieważ są tańsze i łatwiej dostępne niż te których ja użyłem (BD135), Teraz przyszła pora na wybór odbiornika optycznego. Mamy dwie możliwości zakupu: fotorezystor i fototranzystor. W praktyce różnica polega na tym, że fototranzystor jest po prostu tranzystorem, który przepuszcza prąd pomiędzy kolektorem i emiterem, tylko po przepuszczeniu prądu przez bazę ,którą stanowi w tym wypadku materiał światłoczuły w obudowie fototranzystora, natomiast fotorezystor jest rezystorem o zmiennej rezystencji (zmiennej zdolności do stwarzania oporu płynącemu prądowi). Można zauważyć tu pewna analogie pomiędzy fotorezystorem a potencjometrem, który też jest opornikiem o zmiennej oporności, ale w przypadku potencjometru tą oporność regulujemy za pomocą suwaka lub pokrętła (ewentualnie przycisków jak w wypadku potencjometrów cyfrowych), a w fotorezystorach zależy ona od natężenia światła. Jednak istnieje również inna zasadnicza różnica pomiędzy fotorezystorem i potencjometrem. Fotorezystor ma tylko dwa wyprowadzenia dlatego nie można go użyć jako dzielnika napięcia. Nie jest on również biegunowo spolaryzowany ( nie ma znaczenia w którą stronę go podłączymy), co w przypadku początkujących może mieć duże znaczenie. Często pomylenie kolejności wyprowadzeń bywa bowiem przyczyną problemów z niedziałającym układem. Daje to więc pewną przewagę fotorezystorowi. Jeśli jednak zdecydujemy się na zakup fototranzystora pamiętajmy,że należy wybierać te w przezroczystych obudowach. Ciemny kolor obudowy sugeruje ,że element działa w paśmie światła podczerwonego,więc robot będzie reagował np. na sygnał z pilota telewizyjnego a nie na promieniowanie widzialne.W tym miejscu nasuwa się pytanie: Skoro uważam, że fotorezystory są lepsze to dlaczego nie użyłem ich do line followera. Dlatego,że fototranzystory wchodzą w skład wszystkich transoptorów odbiciowych, które można kupić i działają one w pąśmie ir. Stosując fotorezystory musiałbym zbudować czujniki obiciowe samodzielnie co byłoby trudniejszym zadaniem, gdyż należało by także w dość precyzyjny sposób w samemu zrobionej obudowie umieścić diody ir.






   Lutujemy wszystko zgodnie z powyższym schematem według zasad o których wspominałem w poprzednich tematach. Ważne jest to ,aby cynę topić dopiero na lutowanym elemencie (nie przenosić cyny na grocie lutownicy). Możemy zrobić to na specjalistycznej płytce (tzw. płytce uniwersalnej) ,ale dla początkujących i przy tak prostym schemacie łatwiej będzie zrobić to na pająka (czyli bezpośrednio element do elementu).







   Jak widać bardzo małym nakładem pracy, finansów i czasu udało nam się stworzyć urządzenie ,które jak najbardziej można nazwać robotem i wielu początkującym zapewne przysporzy wiele satysfakcji. Powyższy projekt jest w pełni moim pomysłem. Inne roboty tego typu wymagały użycia mostków h (np. L293D) ,które są trudno dostępne i drogie ,a u mojego robota całym mózgiem są tylko 2 tranzystory. Aby usprawnić działanie naszego pojazdu możemy zastosować koszulki termokurczliwe nałożone na fototranzystory. Dzięki temu światło padające np. z prawej strony będzie stymulowało jedynie prawy sensor i odwrotnie. Mam nadzieję ,że zgromadzone tu informacje pozwolą wam na bezproblemowe stworzenie swojego debiutanckiego robota.

sobota, 8 października 2011

Wstęp kursu programowania – BASCOM AVR


   Po długiej przerwie wakacyjnej postanowiłem kontynuować pisanie mojej strony. Podczas tego okresu dużo czasu spędziłem na programowaniu w jednym z najprostszych obecnie języków jakim jest BASCOM. Jest to język obsługujący mikrokontrolery z rodziny AVR. Do tej pory pokazywałem projekty ,które mogły zostać z powodzeniem zrealizowane na zwykłych , pojedynczych tranzystorach lub gotowych układach scalonych nie zawierających pamięci. Umiejętność programowania otwierają przed nami jednak  zupełnie nowe możliwości . Nawet najprostszy język programowania jakim jest BASCOM (właściwie język programowania ,który mam na myśli to Basic a BASCOM-AVR to program kompilujący go) daje nam ogromną swobodę w tworzeniu rozmaitych projektów – od zegarków po wielozadaniowe platformy mobilne z manipulatorami. Tak więc jak powiedział Juliusz Cezar „Kości zostały rzucone”.
   Wbrew powszechnemu przekonaniu podstawy programowania można opanować już po jednym dniu nauki. Istnieje wiele rodzajów (tzw. rodzin) mikrokontrolerów. Ja zajmę się najbardziej popularną z nich a więc mikroprocesorami z rodziny AVR (inne to np. PIC czy ’51) gdyż są one kompatybilne z językiem BASCOM (warto zaznaczyć ,że istnieje wersja BASOCOM' a przeznaczona dla kontrolerów z rodziny '51 ale w tym kursie nie będę się tą grupą procesorów zajmował).  Kolejną decyzję jaką należy podjąć przed przystąpieniem do nauki jest wybór w jaki sposób mikroprocesor będzie komunikował się z komputerem. Może być to port COM lub USB. Port COM był w przeszłości używany do podłączania drukarek do komputera. Dziś mimo ,że wciąż ważny dla elektronika powoli odchodzi w zapomnienie.  Alternatywą dla takiego rozwiązania może być z kolei programator USB. Jednak BASCOM-AVR (kompilator języka Basic) nie obsługuje programatorów USB , dlatego też w tym wypadku należy użyć dodatkowego oprogramowania jakim jest AVR Studio.  Ja osobiście korzystam z programatora stk500 ,który wykorzystuje transmisje USB i właśnie z tego względu dodatkowo muszę używać programu Avr studio.  Warto również wspomnieć ,że do zaprogramowania mikrokontrolera programator nie jest elementem niezbędnym, bowiem wystarczy użyć 4 kabelków z rezystorami podłączonymi do odpowiednich pinów portu COM. Jednak korzystając z takiego rozwiązania należy liczyć się z możliwością spalenia portu COM. Ostatnim elementem jest oprogramowanie na komputer PC jakimi są wspomniane wcześniej programy BASCOM-AVR i AVR Studio.  Ten drugi jest potrzebny tylko jeśli zdecydowałeś się na wariant z USB.   Oba te programy są to  tzw.  kompilatory to znaczy zajmują się zamienianiem dyrektyw języka programowania na kod zero-jedynkowych  ,który następnie zostaje przesłany do mikrokontrolera.  BASCOM-AVR  jest kompilatorem języka BASCOM a więc  zamienia dyrektywy języka BASCOM ,natomiast AVR Studio jest kompilatorem języka C oraz assemblera. Oba te języki (szczególnie ten drugi) są znacznie trudniejsze w opanowaniu niż BASCOM. Zapytacie więc po co nam to AVR studio? A więc AVR Studio w przeciwieństwie do BASCOM –AVR pozwala na załadowanie kodu zero jedynkowego (wygenerowanego wcześniej w BASCOM-AVR na podstawie dyrektyw napisanych przez programistę czyli ciebie) do mikrokontrolera przez programator USB.  
   Każdy programator mikroprocesorów AVR (zarówno USB jak i COM) zakończony jest tzw. złączem KANDA . W instrukcji programatora powinien znajdować się rysunek z odpowiednio podpisanymi  pinami. Piny te należy podłączyć do tak samo nazywających się
nóżek mikroprocesora co obrazuje poniżej zamieszczony rysunek na przykładnie mikroprocesora o nazwie Attiny2313.


   Dlaczego akurat Attiny2313? Ponieważ darmowa wersja programu BASCOM-AVR pozwala na napisanie programu zajmującego maksymalnie 2kb pamięci FLASH (edit: obecnie jest to już 4kb!) i taką pojemność posiada właśnie Attiny2313. Gdybyśmy użyli np. Atmegi88 ,której pojemność wynosi 8kb pamięci FLASH zapłacilibyśmy ponad 10 zł więcej. Co więcej znaczna część podwyżki ceny wynika właśnie z przyrostu pamięci FLASH ,której i tak byśmy nie mogli użyć i 6kb pamięci zostało by nie wykorzystane. Do testów polecam wykorzystać płytkę stykową  ,która zarówno umożliwi łatwe i nie zwykle uniwersalne połączenie programatora jak i sprawdzenie działania swojego prototypu przed umieszczeniem w gotowym urządzeniu. Na koniec chciałbym wspomnieć o tym ,że język BASCOM ,będący zresztą dialektem języka Basic jest rzeczywiście dużo prostszy niż język C czy assembler  ,jednak okupione jest to tym ,iż programy przez niego tworzone zajmują stosunkowo więcej miejsca w pamięci FLASH mikroprocesora niż kody stworzone w trudniejszych językach.
  Temat ten potraktowałem jako wstęp.  W kolejnych , poświęconych programowaniu będę przedstawiał krok po kroku tajniki języka BASCOM.