Mechaniczny termometr

Mechaniczny termometr

INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(

Mechaniczny termometr

Witam wszystkich czytelników. Kiedyś zrobiłem sobie prosty termometr. Temperatura była wyświetlana na wyświetlaczu LCD. Zacząłem go udoskonalać dodając automatyczne podświetlenie i alarm wysokiej temperatury. Dzisiaj wpadłem na pomysł aby zrobić coś podobnego tylko zamiast wyświetlacza użyć serwomechanizmu. Kiedyś ten pomysł wydawał mi się nie do wykonania. Ale teraz po 2 latach oswajania się i programowania w Arduino coś cię nauczyłem oraz podjąłem wyzwanie i tym oto sposobem powstał ten artykuł. Nie rozpisywałem się zbytnio aby artykuł był przejrzysty. Proszę o sugestie w komentarzach.

Potrzebne elementy :

Na płytkę CD należy nakleić podziałkę z temperaturą, którą możesz narysować lub wydrukować. Ważne jest to aby podziałka utworzyła kąt 180* czyli była narysowana na połowie płyty. Poszczególne temperatury powinny być umieszczone od siebie w równych odstępach.

Wzór :

 

termometr_cd

Podłączenie :

Bez tytułu

  1. Skrajne nóżki termometru należy podłączyć pod GND i Vcc, a środkową pod pin A0.

Należy pamiętać o podłączeniu termometru. Niewłaściwe podpięcie zasilania może go uszkodzić.

  1. Serwomechanizm jest podłączony pod pin 9.

Kalibracja :

Przed prawidłowym ustawieniem podziałki musisz w Serial porcie (monitorze szeregowym) odczytać aktualną temperaturę. Po odczytaniu temperatury możesz z kalibrować podziałkę z aktualnym położeniem serwa. ( Na serwomechanizm można nakleić strzałkę). Wartość serwa będzie wzrastała lub malała wraz z wartością podawanej aktualnie temperatury. Czas na program.

Program Arduino :

#include <Servo.h> // biblioteka

Servo myServo;

const int czujnikTemp = A0; // termometr pin A0
int odczyt;
int katObrotu; // kąt obrotu 

void setup() {
myServo.attach(9); // servo pin 9
 Serial.begin(9600);
}

void loop() {
 odczyt = analogRead(czujnikTemp);
float napiecie = (odczyt/1024.0) * 5.0;
 float temperatura = (napiecie - 0.5) * 100;

 katObrotu = map(temperatura, -10.0, 40.0, 0, 180); // temperatura a kąt obrotu
myServo.write(katObrotu);
 Serial.print("temperatura: "); // obecna temperatura
Serial.print(temperatura);
 Serial.println();
delay(1000); // opóźnienie
}

W programie w linijce :

katObrotu = map(temperatura, -10.0, 40.0, 0, 180);

została podana najniższa temperatura -10 a najwyższa 40. Jeśli temperatura otoczenia przekroczy te wartości to serwo będzie w lewym lub prawym skrajnym położeniu. Jeśli macie inną podziałkę możecie sobie zamienić te temperatury.

delay(1000); // opóźnienie

Ustawiłem 1 sekundę opóźnienia. Jeśli nie chcecie aby serwo cały czas się przesuwało to możecie ustawić np. na 5 sekund.

Zdjęcia :

IMG_20160411_144135 IMG_20160411_144143 IMG_20160411_144151

Miłej zabawy ;)

INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(

Ocena: 1/5 (głosów: 1)

Podobne posty

4 komentarzy do “Mechaniczny termometr

  • ehhhhh, identyczna rzecz była na forbocie, nie wysiliłeś się. Gdybyś wgrał to na atmege, włożył w jakąś obudowę i dał wskazówkę to by było fajnie, ale tak to….

    Odpowiedz
  • Czyli nie wpadł na pomysł, tylko skopiował go z kursu ;) Na dodatek opublikował już kiedyś bardzo podobny wpis na majsterkowo.

    Odpowiedz
  • No i mamy plagiatora… skopiowane jest wszystko…
    Nawet perfidnie “zamazany” znaczek Strefy kursów z tarczy – jak się już korzysta z czyjejś pracy (nawet tak trywialnej jak tarcza) to wypadało by chociaż wspomnieć o tym

    i pomyśleć, że jeszcze za pierwszym razem pomagałem jemu w kodzie, a on po prostu ŹLE PRZEPISAŁ go z filmu…

    “Ale teraz po 2 latach oswajania się i programowania w Arduino coś cię nauczyłem oraz podjąłem wyzwanie”
    To jest wyzwanie?
    Przypisywać sobie cudzą pracę?

    Arduino… tak się po prostu nie robi…

    Odpowiedz

Odpowiedz

anuluj

Masz uwagi?