Spisu treści:

Wrażliwa na światło przesłona: 4 kroki
Wrażliwa na światło przesłona: 4 kroki

Wideo: Wrażliwa na światło przesłona: 4 kroki

Wideo: Wrażliwa na światło przesłona: 4 kroki
Wideo: Ogarnijże Aparat S01 E04: ISO 2024, Listopad
Anonim
Image
Image
Wrażliwa na światło tęczówka
Wrażliwa na światło tęczówka

Ten samouczek pokazuje, jak stworzyć przesłonę tęczówki, która, podobnie jak ludzka tęczówka, rozszerza się w słabym świetle i zwęża w jasnym otoczeniu.

Krok 1: Drukowanie 3D

drukowanie 3d
drukowanie 3d
drukowanie 3d
drukowanie 3d
drukowanie 3d
drukowanie 3d

Proces produkcji komponentów drukowanych w 3D w tej konstrukcji może mieć własną stronę z samouczkiem i w rzeczywistości tak właśnie je robiłem:

www.thingiverse.com/thing:2019585

Załączam pliki tutaj dla wygody.

Kilka uwag na temat tego przykładu, ostrza (lub liście) tęczówki zostały faktycznie wyprodukowane za pomocą drukarki żywicowej przy użyciu tych samych pilników ze względu na ograniczenia drukarki 3D. Dodatkowo cały druk został powiększony o 10%. Łączenie elementów wymagało trochę pracy nad szczegółami, skończyło się na częstym kształtowaniu elementów drobnym papierem ściernym, nożem i wiertłem.

Inne tęczówki, które badałem podczas tego procesu:

souzoumaker.com/blog-1/2017/8/12/mechanika…

www.instructables.com/id/How-to-make-a-12-…

Krok 2: Części

Części
Części
Części
Części
Części
Części

Zdjęcia przedstawiają części, których będziesz potrzebować, a także niektóre narzędzia i materiały, których użyłem do zbudowania modelu pokazanego w galerii:

- Przesłona tęczówki z nadrukiem 3D

- Serwosilnik Futaba S3003

- Mikrokontroler Arduino UNO

- Rezystor zależny od światła: rezystancja ciemna 1M om / rezystancja światła 10 om – 20 k omów

- Potencjometr analogowy 10k omów, - Rezystor 500 omów

- PCB (płytka drukowana)

- nagłówki (pięć)

- przewód: czarny, czerwony, biały i żółty

- przewody łączące dupont (dwa)

- lutownica (i lut)

-multimetr

- nożyce do drutu

Konstrukcja, w której znajduje się ten prototyp, została wykonana z płyty MDF, sklejki 3/4 cala, kleju do drewna, pistoletu do klejenia na gorąco, sztywnego drutu (z wieszaka i spinacza do papieru), a także różnych wierteł i bitów, piły stołowej i piła taśmowa, szlifierka elektryczna i wiele prób i błędów. Obiekt ze zdjęć jest trzecią iteracją.

Krok 3: Budowa obwodu/obudowy

Budowa obwodu/obudowy
Budowa obwodu/obudowy
Budowa obwodu/obudowy
Budowa obwodu/obudowy
Budowa obwodu/obudowy
Budowa obwodu/obudowy

Podczas projektowania tego aspektu miałem zagadkę w stylu „kurczaka i jajka”. Ponieważ nie mam doświadczenia ze schematami elektroniki, wolę myśleć o układzie w kategoriach jego faktycznej konfiguracji, czyli pseudoschematu. Odkryłem, że architektura zarówno obudowy z MDF/sklejki, jak i okablowania ograniczały się nawzajem w nieoczekiwany sposób. Próbowałem wymyślić coś, co byłoby wizualnie proste i samodzielne.

- Potencjometr był pomysłem na późnym etapie burzy mózgów, aby dodać regulator „czułości”, ponieważ warunki oświetlenia otoczenia mogą się znacznie różnić, potencjometr i rezystor razem zajmują miejsce normalnego rezystora w aspekcie dzielnika napięcia obwodu. Nie mogę omówić tego szczegółowo, ponieważ tak naprawdę nie wiem, jak to wszystko działa.

- Pionowa część obudowy (wykonana z MDF) jest pod niewielkim kątem. Aby obracać się w tej samej płaszczyźnie co tęczówka, użyłem szlifierki taśmowej montowanej na stole, aby uzyskać ten sam kąt na drewnianym uchwycie serwa, który przykleiłem do podstawy ze sklejki.

-Odkryłem również, że serwo wolą podnieść płytę MDF bezpośrednio z podstawy zamiast przegubu tęczówki, więc dodałem zszywkę mocującą drut, którą wkłada się z przodu, aby zablokować dwie części. Kiedy to robiłem, dodałem piny do płytki Arduino z tego samego przewodu. Nawiasem mówiąc, przewód łączący ramię siłownika z serwomechanizmem to spinacz do papieru.

-Przesłona pasuje ciasno do płyty MDF, ale mimo to dodałem kroplę gorącego kleju, aby zapobiec obracaniu się całej obudowy w gnieździe zamiast samego ramienia siłownika. Wymagało to bardziej precyzyjnego ustawienia ramienia dźwigni serwomechanizmu, niż się spodziewałem. To, co jest prawdopodobnie oczywiste dla wielu osób korzystających z tego samouczka, choć nieoczekiwane dla mnie, kiedy zaczynałem, to to, że obrót serwa i obrót tęczówki wynosi 1:1. Musiałem wykonać małe plastikowe przedłużenie ramienia, aby serwomechanizm osiągnął ten sam promień, co ramię siłownika tęczówki. Kod pierwotnie w pełni wykorzystywał potencjał rotacyjny serwa, ale ostatecznie zmierzyłem rzeczywisty obrót tęczówki, a następnie metodą prób i błędów znalazłem niestandardową wartość stopni obrotu serwa, która osiągnęła interesujący efekt.

- Wiele ważnych połączeń przewodów jest ukrytych na zdjęciach pod płytką drukowaną. Zapomniałem zrobić zdjęcie tej strony PCB, zanim przykleiłem ją na gorąco do płyty MDF. Tak jest najlepiej, ponieważ nikt nie powinien kopiować bałaganu, który ukryłem pod tym małym kawałkiem PCB. Moim celem dla płytki drukowanej było posiadanie nagłówków dla złączy 5 V, uziemienia i serwomechanizmu, aby elementy mogły łatwo rozdzielić się w celu nieprzewidzianego rozwiązywania problemów w przyszłości, funkcja, która się przydała. Wskazałem właściwą orientację złączy nagłówkowych kawałkiem taśmy maskującej na płycie MDF obok płytki drukowanej, chociaż przypuszczam, że mogłem napisać bezpośrednio na płycie MDF… wydawało się, że w tamtym czasie było to właściwe.

Krok 4: Kod

Kod
Kod

#include // biblioteka serwo

Serwonapęd; //deklaracja nazwy serwa

wewn czujnikPin = A1; // wybierz pin wejściowy dla LDR

int sensorValue = 0; // zmienna do przechowywania wartości pochodzącej z czujnika

int timeOUT = 0; //zmienna dla serwo

kąt wewnętrzny = 90; //zmienna do przechowywania impulsów

pusta konfiguracja()

{

serw.załącz(9); // dołącza serwo na pinie 9 do obiektu serwa Serial.begin(9600); //ustawia port szeregowy do komunikacji

}

pusta pętla()

{

sensorValue = analogRead(sensorPin); // odczytaj wartość z czujnika

Serial.println(wartość czujnika); //wypisuje na ekranie wartości pochodzące z czujnika

angle = map(sensorValue, 1023, 0, 0, 88); //konwertuje wartości cyfrowe na stopnie obrotu serwa

serw.zapis(kąt); //sprawia, że serwo porusza się

opóźnienie (100);

}

Zalecana: