Posty: 852 Pomógł: 40 razy Otrzymał 162 piw(a) Skąd: Warszawa
Programuję w: C, BASIC
Wysłany: 13 Wrz 09 06:41 Przepis na robota - w pełni programowalny Line Follower
Zachęcony licznymi mailami, wiadomościami PW i dyskusjami toczonymi na forum, postanowiłem przygotować artykuł opisujący krok po kroku i bardzo łopatologicznie budowę robota klasy Line Follower - w pełni programowalnego. Części, które wykorzystałem są łatwo dostępne i nikt nie powinien mieć problemów z ich zakupem. Dodatkowo wybrałem takie, które można z powodzeniem znaleźć w jednym konkretnym sklepie (szczegóły w punkcie "Lista zakupów"). Jest to potrzebne minimum, choć oczywiście osoby z odrobiną doświadczenia zachęcam do sprawdzania własnych rozwiązań.
Wymagania potrzebne do budowy, to elementarna wiedza z zakresu elektroniki (w tym umiejętność lutowania) i obsługi prostych narzędzi (piła, wiertarka, pistolet do klejenia na gorąco). Prędzej czy później trzeba będzie także nauczyć się programować - o tym napiszę na końcu.
Krótki film przedstawiający gotowego robota zaprogramowanego dołączonym wsadem do procesora (uproszczony kod, bez sterowania PWM) - dodany w załączniku
1. Lista zakupów Pierwszy sklep, który odwiedzimy to AVT. Mieszkańcy Warszawy mogą go odwiedzić osobiście, pozostali muszą zamówić elementy w sklepie online (lub poszukać w innym). Kupujemy:
- płytkę uniwersalną PDU27 - 8zł
- mikroprocesor Atmega8 (7zł) wraz z podstawką (polecam precyzyjną - 1,70zł)
- mostek H L293D lub L293DNE (10zł) również z podstawką (polecam precyzyjną) - 1,40zł
- 3 transoptory odbiciowe CNY70 (czujniki linii) - 3x4,50zł
- 1 rezystor 470 Ohm (później nazywany 470R) - 0,25zł za 10 sztuk; 3 rezystory 240 Ohm (240R) - 0,25zł za 10 sztuk; 3 rezystory 10k Ohm (10K) - 0,60zł za 10 sztuk
- 1 dioda LED np. zielona - 0,20zł
- 1 korpus złącza żeńskiego goldpin 5x1 (1,20zł) wraz z blaszkami (0,60zł za 10 sztuk)
- 1 dwurzędowa listwa goldpinów (0,80zł) oraz 1 jednorzędowa, kątowa listwa goldpin (0,81zł)
- 2 metry 5-żyłowego przewodu wstążkowego, wielokolorowego (2x3,20zł za metr bieżący), można też przejść się do sklepu komputerowego i kupić dwa metry tzw. skrętki
- koszyk na 4 baterie AA z pokrywą i włącznikiem (2,81zł)
Podsumowanie:55,52zł + koszty przesyłki Drugi sklep to market budowlany (np. Leroy Merlin). Kupujemy w nim takie oto koło:
a także po dwie śruby o średnicy 3 i 4mm (im dłuższe tym lepsze, polecam tak min. 3cm dla średnicy 3mm i 5,5cm dla średnicy 4mm) i do każdej po 3 nakrętki (w sumie ok. 2zł)
Pora na sprawę najbardziej kłopotliwą - napęd. Do tego projektu wybrałem dwa serwa modelarskie - są chyba najłatwiej dostępne, mają odpowiedni moment obrotowy, w komplecie są orczyki ułatwiające montaż kół i wymagają zasilania 5-6V, czyli akurat tyle, ile dawać będzie nasze źródło zasilania. W moim przypadku serwa to Hitec HS-322HD, ale stanowczo je odradzam ze względu na cenę (planuję je później wykorzystać do czegoś innego). W zupełności wystarczą tanie serwa TowerPro 5010 dostępne na Allegro za ok. 28zł sztuka, polecam jednak "polować" na serwa używane - bardzo często można kupić nawet za mniej niż 10zł sztuka. Mała uwaga - można dostać tzw. mikroserwa za 20zł, ale nie polecam ich początkującym, gdyż często powodują problemy przy koniecznych przeróbkach (będziemy nasze serwa musieli później odpowiednio dostosować do nowej roli - bezpośredniego napędu), dlatego kup je tylko jeśli wiesz co robisz.
Ostatni "sklep" to tak naprawdę kuchnia/piwnica. Potrzebujemy dwóch nakrętek od słoików o identycznej średnicy. Np. takich:
Można też pokombinować z czym innym - np. kołami od zabawek. Nakrętki nie są najlepszym rozwiązaniem (słaba przyczepność), ale wybrałem je ze względu na dostępność. Przyczepność można spróbować zwiększyć naklejając na całym obwodzie np. gumową samoprzylepną uszczelkę (nie posiadałem aktualnie takiej na stanie, więc sobie odpuściłem).
2. Lista narzędzi
Do wykonania robota będziemy potrzebować:
- piłki do metalu
- wiertarki i wiertła o średnicy 3 i 4 mm
- pistoletu do klejenia na gorąco wraz z wkładami uniwersalnymi
- zamiast piłki do metalu i wiertarki polecam zestaw miniwiertarki wraz z akcesoriami do wiercenia, cięcia i szlifowania (dostępny np. w Leroy Merlin i AVT, koszt: ok. 80zł; jeśli macie kasę, kupcie droższy zestaw firmy Dremell - ok 400zł, ponoć warto. Ja używam pierwszej opcji i nie narzekam)
- lutownicy / stacji lutowniczej (polecam stację Xytronic 369 - koszt ok. 100 zł, naprawdę warto) i spoiwo lutownicze z topnikiem (polecam cienkie, średnica w okolicach 0,38mm - dostępne w ofercie AVT)
- "ściągaczkę" do izolacji (dostępna np. w Leroy Merlin i AVT, koszt ok. 15zł)
- cążków bocznych (można dostać w AVT, koszt ok. 9 zł), ostatecznie mogą być mocne nożyczki
- kombinerek i śrubokręta
- programatora AVR ISP - po szczegóły odsyłam do tego tematu.
3. Zaczynamy
Uff, długość powyższych dwóch list wynika z tego, że wymieniłem wszystkie możliwe, potrzebne elementy. Prawda jest taka, że elektronicy i Ci, którzy mają za sobą konstrukcje typu Waldek Światłolub, mają już część tego wszystkiego na stanie (m.in. dlatego warto jest zaopatrywać się na zapas, zwłaszcza gdy nie mamy łatwego dostępu do potrzebnych rzeczy).
Mamy wszystko przygotowane, więc pora zabrać się do roboty.
Pierwszym krokiem jest przerabianie naszych serw modelarskich. Serwa są przystosowane do sterowania przy pomocy określonych impulsów, ich zakres obrotów ograniczony jest zwykle do 120 stopni - celem przerabiania jest pominięcie elektroniki sterującej, usunięcie potencjometru i mechanicznej blokady tak, by mogło pracować jak zwykły silnik z przekładnią. Poniżej zamieszczam krótki tutorial jak to zrobić, po szczegóły odsyłam do podlinkowanego parę linijek wyżej tematu.
Przecinamy płytkę wzdłuż linii - tak jak pokazałem na rysunku, a następnie na większej części "wtykamy" i lutujemy zaznaczone elementy (pod nazwami "L293D" i "Atmega8" na rysunku należy rozumieć same podstawki! Dodatkowo, lutowanie diody zostawimy na koniec - chcemy przecież, żeby wystawała ponad plątaniną kabli )
Czerwone, "wypukłe" kropki na rysunkach, będą oznaczały miejsca połączenia elementów z płytką (czyli po prostu luty). Zwróćcie uwagę na to, żeby luty były błyszczące i miały odpowiednią ilość spoiwa. Na początku tematu podawałem linka do poradnika dla tych, którzy nie potrafią lutować. Tzw. zimne luty są częstym powodem niedziałania układu - stąd moja uwaga.
Teraz zaczniemy łączyć elementy przy pomocy zworek. Tam, gdzie pola lutownicze przeznaczone do połączenia są w bezpośrednim sąsiedztwie, warto użyć kawałków drutu, np. z uciętych nóżek rezystorów.
Dla przejrzystości podzieliłem ten etap na części, dodatkowo każdemu z nich przydzieliłem inny kolor przewodów.
zasilanie
złącze programatora (typu KANDA)
połączenie atmegi i mostka
połączenie mostka i silników
połączenie czujników
Odcięty, mniejszy kawałek płytki wykorzystamy do budowy modułu z czujnikami.
Na końcu taśmy 5-żyłowej zakładamy złącze żeńskie goldpin. Wiercimy w płytce dwa otwory o średnicy 4mm, wkładamy w nie dwie śruby i dokręcamy z drugiej strony nakrętką. Moduł czujników gotowy.
Następnym krokiem jest wywiercenie otworów o tej samej średnicy i na tej samej szerokości w module z mikroprocesorem. Przykładamy również koło podporowe, oznaczamy położenie otworów i wiercimy - tym razem wiertłem o średnicy 3mm. Efekt końcowy powinien wyglądać mniej więcej tak:
Przyznam, że popełniłem w tym momencie błąd - źle wymierzyłem położenie otworów pod moduł czujników(nie uwzględniłem większej średnicy nakrętki, która zahaczała przez to o mostek H) i musiałem później dwa otwory na środku rozwiercać tak, by przesunąć moduł trochę do tyłu. Będzie to widać na późniejszych zdjęciach.
Teraz przystępujemy do połączenia naszych przerobionych serw z "kołami". Rozgrzewamy pistolet klejowy, kapiemy odrobinę kleju na środek nakrętek, przykładamy serwo orczykiem, pozycjonujemy (centrujemy) bardzo dokładnie i mocno dociskamy czekając aż klej zacznie stygnąć i wiązać.
Następnie kapiemy trochę kleju z tyłu, na spodzie naszego modułu z mikroprocesorem i dociskamy serwa - dbając, by były równo rozmieszczone.
Gdy klej stygnie, wkładamy dwie śruby (średnica 3mm) w koło podporowe, dokręcamy mocno, nakładamy na to jeszcze luźno po jednej nakrętce, wtykamy w wywiercone wcześniej otwory w module głównym i dokręcamy z góry, żeby koło nie wypadło. Gdy klej zastygnie, kapiemy nową porcję na górę płytki, kładziemy koszyk na baterie (tak, żeby klapka wysuwała się do tyłu, a włącznik był na spodniej jego części) i dociskamy mocno.
W podobny sposób jak przednie koło, zakładamy moduł z czujnikami pod modułem z mikroprocesorem, a następnie podłączamy czujniki do wyprowadzonego na płycie głównej złącza. Zastosowanie śrub pozwala na bardzo dokładną regulację położenia poszczególnych części względem siebie. Kładziemy robota na płaskiej powierzchni i odkręcając oraz dokręcając odpowiednio nakrętki dążymy do tego, żeby płyta z mikroprocesorem była idealnie do niej równoległa; czujniki natomiast powinny znajdować się około 3 mm nad podłożem. Wymaga to trochę cierpliwości i dokładności, ale na pewno się opłaci. Gdy uda nam się ta sztuka, pozostaje dokręcić wszystko do oporu i cieszyć skończonym "ciałem" robota
Zdjęcia są słabej jakości, robot traci na nich sporo swojego "uroku", dlatego jak tylko uzbroję się w lepszy aparat (w przyszłym tygodniu), wymienię je na coś lepszego.
4. Oprogramowanie
To jeszcze nie koniec naszej zabawy. Niektórzy powiedzieli by nawet, że dopiero początek Nie po to się przecież tyle męczyliśmy, żeby mieć nowy, ekstrawagancki mebel w naszym pokoju. W takiej postaci robot jest głuchy, niemy i sparaliżowany - mimo podłączonych czujników i silników. Należy teraz napisać do niego program, w którym za rączkę przeprowadzimy go przez wszystkie możliwe zadania i problemy, jakie w przyszłości napotka.
Nauka programowania jest tematem na oddzielny wątek i nie będę tu się na ten temat rozwodził. Jest świetny tutorial na tym forum - Kurs BASCOM - i warto z nim się zapoznać. Gwarantuję, że nie jest to nic trudnego i że można się z tym uporać w dwa dni, a jeśli ktoś programował wcześniej i szło mu przyzwoicie - wystarczy parę godzin. Dodałem przykładowy program w postaci pliku źródłowego (język BASCOM) oraz dwa skompilowane pliki (BIN oraz HEX - do wyboru) - wystarczy więc wgrać to do robota (patrz - lista narzędzi -> link programator AVR ISP oraz instrukcje, które dostaniecie po zakupie własnego programatora) i cieszyć sztuczną "inteligencją" w naszym własnym domu. Polecam rozłożyć na stole/podłodze duże, białe arkusze papieru i czarną taśmą izolacyjną wyznaczyć robotowi trasę do pokonania. Im lepszy program, tym trudniejszą i bardziej skomplikowaną trasę będzie w stanie pokonać. Po dopracowaniu robota (napisanie zaawansowanego programu, być może wymiana serw na szybsze silniki z przekładniami, stabilizowane napięcie, dławik między AREF/AVCC a VCC, kondensatory filtrujące) nic nie stoi na przeszkodzie, by wyruszyć z nim na zawody - szczegóły na pewno pojawią się na dioda.com.pl, gdy tylko taki będzie organizowany.
Życzę wszystkim powodzenia i wciągnięcia się w tematykę robotyki. No a przede wszystkim - dobrej zabawy
PS Wszelkie pytania proszę zadawać w tym temacie, nie na PW czy mail.
//edit
Zapomniał bym
//edit2
Dodałem tutorial o przerabianiu serw modelarskich.
//edit3
Przepraszam za gapiostwo, program w załączniku.
Uprzedzając komentarze - wartości PWM są takie a nie inne (255 lub 0), zostawiłem dobranie regulacji prędkości wg własnego uznania, dzięki temu każdy może w parę chwil zmienić osiągane prędkości obrotowe poszczególnych kół.
program_testowy.rar Program przeznaczony do "rozbudowy" - plik źródłowy oraz efekt kompilacji (BIN i HEX do wyboru, gotowe do bezpośredniego zgrania do robota)
Posty: 180 Pomógł: 16 razy Otrzymał 37 piw(a) Skąd: Pyskowice
Programuję w: C
Wysłany: 18 Wrz 09 09:31
Witam.
Artykuł ogólnie fajny.
Mam jednak kilka uwag:
Zamiast ATmega8 proponowałbym się przesiąść na ATmega88
jest to nowszy zamiennik, ma więcej funkcji, ale wyprowadzenia ma identyczne.
Co do rejestrów to w sieci jest do ściągnięcia PDF mega8 mega88 różnice
i tam w sposób tabelaryczny są przedstawione różnice w rejestrach.
Ale to jest uwaga dyskusyjna.
Teraz bardziej konkretna dotycząca przerabiania serwo:
narobiłeś się niepotrzebnie - skoro chcesz mieć dostęp bezpośrednio
do silnika to mogłeś wywalić całą elektronikę a te dwa kabelki przylutować
bezpośrednio do silnika lub przedłużyć łączące silnik z elektroniką
w ten sposób pozbywasz się niepotrzebnej już elektroniki (w Twoim przypadku pozostaje pierwsza opcja, bo w Twoim serwie silnik jest bezpośrednio przylutowany do płytki).
Ewentualnie można wykorzystać elektronikę w taki sposób:
zastąpić potencjometr dzielnikiem napięcia
i sterować silnik tak jak serwo sygnałem o zmiennym wypełnieniu
takie rozwiązanie wymaga tylko 1 pinu procesora a nie dwóch jak w przypadku L293
regulacja prędkości polega na podaniu sygnału różnego od 1500us (im różnica większa tym prędkość większa), to rozwiązanie eliminuje układ L293 z pytki.
Ostatnia uwaga:
Jakoś bardzo niewiele napisałeś nt. "złożenia zębatek z powrotem w całość".
To wymaga wykorzystania bolca zastępującego pokrętło potencjometru, mało tego bolec potencjometru mimo, iż jest okrągły na końcu jest frezowany co pozwala mu się kręcić razem z zębatką, która jest na niego nałożona, i z tym też sobie trzeba poradzić np. rozwiercić koniec otworu lub dać krótszy bolec, (ewentualnie łożyskować - POWODZENIA)
Jak już robisz "How To dla opornych" to nie możesz korzystać z takich skrótów myślowych.
Pozdrawiam
Zuk
"Nigdy nie mów ludziom, JAK coś zrobić. Powiedz im, CO zrobić, a oni zaskoczą cię pomysłowością."(G.Patton)
Ostatnio zmieniony przez Zuk 18 Wrz 09 09:46, w całości zmieniany 2 razy
Posty: 852 Pomógł: 40 razy Otrzymał 162 piw(a) Skąd: Warszawa
Programuję w: C, BASIC
Wysłany: 18 Wrz 09 02:20
Zuk napisał/a:
Zamiast ATmega8 proponowałbym się przesiąść na ATmega88
jest to nowszy zamiennik, ma więcej funkcji, ale wyprowadzenia ma identyczne.
Jest nowszy i ma więcej funkcji, ale atmege8 dostaniesz w każdym sklepie elektronicznym - a to był priorytet - jak napisałem we wstępie;)
Zuk napisał/a:
Teraz bardziej konkretna dotycząca przerabiania serwo:
narobiłeś się niepotrzebnie - skoro chcesz mieć dostęp bezpośrednio
do silnika to mogłeś wywalić całą elektronikę a te dwa kabelki przylutować
bezpośrednio do silnika lub przedłużyć łączące silnik z elektroniką
w ten sposób pozbywasz się niepotrzebnej już elektroniki (w Twoim przypadku pozostaje pierwsza opcja, bo w Twoim serwie silnik jest bezpośrednio przylutowany do płytki).
Mój sposób pozwala na łatwe przywrócenie serwu dawnej funkcjonalności. Dodatkowo "ucięcie" płytki z elektroniką (a tak zrozumiałem "wywalenie" jej) może narobić problemów - PCB jest elementem, który dodatkowo uniemożliwia obrót silnika względem obudowy (co mogło by się zdarzyć przy np. dużym obciążeniu na wyjściu przekładni).
Zuk napisał/a:
Ewentualnie można wykorzystać elektronikę w taki sposób:
zastąpić potencjometr dzielnikiem napięcia
i sterować silnik tak jak serwo sygnałem o zmiennym wypełnieniu
takie rozwiązanie wymaga tylko 1 pinu procesora a nie dwóch jak w przypadku L293
regulacja prędkości polega na podaniu sygnału różnego od 1500us (im różnica większa tym prędkość większa), to rozwiązanie eliminuje układ L293 z pytki.
Ostatnia uwaga:
Jakoś bardzo niewiele napisałeś nt. "złożenia zębatek z powrotem w całość".
To wymaga wykorzystania bolca zastępującego pokrętło potencjometru, mało tego bolec potencjometru mimo, iż jest okrągły na końcu jest frezowany co pozwala mu się kręcić razem z zębatką, która jest na niego nałożona, i z tym też sobie trzeba poradzić np. rozwiercić koniec otworu lub dać krótszy bolec, (ewentualnie łożyskować - POWODZENIA)
Jak już robisz "How To dla opornych" to nie możesz korzystać z takich skrótów myślowych.
Dlatego napisałem, żeby nie wykorzystywać do tego celu mikroserw - w ich przypadku było by świętą prawdą to co napisałeś, przy standardowym serwie typu TowerPro5010 czy chociażby moje HS-322HD potencjometr nie jest elementem "nośnym" konstrukcji - zębatka korzysta z wypustki z plastiku; nawet przy dużym obciążeniu wszystko działa stabilnie i nie słychać "zgrzytu" przeskakujących trybów.
Kaytec, dzięki za zwrócenie uwagi - byłem święcie przekonany, że program załączyłem. Zaraz przeszukam bezkresne wszechzasoby mojego zaśmieconego dysku [/b]
Posty: 412 Pomógł: 12 razy Otrzymał 57 piw(a) Skąd: Częstochowa
Programuję w: BASCOM
Wysłany: 26 Wrz 09 07:32
Wystarczy dokładna linijka, cyrkiel czy co kolwiek i ołówek. Mierzysz zaznaczasz i sprawdzasz na logikę czy jest dokładnie na środku.
//lukpep mnie wyprzedził
Posty: 412 Pomógł: 12 razy Otrzymał 57 piw(a) Skąd: Częstochowa
Programuję w: BASCOM
Wysłany: 26 Wrz 09 09:57
Kod:
to jak to zmierzyć ?
Jak zmierzyć środek?\
Nic prostszego. Mierzysz średnice zakrętki. Następnie dzielisz na pół i masz. Dla przykładu.
Jeśli masz średnice 6 cm to jak podzielisz na połowę to będzie 3cm. Na trzecim centymetrze od brzegu będzie środek.
Posty: 1361 Pomógł: 30 razy Otrzymał 94 piw(a) Skąd: Gdynia
Programuję w: Bascom
Wysłany: 26 Wrz 09 10:00
Co z tego, że Ci napiszemy jeszcze dokładniej jak i tak tego nie użyjesz bez kolejnego pytania?
Ale proszę:
1) odrysuj sobie koło na kartce papieru
2) narysuj sobie cięciwę odrysowanego koła
3) narysuj symetralną tej cięciwy
4) zrób punkt 2 i 3 jeszcze raz tylko w innym miejscu koła
5) w miejscu gdzie symetralne się przetną masz środek koła
6) wycinasz koło z papieru przykładasz do prawdziwego koła i zaznaczasz środek.
Posty: 256 Pomógł: 16 razy Otrzymał 12 piw(a) Skąd: Sosnowiec
Programuję w: Bascom
Wysłany: 27 Wrz 09 12:54
Hmm ta ostatnia teoria to już dość zaawansowana, poznawana w liceum przy okazji geometrii i użytkowania cyrkla, ewentualnie na uczelniach wyższych takich jak politechnika , na przedmiotach geometria wykreślna , ale racja najprostsze znane światu rozwiązanie tego problemu, choć przychodzi mi na myśl trochę prostsze. Wycinasz wzdłuż krawędzi elementu kartkę, wychodzi koło, im dokładniej tym lepiej, składasz na pół i później znów na pól i masz środek w środku
Posty: 1031 Pomógł: 59 razy Otrzymał 234 piw(a) Skąd: Warszawa
Programuję w: Bascom AVR
Wysłany: 27 Wrz 09 10:09
Luko napisał/a:
Hmm ta ostatnia teoria to już dość zaawansowana, poznawana w liceum przy okazji geometrii i użytkowania cyrkla, ewentualnie na uczelniach wyższych takich jak politechnika , na przedmiotach geometria wykreślna
Dziwne, ja się tego nauczyłem w podstawówce na matematyce, czyżby teraz już tego nie uczyli?
Posty: 250 Pomógł: 1 raz Otrzymał 13 piw(a) Skąd: Poznań
Wysłany: 27 Wrz 09 12:13
Widzę, że shoter09 rozdaje piwa na lewo i prawo. Jeśli jesteś taki chętny to mi też daj, ale najpierw to powinieneś dać swojemu podręcznikowi od matematyki z podstawówki. Załóż sobie zeszycik pt: "Złote myśli" i zapisuj te wszystkie porady, żebyś nie musiał się później pytać nas, cioci Wiki lub wujka Google.
Amerykanie wydali miliony dolarów na długopis, który będzie działał w kosmosie, ...
...a Rosjanie zabrali ze sobą ołówek
Why do people kill people who kill people to show that killing people is wrong?
Witam!
Zainteresował mnie ten projekt, ale mam kilka pytań, jak na laika przystało
1. Nie widzę w tym układzie kwarcu, a w innych na tym samym procesorze jest, co daje ten kwarc i dlaczego tu nie jest potrzebny?
2. Chciałbym dołożyć do tego układu jeszcze dwa czujniki CNY70 - czy mogę je przypiąć do pinów 25 i 24 procesora?
3. Chciałbym dołożyć do układu diody pokazujące stan czujników CNY70 (to dość przydatne elementy) - w jaki sposób mogę je dołączyć?
4. Pin 16 układu L293 to zasilenie silników - mylę się? Jeśli się nie mylę, to jak rozumiem mogę dołożyć tu większe napięcie, np. 12V sprzed stabilizatora?
Posty: 852 Pomógł: 40 razy Otrzymał 162 piw(a) Skąd: Warszawa
Programuję w: C, BASIC
Wysłany: 11 Lis 09 01:53
malum napisał/a:
1. Nie widzę w tym układzie kwarcu, a w innych na tym samym procesorze jest, co daje ten kwarc i dlaczego tu nie jest potrzebny?
W skrócie - częstotliwość sygnału zegarowego odpowiada za ilość operacji wykonanych przez procesor w konkretnej jednostce czasu - im wyższa częstotliwość, tym większa moc obliczeniowa. Przykładowo - Atmega8 taktowana sygnałem o częstotliwości 8Mhz ma w przybliżeniu 8MIPS, czyli na "chłopski" język - jest w stanie wykonać ok. 8 milionów operacji na sekundę.
W AVR'ach można wybrać jedną z kilku metod generowania sygnału zegarowego - można np. skorzystać z układu RC wbudowanego w mikrokontroler (dla Atmegi8 jest to 1, 2, 4 lub 8MHz - po szczegóły odsyłam do dokumentacji technicznej), można zastosować zewnętrzny układ RC lub wspomniany przez Ciebie rezonator kwarcowy (dla Atmegi8 nawet do 16Mhz).
Kwarc pominąłem, ze względu na uproszczenie schematu i odpuszczenie "zabawy" z fusebitami, które mogły by sprawić kłopot początkującym (niewłaściwa, omyłkowa konfiguracja może nawet zablokować uC).
malum napisał/a:
2. Chciałbym dołożyć do tego układu jeszcze dwa czujniki CNY70 - czy mogę je przypiąć do pinów 25 i 24 procesora?
Tak! Możesz podpiąć do 6 czujników (przy zastosowaniu zewnętrznego multipleksera nawet więcej) do przetworników A/C (wszystkie porty oznaczone jako ADC), bo tyle Atmega8 ma takowych kanałów. Podpinasz je w analogiczny sposób jak te CNY70 na moim schemacie.
malum napisał/a:
3. Chciałbym dołożyć do układu diody pokazujące stan czujników CNY70 (to dość przydatne elementy) - w jaki sposób mogę je dołączyć?
Możesz je podpiąć praktycznie do dowolnego, wolnego portu - analogicznie jak diodę sygnalizującą zasilanie na schemacie (przez opornik) - ale nie radzę przesadzać z ilością. Dla większej liczby należało by odwrócić polaryzację diod, podpiąć anody do VCC i zmienić programowo sposób "zapalania" (poprzez zwieranie pinu do masy). Wynika to z ograniczonej "wydajności" prądowej uC - po szczegóły zapraszam do dokumentacji, nie pamiętam już niestety wartości maksymalnego dopuszczalnego prądu pobieranego przez układ. Ogółem 6 diod powinno dać radę pierwszym sposobem;)
malum napisał/a:
4. Pin 16 układu L293 to zasilenie silników - mylę się? Jeśli się nie mylę, to jak rozumiem mogę dołożyć tu większe napięcie, np. 12V sprzed stabilizatora?
Pin 16 odpowiada za zasilanie "logiki" - jeśli chcesz zasilać silniki wyższym napięciem, należy je podłączyć pod pin 8 (ale tak żeby masa - czyt. "-" - była połączona z GND całej elektroniki). Czyli możesz dać zasilanie 12V, przy czym na "+" rozgałęzienie do mostka i do stabilizatora.
malum napisał/a:
1. Nie widzę w tym układzie kwarcu, a w innych na tym samym procesorze jest, co daje ten kwarc i dlaczego tu nie jest potrzebny?
W skrócie - częstotliwość sygnału zegarowego odpowiada za ilość operacji wykonanych przez procesor w konkretnej jednostce czasu - im wyższa częstotliwość, tym większa moc obliczeniowa. Przykładowo - Atmega8 taktowana sygnałem o częstotliwości 8Mhz ma w przybliżeniu 8MIPS, czyli na "chłopski" język - jest w stanie wykonać ok. 8 milionów operacji na sekundę.
W AVR'ach można wybrać jedną z kilku metod generowania sygnału zegarowego - można np. skorzystać z układu RC wbudowanego w mikrokontroler (dla Atmegi8 jest to 1, 2, 4 lub 8MHz - po szczegóły odsyłam do dokumentacji technicznej), można zastosować zewnętrzny układ RC lub wspomniany przez Ciebie rezonator kwarcowy (dla Atmegi8 nawet do 16Mhz).
Kwarc pominąłem, ze względu na uproszczenie schematu i odpuszczenie "zabawy" z fusebitami, które mogły by sprawić kłopot początkującym (niewłaściwa, omyłkowa konfiguracja może nawet zablokować uC).
W takim wypadku jeszcze czegoś nie rozumiem, skoro można wykorzystać wewnętrzny zegar 8MHz to teoretycznie nic nie daje dodatkowy kwarc 8MHz - mylę się. Czyli teoretycznie dodatkowy kwarc do 8MHz to niepotrzebna zabawa?
[ Dodano: 11 Lis 09 10:57 ]
nawyk napisał/a:
malum napisał/a:
3. Chciałbym dołożyć do układu diody pokazujące stan czujników CNY70 (to dość przydatne elementy) - w jaki sposób mogę je dołączyć?
Możesz je podpiąć praktycznie do dowolnego, wolnego portu - analogicznie jak diodę sygnalizującą zasilanie na schemacie (przez opornik) - ale nie radzę przesadzać z ilością. Dla większej liczby należało by odwrócić polaryzację diod, podpiąć anody do VCC i zmienić programowo sposób "zapalania" (poprzez zwieranie pinu do masy). Wynika to z ograniczonej "wydajności" prądowej uC - po szczegóły zapraszam do dokumentacji, nie pamiętam już niestety wartości maksymalnego dopuszczalnego prądu pobieranego przez układ. Ogółem 6 diod powinno dać radę pierwszym sposobem;)
Z tego co widzę w przypadku zastosowania 6 czujników, nie będzie tylu wolnych pinów dla diód. Nawet gdybym wyrzucił diodę sygnalizującą zasilanie zaraz za stabilizator, to i tak będę miał jedynie 5 wolnych pinów. Druga sprawa to obciążenie uC ... czy nie da się podłączyć tych diód w inne miejsce, np. pod połączenie uC z CNY70, albo w inne miejsce? Dałoby to chyba lepszy efekt i nie utrudniało ewentualnej rozbudowy robota (pozostaną wolne porty).
Ostatnio zmieniony przez malum 11 Lis 09 10:59, w całości zmieniany 1 raz
Co do diod - dało by się. Mógł byś je połączyć np. przez komparator i potencjometrem ustawić "granicę" wykrywania stanu logicznego, ale nie ma to trochę sensu, bo po to wykorzystujesz ADC, żeby taką granicę ustawiać programowo w uC. Jeśli już, to można zbudować całego linefollowera na wzmacniaczach operacyjnych (są takie projekty na diodzie) i wtedy nie trzeba atmegi, tylko praktycznie dowolny mikrokontroler z odpowiednią liczbą wyprowadzeń (nie potrzeba ADC), najpopularniejszy jest chyba Attiny2313.
Można by podłączyć diody do pinów MOSI/MISO/SCK, ale ja dał bym przed nimi zworki (dwa goldpiny + zworka albo DIP switche) i zdejmował/przełączał na czas programowania.
Co do diod - dało by się. Mógł byś je połączyć np. przez komparator i potencjometrem ustawić "granicę" wykrywania stanu logicznego, ale nie ma to trochę sensu, bo po to wykorzystujesz ADC, żeby taką granicę ustawiać programowo w uC. Jeśli już, to można zbudować całego linefollowera na wzmacniaczach operacyjnych (są takie projekty na diodzie) i wtedy nie trzeba atmegi, tylko praktycznie dowolny mikrokontroler z odpowiednią liczbą wyprowadzeń (nie potrzeba ADC), najpopularniejszy jest chyba Attiny2313.
Można by podłączyć diody do pinów MOSI/MISO/SCK, ale ja dał bym przed nimi zworki (dwa goldpiny + zworka albo DIP switche) i zdejmował/przełączał na czas programowania.
Ale do Attiny2313 nie da się podłączyć 5 CNY70, a używając lm324 nie da się sterować szybkością silników. W przyszłości chciałem rozbudować robota o LCD, stąd właśnie pomysł na niewykorzystywanie pinów procesora, a diody miałyby pracować niezależnie od LCD.
Mógłbyś jakoś rozrysować rozwiązanie z komparatorem? No a ja zabieram się za podesłaną lekturę.
Posty: 343 Pomógł: 21 razy Otrzymał 76 piw(a) Skąd: wawa/łódź
Programuję w: C, asm
Wysłany: 11 Lis 09 01:26
Jeśli chcesz rozbudowywać robota, a nie wiesz jeszcze o co, to użyj większego procesora. Przykładowo Atmega16 w obudowie DIP40. Koszt niewiele wyższy, a będziesz miał zapas pinów.
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum