Skocz do zawartości

Nawyk

Użytkownicy
  • Zawartość

    2072
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    126

Wszystko napisane przez Nawyk

  1. To wyciągnij ten czarny przewód ze stykówki i dotknij nim środkowego wyprowadzenia potencjometru - zobacz, czy coś się zmieni w odczytach na UART...
  2. Sprawdziłeś miernikiem, czy Ci się wydaje?
  3. Masz źle podłączony potencjometr do A5 (o jeden rządek na stykówce za daleko) deshipu uprzedził
  4. No_chej, domyśliłem się o co chodzi, ale uwierz mi, że nie chcesz rad opartych na domysłach. Skoro masz problem i prosisz o pomoc, to po Twojej stronie jest zadbanie o pełen zestaw danych. Skoro wszystko jest tak samo jak w kursie, a u Ciebie jednego nie działa, to musiałeś paść ofiarą legendarnego Błędu Kompilatora, w końcu nie ma co sprawdzać innej opcji
  5. W temacie piszesz o potencjometrze, w treści o rezystorze, potem mówisz że jak kręcisz to nic się nie zmienia, ale na porcie szeregowym masz ciągle powtarzające się zera, potem 4, 11, 24 i tak do 1023. Kodu ani schematu połączeń nie wrzuciłeś. Nawet zdjęcie mogłoby kogoś nakierować na odpowiedź. Jak więc mamy Ci pomóc? Przede wszystkim, jeśli robisz przykład "Prosty woltomierz", to powinienneś mieć mieć na UART wartości 0.0..5.0, a nie 0..1023.
  6. Wygląda mi jak niedopasowanie baudrate podpiętego urządzenia (w tym przypadku maliny) vs ustawień terminala na PC (w tym przypadku putty). Jaki masz baudrate w putty?
  7. Zgadzam się, tylko autorowi chodzi chyba przede wszystkim o aspekt edukacyjny. Metodę zawsze można potem przenieść na coś mocniejszego albo skorzystać z gotowych mechanizmów, kiedy już się zrozumie zasadę działania
  8. Spokojnie, każdy kiedyś zaczynał i miał z tym problem Polecam przerobić kurs, np. ten kurs elektroniki od podstaw. A potem przeanalizuj sobie ten obrazek, bo w sumie połączyć to można na setki sposobów
  9. Ja mam jeszcze inną propozycję - co powiesz na zabawy z ArduCamem i reverse engineering bibliotek na Arduino? Biblioteki Arduino są na ogół dobrze opisane w komentarzach/w Internecie i nawet jeśli są ogólnie słabe i kiepskiej jakości, to sam proces działania można w dość prosty sposób zrozumieć na przykładzie. A potem zrobić to samemu lepiej
  10. marek1707 uprzedził mnie, kiedy szukałem zdjęć, więc nie będę się rozpisywać, tylko podrzucę foto: Zamiast przekładni, w "moich czasach" widywało się opony zrobione ze zwykłej gumki do ścierania. Trzeba było ją ukształtować w stożek i nadziać/nakleić na wał silnika. Bardzo mała średnica dawała wystarczający moment obrotowy, żeby ruszyć takiego małego robota. Przed rozkwitem Botlandu i innych tego typu sklepów, osobiście korzystałem z części Lego Technics - miałem całe kartony Wystarczy tylko pokombinować z taką częścią: Czasem może się zdarzyć, że średnica wału silnika niemal idealnie pasuje w otwór powyższego adaptera. Można się nawet pokusić o klej na gorąco albo Kropelkę nalaną do środka. Oczywiście im ciaśniejsze pasowanie, tym dłużej to pochodzi. Dorobić kompatybilne z lego mocowanie i przekładnie oraz resztę napędu można zrobić w prosty sposób z klocków.
  11. Cześć Marcin, cześć Andrzej - witamy na forum
  12. Polecam Eneloopy od Sony, tylko uwaga na podróbki z Allegro. Dostaniesz je m.in. w Media Expert. Im więcej, tym taniej. Jeśli chodzi o żelowe vs inne, to może Cię zainteresować mój krótki artykuł o akumulatorach w robotyce amatorskiej
  13. Tylko w tych obliczeniach zakładasz, że silnik działa jak rezystor, czyli się nie obraca - czyli powinien mieć wtedy prąd szczytowy (zwarcie), a ten niby wynosi 15 A. Moim zdaniem to się totalnie nie klei i można tylko gdybać co producent miał na myśli. Wkurza mnie tylko, że na stronach, które ten silnik sprzedają, nikt nie kwapił się do skorygowania opisu, spytania producenta - albo kopiuj-wklej z hobbykinga, albo strategicznie przemilczana wartość "rezystancji".
  14. Chciałem, żeby poznanie zasady działania silnika nakierowały Cię na pewne wnioski. Jak myślisz, jak duży prąd popłynie przez uzwojenia o rezystancji rzędu 250 milionów ohmów? Odpowiedź: żaden. A raczej bliski zera. Nie wiem więc co może oznaczać taka wartość na stronie dystrybutora, bo po kiego grzyba by informowali o np. rezystancji izolacji uzwojeń, bez zaznaczenia, że to o nie chodzi? I wątpię też, żeby sprzedawali spalone silniki a w momencie reklamacji mówili "przecież parametry zgodne z opisem!" O ile na forum nie wypowie się ktoś bardziej ogarnięty w temacie silników i nas obu nie uświadomi, to bezpiecznie bym założył, że informacja jest błędna. Rezystancja z indukcyjnością uzwojeń przydaje się do wyznaczenia tzw. stałej czasowej silnika, pomaga określić jego dynamikę (czas reakcji na zmiany prądu w uzwojeniach), możesz zasymulować jego działanie w jakimś Simulinku.
  15. Serio? Wpisałem w allegro "przewody haczyki" i prosz: https://allegro.pl/przewod-pomiarowy-haczyk-haczyk-2szt-i5217255989.html To samo z krokodylkami: https://allegro.pl/zestaw-przewodow-z-krokodylkami-10-sztuk-i7370038711.html
  16. Założenia całkiem słuszne, chociaż zależnie od "koszyka na baterie" możesz jeszcze potrzebować przetwornicy (stabilne źródło napięcia 5V!). Potrzebny moment wyliczysz z prostego mnożenia znając ciężar i długość "pałąka". Od obstawiania są inne instytucje Pamiętaj tylko o zapasie, bo musisz pokonać m.in. tarcie i niedokładność chińskich rączek. Polecam zacząć od przejrzenia oferty sklepów, np. tutaj: https://botland.com.pl/105-moduly-radiowe Posortuj sobie wg ceny, bo te moduły LoRa mogą Cię niepotrzebnie odstraszyć
  17. Tak szczerze, to te pytania nie zaczynają ani nie kończą się tutaj... To są pytania, o których wiesz, a te o których jeszcze nie wiesz są znacznie gorsze Zacząłbym od "czym jest właściwie amper i wolt" "jak działa akumulator" i "czym jest i co daje to >>Resistance<< silnika". Zamiast dawać Ci ryby, daję Ci wędkę i mam tylko nadzieję, że skorzystasz zamiast się zniechęcać, bo koledzy strasznie się namęczyli żeby dotarczyć względnie wyczerpujące i łatwo przyswajalne informacje jak na tacy: https://forbot.pl/blog/kurs-elektroniki-napiecie-prad-opor-zasilanie-id3947 potem https://forbot.pl/blog/akumulatory-litowo-polimerowe-li-po-kompendium-id291 i https://forbot.pl/blog/silniki-elektryczne-szczotkowe-bezszczotkowe-krokowe-id2802 To tak na start. I rozwiążą się Twoje wątpliwości.
  18. Jeśli dobrze zapakują, to tak. Jeśli źle, to nie. A tak serio, to osobiście mam z nimi dobre wspomnienia.
  19. Jest kilkanaście przyczyn, jakie przychodzą mi do głowy, ale najważniejsze w Twoim przypadku to IMHO: przeregulowanie w pętli sterowania pozycją (serwo za szybko chce osiągnąć zadaną pozycję, "hamuje" np. dopiero jak osiągnie pozycję - po prostu za późno) szum w informacji o pozycji (potencjometry szumią i to bardzo...) brak profilowania prędkości - w ramionach robotycznych o dużej inercji często stosuje się po prostu filtr na pozycję zadaną, ew. implementuje się profil trapezowy prędkości, czyli w praktyce taki "soft-start" i "soft-stop", o którym pisał MATMIC - tym się na ogół poprawia niedoróbki z punktu pierwszego niska sztywność konstrukcji - wyobraź sobie, ze zamiast plastikowych płytek masz gumowe pręty; w skrócie tak mniej-więcej zachowuje się każdy człon w każdym manipulatorze, tylko na mniejszą skalę; elastyczności uwzględnia się i kompensuje w modelu matematycznym manipulatora Na pierwszy i drugi punkt nie masz za bardzo wpływu, bo musiałbyś modyfikować samo serwo albo spróbować działać tak, jak radzi Gieneq - swoją drogą, dawno temu napisałem coś, co się może przydać, poczytaj sobie 3-ci punkt kompendium wiedzy o serwach modelarskich Ostatni punkt wymagałby przeróbek samej konstrukcji, a ciężko w domowych warunkach poprawić sztywność konstrukcji bez dokładania masy. Nie jesteś też raczej w stanie w domowych warunkach zrobić dokładnego modelu dla tak lekkiego manipulatora... Profilowanie prędkości jest jak najbardziej do zrobienia i w to bym celował na Twoim miejscu, jeśli w ogóle chcesz ten projekt rozwijać Powodzonka!
  20. Luzik Pewnie masz domyślne ustawienia w PLL (dla 25 MHz zamiast dla kwarcu 8 MHz). Na APB1 (od USART2) powinieneś mieć 42 MHz #define PLL_M 8 #define PLL_N 336 #define PLL_P 2 #define PLL_Q 7 A tak to wygląda w całej okazałości (swoją drogą - polecam CubeMX): edit: Właśnie przyjrzałem się Twojej płytce i widzę, że tam w ogóle nie ma wlutowanego HSE W każdym razie masz coś namieszane w ustawieniach zegarka, a objawy 25/8 akurat zgadzałyby się z Twoim problemem
  21. Nic dziwnego, że coś takiego nie istnieje - wklejasz do M4 kod napisany dla M3. Chociaż różnic nie ma znowu tak wiele, to jednak nie uda Ci się nic zdziałać bez zaglądania do datasheeta. Porównaj sobie chociażby sposób podłączenia RCC do GPIO: M3 M4 A tutaj masz poprawiony kod do nadawania: #include "stm32f4xx.h" void send_char(char c){ while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET); USART_SendData(USART2, c); } void send_string(const char* s){ while (*s) send_char(*s++); } int main(void){ GPIO_InitTypeDef gpio; USART_InitTypeDef uart; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD, ENABLE); // RCC_APB1PeriphClockCmd(RCC_APB1Periph_AFIO, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); GPIO_StructInit(&gpio); gpio.GPIO_Pin = GPIO_Pin_2; gpio.GPIO_Mode = GPIO_Mode_AF; GPIO_Init(GPIOA, &gpio); GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_USART2); gpio.GPIO_Pin = GPIO_Pin_3; gpio.GPIO_Mode = GPIO_Mode_AF; GPIO_Init(GPIOA, &gpio); GPIO_PinAFConfig(GPIOA, GPIO_PinSource3, GPIO_AF_USART2); USART_StructInit(&uart); uart.USART_BaudRate = 115200; USART_Init(USART2, &uart); USART_Cmd(USART2, ENABLE); while (1) { send_string("Hello world!\r\n"); } } i odbierania danych: #include "stm32f4xx.h" void send_char(char c){ while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET); USART_SendData(USART2, c); } void send_string(const char* s){ while (*s) send_char(*s++); } int main(void){ GPIO_InitTypeDef gpio; USART_InitTypeDef uart; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD, ENABLE); // RCC_APB1PeriphClockCmd(RCC_APB1Periph_AFIO, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); GPIO_StructInit(&gpio); gpio.GPIO_Pin = GPIO_Pin_2; gpio.GPIO_Mode = GPIO_Mode_AF; GPIO_Init(GPIOA, &gpio); GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_USART2); gpio.GPIO_Pin = GPIO_Pin_3; gpio.GPIO_Mode = GPIO_Mode_AF; GPIO_Init(GPIOA, &gpio); GPIO_PinAFConfig(GPIOA, GPIO_PinSource3, GPIO_AF_USART2); USART_StructInit(&uart); uart.USART_BaudRate = 115200; USART_Init(USART2, &uart); USART_Cmd(USART2, ENABLE); while (1) { if (USART_GetFlagStatus(USART2, USART_FLAG_RXNE)) { char c = USART_ReceiveData(USART2); switch (c) { case 'a': send_string("Odebrano komunikat A!\r\n"); break; case 'b': send_string("Odebrano komunikat B!\r\n"); break; default: send_string("Nieznany komunikat:(\r\n"); break; } } } } Nie sprawdzałem, ale powinno działać.
  22. Problem jest w zasadzie standardowy i jego główną przyczyną jest wszechobecny szum Nie siedzę w Arduino i nie chce mi się pisać kodu za Ciebie, ale na szczęście ktoś już to zrobił: https://www.arduino.cc/en/Tutorial/Smoothing Powodzenia
×
×
  • Utwórz nowe...