Skocz do zawartości

Elvis

Użytkownicy
  • Zawartość

    2596
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    189

Wszystko napisane przez Elvis

  1. Żeby uzyskać 5V na wyjściu wzmacniacza musiałbyś zasilać go z napięcia >5V. Jeśli zasilisz z 5V to max na wyjściu ok. 3,6V. Więc dokładność będzie mniejsza. W przypadku bardzo małych prądów przeważnie pomiar jest mało dokładny. Jeśli potrzebujesz większą dokładność i dla dużych i małych prądów najlepiej użyć 2 wzmacniaczy (albo np. jednego LM358) i w jednym dać znacznie większe wzmocnienie. Wtedy w programie najpierw odczytujesz dane z tego wzmacniacza o dużym wzmocnieniu - jeśli jest nasycony, to czytasz z drugiego.
  2. Coś marnie mi szło wyliczanie mocy, ale poprawiłem post Jeśli problemem jest miejsce, to możesz użyć rezystorów SMD. Np. w ofercie TME są rezystory 0,1Ohm / 2W. Taki rezystor pozwoli na pomiar do 4,5A! A jeśli dasz dwa równolegle, to nawet 9A. Problemem może być za to pomiar małych prądów - błąd pomiaru może być większy niż zam pomiar. Np. prąd 100mA spowoduje spadek napięcia raptem 10mV - może być ciężko zmierzyć.
  3. Rezystory są 2x5W, bo układ ma mierzyć do 10A. Jeśli nie potrzebujesz 10A (piszesz coś o 1-2A), to możesz dać mniejsze. Ogólnie wzór jest prosty: P = R*I^2 Więc jak masz I=10A, R=0,1Ohm, to moc wydzielona to jakieś 10W! Przy I=2A już tylko 0.4W
  4. Nie lustro prądowe, tylko wtórnik napięciowy. Można od razu dać wzmocnienie i regulację - taki układ jest w kicie AVT.
  5. Zobacz tutaj: http://download.avt.pl/AVT2857.pdf
  6. Przerwania nie powinny mieć wpływu na działanie delay_ms(). Może problem jest gdzieś indziej, np. procesor restartuje, gdy zmieniasz sterowanie silnikami? Proponuję na początku programu dodać pętlę, która np. 3 razy mrugnie diodą z zadaną prędkością - chodzi o możliwość wykrycia początku programu.
  7. Może warto poczytać o USB OTG (on-the-go). Nie używałem nigdy, ale teoretycznie powinno umożliwić pracę jako host. Nawet małe (8-bitowe) procesorki ostatnio obsługują USB OTG. Jest jeszcze jedna, bardzo prosta możliwość - możesz wykorzystać płytkę z linuxem na pokładzie, np. http://www.propox.com/products/t_232.html Wtedy masz już wszystko gotowe, obsługę usb, zapis plików itd.
  8. Wszystkie linki są w artykule. Których datasheetów nie możesz znaleźć?
  9. Testuję właśnie płytkę MMnet1001 z linux-em na pokładzie. Ciekaw jestem, czy ktoś na forum ma już jakieś doświadczenie w budowaniu robotów opartych o linuxa. Ewentualnie może są jakieś pomysły, na co zwrócić uwagę testując? W czerwcu powinien pojawić się artykuł o płytce, ale co dokładnie będzie opisane to jeszcze temat otwarty.
  10. Upewnij się, że zworki JP2 i JP3 są założone.
  11. W sumie to cały temat nie ma zbyt wiele wspólnego z robotyką, ale jedna rzecz jest ciekawa i pouczająca. Przykład z tutoriala arduino jest błędny - rezystor 10k jest wpięty nie tam gdzie powinien. W tutorialu to połączenie +5V z GND przez rezystor 10k nic nie daje, tylko prąd pobiera. To nawet nie jest pull-down. Prawdopodobnie miał być, ale "wyszło" po złej stronie przełącznika. Jak przełącznik jest rozwarty, to tylko wbudowany pull-up może uratować sytuację. Wniosek jest ważny: nie można bezkrytycznie ufać temu co się w sieci wyczyta. Swoją drogą warto byłoby do autora tutoriala jakiegoś maila napisać, żeby to poprawił.
  12. Dodaj do funkcji setup(): digitalWrite (buttonPin,HIGH); [ Dodano: 11 Maj 10 07:57 ] Żeby nie było, że to magia - nie dałeś pullup-a. Można go włączyć w procesorze, ale jeśli nie dasz go na zewnątrz, a nie nie włączysz w procesorze, to pin "wisi" w powietrzu. Działa wtedy jak antena i zbiera zakłócenia.
  13. Moim zdaniem odczytujesz stan linii która nie jest do niczego podłączona. Pin "wisi" w powietrzu i zbiera różne śmieci. Na palcu masz ładunek i jak zbliżasz do pinu indukuje się na nim napięcie. Domyślam się, że program odczytuje coś z takiej linii i steruje diodą.
  14. To prawda, że najlepiej podłączyć przyciski do gnd. Jednak ten układ też jest do uratowania. Wystarczy dodać rezystory między gnd a wejścia procesora. Jeśli podłączysz przyciski do gnd, rezystory nie będą konieczne. W procesorze można włączyć pullup-y, czyli wbudowane rezystory podłączone między vcc, a wejścia.
  15. Jak już pomagam, to jeszcze jedna uwaga. Trochę źle obsługujesz i2c. Powinieneś mieć wyjście OC (open-colector). Jeśli procesor go nie ma, to zamiast wystawiać 1 na pin należy przełączać linię w tryb wejścia (zewnętrzny rezystor/pull-up sam ustawi logiczne 1). Chodzi o to, że jak wystawisz na procesorze 1, a PCF wystawi 0 (np. wysyłając ACK) to powstaje zwarcie. Jeśli wyjście jest OC, to nie ma problemu.
  16. Racja, spieszę się trochę do roboty, ale problem mnie zaciekawił. Zobacz jeszcze ten fragment kodu: i2c_sclsetport(); ... if(i2c_sdaget()) { temp++; i2c_sclclearport(); } } Na linie zegara (SCL) dajesz 0 tylko jeśli odebrałeś 1. i2c_sclclearport(); powinno być poza if-em
  17. //bajt adresowy, dzieki niemu odczytamy wartosc przetwornika na kanale 0 i2c_send(0x91); 0x91 oznacza odczyt z AIN1, a chyba chodziło Ci o AIN0, czyli 0x90.
  18. Teoretycznie jest to możliwe, ale na pewno nie proste. Problem w tym, że podczas każdej transmisji radiowej często pojawiają się błędy. Więc proste wgrywanie (jak po rs232) raczej nie ma szans zadziałać. Pozostaje użyć ISP (In-system-programming), czyli napisać program, który będzie pobierał dane, weryfikował poprawność i programował flash. W ten sposób działają procesory ARM - w wydzielonym fragmencie pamięci zapisany jest bootloader, który pobiera dane z RS232 i zapisuje program w pozostałej pamięci. Można taki program napisać dla AVR (chyba już nawet został napisany dla RS232). Wymaga to sporo wiedzy i pracy.
  19. Tak jak napisał BoBBy, procesor ma tylko 3 wejścia przerwań. Pozostaje zmienić procesor, albo zrezygnować z przerwań. Spokojnie możesz obsługiwać przycisk poza przerwaniami - i tak trzeba eliminować drgania styków.
  20. W sumie ciekawe po ile wobit sprzedaje te silniki. Znalazłem cenę tutaj: http://www.ondrives.com/gearboxes-reducers-dc-motors-dc-motor-gearheads-1-61-46-25-300mnm.html 95£ - razy 4 to jednak sporo kasy...
  21. Każdy układ L298 ma wbudowane dwa mostki. A dwa mostki w zupełności wystarczą. Inny problem, to czy na pewno L298 wystarczy. Jeśli to są silniki o których niedawno pisałeś w innych postach, to sprawdź prąd zwarciowy, bo chyba jest bardzo duży. Więc jeśli zablokujesz silniki, to spalisz mostki - nawet jeśli użyjesz 2.
  22. Podłączone jest dobrze (zapomniałeś tylko od połączeniu GND z gnd przy 5V). Natomiast nie bardzo widzę sens używania 2 mostków. Nie wystarczy podłączyć równolegle silniki? Jeśli L298 jest za słaby to można dać inny mostek, ale nie ma potrzeby dawać mostka dla każdego silnika oddzielnie. Robot produkcji Wobit-u (Maor) ma po dwa silniki połączone równolegle i działa, więc nie powinno być poblemu.
  23. Tak, nawet w 4 bajtach - bo na końcu znak nowej linii. Dużo łatwiej jest takie dane odczytać, wystarczy hyperterminal, błędy widać o tyle, że wszystko co nie jest liczbą trzeba odrzucać, nie ma problemu z wykrywaniem początku ramki, bo znaki końca linii oddzielają dane. Żeby było łatwiej można użyć standardowego printf - wystarczy przekierować wyjście na uart i kod: printf("%d\n", dane); załatwia sprawę. Do tego akwizycję danych można dać na przerwaniach i program działa pięknie i prosto.
  24. Zobacz te moduły: http://www.propox.com/products/t_202.html Opis pojawi się niedługo na diodzie. Co prawda nie udało mi się takiego zasięgu uzyskać, ale producent podaje 1km. Więc powinny być lepsze - a o ile model będzie w zasięgu wzroku jest szansa. Problem jest zawsze ten sam - budynki bardzo tłumią sygnał.
  25. Najszybciej to można wysłać najpierw górne 8bitów liczby, później dolne 8b. Czyli: unsigned int dane = adc_val(); uart_send(dane>>8); uart_send(dane); Problem w takiej sytuacji to po pierwsze wykrywanie błędów, po drugie wykrycie początku danych. Jeśli coś mogę polecać, to transmisję tekstową i zwiększenie prędkości uart (np. do 115200).
×
×
  • Utwórz nowe...