Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'serwomechanizm'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino i ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - roboty
    • Projekty - DIY
    • Projekty - DIY (początkujący)
    • Projekty - w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie
    • Kosz

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Znaleziono 7 wyników

  1. Witam!!! Wczoraj otrzymałem zamówieniem z serwem 360 towerPro sg90 360 stopni. Podłączyłem je do arduino, Wgrałem program z biblioteką servo.h, a serwo ani drgnie. Zasilanie serwomechanizmu mam z pakietu 4,8v do odbiorników rc, płytka arduino nano. Kod jakiego użyłem: #include <Servo.h> Servo serwomechanizm; void setup() { // put your setup code here, to run once: attach.serwomechanizm(9) } void loop() { // put your main code here, to run repeatedly: write.serwomechanizm(180) } Czy zna może ktoś przyczynę problemu???
  2. Cześć wszystkim. Udało mi się skompletować wszystkie potrzebne rzeczy do stworzenia pewnego mechanizmu. W skrócie mówiąc jest to mechanizm, który ma za zadanie po naciśnięciu przycisku otwierać klapkę. Pozycja otwarcia/zamknięcia klapki ustawiana jest za pomocą krańcówek. Niestety pojawił mi się problem z serwem (PowerHD LF-20MG-360 standard - praca ciągła 360 stopni). W momencie kiedy ma ono otwierać/zamykać klapkę potrafi nierówno pracować. Swój układ testowy zasilam z zasilacza ustawionego na 12V, ponieważ z takiego napięcia mam zasilane krańcówki. Reszta układu zasilana jest z przetwornicy 12V/5V (Pololu D24V22F5 - przetwornica step-down - 5V 2,5A). Spróbowałem sprawdzić, czy może pojedyncze elementy w moim układzie wpływają na pracę serwa. W tym celu napisałem program, który miał załączać serwo, gdy arduino otrzymywało sygnał albo z jakiegoś przycisku, albo z jakiejś krańcówki. Z każdego sygnału serwo chodziło równo. Niestety na docelowym programie serwo cały czas chodzi nierówno, a problem potęguje się jeżeli nastawię niską prędkość obrotową (np. 94 stopnie -serwo stoi przy 91*). Próbowałem naprawić problem poprzez wstawienie na wyjściu z przetwornicy kondensatora 470uF, ale jego obecność nic nie daje. Ostatecznie zauważyłem, że zmieniając wartość "delay" w kodzie programu udaje się trochę poprawić pracę serwo. Przy delay na poziomie 225ms serwo chodzi lepiej niż na 25ms, ale nadal nie jest to praca płynna. Ustawiając duże wartości delay, tracę możliwośc precyzyjnego sterowania klapką, bo zanim sygnał z krańcówki wyłączy serwo, to silnik nadal będzie się kręcił właśnie o tą wartość "delay". Poniżej przedstawiam swój kod, schemat układu i filmiki z pracy serwa (jeden na delay 25ms, drugi na 225ms). #include<Servo.h> Servo servo; void setup() { pinMode(10, INPUT); //przelacznik M pinMode(9, INPUT); //przelacznik D pinMode(8, INPUT); //krancowka na otwarciu pinMode(7, INPUT); //krancowka na zamknieciu pinMode(3, OUTPUT); //servo pin } void loop() { //ruch przesłony if(((digitalRead(10)==HIGH || digitalRead(9)==HIGH)&&(digitalRead(8)==LOW))) { servo.attach(3); servo.write(80); delay(25);} //servo otwiera przesłone else { digitalWrite(3,LOW);} //servo nie działa if((digitalRead(10)==LOW && digitalRead(9)==LOW && digitalRead(7)==LOW)) { servo.attach(3); servo.write(100); delay(25);} //servo zamyka przesłone else { digitalWrite(3,LOW);} //servo nie działa } Jeżeli filmiki są za mało wyraźne to postaram się je wrzucić w lepszej jakości. praca uklad.rar
  3. Cześć wszystkim Czy jest ktoś w stanie mi powiedzieć jak podłączyć zasilanie do części logicznej Modułu PCA9685 Shield Arduino. Wydaje mi się że samo nałożenie shielda na arduino nie wystarczy. Na dolnej części płytki pisze "VCC select" i mam do wyboru 3V i 5V. Jest ktoś w stanie mi powiedzieć jak mogę wybrać czy chce zasilać poprzez 3V czy 5V?
  4. Cześć wszystkim! Zostałem postawiony przed koniecznością stworzenia pewnego mechanizmu. Jedna z jego części ma działać w następujący sposób: Przy załączonym przycisku klapka ma otwierać się w stronę krańcówki K1. W momencie osiągnięcia K1 krańcówka wysyła sygnał do arduino i napęd ma się wyłączyć. Przy wyłączeniu przycisku klapka powinna wrócić w położenie K2. Klapka ma pokonać dystans 80mm w czasie ~2sek. Pierwotna koncepcja zakładała wykorzystanie zwykłego silniczka ze śrubą pociągową, lecz niestety gabaryty nie pozwalają na zastosowanie takiego rozwiązania. Zdecydowałem się więc na użycie serwomechanizmu (jest mały, zapewnia duży moment, łatwo sterować prędkością otwierania klapki). Ogólnie po napisaniu programu wszystko działało zgodnie z założoną logiką, lecz problem pojawił się po ponownym uruchomieniu arduino. Po osiągnięciu pozycji K1 i przy załączonym przycisku odłączyłem zasilanie. Po ponownym uruchomieniu, serwomechanizm ustawił się szybko na pozycję 90 stopni, choć przycisk cały czas był wciśnięty serwo nie dążył do pozycji K1. Dopiero po wyciśnięciu przycisku serwo wykonało ruch (niestety szybki, a nie powolny jak zaprogramowałem) w pozycję K2. Do stworzenia prototypu użyłem elementów z zestawu startowego arduino. Niestety, ale w swoim projekcie nie mogę sobie pozwolić na to by po ponownym podłączeniu zasilania serwo wykonywało jakieś szybkie ruchy na pozycje 0. Czy jest jakiś sposób, który może rozwiązać mój problem? Dodam, że moja wiedza z programowania jest podstawowa, więc proszę o prosty język i wyrozumiałość. W kodzie mam sterowanie na dwa przełączniki, ale nie ma to większego znaczenia. #include<Servo.h> int pos =0; Servo servo; void setup() { pinMode(10, INPUT); //przelacznik 1 pinMode(9, INPUT); //przelacznik 2 pinMode(8, INPUT); //krancowka na otwarciu pinMode(7, INPUT); //krancowka na zamknieciu servo.attach(3); } void loop() { //ruch przesłony if(((digitalRead(10)==HIGH || digitalRead(9)==HIGH)&&(digitalRead(8)==LOW)) && pos< 180) {pos++; servo.write(pos); delay(15);} //servo otwiera przesłone else {digitalWrite(2,LOW);} //servo nie działa if((digitalRead(10)==LOW && digitalRead(9)==LOW && digitalRead(7)==LOW) && pos>0) {pos--; servo.write(pos); delay(15);} //servo zamyka przesłone else {digitalWrite(2,LOW);} //servo nie działa }
  5. Witam, razem z kolegami ze studiów w ramach projektu budujemy auto z ramieniem robota sterowane przez bluetooth. Całość będzie oparta na arduino UNO Rev3 (zdjęcie modelu w załączniku). I z związku z tym chcemy zakupić sterownik do silników do którego będziemy mogli podpiąć 4 silniki DC (po 2 silniki połączymy szeregowo po lewej jak i prawej stronie aby było możliwie skręcanie, przez co potrzebujemy 2 wejść) oraz 4 serwomechanizmy. I własnie chciałbym dostać od was radę jakiego dokładnie sterownika powinniśmy się zaopatrzyć. Oczywiście już się oglądaliśmy za konkretnymi przykładami jednakże chcieliśmy przed dokonaniem zakupu doradzić się bardziej doświadczonych osób. Z góry dziękuję za każdą pomoc z waszej strony.
  6. #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 0-180 int zmiana = 6; //Co ile ma się zmieniać pozycja serwa? void setup() { serwomechanizm.attach(9); //Serwomechanizm podłączony do pinu 9 } void loop() { if (pozycja < 180) { //Jeśli pozycja mieści się w zakresie serwomechanizm.write(pozycja); //Wykonaj ruch } else { //Jeśli nie, to powrót na początek pozycja = 0; } pozycja = pozycja + zmiana; //Zwiększenie aktualnej pozycji serwa delay(200); //Opóźnienie dla lepszego efektu } Witam, jest to mój pierwszy post na forum oraz pierwszy tydzień zabawy z Arduino, dlatego z góry dziękuję za pomoc i komentarze, nawet jeśli problem jest banalny. Buduję model, w którym jednym z elementów jest rozdzielacz hydrauliczny z 3 serwami. Zadaniem serw jest pełne otwarcie zaworu oraz odczekanie zadanego czasu. Po jego upływie zawór zamyka się i znowu czekamy, aż upłynie zadany czas. Powyższy kod to kod z kursu do Aruduino (lekcja z zastosowaniem PWM). Kod działa i serwo pracuję non stop, otwiera i zamyka zawór, bez przerwy. Kombinowałem z funkcją delay jednak nic to nie dało, albo zrobiłem to źle. Czytałem, że musi zostać zastosowana tutaj jedna z funkcji arduino - millis(), ponieważ w trakcie pracy rozdzielacza inne elementy będą działać równolegle. Z tym również próbowałem, ale nie wyszło Przejdźmy do sprawy: jak zmodyfikować kod, aby - 1) Istniała możliwość pracy innych elementów w czasie pracy rozdzielacza 2) Serwa robiły pauzę na określony czas po otwarciu i zamknięciu zaworu
  7. Hej, zbudowałem sobie takie samodzielne Arduino w oparciu o ATmega328p, jako mój programator służy arduino, z jego pomocą wgrałem bootloader na wyżej wymienioną atmege. I pojawił się problem gdy wgrywam za pomocą programatora(arduino as isp) program(miganie diodą) i podpinam zewnętrzne zasilanie, odpinam programator wszystko działa okej, ale gdy wgrałem sobie drugi program(sterowanie serwomechanizmem z pomocą modułu bluetooth HC-05) to jeśli jestem na zasilaniu z programatora(arduino) to program działa, natomiast jeśli odepnę i podłącze zewnętrzne zasilanie 5V to wtedy nie działa, (chyba) układ jest zasilony bo zapala się dioda z funkcji setup(), ale to co dzieje się w loop() tak jakby już nie działało bo nie ma mrugnięcia diodą a więc tym samym i sam serwomechanizm nie działa. Będę wdzięczny za wszystkie pomysły które mogą pomóc rozwiązać problem. Poniżej fragment kodu gdyby był potrzebny. Dodałem również schemat rozważałem rozdzielenie zasilania atmegi 5V i serwomechanizmy odzielnie na 6V(docelowo 4 serwomechanizmy), ale jeszcze nie wiem jak to się do końca łączy czy masy zasilania razem czy osobno czy w jakiś inny sposób(fajnie jakby ktoś się również tą wiedzą podzielił) ale na ten moment jest na jednym zasilaniu 5V całość atmega jak i 1 serwomechanizm. Na rx/tx dałem konwerter poziomów logicznych 5V/3.3V i jest też stabilizator żeby zrobić 3.3V. JP2 na schemacie to goldpiny na podpięcie serwa. #include <Servo.h> #include <SoftwareSerial.h> Servo s1; int bluetoothTx = 11; int bluetoothRx = 10; SoftwareSerial bluetooth(bluetoothTx, bluetoothRx); unsigned int servopos = 0; unsigned int servopos1 = 0; unsigned int servopos2 = 0; unsigned int realservo = 0; void setup() { s1.attach(9); bluetooth.begin(9600); pinMode(8, OUTPUT); digitalWrite(8, HIGH); } void loop() { if(bluetooth.available() >= 2) { digitalWrite(8, LOW); delay(700); digitalWrite(8, HIGH); servopos1 = bluetooth.read(); servopos2 = bluetooth.read(); realservo = servopos1 + (servopos2*256); Serial.print("Realservo - odczyt: "); Serial.println(realservo); if(realservo >=0 && realservo <=180) { digitalWrite(8, LOW); delay(300); digitalWrite(8, HIGH); digitalWrite(8, LOW); delay(300); digitalWrite(8, HIGH); s1.write(realservo); Serial.print("Pozycja serwo s1 "); Serial.println(realservo); delay(200); } }
×
×
  • Utwórz nowe...