Automatyczna klepsydra – Arduino

Zapewne u wielu z nas w domu istnieje taki mały gadżet jak klepsydra. Niestety zwykle służy on co najwyżej jako ozdoba bowiem nikomu nie chce się jej przekładać. Już dłuższy czas temu dostałem tego typu zabawkę i długo leżała na półce dopóki nie zautomatyzowałem jej obracania za pomocą raptem kilku elektronicznych komponentów.

 

Komponenty wymagane do konstrukcji:
 
1x deseczka do pokrojenia (ja użyłem tektury z zbitej antyramy)
1x atmega 328P-PU
1x servo (ja użyłem MG90S)
1x bateria 9V
1x koszyk na baterie 9v
1x stabilizator napięcia LM7805
2x 22nf kondensator
1x 470uF kondensator
1x 16 MHz rezonator kwarcowy
1x płytka uniwersalna
Trochę kabli
 

Na początku mierzymy naszą klepsydrę i wycinamy kawałki pudełka z naszego kawałka drewna. Dodatkowo Wycinamy dwie płytki jedną większą od naszego pudełka na której będzie zamieszczone servo a drugą płytkę takiej wielkości by zmieścił się na niej schemat elektroniczny, całość sklejamy porządnym klejem do drewna. U mnie wyglądało to następująco:

box size

box size

Zostaje najciekawszy element w postaci układu elektronicznego. Schemat ten przedstawia się w ten sposób:

servo schematic

Podstawą projektu jest mikrokontroler Atmega 328P-PU którego informacje na temat podłączeniu możemy przeczytać pod tym adresem https://www.arduino.cc/en/Main/Standalone Aby obracać naszą klepsydre konieczne jest servo. Servo to może wykonywać obroty od 0 do 180 stopni. Jego podłączenie jest łatwe posiada on trzy kable 5V, GND oraz na dane. Pin na dane może być dowolny w naszym wypadku jes to to pin 15. Na koniec pozostaję podłączyć zasilanie. Osobiście korzystałem z baterii 9V także musiałem skorzystać z stabilizatora napięcia LM7805. Regulator ten posiada 3 nóżki. Pierwszy pin z lewej strony (patrząc od strony gdzie nie ma blaszki) to wejście (9V) drugi pin to uziemienie a trzeci to wyjście (5V). Przy wyjściu dodatkowo jest dodany równolegle kondensator o wartości 470 uF. Przy uruchomieniu servo pobiera sporo mocy co może prowadzić do nagłego nie przewidzianego ruchu serva. Dzięki kondensatora to się nie dzieje.
 
Po lutowaniu wygląda to jak na poniższych zdjęciach:

soldering servo

soldering servo2

soldering servo3

soldering servo4

soldering servo5

W międzyczasie możemy pomalować drewnianą konstrukcje. Na koniec musimy wgrać odpowiedni program na nasz mikrokontroler:
 

#include <SoftwareServo.h>

SoftwareServo myservo;
#define pinServo A0
boolean refresh = true;

void setup()
{
  myservo.attach(9);
}

void loop()
{

  for (int pos = 0; pos <= 180; pos += 1) {
    myservo.write(pos);
    delay(15);
    if (refresh) SoftwareServo::refresh();
  }

  delay(50000);


  for (int pos = 180; pos > 0; pos -= 1) {
    myservo.write(pos);
    delay(15);
    if (refresh) SoftwareServo::refresh();
  }

  delay(50000);
}

Sam kod nie należy do ciężkich korzystamy z biblioteki SoftwareServo.h inicjalizujemy wejście 9 do którego podłączone jest nasze servo. Każda pętla for obraca nasze servo o jeden stopień. Po pokonaniu 180 stopni czekamy 50 sekund aż zawartość klepsydry opadnie na dół.
 
Całość projektu prezentuję się jak na filmie:
 

 
Jesli mamy troche czasu możemy pomyśleć nad jakimś ciekawym designem jak np.

design1

design2

design3

Kod źródłowy:
servo

Dodaj komentarz

WordPress Video Lightbox Plugin