Sensors
and
Actuators
with
Arduino
Hans-Pe4er
Halvorsen,
M.Sc.
h4p://arduino.cc
Arduino
is
an
open-source
physical
compu?ng
plaAorm
designed
to
make
experimen?ng
with
electronics
and
programming
more
fun
and
intui?ve.
Arduino
has
its
own
unique,
simplied
programming
language
and
a
lots
of
premade
examles
and
tutorials
exists.
With
Arduino
you
can
easily
explore
lots
of
small-
scale
sensors
and
actuators
like
motors,
temperature
sensors,
etc.
The
possibili?es
with
Arduino
are
endeless.
2
Lab
Topics
Overview
of
the
Arduino
PlaAorm
Sensors
and
Actuators
Overview
Overview
of
Temperature
Sensors
- Pt-100,
Thermistor,
Thermocouple
Basic
Data
Acquisi?on
(DAQ),
Data
Logging
Calibra?on,
Uncertainty,
Resolu?on,
Accuracy,
Range,
etc.
Lowpass
Filter
implementa?on
in
SoWware
Network
Communica?on
Reading
Data
sheets
Hardware
Breadboard
Arduino
UNO
Device
TinkerKit
Sensor
Shield
Tools
Tinkerkit
Sensors
and
Actuators
Sensors
and
Actuators
Mul?meter
Arduino
SoWware
Programming
with
Arduino
is
simple
and
intui?ve!
Arduino
Sketch
IDE
Example:
// include the TinkerKit library
#include <TinkerKit.h>
// creating the object 'led' that belongs to
the 'TKLed' class
TKLed led(O0);
void setup()
{
//do something here
}
void loop()
{
led.on(); // set the LED on
delay(1000); // wait for a second
led.off(); // set the LED off
delay(1000); // wait for a second
}
The
syntax
is
similiar
to
C
programming
This
program
makes
a
LED
blink
SoWware
Installa?on:
h4p://arduino.cc/en/Main/SoWware
Assignment
Overview
1. Arduino
Basics:
Explore
the
dierent
Sensors
and
Actuators
available
with
the
Arduino
Kit
2. Pt-100:
Create
your
own
Pt-100
sensor
with
Transmi4er
from
scratch
and
Read
Temperature
values
using
Arduino
3. Create
a
Temperature
Data
Logger/Embedded
DAQ
System
See
next
slides
for
more
details...
6
Sensors
and
Actuators
Theory
A
Sensor
is
a
converter
that
measures
a
physical
quan?ty
and
converts
it
into
a
signal
which
can
be
read
by
an
observer
or
by
an
(today
mostly
electronic)
instrument.
An
Actuator
is
a
type
of
motor
for
moving
or
controlling
a
mechanism
or
system.
It
is
operated
by
a
source
of
energy,
typically
electric
current,
hydraulic
uid
pressure,
or
pneuma?c
pressure,
and
converts
that
energy
into
mo?on.
An
actuator
is
the
mechanism
by
which
a
control
system
acts
upon
an
environment.
h4p://en.wikipedia.org/wiki/Sensor
h4p://en.wikipedia.org/wiki/Actuator
Sensors
CalibraDon:
A
comparison
between
measurements.
One
of
known
magnitude
or
correctness
made
or
set
with
one
device
and
another
measurement
made
in
as
similar
a
way
as
possible
with
a
second
device.
The
device
with
the
known
or
assigned
correctness
is
called
the
standard.
The
second
device
is
the
unit
under
test,
test
instrument,
or
any
of
several
other
names
for
the
device
being
calibrated.
Theory
Accuracy:
How
close
the
measured
value
is
the
the
actual/real
value,
eg.,
0.1
%
ResoluDon:
The
smallest
change
it
can
detect
in
the
quan?ty
that
it
is
measuring.
The
followig
formula
may
be
used
(where
S
is
the
measurment
span,
e.g.,
0-100deg.C):
In
the
assignment
you
need
to
deal
with
these
parameters.
You
nd
informa?on
about
these
parameters
in
the
Data
sheet
for
your
device
h4p://en.wikipedia.org/wiki/Calibra?on
h4p://en.wikipedia.org/wiki/Measurement_uncertainty
h4p://en.wikipedia.org/wiki/Accuracy_and_precision
Part
1
Arduino
Basics
Geeng
Started
with
Arduino
Hans-Pe4er
Halvorsen,
M.Sc.
Books
These
books
gives
you
an
introduc?on
to
Arduino.
These
books
are
availible
on
the
lab.
Selected
eBooks
from
Safari
Online
available
for
free
for
Students
and
Teachers
at
TUC
h4p://proquest.safaribooksonline.com/book/
hardware/arduino/9781118446430
h4p://proquest.safaribooksonline.com/book/
hardware/arduino/9780133764147
h4p://proquest.safaribooksonline.com/
book/hardware-and-gadgets/
9781449314668
Arduino
Uno
Board
Arduino
Basics
Breadboard
Sensors
and
Actuators
12
The
Arduino
Kit
Arduino
Uno
Board
Small-size
Sensors
and
Actuators
Geeng
Started
with
Arduino:
h4p://arduino.cc/en/Guide/HomePage
13
The
Arduino
Kit
Ardiono
Home
Page:
h4p://arduino.cc
The
Arduino
Starter
Kit:
h4p://arduino.cc/en/Main/ArduinoStarterKit
Starter
Kit
Videos:
h4ps://www.youtube.com/playlist?
feature=edit_ok&list=PLT6rF_I5kknPf2qlVFlvH47qHvqvzkknd
14
Geeng
Started:
Explore
some
of
the
the
following
sensors/actuators;
Arduino
with
Breadboard
LED,
Push
Bu4on
DC
Motor
Temperature
PWM/Servo-motor
and
DC-motor
etc.
Tinkerkit:
LED
Temperature
Poten?ometer
etc.
Part
2
Pt-100
Measurements
Hans-Pe4er
Halvorsen,
M.Sc.
Temperature
Measurements
Pt100:
Create
your
own
temporary
Pt-100
sensor
with
Transmi4er
(create
the
circuit
on
a
breadboard)
and
then
Read
Temperature
values
using
Arduino.
Suggested
Tasks:
Compare
with
exis?ng
Pt-100
with
Transmi4er
equipment
(Reference
Equipment)
Compare
with
Temperature
Sensors
available
within
the
Arduino
Kit
(TMP36,
Thermistor,...)
Compare
and
Discuss
the
following
Temperature
Measurements;
Pt-100,
Thermocouple,
Thermistor
(Measurement
principles,
etc.)
17
Pt-100
Wiring
N
Cable
clamp
Ground
Output
+24
V
RTDred
RTDwhite
Internal
terminal
block
RTDred
Pt100
transducer
<<<<<<<
Pt100
element
0
V
+
24
V
red
white
4-20
mA
~250
Pt100
24
V
PSU
Output
terminals
Output
red
Output
+
RTD
transducer
1-5
V
output
terminals
Important!
Test
the
output
of
your
circuit
BEFORE
connec?ng
it
to
the
Arduino
Analog
Input
with
a
Mul?meter
to
make
sure
the
voltage
is
not
higher
than
5V,
else
the
Arduino
will
be
damaged!
Create
you
own
Pt-100
Sensor
with
Transmi4er
Test
the
Device
using
Arduino
Temperature
TransmiSer
(0-100deg.
C)
Pt-100
h4ps://www.elfa.se/elfa3~eu_en/elfa/init.do?
item=76-690-51&toc=0&q=76-690-51
24VDC/0.25A
Power
Supply
h4ps://www.elfa.se/elfa3~eu_en/elfa/init.do?
item=76-895-74&toc=0&q=76-895-74
Breadboard
h4ps://www.elfa.se/elfa3~eu_en/elfa/init.do?item=69-061-79&toc=0&q=69-061-79
19
0
V
Important!!!
+
24
V
red
RTD
transducer
red
white
4-20
mA
~250
Pt100
+
1-5
V
output
terminals
Test
the
output
of
your
circuit
BEFORE
connec?ng
it
to
the
Arduino
Analog
Input
Use
a
Mul?meter
to
make
sure
the
voltage
is
not
higher
than
5V
If
not,
the
Arduino
will
be
damaged!
20
Small-scale
Temperature
Sensors
TMP36
h4ps://www.sparkfun.com/products/10988
h4ps://www.elfa.se/elfa3~eu_en/elfa/init.do?item=73-889-29&toc=0&q=73-889-29
NTC
Thermistor
h4ps://www.elfa.se/elfa3~eu_en/elfa/init.do?item=60-260-41&toc=0&q=60-260-41
Tutorial:
h4p://garagelab.com/proles/blogs/tutorial-using-ntc-thermistors-with-arduino
21
Voltage-based
Sensors
According
to
the
TMP36
datasheet,
the
rela?on
of
the
output
voltage
to
the
actual
temperature
uses
this
equa?on:
TMP36
temp
in
Celsius
=
(voltage
-
500)
/
10
mV
Where
the
voltage
value
is
specied
in
millivolts.
However,
before
you
use
that
equa?on,
you
must
convert
the
integer
value
that
the
analogRead
func?on
returns
into
a
millivolt
value.
You
know
that
for
a
5000mV
(5V)
value
span
the
analogRead
func?on
will
return
1024
possible
values:
voltage
=
(5000
/
1024)
*
output
Where
mV
output
=
analogRead(aichannel)
0-1023
A0-A5
Datasheet
Calcula?ons
Theory
Linear
rela?onship:
You
have
to
nd
a
(slope)
and
b
(intercept):
This
gives:
23
TMP36
Temperature
Sensor
Example
// We'll use analog input 0 to read Temperature Data
const int temperaturePin = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
float voltage, degreesC, degreesF;
voltage = getVoltage(temperaturePin);
// Now we'll convert the voltage to degrees Celsius.
// This formula comes from the temperature sensor datasheet:
Serial
Monitor
degreesC = (voltage - 0.5) * 100.0;
// Send data from the Arduino to the serial monitor window
Serial.print("voltage: ");
Serial.print(voltage);
Serial.print(" deg C: ");
Serial.println(degreesC);
delay(1000); // repeat once per second (change as you wish!)
}
float getVoltage(int pin)
{
return (analogRead(pin) * 0.004882814);
// This equation converts the 0 to 1023 value that analogRead()
// returns, into a 0.0 to 5.0 value that is the true voltage
// being read at that pin.
}
24
Resistance-based
Sensors
The
problem
with
resistance
sensors
is
that
the
Arduino
analog
Theory
interfaces
cant
directly
detect
resistance
changes.
Thermistor
This
will
require
some
extra
electronic
components.
The
easiest
way
to
detect
a
change
in
resistance
is
to
convert
that
change
to
a
voltage
change.
You
do
that
using
a
voltage
divider,
as
shown
below.
E.g.,
the
Steinhart-Hart
Equa?on
can
be
used
to
nd
the
Temperature:
By
keeping
the
power
source
output
constant,
as
the
resistance
of
the
sensor
changes,
the
voltage
divider
circuit
changes,
and
the
output
voltage
changes.
The
size
of
resistor
you
need
for
the
R1
resistor
depends
on
the
resistance
range
generated
by
the
sensor
and
how
sensi?ve
you
want
the
output
voltage
to
change.
Generally,
a
value
between
1K
and
10K
ohms
works
just
ne
to
create
a
meaningful
output
voltage
that
you
can
detect
in
your
Arduino
analog
input
interface.
NTC
Thermistor
Example
// Read Temerature Values from NTC Thermistor
const int temperaturePin = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
int temperature = getTemp();
Serial.print("Temperature Value: ");
Serial.print(temperature);
Serial.println("*C");
delay(1000);
}
double getTemp()
{
// Inputs ADC Value from Thermistor and outputs Temperature in Celsius
Serial
Monitor
int RawADC = analogRead(temperaturePin);
long Resistance;
double Temp;
// Assuming a 10k Thermistor. Calculation is actually: Resistance = (1024/ADC)
Resistance=((10240000/RawADC) - 10000);
// Utilizes the Steinhart-Hart Thermistor Equation:
// Temperature in Kelvin = 1 / {A + B[ln(R)] + C[ln(R)]^3}
// where A = 0.001129148, B = 0.000234125 and C = 8.76741E-08
Temp = log(Resistance);
Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp * Temp * Temp));
Temp = Temp - 273.15;
return Temp;
}
// Convert Kelvin to Celsius
Steinhart-Hart
Equa?on:
// Return the Temperature
26
Part
3
Temperature
Data
Logger/
Embedded
DAQ
System
Hans-Pe4er
Halvorsen,
M.Sc.
Temperature
Data
Logger/
Embedded
DAQ
System
You
use
the
PC
when
crea?ng
the
soWware,
then
you
download
the
soWware
to
the
Arduino
and
disconnect
the
USB
cable.
Use
a
9V
ba4ery
as
Power
Supply.
NTC
Thermistor
See
next
slides
for
details...
Use
dierent
Temperature
sensors
for
comparison,
i.e
log
data
from
at
least
2
dierent
sensors
at
the
same
?me.
28
Temperature
Data
Logger/
Embedded
DAQ
System
Create
a
Temperature
Logger/Embedded
DAQ
System.
Suggested
Tasks:
Create
and
use
a
Lowpass
Filter/Average
Filter
Alarm
func?onality:
Use
LEDs
with
dierent
colors
when
Temperature
is
above/below
the
Limits
Use
e.g.,
Arduino
Wi-
Fi/Ethernet
Shield
for
Communica?on
over
a
network
(or
use
the
microSD
card
on
these
shields)
Save
the
data
to
a
microSD
card
located
on
the
Wi-
Fi/Ethernet
Shield
-
or
connect
e.g.,
to
xively.com
or
temboo.com
which
is
free
datalogging
sites.
Log
Temperature
Data
for
e.g.,
24
hours
and
import
Data
into
Excel,
LabVIEW
or
MATLAB
for
Analysis
and
Visualiza?on
Use
e.g.
a
9V
ba4ery
as
power
source
to
make
it
portable
and
small
29
Arduino
Wi-Fi/Ethernet
Shield
h4p://arduino.cc/en/Reference/WiFi
With
the
Arduino
Wi-Fi/Ethernet
Shield,
this
library
allows
an
Arduino
board
to
connect
to
the
internet.
It
can
serve
as
either
a
server
accep?ng
incoming
connec?ons
or
a
client
making
outgoing
ones.
Arduino
Wi-Fi
Library:
h4p://arduino.cc/en/Reference/WiFi
Arduino
Ethernet
Library:
h4p://arduino.cc/en/Reference/Ethernet
SD
Library:
h4p://arduino.cc/en/Reference/SD
30
Discrete
Lowpass
Filter
Lowpass
Filter
Transfer
func?on:
We
dene:
Inverse
Laplace
gives
the
dieren?al
Equa?on:
We
use
the
Euler
Backward
method:
This
gives:
This
gives:
Filter
output
Noisy
input
signal
This
algorithm
can
be
easly
implemented
in
a
Programming
language
Xively
You
may
want
to
connect
e.g.,
to
xively.com,
a
free
datalogging
site
Use
the
Xively
for
Arduino
library
in
order
h4ps://xively.com
to
connect
and
store
measurement
data
from
your
Arduino
device
into
the
Xively
cloud
Arduino
xively.com:
h4ps://xively.com/dev/tutorials/arduino_wi-
Another
alterna?ve
is:
www.temboo.com
www.temboo.com/arduino
32
Hans-PeSer
Halvorsen,
M.Sc.
Telemark
University
College
Faculty
of
Technology
Department
of
Electrical
Engineering,
InformaDon
Technology
and
CyberneDcs
E-mail:
hans.p.halvorsen@hit.no
Blog:
hSp://home.hit.no/~hansha/
33