Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

Prosty układ mikroprocesorowy

Moderatorzy: Jacek Bogusz, Moderatorzy

michalxb
-
-
Posty: 167
Rejestracja: 11 gru 2004, o 16:03
Lokalizacja: Łódź
Kontaktowanie:

Prosty układ mikroprocesorowy

Postautor: michalxb » 28 paź 2006, o 15:36

Witam!
Chcę zbudować układ który sterowałby napędem prostego robota, całość chcę oprzeć o mikroporcesor(możliwie nałatwiejszy w oprogramowaniu i w uruchomieniu) dodam ze bedzie to pierwszy taki układ wykonany przezemnie.

Teraz pytania:) :
1. jak uruchomić układ już w samym robocie??(chodzi mi o jakiś schemat ideowy układu dzieki któremu scalak ożyje)
2. jaki układ??
3. jaki programator(wolałbym gotowca)
4. Może jakieś proste źródło programu(choćby jeżeli na pinie x będzie sygnał to wyślij sygnał na pin y)

Pozdrawiam.
Michał M.

mw
-
-
Posty: 242
Rejestracja: 23 lut 2003, o 23:22
Lokalizacja: Busko Zdrój
Kontaktowanie:

Postautor: mw » 28 paź 2006, o 16:45

Moze na poczatek Bascomem sie zainteresujesz i mikrokontrolerami AVR lub 51.

michalxb
-
-
Posty: 167
Rejestracja: 11 gru 2004, o 16:03
Lokalizacja: Łódź
Kontaktowanie:

Postautor: michalxb » 28 paź 2006, o 16:45

Znalazłem w szafie układ: ATMEGA8535

Moze być na początek??

Był wpięty w podstawkę która za pomoca kabli była spiętaz wtyczką do wpięcia w płycie głównej.

To chyba "programator" istnieją tak proste??

[ Dodano: 28-10-2006, 17:03 ]
Wyczytałem że ten procek co ja mam to nowsza wersja AT90S8535

To prawda??

MDz
-
-
Posty: 365
Rejestracja: 29 mar 2003, o 13:35
Lokalizacja: Warszawa
Kontaktowanie:

Postautor: MDz » 28 paź 2006, o 17:28

Czy już masz działającego mechanicznie robota?
W takim razie obejrzyj go dokładnie i odpowiedz sobie na następujące pytania:

- Jak zostały rozwiązane napędy w robocie? Silniki krokowe (jakie)? Silniki DC + niezależne czujniki położenia? Gotowe serwomechanizmy w wbudowanym sprzężeniem zwrotnym?. Iloma napędami musisz sterować? Jakich wymagają mocy i napięć zasilania?

- Jak zostały rozwiązane czujniki położenia? Jakie sygnały musisz interpretować (analogowe, impulsy z enkoderów inkrementalnych, sygnały kodowe z enkoderów absolutnych). Ile tego jest?

- Czy robot ma jakieś dodatkowe czujniki? Optyczne? Siły uchwytu/nacisku? Jeżeli tak, to jakie sygnały z nich otrzymujesz?

- Jak ma wyglądać panel operatorski? Ile elementów (tzn. przycisków, joysticków, kontrolek. Jakiś wyświetlacz?) musisz na nim musisz umieścić, żeby było możliwe sterowanie robotem?

- Czy przewidujesz zdalne sterowanie robotem (np. droga radiową lub IR)?

- Jak chcesz się komunikować z PC-tem. Przez RS232? Przez USB?

Po podliczeniu tego wszystkiego okaże się, że potrzebujesz
(oczywiście to tylko abstrakcyjny przykład):
* 4 wyjścia PWM do sterowania silników DC 12V + drivery wykonawcze
* dwa czterowyjściowe drivery do sterowania silników krokowych (12Vdc)
* dwa wyjścia dwustanowe + drivery do sterowania elektromagnesów sprzęgieł

* 2 dwuliniowe kanaly do odczytu impulsow z enkoderów inkrementalnych
* 4 kanalowy przetwornik ADC do odczytu sygnalow z czujników nacisku i oświetlenia

* wyświetlacz LCD
* 24 przyciskową klawiaturę
* kontroler USB podłaczony do portu szeregowego w mikrokontrolerze
* odbiornik radiowy podłaczony do drugiego portu szeregowego

.... + pewnie jeszcze garść innych drobiazgów, o których i tak się nie pamięta na początku.

Gdy to wszystko podliczysz zastanów się jakie zdarzenia będą wymagały najszybszych reakcji ze strony mikrokontrolera. Takim żródłem może okazać się np. enkoder inkrementalny. Jeżeli masz pewność że będzie sie kręcić bardzo wolno, to możesz obciążyć uC zadaniem interpretowania zmian stanu na jego liniach i programowej interpretacji kierunku ruchu i zliczania położenia. Ale jeżeli uC przestanie się wyrabiać z programową obsługą enkodera i gubiąc impulsy zacznie przekłamywać położenia to bedzie znak, że trzeba: lepszej organizacji programu albo wydajniejszego uC albo sprzętowego licznika z dekoderem kwadraturowym (np. LS7166).

Nad wyborem uC powinieneś się zastanawiać dopiero wtedy gdy:
- będziesz mieć pojęcie na temat liczby i konstrukcji wymaganych układów peryferyjnych.
- będziesz potrafił _oszacować_ wymagania odnośnie wydajności uC. Oczywiście nie ma sensu na sucho liczyć MIPSów, ale warto mieć jakąś wizję w rodzaju : "Dwa źródła zdarzeń powinny być obsługiwane w czasie setek us więc muszę je obrobić w przerwaniach. Od reszty wymagam czasu rekacji nie dłuższego niż 20ms".

Podlicz ile Twój uC musi mieć:
- cyfrowych linii wyjściowych
- wyjść analogowych (czy wystarczą PWM?),
- wejść cyfrowych,
- wejść analogowych.

Ile bedziesz potrzebował sprzętowych liczników/timerów? Zapewne co najmniej jednego do generowania przerwań zegarowych synchronizujących działanie całego systemu. Ale może więcej?

Czy będą Ci potrzebne dodatkowe interfejsy szeregowe?
Na pewno wykorzystasz jeden lub dwa UARTy do komunikacji z PC-tem (USB + sterowanie radiowe?).
Ale czy bedziesz potrzebował również SPI i I2C? Pewnie tak, bo pierwsze czego Ci zabraknie to wbudowanych portów, żeby obsłużyć LEDy na panelu operatorskim. W takim przypadku bardzo przydają się wszelakie ekspandery (PCF8574 po I2C, lub zwykłe HC4094 ew. HC595 przypinane do SPI).

Dopiero po skompletowaniu tych informacji bedziesz w stanie oszacować potrzebne zasoby uC.

Drugie kryterium jakim musisz się kierować wybierając rodzinę uC to:
- własna wiedza ;-)
- detaliczna dostępność samych układów (i ew. modułów uruchomieniowych),
- łatwość programowania (tzn. prosty programator ISP lub bootloader),
- dostępność narzędzi programistycznych (co najmniej dobrze działający kompilator C),
- dostępność dokumentacji, książek, artykułów, kumatych ludzi na listach dyskusyjnych, itp..

W naszych realiach możesz bez problemu brać pod uwagę AVRy (ATMega Atmela) i PIC-e Microchip-a. A także kilka wcieleń ARM-ów (np. LPC2000 Philipsa) - ale to już wariant ambitniejszy.

Nie wiem jakie jest Twoje doświadczenie, ale z zadanych pytań wnioskuję, że raczej niewielkie. Dlatego zaczynanie od sterownika robota będzie IMHO zadaniem dosyć trudnym. Po prostu w robocie wiele rzeczy może się dziać jednocześnie i zapanowanie nad tym wymaga pewnego doświadczenia i umiejętności podejścia do systemu jako całości. Choć z drugiej strony w tego typu projekcie łatwo o widowiskowe efekty i cząstkowe sukcesy a to bardzo dodaje chęci do nauki i dalszego działania. ;)

Jak sądzę zaczynasz od zera i przede wszystkim chcesz się pobawić. Jednocześnie nie projektujesz serii produkcyjnej a tym samym nie jesteś zobligowany do zadowalania księgowego i wyciskania siódmych potów ze słabego uC.

Dlatego moja propozycja jest następująca:
- Przejrzyj ofertę paru wymienionych poniżej sklepów pod kątem minimodułów i płytek uruchomieniowych. Załóżmy, że zdecydujesz się na Atmela (przynajmniej tak wygladałby mój subiektywny wybór).
http://www.kamami.pl
http://www.propox.com
http://www.mikroprocesor.pl
http://www.seguro.pl

- Wybierz zestaw uruchomieniowy z którym bedziesz mógł szybko zacząc pisać i uruchamiać programy. Na początek będzie sukcesem jak uda Ci się pomrugać LEDem, pokazać coś na wyświetlaczu, obsłużyć klawiaturę matrycową nie pochłaniając 100% czasu CPU,... a wreszcie zakręcić _jednym_ silnikiem krokowym. Na oprogramowanie robota przyjdzie czas później.

Na płytce uruchomieniowej oprócz uC masz zawarty pokaźny zestaw najbardziej przydatnych peryferiów co znacznie ułatwia start bez doświadczenia. Ale niestety zestawy uruchomieniowe mają też swoją cenę. Niemniej, gdybyś zdecydował się na ten wariant to proponuję np. ATMega8 (ew. większy). Ten uC ma już na tyle rozbudowane zasoby, że ograniczenia nie powinny Ci przeszkadzać w eksperymentach.

Drugi wariant to zakup minimodułu z procesorem (i minimalnym zestawem niezbędnych dodatków), który możesz wetknąć w płytkę bazową zrobioną wg. własnego projektu z własnymi układami peryferyjnymi. W ten sposób unikasz trudnego (dla początkujących) montażu wielonózkowej kości SMD a obracacz się jedynie w rastrze 2.54mm - znacznie łatwiejszym w obsłudze, choćby na płytkach uniwersalnych. W takim przypadku wybierz np. minimoduł ATMega128 (kilkadziesiąt PLN). Do prostych eksperymentów będziesz miał duuuuży zapas zasobów. Do robota juz nie taki duży, choć raczej szybko Ci ich nie zabraknie. Jednak ten sam moduł możesz wykorzystać w kilku układach docelowych. W przyszłości m.in. w sterowniku robota - gdy już będziesz wiedział co ma się w nim znaleźć.

Na temat AVR-ów znajdziesz masę materiałów - zarówno po angielsku jak i polsku. Np:
- kilka sensownych książek z BTC: http://www.btc.pl

- sporo artykułów w Elektronice Praktycznej - m.in. zeszłoroczny cykl Jurka Szczesiula na temat AVR-GCC (http://winavr.sourceforge.net/) i jego własnego środowiska AVRSide (http://www.avrside.fr.pl/)

- setki stron w internecie (np. http://www.avrfreaks.net/)


Pytałeś o programatory do Atmeli. Najprościej będzie zmontować coś podobnego do STK200 i popędzić je z jednego z dostępnych programów. Oto parę przykładów:

- Programator Adama Dybkowskiego: http://www.amwaw.edu.pl/~adybkows/elka/ispprog.html

- PonyProg:
http://www.lancos.com/

- AVRDude:
http://www.nongnu.org/avrdude/


--
MDz
Ostatnio zmieniony 28 paź 2006, o 17:48 przez MDz, łącznie zmieniany 2 razy.

michalxb
-
-
Posty: 167
Rejestracja: 11 gru 2004, o 16:03
Lokalizacja: Łódź
Kontaktowanie:

Postautor: michalxb » 28 paź 2006, o 17:35

Nie zrozumielismy się troszke:)
robot będzie jak narazie prosty dwa silniki dc, dwa czujniki(przyciski z "czułkami")
Do tego przednie koło samonastawne, i to wszystko
konstrukcja mechaniczna jest na ukończeniu.

Narazie jedynym zadaniem robota bedzie omijanie przeszkód, czyli np. jedzie do przodu natrafia na przeszkodę, zatrzymuje sie cofa skręca i jedzie dalej i to wszystko.
Nie ma być żadnego sterowania(jak na razie)

Ale zestawami uruchomieniowymi sie oczywiście zainteresuję:)

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty: 2650
Rejestracja: 24 sty 2005, o 00:39
Lokalizacja: Winny gród

Postautor: pajaczek » 28 paź 2006, o 19:48

Po podliczeniu tego wszystkiego okaże się, że potrzebujesz:

(...)
I mala elektrownie :mrgreen:



Michal:

Cos co powyzej opisujesz bylo opublikowane w wakacyjnych wydaniach EP (ale chyba 2005 - kurcze... to juz tak daaawno :wink: ).

michalxb
-
-
Posty: 167
Rejestracja: 11 gru 2004, o 16:03
Lokalizacja: Łódź
Kontaktowanie:

Postautor: michalxb » 28 paź 2006, o 19:54

Ale na bazie jakiegoś mikroprocesora??
Bo chodzi o to żeby były możliwości rozbudowy robota.

pozdrawiam.
Michał M.

MDz
-
-
Posty: 365
Rejestracja: 29 mar 2003, o 13:35
Lokalizacja: Warszawa
Kontaktowanie:

Postautor: MDz » 28 paź 2006, o 19:55

Nie zrozumielismy się troszke:)
robot będzie jak narazie prosty
Ok. To upraszcza sprawę. Ale tylko ilościowo, bo jakościowo nic się nie zmienia. Tak samo musisz policzyć ile potrzebujesz linii wejściowych, ile wyjściowych, jakie układy wykonawcze muszą pośredniczyć między uC a sterowanym otoczeniem, itd... Po prostu różnica skali. Ale to wcale nie przeszkadza w wyrabianiu dobrych nawyków. ;-)
dwa silniki dc, dwa czujniki(przyciski z "czułkami")
Do tego przednie koło samonastawne, i to wszystko
konstrukcja mechaniczna jest na ukończeniu
"RoboRobak", EP8,9/2005
Zbudowany na ATTiny2313 (chyba) i L293 w roli mostkowych driverów silników DC.

--
MDz

michalxb
-
-
Posty: 167
Rejestracja: 11 gru 2004, o 16:03
Lokalizacja: Łódź
Kontaktowanie:

Postautor: michalxb » 28 paź 2006, o 20:57

A macie możliwość przesłania skanów tego artykułu??

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty: 2650
Rejestracja: 24 sty 2005, o 00:39
Lokalizacja: Winny gród

Postautor: pajaczek » 28 paź 2006, o 23:17

Sam masz mozliwosc sciagniecia nie skanow, a pdf z nimi... z archiwum EP !!

Awatar użytkownika
Futrzaczek
-
-
Posty: 781
Rejestracja: 4 gru 2005, o 17:48
Lokalizacja: Piotrków Tryb
Kontaktowanie:

Postautor: Futrzaczek » 29 paź 2006, o 10:31

To może ja tak na boku sypnę garścią linków...
Link1
Link2
Link3
Link4
Link5
Tylko nie bijcie, że z Elektrody... :|
Mostek H
A do programowania mam kilka oporników i ekranowany kabel wielożyłowy... Zrobione według :arrow: Bacomowego Helpu.

Wróć do „Elektronika - tematy dowolne”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 209 gości