Skocz do zawartości

Motororo

Użytkownicy
  • Zawartość

    16
  • Rejestracja

  • Ostatnio

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

Motororo's Achievements

2/10

2/10 (2/10)

0

Reputacja

  1. Nie mam kompletnie pomysłu jak to zrobić, długo szukałem rozwiązania i nic z tego. Wysyłanie i odbieranie przez port szeregowy to ciężka sprawa jak dla mnie Mógłby ktoś bardziej nakierować na rozwiązanie? Bardzo bym prosił.
  2. Rozumiem pomysł, spróbuję coś z tym napisać niedługo jak znajdę chwilę
  3. Dzięki jeszcze raz, teraz głowię się jak odczytać na raz z pięciu czujników i wysłać to na odpowiednie serwomechanizmy. Na razie jak próbuję, to funkcję Serial.read() odczytują wszystkie serwomechanizmy i poszczególne serwo otrzymuje sygnał z wielu czujników a nie jednego.. hmm jak to tu wykombinować
  4. Znalazłem przyczynę, dzięki @farmaceuta, wariacja występuje tylko wtedy, gdy w kodzie mam funkcję "Serial.println(xxx);", gdy ją usunąłem, nagle serwomechanizm zaczął działać. Też musiałem zmienić wartość mapowaną z 400 na 1023, wtedy nie skacze tak serwomechanizm, mimo że bez bluetootha gdy mapowałem zakres 0-400 było wszystko elegancko. Kod dla jednego serwa działa i wygląda następująco (lekko zmodyfikowany): MASTER: int flex=0; void setup() { Serial.begin(9600); } void loop() { flex = analogRead(A0); // reads the value of the potentiometer (value between 0 and 1023) int flexmap = map(flex, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180) Serial.write(flexmap); delay(10); } SLAVE: #include <Servo.h> Servo kciuk; // create servo object to control a servo int data=0; void setup() { kciuk.attach(5); // attaches the servo on pins to the servo object Serial.begin(9600); } void loop() { if(Serial.available() > 0){ // Checks whether data is comming from the serial port data = Serial.read(); kciuk.write(data); delay(10); } }
  5. @farmaceuta Możliwe że coś wcześniej źle wgrałem i tym razem po tej zmianie wszystko ustało, a to dlatego że serwo odczytuje state jako 20 i znajduje się cały czas w pozycji 20 stopni.
  6. Możliwe że coś wcześniej źle wgrałem i tym razem po tej zmianie wszystko ustało, a to dlatego że serwo odczytuje state jako 20 i znajduje się cały czas w pozycji 20 stopni.
  7. Czyli, gdy podłączony jest bluetooth to Serial.println(xxx); nie działa? Czy o co chodzi? Nie mogę wtedy sprawdzić wartości z czujnika na przykład? Zmieniłem teraz wszędzie inty na uint8_t i nic nie pomaga
  8. Sprawdziłem jeszcze międzyczasie, czy gdy połączę serwomechanizm do arduino nano (z połączonym czujnikiem zginania) będzie chodziło prawidłowo i tak, chodzi bez zarzutów. Tylko nie jest to połączenie bezprzewodowe. Bezprzewodowo zaczyna coś wariować.
  9. @farmaceuta Zmieniłem na W monitorze nadal to samo, literki oraz inne znaki przed liczbami, ale serwomechanizm waha się tym razem delikatniej, lecz brak reakcji na czujnik zginania.
  10. Witam, mam mały problem z sterowaniem serwomechanizmem za pomocą modułów bluetooth HC-05. Wartością wysyłaną jest sygnał z czujnika zginania, jest on zmapowany. Łącząc to na jednym arduino wszystko śmiga jak powinno, czyli odpowiednio zginając czujnik - rusza się serwomechanizm o dany kąt. Problem pojawia się gdy próbuję wysłać ten sygnał za pomocą bluetooth (być może kod jest zły, zaczerpnięty z internetu, ale komuś podobno działało, wstawię niżej). Moje moduły bluetooth zaprogramowałem wydaje mi się prawidłowo, jest między nimi połączenie (lecz musiałem je programować na arduino uno, bo na nano po wpisywaniu komend nic się nie działo). Domyślnie były one na 9600 baud rate. Układ z arduino nano jest moim masterem. Zmapowany sygnał z czujnika zginania wziąłem pod monitor i widać takie wartości: M332 L330 J331 K330 J331 K330 J330 Moim zdaniem powinny być same liczby, a nie jakieś cyferki dodatkowo. (może tu jest problem?) Układ z arduino uno jest slavem i biorąc pod monitor watości dostarczone tutaj otrzymuje: 13 10 83 51 51 51 10 51 Więc jakby liczby są prawidłowe, ale strasznie one skaczą i zginanie czujnika nie skutkuje zmianą tych wartości. Oto kod dla MASTERA: int val1; int state=0; void setup() { Serial.begin(9600); } void loop() { if(Serial.available() > 0){ // Checks whether data is comming from the serial port state = Serial.read(); // Reads the data from the serial por } val1 = analogRead(A0); // reads the value of the potentiometer (value between 0 and 1023) int val1map = map(val1, 0, 400, 0, 180); // scale it to use it with the servo (value between 0 and 180) Serial.println(val1map); Serial.write(val1map); delay(10); } Oto kod dla SLAVE'a: #include <Servo.h> Servo kciuk; // create servo object to control a servo int state=20; void setup() { kciuk.attach(5); // attaches the servo on pins to the servo object Serial.begin(9600); } void loop() { if(Serial.available() > 0){ // Checks whether data is comming from the serial port state = Serial.read(); } kciuk.write(state); Serial.println(state); delay(10); } Może arduino nano jakoś inaczej trzeba łączyć z bluetoothem? Ja oba bluetoothy połączyłem tak: RX z bluetooth'a do TX na arduino, TX z blue do RX na arduino, GND wiadomo do GND na arduino, Vcc do 5V na arduino. Potrzebuje pilnie pomocy i z góry dziękuję za każdą wiadomość!
  11. Motororo

    Problem z serwomechanizmem

    Podłączam identycznie jak facet z tego poradnika: https://create.arduino.cc/projecthub/diyguyChris/high-torque-servo-motor-control-35b1cc?fbclid=IwAR2Iun5dNm8H0t68fD8aRYrX1eo1kIUMQnT_mKTkgpcHOrZbRQRweSHNFiQ moje serwo działa przez 3 sekundy, następnie przestaje reagować na jakikolwiek sygnał. Zasilam to wszystko kostką od ładowarki telefonicznej 5,3V 2A. Stwierdziłem że spróbuję zmienić serwomechanizm. Tutaj już trochę inaczej, serwomechanizm reagował na wszystko, lecz gdy zacząłem szybciej manewrować potencjometrem - zaczynał się kręcić, tak wiem może akurat 2,5A potrzebował. Mam 5 serwomechanizmów SG90, znacznie mniejsze, co wiążę się z mniejszą siłą jaką mogą uciągnąć. Podłączyłem wszystkie 5, analogicznie do schematu z linku wyżej. Zasilając tą samą kostką od telefonu i kręcąc jednym potencjometrem, wszystkie płynnie i równo chodzą. Także może problem tkwi w jakimś uszkodzeniu większych serwomechanizmów? Szkoda, bo siła by się przydała i nie wiem czy te małe serwa udźwignął moją konstrukcję, chyba że jakoś ją odciążę lub zrobię nowy projekt 3D.
  12. Motororo

    Problem z serwomechanizmem

    Nie wiem czy tak powinno być, ale podczas zasilenia arduino, świeci się ciągle dioda L, która chyba jest wbudowana jakby w pin 13. Tylko że ja tego pinu nawet nie mam w kodzie ani nic w niego podpiętego. Często też świeci Tx, no i wiadomo ON. Kabelki mnie wkurzają bo po wpięciu one są mimo wszystko luźne, niby stykają ale mnie to trochę wkurza. Gdzie te kondensatory umieścić przy serwomechaniźmie? Największe jakie mam to elektrolityczne 1uF
  13. Motororo

    Problem z serwomechanizmem

    W monitorze pokazuje wartości od 0 do 180, czyli prawidłowo. Gdy serwomechanizm zaczyna się obracać, szybko staram się odpiąć z niego masę i gdy podłączę go na nowo, działa już poprawnie, ale potem podczas ponownej pracy potrafi znowu zwariować, jak nie jedno serwo to któreś z innych, lub więcej niż jedno.
  14. Motororo

    Problem z serwomechanizmem

    Te 2 minuty to było tak orientacyjnie, teraz na przykład kilka szybkich ruchów 0-180 stopni i już zaczęło się kręcić, kręcąc spokojnie możliwe że by nie było wariacji, ale to mnie nie zadowala. Podczas pracy normalnej spokojnej pracują serwa dobrze, a gdy chcę przetestotwać je na większych obrotach to zaczyna kręcić się w kółko. Specifications: • Weight: 55 g • Dimension: 40.7 x 19.7 x 42.9 mm approx. • Stall torque: 9.4 kgf·cm (4.8 V ), 11 kgf·cm (6 V) • Operating speed: 0.17 s/60º (4.8 V), 0.14 s/60º (6 V) • Operating voltage: 4.8 V a 7.2 V • Running Current 500 mA – • Stall Current 2.5 A (6V) • Dead band width: 5 µs • Stable and shock proof double ball bearing design • Temperature range: 0 ºC – 4.8 V a 7.2 V – 900 mA (6V) double ball bearing design 55 ºC To są dokładne parametry moich serwomechanizmów. A co jeśli bym kupił jakiś zasilacz, załóżmy 6V, tylko musiałby mieć też duży amperaż na takie zasilenie 5 serwomechanizmów na raz. Taki żeby nie musieć stabilizować, obniżać napięcia. Znalazłem taki: https://allegro.pl/oferta/zasilacz-uniwersalny-6-15v-5a-profitec-mw7h50gs-10491469325 Ale czy 5A też nie będzie za mało? Coś w tym może być? Ale skoro nawet na AKU wariowało i to nie zawsze te same serwomechanizmy to nie wiem co tu może być problemem. Wcześniej bywało tak, ale na zasilaczu 5V 2,2A, że serwomechanizmy chodziły, a nagle zostawały w pozycji 180 stopni i na nic nie reagowały, nie wiem co może być winą. Fakt że miałem zawsze 2 z 5 połączone nie do pinu PWM, ale testujac na potencjometrze na pinie PWM nadal jest wariacja, ciężko stwierdzić.
  15. Motororo

    Problem z serwomechanizmem

    @farmaceuta Dzięki za pomysł z przetwornicą, lecz nie jest to tak, że z akumulatora mamy już stałe napięcie i nie ma tam żadnych spadków, szumów itd? I jeśli te serwa mogą pobrać nawet 2,5A to bym musiał zasilić je 12,5A ? A to mój kod do jednego serwa połączonego z potencjometrem: #include <Servo.h> Servo silnik; void setup (){ Serial.begin(9600); silnik.attach(9); } int pot, old; void loop(){ pot=analogRead(A0);//odczytujemy liczby z zakresu od 0 do 1023 pot=pot*180.0/1023;//zamienimy na liczby od 0 do 180 Serial.print(pot); silnik.write(pot); if (pot!=old){ //aby zmieniac polozenie tylko wtedy, kiedy sie zmienilo, a nie wyswietlac polozenie ciagle Serial.print(pot); silnik.write(pot); old=pot; } }
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.