Skocz do zawartości

[Bascom] Line Follower algorytm


Pomocna odpowiedź

*Można to zrobić za pomocą Eagla? Jeżeli nie to po prostu po nałożeniu tonera na PCB zdrapę te pola pod uC.

W opcjach polygonu, wyłącz/odhacz opcję orphans.

  • Lubię! 1

W żółtych ramkach zaznaczyłem ci o co mi chodzi. Weź te ścieżki po prostu usuń poleceniem ripup.

Dodatkowo zaznaczyłem ci pomarańczową ramką miejsce, w którym będziesz miał najprawdopodobniej zwarcie.

Tak jak już poprzednicy mówili dodaj przelotki łączące obie strony masy. (np z lewej i z prawej koło silnika, koło złącza na taśmę do czujników).

Popraw to sprawdź płytkę poleceniem DRC, ustawiając uprzednio w nim wartości które uda ci się zrobić ręcznie (bo z tego co pisałeś to zamierzasz ją robić ręcznie). Jeśli nie wiesz jakiej grubości zdołasz zrobić najcieńszą ścieżkę, oraz odstęp pomiędzy nimi, to wydrukuj sobie testową płytkę z prostymi ścieżkami o różnej grubości i różnymi odległościami. Dzięki temu będziesz w łatwy sposób uniknąć problemów podczas wykonywania płytki.

Proszę prześlij wraz z poprawioną wersją płytki, aktualny schemat.

Pozdrawiam

Paweł

1. Na pierwszy rzut oka rzuca się włącznik koło miso. Jak go ustawisz w pozycji on, to spowodujesz zwarcie kondensatora C12.

2. Nie powinno się podłączać kondensatorów do linii ISP.

3. Wiele problemów może ci przysporzyć LED_6 podłączony do linii MOSI. Pamiętaj, że podczas programowania, zmienia się na tych liniach stan, a taki led to jest obciążenie dla tej linii.

4. Popraw schemat tak aby nie było takich niejasności jak teraz (z tym stabilizatorem popraw po prostu bibliotekę).

5. Kolejną sprawą to czytelność schematu. Jest on bardzo słabo czytelny. Posłużę się kawałkiem mojego schematu aby zilustrować o co mi chodzi.

Jak widzisz na twoim schemacie masz strasznie dużo symboli GND i VCC (koło uC) U mnie po ustawieniu tego troszkę w inny sposób znacznie lepiej wygląda i jest przejrzystszy.

6. Różne wielkości chorągiewek (Polecam stosować wielkość 0,56) i niepotrzebne "pogięcie" linii TXD i RXD.

7. Linia AVCC nie ma kondensatora, ani dławika.

8. Bardzo słabe filtrowanie zasilania. Zalecane jest dawać przy filtrowaniu mikrokontrolera parę kondensatorów o wartości 100nF, oraz od 1uF do 47uF. Tak samo zero filtrowania przy komparatorach.

9. LM293 to dosyć słaby układ. Zachodzi na nim dosyć duży spadek napięcia, ale również ma małą wydajność prądową. Polecam użyć tb6612 lub podobnego.

10. Sygnał zasilania V_bat praktycznie jest niezauważalny. Zastosuj jakiś symbol typu VDD.

Polecam przeczytać bardzo dobre poradniki pana Mirosława Kardasia na temat filtrowania:

http://mirekk36.blogspot.com/2012/04/mikrokontroler-prawidowe-zasilanie.html

http://mirekk36.blogspot.com/2012/12/filtrowanie-zasilania-dlaczego-tak-wazne.html

  • Lubię! 1

Ad.1. To nie jest włącznik tylko micro-switch, ale dzięki za uwagę.

Ad.2. A gdzie Ty widzisz kondensator przy linii ISP? Na PCB jest rezystor SMD 10k podciągający reset do VCC.

Ad.3 Wiem, dlatego zadałem pytanie tu na Forum, ale nikt nie odpowiedział.

Ad.4. Jak znajdę czas to pobawię się z tą biblioteką.

Ad.5. Poprawiłem czytelność schematu.

Ad.6. Poprawione.

Ad.7. Nie korzystam z ADC.

Ad.8. Przy komparatorach dać po kondensatorze ceramicznym 100nF?

Ad.9. Kupiłem już L293DD.

Czytałem te poradniki.

Micro-switch to inaczej mały przełącznik 😉.

Kondensator masz na linii miso koło tego micro-switcha.

Ad.3. Jeśli chcesz podłączyć tą diodę do tego pinu to dołącz bufor do niej. Proponuję abyś dał na miso i mosi taki bufor i diodę a przełącznik do zwykłego portu i/o.

Ad.7. Może to nie jest wymagane ale gdy postanowisz zmienić coś np. użyć jednak tego ADC w jakimś celu to masz uproszczone zadanie. Jeden dławiki i kondensator przecież nie kosztują mnóstwa pieniędzy.

Ad.8. Tak daj koło każdego minimalnie 100nF. Koło złącza do btm daj też parę kondensatorów. BTM lubi robić "szpilki" w szczególności podczas parowania. Dał bym też kondensator przy układzie sprawdzający stan baterii. Po co? Po to aby podczas chwilowym spadku napięcia (np podczas włączania silników) dioda nie migała bez potrzeby.

Micro-switch to inaczej mały przełącznik

No wiesz? Nie wiedziałbym 😃

Ad.3. To po prostu wywalę ten switch z linii miso i diodę z linii mosi - wtedy będę miał trzy diody LED do debugowania i switch na pinach I/O.

Ad.7. W żadnym celu w tym bocie nie będę używał ADC, bo mi na nic nie jest potrzebne.

Ad.8. Ok, dam do każdego komparatora 100nF, na BTM'a też dam, a na układzie sprawdzającym stan akumulatora mam dać kondensator 100nF (na VCC i GND scalaka LM358?).

Usuń C5 i R12. Możesz przecież użyć wewnętrznego podciągnięcia. Dodaj te kondensatory przy lm339, no i może jeszcze daj jakiś większej pojemności przy L293. Tak to wszystko wygląda ok.

Dzięki za dosyć szybką odpowiedź. Płytę wykonałem - wytrawiłem, wyciąłem i pocynowałem 🙂 Teraz tylko polutować i w wolnych chwilach testować.

-----------------------------------------------------------------------

Edit2:

Pozwoliłem sobie usunąć poprzedniego "Edit'a".

A teraz do rzeczy:

1. Sprawdziłem, które czujniki są dodatnie (Suma = Suma + ...), a które ujemne (Suma = Suma - ...): tak więc lewa strona bota jest "dodatnia", a prawa "ujemna".

2. Sprawdziłem, który czujnik z osobna wykrywa linie - działa.

3. Sprawdziłem, jakie wartości przypisane mają czujniki (czyli tą sumę) i wyszło tak: lewy skrajny +15, dalej +10, dalej +5, dalej -5, dalej -10, dalej -15.

4. Sprawdziłem kiedy "Aktualna_pozycja" jest równa 0 - działa na środkowych czujnikach: +5, -5.

"Aktualna_pozycja" to wynik z dzielenia "Sumy" przez "Black".

"Suma" to suma wag czujników.

"Black" to ilość czujników na linii.

To chyba wszystko z dzisiejszych testów sprawdzania, czujników, wyliczeń.

Mój bot nadal cierpi na niemożność jazdy prosto 😃, gdy są tylko środkowe czujniki na linii. Oglądałem różne roboty/konstrukcje na Internecie, tu na Forbocie i niektóre mają oscylacje, niektóre nie, niektóre jeżdżą płynnie, niektóre nie - pewnie to kwestia dopracowania algorytmu. Ja nie znam za bardzo regulatorów, nadal zgłębiam informacje o nich (wiadomo człowiek uczy się na błędach). Proszę Was abyście mi wytłumaczyli, czemu bot nie może jechać prosto, na pewno nie powinno tak być.

Pozdro!

  • 2 tygodnie później...

Pokaż aktualny kawałek kodu od momentu aktualna_pozycja = suma / black, do przypisania nowej prędkości dla silników.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...