czwartek, 20 marca 2014

Opis sterownika robota

Znajdujący się w serwokontrolerze mikrokontroler to AT90USB647. Wybrałem go z powodu możliwości realizacji sprzętowego interfejsu USB. Układ posiada 64 kB pamięci FLASH, która pomimo niewielkiej pojemności była wystarczająca do nagrania kilkudziesięciu sekwencji ruchów. Taktowany jest rezonatorem kwarcowym 16 MHz, czyli pracuje z maksymalną częstotliwością, mimo to po podłączeniu do komputera poprzez USB widoczne są nieregularne, lekkie drgania poszczególnych serwomechanizmów (mniej więcej co sekundę), co może wskazywać na niedobór mocy obliczeniowej procesora.

Sterownik posiada 24 kanały PWM oraz 24 multipleksowane tory pomiarowe wykorzystywane do odczytu bieżących pozycji serw. Konieczne jest zastosowanie multipleksowania, ponieważ przetwornik ADC jest 8 kanałowy. Do tego celu wykorzystywane są analogowe muxy/demuxy M74HC4051RM13TR.

Programowanie uC może się odbywać na dwa sposoby: poprzez interfejs ISP i złącze zgodne ze standardem stk200/KANDA lub przez port USB i dzięki znajdującemu się w pamięci Flash bootloaderowi. Kiepskim pomysłem było zastosowanie na płytce gniazda typu USB-A, które z czasem się wygięło i teraz trzeba uważać, aby nie oderwać go od płytki.

Robot jest sterowany poprzez bezprzewodowy kontroler z PS2. Komunikacja mikrokontrolera z transceiverem odbywa się poprzez magistralę SPI. Pewnych problemów przysporzyła nam nieoryginalność pada, mianowicie oryginalne pady mogą być zasilane napięciem od 3.3V do 5V, a nasz tylko 3.3V. Dlatego też trzeba było zrobić translator poziomów napięć logicznych na układzie 74LS07, a samą płytkę umieścić „na kablu”.

Aby zwiększyć dokładność przetwornika ADC, ale też ustalić konkretne napięcie referencyjne zastosowałem zewnętrzne, regulowane układem potencjometr-dzielnik źródło napięcia odniesienia TL432ACD.

Płytka posiada złącze do monitorowania napięć na poszczególnych celach pakietu, aby zapobiec ewentualnym uszkodzeniom. Zewnętrzne rezystory tworzą dzielniki umożliwiające pomiar.

Na schemacie znajdują się diody statusowe LED. Zielona D3 zaświeca się gdy z zewnątrz (poprzez USB lub ARK2) jest doprowadzone napięcie zasilające. Czerwona D5 służy do sygnalizacji stanu reset procesora, natomiast żółta D4 jest diodą dodatkową, programowalną, wskazującą na rozładowanie akumulatora. 

Dodatkowe złącza służą J1, J2 służą kolejno do aktywacji zasilania/zastosowania bezpiecznika półprzewodnikowego i do odłączania/podpinania kondensatora do wejścia reset. Problem mogący wystąpić podczas programowania uC jest dokładniej opisany tutaj: http://mikrokontrolery.blogspot.com/2011/04/minimalne-podlaczanie-pinow.html. Z doświadczenia mogę powiedzieć, że w naszym przypadku kondensator nie uniemożliwiał programowania.

Złącze SW służy do wpięcia zewnętrznego uswitch'a resetującego procesor. Złącze przycisku wchodzenia w tryb bootloadera nie zostało umieszczone na schemacie. Tak przy okazji, zauważyłem ciekawą rzecz, że czasem naciskając kilka razy szybko przycisk reset też można uruchomić bootloader. Przypadek? Nie sądzę :)

Brak komentarzy:

Prześlij komentarz