Skocz do zawartości

Tablica liderów


Popularna zawartość

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

  1. 6 punktów
    Witam! Konsolka gotowa! Poniżej ostatni update: Czas oczekiwania na zamówione PCB wykorzystałem głównie na pracę nad oprogramowaniem: 1. Rozszerzyłem moją bibliotekę do obsługi TFT o wyświetlanie dowolnych fontów. Wystarczy wybrany Font skompresować napisanym przeze mnie skryptem Pytona i wkleić wynikową tablicę do kodu oprogramowania w C. Funkcja wyświetla tekst z antyaliasingiem, więc wszystkie litery i znaki wyglądają ładnie. 2. Dopracowałem funkcje odpowiedzialne za dzwięk 3. Tworzyłem animacje, grafikę oraz dodawałem ścieżkę dzwiękową do gry. Ostatecznie odebrałem zamówione PCB, więc od razu zabrałem się do składania. Wszystkie części już czekały. Składałem i testowałem konsolkę w następującej kolejności: Charger -> Układ zarządzania -> Przetwornica DC-DC -> Mikrokontroler i elementy towarzyszące-> Wyświetlacz, Klawiatura W porównaniu do prototypu bazującego na płytce NUCLEO, zastosowałem wersję STM32F103 z większą ilością pamięci. W międzyczasie ukończyłem też oprogramowanie. Gdy miałem już całą elektronikę, przyszedł czas na złożenie wszystkiego w całość. Poza przyciskiem krzyżykiem, na tym etapie, nie musiałem już modyfikować żadnych innych elementów obudowy. Przycisk okazał się trochę za bardzo dopasowany i naciskając np strzałkę w górę, jednocześnie wciskały się inne kierunki. Problem łatwo dało się rozwiązać drukując poprawiony element. Ostatecznie konsolka wygląda następująco: A tu filmiki z działania konsolki: 1. Intro gry 2. Game play: 3. Animacje na Game Over PODSUMOWANIE: Ostatecznie jestem zadowolony z projektu. Wiele się przy nim nauczyłem i przy okazji powstała fajna zabawka dla synka. Nie wszystko poszło jednak idealnie. Przy montażu okazało się że mam błąd w schemacie, co przełożyło się na błąd na płytce. Na szczęście dało się to załatwić jednym mostkiem i jednym cięciem ścieżki. Zaprojektowałem też połączenie USB (pull up D+ z opornikiem do 3,3V itp...). Ostatecznie nie udało mi się jednak połączyć z mikrokontrolerem przez USB. Urządzenie było wykrywane, ale cokolwiek robiłem nie dało się zainstalować poprawnych sterowników. Gdy zamówiłem lepszy STM32F103, okazało się że wyższe wersje różnią się od tej zainstalowanej na NUCLEO (najuboższa). Nie tylko mają więcej pamięci ale też DAC, I2S, sprzętową obsługę kart SD itd... funkcje których tak mi brakowało. No nic... już było za późno na zmianę projektu. Pozdrawiam, Marek
  2. 5 punktów
    Stacja pogodowa z wysyłką danych na stronę WWW Od paru tygodni testuję stację pogodową którą udało mi się zmontować w ostatnim czasie. Stacja oparta o sterownik Lan Kontroler V2.5 firmy Tiny Control. Jest to kompaktowe rozwiązanie zawierające: 5 wejść analogowych: pomiar temperatury, napięcia i prądu, oraz innych wielkości fizycznych, wejście cyfrowe w standardzie 1wire, wejście cyfrowe do obsługi czujnika temperatury i wilgotności DHT22, 4 wejścia logiczne: jako czujnik stanu do monitoringu, jako licznik impulsów z licznika energii, 1 przekaźnik (NZ, NO, C), 1 wyjście tranzystorowe, 4 wyjścia do załączania przekaźników oraz pomiar temperatury i napięcia zasilania na płytce. Do sterownika podłączyłem następujące czujniki: temperatury/wilgotności/ciśnienia - wszystko w jednym: CZUJNIK BME280/SPLITER 1WIRE/ RJ12 Grove - czujnik opadów / wody DFRobot Gravity - analogowy czujnik wilgotności gleby - odporny na korozję DFRobot Gravity - czujnik światła ultrafioletowego UV analogowy Miernik prędkości wiatru (chiński, zamówiony na aliexpress) Podłączenie Urządzenie Lan Controler wymaga podłączenia czujników do odpowiednich wejść analogowych/cyfrowych. Czujnik BME280 podłączany jest do złącza wire1. Po zmontowaniu całość prezentuje się następująco: Oprogramowanie Sterownik Lan Controler posiada wbudowany serwer www i panel zarządzania parametrami sterownika oraz wejściami: dodatkowo posiada możliwość wysyłki danych do serwerów protokołem HTTP, taką opcję zbierania danych umożliwia np. serwer Thing Speak (https://thingspeak.com/) ThingSpeak to aplikacja i interfejs API dla urządzeń IoT (opensourcowe) do przechowywania i pobierania danych z urządzeń elektronicznych za pomocą protokołu HTTP i MQTT. tak wyglądają dane z mojej stacji pogodowej na platformie Thinspeak: dzięki opcji zagnieżdżania poszczególnych widgetów z ThingSpeak na innych stronach, zrobiłem własną zawierającą kluczowe parametry pogodowe: Rozwój: w planie dodatkowy czujnik - przepływu wody, mierzący ilość opadów, planuję oprzeć to o czujnik przepływu YF-S402, natomiast przed zimą czujnik zanieczyszczenia powietrza. Oczywiście wszystkie dane będą publikowane na stronie WWW automatycznie.
  3. 5 punktów
    Moje pytanie, czy już wiesz cokolwiek na temat uczenia maszynowego? Jeśli nie, polecam zacząć od podstaw - kursów z Machine Learning jest dość sporo. Sprawa numer dwa - zdecydowana większość (jak nie wszystkie) dobrych materiałów jest po angielsku, więc polecam też skupić się na rozwoju tej umiejętności Jeśli chodzi o same materiały: - kaggle: (od podstaw Pythona, przez ML, wizualizacje, inzynieria cech i trochę o deep learning), poza tym jest to portal, na którym jest sporo innych ciekawych rzeczy jak na przykład różne zadania, w których można się sprawdzić - klasyk od Andrew Ng z uczenia maszynowego: w zasadzie jest to kurs z portalu Coursera - sieci konwolucyjne, jeden z klasyków z Uniwersytetu Stanforda Powiedzmy, że to są takie podstawy. Stąd do aplikacji uczenia maszynowego do robotyki jeszcze daleko. Ale... istnieje już trochę projektów i platform, które wykorzystują te rzeczy i analizując te projekty można się sporo nauczyć. - https://f1tenth.org/learn.html - zawody autonomicznych samochodów w skali 1/10, sprzęt jest ustandaryzowany (mniej więcej), zadaniem zawodników jest praca nad algorytmami - donkeycar: autonomiczne auto na bazie RaspberryPI - DEEPDRIVE.PL sporo ciekawych postów na swoim blogu ma też Karol Majek Inne tematy, które mogą być dla Ciebie interesujące w przyszłości to np. Reinforcement Learning. Metody te pozwalają na uczenie się agenta (twojego modelu), jak sterować układem. Aczkolwiek, sensowne wyniki jak na razie możesz uzyskać tylko w symulacji (polecam, np. OpenAI gym). Z mojego doświadczenia mogę powiedzieć tyle, że warto na początek skupić się na tym (1) jak działa samo uczenie maszynowe, (2) jak działa np. TensorFlow, Keras albo PyTorch. (3) Spróbuj wytrenować sieć, która jest w stanie rozpoznać coś na obrazku i mniej więcej określić pozycję. Wówczas możesz spróbować wykonać prostego line followera poprzez prostą kontrolę silników w zależności od położenia obiektu na obrazie. AI to temat rzeka. Pytanie, czego konkretnie potrzebujesz Najprostsze rzeczy, które może zrobic każdy to integracja wizji komputerowej albo audio z jakimiś kontrolerami. Zdecydowanie wyższa szkoła jazdy to jakieś AI kontrolujące zachowania "wyższego poziomu", ale tutaj jeszcze nie doszedłem. Jak na razie to w ubiegłym roku z kolegami braliśmy udział w zawodach autonomicznych dronów (AIRR). Hardware był ustalony i należało napisać autopilota, który będzie sterować dronem wykorzystując kamery i IMU. Generalnie polegało to na tym, że brałeś obraz z kamer, szukałeś obiektów i zwracałeś jakieś liczby, a dalej to już jakieś klasyczne algorytmy, które robiły fuzję, a następnie sekcja odpowiadająca za nawigację. Mam nadzieję, że trochę pomogłem.
  4. 5 punktów
    Hej! W tym artykule postaram się pokazać krok po kroku jak przygotować lampkę sterowaną mową, wykorzystując aplikację Wroob na smartfonie oraz Arduino. Czym jest projekt Wroob pisałem tutaj: Wroob - Czyli jak zaprogramować swój telefon Projekt może wymagać podstawowej wiedzy z języka Python i minimalnej znajomości systemu Wroob. Zachęcam do wcześniejszego zapoznania się z poprzednim artykułem. Można też skorzystać z kursów na naszym kanale YouTube - tłumaczymy tam jak zrealizować inne ciekawe projekty. Własny moduł na Arduino Najpierw zacznijmy od sprzętu, ja podłączyłem swoją płytkę Arduino UNO z modułem przekaźników, a do tego oprawkę żarówki podłączoną do gniazda sieciowego. Sposób podłączenia widoczny jest na obrazku poniżej. Pamiętajcie, aby zachować szczególną ostrożność pracując z napięciem sieciowym. Podobny efekt można otrzymać podłączając diodę LED do Arduino, nie wymaga to przekaźnika i jest znacznie bezpieczniejsze. W dalszej części artykułu nie będzie miało znaczenia, z której opcji korzystacie. Następnie musimy zmienić nasze Arduino w moduł systemu Wroob. Wykorzystamy do tego celu bibliotekę dostępną pod adresem https://github.com/wroob-io/arduino-wroobimp. Można ją też pobrać za pomocą managera bibliotek w Arduino IDE Biblioteka arduino-wroobimp posiada przykładowy program z którego będziemy korzystać: WroobImpGpio.ino. Znajdziecie go w Arduino IDE -> File -> Examples -> WroobImp -> WroobImpGpio. W programie WroobImpGpio inicjalizujemy pin 13 jako wyjście, a 14 jako wyjście. Jak pamiętacie, naszą lampę mamy podłączoną do pinu 13. #define PIN_OUT 13 #define PIN_IN 14 // initialize used GPIOs pinMode(PIN_OUT, OUTPUT); pinMode(PIN_IN, INPUT); Następnie uruchamiany jest protokół systemu Wroob. We Wroob moduły rozmawiają za pomocą komend w formacie JSON. Reszta kodu związana jest przede wszystkim z obsługą protokołu komunikacyjnego. // initialize Wroob protocol wroob.begin(my_callback); Jeżeli ktoś jest zainteresowany jak przebiega komunikacja między modułami w systemie Wroob można użyć programu com_imp_sniffer.py aby “podsłuchać” komunikacje między modułami. Program można znaleźć w Panelu Użytkownika Wroob w katalogu examples\hardware_projects. Jak jesteście ciekawi, chętnie opiszę protokół w osobnym poście. Program WroobImpGpio realizuje dwie funkcje ustawia oraz odczytuje wartość pinów za pomocą komend “SetPin” oraz “GetPin”. Ustawia stan na pinie 13 gdy otrzyma komendę “SetPin” lub odczytuje stan z pinu 14 gdy otrzyma komendę “GetPin”. Na tym etapie możemy uruchomić aplikację w Wroob na telefonie i przejść do panelu użytkownika w którym będziemy wykonywać resztę pracy. Jeśli nie wiesz jak to zrobić obejrzyj film Szybki start z systemem Wroob. Po podłączeniu modułu do telefonu w zakładce “Moduły” Panelu Użytkownika Wroob pojawi się jego graficzny widget. Do dalszej pracy potrzebujemy nazwy modułu w systemie. Nazwa widoczna jest w górnej części widgetu, w moim przypadku to 'eam001'. Początkowa nazwa nadawana jest automatycznie, składa się z typu modułu oraz kolejnych liczb. Możecie również ustawić własną nazwę, nie powinna się ona jednak powtarzać w systemie. Obsługa modułu Arduino Na początku klasę utwórzmy naszego własnego modułu, pozwoli nam to z niego korzystać w wygodny sposób w naszych programach. Najprostszą klasę modułu możemy zdefiniować w sposób przedstawiony poniżej. Korzystamy tutaj z wcześniej przygotowanej uniwersalnej klasy Module i tworzymy jedną funkcję set_pin() do obsługi komendy “SetPin” from wroob.modules.module import Module class Eam(Module): def __init__(self, moduleName): super(Eam, self).__init__(moduleName) #set_pin wysyła komendę "set_pin" do naszego modułu def set_pin(self, value): params = {"value":value} self._send_cmd('SetPin', params) W przypadku programu WroobImpGpio wgranego na Arduino można też skorzystać z wcześniej przygotowanej klasy Eam. Znajdziecie ją w katalogu examples\hardware_projects\example_arduino_module. Program korzystający z naszej klasy wygląda następująco: from eam import Eam #import klasy Eam z pliku eam from time import sleep eam = Eam ("eam001") #stworzenie obiektu eam powiązanego z modułem o nazwie “eam001” while(True): sleep(1) eam.set_pin(1) #użycie metody set_pin() sleep(1) eam.set_pin(0) Do konstruktora klasy Eam przekazujemy nazwę naszego modułu 'eam001' tworząc jego obiekt. Dzięki temu w programie możemy korzystać w prosty sposób z funkcji naszego modułu przez odwołanie jego do obiektu. Program jest czytelny i łatwy do rozbudowania. Sterowanie mową Kolejny etap to już czysta przyjemność. Wykorzystamy moduł rozpoznawania mowy (SRM) aby sterować naszą lampą. Aby go uruchomić należy przejść do zakładki “Moduły” a następnie wybrać z listy “Moduły w Panelu Użytkownika”. Moduł SRM wymaga mikrofonu podłączonego do komputera. W kolejnym etapie możemy rozbudować program korzystający z naszego nowo utworzonego modułu na Arduino o funkcje modułu SRM from eam import Eam from wroob.modules.srm import Srm #import klasy modułu Srm from time import sleep eam = Eam("eam001") srm = Srm("srm001") def srm_callback(speech): #funkcja reagująca na rozpoznaną mowę print(speech) if "zapal światło" in speech: eam .set_pin(0) elif "zgaś światło" in speech: eam .set_pin(1) srm.start_speech_reporting(srm_callback) #rozpoczęcie rozpoznawania mowy while(True): sleep(60) Efekt prezentuje się następująco: Więcej na temat rozpoznawania mowy i możliwości modułu SRM można się dowiedzieć na naszym kursie video Chatbot. Jeżeli ktoś nie chce przechodzić całego procesu, gotowe programy można znaleźć w zaktualizowanej właśnie aplikacji w folderze examples\hardware_projects\example_arduino_module Bez wprowadzania zmian w kodzie Arduino wszystko od razu powinno działać
  5. 4 punkty
    Witam! To mój pierwszy wpis w dziale DIY. Projektem jest (a właściwie dopiero będzie) mini konsolka do gier na STM32F1. Robię ten projekt dla mojego 3-letniego synka. Docelowo będę mu wgrywać na nią różne napisane przeze mnie gry, ale na początek zacznę od klasyki, czyli gra w węża Robiłem już podobny projekt przy okazji kursu SMT32 na Forbocie, więc szybko powinienem napisać niezbędny kod. Tym razem ma to być gotowe urządzenie które bez problemu będzie mógł obsłużyć 3-latek. Założenia projektu: 1. Mikrokontroler STM32F1 2. Ekran TFT kolorowy 240x320 3. Zasilanie bateryjne LiPo z ładowaniem przez gniazdo USB (więcej szczegółów w moim wątku w dziale Zasilanie - szczególnie ostatni mój post) 4. Obudowa w całości drukowana w 3D 5. Żadnych gotowych modułów. Własny projekt PCB i własny montaż. 6. Klawiatura: Krzyżyk, przycisk A, przycisk B oraz przycisk POWER, jak w starych Game - Boy'ach 7. Dzwięk: Nad tym jeszcze nie myślałem, brak I2S oraz DACa na mojej płytce Nucleo trochę utrudnia sprawę. Może będzie coś na Timerach i PWM. Zobaczymy. Teraz po kolei. Pierwsze co musiałem zrobić to ogarnąć wyświetlanie na TFT. Zakupiłem trochę w ciemno kilka wyświetlaczy 2,8" na ILI9341. Mój brak doświadczenia z TFT natychmiast się zemścił. Po odbiorze przesyłki okazało się że obsługa SPI wcale nie jest oczywista i jestem skazany na 16-bitową magistralę. Nie znalazłem nigdzie driverów na STM32 do sterowania tym kontrolerem przy takim połączeniu, ale znalazłem kilka projektów na GitHub'ie gdzie było sterowanie przez magistralę 8-bitową. Postanowiłem więc na podstawie tych projektów napisać własne drivery i procedury wyświetlania podstawowych kształtów. W trakcie prac nad optymalizacją wyświetlania okazało się że jednak 16-bitowa magistrala to doskonały pomysł i jest 4-krotnie szybsza od 8-bitowej. Dlaczego? Już tłumaczę: Gdy używa się 8-bitowej szyny danych to wysłanie piksela wygląda następująco (już po ustawieniu adresu): - Ustawiamy pierwsze 8 bitów koloru - WR strobe - czyli szybka zmiana linii WR na 0 i powrót 1 - Ustawiamy kolejne 8 bitów koloru - WR strobe - czyli szybka zmiana linii WR na 0 i powrót 1 I powtarzamy do czasu wypełnienia zaadresowanego okienka. Czyli na każdy piksel przypadają 4 kroki. Gdy używamy 16-bitowej magistrali - wygląda to następująco: - Ustawiamy 16 bitów koloru - WR strobe - czyli szybka zmiana linii WR na 0 i powrót 1 I powtarzamy do czasu wypełnienia zaadresowanego okienka. Czyli na każdy piksel przypadają 2 kroki. Ale przecież pisałem że jest 4 razy szybciej, a tu wychodzi że 2 razy No więc łatwo można zauważyć, że przy 16 bitach raz ustawiony kolor na linii danych możemy zostawić do czasu aż będziemy musieli użyć innego koloru. Więc jeżeli mamy kilkaset pikseli do wypełnienia jednym kolorem to raz go ustawiamy, a później już tylko WR strobe tak długo jak potrzebujemy Czyli realnie wykonujemy tylko jeden krok. Zaimplementowałem to w moich driverach i rezultaty były doskonałe. Na tyle dobre że odpadła mi konieczność posiadania pamięci pod bufor klatki. Wszystko wyświetla się błyskawicznie: Aktualnie mogę wyświetlać do 8Mpix/s, co teoretycznie pozwala odświeżyć ekran 240x320 ponad 100 razy na sekundę na STM32F1 taktowanym 64MHz. Czyli mogę jeszcze podnieść tą częstotliwość do 72 MHz i jeszcze zwiększyć transfery. Niestety chwilowo mam odcięty programator od płytki Nucleo i muszę kożystać z wewnetrznego oscylatora który pozwala rozkręcić mikroprocesor do 64MHz. Kolejnym problemem z którym musiałem się zmierzyć to mała ilość flash na grafiki do gier. Jak łatwo policzyć jedna pełnoekranowa grafika to 153600 bajty, a mam tylko 128k do dyspozycji. A jeszcze musi się zmieścić program. Rozwiązaniem problemu jest kompresja. Tu znów musiałem od zera napisać program do kompresji grafiki który spełniałby moje wymagania. Kompresor został napisany w Pythonie. A szybki dekoder zaimplementowany w C w driverach na STM32. Pisałem program praktycznie od zera wg mojego pomysłu. Otóż dzieli on grafikę na bloki o jednolitych kolorach, a ich metadane zapisuje w binarnym pliku wyjściowym, albo w pliku C. Bloki są następujące: pozioma linia, pionowa linia, prostokąt. Pojedynczy piksel to pozioma linia o długości 1. Kompresja odbywa się przez rozkład grafiki na takie bloki, a następnie zapisaniu ich parametrów do pliku wyjściowego. Procedurę dekompresji zaimplementowałem w driverach do wyświetlacza, a każdy blok łatwo można wysłać bezpośrednio do pamięci ekranu, gdzie obraz zostaje odtworzony. Kolejną funkcją którą zaimplementowałem w kompresorze jest możliwość kodowania różnicy pomiędzy dwoma grafikami. Tzn jeżeli robię animację to program kompresuje tylko piksele które różnią dwie klatki. Poniżej proces odtwarzania obrazka na wyświetlaczu w zwolnionym tempie: Skoro miałem już ograne wyświetlanie grafiki, przyszedł czas na prototypowanie konsoli i pisanie samego kodu gry Aktualnie moje stanowisko pracy wygląda następująco: Sama gra jest na etapie tworzenia grafiki. Na razie mam animacje na intro: To tyle na dzisiaj. Wraz z postępami będę aktualizował ten wątek. Pozdrawiam, Marek
  6. 3 punkty
    Witam! Kolejny update. Eksperymentowałem trochę z obsługą wolnych obrotów. Pocztałem trochę na temat cogging torque (okazało się że po polsku nazywa się to moment zaczepowy ). Przetestowałem teorię z minimalną długością wektora i niestety nie zadziałała. Okazało się że gdy zmieniłem sposób sterowania silnika (w momencie gdy zmniejszany był kąt wyprzedzenia, a wektor miał stałą wartość), to PID sobie nie radził. Nic dziwnego w końcu był ustawiany dla sterowania silnikiem przy stałym kącie wyprzedzenia równym 90 stopni, oraz zmiennej długości wektora. Przy odwrotnej sytuacji współczynniki kp, ki, kd już nie pasowały. Musiałbym pewnie wprowadzić oddzielne współczynniki dla obu sytuacji. Na razie zarzuciłem walkę z momentem zaczepowym bo nie było to celem projektu. Wprowadziłem pomiar prądu silnika. Użyłem do pomiaru rezystora bocznikowego 0,1 ohm, oraz wzmacniacza x20 V/V (INA2181A). Wyjście wzmacniacza podłączyłem do ADC mikrokontrolera. Dodałem też prosty interfejs przez UART. Aktualnie można wydawać następujące komedy: 1. "torque [wartość]" - uruchamia tryb stałego momentu, wartość od -255 do +255 W tym trybie długość wektora jest zawsze stała i nie zależy ani od pozycji, ani od prędkości czy obciążenia 2. "speed [wartość]" - uruchamia tryb stałej prędkości, wartość to ilość obrotów/minutę ze znakiem. 3. "pos [wartość]" - uruchamia tryb stałej pozycji wału, wartość 0 do 360 stopni. 4. "current [wartość]" - ustawia makymalny prąd silnika. Ograniczenie to ma priorytet nad wszystkimi trybami pracy kontrolera. W międzyczasie spaliłem też mikrokontroler na płytce nucleo gdy przez nieuwagę do ADC zamiast wyjścia ze wzmacniacza podłączyłem jedną z linii zasilania silnika Na szczęście wlutowanie nowego układu załatwiło sprawę i płytka znów działa Poniżej filmik z działania ograniczenia prądu silnika: Pozdrawiam, Marek
  7. 3 punkty
    Cześć wszystkim, Mam na imię Marek. Przez ostatnie kilka lat byłem tylko okazjonalnym czytelnikiem forum. Teraz to pewnie się zmieni, ponieważ postawiłem przed sobą nowe wyzwanie. Jest nim zdobycie możliwie dogłębnej wiedzy o uC z rodziny STM32. Mam wykształcenie elektroniczne i długoletnie doświadczenie w projektowaniu i programowaniu układów sterowania opartych na 8 bitowych AVR. Urządzenia programuję w C, C++ oraz Delphi na PC-ta. Teraz będę przecierał nowe ścieżki związane z STM-ami. Na początek poszedł przygotowany przez Wasz zespół, kurs bardzo pomocny przy stawianiu pierwszych kroków. Pozdrawiam Marek
  8. 3 punkty
    Cześć, dzisiaj wykonałem próbę podłączenia prostej kamery VGA (sensor CMOS) do zestawu FPGA firmy QMTECH z Artix-7 (chip FPGA: XC7A100T-2FGG677i). Tutaj jest link do tego zestawu: https://pl.aliexpress.com/item/4000170042795.html?spm=a2g0o.productlist.0.0.1bbc3a488cWayC&algo_pvid=b8e2d6de-11a7-4045-be1d-dc82c5229b85&algo_expid=b8e2d6de-11a7-4045-be1d-dc82c5229b85-3&btsid=39edaf33-09cc-4522-882b-0168a91a733d&ws_ab_test=searchweb0_0,searchweb201602_4,searchweb201603_55i Zestaw ten kupiłem jakiś czas temu i postanowiłem go użyć w tym projekcie ze względu na dużą ilość zasobów - szczególnie dużą ilość BRAM 4,660Kb (potrzebna na frame-buffer). Pewnie łatwiej i sensowniej byłoby podłączać jakąś kamerę z interfejsem MIPI (i lepszym sensorem), ale nie posiadam żadnego zestawu FPGA, który by miał wbudowany taki interfejs Jest to moja pierwsza próba podłączenia jakiejkolwiek kamery do zestawu FPGA. Wybrałem tanią kamerę "OV7670" (sensor firmy Omnivision) - tutaj link do sklepu (chińskiego): https://www.banggood.com/Wareshare-OV7670-Camera-Module-CMOS-Acquisition-Board-Adjustable-Focus-300000-Pixel-p-1478355.html?rmmds=search&cur_warehouse=CN Tutaj link do datasheet do tego sensora: https://www.voti.nl/docs/OV7670.pdf Wybrałem projekt ze strony "FPGA4Student" ponieważ z kilku branych pod uwagę wydał mi się najprostszy:był https://www.fpga4student.com/2018/08/basys-3-fpga-ov7670-camera.html Projekt był zrobiny dla zestawu FPGA "Basys 3" z Artixem-7 (XC7A35T-1CPG236C) który posiada tylko 1800 Kb wewnętrznej pamieci BRAM - stąd frame-buffer obsługuje tylko max. rozdzielczość 320x240. Można by go też odpalić na zestawach "Artix-7 35T Arty" lub "Digilent Cmod At-35T" - tutaj linki do tych zestawów: https://kamami.pl/zestawy-uruchomieniowe/560134-artix-7-35t-arty-zestaw-ewaluacyjny-dla-fpga-artix-7.html https://kamami.pl/zestawy-uruchomieniowe/562401-digilent-cmod-a7-35t-modul-uruchomieniowy-z-fpga-artix-7-410-328-35.html Ale wracając do projektu - moja płytka FPGA firmy QMTECH (XC7A100T) nie posiada wyjściowego interfejsu VGA (ma HDMI które wypróbowałem i które działa dobrze), stąd wynikła potrzeba zbudowania go samemu. Wybrałem prosty interfejs (12) rezystorów wzorując się na układzie z zestawu "Basys 3". Tutaj schemat tego interfejsu: Zmontowałem do na płytce prototypowej (potrzebne jest gniazdo VGA 15 pinowe). Tak wygląda cały układ z kamerą, interfejsem VGA (na zielonej płytce) i zestawem FPGA QMTECH. A tu obraz na monitorze (tylko składowa niebieska): Jak widzicie próba nie zakończyła się pełnym sukcesem obraz jest o rozdzielczości 320x240 pikseli (i tak miało być) natomiast jest widoczna na ekranie tylko składowa niebieska.Podejrzewam, że błąd jest na zielonej płytce z interfejsem VGA - bo była ona dzisiaj "na szybko" polutowana a nie była najpierw przetestowana (może pomyliłem się przy gnieździe VGA). Zamieszczam tu pełen projekt dla Vivado 2018.3. Plik constraints dla mojej płytki QMETCH, ale na oryginalnej stronie projektu mo\zna pobrać pełen projekt dla "Basys 3". basys3_ov7670_v1.zip W najbliższym czasie zamierzam usunąć błędy z interfejsu VGA oraz zwiększyć pojemność frame-buffer'a do pełnej rozdzielczości VGA (na mojej płytce powinno wystarczyć pamieci BRAM w układzie FPGA). Zamieszczam projekt, bo może ktoś będzie także chciał spróbować podłączyć taki model kamery do układu FPGA. Zachęcam wszystkich do własnych prób z układami FPGA, bo w dziale "Układy programowalne" na Forbocie ostatnio bardzo mało się dzieje. Pozdrawiam
  9. 3 punkty
    Witam ponownie! Update z prac Zadowolony z siebie, gdy udało mi się wprawić w obroty silnik, postanowiłem posprawdzać jak wyglądają zakłócenia w układzie. Powiem tylko delikatnie że nie byłem zadowolony gdy zobaczyłem na oscyloskopie co się dzieje na linii 3.3V Miałem dużo szczęścia że nie uszkodziłem nowego NUCLEO, bo przepięcia dochodziły do 5.5v. Trochę poczytałem co mogę zrobić. Oczywiście beztroskie łączenie mas układów było przyczyną. Skończyło się na rozłożeniu i ponownym złożeniu całego układu, tym razem z poprawnym połączeniem mas (topologia gwiazdy itd..). W końcu odebrałem też encodery magnetyczne. Wydrukowałem podstawkę do testowania silnika i zmontowałem wszystko w całość. Szybka kalibracja wszystkiego i mam silnik sterowany metodą FOC. Od razu widać było różnicę w działaniu: - Moment obrotowy jest płynny bez znacznych skoków (jednak minimalne wahania da się wyczuć) - Prąd zmalał o rząd wielkości (dla tych samych obrotów bez enkodera miałem 200mA, teraz jest to około 20mA) - Silnik przestał się nagrzewać Poniżej efekt prac: Jak widać na powyższym filmiku, program cały czas stara się trzymać optymalny kąt 90 stopni pomiędzy wektorem pola od magnesów stałych a wypadkowym wektorem pola od uzwojeń. Przy takim przesunięciu uzyskujemy największy moment obrotowy. Kolejnym krokiem będzie przejście z modulacji SPWM na SVPWM. O tym czym jest SVPWM można poczytać tutaj: https://www.switchcraft.org/learning/2017/3/15/space-vector-pwm-intro Pozdrawiam, Marek
  10. 3 punkty
    Ściślej: one nic nie dają, jedynie informują resztę świata, że dany osobnik taką wiedzę posiada i w razie wypadku nie może się przed sądem tłumaczyć "ja nie wiedziałem"
  11. 2 punkty
    Tak, projektujemy i produkujemy m.in. układy elektroniki bezpieczeństwa ruchu drogowego, np. sekundniki na skrzyżowaniach, sygnalizatory akustyczne na przejściach dla niewidomych, przyciski zgłoszeniowe dla pieszych, itp. Wszędzie tam siedzą 8 bitowe AVR-y lub PIC-e.
  12. 2 punkty
    Przeglądam Twoje aktualizacje i muszę Cię pochwalić za profesjonalne podejście do tematu. Są eksperymenty, wnioski i rzeczowe poprawki. Nie łapiesz się od razu za sam cel tylko pomału do niego brniesz (tu takie nawiązanie do podejścia, które ostatnio się w wielu miejscach panoszy - Chcę bibliotekę Arduino która zrobi wszystko...) Mało jest ludzi z takim podejściem, także tak trzymaj
  13. 2 punkty
    @ceiem super, rysowanie kilku wykresów działa i logika kosatki do gry też jest Możesz jeszcze popróbować zapisać program tak, żeby po przytrzymaniu przycisku nie losowało cały czas nowych liczb - w zwykłej grze pewnie by to było uciążliwe ale tak to super, fajnie że robisz zadania dodatkowe!
  14. 2 punkty
    Historyczne ceny z zakończenia dnia znajdziesz na stooq. A co to samej predykcji, w internecie jest sporo tutoriali gdzie ktoś robi to zwykle na LSTM i amerykańskiej giełdzie, albo swego czasu BTC. Na przykład https://www.kaggle.com/humamfauzi/btc-price-prediction-using-lstm Jako ciekawostka spoko, ale w ten sposób nie przewidzisz cen.
  15. 2 punkty
    Skoro cewka jest na prąd zmienny to czemu usilnie szukasz przetwornicy DC=>DC? 1. Opcja Skoro masz stycznik, z cewką na "nietypowe" napięcie, to najprostszym wyjściem z impasu jest rozebranie stycznika i wymianie cewki na nową z napięciem pracy ~230V. Oczywiście też na prąd zmienny musi być nowa cewka, jak stara była na taki prąd !! Inaczej, spalisz nową cewkę. Trochę roboty, ale notabene najmniejszy koszt, i nie zajmuje ci nic dodatkowego miejsca, jak w opcji 2. 2. Opcja Do sterowania obecną cewką, potrzebujesz 50V prądu zmiennego. No to zamiast kombinować wystarczy zdobyć transformator 230/400V (co wygodniej) na 50V i już masz potrzebne napięcie sterowania. STEROWANIE stycznikiem. dla obu opcji notabene. Można oczywiście, elektronicznie przez opto-triaka typu MOC + triak malej mocy, ale prościej zastosować sobie dodatkowy tzw. przekaźnik interfejsowy z cewką na 5V który już bez problemu wysterujesz z Arduino, i jego stykiem sterować cewkę stycznika.
  16. 2 punkty
    Niestety oba sposoby nie pomogły ale zauważyłem że taśma z przewodami od kamery była poluzowana i bez problemu wyszła z gniazda. Może mocowanie było poluzowane albo zatrzask? Czy jest możliwe że doszło do uszkodzenia kamery? EDIT: poprawiłem mocowanie taśmy i po tym zauważyłem, że nie domknąłem zatrzasku od zewnętrznej strony. Poprawiłem i już działa dobrze. Dzięki za pomoc. Specjalnie założyłeś konto, żeby pomóc innym w takiej sprawie? Szanuję
  17. 2 punkty
    Witam szanowne grono:) mam na imię Piotr, interesuje się elektroniką i astrofotografią, od niedawna również programowaniem, dopiero startuje i na pewno będę miał mnóstwo pytań do doświadczonych członków forum:))
  18. 2 punkty
    Nie chodzi o X i Y, ale o dryft kąta (X i Y nie mają z tym nic wspólnego). Chciałeś aby nieruchomy miernik nie pokazywał że się kręci, prawda? Więc niestety - metodą prób i błędów. Pamiętaj tylko o jednej ważnej sprawie: żyroskop nie pokazuje jakichś tam kątów, ale prędkość kątową, a program na tej podstawie oblicza o ile "przekręcił się" miernik. Niestety - Ziemia też się kręci, i to całkiem szybko, dlatego prędkość kątowa będzie dla nieruchomego miernika zawsze różna od zera - i tę wartość musisz znaleźć. Automatyczna kalibracja nie jest niestety zbyt dokładna...
  19. 2 punkty
    @Gieneq aaaa teraz rozumiem. Dziękuję bardzo Zamówiłem wczoraj zestaw do drugiej części i działam dalej... Świetny kurs.
  20. 2 punkty
    Hmmm, niestety nie wiem, jakie Kolega @Koper90 ma doświadczenie i co dokładnie chce zrobić, ale aby wykonać pierwsze ruchy, poruszanie robotem do zadanej pozycji XZY, czyli Inverse Kinematic i tak dalej, w zupełności wystarczy Arduino, które programowany w czymś-C-podobnym jest bardzo intuicyjne i nawet od zera, podłączenie TB6560 i wysterowanie silnika krokowego to max dzień nauki Oczywiście jednoczesne sterowanie większą ilością stepper'ów (ile osi?) będzie trochę trudniejsze, ale Arduino bez problemu da radę - jeśli chcesz, zobacz moje dwa projekty: https://forbot.pl/forum/topic/16601-copernicus/ i https://forbot.pl/forum/topic/18145-delta-astra/ - były one wprawdzie oparte na Nucleo, ale Arduino UNO (lub Mega, tak na zapas) bez problemu to obsłuży. Jeśli chodzi o Python, proszę nie rezygnować, gdyż przyda się na 100%, np. w dalszej części projektu będzie można dodać RaspberryPi, jakiś prosty system wizyjny, podpięcie pod Ethernet, bo na hali produkcyjnej żaden robot w pojedynkę nie pracuje czy panel HMI celem obsługi. Ewentualne spięcie Arduino z Raspberry Pi to temat na dłuższą rozmowę, można po USB lub UARTem na przykład, ale wydaje mi się, że lepiej takie sterowanie "sprzętowe" realizować na Arduino lub innym mikrokontrolerze, potem tą warstwę wyższą można "nadbudować", i tu Python będzie znakomity. To oczywiście tylko moje prywatne zdanie, ale ja zacząłbym od Arduino i jego C-podobnego języka. Pozdrawiam, wn2001 PS Z tego, co Kolega napisał wnioskuję, że jest mechanikiem? Napisałby coś Kolega więcej o tej drukowanej 3D przekładni cykloidalnej?
  21. 2 punkty
    Dziękuję za szybką odpowiedź. Być może coś mi wcześniej umknęło, ponieważ po zakomentowaniu dtoverlay=vc4-fkms-v3d rozdzielczość VNC zmieniana jest wedle mojej woli (tzn. ustawień w config.txt).
  22. 2 punkty
    Na początek najlepiej poszukać jakiegoś stażu lub praktyk. Ze względu na to, że nie jest to pełnowymiarowa praca i nie masz doświadczenia, nie ma co liczyć na wysokie wynagrodzenia, ale raczej chodzi o naukę i zdobycie doświadczenia. Większość pracodawców patrzy na projekty, więc warto zrobić coś w stylu portfolio z krótkimi opisami. Skończyła się sesja i wiele firm rusza z rekrutacją na praktyki studenckie, ale nie trzeba być koniecznie studentem, żeby się na takie dostać.
  23. 2 punkty
    @KubaCz, a jakie masz doświadczenie? Możesz pochwalić się jakimiś, nawet najprostszymi projektami elektronicznymi lub informatycznymi, nad jakimi pracowałeś hobbystycznie? Miałeś jakąś styczność z elektroniką/informatyką "poza szkołą"? Branże, o które pytasz, są bardzo szerokie, wszystko zależy od tego, co chciałbyś konkretnie robić Chodzi o jakąś pracę natury "inżynierskiej" czy o to, aby jedynie była powiązana z dziedzinami, które wymieniłeś? Staż wchodzi w grę czy musi być to już praca "normalna"? Pozdrawiam
  24. 2 punkty
    Może Ci się spodobać montaż manhattański (poszukaj manhattan style pcb). Polega to na tym, że bierzesz jednostronną płytkę PCB (za grosze na Aliexpress) i podpinasz ją do masy. Z innej płytki wycinasz malutkie kawałeczki (na Aliexpress są gotowce, zobacz na kwadraciki na zdjęciu) i kleisz je kropelką do tej głównej płytki. Teraz do głównej płytki lutujesz te nóżki, które mają być spięte z masą, a do tych kwadracików lutujesz nóżki, które spięte być nie mają z masą, ale mają być spięte między sobą. W załączniku przykład znaleziony w necie.
  25. 2 punkty
    W zasadzie każda praca jaką znajdziesz będzie dzisiaj związana z elektroniką lub informatyką, nawet praca na kasie w supermarkecie wymaga interakcji z systemem teleinformatycznym (a nierzadko nawet dość dużej wiedzy, żeby obejść problemy w "systemie"). Myślę, że raczej powinieneś się zastanowić w jakiej dziedzinie chciałbyś pracować, a następnie dowiedzieć się jak komputery i elektronika są w tej dziedzinie używane i jakie firmy oferują dla tej dziedziny rozwiązania — wtedy kontaktujesz się z taką firmą i dowiadujesz od nich czego oczekują od pracownika. Ja bym tak zrobił, w każdym razie.
  26. 2 punkty
    Trzeba być jednak świadomym pewnych właściwości stosowania w układzie czujnika, asymetrii i zaniku faz, o którym pisze kolega wyżej. Mianowicie zabezpiecza on układ przed zmianą kierunku obrotów, tylko w obwodzie przed czujnikiem! Więc jak ktoś namiesza na styczniku za nim, czy klemrecie silnika, to taki czujnik już prawidłowo nie zadziała. PS. Kolego pewnie pyta o układ gwiazda/trójkąt. W tym układzie tak naprawdę, w miarę skuteczną ochroną jest, dobre i jednoznaczne oznakowanie przewodów, w skrzynce zaciskowej silnika, i skrzynce sterowania. Dodatkowo, czujnik zaniku i asymetrii faz. Obowiązkowo schemat naklejony, na drzwiczkach sterowania. Właściwie więcej się zrobić nie da. Nie ma praktycznie możliwości wyeliminowania błędu ludzkiego podczas montażu.
  27. 2 punkty
    Tak na szybko: Po wykonaniu "return" w danej funkcji nie wykona się nic więcej. Czyli gdy masz funkcję zmierzOdleglosc to kod, który masz w tej funkcji, ale poniżej linijki "return dystans;" nigdy się nie wykona. Więc nalezało by przenieść return na koniec tej funkcji. Druga kwestia jest to, że nie masz nigdzie gaszenia diod (dotyczy kodu za return). Więc nawet jak return przeniesiesz to raz zapalona dioda nie zgaśnie. Jeżeli chodzi o debugowanie diodą to w pewnym sensie zadziałało ono u ciebie bo jak zapewne zauwazyleś diody nigdy się nie zapalały wiec powinieneś się domyśleć, że z jakiegoś powodu kod tutaj nie dociera. Choć ja wolę debugować za pomocą serial bo wtedy mam możliwość sprawdzenia jeszcze wartości wybranych zmiennych. Ale warto zapamiętać. Jeżeli coś nie chce się wydarzyć to problemem jest coś wcześniej niż instrukcja, która się nie wywołuje.
  28. 2 punkty
    Trzymam kciuki, sam projekt wydaje się innowacyjny.
  29. 2 punkty
  30. 2 punkty
    Cześć, można niestety niechcący "zbrickować" płytkę Elbert poprzez błąd w pliku "ucf" (definicja pinu zegara). Powinno dać się przywrócić Elberta do życia. Patrz ten wątek: Pozdrawiam BTW: chyba w internecie jest też jakiś tutorial jak "odbrickować" Elberta (ale go nie testowałem).
  31. 2 punkty
    Cześć, widzę, że skorzystałeś z platformy "ThingSpeak.com" też z niej korzystałem i uważam, że jest super (i zebrane dane można sobie od razu 'obrobić" w MATLAB'ie). Fajny projekt Pozdrawiam
  32. 2 punkty
    Witam wszystkich. Zajmuje się elektronika z czystej ciekawości.
  33. 2 punkty
    A jeżeli chciałbyś wiedzieć co było nie tak w tym kodzie to to, że za pierwszym razem zmienne rozmiarStrony1 oraz rozmiarStrony2 miały ustawiona wartość i przy kolejnym wprowadzaniu danych te zmienne nie były puste więc nie przypisywało im nowych wartości tylko pozostawiało stare :) w tym kodzie wystarczyło by dodać na końcu pętli czyszczenie tych zmiennych :)
  34. 2 punkty
    Witam! Update z frontu. Mam już NUCLEO z STM32F303RE oraz silniki do robota. Na razie na szybko przerzuciłem kod na nowy mikrokontroler oraz podłączyłem silnik. Wciąż brakuje mi enkoderów, więc nie można nazwać tej metody kontroli prawdziwym FOC. Bez feedbacku o położeniu wirnika, silnik tylko podąża za wirującym polem magnetycznym wygenerowanym przez uzwojenie. Jest to jakaś metoda sterowania, ale bardzo nieefektywna bo wektory pola magnetycznego od magnesów stałych i od uzwojenia praktycznie są w jednej linii. Przebiegi PWM są generowane z częstotliwością 35kHz, więc silnik działa bezgłośnie. Nawet przy tym nieefektywnym sterowaniu moment obrotowy jest zaskakująco duży, a prądy nie przekraczają 0.5A (12V ,100% wypełnienia PWM, minimalne obroty). Co do samego sterownika to postanowiłem wprowadzić następujące modyfikacje do założeń projektu: 1. Zabezpiecznie nadprądowe - pomiar ze wszystkich faz jednocześnie. Wykorzystam możliwość ustawienia poziomu maksymalnego prądu jaką daje mi mikrokontroler (comparator + DAC). 2. Monitorowanie prądu silnika - z wykorzystaniem przetwornika A/D 3. Dodam też zewnętrzną pamięć EEPROM I2C do przechowywania konfiguracji Pozdrawiam, Marek
  35. 2 punkty
    Bardzo fajny układ, wszystko działa jak należy: a także druga strona: Z ciekawości policzyłem i zmierzyłem rezystancje LED1: 533,33Ω (pomiar: 528Ω) LED2: 800Ω (pomiar: 796Ω) LED3: 1130,95Ω (pomiar: 1134Ω) LED4: 4000Ω (pomiar: 3926Ω) LED5: 1200Ω (pomiar: 1187Ω)
  36. 2 punkty
    Cześć, zadanie jakie było do wykonania polegało na tym, żeby udostepnić dane ze sterowników przemysłowych poprzez siec ethernetową na dowolnie wybranym pececie. Problem był tylko taki, że sterowniki nie maja wbudowanego webserwera, ale pracują za to w sieci Modbus. W tym przypadku zadanie sprowadziło się do dwóch podzadań: stworzyć mastera w sieci Modbus bazując na Arduino Mega oraz na tym samym Arduino postawić web serwera. Oba zadania od strony programowej zrealizowano za pomocą Bascoma a od strony sprzętowej instalując na Mega shielda Wiznet W5100. Oczywiście można te zadania zrealizować na wiele innych sposobów ale sposób opisany powyżej był dla mnie najwygodniejszy. Dodatkowo jest dość rozwojowy, bo Mega można zastąpić Nano z odpowiednim shieldem ethernetowym, co redukuje koszt, a dzięki temu można praktycznie do każdego urządzenia podpiąć indywidualny zestaw (Nano+eth sield) i dzięki temu uniknąć problemów związanych z zakłóceniami na okablowaniu RS485 jakie trzeba użyć aby połączyć wszystkie urządzenia slave w sieci Modbus z masterem, mając na uwadze, że sterowniki PLC pracują czasami przy dość sporych maszynach. Poniżej filmik z testów: Pozdrawiam
  37. 2 punkty
    Czy nie lepiej wtedy kupić jakiegoś NUCa?
  38. 2 punkty
    Super pomysł!!! Czekam na sprzedaż życzę żeby zrobiło taką karierę jak Arduino
  39. 2 punkty
    @Tobitobiasz44 prawdopodobnie dlatego, że autorzy posługuję się tym językiem na co dzień i/lub chcieli dotrzeć z nim do większego gron odbiorców
  40. 2 punkty
  41. 2 punkty
    Dzień dobry wszystkim, Nazywam się Łukasz, mam 44 lata. Kupiłem startowy zestaw Arduino, aby zainteresować moich synów elektroniką, ale sam też powoli w to wsiąkam, stąd moja obecność na forum.
  42. 2 punkty
    @robosimon witam na forum problem jest dość prosty - po odebraniu tego co jest w warunku coś się dzieje ale nie resetuejsz tego co sprawdzasz. Czyli kolejno: coś odebrałeś > zapisałeś do zmiennej > sprawdziłeś zgadza się > i tu trzeba tą zmienną skasować, bo będzie cały czas wyzwalać poprawny warunek, a powinno się tak stać dopiero po odebraniu nowych danych. Drugi kod jest o tyle lepszy, że coś się wykonuje jedynie gdy odbierzesz dane z Serialu, więc już lepiej Poza tym polecam skrót... chyba Ctrl-T ale znadziesz to w menu - autoformatowanie, to od razu zauważysz do czego jest jaki nawias.
  43. 2 punkty
    Też mam takie podejście. Pytanie o sens diody w pierwszym układzie było bardziej teoretyczne by zrozumieć problem. W takim razie wrócę do niego w ten weekend bo przerabiałem tą lekcję ale krótko przed jej edycją i tego przykładu nie robiłem na 100%. Ale to może nawet i lepiej, że w jakimś stopniu sam doszedłem do zrozumienia problemu. Dzięki za pomoc, na pewno wrócę do tej lekcji przed przystąpieniem do kursu elektroniki 2.
  44. 2 punkty
    Chyba wiem w czym tkwi problem. Piszesz tu o spadkach napięć najpierw na R3 które jest podłączone do zasilania, a potem o jakimś spadku na czymś podłączonym do masy. Jak mierzysz napięcia w takich układach to sondę czarną przytknij do masy, a czerwoną sobie sprawdzaj napięcia. Wejścia komparatora mają przy sobie 2 dzielniki napięć, i istotne jest jakie napięcie względem masy tam się zrobi. Jeżeli napięcie względem masy na wejściu nieodwracającym (+) jest większe niż na (-) (w skrajnym przypadku gdy do (-) podłączysz GND), to będzie 1 na wyjściu, jak nie to 0.
  45. 2 punkty
    Witaj na forum Jeśli chodzi o kwestię połączeniową to wszystko jest w porządku. Można bez problemu podpiąć diodę na tej samej linii zasilającej co wzmacniacz, musisz tylko pamiętać, żeby dobrać odpowiedniej wielkości rezystor, żeby dioda się nie przepaliła.
  46. 2 punkty
    Panowie a co wy chcecie sterować z wyjścia tego czujnika że zakładacie 200mA? Bo te 200mA to MAX prąd jaki można pobrać z wyjścia, aby nie spalić tranzystora. Producent przewiduje taki MAX prąd wyjścia tak naprawdę tylko i wyłącznie dla przypadku kiedy byście chcieli sterować bezpośrednio cewkę przekaźnika 12-24V. W praktyce jak czujnik ma dawać tylko sygnał logiczny, to obciążenie tego wyjścia to będzie max 20mA (np. fotodioda, transoptora PC817) + prąd samego czujnika więc dobijecie może 40mA. Tyle utrzyma chyba większość mini przetwornic step-up. Jakiekolwiek rozważania mają sens, dla konkretnego przypadku i schematu połączenia czujnika.
  47. 2 punkty
    Trochę gorącego kleju i jazda! Takim stwierdzeniem kierowałem się podczas budowy tej drukarki. Pewnie sporo drukarzy 3D zbije mnie za to, ale już lecę z wyjaśnieniem . Od paru lat marzyła mi się drukarka 3D, chociażby do drukowania obudów do przyszłych projektów, ale również jako produkcja użytecznych rzeczy "na już" - no prawie, ponieważ drukowanie nie jest natychmiastowe. Niestety ze względu na to, że mam dość mały budżet i rodzice niezbyt byli przychylni do kolejnego sprzętu w domu oraz wierzyli w moją "twórczość", nie mogłem kupić firmowej sztuki. Dopiero jak po kilku miesiącach na discordzie znalazłem grupkę osób zajmująca się właśnie drukiem jak i samą elektroniką, postanowiłem się zabrać do roboty. Po kilku dniach przemyślania i projektowania wziąłem trzy napędy DVD i za pomocą kleju na gorąco złożyłem "coś co wytłaczało plastik i wiecznie się psuło". Szczątkowe zdjęcie "tego czegoś" wygrzebane z odmętów mojego dysku twardego. Jak w końcu się zepsuło w taki sposób, że straciłem chęci do dalszych zabaw w tym kierunku, dałem sobie spokój, ale nie na długo. Po dwóch tygodniach znowu zajrzałem i natknąłem się na technologię RepRap. Dla nie wiedzących polega to na tym, że części do nowej drukarki drukuje się na pierwotnej. Poszedłem więc do lokalnego sklepu budowlanego kupić części do budowy ramy. Dokładnie to: 3 Profile aluminiowe o przekroju kwadratowym 15mm dużo kątowników (sam już nie wiem ile ich nakupiłem) 3 profile aluminiowe o przekroju okrągłym 10mm (jako prowadnice) WIEM, WIEM budowanie drukarki na takich profilach i prowadnicach to grzech, ale DZIAŁA! Nie mając warsztatu, udałem się do dziadka, z pomocą którego udało mi się złożyć dolną część ramy. Naprawdę PRZEPRASZAM, ale to są zdjęcia archiwalne, więc stąd taka jakość. Przez całą budowę drukarki posługiwałem się tylko brzeszczotem, wiertarką no i gwintownikiem, choć tego ostatniego odradzam przy profilach aluminiowych, bo sam się na tym przejechałem i zerwałem dwa gwinty. Tak czy siak z pomocą kleju na gorąco i taśmy klejącej jakoś się udało. Tydzień później znowu przyszedłem do dziadka dokończyć budowę. Po kilku godzinach składania wyszła rama, która wymagała tylko zamontowania elementów i powinno działać. Silniki kupiłem na na popularnym serwisie aukcyjnym za skromne 8zł za sztukę. Działają, nie mam zarzutów, poza tym, że musiałem zdjąć oryginalne koła zębate i zeszlifować wał, aby zamontować koła GT2. Gdy tylko przyniosłem ramę do domu, zabrałem się za dalszą część montażu. Zamontowałem hotend, ekstruder, paski i wiele innych mniej lub bardziej przydatnych elementów. Gotowy sprzęt, który już działał i wymagał tylko kalibracji Na płytę główną Creality3D v1.1.4 (dokładnie ta co występuje w Enderze 3 lub CR-10) wgrałem oprogramowanie marlin, które wspiera dowolną zmianę sprzętową m.in. Serwomechanizmy, czujniki i wiele więcej. Niestety nie zamontowałem wyświetlacza ze względu na problemy sprzętowe, lecz jak będę wymieniać płytę główną zapewne go zamontuję, bo go posiadam. Po istotnych kalibracjach ze względu na kończące się próbki filamentu zakupione do starej drukarki, zakupiłem jednokilogramową szpulę filamentu. Parę dni później, gdy paczka do mnie dotarła, zacząłem drukować części, które zastąpią gorący klej. Były to głównie mocowania na łożyska, nowa karetka oraz nóżki. Zauważyłem dość sporą różnicę w jakości wydruków, co mnie jeszcze bardziej zmotywowało do dalszych ulepszeń. Po lewej spoiwo z kleju/Po prawej jego wydrukowany odpowiednik Na dzień dzisiejszy drukarka pracuje, postawiłem serwer druku na Raspberry Pi, nadal trwają nad nią prace, głównie konserwacyjne i drobne ulepszenia, lecz projekt uważam za zakończony. Bez problemu można drukować obudowy do projektów, ale też jakieś figurki. Obudowa do wzmacniacza gitarowego (nie będę opisywać, bo uważam go za zbyt niski poziom) Jak na powyższym zdjęciu widać, jedna szpula poszła na zepsute wydruki, wydruki kalibracyjne oraz jakieś zabawki. Dlatego warto zaopatrzyć się w 1kg filamentu jak buduje się tego typu drukarkę. W przyszłości mam zamiar zmienić malinkę prawdopodobnie na ESP8266. Zauważyłem też, że dzięki zbudowaniu takiego sprzętu nauczyłem się baardzo dużo w tym temacie. Morał z tego projektu jest taki: Staraj się nie robić gwintów w profilach aluminiowych - są mało wytrzymałe. jak kupujesz rurki aluminiowe na prowadnice w sklepie budowlanym to idź z suwmiarką, bo u mnie powodem luzów na karetce była zbyt mała średnica jednej z prowadnic. Nie kupuj najtańszej głowicy, bo jej jakość może być bardzo dyskusyjna. Gorący klej nie nadaje się do wszystkiego Warto robić projekty DIY Specjalne podziękowania kieruję do: Staszka, matika i wiele innych osób z discorda :3 Dziadka, który mi pomógł od strony planowania Leoneq'a, który mnie namówił, aby wstawić tu ten projekt ;3 Tak to wygląda na chwilę obecną Z góry przepraszam za ewentualne błędy językowe czy literówki, ale orłem z Polskiego nie jestem, więc proszę o wybaczenie. Naturalnie zapraszam do dyskusji w komentarzach pod postem. Pozdrawiam.
  48. 2 punkty
    Jak pomalujesz Arduino na czerwono to też będzie ładny
  49. 2 punkty
    Panie Kredek, jestem pod wrażeniem! Twój projekt udowadnia, że dla chcącego nic trudnego... Brawo. Najbardziej podoba mi się zdjęcie z połączeniem termoglutem i jego wydrukowanym zastępcą :) To musi być mocno motwujące kiedy za każdym wydrukiem jakość produkowanych części staje się widocznie lepsza. Co do gwintów w alu: da się i zazwyczaj nie ma problemów. Zrobiłem całą masę różnych gwintów w alu i rzadko mi się je udaje zepsuć (częściej już kiedy za mocno się przyłożę do dokręcania śrubek, a sam profil albo blacha alu jest cieniutka). Pamiętaj tylko o 3 sprawach: 1. Odpowiedniej wielkości otwór (w wyszukiwarce wpisz frazę 'otwory pod gwinty', znajdź tabelkę i tego się trzymaj) 2. Gwintowniki idą po 3 w zestawie. Wstępny, właściwy i końcowy. Najlepiej rozpoznać po nacięciach na gwintowniku, zaraz przy jego szczycie. Ten wstępny ma dużą część czubka jakby płaską, bez nacięć. To pozwala łagodnie i sprawnie zacząć gwintowanie. Po przegwintowaniu wstępniakiem lecisz głównym no i na końcu wygładzającym Ja czasem w alu od razu po wtępnym przechodzę do ostatniego. W przypadku ekstremalnym (1 gwintownik w zestawie) próbuj gwintować z dużą ilością smarowania (patrz punkt 3), a potem z wyczuciem (i smarowaniem) wkręcaj śrubkę. 3. Smarowanie! Jakaś oliwa/olej, coś łatwo płynącego. Dozuj regularnie i często podczas gwintowania. Dzięki temu gwint się nie zerwie podczas robienia. Jak już gwint 'złapie', to jakieś 0.5 obrotu, cofnij, dodaj smarowania, znowu 0.5 obrotu, poluzuj znowu itepe. Z czasem zdobędziesz wyczucie. Ja już gwinty w większości przypadków robię wkrętarką. Jak już zostało wspomniane, daruj sobie ESP. Trzymaj się malinki, Octoprint jest dobrym wyjściem. No i nie poddawaj się, dobrze Ci idzie!
  50. 2 punkty
    Witam serdecznie miłośników i pasjonatów elektroniki, nazywam się Tadeusz, mam 68 lat, z wykształcenia jestem inżynierem mechanikiem, obecnie na emeryturze (aktywnej), pozostawiam sobie niewiele wolnego czasu pracując jeszcze na 1/4 etatu w mojej specjalności, a dodatkowo projektuję systemy nawadniania (zraszania) trawników. Zakup zestawu startowego Arduino podpowiedział mi syn, a chęć rozwiązania niektórych problemów ze sterowaniem zaworami zrobiła resztę. Jestem przekonany, że po ukończeniu kursów Arduino uda mi zrealizować te pomysły które mam. Pozdrawiam Tadeusz
Tablica liderów jest ustawiona na Warszawa/GMT+02:00
×
×
  • Utwórz nowe...