Browsed by
Tag: Plc

Chloride Dosing System

Chloride Dosing System


Manufacturing drinking water is a process with different steps. The last step is called disinfection, used to destroy microorganisms in water. To achieve it, systems inject chlorine. This technique is called dosing. Dosing is the technique for controlling the addition of a substance to a flowing liquid or gas.  Dosing systems are designed to achieve the required dosing level by maintaining the control signal as a proportion of the fluid flow rate. In this post we are going to develop a chloride dosing system based on Arduino.

Equipment to be used

Dosing control equipment consists basically of the following elements:

  • A controller, in this case we will use an M-Duino PLC.
  • A flowmeter.
  • A dosing pump.
  • A dosing level sensor.nanodac-dosingcontrol

The following figure shows the general arrangement of the dosing control system: The dosing concentration measured by the dosing level sensor is used to stop the pump if a there is high concentration in the tank. The flowmeter provides the input of the control loop, which is connected to the pump (as the output).

Software and code

In this example, dosing level and flowmeter are configured as a 0-10V analog input. The pump works with a frequency driver. As we have to develop a control loop, we have created a PID controller linked to the specified input, output and setpoint. You can find the code to be uploaded here:2014111_arduino_codeKey Benefits

The main benefits of the Opiron – Industrial shields proposed solution are:

  • Flexibility: This application note describes how the Open source based hardware can be used to control the dosing level of a chlorine system. However this same architecture can be used with any liquid or gas using the PID algorithm.
  • Freedom to modify your software: You aren’t limited to what one company believes you need.
  • Easy to be integrated: No matter if you already have an automation system. The Arduino hardware is easy to integrate into your system..
Contact us!

Do you have a process to be automated? Contact Industrialshields to implement the entire solution and to buy the proper hardware.

Developing a packaging machine based on Arduino hardware

Developing a packaging machine based on Arduino hardware


Packaging machines are used to enclose and protect products for distribution, sale, and use. They are very popular in industry because they are safe, reliable, and usually integrated into the process line. They guarantee a big productivity.

In this project, Opiron Electronics will develop a basic packaging machine based on the Open Source Hardware PLC´s from IndustrialShields. Ardbox RelaySystem

Our packaging machine will have three basic control functions: HMI( the Human Machine Interface), PLC (the logic part of the control), and the Motion Control functionality. The main idea of the Project is to develop a reliable and flexible machine. We will make use of an Ardbox Relay as the main processor of the system, but, as packaging machines need to be integrated into more complex systems, as we saw in the Feeding a packaging machine with a frequency driver  post,  we will make use of an M-Duino PLC, which has Ethernet connectivity which can send data to an SCADA. The detailed hardware can be found at IndustrialShields the website.



Hardware and Operation

In this newsletter we are going to show just a part of the packing machine. This is a feeder and the lifter. The feeder consists of a piston, when a product is in front of the feeder, the feeder moves forward and the lifter downs a level. When the lifter is at the lower level, the entire product can be sent to the packaging part. PLC Programming Packing Machine_industrial_shields   The hardware components will be:

  1. Five mechanical switches (Reverse, forward, upper switch, middle switch and lower switch).
  2. 4 relays which are based in Arduino. 2 of them for the feeder (forward and reverse movement) and 2 more for the lifter (up and down movement).

Software and coding

As described above, the system works in six steps. Furthermore, the code has an additional but interesting feature: the capability to receive commands from another PLC (M-Duino), if an operator wants to stop the process remotely. Download the Arduino source code in the link below:   2014111_arduino_code    

Key benefits

  • Remotely control from another PLC capability.
  • Open Source hardware based, which it means reliable, cheap and expandable.
  • Easy to be installed.
Industrial shields Open Source Hardware Case Study: Air-conditioning system

Industrial shields Open Source Hardware Case Study: Air-conditioning system



HVAC systems usually have an available contactor that will allow us to connect a relay. Connecting the relay to an Ardbox Relay PLC, and the PLC to the Touchberry Pi, we will be able to control climate conditions remotely. In this project, Opiron Electronics proposes to make a basic control system with an interface that will enable us to activate the HVAC system remotely with the Ardbox Relay PLC and the Touchberry Pi HMI, both from IndustrialShields. The purposed SCADA that will run on the Touchberry Pi is the following:


Hardware and communication

We are going to use:

  • An Ardbox Relay PLC: This is a 18 digital inputs / outputs Arduino based PLC that offers the possibility of communication between two computers using I2C. For more details, see the following link.
  • A Touchberry PI 10.1″: The Touchberry Pi is a 10.1″ panel PC designed to work in industrial environments and based on the popular Raspberry Pi.  For more details, see the following link.

To communicate both devices, we will make use of the I2C communication. The main advantage to use this protocol is its flexibility as you can easily connect up to 128 slaves to the Touchberry Pi. See below the Software explanation for more details on how to do it. 


Software and code

As mentioned above, the purposed SCADA is owned by myscadatechnologies. We’ve chosen this SCADA because it is open source, available to be downloaded and tested on Raspberry Pi, which is Touchberry Pi processor based. Since the communication point of view, I2C needs one Master. The other device will be the slave. The Ardbox PLC Relay will be the slave and the Touchberry Pi the master. Regarding the Ardbox Relay, the code to be uploaded is the next one:


When the command received from the scada is activated, we will activate the relay. Regarding the Touchberry Pi software to be developed, basically, as well as installing the scada on our Touchberry Pi, we have to set it as a master in the I2C developed network, but before we need to enable the I2C module on the PI.

  1. As root edit /etc/modprobe.d/raspi-blacklist.conf and comment out the line blacklisting i2c-bcm2708
      $ cat /etc/modprobe.d/raspi-blacklist.conf # blacklist spi and i2c by default (many users don't need them) blacklist spi-bcm2708 #blacklist i2c-bcm2708

Next add i2c-dev to the /etc/modules file so it’s loaded on boot:

              # /etc/modules: kernel modules to load at boot time. # # This file contains the names of kernel modules that should be loaded # at boot time, one per line. Lines beginning with "#" are ignored. # Parameters can be specified after the module name. snd-bcm2835 ipv6 i2c-dev

Finally install i2c-tools:

  $ sudo apt-get install i2c-tools $ sudo adduser pi i2c

Finally, reboot the Touchberry Pi.

Key Benefits

The main benefits of the Opiron purposed solution are: –      Scalable system: The purposed system permits to connect multiple devices to the Touchberry Pi. –      Open Sourcebased: This feature means big flexibility, big availability of resources on the internet in case of failures or change implementations, etc. –      Remote control: Control climate conditions through an HMI panel.

  // Industrial Shields by BOOT & WORK CORP. // Powered by Opiron Electronics // Feb.2015 technical information for newsletter // The sketch demonstrates how to control a relay // with Ardbox Relay PLC and a Toucbberry Pi. // Keywords: Ardbox Relay PLC, Touchberry Pi. ////////////////////////////// //// PLC: ARDBOX RELAY PLC //// //// Number of inputs: 0 //// Number of outputs: 1 //// you need to configurate the correctly switch position for running like digital / analog or PWM mode ////////////////////////////// //// EXTERNAL BOX PIN NUMBERS: //// LEFT SIDE (Where Input Voltage lives). //// Pin 4 (RELAY 1) => (Box Pins: 0 and 1) //// Pin 5 (RELAY 2) => (Box Pins: 2 and 3) //// Pin 6 (RELAY 3) => (Box Pins: 4 and 5) //// Pin 7 (RELAY 4) => (Box Pins: 6 and 7) //// Pin 8 (RELAY 5) => (Box Pins: 8 and 9) //// Pin 9 (RELAY 6) => (Box Pins: 10 and 11) //// Pin 10 (RELAY 7) => (Box Pins: 12 and 13) //// RIGHT SIDE (The other side). //// Pin 11 (RELAY 8) => (Box Pins: 0 and A) //// //// Pin 13 => (Box Pin 1 Arduino Digital => 5Vdc output if pinMode(13,OUTPUT)) //// OR //// (Box Pin 1 Arduino Digital => 5Vdc input if pinMode(13,INPUT)) //// //// Box Pin 2 (GND) //// Box Pin 3 (GND) //// //// Pin 3 => (Box Pin 4) //// Pin 2 => (Box Pin 5) //// //// Pin A0 => (Box Pin 6) //// Pin A1 => (Box Pin 7) //// Pin A2 => (Box Pin 8) //// Pin A3 => (Box Pin 9) //// Pin A4 => (Box Pin 10) //// Pin A5 => (Box Pin 11) //// //// Analog pins 0 to 5. Put the jumper ON in case of digitalRead (24Vdc) otherwise analogRead (10Vdc) //// //Libraries #include //Library for I2C Master & Slave //Pins defintion #define Relay 4 // Relay //I2C Address for the Ardbox Relay PLC #define SLAVE_ADDRESS 0x04 // Variables int number = 0; // Functions void receiveData(int byteCount); void setup() { pinMode(Relay, OUTPUT); Serial.begin(9600); // start serial for output // initialize i2c as slave Wire.begin(SLAVE_ADDRESS); // define callbacks for i2c communication Wire.onReceive(receiveData); Serial.println(“Ready!”); } void loop() { //Nothing } // I2C Slave communication void receiveData(int byteCount){ while(Wire.available()) { number =; if (number == 1) { digitalWrite(Relay, HIGH); // Switch on the Relay } else if (number == 0) { digitalWrite(Relay, LOW); // Switch off the Relay } } }
Controlling the level of a tank for sewage treatment with an Arduino base PLC

Controlling the level of a tank for sewage treatment with an Arduino base PLC

10 Inputs / 10 Outputs
PLC Arduino ARDBOX 20 I/Os Analog


This project was undertaken to ensure the supply of a treatment plant for waste water purification. This required the correct filling of the tank that was responsible for providing the Dirty water. 2014111_Tratamiento_de_aguas


Ardbox is an easy, compact and economical way to automate your installation

10 Inputs / 10 Outputs
PLC Arduino ARDBOX 20 I/Os Analog

Signals configuration:

  • IN:                                                                                                                Ardbox Analog Signal
    • Full level Gravity filling tank (Digital input “24Vdc”)                          I0.1
    • Minimum level of Gravity filling tank (Digital input “24Vdc”)          I0.2
    • Level of storage tank (Analog input “0-10Vdc”)                                 I0.9
    • Auto/Manual Selector (Digital input “24Vdc”)                                   I0.3
    • Regulator quantity of Acid (Analog input “0-10Vdc”)                       I0.8
    • Regulator quantity of Flocculant (Analog input “0-10Vdc”)            I0.7
    • Ok water into processing plant ( Digital input “24Vdc”)                   I0.4
  • OUT:
    • Grinder pump (Digital output “ 24Vdc”)                                Q0.5
    • Acid dosing PUMP (Analog output “0-10Vdc”)                                   Q0.6
    • Filling pump to processing machine (Digital output “24Vdc”)         Q0.4
    • Flocculant dosing PUMP (PWM output “24Vdc”)                Q0.3
    • Full level Gravity filling tank (Digital output “24Vdc”)                       Q0.2
    • Air Electrovalve (Digital input “24Vdc”)                                               Q0.7
    • Red Light (Manual MODE)                                                                      Q0.8
    • Green Light (Auto MODE)                                                                       Q0.9

_2014111_water_treatment_V1_0 2014111_arduino_code

10 Inputs / 10 Outputs
PLC Arduino ARDBOX 20 I/Os Analog
Arduino Applications – Using Arduino as an Industrial PLC

Arduino Applications – Using Arduino as an Industrial PLC

Ardbox is an Arduino based PLC for Industrial use.  Most of the industry sensors work at 24 Vdc. As the standard ARDUINO works at a voltage of 5Vdc and 3.3Vdc depending on the different devices this in principle makes impossible its usage on industrial environments. This is the main reason why Industrial Shields has adapted the Arduino Industrial original electronic in order to let them work at 24Vdc and it has also has made sure that it meets all the requirements and industrial regulations.

The initial Arduino PLC developed by Industrial Shields are:

Each one of these devices looks for the maximum Arduino performance, being possible to be used as an industrial machine controller, automation processes, control systems, etc… Furthermore, if there is a need of a combination of the different Arduino PLCs, it is possible to use them in Master – Slave mode as the whole Ardbox family is prepared in order to offer a better and optimized control and communication with the machinery.