You are on page 1of 58

Embedded Microcontroller Systems

Overview
Performance metrics Synchronization methods I/O Devices and hardware interface issues Microcontroller in control systems Control block diagrams Actuators, plant, sensors Open loop, closed loop control Proportional and integral controllers

Performance Metrics
uC I/O Device

Latency time delay between when I/O device is ready for service and when uC responds.
input device time between when data is ready and when it is actually latched into uC output device time between when device is ready for new data and when it is sent.

Performance Metrics
uC I/O Device

Latency
Hardware delays in uC subsystems Software delays

Performance Metrics
uC I/O Device

Throughput maximum data flow (bytes per second) that can be processed from the I/O device.
can be limited by uC or by I/O device can be reported as long term average or short term maximum

Performance Metrics
uC I/O Device I/O Device

Priority determines the order of service when more than two or more devices request at the same time.
determines if a high-priority device can suspend a lowpriority request that is currently being processed. may want to implement equal priority so that no device monopolizes the uC.

Real time systems


Hard real-time guarantees a maximum latency. Soft real-time system supports priority.

Synchronization Methods
I/O devices can be in one of 3 states
idle disabled or inactive, no I/O occurs busy working on generating an input (input I/O) or accepting an output (output I/O) done ready for a new transaction.

Busy to done transitions cause status flags to become true.

Synchronization Gadfly Loop


Polling loop Gadfly loop Busy-waiting loop software checks status flag in a loop that does not exit until the status new data, gadfly loop completes flag is set.
INPUT DEVICE:
waiting for input - busy new input is ready - done

software reads data, asks for another

Synchronization Gadfly Scenarios No Buffering Input Device:


busy uC software:
waiting for new read process input data data

done

busy

done

I/O bound
waiting read data

Input Device:
busy done waiting busy done waiting busy

uC software: process data

CPU bound
read process data data read process data data

Synchronization Gadfly Scenarios Buffering


Input Device:
busy done busy done busy done busy

BUFFER

As long as buffer is large enough, both software and I/O can operate at their maximum rate

process data
uC software:

read process data data

read process data data

Synchronization Blind Cycle


Software waits a fixed amount of time and assumes I/O will complete within the delay. No status flag from I/O device. Used for I/O that has predictable delays.
Input Device: busy
done busy done

uC software: process waiting read process data data data

waiting read data

fixed delay

Synchronization - Interrupts
Interrupts hardware causes software to execute ISR.
Global data structures used to communicate data between main program and ISR. Timer interrupts used to execute specific functions at regular intervals.

Synchronization - Interrupts
Use interrupts when:
Arrival times of input is variable. There are other things to do in main program. I/O is important (alarm, hardware failure) but infrequent.

Buffering can also be used with interrupts to allow for better throughput. Must not forget that interrupts slow the main program loop!

Buffering FIFO Queue


Producer (uC or I/O) Put FIFO Get Consumer (uC or I/O)

Data is received (Get) in the same order that it was transmitted (Put) As long as FIFO is not full or empty, both producer and consumer operate at their own rate. Need a way for producer and consumer to know if FIFO is full or empty.

Synchronization Periodic Polling


Periodic polling uses a clock/timer interrupt to periodically check the I/O status.
Used in cases where interrupts are desirable (there is much to do in the main program) but the I/O device does not support interrupts. Keypad is an example will investigate in the next exercise.

Synchronization - DMA
Direct Memory Access I/O transfers data directly to/from memory.
Requires a DMA controller between memory and I/O device. Used when bandwidth and latency are important parameters. Data transfer only no processing of data.

DMA
Burst mode DMA a block transferred while the uC is halted
used when uC and DMA rates are similar

Cycle-stealing DMA data is transferred during cycles when the uC is not using the bus.
used when uC rate is faster than I/O DMA Controller uC

addr Memory data

I/O device

Slow I/O Interface


Keypad how slow can we go?

I/O Devices and hardware interface issues


Overview: Categories of I/O
Input and Output examples Output actuator examples
DC Motor (analog and digital control) Stepper Motor

Output display example LCD display (parallel and serial)

Input devices

I/O Categories

Sensors, User-input

Output devices
Actuators, Displays

Complex I/O devices (printers, faxes, coprocessors, etc)

Analog I/O
Voltage levels Current draw Sampling frequency Noise

Digital I/O
- Voltage levels - Synchronization - Throughput - Noise

Input Examples
Sensors
light force sound position orientation proximity tactile temperature pressure humidity speed acceleration displacement

User input
keyboards joysticks mouse keypad switches touchpad dial slider

Output Examples
Actuators
motors solenoids relays heaters lights piezoelectric materials (buzzers, linear actuator) speakers

Displays
LED displays LCD displays CRT displays indicator lights indicator gauges

Example DC Motor
Important in LOTS of applications
cameras, drives, elevators, trains, robots

Many types, but all work similarly:


Apply voltage across + and leads, electrical energy is converted to mechanical energy. For some range of voltage, the torque of the motor shaft is proportional to value of voltage.

DC Motor
Current required by motor depends on how it is loaded. Current is almost always more than the uC can provide. Need an interface circuit between uC and motor.
Motor current (A)

loaded no load

Applied voltage (volts)

Interfacing Motors
Digital Outputs
Basic idea is to use a switch of some kind to isolate current in uC from motor current. Motor is an inductor though, so it stores current. Flyback diode used to route current away from switch when switch opens to avoid damage to switch.
flyback diode External Voltage +

switch open current

motor Control signal from uC

Interfacing Motors
Digital Outputs H-Bridge circuit topology that allows bidirectional control of motor.
Each switch controlled by an output of the uC.
motor

+ external voltage -

Switches implemented by relays, solid-state switches, or transistors Diodes omitted for simplicity.

Interfacing Motors
Analog Output 8051 DAC can provide up to 15 mA of current, up to 3.3V voltage. Must provide both voltage and current amplification to drive a DC motor.
Amplifiers Power MOSFETs Motor driver ICs Relays
used in the upcoming control lab

Stepper Motors
Inherent digital interface Can easily control both position and velocity Used in disk drives, printers, etc. Small, fixed rotation per change in control signals

Basic Operation
Simplified stepper motor
phase 2 + + phase 1 -

5 teeth 360 5 = 72 moves 72 per step Changing polarity of stator magnets causes step.

rotor
electromagnets stator

Typical stepper motors have 200 steps per revolution, with 1.8 per step.

Stepper Motor Interface


+Vmotor VDD 8051 port pins Inverting buffers
A A B B

4-phase stepper motor

1010 1001 0101 0110 1010

1.8 1.8 1.8 1.8

Output Display Example: LCD Display LCD Liquid Crystal Display


Lower power than LED display More flexible in size and shape Slower response time

AC voltage required DC voltage damages LCD Control changes reflectivity of the liquid crystal material. Actual light energy supplied by room light or back light. front plane
CMOS
back plane control

LCD Operation

60 Hz Oscillator

liquid crystal material

LCD Interfacing
Simple parallel interface similar to LED:
VDD 8051
7-segment LCD Driver/Decoder
Separate Front Planes a b c d e f g

port pins
60 Hz Oscillator

A B C D

Common Back Plane

LCD Interfacing
Serial driver interface
data in

clock

MC145000 LCD Driver 48 bit shift register 48 bit latch register


BP1 BP2 BP3 BP4 FP1 FP2 FP3 FP4 FP5 FP6 FP7 FP8 FP9 FP10 FP11 FP12

data out

48 segment LCD display

Using Microcontrollers for Control


Overview
Open-loop control systems Simple closed-loop control systems Closed-loop position control PID controllers

Some Terminology
Control variables properties we want to control (position, velocity, temperature, etc) Control commands output to actuators Driving forces the actuator forces that cause the control variables to change (heat, force, etc) Physical plant the thing being controlled

Open-loop Control Systems


No feedback path from the plant Note that these are all a function of time
Desired control variables X*(t) Control commands U(t)

uC

Actuators

Real Driving control Forces variables V(t) Physical X(t)

Plant

Open-loop Control Example


Stepper motor
Desired control variables X*(t) desired shaft position specified in program Control commands U(t) Real Driving control Forces variables V(t) Physical X(t)

uC

Actuators

Plant

Inverting driving buffers

uC

stepper motor

shaft position

Open-loop Control Example


Traffic light controller
Inverting driving buffers

uC

desired light pattern in software

Closed-loop Control
Feedback from plant to controller
Control commands U(t)

Desired control variables X*(t)

uC

Actuators

Real Driving control Forces variables V(t) Physical X(t)

Plant

Sensor

Closed-loop Control Bang-bang control


Bang-bang control output can only turn something ON or OFF. No variable control. Requires a deadband or hysteresis which defines a range of acceptable values for output - otherwise the control system components can wear out from too many switching cycles. (Relays, for example, have a limited lifetime). Works well with physical plant with a slow response time.

Bang-bang control temperature control example.


Desired temperature, Tlow < T < Thigh

Closed-loop Control Systems

plant
Heater

Flowchart of control algorithm


estimate T

uC
T > Thigh

T
Leave

T < Tlow

Temperature sensor

Turn off

Turn on

Closed-loop Position Control


Incremental control adds or subtracts a small constant from the output control command, U(t), in response to X(t) sensed. Real
Desired control variables X*t Control commands U(t)

uC
+1 or -1

Actuators

Driving control Forces variables V(t) Physical X(t)

Plant

Sensor

Incremental Control
Rate of sampling is very important
If sampling rate is too fast, actuators are saturated and a bang-bang system results. If sampling rate is too slow, then controller will not keep up with plant.

Rule of thumb for rate: control execution rate is 10x the step response of the plant. Must check for underflow and overflow after increment or decrement.

Closed-loop Control PID Controller


Faster and more accurate than previous systems. Based on linear control theory. Three components sometimes fewer are used.
Proportional output is linearly related to error signal. Integral output is related to integral of the error signal. Derivative output is related to derivative of the error.

PID Controller
To understand, must transform parts of control diagram into discrete time domain. Very important to have periodic sampling and processing. In the figure below, n is the sample number
Real control variables x(t) Physical

Desired output + x*

e(n)

uC
PID controller

u(n)

Actuator

p(t)

x(n)

Plant

Sensor
error signal: e(n) = x*(n) - x(n)

PID Controller
u(t) = P(t) + I(t) + D(t)
Proportional output is proportional to error input Continuous time: P(t) = Kp * E(t) Discrete time: P(n) = Kp * E(n)

Desired output + x*

e(n)

uC
PID controller

u(n)

Actuator

p(t)

x(n)

Physical Plant

Actual Output x(t)

Sensor

PID Controller
u(t) = P(t) + I(t) + D(t)
Integral output is proportional to integral of error signal Continuous time: I(t) = Ki E(t) dt Discrete time: I(n) = Ki E(n) t = Ki t E(n) e(t) t I(t) t I(n)
t

I(n)

Ki large
n

I(n)
1 2 3 4 5

Ki small

n t is sampling period

Equation for Integral Component


Discrete time: I(n) = Ki t E(n)
integral += errorsig; //integral = integral + errorsig //integral is sum of errorsignals //integral includes: M_MEAS samples of error //multiplied by GAIN_PRECISION ... output = Kp*errorsig / M_MEAS/GAIN_PRECISION + Ki * integral / M_MEAS / SAMPLERATE /GAIN_PRECISION

= 1/t

PID Controller
u(t) = P(t) + I(t) + D(t)
Derivative output is proportional to derivative of error signal dE Continuous: D(t) = Kd* dt Discrete: D(n) = Kd * E(n) E(n-1) t t is sampling period

PI Controller for Position Control


(we will not use the derivative term, which can cause instability)
Desired position 1* (potentiometer) Actual position 2(t)

DC Servo p(t) PI Amplifier Motor 2(n) u (n) controller b


uf(n) potentiometer

uC

PI Controller Hardware Setup


8051 Microcontroller
setpoint potentiometer -15 to +15V

output potentiometer -15 to +15V

Input voltage conversion interface

ADC0.0
0 - 2.45V

multiplexor

ADC0
DAC0 DAC0
0 - 2.45V

ADC0.1
0 - 2.45V

DAC1

DAC1
0 - 2.45V

Output voltage conversion to SA1SOD Input 2 interface

to SA1SOD Input 1

Circuit Schematics for Interface Circuits


Input voltage conversion interface
Output voltage conversion interface

PI Control Algorithm
Controller must execute the following tasks:
Sample inputs Compute error value Compute integral value Compute output signal from error value, integral value and preset Kp and Ki. Send computed output signals to amplifier

Controller Performance Metrics


Stability a requirement Response time how fast the output responds to the input. Steady state error how much the output differs from the input after it has settled. For position controller DEADBAND is a measure of the steady state error.

Total DeadBand Measurements


input position
1

output position
2

DB (1) = 1- 2

repeat for a negative angle, - 1

DB (-1) = 2- 1

TDB(1) = |DB(1)| + | DB(-1)|

Control your position!


Prelab software only

You might also like