Программируемый логический контроллер  для автоматизации процессов

Сегодня я расскажу вам ,как создать простейший ПЛК. Для начала я расскажу вам, что такое ПЛК и для чего он нужен.

ПЛК — это программируемый логический контроллер с дисплеем. Главным его плюсом является модульность. Вы сами выбираете количество и тип интерфейсов, входов/выходов, которые будут располагаться «на борту» контроллера. Контроллер поддерживает до пяти многоканальных субмодулей ввода/вывода. 

В статье я собираю простейший контроллер: он будет измерять температуру в Цельсиях с двух датчиков, выводя данные на экран.

 

1.Схема

Необходимые детали

Arduino UNO, breadboard, 2 датчика температуры DS18B20, резистор 4700 Ом, перемычки, экран.

Построив схему в Fritzing, соберем физическую схему

2.Код

Все компоненты готовы. Теперь нам нужно написать код, чтобы наш ПЛК заработал. Для начала вам необходимо установить некоторые библиотеки, ссылки которых я оставлю ниже:

https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library

https://github.com/PaulStoffregen/OneWire

https://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  можно подключить еще пару датчиков. Можете измерить влажность, количество пыли в комнате.

Удачных проектов вам!

 

Загрузка ...
The Robot
Adblock
detector