Skocz do zawartości

mice.co

Użytkownicy
  • Zawartość

    27
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    2

Posty napisane przez mice.co


  1. W swoim robocie zastosowałem sposób a - symetrycznie dla obu kół.
    Prędkość mam rozłożoną na translacyjną i rotacyjną. Rotacyjna pochodzi z regulatora linii, a translacyjną dobieram nastawami i dodatkowo zmieniam (robot zmienia autonomicznie 😉 ) w trakcie np. prostej czy zakrętu.
    W takim wypadku, dopóki na "szybszym" kole prędkość nie próbuje przekroczyć wartości maksymalnej, lub nie występuje znaczna różnica w poślizgu na obu kołach, robot utrzymuje średnią prędkość (translacyjną) postępową.

    Wątpię, czy można określić najlepszą strategię, bo jeżeli ktoś posiada inne algorytmy, profilery prędkości, unika poślizgów, posiada cięższego robota lub inaczej ułożony środek ciężkości czy inną bezwładność, to na pewno jego doświadczenia będą inne. Całość też inaczej wygląda przy różnych prędkościach postępowych...

    Ja w swoich poczatkach zaczynałem od b), gdyż z a) miałem problemy ze strojeniem. Później przeszedłem do a) z ograniczeniami (brak zmiany kierunku obrotu kół) gdyż znacznie poprawiło to dynamikę robota w zakrętach. Dalej a) symetrycznie ze zmianą kierunku obrotu kół.

    • Lubię! 1

  2. 19 godzin temu, jaceksz73 napisał:

    A gdzie są rezystory od diód? Widać że diody są łączone po cztery. Ale nie mogę dopasować do tych sekcji rezystorów. 

    Przetestowałem już wcześniej rozwiązanie bez rezystorów i takie tutaj zastosowałem. Może jest niepoprawne i powinien być rezystor 1-5R, ale nie miałem problemów z takim układem i w praktyce Vf oraz If diody wychodzą książkowo bez żadnego dobierania KTIR'ów.
    Niestety nie mam porównania z układem z rezystorami i nie zachęcam do powielania tego niepodręcznikowego rozwiązania, i jeśli ktoś próbuje minimalizować ilość elementów na PCB - nie gwarantuję, że zawsze zadziała 🙂

    • Lubię! 1
    • Pomogłeś! 1

  3. 56 minut temu, jaceksz73 napisał:


    Na listwie z czujnikami KTIR widać na zdjęciu wlutowane elementy między nóżki 1 i 2 czujnika. Tych elementów jest 3. Po jednym na cztery czujniki. Wyglada to na opornik obniżający prąd na diodach. Ale . . . Podłączenie jest rownolegle (nóżki 1 i 2). Jaka stoi na tym idea? Czego nie zrozumiałem?

    Te elementy nie znajdują się nawet w projekcie PCB 😅, ale są to dodatkowe kondensatory do zasilania pierwszego czujnika w danym szeregu z diodami IR. Widocznie wpadłem na ten pomysł przy montażu (nie wynikał z żadnych kłopotów z działaniem listewki) i dokładnych pojemności nie potrafię sobie przypomnieć 🤔
    W tym momencie wydają mi się zbędne i jak bym myślał o dodatkowej filtracji, to prędzej na linii 3.3V.

    59 minut temu, jaceksz73 napisał:

    Druga sprawa. Diody tych czujników są zasilane 5v, natomiast wejścia ADC procesora pracują w zakresie 0-3,3v. 
    Na zdjęciach widzę tyko pojedyncze rezystory na każde wyjście. Najprawdopodobniej są to rezystory podciągające. Jaki jest zatem zakres napięć na wyjściu z KTIRa?

    Do płytki z czujnikami doprowadzone jest również dedykowane zasilanie analogowe 3.3V i tranzystor każdego czujnika podłączony jest przez rezystor do tej sekcji, więc sygnał wyjściowy będzie z zakresu 0-3.3V.

    • Lubię! 1
    • Pomogłeś! 1

  4. Dnia 11.01.2020 o 09:23, jaceksz73 napisał:

    Bardzo dziękuję za wskazówki i obszerne wyjaśnienia. 

    Odnośnie komunikacji.

    W artykule napisałeś:

    Czy program do przejścia mikrokontrolera w bootloader operował na pinach boot0 i boot1 i resetował mikrokontroler?

    A jak wychodziłeś z bootloadera?

    Jak realizowałeś debugowanie przez port COM? Czy mogłeś podglądać rejestry czy tylko wysyłałeś dane do portu?

    Dlaczego nie korzystałeś z programatora lub innej metody?

     

    Przejście do wbudowanego bootload'era odbywało się wyłącznie software'owo. W momencie uruchamiania całego programu sprawdzana jest pamięć w konkretnej komórce BKPSRAM i ewentualnie zerowana. Jeśli przed restartem uC było tam wpisane żądanie wejścia w bootloader, stos MSP ustawiam na 0x1FF0 0000 i przechodzę wskaźnikiem do *(0x1FF0 0000 + 4).

    Do programowania używałem programów zewnętrznych bazujących na dfu-util - po zaprogramowaniu uC jest restartowany.
     

    Debugowanie odbywało się w sposób uproszczony poprzez konsolkę - wyświetlając komunikaty, wartości zmiennych itd.
    Pełny, prawdziwy, debugger SWD był mi potrzebny w momencie problemów z hardfault'ami (głównie przez TCM-RAM, dcache i dma ...typowe początki z F7).

    Nie korzystałem, gdyż chciałem uniknąć dodatkowego złącza w robocie oraz operować sporą ilością kabli i płytką programatora - wystarczy zwykły przewód microUSB-USB. Jednocześnie po zaprogramowaniu, przez COM można natychmiast wysyłać statusy o poprawnych inicjalizacjach itd itp.
    Przez USB jest też możliwość zgrywania logów z karty uSD poprzez tryb MSC (nie trzeba wyciągać karty ze slotu, upychać w adapter i wpychać do czytnika komputerowego), ale nie zdążyłem tego zaimplementować 🙂

    • Lubię! 2

  5. 11 godzin temu, jaceksz73 napisał:

    Zastanawiałem się czy w pytaniu podać moje typy. Nie podałem ich, żeby nie sugerować innym, ale faktycznie wyszło to trochę zbyt ogólnikowo.

    Planuję złożyć LF na następujących komponentach:

    1) procesor: STM32H750VBT6 - 128KB, 480MHz, obudowa 100-LQFP (14x14), Liczba I/O - 82

    2) czyjniki IR: 12 szt. KTIR0711S

    3) silniki: Pololu HPCB 10:1 z obustronnym wałem 9V (ewentualnie z enkoderem)

    4) sterowniki silnika: dwa Pololu DRV8833 - dwukanałowy sterownik silnika 10.8V / 1.2A - Połączone dwa wyjścia ze sterownika na jeden silnik

    5) stabilizator napięcia 5V: Stabilizator LDO 5V LM1117MP - SMD SOT223

    6) stabilizator napięcia 3,3V: Stabilizator LDO 3,3V LM1117MP - SMD SOT223

    7) Bateria: nano tech 35/70C 300mAh 7,4V

    Pozostaje jeszcze opcjonalny czujnik wykrywający przeszkodę i żyroskop. Tu niejstety nie mam pomysłu.

    Najtrudniejsze dla mnie jest zasilanie silników. Jak je najlepiej zrealizować?

    Co sądzicie o takim zestawieniu? Co należałoby zmienić albo dodać?

     

    1. Ten STM to budżetowy H7. Bardzo szybki, jednak przy dzisiejszych bibliotekach 128KB Flasha może Ci nie wystarczyć. Zazwyczaj podłącza się pod niego zewnętrzny flash po QSPI. Jeśli nie planujesz stosowania skomplikowanej matematyki, to uznałbym ten procesor za niepotrzebne utrudnienie sobie życia 🙂
    2. Czujniki OK.
    3. Przy niedużych kołach robot może osiągać zbyt niską prędkość przy wersji 9V na baterii 2S. Jeszcze kwestia czy z turbiną czy bez. Dla LFa bez turbiny momentu obrotowego Ci nie zabraknie przy wersji 6V. (Ten parametr to napięcie nominalne i spokojnie mógłbyś taki silnik wysterować nawet z baterii 4S - ważne, żeby silnika nie przegrzać i nie "zedrzeć" szczotek).
    4. Drivery powinny wystarczyć. Kojarzę jeszcze DRV8838, ale są jednokanałowe i pozwalają na odrobinę mniejszy pobór prądu niż zmostkowany DRV8833 😕
    5, 6. Trzeba pamiętać, że cały spadek napięcia na LDO będzie skutkował wydzieleniem dość sporej ilości ciepła. Ogólnie OK, jeśli określisz dopilnujesz poboru prądu.
    7. Z bateriami warto dzisiaj poszperać w kierunku mikro-dronów FPV. Mają coraz lepsze parametry i lepszą cenę/dostępność. Te nanotech'y wydają się trochę niedzisiejsze.

    Zasilanie silników zdecydowanie bezpośrednio z baterii poprzez sterownik (mostek H).

    A jeżeli chodzi o najlepsze części do LF, to powiedziałbym, że:
    - lekka konstrukcja o niewielkich bezwładnościach (koniecznie - znacznie przedłuża czas życia projektu, większe możliwości, większa sterowalność, można więcej wycisnąć)
    - bardzo przyczepne koła (koniecznie)
    - enkodery (zalecane, ale można sobie bez nich poradzić)
    - "ułatwiacze" (łączność, zdalny start, interfejsy - żeby obsługa robota, poprawki, strojenie były jak najwygodniejsze)
    - bezawaryjność i "prawidłowa" elektronika (żeby skupić się na programowaniu, nie na szukaniu błędów w schemacie podczas zawodów)
    - oprogramowanie
    To są moim zdaniem kluczowe czynniki , które warto brać pod uwagę, a na resztę nie ma jednoznacznego przepisu i nie sposób ich określić bez wcześniejszych prób i przekonania się na własnej skórze - wszystko jedno jaki symbol ma przetwornica czy dioda. Część z nich na pewno dyktuje dostępność i cena. Sam styl/metoda programowania (sterowania LFem) może sprawić, że istotniejsze będą dla Ciebie inne podzespoły niż u drugiego zawodnika. Dodatkowo, często trasa płata nam figle 🙂
     

    • Lubię! 1

  6. 9 godzin temu, jaceksz73 napisał:

    Wiem, że wątek jest stary, ale nadal wiele osób inspiruje. Podałeś schemat i wiele wskazówek. Dziękuję.

    Do czego wykorzystujesz napięcie 5V?

    Czy jeden stabilizator 3V3 jest wystarczający pod względem zakłóceń? Niektórzy rozdzielają na zasilanie MCU i ADC.

    5V zasila LEDy RGB (WS2812B), LEDy IR w KTIR'ach (po 4 w szereg) oraz wyjście UART pod ewentualny moduł, np. radiowy. 5V jest też źródłem dla stabilizatorów LDO.

    Jeden stabilizator powinien wystarczyć:
    - nawet nie troszcząc się szczególnie o zakłócenia, jeśli w danym zastosowaniu nie zależy nam na idealnych pomiarach ADC (do prostego LFa dużo nie trzeba, do japońskiego micromouse'a już tak).
    - stosując izolację zasilań za pomocą filtrów LC (czyli np. 600Ohm'owy ferryt + 10uF|100nF z VDD  do VDDA przy procesorze) - zakłócenia części cyfrowych są wtedy częściowo tłumione
    - tworząc dobry layout na PCB i nie wprowadzając zakłóceń.

    Wiadomo, że każde oddzielne zasilanie wymaga dodatkowej uwagi i miejsca na PCB i czasem warunki sprawiają, że nie warto kombinować z oddzielnym zasilaniem, jeśli np. nie zapewnimy również oddzielnej masy.

    • Lubię! 1
    • Pomogłeś! 1

  7. Dnia 10.03.2019 o 16:53, skibos napisał:

    według tego rozumowania przy Prescaler=5, Period=254 otrzymam częstotliwość PWM o wartości 31250Hz tak ? I w Pulse ustawiam wartość początkową z zakresu od 0 do 255 i w kodzie mogę zmieniać wartość _HAL_TIM_SET_COMPARE z zakresu od 0 do 255 ?

    Tak, zgadza się.

    Dnia 10.03.2019 o 16:53, skibos napisał:

    Poczytałem troszeczkę, zmieniłem ustawienie zegarów na 48 MHz. Podzieliłem częstotliwość zegara czyli 48000000 Hz przez częstotliwość którą chcę  otrzymać czyli 31250Hz i wyszło mi 1536 ( 1535+1) czyli wyszedł mi Prescaler ? Jeśli nie to prosiłbym o dokładne wytłumaczenie, jeśli tak to uważam że nadal nie wiem jak ustawić wartość Period i Pulse.

    Wyszedł Ci Period.

    Żeby maksymalnie uprościć, a jednocześnie nie wprowadzać zbyt dużej karykatury sprowadzając temat do "Arduinów"...
    Wzór FREQ = TIM_CLK/(ARR+1)(PSC+1)(CKD+1) na częstotliwość sygnału PWM jest dobry (dla standardowego trybu edge-alligned, który zapewne Cię interesuje).
    Zakładam, że ustaliłeś TIM_CLK na 48MHz.
    ARR, czyli Period będzie rozdzielczością sygnału PWM. PSC, czyli Prescaler pozwala przeskalować częstotliwość inkrementacji licznika (PSC=1 -> 48MHZ/2 = 24MHz). CKD pomijam.
    Dla 31250Hz dobrze Ci wyszło: 1536 ( 1535+1)  - teraz zauważ, że 1535 mieści się w zakresie rejestru 16-bitowego. Więc PSC możesz spokojnie zostawić na 0, a wartość 1535 wpisać do rejestru ARR - uzyskasz w ten sposób maksymalną rozdzielczość sygnału PWM.

    Makrem _HAL_TIM_SET_COMPARE ustawiasz rejestr CCRx, czyli Pulse dla danego kanału (z zakresu 0 do ARR).
    CCRx/ARR będzie wypełnieniem sygnału PWM. Pamiętaj, że gdy ustawisz CCR na wartość większa niż ARR, wypełnienie będzie wynosić 100%.

    Skoro do tej pory nie udało Ci się rozwiązać problemu, zakładam, że technika mikroprocesorowa, czy bardziej co się dzieje w środku mikrokontrolera, Cię nie interesuje i rozumiem - nie wszystko na raz. Jeśli to Twoje początku radzę więcej grzebać, próbować, testować i szukać. Jest pełno poradników, kursów i na pewno, jeśli pojawia się problem, to ktoś już się z tym spotkał. Dla podobnych problemów forum ST może być dobrą alternatywą dla forbota 🙂

    Jeśli chcesz popróbować z licznikami to warto pod sygnał PWM podłączyć diodę (z opornikiem oczywiście) i tak jak tutaj, wyliczyłeś ARR dla 31250Hz. Zmieniasz PSC z 0 na 31250-1 i patrzysz, czy dioda będzie zapalać się co 1 sekundę na długość ustawionego Pulse (_HAL_TIM_SET_COMPARE ). Łatwo wówczas wyłapać błędy, jeśli dioda zapala się co 0.5s, lub 2s, to znaczy, że np. TIM_CLK nie jest 48Mhz. 🙂

    • Lubię! 2

  8. 17 godzin temu, Sabre napisał:

    (...)
    I tutaj dziękuję wszystkim, którzy ze mną rozmawiali, za cierpliwość 😃, wróciłem do domu z bólem gardła 😫. Gratuluję Mateuszowi zajęcia pierwszego i drugiego miejsca w linefollowerach, a Kornelii zwycięstwa w minisumo. Mam nadzieję, że następnym razem spotkamy się po tej samej stronie barierek, trochę mnie zmobilizowaliście do ukończenia dawno odkładanych nowych linefollowerów 😎.

    Dziękuję za gratulacje. Liczę że ruszysz w temacie, bo odstawiłeś do szuflady na prawdę ciekawe pomysły i zdecydowanie brakuje świeżego podejścia w konkurencji 😀

    Startując w konkurencji LF sam na początku musiałem chwilę poszukać odpowiedniej sali, ale było to ok. godz. 9. Później zauważyłem porozwieszane kartki kierujące zawodników/widzów we własciwe miejsce. Faktycznie z powodu przeniesienia konkurencji, odczułem mniejsze zainteresowanie konkurencją, ale z drugiej strony w poprzednich latach miałem problem poruszać się z salki technicznej na dół, a następnie przedzierać się przez tłumy widzów upchane pomiędzy barierkami - było ciasno.
    Samą konkurencję uważam za dobrze zorganizowaną. Wydaje mi się, że nie było opóźnień ze startem konkurencji i wszystko przebiegło dość gładko. Później ze względu na opóźnienia xsumo, finały lf i lf enhanced musiały troszkę zaczekać.
    Na duży plus zasługuje fakt, że trasy względem poprzednich lat zostały ~dwukrotnie powiększone. W ostatnich latach średni czas przejazdu szybkiego robota bez turbiny wynosił 6s, w tym roku trasa liczyła co najmniej 20m długości i czas przejazdu sięgał 11-18 sekund (w eliminacjach krótsze, finały trudniejsze-wolniejsze).
    Ekipa od LF spisała się bardzo dobrze, sędziowie trzymali się regulaminu, trasy były wyklejane bardzo sprawnie.

    Problem z komunikacją również mnie dotknął - przegapiłem rozdanie nagród w swojej konkurencji będąc w strefie technicznej - informację dostaliśmy od znajomych, którzy oglądali transmisję w TVPW 😅  Na szczęście nagrody nie przepadły i nawet daliśmy radę zrobić sobie zdjęcie pamiątkowe na podium 🙂

    Jeżeli chodzi o nagrody - subiektywnie zabrakło statuetki na pamiątkę (osobiście wolę statuetki od nagród materialnych).

    Ogólnie zawody pod wieloma względami uważam za lepiej zorganizowane niż rok wcześniej.

    • Lubię! 1

  9. Potwierdzam - soft start się nie sprawdzi. Robot może kicać na zakrętach.

    A w przypadku "analogowego" zczytywania z czujników linii pewnie trzeba podnieść listwę troszkę w górę, dobrać odstępy, prąd diody.. Dodatkowo może to być problematyczne w przypadku zmiennego oświetlenia. Nie wiem jak to jest w najszybszych LFach, ale może i warto się tym zająć. Dzisiaj liczy się najmniejszy szczegół, żeby przodować w tej konkurencji.


  10. Świetne zawody, najlepsze na jakich byłem - a byłem już na 3 😅

    Organizacja i przygotowanie 9.5/10 (zawsze można coś poprawić 🙄 )

    Doceniam poświęcony czas, siły i że komuś się chciało.

    Wysoko podnieśliście poprzeczkę, na pewno wyróżniacie się na tle innych i mam nadzieję, że organizatorzy innych zawodów będą starać się wam dorównać.

    Jedynie mogłoby być troszkę więcej zawodników.


  11. Płytkę czujników już zaprojektowałem.

    Cały czas przeglądam tę notę katalogową i nadal nie rozumiem.

    Vo z KTIR przekracza 0-5V?

    Znalazłem także, że pull-upy w Atmedze8 to 20-50k, znajomy mi powiedział, że prawdopodobnie mogę je zastosować zamiast tych "fizycznych", w nocie jest przykład z 15k, znaczna różnica?

    Niestety trochę śpieszę się z płytką, bo chcę by była skończona zanim wyjadę z domu, a później zajmę się najgorszą dla mnie przeszkodą czyli programowaniem. Jeśli nie będzie się do tego nadawała to nic się nie nauczę i pewnie odstawie projekt na kolejne święta. Muszę też godzić to wszystko z innymi obowiązkami.


  12. Przyznaję, marny ze mnie elektronik. Sposób podłączenia czujników z tym komparatorem podpatrzyłem z innych projektów (Macliner 2 bodajże). Z opornikiem wyliczyłem, że będzie to 470 Ohm, tamte też podpatrzyłem z innych projektów. To mój pierwszy projekt i ciężko mi wszystko projektować od podstaw..

    Aktualnie będę podłączał czujniki w ten sposób:

    Może to nie jest dział dla zielonych, ale czy mógłbyś powiedzieć mi jakie są zagrożenia, co do poprawy i czy muszę całą płytkę od nowa tworzyć..? :/

    O kurcze, w Maclinerze chyba są wewnętrzne rezystory pull-up z uC, niestesty nie mam o tym żadnego pojęcia. Czy da się to tutaj zastosować bez większych ingerencji?


  13. Dzięki, właśnie takiej odpowiedzi oczekiwałem.

    Miał być piękny LF na jednym PCB, ale postanowiłem, że utnę część z czujnikami, i podczepię nową z dobrze połączonymi.

    Teraz zastanawiam się tylko czy potencjometr z rezystorami pod komparator mają dobre wartości, i czy właśnie dać 10k zamiast 20k na "podciągniki"?


  14. Oczywiście, że nie chcę.

    Po prostu jak mówię, mam już wytrawioną i polutowaną płytkę. Nie uruchamiałem jej jeszcze, zauważyłem po prostu błąd połączenia. A pytam, gdyż wyczuwam choć cień szansy po przejrzeniu datasheetu:

    Max Ratings

    Emitter-collector voltage Veco 5 V

    i znalezieniu takiego tematu na elektrodzie:

×
×
  • Utwórz nowe...