Skocz do zawartości

Elvis

Użytkownicy
  • Zawartość

    2425
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    168

Wszystko napisane przez Elvis

  1. 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...
  2. 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.
  3. 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.
  4. 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.
  5. 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ł.
  6. 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).
  7. Najwięcej zależy od tego gdzie będziesz przesyłać dane. Producent podaje 200m otwartej przestrzeni. Jeśli po drodze będą przeszkody (np. ściany, budynki) zasięg bardzo szybko spada. Dodatkowy problem to antena - jeśli użyjesz "standardowej", czyli przewodu 8/16cm, to zasięg będzie mały. Warto jeszcze pamiętać, że 433MHz mają większy zasięg niż 868MHz - im wyższa częstotliwość, tym bardziej jest tłumiony sygnał np. przez budynki. Moduły nie mają żadnej kontroli danych, modulacji itd. Samemu (programowo) można to realizować, ale chyba lepiej wybrać inne moduły. To są bardzo proste moduły, dla prostych zastosowań. Można np. zrobić zdalnie sterowanego robocika, czy termometr zaokienny.
  8. W datasheecie układu opisują podłączenie przez spi. Co prawda jest mowa o trybie native i compatibility, ale nie wiem czym dokładnie się różnią. Użycie spi to chyba dobry wybór, sporo danych trzeba przesyłać, więc najlepiej użyć spi + dma.
  9. Artykuł ten jest kontynuacją opisów modułów komunikacji radiowej. W poprzedniej część, przedstawiłem moduły HM-T868S, HM-R868S, RFM12B / 868D oraz CC1000PP-433. Druga część opisu dotyczy komunikacji przy wykorzystaniu modułów MMcc1100 dostępnych w firmie Propox. Więcej informacji znajduje się na stronie producenta. Do testów firma Propox dostarczyła dwa moduły MMcc1100 w wersji na 868MHz (dostępne są również wersje 433MHz). Moduły wyposażone są w układ CC1100, jego poprzednia wersja (CC1000) została opisana w poprzednim artykule. Nowa wersja układu została znacznie poprawiona. Usunięte zostały największe wady poprzednika, czyli skomplikowany protokół transmisji. Moduł CC1000 wymagał zarówno interfejsu SPI, jak i oddzielnego interfejsu dla danych. W przypadku CC1100 wystarczy SPI. Moduły wyglądają jak na fotografiach (źródło zdjęć: Propox) A tak wygląda testowany moduł: Opis modułów Do testów niezbędne są co najmniej dwa moduły. Jeden będzie służył jako nadajnik, drugi jako odbiornik. Możliwa jest komunikacja w obu kierunkach w trybie half-duplex. Każdy moduł może szybko przełączać się między trybami nadawania-odbioru, jednak nie jest możliwe jednocześnie nadawanie i odbieranie danych. Możliwa jest komunikacja między więcej niż dwoma modułami. Można wysyłać dane do wybranego modułu, a nawet do wszystkich jednocześnie (tzw. rozgłaszanie/broadcasting). Parametry modułów podawane przez producenta (źródło: Propox): • Praca w paśmie od 300MHz do 928MHz. • Częstotliwość pracy ustawiana programowo. Możliwość pracy w pasmach użytkowanych w Europie, USA i Japonii. • Zasięg przy sprzyjających warunkach nawet do 1km, standardowo ok. 350 m. • Prędkość transmisji ustawiana programowo od 1,5 kb/s do 500 kb/s. • Duża czułość odbiornika, do ok. -110dBm. • Moc wyjściowa do 10 dBm ustawiana programowo w szerokim zakresie. • Dwa 64-bajtowe bufory nadawczo-odbiorcze. Dzięki znacznemu zautomatyzowaniu transmisji, układ może współpracować z wolnymi procesorami. • Wewnętrzny układ automatycznej korekcji błędu. • Wybierany programowo format transmisji danych: FSK, OOK, ASK. • Możliwość programowego wyboru numeru kanału radiowego - do 255 kanałów. • Tryb czuwania (1uA) z automatycznym wybudzeniem. • Napięcie zasilania: 1.8V - 3.3V • Niski pobór mocy Warto od razu wyjaśnić, że zakres częstotliwości dotyczy układu CC1100, nie całego modułu. Moduły wykonywane są na określony zakres częstotliwości (433MHz lub 868MHz) i nie można bez zmiany elementów programowo przestroić częstotliwości w tak szerokim zakresie. Podłączenie Rozmieszczenie pinów w module odpowiada standardowym listwom goldpin, raster 2,54mm pasuje do typowych gniazd. Ja wykorzystałem przewody, aby nie lutować nic do wypożyczonych modułów. Piny które trzeba podłączyć to: • GND - Masa • 3V3 - zasilanie modułu (1.8V-3.6V) • ANT - antena Do komunikacji z mikrokontrolerem wykorzystywany jest standardowy interfejs SPI: • CS - stan niski uaktywnia magistralę SPI • SCLK - zegar taktujący magistrali • SI - szeregowe dane wejściowe (MOSI) • SO - szeregowe dane wyjściowe (MISO) Jak widać podłączenie jest bardzo proste. Jako antenę można użyć zwykły przewód o długości ok. 8cm. Niestety moduł nie pozwala na pracę z napięciami 5V. Jeśli wykorzystujemy popularne procesory AVR (np. ATMega, ATTiny) konieczne jest użycie wersji niskonapięciowej (z literką L na końcu nazwy, np ATMega8L), albo dodanie konwertera napięć oraz oddzielnego zasilania (3.3V) dla modułu radiowego. Do testów postanowiłem wykorzystać procesory pracujące z napięciem 3.3V. Uruchomienie Do pierwszych testów oba moduły zostały podłączone do jednego procesora. Wykorzystałem płytkę prototypową STM32-P103 firmy Olimex, dostępną w ofercie firmy http://www.mikroprocesor.pl. Główne (a przynajmniej wykorzystane) parametry użytej płytki prototypowej to: • mikrokontroler STM32F103RBT6 (ARM 32 bit CORTEX M3™, 128KB Program Flash, 20KB RAM, USB, CAN, I2C, ADC 12 bit, UART, 2 SPI, TIMERS, fmax 72MHz) • stabilizator napięcia 3.3V 800mA • interfejs RS232 • złącze UEXT (10 pin) do podłączenia dodatkowych modułów firmy Olimex • oscylator kwarcowy 8 MHz Wybrany procesor zasilany jest napięciem 3.3V, więc nie było problemu z konwersją napięć. Dwa sprzętowe moduły SPI pozwoliły na łatwe podłączenie jednocześnie nadajnika i odbiornika do jednego procesora. Wyniki testów wysyłane były do komputera przez łącze RS232. Pierwszy program Konfiguracja modułów okazała się nie lada wyzwaniem. Podobnie jak w przypadku CC1000 możliwości konfiguracji jest bardzo dużo. Producent układów dostarcza specjalny program do ustalania konfiguracji SmartRF Studio. Poza programem do ustalania konfiguracji, konieczne okazało się dokładne zapoznanie z dokumentacją układu (dostępną tutaj). Producent nie dostarcza niestety przykładowych programów, więc program testowy dość długo nie chciał zadziałać. W końcu jednak udało się przesłać komunikat z jednego modułu do drugiego. Wspomnę tylko, że poza samą konfiguracją układu konieczne jest jego programowe zresetowanie oraz zadbanie o odpowiedni stan pracy układu (w dokumentacji opisany jest odpowiedni automat stanowy). Wersja mobilna Przesyłanie danych między interfejsami tego samego procesora jest mało ciekawym zadaniem. Do kolejnego testu konieczne było użycie drugiego procesora. Tym razem wybór również padł na płytkę wyprodukowaną przez Olimex. Wykorzystałem moduł STM32-103STK. Podstawowe parametry płytki: • mikrokontroler STM32F103RBT6 • wyświetlacz LCD NOKIA 3310 BW 84x48 pixels • gniazdo baterii 1.5V • przetwornica podwyższająca napięcie, • akcelerometr 3D, • gniazdo kart SD-MMC • wejście i wyjście audio • dwa przyciski i joystick (4 kierunki i przycisk) • dioda LED Moduł pracuje z napięciem 3.3V, chociaż zasilany jest jedną baterią 1.5V. Duży wyświetlacz pozwala na odczyt komunikatów testowych. Procesor identyczny jak w wersji poprzedniej ułatwił przeniesienie programu. Testy Pierwsza płytka (STM32-P103) została podłączona do modułu skonfigurowanego jako nadajnik. Program testowy wysyłał cyklicznie komunikat. Druga płytka (STM32-103STK) pracowała jako odbiornik. Program testowy wyświetlał odebrane informacje na LCD. Chodząc z drugą płytką w ręku można było przetestować zasięg i możliwości modułów. Na początek przetestowałem komunikację w obrębie mieszkania. Zasięg był wszędzie, jedynie przy przemieszczaniu czasem pojawiały się błędy (kontrola CRC wbudowana w układ nie zawsze wystarczała). Możliwe, że powodem problemów było bardzo prowizoryczne podłączenie modułów radiowych. Kolejny test polegał na wyjściu poza mieszkanie. Chodząc po klatce schodowej udało mi się ustalić zasięg pracy modułów na jakieś 2-3 piętra. Prawdopodobnie byłby większy, gdyby możliwe było testowanie w jednym pionie (nadajnik był w mieszkaniu, z odbiornikiem chodziłem po klatce schodowej, więc dodatkowo sygnał tłumiony był przez ściany jeszcze w mieszkaniu). Nie zdobyłem się jednak na odwagę, żeby prosić sąsiadów o pozwolenie na testy w ich mieszkaniach. Pozostało mi tylko sprawdzić, czy jest zasięg poza budynkiem. Nadajnik znajdował się w mieszkaniu, na 3 piętrze. Po wyjściu z budynku niestety nie było zasięgu. Szybko okazało się jednak, że z drugiej strony bloku zasięg jest. Ściany bardzo silnie tłumią fale, więc większe znaczenie niż odległość miała liczba ścian po drodze. Po stronie bloku, gdzie znajdował się nadajnik, zasięg wynosił co najmniej 50m, niestety dalej nie udało mi się przetestować - kolejny blok skutecznie blokował sygnał. Wniosek jest taki, że zasięg jest znacznie lepszy niż typowych modułów np. WiFi, jednak do deklarowanego przez producenta 1km konieczne byłoby chyba testowanie w próżni. Trzeba jednak przyznać, że jako anteny wykorzystywałem dwa 8cm przewody, więc z "prawdziwą" anteną zasięg byłby niewątpliwie lepszy. Użyte programy znajdują się w załącznikach. Podsumowanie Moduły MMcc1100 nie należą do prostych w obsłudze. Są to układy z wyższej półki zarówno cenowej, jak i jakościowej. Niestety do ich wykorzystania potrzebne są dość zaawansowane umiejętności. Moduły dostępne są w sklepie producenta, w cenie ~45zł szt. Zalety: bardzo rozbudowane możliwości konfiguracji, praca w wielu trybach możliwość przesyłania danych z dużą prędkością (500kbps) prosty interfejs komunikacji z mikrokontrolerem (SPI) dość duży zasięg wbudowane mechanizmy detekcji i korekcji błędów mały pobór prądu Wady: brak możliwości pracy z napięciem 5V skomplikowana obsługa programowa wyższa cena niż innych modułów Dziękujemy firmie Propox za dostarczenie modułów do testów. CC1100_STM32LCD.zip CC1100_STM32.zip
  10. Oczywiście, że są takie moduły. Chociażby: http://www.digi.com/products/embeddedsolutions/digiconnectwime.jsp Pomijam kwestię ceny, ale są.
  11. Miło widzieć, że ktoś zabiera się po inżyniersku do tematu. Niestety obliczenia nie są poprawne. Pierwszy błąd to, jednostki. Powinno być liczone w m, ale niech już zostanie mm. Są tutaj 2 błędy. Pierwszy niewielki, pole to oczywiście mm^2 a nie mm. Drugi powiażniejszy: 35um x 2mm = 0,035mm x 2mm = 0,07 [mm^2] Więc mamy wszystkie wyniki o rząd wielkości pomylone. Po wyliczeniach dla powinno wychodzić: dla 10mm: R = 0,0026 [Ω] U = 0,00156 [V] P = I*U = 0,6[A] * 0,00156[V] = 0,9 [mW] dla 300mm: R= 0,078 [Ω] U = 0,0468[V] P = I*U = 0,6[A] * 0,0468[V] = 28 [mW] Więc jak widać moc malutka. W wyliczaniu mocy, bierzemy oczywiście spadek napięcia na ścieżkach, a nie napięcie zasilania silników. To nam na szczęście nie grozi. W załączniku arkusz openoffice z wyliczeniami, tym razem prawidłowo, w jednostkach SI. obliczenia.zip
  12. Nie wygląda, żeby numery miały znacznie. U mnie USB ma numer #10-018365, a ttl #09-017530. Myślę, że musisz zacząć od komunikacji PC<->moduł USB - moduł ttl <-loopback Czyli w module ttl łączysz tx z rx. U mnie to zadziałało od razu. Jeszcze jedno - jakiego używasz programu do obsługi portu rs? ja używam putty, ważne, żeby w ustawieniach wyłączyć kontrolę przepływu (Flow Control). [ Dodano: 18 Kwi 10 11:03 ] Pierwszy test u mnie wyglądał tak: * moduł A podłączony do komputera przez USB, putty jako terminal * moduł B podłączony do 5V, pin TX zwarty z RX Jak piny w module B były zwarte, na terminalu widoczne były kolejno wpisywane znaki. Rozłączenie TX-RX przerywało działanie.
  13. Na początek spróbuj prostego testu - zewrzyj tx z rx modułu podłączanego do max232 - wtedy po usb powinno działać jak echo. Sprawdź, czy wszystkie podłączenia są ok. Ja na szybko podłączyłem i działa bez problemu. Moduły prosto z pudełka, bez jakiejkolwiek konfiguracji. [ Dodano: 18 Kwi 10 10:34 ] Jeszcze jedna sprawa - pamiętałeś, żeby skrosować rx z tx? tzn. podłączyć tx modułu do rx rs-232? Ja często mylę i wtedy ma prawo nie działać.
  14. Jeszcze nie miałem czasu modułów mobot-a uruchomić, ale o ile wiem moduł podłącza się bezpośrednio pod uart. Bez max232. Może dlatego nie działa.
  15. Dziękuję za wyróżnienie. Bardzo miło otrzymać nagrodę, szczególnie jeśli niespodziewaną
  16. Jeden impuls byłoby bardzo ciężko wykryć. Każde zakłócenie traktowane byłoby jako sygnał. Więc to raczej kiepski pomysł. Lepiej użyć oddzielnego nadajnika i odbiornika ultradźwięków. Wtedy można uzyskać mniejsze odległości pomiaru.
  17. Jeśli znasz C++ łatwo będzie Ci przejść na C. Jest trochę drobnych różnic, ale ogólnie C++ to nadzbiór C. Więc wystarczy zrezygnować z klas, przestrzeni nazw, czy szablonów i program bez problemu skompiluje się w C. Jak dla mnie główna różnica to konieczność deklarowania zmiennych na początku bloku oraz brak biblioteki STL. Są za to kompilatory C++ na uC. Nie polecam, bo kod bywa bardzo długi, ale jak ktoś lubi C++ to można używać.
  18. Jest tak jak pisze TIMONek. Klawiatura nie przesyła stanu klawiszy, tylko zmiany, czyli kody wciskanych i zwalnianych klawiszy. Nawet jeśli ktoś naciśnie jednocześnie dwa, klawiatura odczyta je oddzielnie (skanowanie matrycy), po czym wyśle kolejno dwa kody. Więcej np. tutaj http://www.computer-engineering.org/ps2keyboard/
  19. Tylko trzeba pamiętać o tym 2mm. Typowy raster ma 2,54mm, więc łatwo się pomylić.
  20. Jak chodzi o moduły radiowe, to RFM12 (zamiast RFM12B) może być zasilane z 5V. Więcej informacji na stronie producenta: http://www.hoperf.com/rf_fsk/rfm12.htm Moduły do kupienia np. tutaj: http://www.seguro.pl/sklep/?zobacz=4745&producent= Główną zaletą modułów jest ich cena. Inny przykład użycia RFM12 z AVR opisany jest tutaj: http://zenburn.net/~goroux/rfm12b/rfm12b_and_avr-%20quick_start.pdf
  21. Skoro generuje skrypt, to znaczy, że sam php działa. Proponuję usunąć killall ze skryptu, wykonać i sprawdzić czy proces minicom będzie uruchomiony. Jeśli tak to wiadomo, że chociaż minicom startuje. Kolejny test to byłoby sprawdzenie, czy coś przez COM wysyła. Jeśli masz 2 porty w komputerze, można połączyć ze sobą (skrosowane oczywiście) i zobaczyć czy coś wysyła. Jeśli nie masz 2 portów, to trzeba poszukać jakiegoś emulatora COM. Pod windows polecam com0com, pod linuxa niestety nie wiem co można wykorzystać. Możesz jeszcze spróbować wpisać ścieżki bezwzględne do wszystkich plików, ale nie wiem czy to pomoże.
  22. To jeśli chodzi o ULN2065 trzeba pamiętać o diodach zabezpieczających. Te które są wbudowane w układ - trzeba je podłączyć (piny 1 i 8). Inaczej bardzo duże napięcia będą się indukowały przy przełączaniu. I sterując nie można wykorzystywać 2 uzwojeń jednocześnie (tylko sterowanie pełnokrokowe). Traci się w ten sposób 40% mocy, ale inaczej przez mostek popłynąłby prąd 2x 1,5A. Ogólnie polecam L298, chociaż na początek można sprawdzić ULN2065.
  23. Do sterowania proponuję wykorzystać mikrokontroler. Samo sterowanie silnikiem przez mostek H (żeby można było w obie strony kręcić silnikiem), np. popularnym na forum L293. Do tego dodać 2 krańcówki (mikroprzełączniki na końcach). Gdy peryskop dojedzie do mikroprzełącznika, procesor będzie wyłączał silnik. Ogólnie układ jak w prostym robocie, wszystko opisywane wielokrotnie na forum. Jedyna różnica, to układ czujników - zamiast po bokach robota, to przy peryskopie.
  24. Możliwości sterowania silnika krokowego jest mnóstwo. Można dać ULN2803 i po 2 kanały równolegle, jednak może nie wystarczyć do Twojego silnika, więc może inny ULN, np. ULN2065B. Dla większych prądów najlepiej dać 4 tranzystory MOSFET. Przykładowo IRFL024 - dostępne w TME, cena niewiele ponad 1 zł za szt. Inny problem to sterowanie silnikiem krokowym. Zasilanie go prądem 1,5A jest bez sensu. Lepiej dać układ, w którym prąd można regulować. Proste rozwiązanie to np. L297 + L298.
  25. Jak chodzi o czujniki, to moim zdaniem optyczne od myszki odpadają. Muszą być bardzo blisko podłoża, żeby poprawnie działały. W przypadku poduszkowca to raczej nierealne. Poza tym podłoże musi być idealnie płaskie - a po co poduszkowiec, żeby po stole latać. Może warto pomyśleć o czujnikach ultradźwiękowych? Są dobre na większe odległości.
×
×
  • Utwórz nowe...