Skocz do zawartości

Masterpc96

Użytkownicy
  • Zawartość

    13
  • Rejestracja

  • Ostatnio

Reputacja

13 Dobra

O Masterpc96

  • Ranga
    2/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. Dzięki za sugestie, chyba to zastosuje jako dodatkowe zabezpieczenie, bo w kodzie mam dwie flagi które odpowiadają podnoszeniu i opuszczaniu. Zanim załączy się przekaźnik jest sprawdzana flaga. Dla przykładu, chcę opuścić roletę to sprawdzam czy flaga odpowiedzialna za podnoszenie ma wartość false aczkolwiek teraz przechodzę na triaki i optotriaki w celu redukcji rozmiaru
  2. Witam chciałbym Wam pokazać własnej roboty sterownik do podświetlenia podłogi (akurat w kuchni). Cały sterownik jest oparty o Atmega328p. Głównym problemem było zrobienie tak zwanej siatki na podłodze tak by obiekty były wykrywane. W tym celu użyłem dwóch czujek pir. Po odpowiednim wyskalowaniu zasięgu łapały tylko obiekty które znajdowały się w pomieszczeniu. Bardzo ważną rzeczą o której należy wspomnieć przy tych czujkach to zasilanie. W nocie katalogowej napisali że można je zasilać napięciem od 4.5V do 20V, jak dobrze wiadomo Atmega działa na napięciu 5V, więc postanowiłem tym samym zasilać czujki i to był błąd. Były wahania napięcia takie że czujki się resetowały co około 5 minut dlatego postanowiłem je zasilić napięciem 12v tym samym co pasek led. Następnie musiałem wymyślić sposób montażu tych czujek. Stworzyłem w programie do grafiki 3d model uchwytów czujek po czym zamówiłem je w internecie (biała wstawka jest dlatego że zapomniałem o wysokości kondensatorów które są w czujkach ;)) Następnym krokiem było stworzenie czujki natężenia światła po to by oświetlenie nie włączało się gdy jest widno. Do tego wykorzystałem fotorezystor. Do załączania paska ledów wykorzystałem N-MOSFET. Następnie zająłem się wykonaniem płytki pcb gotowa polutowania płytka wygląda następująco: Jak widać na pcb znalazł się potencjometr a to dla tego żeby można było ręcznie manipulować granicą wartości światła dla której ma działać podświetlenie. Aktualnie pracuję nad drugą wersją płytki w programie Eagle. Będzie ona dwuwarstwowa dzięki czemu zmniejszą się jej wymiary: Pełna lista rzeczy potrzebnych do wykonania podświetlenia podłogowego to: Atmega 328p Programator Kwarc 2x Kondensator ceramiczny 22pF Potencjometr N-MOSFET IRLZ44N Złącza do pcb dla kabli Rezystor 100 Ohm Rezystor 10k Ohm 2x czujka PIR Kondensator elektrolityczny od 470uF do 1000uF w celu filtracji zasilania
  3. Witam dzisiaj chciałbym Wam pokazać sterownik do rolet zewnętrznych mojego autorstwa. Silnik takiej rolety zasilany jest napięciem 230V. Wychodzą z niego trzy kable: neutralny fazowy 1 (odpowiada za ruch rolety w górę) fazowy 2 (odpowiada za ruch rolety w dół) Elementy jakie wykorzystałem przy budowie to: Tranzystor NPN w celu wzmocnienia sygnału z ESP Zasilacz HI-Link 5V Dwa przekaźniki Tact switch Wemos D1 mini Dioda prostownicza Rezystory Bezpieczniki wraz z gniazdami Konektorki Płytkę pcb zaprojektowałem w programie Fritzing Była to moja pierwsza płytka stworzona w tym programie Następnie metodą termotransferu przeniosłem toner z wydrukowanej kartki na płytkę pcb po czym ją wytrawiłem. Po trawieniu przy pomocy pasty lutowaniczej Bisan oraz opalarki zacynowałem ścieżki. Płytka nie wygląda profesjonalnie ale działa Gdy powierciłem otwory zacząłem lutować elementy. Gotowa płytka prezentuję się w następująco: Z racji bezpieczeństwa płytka została umieszczona w puszce nadtynkowej. Dodatkowo jest możliwość podpięcia fizycznego przycisku do podnoszenia i opuszczania rolety. Aktualnie pracuję nad nową wersją płytki na której znajdą się triaki i optotriaki zamiast przekaźników oraz sam moduł ESP8266 STEROWANIE Komunikacja z modułem odbywa się po przez protokół HTTP metody Get i Post. Podczas prac nad nową wersją stworzyłem przeglądarkowy interface (jest on zaimplementowany w ESP) można w nim skalibrować czas podnoszenia i opuszczania rolety (ważne te dwa czasy są różne !) zmienić sieć wi-fi do której jest podpięty sterownik zmienić hasło do logowania oraz znaleźć takie informacje jak ustawiony czas podnoszenia i opuszczania rolety, aktualny procent zamknięcia oraz czas jaki upłynął od włączenia układu. Dodatkowo stworzyłem sobie aplikacje mobilną w której mogę ustawić harmonogram podnoszenia i opuszczania rolety oraz dodałem suwak za pomocą którego mogę ustawić procent zamknięcia rolety. Gdy uda mi się skończyć wersję drugą płytki wrzucę ją tutaj wraz z kodem.
  4. Masterpc96

    Frezarka CNC - Rasp Pi Zero W

    Bardzo fajny projekt aktualnie sam buduję podobny do frezowania pcb, mógłbyś podrzucić link do frezu jaki masz założony (ten z filmiku jak frezujesz pcb)
  5. Witam chciałbym Wam przedstawić regułę działania regulatora PID, model ten wykonałem na studia jako projekt zaliczeniowy. Gdybyście nie chcieli czytać tego wszystkiego to możecie tego posłuchać na YouTube Regulator ten składa się z trzech członów: Proporcjonalnego (proportional) Całkującego (integral) Różniczkowego (derivative) Jego celem jest utrzymanie wartości wyjściowej na poziomie wartości zadanej. Oblicza on wartość różnicy pomiędzy parametrem zadanym a zmierzonym. Działa w taki sposób aby zredukować wartość różnicy. Stosuje się go w obiektach które poddawane są falą zakłóceń. Ja go zastosowałem w modelu piłki i belki, aby przeciwdziałał sile grawitacji. Jest to prosty model który jest niestabilny w otwartej pętli. To znaczy że jeśli kąt odchylenia belki od poziomu jest bardzo zbliżony do zera i nie ma sprzężenia zwrotnego to grawitacja spowoduje, że belka zacznie się przechylać w daną stronę i piłka w końcu z niej spadnie. Aby ustabilizować piłkę należy użyć regulatora PID, który będzie mierzył położenie piłki i odpowiednio regulował kąt nachylenia belki. W tym modelu ramię dźwigni jest przymocowane na jednym końcu belki a ramię serwomechanizmu na drugim. Gdy ramię serwomechanizmu obraca się o kąt θ to dźwignia zmienia kąt nachylenia belki o α. Rysunek przedstawiający model piłki i belki Funkcja która opisuje zależność położenia piłki R(s) od kąta serwomechanizmu θ(s) w otwartej pętli jest następująca: Miałem do wyboru albo zasymulować układ w programie simulink albo zbudować rzeczywisty model, wiadomo co wybrałem Schemat blokowy regulatora PID który implementowałem jest następujący: Oprogramowanie na komputerze do którego jest podpięta kamera, mierzy odległość piłki od zadanej pozycji, odejmując centroid piłki od połowy szerokości rozdzielczości obrazu z kamery. Na samym początku zacząłem od przygotowania modelu w programie SketchUp. Gotowa złożona konstrukcja przeze mnie wygląda następująco: Podpięcie serwomechanizmu do Arduino: Serwomechanizm został podpięty do Arduino za pomocą przewodów męsko-męskich wg poniższego schematu: Serwomechanizm Arduino czerwony kabel 5V brązowy kabel GND pomarańczowy kabel Pin 3 Następnie zaprogramowałem Arduino tak by mogło odczytywać dane po serialu i sterować serwem: 1: #include <Servo.h> 2: Servo servo; 3: int servoPin = 3; 4: int radius = 90; 5: 6: void setup() { 7: Serial.begin(115200); 8: servo.attach(servoPin); 9: servo.write(radius); 10: } 11: 12: void loop() { 13: if (Serial.available()) { 14: radius = Serial.read(); 15: servo.write(radius); 16: } 17: } Kod który oblicza odległość piłki od zadanej pozycji, dokonuje obliczenia i wysyła dane do arduino został napisany w języku Python. Do przetwarzania obrazu z kamerki wykorzystałem bibliotekę Opencv (Open Source Computer Vision Library), która jest na licencji BSD. Żeby program rozpoznał piłkę musiałem: Zdefiniować zakres barw. Lekko rozmazać obraz po przez rozmycie Gaussa. Stworzyć maskę dla danego zakresu. Na podstawie stworzonej maski znaleźć kontur. Na podstawie konturu znaleźć centroid oraz narysować linię wokół obiektu. z racji tego że kod napisany w języku Python zajmuje trochę miejsca to umieściłem go na githubie, poniższy link przekieruje do mojego repozytorium z kodem wraz z komentarzami: kod programu Wnioski które wynikły z budowy: Bardzo ważną rzeczą przy budowie konstrukcji jest eliminacja luzów które mogą się pojawić na ramieniu łączącym serwomechanizm z pochylnią jak i na łączeniu pochylni z podporą. Arduino podczas przyjmowania danych po serialu zamienia znaki na kody ASCII dodatkowo przyjmuje te dane jako String. Dlatego podczas wysyłania danych z programu należy najpierw zrzutować zmienną radius do typu całkowitego (wartości z regulatora są typu double a serwomechanizm działa na wartościach całkowitych), następnie należy to zamienić na char który potem zamieniamy na String. Przykład dla wysłania kąta równego 120 stopni 120 - kod ASCII reprezentuje znak x (mały) Znak ten jest rzutowany na String po czym jest wysyłany do Arduino po serialu Arduino przyjmuje te dane po czym zamienia każdy znak na kod ASCII - otrzymujemy 120. Maskę w bibliotece OpenCV tworzy się w przestrzeni barw HSV, dlatego musiałem wykonać konwersję z BGR na HSV Biblioteka OpenCV operuje na zmapowanych zakresach HSV. Poniżej przedstawiam tabelę zmapowanych wartości
  6. Masterpc96

    Jak zrobić czujnik zmierzchu

    kod teraz wygląda tak, dzisiaj dałem n=5 bo dla n=2 efekt był mizerny potencjometrV = analogRead (potencjometr); fotorezystorV = analogRead (fotorezystor); if(fotorezystorV < potencjometrV - n){ pirOneV = digitalRead (pirOne); pirTwoV = digitalRead (pirTwo); if(pirOneV == HIGH || pirTwoV == HIGH){ digitalWrite (ledOut, HIGH); }else if(pirOneV == LOW && pirTwoV == LOW){ digitalWrite (ledOut, LOW); } }else if (fotorezystorV > potencjometrV + n){ digitalWrite (ledOut, LOW); } else if ((fotorezystorV <= potencjometrV - n) && (fotorezystorV >= potencjometrV + n)){ } delay(500);
  7. Masterpc96

    Jak zrobić czujnik zmierzchu

    a jak powinienem wyznaczyć warość n?
  8. Masterpc96

    Jak zrobić czujnik zmierzchu

    int fotorezystorV = analogRead (A1); // wartości od 0 do 1023 int potencjometrV = analogRead (A0); // wartości od 0 do 1023 if(fotorezystorV <= potencjometrV) { digitalWrite(pin_dioda, HIGH); } if((fotorezystorV <= (potencjometrV+10)) && (fotorezystorV >= (potencjometrV-10))) { digitalWrite(pin_dioda, HIGH); } if(fotorezystorV < potencjometrV) { digitalWrite(pin_dioda, LOW); } W ten sposób?
  9. Masterpc96

    Jak zrobić czujnik zmierzchu

    Witam, jeśli zły dział to przepraszam i proszę o przeniesienie Chcę zrobić czujnik zmierzchu do zapalania żarówki, wszystko ładnie działa ale do pewnego momentu gdy na potencjometrze ustawię np. wartość 750 i fotorezystor będzie zgłaszał wartość raz 749 a raz 750 to żarówka migocze, próbowałem też zmniejszyć dokładność pomiaru wartość z fotorezystora i potencjometru podzieliłem przez 10 i zapisałem do inta, ale to nic nie pomogło, nie chciałbym kupować gotowego modułu.Podpinam to jak na schemacie. Z góry bardzo dziękuję za pomoc
×