Gregory_59 Luty 13, 2017 Udostępnij Luty 13, 2017 Jakie kondensatory filtrujące są potrzebne do serwa? Cytuj Link do komentarza Share on other sites More sharing options...
marek1707 Luty 13, 2017 Udostępnij Luty 13, 2017 Do serwa żadne. Cytuj Link do komentarza Share on other sites More sharing options...
Gregory_59 Luty 13, 2017 Udostępnij Luty 13, 2017 W kursie było zdjęcie jak podłacza się serwo do stabilizatora a przy syabilizatorze są 2 kondensatory filtrujące Cytuj Link do komentarza Share on other sites More sharing options...
marek1707 Luty 13, 2017 Udostępnij Luty 13, 2017 To są kondensatory zapewniające stabilną pracę stabilizatora. Serwo ich nie wymaga, to stabilizator ich potrzebuje - to pewnie było w kursie o stabilizatorach. Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
telefonciek Luty 15, 2017 Udostępnij Luty 15, 2017 Mam tutaj kilka (mniej lub bardziej głupich) pytań: 1. Jaki może być maksymalny prąd pobierany przez Arduino(przez USB, bo natężenia na złączu zależy chyba od napięcia)? 2. Czy można je zasilać za pomocą zwykłej ładowarki do telefonu? 3. Jak mam rozumieć zdanie: "Nie zasilamy serw bezpośrednio ze źródła, którym zasilana jest reszta układu."?- Czyli podsumowując: złącze zasilające wpinamy albo w złącze Vin albo w jakieś inne zewnętrzne źródło (np. bateria)? 4. Czy Arduino może być jednocześnie podłączone do baterii i komputera przez USB oraz czy zmniejszyłoby to prędkość zużywania się baterii? Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Luty 16, 2017 Udostępnij Luty 16, 2017 telefonciek, witam na forum 🙂 Odpowiadając na Twoje pytania: 1) Ciężko jednoznacznie określić. Wszystko zależy od tego, co do niego podłączysz. Jeśli szukasz zasilacza, to najbezpieczniej wybrać coś z większym zapasem (zacząłbym szukać w okolicy 1A). Przy prostych układach 500mA też wystarczy. 2) Jeśli ma odpowiednią wydajność, to tak. 3) Elementy, które pobierają wysoki prąd (czyli np. serwomechanizmy) najlepiej byłoby izolować od zasilania mikrokontrolera. Nie powinno się więc podłączać takich elementów bezpośrednio do wyprowadzeń 5V wbudowanych w Arduino. 4) Tak, można równocześnie mieć podłączony przewód USB i osobny zasilacz. Więcej informacji na ten temat znajdziesz w serii artykułów o budowie Arduino: Arduino, co w środku piszczy – #1 – schemat Cytuj Link do komentarza Share on other sites More sharing options...
thequeash Marzec 1, 2017 Udostępnij Marzec 1, 2017 Moje kody z dość obszernym wyjaśnieniem, może komuś się przydadzą: 5.4 #include <Servo.h> //Biblioteka odpowiedzialna za serwa. Servo serwomechanizm; //Tworzymy obiekt dzieki ktoremu mozemy odwolac sie do serwa. int pozycjaStart = 0; //Pozycja poczatkowa serwa = 0. String odebranedane = ""; //Tekst odebrany z komputera. int odebranedane_int; //Kąt podany w liczbach w zakresie 0-180 (int). void setup() { Serial.begin(9600); serwomechanizm.attach(9); //Przypisanie pinu do serwa. serwomechanizm.write(pozycjaStart); //Ustawienie serwa w pozycji startowej. //Tekst na poczatku programu. Serial.println("Welcome!"); Serial.println("Enter the angle between 0-180 degrees."); } void loop() { if (Serial.available() >0) { odebranedane = Serial.readStringUntil('\n'); //Jesli dane zostaly wyslane. odebranedane_int=odebranedane.toInt(); //Konwenter string=int. if (odebranedane_int <=180 &&& odebranedane >=0) { //Jeśli odebrana liczba jest w przedziale 0-180. Serial.println("Current angle: " +odebranedane +" degrees."); //Wyswietl komunikat + obecny kąt. delay(1000); serwomechanizm.write(odebranedane_int); //Obroc serwo do pozycji, ktora zostala wyslana z komputera. delay(100); } else { Serial.println ("Bad number. Please enter the angle between 0-180."); //Komunikat o wprowadzonych danych w zlym przediale. Serial.println ("Current position is 0."); serwomechanizm.write(pozycjaStart); //Ustawienie serwa w pozycji startowej. delay(100); } } } 5.5 #include <Servo.h> //Biblioteka odpowiedzialna za serwa. Servo serwomechanizm; //Tworzymy obiekt, dzięki któremu możemy odwołać się do serwa. int pozycja = 0; //Aktualna pozycja serwa odczytana z A5. float ruch = 0; // Przelicznik z 8-bit na 0-180. void setup() { serwomechanizm.attach(9); //Serwomechanizm podłączony do pinu 9. } void loop() { pozycja = analogRead(A5); //Odczyt z A5. ruch = pozycja *(180.0/1023.0); //Przeliczenie 1023 -> 180. if (ruch < 180) { //Jeśli pozycja mieści się w zakresie. serwomechanizm.write(ruch); //Wykonaj ruch. } else { //Jeśli nie, to pozycja =0. ruch = 0; } } 1 Cytuj Link do komentarza Share on other sites More sharing options...
Małe Marzec 9, 2017 Udostępnij Marzec 9, 2017 Witam,Co prawda nie jestem pewna czy piszę w dobrym dziale, ale zdarzenie miało miejsce podczas robienia akurat tego ćwiczenia. Jak człowiek jest roztrzepany to o błędy (błahsze i poważniejsze) nietrudno. 😃 Do rzeczy. Podczas tworzenia układu do komunikacji serwa z użytkownikiem przez UART, na początku zapomniałam o dodaniu kondensatorów. Zorientowałam się gdy moje serwo cały czas buczało przy kątach 1-4. Podczas zmieniania układu niechcący źle podpięłam stabilizator - pomyliłam wyjście z pinem od sygnału sterującego. Efekt - bardzo mocne nagrzanie stabilizatora. Przez przypadek dotknęłam ręką, więc szybko poczułam, że coś jest nie tak. Czy w ten sposób mój stabilizator mógł zostać uszkodzony? (Tzn. wiem że mógł, tylko nie wiem czy na pewno doszło do uszkodzenia). Jeszcze nie wybuchnął, ale co się tam w środku zadziało to nie mam pojęcia. Czy mogę dalej z niego korzystać, czy na wszelki wypadek powinnam go wymienić? Cytuj Link do komentarza Share on other sites More sharing options...
marek1707 Marzec 10, 2017 Udostępnij Marzec 10, 2017 Również witamy na Forum kolejną pasjonatkę dłubania w drucikach 🙂 Hm, chyba zadałaś pytanie o ty czy weźmiemy na siebie odpowiedzialność za to, co się stanie gdy podłączysz taki stabilizator "po przejściach" do czegoś cennego. Otóż ja nie wezmę a dobra praktyka inżynierska mówi, że raczej nie powinnaś czegoś takiego używać. Element 7805 kosztuje w okolicach 2zł i nie jest to wygórowana cena za spokojny sen. Jak wiadomo jednak życie jest bardziej skomplikowane a odrobina ryzyka jest w nie wpisana jak.. śliwka w kompot, więc jeśli oczekiwanie na nową sztukę bardzo będzie Ci się dłużyć, albo jego zakup wiąże się np. z wycieczką do innego miasta, proponuję eksperyment. Podłącz go tak jak ustawa nakazuje np. do baterii 9V, zmierz jej napięcie - czy rzeczywiście ma te swoje 9, a min. 8V a potem zmierz napięcie wyjściowe stabilizatora. Jeśli dostaniesz 5V ±0.2V a dodatkowo test organoleptyczny - temperatura i zapach, nie wykażą żadnych niepokojących objawów, możesz go warunkowo (muszę się asekurować, rozumiesz) używać. Podłącz jakąś diodkę świecącą z opornikiem, serwo lub silniczek itp ciągle mierząc napięcie. Takie odbiorniki są dużo bardziej odporne niż np. procesor, który przy 5V pracuje żwawo a przy 6V często już nie żyje więc zapewnienie mu dobrego i stabilnego zasilania to sprawa kluczowa. 7805 montowany jest w dużej obudowie (tzw. TO220) specjalnie przygotowanej do odprowadzania dużych ilości ciepła. W końcu na tym opiera się zasada działania stabilizatora liniowego. Ta cecha (wielkość) w porównaniu z zabawkową, słabiutką baterią 9V sprawia, że istnieje duża szansa przeżycia stabilizatora. W końcu jego zabezpieczenie termiczne (działające jednak tylko przy prawidłowym podłączeniu) aktywuje się dopiero gdzieś przy 130-150°C - twardy jest. Nawet gdy parzy a pośliniony syczy, to wciąż są warunki w jakich może normalnie funkcjonować. Na 95% przeżył także i Twój eksperyment. 1 Cytuj Link do komentarza Share on other sites More sharing options...
Małe Marzec 10, 2017 Udostępnij Marzec 10, 2017 Dzięki za odpowiedź. Jednak najlepiej to się uczy na własnych błędach 😃 Z racji chwilowego braku dostępu do miernika i nie posiadania możliwości kupienia nowego stabilizatora, zaryzykowałam (oczywiście na własną odpowiedzialność) podłączyć i uruchomić serwo jeszcze raz. Tym razem serwo działa a stabilizator się nie grzeję. Jak tylko będę miała możliwość to sprawdzę napięcie, do tego czasu zwiększę swoją czujność i dalej będę bazować na refleksie. Co prawda serwo dalej wibruje i brzęczy przy pozycji 1-4, ale w programach poustawiałam od wyższego progu by mnie to zbytnio nie denerwowało 😃 Cytuj Link do komentarza Share on other sites More sharing options...
marek1707 Marzec 10, 2017 Udostępnij Marzec 10, 2017 Fajnie, że się udało. Każda taka historia niby czegoś uczy, choć licho nie śpi i nawet najlepszym to się zdarza. No, może coraz rzadziej 🙂 Jeśli zabawa Ci się podoba, jak najszybciej wyposażaj się w podstawowe narzędzia. Elektronik bez miernika/multimetru to jak ślepy w ZOO - można coś usłyszeć a nawet poczuć, ale równie dobrze może to być psia kupa na chodniku (czyt: nie zawsze będziesz mieć tyle szczęścia). I jeszcze zasilanie: bateria 9V jest droga i słabiutka. Nadaje się jedynie do zasilania gadżetów pobierających bardzo mało prądu. Wszelkie serwa, silniki a nawet co mocniejsze LEDy załatwiają ją na śniadanie. Zastanów się nad tym co chcesz robić/budować i zaplanuj korzystanie z jakiegoś bardziej sensownego źródła zasilania. Na pewno tu na Forbocie coś o zasilaniu znajdziesz a w razie wątpliwości pytaj. Ja wiem, że to wszystko kosztuje - to nie jest tanie hobby (a które jest?), ale właśnie dlatego baterie 9V są na dłuższą metę jednym z najgorszych pomysłów. Cytuj Link do komentarza Share on other sites More sharing options...
Robur Kwiecień 22, 2017 Udostępnij Kwiecień 22, 2017 Wykonując ćwiczenia z serwem mam następujący objaw. Od czasu do czasu mimo braku transmisji orczyk zaczyna „skakać” między dwoma dość odległymi pozycjami. Przykładowy scenariusz testów z zadania 5.4 1. Na początku w funkcji setup testuję zakres ruchu serwa od 0 do 180 – działa ok. 2. Podając ręcznie pozycję o wartości ok. 10 większej od aktualnej wszystko działa ok. Różnica wartości nie może być duża. 3. Podając nowa pozycję o skoku np. +100, -80, zdarza się że orczyk zaczyna „skakać”. 4. Zmienając pozycję w kierunku 0, czasem zdarza się, że zanim orczyk przesunie się do zadanej wartości, przechodzi do pozycji 0 i dopiero przesuwa się do zadanej. Np. jest w pozycji 30, podaję 20. Orczyk wraca do 0 i dopiero później idzie do 20. 5. W momencie „skoków” wysłanie kolejnej wartości pomaga ustabilizować całość i orczyk idzie do zadanej pozycji. Kondensatory filtrujące są dodane. Zmieniałem baterię na nową. Co może być przyczyną takiego zachowania? Kod programu /*odczytuje oczekiwana pozycje serwo przez USB i ustawia serwo w podanej pozycji*/ #include <Servo.h> #define SerwoPort 9 //serwo podlaczone do pinu 9 Servo SerwoMechanizm; //utworzenie serwomechanizmu String SerwoEntry=""; //pozycja serwo odczytana przez serial int SerwoPozycja = 0; //pozycja sewomechanizmu skonwertowana na int void setup() { Serial.begin(9600); Serial.println("Start pracy"); SerwoMechanizm.attach(SerwoPort); //dolaczenie serwomechanizmu SerwoMechanizm.write(0); //test zakresu pracy serwomechanizmu while (SerwoPozycja < 180) { SerwoMechanizm.write(SerwoPozycja); SerwoPozycja += 10; delay(300); } SerwoMechanizm.write(90); //koniec testu delay(2000); } void loop() { Serial.println("Podaj pozycje: "); while (Serial.available ()==0){ delay(50); } SerwoEntry = Serial.readStringUntil('\n'); //odczyt pozycji SerwoPozycja=SerwoEntry.toInt(); //konwersja pozycji na int Serial.print("Poddales: "); Serial.println(SerwoPozycja); if (SerwoPozycja>180||SerwoPozycja<0) { //sprawdzenie czy pozycja podana w ramach zakresu Serial.println("Zla wartosc! "); } else { SerwoMechanizm.write(SerwoPozycja); //przesuniecie serwa do zadanej pozycji } delay(2000); } Poniżej wstawiam jeszcze kod programu będącego połączeniem zadania 4.6 z serwo. Czyli serwo obracjące się w kierunku latarki. Objawy są takie same jak w przypadku zadania powyżej. /* Dwa fotorezystory, serwo podaza za zrodlem swiatla*/ #include <Servo.h> #define FRLeft A4 #define FRRight A5 #define SerwoPort 9 Servo SerwoMechanizm; //utworzenie serwomechanizmu int Left = 0; //wartosc z lewego fr int Right = 0; //wartosc z prawego fr int FRDiff = 0; //Roznica pomiedzy fr int SerwoPozycja = 0; //pozycja sewomechanizmu int SerwoPozycjaOld = 0; //poprzednia pozycja serwo void setup() { Serial.begin(9600); Serial.println("Start pracy"); SerwoMechanizm.attach(SerwoPort); //dolaczenie serwomechanizmu SerwoMechanizm.write(0); //test zakresu pracy serwomechanizmu while (SerwoPozycja < 180) { SerwoMechanizm.write(SerwoPozycja); SerwoPozycja += 10; delay(300); } SerwoMechanizm.write(90); delay(2000); } void loop() { Left = analogRead(FRLeft); //odczytanie lewego fotorezystora Right = analogRead(FRRight); //odczytanie prawego fotorezystora FRDiff = Left - Right; Serial.print("Lewy: "); //wartosci testowe wysylane na terminal Serial.print(Left); Serial.print(" Prawy: "); Serial.print(Right); Serial.print(" Roznica: "); Serial.print(FRDiff); if (FRDiff > 200) { FRDiff = 200; } if (FRDiff < -200) { FRDiff = -200; } SerwoPozycja = map(FRDiff, -200, 200, 20, 160); //Przemapowanie roznicy miedzy dwoma fr na pozycje serwo. Wartodc -200 i 200 zostaly wyznaczone empirycznie podczas oswietlania latarka. Serial.print(" Pozycja serwo: "); Serial.println(SerwoPozycja); //Koniec wysylania wartosci testowyhc do terminala. if (SerwoPozycja != SerwoPozycjaOld) { //Weryfikacja, czy potrzebna zmiana pozycji serwa SerwoMechanizm.write(SerwoPozycja); //jesli tak to przsun serwo SerwoPozycjaOld = SerwoPozycja; } delay(2000); } Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Kwiecień 25, 2017 Udostępnij Kwiecień 25, 2017 Robur, przyznam, że do tej pory nie spotkałem się z takim problemem. Możesz pokazać na filmie jak to wygląda? Sprawdź dla pewności, czy przewody nie wiszą luźno (może coś łapie zakłócenia lub czasami nie styka poprawnie). Miałeś możliwość sprawdzenia układu z innym serwem? Cytuj Link do komentarza Share on other sites More sharing options...
Robur Maj 3, 2017 Udostępnij Maj 3, 2017 Robur, przyznam, że do tej pory nie spotkałem się z takim problemem. Możesz pokazać na filmie jak to wygląda? Sprawdź dla pewności, czy przewody nie wiszą luźno (może coś łapie zakłócenia lub czasami nie styka poprawnie). Miałeś możliwość sprawdzenia układu z innym serwem? Treker Powodem najprawdopodobniej był niewystarczający prąd z baterii. Po dołączeniu zewnętrznego zasilania problem ustąpił. Teraz płytka stykowa jest zajęta wyświetlaczem z lekcji 7. 🤣 Jak ją skończę, spróbuję odtworzyć problem i nagrać film. Cytuj Link do komentarza Share on other sites More sharing options...
wrwid Maj 9, 2017 Udostępnij Maj 9, 2017 Ja natomiast mam problem, przepisuję program i wyskakuje mi błąd: Arduino:1.8.2 (Linux), Płytka:"Arduino/Genuino Uno" Arduino/kurs_4/kurs_4.ino:2:19: fatal error: Servo.h: No such file or directory #include ^ compilation terminated. exit status 1 Błąd kompilacji dla płytki Arduino/Genuino Uno. Pracuję na linuksie, awersja IDE to 1:1.8.2-1 Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!