Сегодня я расскажу вам ,как создать простейший ПЛК. Для начала я расскажу вам, что такое ПЛК и для чего он нужен.
ПЛК — это программируемый логический контроллер с дисплеем. Главным его плюсом является модульность. Вы сами выбираете количество и тип интерфейсов, входов/выходов, которые будут располагаться «на борту» контроллера. Контроллер поддерживает до пяти многоканальных субмодулей ввода/вывода.
В статье я собираю простейший контроллер: он будет измерять температуру в Цельсиях с двух датчиков, выводя данные на экран.
1.Схема
Необходимые детали
Arduino UNO, breadboard, 2 датчика температуры DS18B20, резистор 4700 Ом, перемычки, экран.
Построив схему в Fritzing, соберем физическую схему
2.Код
Все компоненты готовы. Теперь нам нужно написать код, чтобы наш ПЛК заработал. Для начала вам необходимо установить некоторые библиотеки, ссылки которых я оставлю ниже:
http://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
http://github.com/PaulStoffregen/OneWire
http://github.com/milesburton/Arduino-Temperature-Control-Library
Загрузите следующий код на плату Arduino.
Теперь наш проект готов.Можем его протестировать:
//I2C bus support
#include <Wire.h>
//I2C
#include <LiquidCrystal_I2C.h>
//OneWire bus suport
#include <OneWire.h>
//DS18B20 temperature sensor support
#include <DallasTemperature.h>
//DS18B20 sensor pin
#define ONE_WIRE_BUS 8
// Setup a oneWire instance to communicate with any OneWire devices
// (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
lcd.begin();
lcd.backlight(); //Turns backlight on
sensors.begin();
}
void loop()
{
sensors.requestTemperatures();
//Read first sensor
float temp = sensors.getTempCByIndex(0);
//Print first sensor results
lcd.setCursor (0, 0 );
lcd.print("T1: ");
lcd.print(temp);
lcd.print(" ");
//Read second sensor
temp = sensors.getTempCByIndex(1);
//Print second sensor result
lcd.setCursor (0, 1 );
lcd.print("T2: ");
lcd.print(temp);
lcd.print(" ");
//Wait 0.1 sec
delay(100);
}
Как видите все работает. Температура датчика 1 меняется, когда мы подносим свечу.
Для удобства мы распечатали на 3д принтере корпус для экрана и проводов.
Также к Arduino можно подключить еще пару датчиков. Можете измерить влажность, количество пыли в комнате.
Удачных проектов вам!