Skocz do zawartości

wn2001

Użytkownicy
  • Zawartość

    201
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    4

wn2001 wygrał w ostatnim dniu 24 sierpnia 2019

wn2001 ma najbardziej lubianą zawartość!

Reputacja

135 Mistrz

2 obserwujących

O wn2001

  • Ranga
    5/10

Informacje

  • Płeć
    Mężczyzna

Ostatnio na profilu byli

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

  1. @Treker, cieszę się, jak najbardziej jestem otwarty na współpracę, organizatorom również moja wystawa się podobała i w kolejnej edycji (tj. Hobby 2020) też najprawdopodobniej się pojawię, odezwę się w razie co (szczególnie, że tak jak już mówiłem - często przychodzą rodzice z dziećmi i pytają się "jak zacząć?" itd.) Pozdrawiam, dziękuję za zainteresowanie Ponieważ moje pytania mogły "utonąć" w relacji, ponowię pytanie - czy ktoś ma jakieś doświadczenia z mikrokontrolerami lub RPi pracującymi w środowisku dużych zakłóceń elektromagnetycznych i jak sobie z nimi poradził? I drugie pytanie, bardziej off-topic - czy mBed, środowisko online dostarczane przez ST, można nazwać pełnoprawnym sposobem programowania STM32?
  2. @Treker, dziękuję Jeśli chodzi o targi Hobby, są to dwudniowe targi odbywające się na jesień, w weekend i są skierowane dla rodzin (szczególnie dzieci), mają pokazać inny sposób spędzania wolnego czasu niż komputer/smartfon. Pomyślałem, że pokażę kilka swoich robotów (była niedokończona Delta właśnie, Copernicus, BlackBird i Mustang), organizatorzy się zgodzili (dziękuję ). Odpowiadając na Twoje pytanie: nie, moje stoisko było chyba jedynym tego typu, ponieważ jak pisałem, tragi były takim mix'em wszystkiego: modelarstwo, szczególnie kolejkowe (chyba, że ktoś interesuje się elektroniką sterującą modelami kolejek, wiem, że Piko prezentowało jakiś nowy system sterowania); szycie; samochody RC; gry planszowe, klocki Lego (Mindstorms też) itd.: https://hobby.mtp.pl/pl/multimedia/targi-hobby-2019/ (fotorelacja). Nie wiem, dlaczego, w żadnej fotorelacji poznańskiego dziennika mnie nie ma, ale tak wyglądało moje stoisko: W tym miejscu chciałbym podziękować moim dwóm Kolegom, którzy mi pomogli wszystko obsłużyć - łącznie przez dwa dni przewinęło się 12 000 zwiedzających. Krótki film: Dużo osób pytało się o to, jak zacząć, oczywiście polecałem kursy Forbot'a dostępne w Botlandzie. Na podsumowanie, jako luźne wnioski: 1. Dzieciom (dorosłym też ) najbardziej podobał się robot sortujący krążki na białe i czarne mimo, że jego budowa jest znacznie prostsza niż np. Copernicus. Może dlatego, że w tym robocie można było samemu włożyć krążki i nacisnąć przycisk, a w pozostałych już kategorycznie dotykać nie wolno było 2. Kilkadziesiąt razy w ciągu dwóch dni (oczywiście to tylko moja obserwacja, jasne jest że to była impreza wielobranżowa i nie każdy musi się na tym znać) padło pytanie, czy ta Delta to drukarka 3D. Może przez ten wężyk pneumatyczny? 3. Ogólnie targi pozwoliły chociażby na brutalne przetestowanie tych czterech robotów po 6h dziennie, "w boju", i tak: sorter krążków "BlackBird" działał bez zarzutów (wieczna konstrukcja, jedynie trzeba będzie kiedyś wymienić serwa jak się wyrobią), SCARA "Mustang" podobnie, "Copernicus" wykonał kilkadziesiąt cykli i jedyne co należy wymienić to krańcówka, która dostała luz. Natomiast Delta: a) musiały być przerwy, silniki się grzeją do 70*C, co jest normalne szczególnie przy dużej ilości gwałtownych ruchów (zasilacz 36V powoduje, że nawet przy dużych prędkościach nie spada prąd, a co za tym idzie - moment obrotowy); b) nie było jeszcze krańcówek, przed włączeniem ustawiałem ręcznie i prawdopodobnie Mega się zrestartowała, co spowodowało, że ramiona ruszyły z innych niż zerowe pozycje i całość się połamała, na szczęście silnikom nic się nie stało - teraz są krańcówki, więc nawet przy resecie nastąpi automatyczne zerowanie i nie powinna mieć miejsca drugi raz taka sytuacja. == Już odnośnie samej Delty: Generalnie, po "dotarciu przekładni" luz wynosi może +/- 2 stopnie, co daje (około) dokładność +/-2 mm w pozycjonowaniu efektora - nie wiem, czy to dużo czy mało jak na amatorską konstrukcję. I mam jeszcze pytanie: prawie wszystkie wejścia i wyjścia są optoizolowane, z wyjątkiem wyjścia z czujnika indukcyjnego (jeszcze nieużywany, wyjście daje 0 lub 12V więc podpiąłem pod nie 1k rezystor i 4x dioda prostownicza, co daje spadek 0V lub 4x0,7=2,8V; który potem sprawdzam z uC oraz przycisku bezpieczeństwa, który jest podpięty pod RESET, z rezystorem podciągającym 4,7k - mam pytanie, czy jest to "zgodne ze sztuką"? Czy mają prawo indukować jakieś zakłócenia (kabel biegnie równolegle z prądowymi, do silników). Nie podłączałem jeszcze RPi, ale również obawiam się, czy jego praca nie będzie zakłócona tym, co sieją silniki. Pozdrawiam, każda pozytywna krytyka mile widziana, więc zapraszam do dyskusji
  3. Ponieważ jeden z użytkowników forum poprosił mnie na PW o wgląd do kodu, pomyślałem, że pokażę i wstawię go tutaj tak, aby również inni mogli podejrzeć, jeżeli będą potrzebować. Zastrzegam, że kod pisałem dawno i jest bardzo nieelegancki! Przepraszam za odkopanie wątku #define A 14 #define B 12 #define C 2 #define D 3 #define KRANC 4 #include <LiquidCrystal.h> byte w1=0; byte w2=0; byte w3=0; int predkosc=0; int zpos=0; int apos=0; LiquidCrystal lcd(9, 15, 8, 7, 6, 5); void setup(){ pinMode(KRANC, INPUT_PULLUP); pinMode(A, INPUT_PULLUP); pinMode(B, INPUT_PULLUP); pinMode(C, INPUT_PULLUP); pinMode(D, INPUT_PULLUP); pinMode(10, OUTPUT); pinMode(11, OUTPUT); pinMode(16, OUTPUT); lcd.begin(16, 2); lcd.print("Camera Slider"); lcd.setCursor(0, 1); lcd.print("STEP"); delay(1000); lcd.clear(); lcd.print("NUM ENTER"); lcd.setCursor(0, 1); lcd.print("A B C D"); delay(1000); lcd.clear(); lcd.print("A-FULL B-MANUAL"); lcd.setCursor(0, 1); lcd.print("C-HOME D-DEMO"); delay(500); } void loop(){ if (digitalRead(C)==0) zeruj(); else if (digitalRead(D)==0) demo(); else if (digitalRead(A)==0) full(); else if (digitalRead(B)==0) manual(); delay(100); } void zeruj() { //zerowanie digitalWrite(10, HIGH); tone(11, 1600); while (digitalRead(KRANC)==0) { delay(1); } digitalWrite(10, LOW); tone(11, 800); delay(1000); digitalWrite(10, HIGH); tone(11, 800); while (digitalRead(KRANC)==0) { delay(1); } digitalWrite(10, LOW); noTone(11); apos=0; delay(1000); } void demo() { //demonstracja możliwości, zapętlona zeruj(); digitalWrite(10, LOW); tone(11, 3200); delay(16000); while (digitalRead(D)==1 ||digitalRead(C)==1 ||digitalRead(B)==1 ||digitalRead(A)==1) { digitalWrite(10, LOW); tone(11, 3200); delay(10000); noTone(11); delay(500); digitalWrite(10, HIGH); tone(11, 3200); delay(10000); noTone(11); delay(500); } } void manual() { //funkcja własnoręcznego ustawienia predkosci i drogi przejazdu zeruj(); lcd.clear(); lcd.print("V|MAX 150CM/MIN"); lcd.setCursor(0, 1); lcd.print("0"); while(digitalRead(D)==1) { if (digitalRead(A)==0 && w1==0) {predkosc=predkosc+100; w1=1;lcd.setCursor(0, 1); lcd.print(predkosc);} else if (digitalRead(A)==1) w1=0; if (digitalRead(B)==0 && w2==0) {predkosc=predkosc+10; w2=1;lcd.setCursor(0, 1); lcd.print(predkosc);} else if (digitalRead(B)==1) w2=0; if (digitalRead(C)==0 && w3==0) {predkosc=predkosc+1; w3=1;lcd.setCursor(0, 1); lcd.print(predkosc);} else if (digitalRead(C)==1) w3=0; delay(100); } if (predkosc>150) predkosc=150; digitalWrite(16, HIGH); delay(250); digitalWrite(16, LOW); delay(250); digitalWrite(16, HIGH); delay(250); digitalWrite(16, LOW); delay(250); lcd.clear(); lcd.print("POS|MAX 700MM"); lcd.setCursor(0, 1); lcd.print("0"); while(digitalRead(D)==1) { if (digitalRead(A)==0 && w1==0) {zpos=zpos+100; w1=1;lcd.setCursor(0, 1); lcd.print(zpos);} else if (digitalRead(A)==1) w1=0; if (digitalRead(B)==0 && w2==0) {zpos=zpos+10; w2=1;lcd.setCursor(0, 1); lcd.print(zpos);} else if (digitalRead(B)==1) w2=0; if (digitalRead(C)==0 && w3==0) {zpos=zpos+1; w3=1;lcd.setCursor(0, 1); lcd.print(zpos);} else if (digitalRead(C)==1) w3=0; delay(100); } if (zpos>700) zpos=700; digitalWrite(16, HIGH); delay(250); digitalWrite(16, LOW); delay(250); digitalWrite(16, HIGH); delay(250); digitalWrite(16, LOW); delay(250); digitalWrite(10, LOW); tone(11, (predkosc/150)*3200); delay((zpos*128000)/((predkosc/150)*3200)); noTone(11); } void full() { //przejazd na pełen dystans, tylko z regulacją prędkości zeruj(); lcd.clear(); lcd.print("V|MAX 150CM/MIN"); lcd.setCursor(0, 1); lcd.print("0"); while(digitalRead(D)==1) { if (digitalRead(A)==0 && w1==0) {predkosc=predkosc+100; w1=1;lcd.setCursor(0, 1); lcd.print(predkosc);} else if (digitalRead(A)==1) w1=0; if (digitalRead(B)==0 && w2==0) {predkosc=predkosc+10; w2=1;lcd.setCursor(0, 1); lcd.print(predkosc);} else if (digitalRead(B)==1) w2=0; if (digitalRead(C)==0 && w3==0) {predkosc=predkosc+1; w3=1;lcd.setCursor(0, 1); lcd.print(predkosc);} else if (digitalRead(C)==1) w3=0; delay(100); } if (predkosc>150) predkosc=150; digitalWrite(16, HIGH); delay(250); digitalWrite(16, LOW); delay(250); digitalWrite(16, HIGH); delay(250); digitalWrite(16, LOW); delay(250); digitalWrite(10, LOW); tone(11, (predkosc/150)*3200); delay(89600000/((predkosc/150)*3200)); noTone(11); } Pozdrawiam
  4. Po udanym projekcie robota "Copernicus" - w szeregowym łańcuchu kinematycznym 4DOF przyszedł czas na robota klasy delta, nazwanego "Astra", ponieważ ramiona układają się właśnie w gwiazdę Prototyp prezentowałem na targach Hobby 2019 na Międzynarodowych Targach Poznańskich, generalnie nie ma nic rewolucyjnego - zasilacz 36V, 3 silniki NEMA17 z przekładniami planetarnymi, przeguby kulkowe firmy Igus® (serdecznie dziękuję), zerowanie - krańcówki, eżektor, ssawka, w pierwszej wersji - Arduino Mega, teraz to już Discovery F429 z wyświetlaczem LCD (wyświetlam na nim koordynaty, chciałbym też obsługiwać dotyk, ale dodanie biblioteki do obsługi dotyku kłóci się ze sterowaniem silnikami krokowymi ). Aktualnie, robot potrafi wykonać proste zadanie pick&place Projekt cały czas ewoluuje (określiłbym postęp na 60%), mam zamontowaną RPi 3B+ z kamerką, chciałbym dodać podajnik obrotowy, rozpoznawać kolor krążków i układać do określonych pojemników, a na koniec pudełeczko z posortowanymi elementami pneumatycznie wysunąć - chyba, że komuś przychodzi na myśl coś lepszego? (ale, żeby z wykorzystaniem pneumatyki, mam do dyspozycji dużo różnych siłowników i kilka chwytaków ), z góry mówię, że znam aplikację taśmociągu i systemu wizyjnego Podziękowania składam również dla Kolegi @Eukaryota za pomoc i inspirację Pozdrawiam
  5. @beargrylls Świetna konstrukcja, gratuluję solidnego, prawie komercyjnego podejścia do tematu. Mam kilka pytań: 1. Łożyskujesz jednostronnie tę małą zębatkę GT2? To wystarczy? Same przekładnie planetarne rysowałeś w Fusionie przy pomocy jakiejś wtyczki? 2. Super wizualizacja w ROSie, zawsze zastanawiałem się jak zrobić taką 3D, bo dotychczas bawiłem się Processingiem i 2D. Dane PC-Arduino wymieniasz portem szeregowym (korzystając z wspomnianej biblioteki)? 3. Jak zerujesz osie? Ręcznie? Czujniki krańcowe/enkodery absolutne...? 4. Ja też wykorzystywałem AccelStepper, bardzo łatwo zrobić tam rampę de- i akceleracji, mam pytanie - jak chcesz zrobić ruch po zadanej trajektorii. Jeżeli nie robiłem interpolacji, to ruch mojego (znacznie prostszego ramienia) był płynny, ale po jakiejś losowej krzywej. Jeżeli zrobiłem interpolację w linii prostej np. co 5mm, to ruch był "szarpany". Czy można jakoś łatwo (to znaczy za pomocą podstawowej matematyki) na Arduino zrobić ruch zarówno interpolowany jak i płynny, tj. z przyspieszeniem? PS Co to za książka "Poradnik Mechanika" w pierwszym filmiku ? Polecasz? PS2 Dziękuję za sam opis, bo wyszedł z niego całkiem obszerny poradnik-tutorial n/t ROSa Pozdrawiam i jeszcze raz gratuluję
  6. @Eukaryota Dziękuję za odpowiedź. W międzyczasie posunąłem się ze swoim projektem już dość daleko, o IK przeczytałem na forum Trossen: Przeguby są z Igus'a; 3 silniki krokowe z przekładnią, zerowanie będzie na krańcówkach umieszczonych do góry (około 25 stopni w górę od poziomu), wyżej ramiona by się już i tak w normalnej pracy nie podnosiły. Czy wykorzystanie krańcówek poza ograniczeniem w jakiś sposób zakresu ruchu i tego, że należy robić to za każdym razem ma jakieś wady? Jak jest u Ciebie z dokładnością, u mnie luzy są dość duże na silnikach krokowych z przekładnią i szacuję dokładność na 2mm w każdej osi, już na efektorze. Oczywiście eżektor z ssawką, do tego chciałbym dodać jakieś siłowniki, ale nie wiem co mogłyby robić? Może masz jakiś pomysł, na inną aplikację delty niż pick&place z kamerą? To bardzo fajne, ale takie sztandarowe zastosowanie tej klasy Oczywiście gratuluję Twojej Delty, bo wyprzedza moją kilkunastokrotnie Szczególnie podoba mi się sterowanie, ja umiem jedynie zadać na Arduino trzy ruchy silnikami z rampą przyspieszenia i hamowania. Jak Tobie udało się uzyskać taką płynność ruchu? Potrzebujesz jakieś dodatkowe regulatory, które obliczają pozycję+prędkość znając trajektorię? Nie zrobię tego matematyką z szkoły średniej? Pozdrawiam i jeszcze raz gratuluję
  7. 1) Gratuluję świetnego projektu, płynność i szybkość ruchów - pełen profesjonalizm :) 2) Czy ten dość cienki pasek zębaty daje radę przenieść tak duży moment? Jak go naprężasz? 3) Nie robiłeś już czwartej osi, aby pozycjonować np. narzędzie? 4) Nad silnikiem krokowym to oczywiste, a czy są jakieś przewagi BLDC względem np. serwomotorów? 5) Łożyskujesz jakoś pierwszą oś? Cz na ramionach są jakieś luzy? Teraz możesz dodać np. elektromagnes i system wizyjny i zbierać śrubki - elektromagnes nie musi być prostopadle, do ssawek, chwytaków, narzędzi itd. chyba musiałbyś jednak dodać 4. lub nawet 5. oś :)
  8. @Treker, dziękuję Co do startu w tej edycji - enigmatycznie napiszę, że tak
  9. @Treker Oczywiście, nawet zdjęcie mojego plotera posłużyło jako obrazek-miniaturka tematu :)
  10. Gratuluję wszystkim Kolegom interesujących projektów @Treker, zainteresowałem się ostatnio pneumatyką. Co do robota, to kupiłem go z drugich rąk za kilkaset złotych, opisywany był jako "bardzo mało używany". Złożyłem go, przetestowałem i odłożyłem na półkę, po roku postanowiłem go jakoś wykorzystać. Sam projekt mechaniczny jest ciekawy i poza kilkoma niedociągnięciami, bardzo dobry. Serwa są (4 główne) obustronnie łożyskowane, ale jedno blokuje się w określonym kącie, a dwa są wyrobione i mają bardzo duży luz. Nie wiem, czy to wada fabryczna, czy poprzedni właściciel się "nad nim znęcał", ale po wymianie serw powinno być OK. Oczywiście o nominalnych luzach na serwie, które potem się sumują, nie muszę pisać, jak również o szarpnięciu po podłączeniu zasilania, z którym nie za bardzo wiem, co zrobić Podsumowując - w moim przypadku, wraz z oryginalnym Arduino i porządnym zasilaczem (5V 5A) w zestawie, w cenie w której ja kupiłem, mogę polecić do nauki, zabawy, jakiejś aplikacji pokazowej... Jeżeli miałbym kupić nowy (Botland - 1095 PLN), to wolałbym budować coś samodzielnie, już na silnikach krokowych... Ale to tylko moje zdanie, z samego robota jestem zadowolony... wiadomo jaka jest polityka Arduino dotycząca shieldów i dodatków - ktoś woli łączyć wszystko i "eksperymentować", a ktoś woli kupić nieco drożej gotowe i zająć się tylko programowaniem... każdy sposób ma swoje plusy i minusy
  11. To mikro-projekt, ale na pokazy w szkole do robota Braccio dołożyłem chwytak pneumatyczny i klocki drukowane 3D z skrótem nazwy szkoły: Z, S i Ł. Robot je chwyta, podnosi i odkłada
  12. MPK Poznań też (w szczegóły nie wchodziłem) https://github.com/xavery/peka-vm-api/blob/master/peka-vm-api.md Wiem, że kiedyś nawet użytkownik @Marooned zbudował sobie takie coś na biurko, dla linii tramwajowej nr 16
  13. "Copernicus" zyskał system wizyjny! Wykorzystałem Pixy2, które z STM32 komunikuje się po UART'cie; kamerkę umieściłem na maszcie (widoczny w dalszej części filmu), po uruchomieniu następuje skanowanie, przesłanie współrzędnych, kontrola czy przypadkiem nie pojawiły się jakieś zakłócenia itd., a następnie robot układa porozrzucane krążki w stos Pamiętam kiedyś dyskusję n/t wspomnianego Pixy vs RPi + kamerka, ja mogę zdecydowanie stwierdzić, że w mojej aplikacji Pixy2 spisuje się znakomicie, oczywiście wcześniej należy zaznaczyć kolor obiektu (signatures) i czułość, czasami też zdarza się mu rozłączyć z programem PixyMon na PC służącym do zmian wszelkich ustawień (prawdopodobnie wina dość długiego kabla USB, który służy też do zasilania). Ale dla jasności podkreślam - laptop służy tylko skalibrowaniu czujnika i zasilaniu go, całość analizy obrazu odbywa się w Pixy Mam też małe pytanie - przez nieostrożność, będąc w poliestrowej koszuli, dotknąłem Pixy (niepodłączone) i poczułem drobne ukłucie, chyba wyładowanie ESD W każdym bądź razie, jak widać na filmie, płytka działa, ale chodzi o to, czy może teraz przestać działać w najmniej oczekiwanym momencie? W każdym bądź razie, miałem dużo szczęścia (w końcu to 60$), ale przestrzegam przed dotykaniem elektroniki w ubraniach poliestrowych Pozdrawiam
  14. @wezen53 Jeśli chodzi o ten konkretny silnik, to sterownik jest dobrany "na styk" - może lepiej ten lub ten - dobrą praktyką jest "zapas" prądu wyjściowego, bateria 9V niestety się nie nadaje - za mała wydajność prądowa, musisz znaleźć zasilacz DC, im większe napięcie (ale mniejsze od maksymalnego sterownika!) tym lepiej, prąd będzie szybciej narastał i uzyskasz większe prędkości - te dwa mają maksymalne napięcie zasilania około 47/48V (ale uważaj, bo takei napięcie DC to już nie żarty), a na stronie Botlandu, jeżeli chcesz wszystko z jednej przesyłki, najwyższe dostępne napięcie (19V) o wydajności 3,15A (czyli wystarczającej) ma ten
  15. Cześć @wezen53 , postawiłeś sobie bardzo trudne zadanie, możesz powiedzieć co chciałbyś zrobić? Bo może problem nie leży w silniku tylko w Twojej aplikacji. Tak, jak napisał @Gieneq, Twój napęd musiałby mieć prędkość obrotową 250rpm, czyli jakieś 4 obr/s, a to przy założeniu natychmiastowego startu i hamowania. Serwomechanizmy modelarskie raczej odpadają, okres sygnału sterującego równy wspomnianym 20ms dyskwalifikuje je względem Twoich wymagań. Jeśli chodzi o Twoje pytanie - zgadza się, im mniejsza indukcyjność i opór uzwojeń, tym więcej prądu pobierają cewki (więc są to cechy występujące wspólnie) i tym bardziej silnik nadaje się do krótkich, dynamicznych ruchów, ale nadal nie są to te, o które Ci chodzi - podam przykład, nie wiem jak u Ciebie z elektrotechniką, ale: http://if.pw.edu.pl/~wosinska/am2/w12/segment3/main.htm I korzystamy z ostatniego wzoru. Biorąc drugi silnik (pierwszy ma mniejszy moment i dużą oporność omową, więc odpada bez obliczeń) - zakładam też idealną wydajność sterownika, brak zwłok czasowych itd., to Silnik ten oporność cewki 1,25 Ohma, indukcyjność 1,8mH, a pobór prądu - 2,5A, zatem prąd połowy nominalnego popłynie po 1ms, a nominalny bliski 2,5A popłynie dopiero po 5ms!!! Przy sterowaniu pełnokrokowym 30 stopni to 200kroków / 6 = 33 kroki, zatem takich przełączeń cewka jedna - cewka druga musiałoby być w ciągu 33. Soft- startu i stopu nie wprowadzisz, bo nie ma na nie miejsca. Wniosek - silnik być może ruszy, ruch ciężko będzie nazwać stabilnym, będzie pracować na granicy momentu, gdzie masa samego wału potrafi pokonać drastycznie malejący moment - spójrz na charakterystyki - im większa prędkość silnika krokowego, tym moment mniejszy i to nieliniowo. Ogólnie (w mojej opinii, bo teoria to jedno, praktyka drugie - nie sprawdzi się) Pomyśl może nad serwomotorami przemysłowymi (ale nie silnikami krokowymi z zintegrowanym sterowaniem, bo wyglądają łudząco podobnie!), takimi jak ten (oczywiście nie ten konkretny, bo to trzeba by nieco obliczeń - są one sterowanie również przez sygnał (najczęściej) STEP/DIR, a przeznaczone są do znacznie wyższych prędkości
×
×
  • Utwórz nowe...