Skocz do zawartości
Komentator

Kurs Arduino - #5 - PWM, serwomechanizmy, biblioteki

Pomocna odpowiedź

wrwid, w treści wklejonego komunikatu jest dokładna informacja na temat problemu "Servo.h: No such file or directory". Sprawdź, czy posiadasz odpowiednią bibliotekę 🙂

Udostępnij ten post


Link to post
Share on other sites

Um, Servo.h jest biblioteką wbudowaną w środowisko Arduino. Powinna tam być.

Udostępnij ten post


Link to post
Share on other sites

zainstalowane działa 😃 Wczoraj wieczorem coś mnie przy mroczyło i błędnie zrozumiałem ze strony arduino, że biblioteka jest domyślnie wgrana... 😃

Udostępnij ten post


Link to post
Share on other sites

Arduino, lekcja 5

(jeszcze nie łączyłem tak jak poniżej)

Arduino jest połączone/ zasilane z USB laptopa.

Jednocześnie - serwo jest zasilane: ładowarka sieciowa USB - zasilacz płytek stykowych (5,2V) - serwo.

BRAK WSPÓLNEJ MASY (?)

czy takie połączenie jest poprawne:

1. czy na Pin9 Arduino będzie coś widziało, wysyłało poprawnie do serwa?

2. Czy takie połączenie nie uszkodzi czegoś fizycznie?

Czy w przypadku połączenia zmostkowania mas obu zespołów (Arduino i Serwo) układ będzie działał poprawnie (ew. problem prądów wyrównawczych?)

Udostępnij ten post


Link to post
Share on other sites

Sygnał bez masy nie ma sensu, bo względem czego serwo "zmierzy" sobie napięcie na żółtym kabelku skoro nie zna potencjału masy Arduino? Masy muszą być połączone.

Do czego jest tu "Zasilacz do płytek stykowych"? Przecież 5V daje już ładowarka USB. Dodatkowy moduł tylko niepotrzebnie zmniejszy napięcie zasilania serwa.

Udostępnij ten post


Link to post
Share on other sites

"Sygnał bez masy nie ma sensu, bo względem czego serwo "zmierzy" sobie napięcie na żółtym kabelku skoro nie zna potencjału masy Arduino? Masy muszą być połączone."

1. Tak właśnie myślałem.

"Do czego jest tu "Zasilacz do płytek stykowych"? Przecież 5V daje już ładowarka USB. Dodatkowy moduł tylko niepotrzebnie zmniejszy napięcie zasilania serwa."

2. Dla wygody(?)

Z ładowarki jest wyjście USB 5V, chciałem mieć to ładnie podpięte do płytki stykowej, dodatkowo ten zasilacz (na drugim kanale) daje też 3,3V - czasem to się przydaje.

YwRobot 545043 - Zasilacz płytek stykowych

W każdym razie - przy zasilaniu przez ładowarkę USB - na wyjściu zasilacza jest 5,2V (pomiar przyzwoitym miernikiem).

Ten zasilacz ma też możliwe podawanie zasilania na wejście okrągłe (z bolcem) i dopiero wtedy chyba korzysta ze stabilizatora 5V

OK, w takim razie - jak podłączyć zasilanie do Arduino Mega 2560 oraz do serwa?

- możliwość programowania Arduino z USB od laptopa

- zasilanie serwa

- wspólna masa

- najlepiej bez dodatkowych baterii

Czy jedyne rozwiąznie to podanie zasilania np. 7..12V na gniazdo zasilania Arduino (to okrągłe, z bolcem) ?

Czy można podać zasilanie np 5V na pin "Vin" i z tego będzie rozpływ do arduino i przez pin "Power 5V" na serwo? albo inaczej - czy można jakoś bezpośrednio zasilić Arduino oraz serwo z 5V?

Udostępnij ten post


Link to post
Share on other sites

Żadne Arduino nie produkuje zasilania przeznaczonego dla napędów, serwomechanizmów itp. Płytki te wypuszczają z siebie stabilizowane 5V, ale to jest ich własne 5V z którego pracują procesory i układy interfejsów. Można powiedzieć, że z grzeczności je dostajesz i możesz w ograniczonym zakresie wykorzystać do zasilania podobnie delikatnych rzeczy: czujników, wyświetlaczy itp. Natomiast podłączanie tam silników to już przekroczenie norm współżycia i proszenie się o kłopoty.

Arduino możesz zasilać albo z Vin - i wtedy potrzebujesz wyższego napięcia żeby tamtejszy stabilizator mógł sensownie pracować, albo wprost zapodać stabilne 5V na piny Vcc. Wybierz sobie.

Serwo potrzebuje od 4.5-6V - zrób to tak jak umiesz, możliwości jest wiele.

Jeśli układ ma być przenośny, tj. nie być uwiązany do ściany kablem, najsensowniejszym rozwiązaniem jest akumulator 12V który podpinasz jednocześnie do Vin Arduino i do osobnego modułu przetwornicy 12V/5V zasilającej serwa.

---------------------------

EDIT: W przypadku gdy przewidujesz podłączanie USB do pracującego Arduino, jedynym wyjściem jest zasilanie go wyższym napięciem z Vin. Opcja zasilania płytki wprost z 5V podanych na piny Vcc grozi uszkodzeniem portu Hosta USB a w każdym razie jest to niegodne z normą USB.

Udostępnij ten post


Link to post
Share on other sites
EDIT: W przypadku gdy przewidujesz podłączanie USB do pracującego Arduino, jedynym wyjściem jest zasilanie go wyższym napięciem z Vin. Opcja zasilania płytki wprost z 5V podanych na piny Vcc grozi uszkodzeniem portu Hosta USB a w każdym razie jest to niegodne z normą USB.

To nie jest prawda. Arduino UNO ma mosfet, którym odcina zasilanie USB jeśli ma podłączone zewnętrzne zasilanie. Inne płytki Arduino mają takie same lub inne zabezpieczenia -- w najgorszym razie diodę.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Hm, nie wyssałem tego z palca, ale chętnie posłucham Twoich argumentów. Tymczasem popatrz na oficjalny schemat Mega albo UNO. Jest tam MOSFET, ale wyłączamy go tylko wtedy, gdy jest obecne Vin *. Gdy płytka zasilana jest z pinów Vcc a Vin wisi na pusto, tranzystor jest włączony i zwiera 5V z VUSB po to, by bezstratnie zasilać procesor z kompa. To dobry pomysł, ale niestety nie przewidziano sytuacji odwrotnej. USB device nie może podawać zasilania do Hosta - na to nie pozwala żadna norma. Czy to prowadzi wprost do uszkodzenia? Tego nie wiem, ale robić tego nie wolno i jeden komp to przeżyje a inny nie. Moim zdaniem to wyklucza zasilanie z 5V podczas wtykania USB i nieuczciwe byłoby nie wspomnieć o tym.

---------------------

* - a dokładniej gdy Vin > 6.6V

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Masz rację, błędnie zinterpretowałem "+5V" na schemacie jako nazwę sieci implikującą połączenie. Okazuje się, to tylko tak sobie wstawiony tam napis.

Udostępnij ten post


Link to post
Share on other sites

Dzięki Koledzy!

Czyli - jak rozumiem (?):

1. Na Arduino pin Vin oraz biegun Plus z wejście zasilania DC 2.1/5.5 (okrąłe z bolcem) są STALE zmostkowane, prawda?

2. Z nich napięcie idzie na jakiś zasilaczyk na płytce, obniżający na 5V?

3. Jeśli jest podłączone tylko USB to napięcie 5V trafia na płytkę z pominięciem zasilaczyka (zwarcie wspomnianego MOSFETa).

4. Jeśli jednocześnie jest podpięte USB i Vin (Vin > 6,6V) to Mosfet jest wyłączony (sam się wyłącza automatycznie?), płytka jest zasilana już nie z USB tylko przez Vin i zasilaczyk obniżający.

moja płytka

W załącznikach mam pinOut AdruinoMega2560 (ja mam Rev3), i (jakiś) schemat - czy ten jest w miarę dobry? - chodzi mi o zasilanie...

Dziwne - ja tam widzę dwa obszary zasialnia:

- dolno-środkowa część rysunku: USB i (tak jak mówiliście) Mosfet odcinający, prawda?

- lewy-górny róg - ??? zasilanie z Vin??

ArduinoMega2560 schematic.pdf

ArdMega2560 PinOut.pdf

Udostępnij ten post


Link to post
Share on other sites

A co do zasilania serwo to w praktyce chyba osobne zasilanie dostarcza się do arduino i osobne do serwo tak? W tym przypadku po prostu zwiększyliśmy napięcie poprzez zamianę usb na baterię 9V, ale chyba nic nie stoi na przeszkodzie, żeby arduino zasilać z usb a serwo z baterii i połączyć ich masy?

pozdrawiam,

P.S, super kurs, z super zestawami do kupienia mam nadzieję, będą pojawiać się nowe kursy.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

dejmieno, oba rozwiązania są poprawne. Jednak często przy urządzeniach mieć jedno źródło zasilania - stąd osobna bateria i stabilizator. Nad kursami cały czas działamy - przed Tobą jeszcze poziom II kursu Arduino i kurs budowy robotów 🙂 Lista aktualnych kursów: https://forbot.pl/blog/kursy

Udostępnij ten post


Link to post
Share on other sites

A orientujesz się może, czy funkcja pulseIn() korzysta pod spodem z delay? Sprawa wygląda tak, że zamontowałem sobie na servo odległościomierz HC i kiedy robię pomiar poprzez pulseIn() to servo zwalnia, działa jakby z przeskokami i myślałem, że to przez to że pulseIn korzysta pod spodem z opóźnień i wstrzymuje mój program.

Udostępnij ten post


Link to post
Share on other sites

dejmieno, spróbuj poeksperymentować z trzecim, nieobowiązkowym parametrem pulseIn, czyli timeout. Być może to rozwiąże lub zminimalizuje Twój problem. Więcej na ten temat znajdziesz w dokumentacji Arduino: https://www.arduino.cc/en/Reference/PulseIn

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