Sterownik akwarium Arduino UNO



Podobne dokumenty
Systemy wbudowane. Paweł Pełczyński

Oprogramowanie klawiatury matrycowej i alfanumerycznego wyświetlacza LCD

FUNKCJE STEROWNIKA PK-35 PID

Mikrokontrolery AVR. Konfigurowanie mikrokontrolera ATMEGA16

Kontrola wytwarzania energii w systemach PV

OŚWIETLENIE PRZESZKLONEJ KLATKI SCHODOWEJ

STEROWNIKI NANO-PLC NA PRZYKŁADZIE STEROWNIKA LOGO!

architektura komputerów w. 6 Pamięć I

Type ETO2 Controller for ice and snow melting

Systemy wbudowane Mikrokontrolery

Opracował: mgr inż. Marcin Wieczorek

2.1 INFORMACJE OGÓLNE O SERII NX

PRZETWORNIK NAPIĘCIE - CZĘSTOTLIWOŚĆ W UKŁADZIE ILORAZOWYM

Architektura Systemów Komputerowych. Sterowanie programem skoki Przerwania

STEROWNIK BIOLOGICZNYCH OCZYSZCZALNI ŚCIEKÓW

INSTRUKCJA UŻYTKOWANIA. Projekt: Syrena. wersja: Program: Krzysztof Gosławski Kontakt:

DYSTRYBUCJA : DJ-DISTRIBUTION NUMARK POLSKA

Systemy mikroprocesorowe - projekt

PROGRAMATOR "WinProg-1" Instrukcja obsługi

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski

TMW HC912 PROGRAMATOR MIKROKONTROLERÓW MOTOROLA HC912

ANALOGOWE UKŁADY SCALONE

Bazy danych. Andrzej Łachwa, UJ, /15

INSTRUKCJA Płytka uruchomieniowa EvB 4.1 Instrukcja obsługi

CZYM KIEROWAĆ SIĘ PRZY WYBORZE AUTOMATYKI GRZEWCZEJ?

INSTRUKCJA OBS UGI

Moduł z kontrolerem AtMega32

Elementy podłączeniowe.

yoyo ver. 6.0

Podstawy Elektrotechniki i Elektroniki

Elementy cyfrowe i układy logiczne

Zakres pomiaru (Ω) Rozdzielczość (Ω) Dokładność pomiaru

Strategia rozwoju kariery zawodowej - Twój scenariusz (program nagrania).

Moduł GSM generacja 1

Budowa systemów komputerowych

PRZETWORNIK IMPULSÓW, CZĘSTOTLIWOŚCI, CZASU PRACY P17

Macierze dyskowe RAID

Transformator Elektroniczny do LED 0W-40W Współpracuje z inteligentnymi ściemniaczami oświetlenia. Instrukcja. Model: TE40W-DIMM-LED-IP64

Pomiar mocy pobieranej przez napędy pamięci zewnętrznych komputera. Piotr Jacoń K-2 I PRACOWNIA FIZYCZNA

CT-AHS / CT-ARS CT-MBS / CT-MFS. (PL) Instrukcja instalacji i obsługi Elektroniczne przekaźniki czasowe, serii CT-S

Sterownik PK-35 PID WYGLĄD STEROWNIKA

ZL11ARM. Uniwersalna płyta bazowa

Instrukcja obsługi zamka. bibi-z50. (zamek autonomiczny z czytnikiem identyfikatora Mifare)

W dobie postępującej digitalizacji zasobów oraz zwiększającej się liczby dostawców i wydawców

Konfiguracja programu RMS do współpracy z wagami DIBAL. Programowanie artykułów 3

888 A 888 V 1. ZASTOSOWANIE 2. BUDOWA GENERATOR NAPIĘCIA 3-FAZOWEGO L2 L3 N PE

Tytuł: Język C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji. Autor: Tomasz Francuz. Wydawnictwo: Helion.pl

Ultrasonic Ranging Module on STM32F4

Zestawienie wartości dostępnej mocy przyłączeniowej źródeł w sieci RWE Stoen Operator o napięciu znamionowym powyżej 1 kv

Ćwiczenie nr 2 Zbiory rozmyte logika rozmyta Rozmywanie, wnioskowanie, baza reguł, wyostrzanie

EC1000 KATALOG SYSTEMÓW STEROWANIA

CHEVROLET MYLINK. Krótki przewodnik

PODSTAWY DZIAŁANIA UKŁADÓW CYFROWYCH

Pomiar temperatury Czujnik temperatury TMP36

Allure EC-Smart-Vue - Modele z czujnikami CO 2 i ruchu

Bufory danych wilgotności i temperatury TR100-A/TR200-A Nr produktu

Oprogramowanie, sterowniki i dokumentacja

ZAMEK KODOWY W MODULE KOMBI Nr Ref. 1105/1

Windows Serwer 2008 R2. Moduł 3. DHCP

CYFROWY WYŚWIETLACZ POŁOŻENIA TNP 10

KB-01. Sterownika silnika krokowego bipolarnego dwufazowego INSTRUKCJA OBSŁUGI. 9. Eksploatacja sterownika KB-01:

DOKUMENTACJA TECHNICZNO-RUCHOWA DTR. Regulator obrotów Obrotowego wymiennika odzysku ciepła Mini Start. (Flexomix ) (Envistar Top 04-10)

linkprog programator USB

WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH

INSTRUKCJA TERMOSTATU

Wskaźnik poziomu wody Kemo M167N, 10 diod LED, 3 V/DC

Opis obsługi systemu Ognivo2 w aplikacji Komornik SQL-VAT

Czteropompowy zestaw do podnoszenia ciśnienia ZKA35/3-6/4

Segmenty rynku sterowników. Segmenty rynku sterowników. Segmenty rynku sterowników. Typy budowy sterowników. Typy budowy sterowników

Tester pilotów 315/433/868 MHz

Przemienniki częstotliwości

Skrócony opis instalacji Sympodium DT770 Interaktywny ekran z cyfrowym piórem

ROZDZIAŁ 1 Instrukcja obsługi GRAND HAND VIEW III

Rys 2. Schemat obwodów wejściowo/wyjściowych urządzeń w magistrali I2C

PRZEKAŹNIK DOMOFONOWY NR REF. P3E

INSTRUKCJA OBSŁUGI URZĄDZENIA: HC8201

Architektura komputerów

INSTRUKCJA Płytka uruchomieniowa EvB 4.3 v3

Kurs obsªugi interfejsu I2C.

Falowniki wektorowe. Goodrive

PODSTAWOWE ELEMENTY ELEKTRONICZNE

Tester pilotów 315/433/868 MHz MHz

do aparatów grzewczo-wentylacyjnych

Bojszowy, dnia r. Znak sprawy: GZOZ/P1/2010 WYJAŚNIENIE TREŚCI SIWZ

NACZYNIE WZBIORCZE INSTRUKCJA OBSŁUGI INSTRUKCJA INSTALOWANIA

INSTRUKCJA OBSŁUGI WD2250A. WATOMIERZ 0.3W-2250W firmy MCP

MOELLER PS Stanowisko Laboratoryjne. Zakład Napędu ISEP PW

Zagospodarowanie magazynu

Aneks 2. Czytniki kodów kreskowych

INSTRUKCJA MONTAŻU I OBSŁUGI BATERIE SERII SENSO

Program szkoleniowy Efektywni50+ Moduł III Standardy wymiany danych

Projekt Studenckiego Koła Naukowego CREO BUDOWA GENERATORA WODORU

Sterownik Silnika Krokowego GS 600

raceboard-s Szybki start

System audio na skrętkę

Zdalne odnawianie certyfikatów do SWI

Lekcja 173, 174. Temat: Silniki indukcyjne i pierścieniowe.

Programowanie Zespołowe

HiTiN Sp. z o. o. Przekaźnik kontroli temperatury RTT 4/2 DTR Katowice, ul. Szopienicka 62 C tel/fax.: + 48 (32)

Transkrypt:

Sterownik akwarium Arduino UNO Marcin Waliłko 3 EF-DI L07

1. Arduino To platforma programistyczna dla systemów wbudowanych oparta na prostym projekcie Open Hardware przeznaczonym dla mikrokontrolerów montowanych w pojedynczym obwodzie drukowanym, z wbudowaną obsługą wejścia/wyjścia oraz standaryzowanym językiem programowania. Język programowania Arduino jest oparty na środowisku Wiring i zasadniczo na języku C/C++ (kilka prostych przekształceń kodu wykonywane przed przejściem do avr-gcc). Celem projektu Arduino jest przygotowanie narzędzi ogólnodostępnych, tanich, nie wymagających dużych nakładów finansowych, elastycznych i łatwych w użyciu przez hobbystów. Częściowo Arduino stanowi również alternatywę dla osób, które nie mają dostępu do bardziej zaawansowanych kontrolerów, wymagających bardziej skomplikowanych narzędzi. 2. Hardware Płyta Arduino składa się z 8-bitowego mikrokontrolera Atmel AVR z uzupełniającymi elementami w celu ułatwienia programowania oraz włączenia innych układów. Ważnym aspektem jest standardowy sposób, w jaki wyprowadzone są złącza, pozwalające na podłączenie płyty z mikrokontrolerem do różnych wymiennych modułów dodatkowych (nazywanych shieldami). Oficjalne płyty Arduino wykorzystują układy z serii megaavr, a konkretnie ATmega8, ATmega168, ATmega328, oraz ATmega1280 i ATmega 2560. Kilka innych układów jest wykorzystywanych w klonach Arduino. Większość płyt zawiera 5V regulator napięcia, 16 MHz rezonator kwarcowy (w niektórych odmianach rezonator ceramiczny), chociaż niektóre projekty, takie jak LilyPad działają na częstotliwości 8 MHz i rezygnują z regulatora napięcia na płycie ze względu na szczególne ograniczenia wielkości układu. Mikrokontroler Arduino jest wstępnie zaprogramowany z wykorzystaniem programu rozruchowego, co upraszcza przesyłanie programu do pamięci flash układu, w porównaniu do innych urządzeń, gdzie najczęściej potrzebny jest zewnętrzny programator mikrokontrolera. 3. Oprogramowanie Arduino IDE jest wieloplatformową aplikacją napisaną w języku Java, wydzieloną z IDE przygotowanego dla języka Processing i projektu Wiring. Środowisko jest zaprojektowane w taki sposób, aby było przyjazne dla hobbystów i osób niezajmujących się tworzeniem oprogramowania. IDE zawiera edytor kodu z takimi funkcjami jak podświetlanie składni czy automatyczne wcięcia w kodzie, oraz pozwala na kompilację i upload programu do płyty Arduino. Zazwyczaj nie ma potrzeby dodatkowej edycji plików Makefile lub uruchamiania programów z linii poleceń. Standardowo IDE Arduino zawiera bibliotekę C/C++ o nazwie "Wiring" (z projektu o tej samej nazwie), dzięki czemu wykonywanie podstawowych operacji wejścia / wyjścia staje się znacznie łatwiejsze. Programy dla Arduino są napisane głównie w języku C/C++, jednak użytkownicy muszą zdefiniować jedynie dwie funkcje, aby otrzymać gotowy do uruchomienia program:

setup() funkcja wykonywana raz, na początku działania programu, wykorzystywana najczęściej do ładowania ustawień, loop() funkcja wywoływana wielokrotnie, przez cały okres działania programu, czyli do czasu odłączenia zasilania od układu. 4. Założenia projektu Projekt ma za zadanie sterować akwarium: - sterować oświetleniem sterowanie oświetleniem jest automatyczne i zależne od pory dnia (godziny), - sterowanie grzałką sterowanie grzałką odbywa się na podstawie temperatury, poniżej zadanej temperatury grzałka pracuje w cyklu 3s+2s, aby uniknąć nadmiernego nagrzania się wody na małej objętości, ponieważ mogłoby to negatywnie wpłynąć na funkcje życiowe ryb, - pomiar temperatury obecna temperatura jest wyświetlana wyświetlaczu LCD i jest to uśredniona wartość z czujnika LM35 z okresu 200ms, - zegar możemy ustawić zegar, który jest wyświetlany na LCD, zegar jest realizowany na za pomocą funkcji millis(), 5. Elementy użyte do realizacja projektu Do realizacji projektu potrzebowałem następujących elementów: - Arduino UNO, - czujnik temp lm35dz, - wyświetlacz LCD 16x2, - 4 rezystory 100Ω, - 4 diody LED (w domyśle jedna emituje grzałkę), - przewody połączeniowe, - 2 prfzyciski, - 1 potencjometr, 6. Specyfikacji Arduino UNO Microcontroller ATmega328 Operating Voltage 5V Input Voltage (recommended) 7-12V Input Voltage (limits) 6-20V Digital I/O Pins 14 (of which 6 provide PWM output) Analog Input Pins 6 DC Current per I/O Pin 40 ma DC Current for 3.3V Pin 50 ma Flash Memory 32 KB (ATmega328) of which 0.5 KB used by bootloader SRAM 2 KB (ATmega328) EEPROM 1 KB (ATmega328) Clock Speed 16 MHz Length 68.6 mm Width 53.4 mm Weight 25 g

Schemat podłączenia w programie fritzing 7. Program #include <LiquidCrystal.h> LiquidCrystal lcd(12,11,5,4,3,2); float temp=0; // temperatura akwarium char czujnik = 0; // pin na czujnik char flag=0; //flaga pomocnicza przy ustalaniu ogrzewania akwarium unsigned long pom=0, pom2; // zmienna pomocnicza przy ogrzewaniu akwarium static unsigned long lasttick = 0; //zmienna pomocnicza do wyliczania czasu unsigned long ss=0, pom4=0; // czas w sekundach, chyba lepsza opcja niz kazdorazowe wyliczanie czasu unsigned long suma=0; unsigned int licznik=0; int tempa=0; unsigned char second=0, minute=0, hour=0; //zmienne czasu char diod_1=6, diod_2=9, diod_3=10; //piny do oswietlenia char grzalka=13; // pin grzałki char hourbutton = 8, minutebutton = 7; // piny przycisków char diodapin = 8; // to już jest dla nas jasne :) char potpin = 0; // przypisujemy do zmiennej numer wejścia analogowego void setup() { pinmode(hourbutton, INPUT_PULLUP);

pinmode(minutebutton, INPUT_PULLUP); pinmode(diod_1, OUTPUT); pinmode(diod_2, OUTPUT); pinmode(diod_3, OUTPUT); pinmode(grzalka, OUTPUT); lcd.begin(16,2); lcd.print("sterownik"); lcd.setcursor (0,1); lcd.print("akwarium"); delay(500); void loop() { if (millis() - lasttick >= 1000) { lasttick = millis(); second++; ss++; if (second >= 60) { minute++; second = 0; if (minute >= 60) { hour++; minute = 0; if (hour >= 24) { hour = 0; if (millis() - pom4 >= 200) { pom4 = millis(); if(digitalread(minutebutton)==0) { minute++; // ustawianie czasu if(digitalread(hourbutton) == 0) hour++;lcd.clear(); if(hour <10){ lcd.print("0"); lcd.print(hour); else lcd.print(hour); lcd.print(":"); if(minute <10){ lcd.print("0"); lcd.print(minute); else lcd.print(minute); lcd.print(":"); if(second <10){ lcd.print("0"); lcd.print(second); else lcd.print(second); suma=suma/licznik; temp=(suma*4.8511*100)/1024; // wartosc wysnaczona eksperymetalnie na podstawie innego temometru suma=0;

licznik=0; lcd.setcursor(0,1); lcd.print("temp: "); lcd.print(temp); licznik++; tempa = analogread(czujnik); suma=suma+tempa; if (temp<27 && flag==0) { //warunek w ktorym ustawiamy temperature w akwarium flag=1; pom=ss; digitalwrite(grzalka, 1); if (ss-pom==3) {digitalwrite(grzalka, 0); //warunek ile caszu grzałka bedzie grzać w sekundach pom2=ss; if (ss-pom2==2) flag=0; // warunek ile czasu grzłka nie będzie grzać w sekundach if(hour>=6 && hour <18){ //ustalenie jak ma pracowac oswietlenie akwarium digitalwrite(diod_1, 0); digitalwrite(diod_2, 0); digitalwrite(diod_3, 1); else if(hour>=18 && hour <=23){ digitalwrite(diod_1, 1); digitalwrite(diod_2, 0); digitalwrite(diod_3, 0); else{ digitalwrite(diod_1, 0); digitalwrite(diod_2, 1); digitalwrite(diod_3, 0); 8. Link do filmu obrazującego działanie: https://www.youtube.com/watch?v=7-1c38wnnne