Skocz do zawartości
Nawyk

[Dla początkujących] Przepis na robota - w pełni programowalny Line Follower

Pomocna odpowiedź

Dokładnie, ja to miałem chyba w gimnazjum.

Udostępnij ten post


Link to post
Share on other sites

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.

Udostępnij ten post


Link to post
Share on other sites

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?

Udostępnij ten post


Link to post
Share on other sites
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).

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.

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;)

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.

Udostępnij ten post


Link to post
Share on other sites
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 ]

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).

Udostępnij ten post


Link to post
Share on other sites

Może zamiast pisać, dam Ci linka:

http://www.easy-soft.net.pl/zasoby/avr-clock.pdf

Powinien trochę rozjaśnić sprawę.

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.

Udostępnij ten post


Link to post
Share on other sites
Może zamiast pisać, dam Ci linka:

http://www.easy-soft.net.pl/zasoby/avr-clock.pdf

Powinien trochę rozjaśnić sprawę.

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ę.

Udostępnij ten post


Link to post
Share on other sites

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.

Udostępnij ten post


Link to post
Share on other sites

To już łatwiej i taniej dać zewnętrznego latch-a. Np. 74hc373

Udostępnij ten post


Link to post
Share on other sites
- koszyk na 4 baterie AA z pokrywą i włącznikiem (2,81zł)

przecież 4x1.5V=6V nie upali procka ?? na schemacie nie widać żadnego opornika

Udostępnij ten post


Link to post
Share on other sites

Moją główną intencją było zastosowanie akumulatorów w tej samej obudowie, które łącznie dają 4,8V napięcia znamionowego.

Chociaż w dokumentacji jest maks. 5,5V, w praktyce układy tego typu działają przy minimalnie wyższym napięciu, więc baterie zastosować można (testowałem, ładowałem w atmegi8 ok. 6V niejednokrotnie i wszystko działało - choć strachliwi na wszelki wypadek mogą dawać baterie nieco rozładowane). Należy jeszcze uwzględnić spadki napięcia na akumulatorach/bateriach pod obciążeniem, zwłaszcza przy działających silnikach. Można nieco skomplikować układ zasilania, poprzez zastosowanie stabilizatora w technologii LDO, ale równie dobrze można całość rozbudować o dowolne peryferia... Ja postawiłem na prostotę - w końcu to temat dla początkujących - i wszystko śmiga, co udokumentowane jest chociażby na filmie.

Udostępnij ten post


Link to post
Share on other sites

Witam. Mój pierwszy post na forum.

Zbudowałem i zaprogramowałem swojego Linewolowera według tego wątku. Nie miałem większych problemów. Budowa konstrukcji zajęła mi to 3 wieczory, łącznie około 12 godzin.

Teraz pracuje nad rozbudową programu.

A piszę ten post bo chciałem potwierdzić że procesor wytrzymuje napięcie 6V - być może lekko obniżone przez obciążenie wynikające z pracy silników, ale przecież w pierwszych mikrosekundach uruchomienia procesora nie ma obciążenia (tak mi się wydaje), bo zanim zaczną pracować silniki procesor musi przerobić już kilka poleceń wstępnych.

Dodam że mam procesor Atmega8L - czyli na niskie napięcie wejściowe. 100% działa.

Udostępnij ten post


Link to post
Share on other sites

witam. Zbudowałem line followera wg tego projektu i mam dwa pytania. Pierwsze związane jest z tym, że z zrobiłem małe zmiany. Ja zastosowałem 4 zwykłe baterie i stabliziator na 5V (LM2940, 5V, Low Drop, 1A...) . Płytka główna jest praktycznie bez zmian, zmieniłem tylko położenie różnych elementów itp. Jesli chodzi o płytkę z czujnikami zbudowałem własną na podstawie schemtu w załączniku. Efekt: jeździ ale nie reaguje na czujniki. Zastosowałem fototranzystory, oczywiście są osłonięte rurką termokurczliwą po bokach. Testowałem dwa programy (mój i Nawyka) z różnymi zmiennymi jesli chodzi o granicę i zero efektu. Co moze być nie tak? A drugie pytanie to, dlaczego po włączeniu robota sam nie rusza tylko trzeba mu lekko pomóc? Sądzę, że związane jest to ze zbyt dużym poborem prądu, jednak po wystartowaniu go jeździ całkiem sprawnie. Zastosowałem serwa Tower Pro mg995.

Pozdrawiam

sen.thumb.png.5b6b9f38cdf8f4c481a36f3320bf6667.png

Udostępnij ten post


Link to post
Share on other sites

Bardzo prawdopodobne, że to przez za duży prąd serw - po pierwsze nie mogą ciągnąć więcej, niż 600mA ze względu na zastosowany postek, a po drugie i tak nie mają szans, żeby tyle pobierać, bo stabilizator,który zastosowałeś ma zabezpieczenie przeciw za dużemu prądowi.

Sprawdź(apmeromierzem), jaki prąd pobierają serwa bez obciążenia, z obciążeniem, zatrzymane. Są to silne serwa, więc pewnie prąd też będzie niemały. Możesz też spróbować podłączyć zasilanie silników(w mostku) podpiąć bezpośrednio do baterii, a tylo elektronikę przez stabilizator.

Inna sprawa, że zgodnie z datasheet'em przy napięciu zasilania ok. 5.5V napięcie wyjściowe zaczyna spadać. Możesz np. podłączyć przełącznik równolegle do stabilizatora, tj. łącząc wejście, z wyjściem. Wtedy, jeśli napięcie zasilania będzie za niskie, przełączasz przełącznik, omijając w ten sposób stabilizator. Po zmianie baterii znowu przełączasz przełącznik.

Co do czujników, to zobacz, jak napięcie na wyjściu dzialnika zmienia się pod wpływem światła. Może jest zły fototranzystor? Radziłbym mimo wszystko zastosować gotowe czujniki.

W podobny sposób możesz dobrać granicę - robienie tego metodą prób i błędów nie ma sensu. Jeśli nie chcesz się bawić w autokalibrację, podłączasz woltomierz i patrzysz na wartość na linii oraz obok niej, potem liczysz średnią i przeliczasz na odczyt w ADC.

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...