Skocz do zawartości

Tablica liderów

Popularna zawartość

Pokazuje zawartość z najwyższą reputacją 17.04.2021 we wszystkich miejscach

  1. Jakiś czas temu opisałem budowę pojazdu zdalnie sterowanego. Przypomnę, efekt końcowy wyglądał mniej więcej następująco: Już w poprzednim poście wypunktowałem wszystkie wady powyższego projektu - zaczynając od sterczących wszędzie kabli, anten mocowanych na taśmę izolacyjną, ogromnego Leonardo z shieldem sterującym silnikami w charakterze kontrolera, a wszystko na DIY płytce aluminiowej: działać działało, ale wyglądało... no, nazwijmy rzecz po imieniu, tragicznie. Postanowiłem więc zabrać się za temat trochę bardziej poważnie - a że w międzyczasie wyposażyłem się w drukarkę 3D, miałem spore pole do popisu. Zmienił się też charakter projektu. Zamiast czujnika zbliżeniowego zdecydowałem się zamontować kamerkę z przekaźnikiem wideo - ze zdalnie sterowanego pojazdu powstał więc w mały robot inspekcyjny. Na pierwszy ogień poszły komponenty. Leonardo wyleciało do innego projektu, gdzie miało o wiele więcej sensu, a w jego miejsce trafił Teensy 3.6 (pod linkiem 3.5 dostępny w Botlandzie - różnią się głównie mocą obliczeniową). Shield zastąpiłem dwoma osobnymi dwukanałowymi sterownikami silników DRV8833. Zasilanie szło z dwucelowego akumulatora LiPo, więc konieczny był też zakup przetwornic step-down, ale nauczony doświadczeniem kupiłem dwie: jedna zasilała Teensy i odbiornik RC, zaś druga - dwa mikro serwa, które sterowały położeniem kamerki. Sterowniki silników dostały napięcie bezpośrednio z akumulatora, bo obsługiwały je bezpośrednio, podobnie nadajnik video. Drugim krokiem było zaprojektowanie płytki. Miałem już dosyć sterczących wszędzie kabli, więc zacisnąłem zęby, siadłem do Eagle'a i zacząłem dziergać płytkę. Pomierzyłem wszystko dokładnie, zamówiłem w JCLPCB i światło dzienne ujrzał taki oto kawałek włókna szklanego: Przede wszystkim zaprojektowałem od razu otwory, którymi mogłem przeprowadzić spod spodu przewody od silników - odpowiednie pady znalazły się zaraz obok, co znacząco ułatwiło lutowanie. Pamiętałem też o tym, by ścieżki, którymi będzie płynął największy prąd zasilający silniki i nadajnik video, były odpowiednio szersze od pozostałych. Nie są to wprawdzie dramatycznie wysokie wartości, ale po co ryzykować. Oprócz dedykowanych złącz na dwa serwa, wyprowadziłem jeszcze dwie dodatkowe serie pinów 5V+GND+SGN w razie, gdybym chciał podłączyć jeszcze więcej serw albo na przykład czujnik odległości. Teraz trzeba było zaprojektować obudowę. Zdecydowałem się na prosty, prostopadłościenny kształt - elegancki, funkcjonalny i - co najważniejsze - dopasowany dokładnie do podwozia, które miałem do dyspozycji. Co ważne, okazało się, że przy odrobinie wysiłku projekty w Fusion 360 można synchronizować z płytkami zaprojektowanymi w Eagle - dzięki temu mogłem "wywiercić" otwory dokładnie w tych miejscach, w których było to potrzebne. Potem pozostało wydrukowanie wszystkiego - długie godziny - i zmontowanie. Dzięki temu, że miałem pod ręką płytkę, montaż był banalnie prosty. Wszędzie przylutowałem żeńskie złącza goldpinowe, serwa przypiąłem kątowymi męskimi pinami (dzięki temu nie miałem problemu ze zmieszczeniem wtyków w obudowie), wszystkie płytki wskoczyły w swoje sloty i to właściwie był koniec. I dobrze, bo mam straszną alergię na lutowanie... Programowania też nie było zbyt dużo, ponieważ mogłem wykorzystać całkiem sporo kodu z poprzedniego projektu. Całość możecie ściągnąć z mojego repozytorium na GitLabie. Jest jednak jedna istotna różnica: zdecydowałem się zrezygnować z odbierania danych z odbiornika RC poprzez PWM, ponieważ FrSky umożliwia odbiór kompletu danych poprzez port szeregowy - SBUS. Pewnym problemem jest to, że jego standard jest... nieco niestandardowy (jest to podobno "odwrócony" UART, czyli tam, gdzie w UART jest 1, w tym formacie jest 0 i vice versa), ale na szczęście istnieje odpowiednia biblioteka, która automatycznie odczytuje dane, przy czym uwaga: nie działa ona na wszystkich mikrokontrolerach zgodnych z Arduino (ale na szczęście działa na Teensy). Co ciekawe, nie nadziałem się w tym projekcie na żadne większe problemy. Było jednak kilka mniejszych, na przykład montaż akumulatora - pierwotnie miał on znajdować się w dedykowanej rynience, ale się w niej najzwyczajniej w świecie nie zmieścił. Nie zależało ni jednak jakoś specjalnie na tym, by się tam ona znajdowała, więc skończyło się na najzwyklejszym rzepie. Musiałem też raz przeprojektować montaż anten odbiornika RC (powinny one znajdować się względem siebie pod kątem 90 stopni dla najlepszego odbioru), ale ogólnie jestem z niego bardzo zadowolony, bo anteny wskoczyły w odpowiednie sloty i trzymają się w nich pod wpływem grawitacji - nie musiałem montować ich na klej, śrubami czy w inny tego typu sposób. Po złożeniu całości okazało się też, że robot bardzo mozolnie porusza się do przodu i dziwnie przy tym terkocze. Okazało się, że oryginalne felgi umieszczały opony bardzo blisko podwozia, przez co opony o nie tarły. Niewiele myśląc, zwymiarowałem felgi dokładnie i wydrukowałem własne - z odpowiednim dystansem. Na powyższych zdjęciach widać już te wydrukowane. Poniżej możecie zobaczyć robocika podczas pierwszych testów w moim starym mieszkaniu. Moja półtoraroczna córka nazywa go "brum brum", ale finalnie ochrzciłem go zgodnie z przyjętą jakiś czas temu konwencją, więc otrzymał imię "Lynx", czyli "Ryś". Koncepcja opierała się na nazywaniu pojazdów zwierzętami, które mniej więcej oddają sposób ich poruszania się - na przykład zbudowane przeze mnie wcześniej quadrokoptery po starcie musiały zawsze w jakiś sposób wylądować (planowo lub nie), uznałem, że tak naprawdę nie latają, tylko kicają, więc otrzymały nazwy "Pchła" (najmniejszy, kupiony w sklepie), "Zając", "Królik" i "Kangur" (ostatni mierzył pół metra - od śmigła do śmigła, a latał na śmigłach 12,8"). Ot, taka ciekawostka. Ale projekt koniec końców się udał! Czego życzę również wszystkim innym amatorom budowania elektronicznych projektów DIY.
    1 punkt
  2. Cześć, Swoją przygodę z PCB zacząłem od monitora starego kotła a potem mostu WiFi na 433 MHz, który jest opisany w innym temacie na forum. Potem był licznik energii, którego akurat na forum nie wrzucałem. Tym razem chciałbym pochwalić się innym projektem, który wyewoluował z wspomnianego na początku monitora starego pieca, który docelowo wymieniliśmy na kocioł na pellet. Wcześniejsza płytka, oparta na esp8266 pozwalała na monitorowanie temperatury na piecu oraz wyłączaniu bądź włączaniu pompki obiegowej. Kocioł został wymieniony, zgodnie z nadchodzącymi wymaganiami dotyczącymi smogu. Nie chciałem jednak tracić możliwości zdalnego podglądu... PelletMon - zdalne monitorowanie kotła Projekt nie powiem, był pójściem na żywioł. Kocioł posiada wyprowadzenia magistrali CAN a o ramkach danych i ich strukturze nie było wiadomo kompletnie nic. Początkowe testowanie magistrali CAN spowodowało kilka małych awarii kotła, co jak się okazało, wynikało ze złej terminacji (moduły testowe na płytce stykowej). Na szczęście awarie znikały po restarcie kotła. Sporo czasu zajęło mi dojście do tego, co jest przesyłane w ramkach. Napisałem własny sniffer magistrali, który przesyłał po serial porcie dane interpretowane przez program CAN-Monitor-3000. W ten sposób udało się wyłapać niektóre wartości, jednak z temperaturami miałem mały problem. Nie chciałem przecież czekać w kotłowni cały dzień, by poznać wartości dla skrajnych temperatur. Wpadłem na pomysł - bardzo ryzykowny - podstawienia własnej ramki z różnymi wartościami. Tak udało się zbudować tabelę interesujących wartości a na ich podstawie aproksymację funkcji - tutaj z pomocą przyszedł program CurveExpert. Mając działające pomiary (co oczywiście zajęło kilka tygodni kombinowania "po godzinach") odebrałem w końcu zamówione płytki PCB. Urządzenie oparte jest o ESP32 i transceiver CAN. Potem było dalej kombinowanie, między innymi z terminacją ale też i kodem W międzyczasie przyszła obudowa, nawiercone zostały otwory oraz złożone gotowe urządzenie. Urządzenie zostało zamontowane na kotle a ja jeszcze jakiś czas bawiłem się z wykresami. Oprogramowanie bazuje na moim frameworku ksIotFramework dla układów esp32 / esp8266. Dane przesyłane są do mojego brokera MQTT na VPS. Ponadto na VPS są też uruchomione forwardery/mosty do innych usług - Blynk oraz Beebotte. Z zewnątrz (IBM Bluemix) łączy się też NodeRED z dashboardem: Co jeszcze zostało? W planach było dodanie jeszcze czujnika odległości, by wykrywać poziom pelletu w zasobniku, jednak nie znalazłem jeszcze chwili na to. Więcej info o projekcie - w jęz. angielskim: https://hackaday.io/project/176557-pelletmon
    1 punkt
  3. Na obecną chwilę warto podsumować i zebrać w jeden post rozwiązanie kwestii wielofunkcyjności programowej, dającej możliwość przełączania trybów pracy za pomocą przełącznika ON/OFF/ON, zgodnie z poniższym diagramem: Rozwiązanie powyższego zagadnienia zależy od tego czy chcemy sterować za pomocą przycisków monostabilnych (microswitch) czy bistabilnych (np. przełącznik suwakowy czy kołyskowy). Wersja 1 - Przełącznik bistabilny ON/OFF/ON Program oparty o warunkowanie IF-ELSE-IF: //Program symulujący pracę dwóch programów przełączanych za pomocą przełącznika ON/OFF/ON lub suwakowego. //Nie dotyczy przycisków typu microswitch //Program_1 - LED 1 //Program_2 - LED 2 #define Przycisk_1 8 //Przełącznik_1 #define Przycisk_2 9 //Przełącznik_2 #define Przycisk_3 10 //Przełącznik_3 #define LED_1 2 //LED zielona 1 #define LED_2 3 //LED zielona 2 void setup () { //Wyprowadzenie przycisków pinMode(Przycisk_1, INPUT_PULLUP); //Wejście przycisku 1 w trybie PULLUP pinMode(Przycisk_2, INPUT_PULLUP); //Wejście przycisku 2 w trybie PULLUP pinMode(Przycisk_3, INPUT_PULLUP); //Wejście przycisku 3 w trybie PULLUP //Wyprowadzenia LED pinMode(LED_1, OUTPUT); //Wyjście na LED zielona 1 pinMode(LED_2, OUTPUT); //Wyjście na LED zielona 2 //Ustawienie wyjściowego stanu LED digitalWrite(LED_1, LOW); //Stan diody LED1 - wyłączona digitalWrite(LED_2, LOW); //Stan diody LED2 - wyłączona } void loop() { if (digitalRead(Przycisk_1) == LOW) { //Jeśli Przycisk_1 jest włączony - Program_2 digitalWrite(LED_1, HIGH); digitalWrite(LED_2, LOW); //Włącz LED zielona 1 - PROGRAM 1 } else if (digitalRead(Przycisk_2) == LOW) { //Jeśli Przycisk_2 jest włączony - Program_2 digitalWrite(LED_1, LOW); digitalWrite(LED_2, HIGH); //Włącz LED zielona 2 - PROGRAM 2 } else if (digitalRead(Przycisk_3) == LOW) { //Jeśli Przycisk_3 jest włączony - Stan OFF digitalWrite(LED_1, LOW); digitalWrite(LED_2, LOW); //Wyłącz LED - Symulacja Stan OFF } else { digitalWrite(LED_1, LOW); //Wyłącz LED zielona 1 digitalWrite(LED_2, LOW); //Wyłącz LED zielona 2 } } Wersja 2 - Przełącznik monostabilny (microswitch) Program oparty o warunkowanie switch case. //Program symulujący pracę dwóch programów przełączanych za pomocą przełącznika monostabilnego //Przyciski typu microswitch //Program_1 - LED 1 //Program_2 - LED 2 #define Przycisk_1 8 //Microswitch_1 #define Przycisk_2 9 //Microswitch_2 #define Przycisk_3 10 //Microswitch_3 #define LED_1 2 //LED zielona 1 #define LED_2 3 //LED zielona 2 uint8_t tryb_program = 0; //Zmienna trybu programu void setup () { //Wyprowadzenie przycisków pinMode(Przycisk_1, INPUT_PULLUP); //Wejście przycisku 1 w trybie PULLUP pinMode(Przycisk_2, INPUT_PULLUP); //Wejście przycisku 2 w trybie PULLUP pinMode(Przycisk_3, INPUT_PULLUP); //Wejście przycisku 3 w trybie PULLUP //Wyprowadzenia LED pinMode(LED_1, OUTPUT); //Wyjście na LED zielona 1 pinMode(LED_2, OUTPUT); //Wyjście na LED zielona 2 //Ustawienie wyjściowego stanu LED digitalWrite(LED_1, LOW); //Stan diody LED1 - wyłączona digitalWrite(LED_2, LOW); //Stan diody LED2 - wyłączona } void loop () { if (digitalRead(Przycisk_1) == LOW) { tryb_program = 1; //Warunek - sprawdzenie stanu - jeśli Przycisk_1 włączony } if (digitalRead(Przycisk_2) == LOW) { tryb_program = 2; //Warunek - sprawdzenie stanu - jeśli Przycisk_2 włączony } if (digitalRead(Przycisk_3) == LOW) { tryb_program = 3; //Warunek - sprawdzenie stanu - jeśli Przycisk_3 włączony } switch (tryb_program) { case 1: digitalWrite(LED_1, HIGH); digitalWrite(LED_2, LOW); //Włącz LED zielona 1 - PROGRAM 1 break; case 2: digitalWrite(LED_1, LOW); digitalWrite(LED_2, HIGH); //Włącz LED zielona 2 - PROGRAM 2 break; case 3: digitalWrite(LED_1, LOW); digitalWrite(LED_2, LOW); //Wyłącz LED - Stan OFF break; } } Przykład implementacji jednego z powyższych rozwiązań do bardziej zaawansowanego kodu. Oczywiście kod ten można usprawnić co, zgodnie z sugestiami, zamierzam zrobić
    1 punkt
  4. Ciesze sie ze dziala choc podziekowania nie tylko mi sie naleza a wszystkim ktorzy pomagali..
    1 punkt
  5. HA! Niech Twe imię będzie sławione na libacjach dobry człowieku oraz wszystkich, którzy poświęcili swój cenny czas. O to chodziło. Uproszczę kody i zbiorę razem aby był jeden wielki duży post dla potomnych. Sądzę, że się przyda.
    1 punkt
  6. A co ma startowac jako automat?? I z czym jest teraz problem? Acha..rozumiem..to musisz tak zmodyfikowac zmienna "tryb" zeby po uruchomieniu nic sie nie dzialo...jesli "0" to nie rob nic...jesli "1" to program1..itp uint8_t tryb_program = 0; if (digitalRead(switch1) == LOW) { tryb_program = 1; } if (digitalRead(switch2) == LOW) { tryb_program = 2; } if (digitalRead(switchoff) == LOW) { tryb_program = 3; } switch(tryb_program) { case 1: //program pierwszy... break; case 2: //program drugi... break; case 3: //program off... break; } Teraz podczas startu nic sie nie dzieje...dopiero Ty wybierasz co robisz..
    1 punkt
  7. O to, to, to Nie bądź zbyt surowy wobec siebie. Po prostu wymagałeś ode mnie dużo bardziej zaawansowanego kodu, a nie początkującej przaśnicy o wiedzy bakłażana Rozumiem, że switch(tryb_program) ma być w void loop () { } Będę działał //Program symulujący pracę dwóch programów przełączanych za pomocą przełącznika ON/OFF lub suwakowego. Dwufunkcyjnego //Przyciski typu microswitch //Program_1 - linijka //Program_2 - odczyt danych przez Monitor portu #define trigPin 12 //wejście wyzwalające #define echoPin 11 //Odczyt zmierzonej odległości #define LED_1 2 //LED zielona 1 #define LED_2 3 //LED zielona 2 #define LED_3 4 //LED czerwona 1 #define LED_4 5 //LED czerwona 2 #define LED_5 6 //LED niebieska - Symbol innego programu #define Przycisk_1 8 //Microswitch_1 #define Przycisk_2 9 //Microswitch_2 #define Przycisk_3 10 //Microswitch_3 uint8_t tryb_program = 0; if (digitalRead(Przycisk_1) == LOW) { tryb_program = 0; } if (digitalRead(Przycisk_2) == LOW) { tryb_program = 1; } if (digitalRead(Przycisk_3) == LOW) { tryb_program = 2; } int zmierzOdleglosc() { long czas, dystans; //Zmienna przechowująca duże liczby - UWAGA! zużywa 4 bajty pamięci. Zawiera argumenty czas oraz dystans digitalWrite(trigPin, LOW); //Wejście wyzwalające - sygnał niski delayMicroseconds(2); digitalWrite(trigPin, HIGH); //Wejście wyzwalające - sygnał wysoki delayMicroseconds(10); digitalWrite(trigPin, LOW); //Wejście wyzwalające - sygnał niski czas = pulseIn(echoPin, HIGH); //Pomiar gdy na pinie echoPin stan wysoki - w tym przypadku PIN 11 dystans = czas / 58; //Przelicznik 58 - z DTR producenta. Czas w jakim dźwięk przebywa 1cm w czasie 1 micro sek. - dystans w korelacji ze zmienną long i jej argumentem return dystans; } void setup() { //Wyprowadzenie przycisków pinMode(Przycisk_1, INPUT_PULLUP); //Wejście przycisku 1 w trybie PULLUP pinMode(Przycisk_2, INPUT_PULLUP); //Wejście przycisku 2 w trybie PULLUP pinMode(Przycisk_3, INPUT_PULLUP); //Wejście przycisku 3 w trybie PULLUP //Obsługa czujnika odległości Serial.begin(9600); //Ustawienie prędkości transmisji pinMode(trigPin, OUTPUT); //Trig jako wyjście - pomiar odległości pinMode(echoPin, INPUT); //ECHO jako wejście - odczyt zmierzonej odległości //Wyprowadzenia LED pinMode(LED_1, OUTPUT); //Wyjście na LED zielona 1 pinMode(LED_2, OUTPUT); //Wyjście na LED zielona 2 pinMode(LED_3, OUTPUT); //Wyjście na LED czerwona 1 pinMode(LED_4, OUTPUT); //Wyjście na LED czerwona 2 pinMode(LED_5, OUTPUT); //Wyjście na LED niebieska - symulacja programu //Ustawienie wyjściowego stanu LED digitalWrite(LED_1, LOW); //Stan diody LED1 - wyłączona digitalWrite(LED_2, LOW); //Stan diody LED2 - wyłączona digitalWrite(LED_3, LOW); //Stan diody LED3 - wyłączona digitalWrite(LED_4, LOW); //Stan diody LED4 - wyłączona digitalWrite(LED_5, LOW); //Stan diody LED5 - wyłączona } void loop() { switch (tryb_program) { case 0: int jakDaleko = zmierzOdleglosc(); //Zmienna - odniesienie do funkcji if ((jakDaleko > 30) ) { //Jeżeli odległość jakDaleko > 30cm nic nie rób digitalWrite(LED_1, LOW); //Wyłącz LED zielona 1 digitalWrite(LED_2, LOW); //Wyłącz LED zielona 2 digitalWrite(LED_3, LOW); //Wyłącz LED czerwona 1 digitalWrite(LED_4, LOW); //Wyłącz LED czerwona 2 } else if ((jakDaleko > 25) ) { //Jeżeli odległość jakDaleko > 25cm digitalWrite(LED_1, HIGH); //Włącz LED zielona 1 digitalWrite(LED_2, LOW); //Wyłącz LED zielona 2 digitalWrite(LED_3, LOW); //Wyłącz LED czerwona 1 digitalWrite(LED_4, LOW); //Wyłącz LED czerwona 2 } else if ((jakDaleko > 20) ) {//Jeżeli odległość jakDaleko > 20cm digitalWrite(LED_1, HIGH); //Włącz LED zielona 1 digitalWrite(LED_2, HIGH); //Włącz LED zielona 2 digitalWrite(LED_3, LOW); //Wyłącz LED czerwona 1 digitalWrite(LED_4, LOW); //Wyłącz LED czerwona 2 } else if ((jakDaleko > 15) ) {//Jeżeli odległość jakDaleko > 15cm digitalWrite(LED_1, HIGH); //Włącz LED zielona 1 digitalWrite(LED_2, HIGH); //Włącz LED zielona 2 digitalWrite(LED_3, HIGH); //Włącz LED czerwona 1 digitalWrite(LED_4, LOW); //Wyłącz LED czerwona 2 } else if ((jakDaleko > 10) ) { //Jeżeli odległość jakDaleko > 10cm digitalWrite(LED_1, HIGH); //Włącz LED zielona 1 digitalWrite(LED_2, HIGH); //Włącz LED zielona 2 digitalWrite(LED_3, HIGH); //Włącz LED czerwona 1 digitalWrite(LED_4, HIGH); //Włącz LED czerwona 2 } else { digitalWrite(LED_1, LOW); //Wyłącz LED zielona 1 digitalWrite(LED_2, LOW); //Wyłącz LED zielona 2 digitalWrite(LED_4, HIGH); //Miganie LED czerwona 2 digitalWrite(LED_3, HIGH); //Miganie LED czerwona 1 delay(100); digitalWrite(LED_4, LOW); //Miganie LED czerwona 2 digitalWrite(LED_3, LOW); //Miganie LED czerwona 1 delay(100); } break; case 1: digitalWrite(LED_5, HIGH);//Miganie LED niebieska - sygnalizacja stanu pracy Programu_2 delay(500); digitalWrite(LED_5, LOW); delay(500); Serial.print(zmierzOdleglosc()); Serial.println("cm"); delay(500); break; case 2: digitalWrite(LED_5, HIGH);//Miganie LED niebieska - symulacja programu delay(50); digitalWrite(LED_5, LOW); delay(50); break; } } hmmm.. coś spierniczyłem
    1 punkt
  8. @WojProLbk Co do wyboru śrub kulowych, prowadnic i łożysk masz noty katalogowe. Śruby kulowe 16 mm średnicy w zupełności wystarczą. Co do prowadnic to bardziej trzeba się sugerować łożyskami, zobaczyć i łożysko jest w stanie przenieść w którą stronę. U mnie są prowadnice i łożyska 20 mm średnicy.
    1 punkt
  9. Masz rację, sporo jest tu do poprawy, już w swojej pracy się do tego przyznałem. Część niedoróbek wynika z tego, że to była pierwsza tego typu konstrukcja w moim wykonaniu, a część z bezlitosnego terminu oddania pracy Teraz, po Twoim wpisie mam sporą motywację, żeby całość dokończyć. O osi Z nie myślałem w ten sposób, dzięki za podpowiedź! Mógłbyś powiedzieć w jaki sposób dobierałeś średnice wałków prowadnic i śrub napędowych? To co zastosowałem działa, ale pamiętam, że miałem z tym mały problem na etapie projektowania i jestem ciekaw jak sobie z tym poradziłeś
    1 punkt
  10. Panie bo jak guzik7 jest nie wcisniety to warunek jest spelniony i dioda zapalona..jak guzik6 wcisniety to dioda ma zgasnac...i w rzeczywistosci tak sie dzieje...tylko strasznie szybko i efekt jakby dioda swiecila caly czas...if wykonuje sie tylko raz i kod przechodzi dalej... Mozesz tak dopisac i powinno byc to co chcesz... if (digitalRead(6) == LOW) //Jeżeli przycisk 6 ( CZARNY ) jest WCIŚNIĘTY dioda nie chce zgasnąć, zmienia się delikatnie jasność świecenia ( DLACZEGO?? { digitalWrite(8, LOW); delay(50); //dopisz delay! }
    1 punkt
  11. No tak, chyba nie w pełni dotarł do mnie fakt, że jest płytka i jest programator...
    1 punkt
  12. Środowisko zainstalowane, płytka podłączona. Wszystko śmiga. Instalacja przeprowadzona na komputerze z Win10, wszystko odbyło się identycznie, jak zostało pokazane w artykule. Po drodze była wspomniana aktualizacja programatora. Jedyna uwaga, to po wgraniu pustego programu jednak na płytce coś się dzieje, dioda LD1 zaczyna migać na czerwono/zielono, a po wciśnięciu Terminate wraca do świecenia na czerwono.
    1 punkt
  13. Dziś dotarła paczuszka z zestawem, więc czas na nową przygodę. Podziękowania dla Forbota i autora kursu za taki fajny prezent w tym trudnym dla wszystkich czasie. Pozdrawiam.
    1 punkt
  14. Witam szacowne grono pozytywnie zakręconych ludzi! Na imię mi Arek. Na stare lata (52) dostałem "kręcioła" na temat RaspberryPi i chciałem pospełniać parę niespełnionych marzeń elektronicznych... Pozdrawiam serdecznie!
    1 punkt
  15. Moim zdaniem bardzo nie w porządku wobec nauczycieli i wykładowców jest wrzucanie wszystkich do jednego worka. Wbrew obiegowej opinii nauczyciele to (podobno) też ludzie i tak jak wszyscy inni są po prostu różni. Znajdziemy pasjonatów poświęcających całe życie i wysiłek oraz takich, którzy uczą bo muszą. Są też tacy, którzy bardzo się starają, a po prostu nie mają do tego talentu - ale kto nie zna przedstawiciela innego zawodu (chociażby programisty), kto wykonuje pracę, do której się zupełnie nie nadaje niech pierwszy rzuci rezystorem. Jednak krytykując wszystkich moim zdaniem bardzo krzywdzimy właśnie tych, którzy się starają. Druga sprawa to sama definicja wykształcenia - chociażby z wikipedii (https://pl.wikipedia.org/wiki/Wykształcenie). Wykształcenie to wydane przez uczelnię zaświadczenie o posiadanej umiejętności. Więc nawet nie chodząc na zajęcia powinniśmy mieć możliwość podejścia do egzaminu i zdania na same 5. Tylko mogłoby się okazać, że przy takim "bezdusznym" systemie uczelnie nie miałyby absolwentów. Bo niewykluczone, że wiele osób ma poziom wiedzy nieco odbiegający od własnych wyobrażeń (polecam poczytać o efekcie Dunninga-Krugera, który był już przywoływany na tym forum chyba więcej niż raz). Bardzo ciekawe jest natomiast to, że najwięcej do powiedzenia o zbędności i marności studiów mają osoby, które studiów nie skończyły. Oczywiście można mieć zdanie o czymś, czego się samemu nie próbowało, ale taka ocena może być jednak mocno stronnicza. Tym bardziej, że studia to nie tylko wykłady i egzaminy, warto pamiętać jeszcze o jasnej stronie życia, są więc imprezy, spotkania, przyjaźnie i czas na to wszystko, na co później zabraknie zarówno czasu jak i chęci. Więc może zamiast pędzić za pieniędzmi i błyskawiczną karierą, czasem warto po prostu postudiować
    1 punkt
  16. @WojProLbk Też dobrze wygląda. Ale mam 2 ważne uwagi. 1) Czy twoje śruby napędowe opierają się jedynie na nakrętce i na silniku? Nie masz żadnych łożysk podtrzymujących śruby? W ten sposób możesz szybko załatwić łożyska silników, nie są one za duże i nie są przeznaczone do przenoszenia sił osiowych, bo to są zwykłe łożyska kulkowe, a nie stożkowe. 2) Przy osi Z mogłeś odwrócić prowadnice tak jak u mnie. Czyli łożyska na wózku osi X, a prowadnice na osi Z. Konstrukcja jest wtedy bardziej kompaktowa, wózek nie ogranicza wysokości roboczej, brama nie musi być aż taka wysoka a tutaj widzę, że nawet oś Z jest tylko na 2 łożyskach - to za mało Jak już się obroniłeś i możesz coś zmienić to popraw te rzeczy
    1 punkt
  17. @Wrodarek Cóż... Pomiary dokładności gotowej frezarki mówią co innego Konstrukcja jest przede wszystkim bardzo sztywna. O naprężeniach przy spawaniu też już wpominałem w artykule umiejętne spawanie pozwoliło im przeciwdziałać, a ostateczne niedociągnięcia rozwiązało planowanie powierzchni, więc nie wiem w czym problem Mając jakieś zaplecze techniczne i umiejętności nie określiłbym tego jako nadmiar pracy, tylko trochę bardziej się trzeba było postarać niż przy jakiejkolwiek innej konstrukcji stalowej. Dla kogoś niemającego takich możliwości z pewnością profile alumuniowe są łatwiejsze, ale za to duuużo droższe. Materiał na konstrukcję ramy i bramy kosztował ok 200 zł. Przy profilach aluminiowych koszty rosną drastycznie jak się zacznie liczyć wszystkie nakrętki, łączniki i inne akcesoria a dodatkowo odpada możliwość przyspawania czegoś. Co do sztywności... noooo mocno bym się kłócił czy konstrukcja aluminiowa skręcana zapewni podobną sztywność co konstrukcja stalowa spawana. Do tego dochodzi jeszcze kwestia masy konstrukcji. Za lekka też nie może być bo przy frezowaniu zaczynają przeszkadzać rezonanse podczas cięcia i mają wpływ na jakoś powierzchni frezowania.
    1 punkt
  18. Witam, na pewno ten projekt kosztował Cię mnóstwo pracy. Ja nie zdecydowałbym się na konstrukcję stalową z profili zimno giętych. Ich niedokładności wymiarowe i naprężenia spawalnicze, na pewno nie zapewnią precyzyjnej obróbki na tak powstałej maszynie. Profile Al o różnych kształtach i przekrojach zapewniają co najmniej taką samą sztywność a pozwalają uzyskać większą dokładność. Pomyśl o tym w następnych konstrukcjach. Pozdrawiam, Darek
    1 punkt
  19. UWAGA: WPIS ZAWIERA OPINIĘ, KTÓRA MOŻE BYĆ KONTROWERSYJNA. CZYTASZ NA WŁASNĄ ODPOWIEDZIALNOŚĆ. Podam tutaj może swój przykład... Matura zdana 2017 rok, 77% z fizyki rozszerzonej, 74% z informatyki. Rodzina przymusza do studiowania - ja próbuję się uprzeć, że studia to zły wybór, bo zmarnuję czas... sam się prędzej wszystkiego nauczę, a jedyne co mi da uczelnia to papierek do podtarcia czterech liter. Oczywiście nikt nie chce mnie słuchać... Czym się to kończy? Po roku zrezygnowałem ze studiów i zacząłem pracować z klientem. Dostałem 3k na rękę, więc było całkiem przyjemnie. W miarę rozwoju kompetencji pensja rosła, ale potem postanowiłem zmienić trochę podejście i założyłem JDG. W takim przypadku wygodniej nam było przejść na rozliczenie B2B - 35zł net za godzinę plus premia od wydanych tytułów. 2.5% za programowanie tytułu i 2.5% za pomysł na tytuł. Czyli łącznie maksymalnie 5% szło wyciągnąć per tytuł Oczywiście niektóre tytuły miały premię 50%, ale to inna kwestia (bo te akurat były robione jako współpraca, a nie jako outsourcing, ale nie wchodźmy w rozliczenia). Potem (11.2020) postanowiłem nauczyć się elektroniki - kompletnie nic nie umiałem, zacząłem od czegoś relatywnie prostego - jedna pamięć SPI, i jeden mikrokontroler plus połączenie USB. Więcej można znaleźć szukając tematu "Moduł szyfrowania USB". Potem się zaczęło... SPI, UART, USART, pamięci równoległe, DDR'y i cały arsenał... Obecnie jestem w stanie zaprojektować całkiem sporo, aktualnie pracuję nad urządzeniem diagnostycznym dla konkretnych układów (wpięcie przez dedykowaną wtyczkę). Czy warto iść na studia by się nauczyć czegoś użytecznego w pracy? Nie. Większość technologii jest sprzed epoki dinozaurów, a wykładowcy nie będą wam pozwalać na samodzielne myślenie, tylko każą wpajać regułki z zajęć. Przykład? całka 1/cosx policzona jako całka sec(x), przecież jest wzór na taką całkę, ale nie, cytując "takiego wzoru nie było na wykładach". Trzeba było się jebać z dzieleniem jej na części (dostałem 0 pkt za zastosowanie wzoru). Studia są miejscem, gdzie starzy ludzie, którym wydaje się, że pozjadali wszystkie umysły niszczą psychikę młodych ludzi, którzy chcą się rozwijać. Nie zaprzeczam, że mają wiedzę, tylko ich wiedza jest zazwyczaj przestarzała i nie dopuszczają do siebie nowej i w tym tkwi problem edukacji w Polsce... Na uczelni technicznej potrzeba 4 profesorów by uruchomić projektor... (i to akurat prawda, chociaż u nas wystarczyło dwóch). Czy warto iść na studia? Tak. Pierwszy rok nauczy was jak szukać wiedzy i jak ją zgłębiać. Więcej użytecznej treści na studiach nie znajdziecie Jak już będziecie potrafili się uczyć, to nauczycie się sami w domu w czasie 5x krótszym i bez stresu o oceny, który znacząco utrudnia zdobywanie wiedzy. Po prostu sami sobie wprowadzicie system nagród - jeżeli coś uda wam się zrobić to np. bierzecie jedno ciastko / cukierka (patrz Prusa Research i ich żelki). STM, AVR, 8051 - polskie szkoły niestety mają znaczny problem z finansowaniem. Bardzo chętnie wymieniałyby technologię, ale ich nie stać. Za to uczelnie wolą brać do kieszeni niż ulepszać wyposażenie. Porównać można prawie każdą zagraniczną uczelnię do polskiej - na zagranicznych sprzęt rzadko kiedy ma więcej niż 3 lata, u nas bardzo często ponad 10... O szkołach nie wspominając (całe szczęście maturę pisałem po wymianie sprzętu w szkole, bo inaczej komputer miałby 1GB RAM i procesor 2 rdzenie 2.2GHz...) "Bo tak mu łatwiej" - I co z tego, że tak mu łatwiej. Jeżeli chce pracować na uczelni to powinien sam poszerzać swój zakres wiedzy dając dobry przykład, a nie uczyć studentów, że "tak jest łatwiej" i pracować z przestarzałą technologią... Ale to tylko moje zdanie.
    1 punkt
Tablica liderów jest ustawiona na Warszawa/GMT+02:00
×
×
  • 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.