Skocz do zawartości

Pomocna odpowiedź

Ale jak odciąć składową stałą, skoro mierzymy składową stałą 😉 - bo modulowanie sygnału i mierzenie amplitudy to jak dla mnie za dużo komplikacji, a filtr częstotliwościowy dla skoku jednostkowego jakoś nie widzi mi się.

Udostępnij ten post


Link to post
Share on other sites
Szkoda, że płytki nie zabezpieczyłeś przed utlenianiem (albo ją nadtrawiłeś 😋 ). W Inżynierze obsługa enkoderów magnetycznych zajmują się Tiny13 i może warto iść w tym kierunku? Na jak długo włączasz diody (bo prąd przez nie płynący musi być pokaźnych wartości)?

Wytrawiona była perfekcyjnie, niestety nie zabezpieczyłem jej, ponieważ na okrągło wymieniałem rezystory przy LEDach i fototranzystorach, a jak już znalazłem wartości, które mi pasowały, to się nie chciało, przez co miedź wygląda dość brzydko, to fakt.

Diody włączam dokładnie na tyle, ale potrzebuje ADC na pomiar - w sensie bardzo krótko, ale nie mierzyłem dokładnie 😉

Jak raz źle coś zaprogramowałem i pętla sterowania kręciła się na okrągło bez przerw, to na ledach było ponad 50% wypełnienia, stabilizator robił za grzałkę, a całość pobierała trochę ponad 0,5A.

Czemu nie założyłeś osłon również na diody IR?

Uważam to za zbędne - mają kąt świecenia 4 stopnie, a przecież ich pracy nic nie zakłóca, więc szkoda czasu i termokurczki.

Innymi słowy przy 20MHz zegarze 500tików/s to żadne obciążenie dla uC. Ale jeżeli inna funkcja przyblokuje przerwania na dłużej, to możliwe jest pominięcie któregoś impulsu enkodera, ponieważ flaga przerwania PCINT2 zostanie nadpisana pomimo, że poprzednie przerwanie jeszcze nie zostało obsłużone.

W rzeczywistości to będzie dużo więcej niż 500imp/s, ale faktycznie coś w tym rozumowaniu może być - w końcu pętla sterowania też jest wyzwalana przez przerwanie, tylko z timera. I na czas jej trwania blokuję przerwania zewnętrzne - cli, sei.

Myszą strasznie rzuca na lewo i prawo, na Twoim miejscu zaostrzyłbym nastawy w PID'zie (bo chyba tym kontrolujesz ruch?).

Poważnie? Wydawało mi się, że jeździła już naprawdę prosto. I tak, PD oczywiście.

Co do elektroniki, to wszystko super, tylko zastanawiam się, czemu zrezygnowałeś z czujników ustawionych pod kątem? Nie przydałyby się do szybszego wykrywania zakrętów i lepszej kontroli ruchu? Ciekawi mnie też, dlaczego nie odciąłeś składowej stałej z sygnału z fototranzystora? Kondensator i opornik w postaci filtru górnoprzepustowego i miałbyś załatwiony problem z każdorazową kalibracją czujników przy różnym świetle.

Czujniki na początku były pod dużo większym kątem niż na zdjęciach, ale po wielu kontaktach ze ściankami odechciało mi się ciągłych poprawek. Ale w projekcie były oczywiście na ukos.

Filtru górnoprzepustowego nie widziałem w żadnej poważnej konstrukcji klasy światowej, a samemu nawet o tym nie pomyślałem. Być może nie jest to najgorszy pomysł, ale wg. mnie ta konfiguracja LED + fototranzystor działa tak wyśmienicie, że nie ma sensu kombinować. W ciągu tygodnia powinienem uruchomić płytkę nowej myszy, w której mam tę samą parę i postaram się zdjąć parę charakterystyk tych czujników, żeby to udowodnić.

I jeszcze jedno pytanko mam: Skąd pomysł na nazwę?

Miało być nietuzinkowo i nerdowsko, a nie dość że ipreferpi to palindrom, to jeszcze z liczbą pi! Czego chcieć więcej? 😃 Nazwa tak mi się spodobała, że aż nazwałem tak swój komputer przy ostatniej instalacji systemu 😉

A normalny port COM (nie tworzony przez BT) się da?

Jestem przekonany, że to nie pomoże, bo sam port tworzony przez BT jest widziany w systemie jako zwykły port COM. Problem w tym, że jak klikniemy na 'Connect' w terminalu ustawionym na COMa np. z FT232, to mamy połączenie od razu, a w przypadku tego z BT przez 1-2s mamy 'Waiting for port', a jakaś tam niższa warstwa nawiązuje połączenie komputer <-> BT. Takie są moje domysły, ale może to coś innego...

Twoja obsługa enkoderów jest daleka od optymalnej. Masz tyle ifów że głowa boli 😋 średnio wejście w ifa i wyjście z niego + jakaś operacja wewnątrz to są min. 4 operacje asm.

To w takim razie proszę o przykład lepszego kodu, bo że da się lepiej, to ja jestem prawie pewien. A to 'tyle ifów...' raptem się zsumuje do trzech wykonywanych za każdym razem. 12 taktów to tak dużo?

Idealne by było podpięcie LSB do wejścia countera ale do tego potrzebne by było co najmniej 4 timery na pokładzie megi (1 do pwm'a na silniki, po 1 na każdy enkoder oraz 1 na mierzenie czasu/pętle regulacji). Ewentualne szybka obsługa przerwań (najlepiej wstawka asm i zmienne rejestrowe) i wtedy juz wystarcza 2 timery.

Prawdopodobnie to rozwiązałoby problem, ale nie zdawałem sobie z tego sprawy podczas projektowania robota. Co do wstawek asm - przy tak prostych operacjach, pewnie dałoby to minimalne zwiększenie szybkości działania względem kodu skompilowanego z C, o ile w ogóle.

Na pewno to dobrze liczysz?

To są dane przykładowe, wzięte z kosmosu, żeby tylko zobrazować, o co mi chodzi. I jak zauważył kolega niżej, mam enkodery na kołach 😉

Podczas przełączania odczytywanego stanu mogą pojawiać się zakłócenia i procesor zamiast jednego impulsu (przerwania) otrzymuje ich całe mnóstwo.

Jeśli masz dostęp do oscyloskopu, proponuję zobaczyć jak wygląda sygnał. Na próbę można też programowo liczyć liczbę wywołań przerwań.

Sprawdzałem to programowo i nie w tym rzecz. To są gotowe układy enkoderów, raczej nie mają one prawa sypać śmieciami na wyjściu. Co innego, gdyby stosować własnoręcznie wykonane enkodery optyczne - wtedy oczywiście dodałbym tam komparator czy inne rozwiązanie eliminujące te nadmiarowe impulsy.

Ale jak odciąć składową stałą, skoro mierzymy składową stałą - bo modulowanie sygnału i mierzenie amplitudy to jak dla mnie za dużo komplikacji, a filtr częstotliwościowy dla skoku jednostkowego jakoś nie widzi mi się.

W sumie to jednak nie mierzymy stałej, tylko właśnie odpowiedź na impuls i filtr teoretycznie mógłby to znacznie 'uładnić', ale jak mówiłem - sam o tym nie pomyślałem, a min7 wygrał bez tego 😉

A może zdradzisz coś więcej na temat nowej myszy TAU?

No, niech będzie...

Ale więcej póki co nie zdradzę, może się pochwalę jak zacznie jeździć po labiryncie - na razie czekam na resztę części mechanicznych. Ale raczej pochwalę się nią dopiero na zawodach 😉

A co do komentarzy na filmiku... Akademik, spróbuj powiedzieć, że coś nagrywasz... 🤣

Udostępnij ten post


Link to post
Share on other sites

No, niech będzie...

Obrazek

Ale więcej póki co nie zdradzę, może się pochwalę jak zacznie jeździć po labiryncie - na razie czekam na resztę części mechanicznych. Ale raczej pochwalę się nią dopiero na zawodach 😉

Kurczę, jakbym widział model mojej myszy. Powinien był zastrzec ten wzór 🙂

Super, szykuje się w tym roku silna konkurencja.

Udostępnij ten post


Link to post
Share on other sites

No, niech będzie...

Obrazek

Ale więcej póki co nie zdradzę, może się pochwalę jak zacznie jeździć po labiryncie - na razie czekam na resztę części mechanicznych. Ale raczej pochwalę się nią dopiero na zawodach 😉

Kurczę, jakbym widział model mojej myszy. Powinien był zastrzec ten wzór 🙂

Super, szykuje się w tym roku silna konkurencja.

Kurcze, jakbym widział projekt mojej myszy 😅

hehe, wychodzi na to, że jakieś 10 osób w Polsce robi jednoczesnie praktycznie taką samą mysz 😉

W tym nowym projekcie nie myślałeś, nad daniem 6 par dioda+fototranzystor? Widzę, że miejsce na płytce jest, I/O zakładam że też się znajdzie w procku, więc czemu nie? A nóż się okaże, że się przydadzą diody zarówno na boki jak i na ukos - a jeśli nie, to nie musisz z wszystkich przecież korzystać.

Udostępnij ten post


Link to post
Share on other sites

Jakby nie patrzeć, to od pewnego poziomu zaawansowania każda mysz będzie wyglądała prawie tak samo, tak jak LFy. Różnica w sumie tylko w 4/6 czujnikach i 2/4 kołach.

No, można jeszcze turbinę zamontować - kiedyś taką widziałem jeżdżącą po suficie 😉

A 6 par wydaje mi się zbędnych. Wg. mnie wszystkie informacje, jakich można chcieć otrzymuje się z 4 czujników. A jakbym miał 6, to potem tylko bym kombinował niepotrzebnie jak to wykorzystać.

Udostępnij ten post


Link to post
Share on other sites

Ja z turbiną widziałem już 3 różne micromouse 😉 Widziałem nawet ze skrętną tylnią osią🙂 Ja ogólnie na dysku mam około 300 zdjęć różnych MM, więc można się naoglądać tego wszystkiego dokładnie;)

Co do 4 kół, to różnice w stosunku do wersji 2-kołowej są raczej minimalne, a projekt jest bardziej skomplikowany (i droższy) - na japan micromouse contest w kategorii expert było sporo zawodników którzy nie mieli 4 kół a i tak mieli bardzo dobre czasy przejazdów, więc da się 😉 min6 też miał tylko 2 koła, a jeździł w labiryncie prawie tak szybko jak min7 i tetra (różnice są minimalne). No ale do japonii to nam daleko, więc ja sobie w swoim projekcie 4 koła podarowałem, bo oprócz braku konieczności używania "kulek podporowych" (to właściwie już nie kulki, a pady) nie widzę jakiś większych zalet;)

Co do 4/6 czujników to ja jeszcze nie robiłem żadnych testów, ale widzę że sporo MM ma po 6 czujników, więc widocznie ich używają, choć nie są niezbędne bo światowa czołówka ma po 4 - widocznie zależy to już od własnych preferencji i sposobu działania algorytmu. Ja mam w swoim projekcie mało miejsca, bo cała mysz mieści się w pudełku 50x70mm (przynajmniej w teorii, ale zobaczymy co z tego wyjdzie), ale 6 par diod 5mm wejdzie 😉

Udostępnij ten post


Link to post
Share on other sites

Taka mała? Lubię malutkie roboty, będzie pocieszna 😃

No, 4 koła dają jednak dwukrotnie większą powierzchnię kontaktu z podłożem, więc z pewnością można jeździć zauważalnie szybciej. Ale mi6 faktycznie pokonał nawet kiedyś tetrę, także myślę, że można i bez tego.

A masz jakiś projekt 3D? Też chętnie rzuciłbym okiem 😉

Udostępnij ten post


Link to post
Share on other sites
Taka mała? Lubię malutkie roboty, będzie pocieszna 😃

Chciałem zrobić najwęższą mysz na jaką pozwala mi projekt (w sensie częsci z których chcę ją zbudować), bo po pierwsze to oznacza większy margines błędnego położenia w którym jeszcze nie uderzę w ścianki, po drugie nie chciałem kopiować tetry i spółki, więc będzie trochę inaczej niż 80% robotów MM które na świecie zrobiono w ciągu ostatnich 2 lat, a po trzecie taka malutka mysz mi się podoba, no i mogłaby jeździć w kategorii "half-size micromouse" (która narazie od niedawna chyba tylko w Japonii jest, więc w Europie a tym bardziej w Polsce jej długo nie zobaczymy jeszcze zapewne 😉 ), nawet po przekątnych:) Tzn w teorii, się mieści, ale w praktyce, zapewne ciężko by było nie zahaczać minimalnie o ścianki podczas obrotu o 180 (search run), no ale jak na zwykłe MM to jest bardzo malutka.

No, 4 koła dają jednak dwukrotnie większą powierzchnię kontaktu z podłożem, więc z pewnością można jeździć zauważalnie szybciej. Ale mi6 faktycznie pokonał nawet kiedyś tetrę, także myślę, że można i bez tego.

Jeśli wierzyć oficjalnym informacjom podanym w specyfikacji min6 i min7, to obydwie myszy rozwijają 3.5m/s na prostej, 1.3m/s na zakręcie, a jedyna różnica to przyspieszenie które dla min7 wynosi 13m/s2, a dla min6 "tylko" 9m/s2, więc tutaj widzę jedynie zysk z posiadania 4 kół, a przyspieszenie realnie przekłada się na lepsze czasy. W praktyce, różnica między 9m/s2 a 13m/s2 to są dziesiąte częsci sekundy, w dodatku realne do wykorzystania w kilku miejscach w labiryncie (maksymalną prędkość 3.5m/s z takimi przyspieszeniami można uzyskać i tak wyłącznie na prostym odcinku 1 metra, a takich miejsc w labiryncie jest conajwyżej 3-6, biorąc pod uwagę, że jeszcze trzeba wychamować).

A masz jakiś projekt 3D? Też chętnie rzuciłbym okiem 😉

Narazie jest wstępny rysunek na kartce, a do projektu 3D to jeszcze daleko 😉 Nawet nie wiem czy mi się zmieszczą elementy, bo już widzę, że na 100% będę musiał umieszczać elementy na spodzie płytki, bo na górze oprócz 6 czujników, to wejdą tylko złącza do silników i jedna obudowa TQFP64 😉 No ale nie poddaję się - będę walczył, by to wszystko tam weszło:P jak się nie uda, to najwyżej przeprojektuję, zwiększając wymiary.

Udostępnij ten post


Link to post
Share on other sites
No, 4 koła dają jednak dwukrotnie większą powierzchnię kontaktu z podłożem
Nie chodzi o powierzchnię tylko o to, że cały nacisk jest na kołach napędzanych, zamiast na luźniej kulce/ślizgaczu. No i można dać środek ciężkości w osi obrotu, a bez kołysania jak przy 2 kulkach.

Udostępnij ten post


Link to post
Share on other sites

Jak interpretowany jest sygnał z czujników ? Sprawdzasz po kolei stany każdego czujnika, i porównujesz napięcia na fototranzystorach ? czy porostu jest zaimplementowany próg działania "jest sygnał nie ma sygnału" ? Próbuję właśnie potestować własne czujniki i niebardzo mi to idzie...

Udostępnij ten post


Link to post
Share on other sites

Porównywane są wartości napięcia na fototranzystorze z ADC przy zapalonym IRze.

Konkretnych odległości raczej nie trzeba znać, bardziej liczy się różnica lewy-prawy.

Ale do korekty jazdy w korytarzu pewne progi też trzeba zadać. Jako że opieramy się na różnicy 'odległości' w nieznanych nam jednostkach, do korekty potrzebne nam są ściany z obu stron. Dlatego najpierw trzeba stwierdzić, czy obie ściany faktycznie są (jakiś próg), a potem na ich podstawie działać.

Można też korygować tylko jeśli różnica odczytów jest mniejsza od jakiejś założonej wartości.

Udostępnij ten post


Link to post
Share on other sites
Jak interpretowany jest sygnał z czujników ? Sprawdzasz po kolei stany każdego czujnika, i porównujesz napięcia na fototranzystorach ? czy porostu jest zaimplementowany próg działania "jest sygnał nie ma sygnału" ? Próbuję właśnie potestować własne czujniki i niebardzo mi to idzie...

Nie wiem akurat jak zrobił to autor robota, ale na 95% pomiar jest oczywiście analogowy (przy użyciu ADC). Właściwie wszystkie MM używają czujników analogowych. Sama informacja "jest sygnał, nie ma sygnału" byłaby niewystarczająca do dokłądnego pozycjonowania robota (wbrew pozorom, enkodery nie są takie precyzyjne i przy większych prędkościach i dłuższych przejazdach, konieczne jest używanie analogowego odczytu z diod w celu synchronizacji enkoderów i korekcji pozycji).

Mówiąc dokładniej, 2 diody skierowane w przód pozwalają nie tylko wykrywać scianę na wprost, ale również kontrolować obrót robota. Porównując analogowe odczyty z czujników, możesz eliminować błędne ustawienie (odchylenie o dany kąt) robota, gdy stoi on przed ścianką - gdy np. lewy czujnik daje słabszy odczyt, niż prawy, oznacza że robot jest nieco "przekręcony" w lewo i należy to skorygować, by uzyskać pozycję "na wprost".

Podobnie, boczne czujniki pozawalają na zachowanie jednakowych odległości od prawej i lewej ściany (no i oczywiście na samo wykrywanie tych ścian - oczywiste).

---EDIT---

znów odpisywaliśmy w tym samym czasie - ehh, coraz częsciej mi się to zdarza ... 😉

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