Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:miw:2009:miw09_nxtsensors1 [2009/07/27 15:51]
jsi08
pl:miw:2009:miw09_nxtsensors1 [2019/06/27 15:50] (aktualna)
Linia 96: Linia 96:
  
 ==== Opis złącza 2x5pin ==== ==== Opis złącza 2x5pin ====
-W prawym górnym rogu płytki (wg orientacji na zdjęciu) znajduje się gniazdo do podłączenia zasilania/​masy czy też (obecnie nie wykorzystywane) komunikacji I2C. Piny podłączone są następująco (orientacja tak jak na zdjęciu.):​ +W prawym górnym rogu płytki (wg orientacji na zdjęciu) znajduje się gniazdo do podłączenia zasilania/​masy czy też (obecnie nie wykorzystywane) komunikacji I2C. Piny podłączone są następująco (orientacja tak jak na zdjęciu.):\\ 
- 1 X 2 X X +** 1 X 2 X X**\\ 
- 3 4 5 X X+** 3 4 5 X X**\\
  
- +Legenda:\\ 
-Legenda: +1 - VCC \\ 
-1 - VCC +2 - SCL \\ 
-2 - SCL +3 - GND \\ 
-3 - GND +4 - GND \\ 
-4 - GND +5 - SDA \\ 
-5 - SDA +x - pin nie podłączony\\ 
-x - pin nie podłączony+** 
 +Uwaga!**: Napięcie VCC jest de facto prowadzone do stabilizatora napięcia 5V więc - wg specyfikacji technicznej scalaka 7805 - dopuszczalne napięcie podane na pin 1 może mieć max 35V. Zakładając jednak, że nie zamontowałem radiatora na stabilizatorze takie napięcie byłoby zabójcze dla układu. Idealnie natomiast nadaje się napięcie dostarczone przez NXT (biała żyłka w konektorze NXT - +9V).\\
  
 ====== Uwagi do skonstruowanego czujnika ====== ​ ====== Uwagi do skonstruowanego czujnika ====== ​
Linia 119: Linia 120:
 Wspomniany komercyjny schemat sonarów można znaleźć np. pod tym adresem: [[http://​www.freeinfosociety.com/​electronics/​schemview.php?​id=2096|SRF06]]\\ Wspomniany komercyjny schemat sonarów można znaleźć np. pod tym adresem: [[http://​www.freeinfosociety.com/​electronics/​schemview.php?​id=2096|SRF06]]\\
 Kupić zaś można choćby tutaj: [[http://​www.nodna.com/​xtc/​product_info.php?​language=en&​info=p617_Devantech-SRF08-Ultraschall-Sensor.html|SRF08-sklep]].\\ Kupić zaś można choćby tutaj: [[http://​www.nodna.com/​xtc/​product_info.php?​language=en&​info=p617_Devantech-SRF08-Ultraschall-Sensor.html|SRF08-sklep]].\\
 +Dzięki temu zabiegowi udało mi się uzyskać zasięg do około 2m.\\
 +
 +Jako IDE do pisania kodu w C dla mikrokontrolera użyłem [[http://​www.atmel.com/​dyn/​Products/​tools_card.asp?​tool_id=2725|AVR Studio]] w wersji 4.13. Poniżej zamieszczam spakowany projekt utworzony właśnie w tym środowisku:​\\
 +{{:​pl:​miw:​2009:​nxtsensor_avrstudio_projekt.rar|}}\\
 +
 +
 +====== Zaistniałe problemy, pomysły na rozwiązanie ======
 +Problemy, które pojawiły się w trakcie realizacji projektu podzieliłem na kilka części. Przy niektórych problemach zamieszczam uwagi i pomysły na ich rozwiązanie.\\
 +=== Zasięg i dokładność sonaru ===
 +  * Dokładność - czujnik ostatecznie pracuje z dokładnością ok. 5cm. Tzn dla odległości 10 do 15cm wyświetla 15cm, dla odl. 20 do 25cm wyświetla 25cm itd. Problemem przy jego programowaniu okazał się brak liniowości mimo oczywistej stałej prędkości dźwięku w powietrzu. Co kilkanaście/​kilkadziesiąt centymetrów musiałem własnoręcznie kalibrować czujnik. A dokładniej eksperymentalnie ustalać jaka ilość taktów zegara (korzystałem z wewnętrznego zegara 1MHz) oznacza jaką odległość. Tym samym skonstruowałem umownie dużą (40 elementów)tablicę spodziewanych ilości taktów dla danych odległości. Z tego właśnie powodu użyta została podziałka 5cm. Być może zachowanie to wynikało z zastosowania płytki stykowej do prototypowania,​ a dokładniej jej zawodności przy częstotliwościach rzędu 40kHz? ​
 +  * Odległość - Nawet po modernizacji układu (układ max232) badanie odległości powyżej 2m nie miało sensu - sygnał zanikał a przeszkoda musiała być położona idealnie prostopadle do czujników. Rozważając ponownie układ SRF08 omawiany wyżej można by skorzystać z rozwiązań przez niego proponowanych?​ Ostatecznie jego twórca zapewnia zasięg do 6m. Osiągnął to prawdopodobnie poprzez skorzystanie z cyfrowego potencjometru sterowanego przez mikrokontroler (niestety nie udało mi się go znaleźć w sklepach elektronicznych) który ustawiał '​tolerancyjność'​ komparatora w zależności od odległości. Oraz z dodatkowego wzmacniacza operacyjnego wzmacniającego sygnał odebrany przez odbiornik ultradźwięków. Wreszcie można by nałożyć na nadajnik/​odbiornik ultradźwięków "​tuby"​ ukierunkowujące mechanicznie sygnały nadawane/​odbierane przez nie?
 + 
 +=== Komunikacja I2C ===
 +(Linki do omawianych tu tematów znajdują się na dole strony).\\
 +Dla mikrokontrolera Atmega udało mi się znaleźć gotową bibliotekę (Procyon AVRlib - linki na dole strony) na licencji GPL mającą m.in. zaimplementowaną wysokopoziomową obsługę protokołu I2C. Ze strony NXT korzystałem z języka NXC i IDE BricxCC (Bric Command Center). Jednak - nawet mimo, że korzystałem z [[http://​www.avrfreaks.net/​index.php?​name=PNphpBB2&​file=viewtopic&​t=80990|przykładu]],​ który teoretycznie powinien działać. Na przytoczonym forum nie udało się znaleźć odpowiedzi. Znalazłem jeszcze kilka wątków na różnych forach, z których wynikało że NXT z **firmware'​em starszym niż 1.05** ma bugi związane z komunikacją przez I2C. W testowanym zestawie NXT znajdował się firmware 1.01. Nie podjąłem się jednak jego wymiany.\\ ​
 +
 +Ewentualnie można by próbować podszyć się pod dostarczany w zestawie czujnik ultradźwięków?​ Jednak wbrew pozorom nie jest to proste. Lego nie udostępnia kodu źródłowego mikrokontrolera użytego w ich czujniku. Nie wiadomo więc co i kiedy wysyła do bricka. Można jedynie dowiedzieć się jak - dostępny jest dokument opisujący format akceptowalnych komunikatów I2C obsługiwanych przez NXT.
 +
  
 +=== Komunikacja z PC ===
 +Do tej części nie udało mi się niemal w ogóle dotrzeć. Warte odnotowania jest jedynie to, że w standardzie języka NXC znajdują się interfejsy odpowiedzialne za komunikację bluetooth, które być może można by wykorzystać do podłączenia Brick'​a do PC. Wciąż jednak problemem pozostanie zaimplementowanie własnych czujników w środowisku graficznym na PC. Jak można zrobić własny bloczek?
 +=== inne ===
 +  * Kabel NXT - wbrew pozorom końcówki opracowane przez lego nie są zgodne ani ze standardem telefonicznym (RJ11) ani z Ethernetem (RJ45). W obu przypadkach wtyczki minimalnie się różnią. Rozwiązaniem pozostaje nabycie w np. [[http://​twojrobot.nazwa.pl/​sklep1/​product_info.php?​cPath=22_33&​products_id=112&​osCsid=e56f5b0db34b7373a7c3c3dbbe965012| tym sklepie]] lub skorzystanie z [[http://​www.philohome.com/​nxtplug/​nxtplug.htm|tutoriala]] pokazującego jak samodzielnie wykonać taką wtyczkę.\\
 +  * Zasilanie - W tym wypadku problemu właściwie nie ma - można zasilać układ bezpośrednio z Brick'​a NXT gdyż biała żyłka z wtyczki NXT udostępnia napięcie 9V. Dodatkowo gdyby wymienić mikrokontroler na Atmega8L o obniżonym napięciu zasilania (od 2.7V do 5.5V) można by w ogóle usunąć z układu stabilizator napięcia i zamiast tego skorzystać z napięcia 4.3V dostarczanego przez żyłkę zieloną. \\
 +Źródło informacji:​\\
 +[[http://​en.wikipedia.org/​wiki/​Lego_Mindstorms_NXT|wikipedia - patrz sekcja ' Connector'​]],​\\
 +[[http://​www.hth.com/​filelibrary/​PDFFILES/​ATmega8.pdf|Dokumentacja Atmegi 8]].
  
 ====== Programator ====== ====== Programator ======
Linia 465: Linia 492:
 #define mU ((1<<​LEDC)|(1<<​LEDD)|(1<<​LEDE));​ #define mU ((1<<​LEDC)|(1<<​LEDD)|(1<<​LEDE));​
 </​code>​ </​code>​
 +
 +====== Materiały ======
 +Ponownie zamieszczam - tym razem w jednym miejscu - kod źródłowy oraz projekt w Eagle.\\
 +1) {{:​pl:​miw:​2009:​nxtsensor_avrstudio_projekt.rar|}}\\
 +2) {{:​pl:​miw:​2009:​nxtsensor_eagle_projekt.rar|}}
  
 ====== TODO - Materiały, linki ====== ====== TODO - Materiały, linki ======
Linia 483: Linia 515:
 14)[[http://​www.prototypy.com/​|Firma 1 gdzie można zamówić wykonanie profesjonalnej płytki PCB]].\\ 14)[[http://​www.prototypy.com/​|Firma 1 gdzie można zamówić wykonanie profesjonalnej płytki PCB]].\\
 15)[[http://​www.drukowane.pl/​|Firma 2 gdzie można zamówić wykonanie profesjonalnej płytki PCB]].\\ 15)[[http://​www.drukowane.pl/​|Firma 2 gdzie można zamówić wykonanie profesjonalnej płytki PCB]].\\
 +16)[[http://​www.tme.eu/​pl/​|Sklep 1]].\\
 +17)[[http://​www.cyfronika.com.pl/​|Sklep 2]].\\
 +18)[[http://​www.hth.com/​filelibrary/​PDFFILES/​ATmega8.pdf|Dokumentacja Atmega8]].\\
 +19)[[http://​www.freeinfosociety.com/​electronics/​schemview.php?​id=2096|Schemat komercyjnie sprzedawanego czujnika odległości]].\\
 +20)[[http://​en.wikipedia.org/​wiki/​Lego_Mindstorms_NXT|NXT na wiki (patrz sekcja '​Connector'​)]].\\
pl/miw/2009/miw09_nxtsensors1.1248702699.txt.gz · ostatnio zmienione: 2019/06/27 15:57 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0