Outcome 3 - Microcontroller Controlled Mechatronic Systems

fiercebunΗλεκτρονική - Συσκευές

2 Νοε 2013 (πριν από 3 χρόνια και 10 μήνες)

176 εμφανίσεις

Technological Studies:
Systems and Control Students’ Course Notes (H) Outcome 3

1

What is a microcontroller?


A
microcontroller

is often described as a
'computer
-
on
-
a
-
chip'. Microcontrollers have
memory, processing units, and input/output
circuitry all built into a single chip. As they are
small and inexpensive they can easily be built

into other devices to make these products more
intelligent and easier to use.


Microcontrollers are usually programmed to
perform one specific control task
-

for instance,
a microwave oven may use a single microcontroller to process information from the
keypads, display user information on the seven segment display, and control the
output devices (turntable motor, light, bell and magnetron).


Microcontrollers are computers designed to control specific processes or products.
The microcontroller is program
med with a specific software program to complete the
desired task. By altering this software program the same microcontroller can be used
to complete different tasks. Therefore the same device can be used in a range of
different products by simply programm
ing it with a different software program.


One microcontroller can often replace a number of separate parts, or even a complete
electronic circuit. Some of the advantages of using microcontrollers in a product
design are:




increased reliability and reduc
ed stock inventory (as one microcontroller replaces
several parts)



simplified product assembly and smaller end products



greater product flexibility and adaptability since features are programmed into the
microcontroller and not built into the electronic ha
rdware



rapid product changes or development by changing the program and not the
electronic hardware


Applications that use microcontrollers include household appliances, alarm systems,
medical equipment, vehicle subsystems, and electronic instrumentation.
Although
microprocessor syste
ms (such as those based around the Intel Pentium™ processor)
tend to be more widely publicised (mainly via personal computer systems),
microcontroller manufacturers actually sell hundreds of microcontrollers for every
microprocessor sold.

Technological Studies:
Systems and Control Students’ Course Notes (H) Outcome 3

2

Microcontroller
Architecture

Microcontrollers contain all these
features within a single package,
as opposed to the microprocessor
system where each block in the
diagram above is normally a
separate integrated circuit.


Arithmetic / Logic Unit (ALU)
and Clock

The proces
sing unit is the 'brain'
of the microcontroller. It operates
by reading instructions from the
read only memory ROM

(permanent program
memory) and then carrying out the mathematical operations for each instruction. The
speed at which these operations occur
is controlled by the clock circuit.


The
clock

circuit within the microcontroller 'synchronises' all the internal blocks
(ALU, ROM, RAM etc.) so that the system remains stable. The clock circuit is built
into the microcontroller, but an external crystal o
r resonator is required to set the
clock frequency.


Memory (ROM and RAM)

Microcontrollers contain both
ROM

(permanent memory) and
RAM

(temporary
memory).

The
ROM (Read Only Memory)

contains the operating instructions (i.e. the
'program') for the microco
ntroller. Most microcontrollers now use FLASH EEPROM
memory instead. This type of 'erasable
-
permanent' memory allows the ROM to be re
-
programmed if a mistake is made.

The
RAM (Random Access Memory)

is 'temporary' memory used for storing
information whilst
the program is running. This memory is 'volatile', which means
that as soon as the power is disconnected the contents of the memory is lost.


Buses.

Information is carried between the various blocks of the microcontroller along
'groups' of wires called
bu
ses
. The 'data bus' carries the 8
-
bit data between the ALU
and RAM / Input
-
Output registers, and the 'program bus' carries the 13
-
bit program
instructions from the ROM.


Input/Output Circuitry

Microcontrollers communicate with the outside world via pins wh
ich are grouped
together in 'ports', with up to eight pins in each port.


Timers

Most microcontrollers have one or more 'timers' built into the system. The 'watchdog
timer' is the most common type of timer. This is a special timer that 'resets' the
microc
ontroller if it stops processing for any reason (e.g. a 'bug' in the program). This
ensures that the microcontroller continues working at all times
-

which is essential in
some applications, for instance medical monitoring equipment.

Technological Studies:
Systems and Control Students’ Course Notes (H) Outcome 3

3

Number Systems



deci
mal

binary


0

0000


1

0001


2

0010


3

0011


4

0100


5

0101


6

0110


7

0111


8

1000


9

1001


10

1010


11

1011


12

1100


13

1101


14

1110


15

1111

A single binary digit is referred to a
bit

(
bi
nary digi
t
). Different systems carry out
calcula
tions using different quantities of bits, and so systems are often referred to as
8
-
bit, 16
-
bit or 32
-
bit systems. The most common microcontrollers use the 8
-
bit
system, although 32
-
bit microcontrollers are also now becoming more readily
available.


Bits a
nd Bytes


Eight bits grouped together are described as a
byte
. The decimal value of a byte is
calculated by adding together the corresponding decimal value of each of the
individual bits. The eight bits in a byte are labelled bits 0 to 7, from right to lef
t. The
right most bit is called the
Least Significant Bit (LSB)

and the left most bit is called
the
Most Significant Bit (MSB)
. The decimal value of each bit is given in the table
below:


bit number

7

6

5

4

3

2

1

0

decimal value

128

64

32

16

8

4

2

1


Th
e binary number 10010111 when converted into decimal would be:


1

x

128

=

128

0

x

64

=

0

0

x

32

=

0

1

x

16

=

16

0

x

8

=

0

1

x

4

=

4

1

x

2

=

2

1

x

1

=

1




Total:

151


Technological Studies:
Systems and Control Students’ Course Notes (H) Outcome 3

4

Converting Decimal to Binary

To convert any decimal number into binary repeate
dly divide the decimal number by
two and record the remainder after each division. The decimal number 29 is used as
an example.


29

÷

2

=

14

rem 1 LSB

14

÷

2

=

7

rem 0

7

÷

2

=

3

rem 1

3

÷

2

=

1

rem 1

1

÷

2

=

0

rem 1

Therefore the decimal n
umber 29 equals the binary number 00011101


Hexadecimal Number System

Writing binary numbers in groups of eight bits is quite time consuming, although on
some occasions binary numbers are very useful to clearly illustrate the condition of
each bit in a byt
e.


However a more user
-
friendly system of writing numbers is the
hexadecimal system
.
The hexadecimal system uses 16 different digits
-

0 to 9 and A to F. The 'digits' A to F
correspond to the decimal numbers 10 to 15.

Decimal

Hexadecimal

10

A

11

B

12

C

13

D

14

E

15

F


This system allows 4
-
bit binary numbers to be converted into a single hexadecimal
digit (a group of four bits is called a nibble, so there are two nibbles in a byte).


Decimal

Binary

Hexadecimal

0

0000

0

1

0001

1

2

0010

2

3

0011

3

4

0100

4

5

0101

5

6

0110

6

7

0111

7

8

1000

8

9

1001

9

10

1010

A

11

1011

B

12

1100

C

13

1101

D

14

1110

E

15

1111

F

Read in this
direction

Technological Studies:
Systems and Control Students’ Course Notes (H) Outcome 3

5

Notation

When using a number of different counting systems it is important to distinguish
which counting system you are using. F
or instance the number '10' means three
different values in the three different counting systems!


Therefore the following notations are used within PBASIC programs:


Decimal values are written as usual:



10

( = 10 in decimal)

Binary values are preceded b
y a % symbol:


%10

( = 2 in decimal)

Hexadecimal values are preceded by an & symbol:

&10

( = 16 in decimal)


Converting Binary to Hexadecimal


1.

Divide the binary number into groups of nibbles (four bits)

2.

Convert the nibbles into decimal

3.

Convert the decimal

nibbles into hexadecimal (i.e. convert any decimal values
greater than 9 into the hexadecimal letter 'digits')


Example:


Convert %01101010 into hexadecimal


1.

Divide into nibbles


0110
-
1010

2.

Convert into decimal


6
-
10

3.

Convert into hexadecimal


6
-
A


Therefo
re %01101010 = &6A


Port Addressing and the Data Direction Register

Each pin can be configured to be an output (to send digital signals) or an input (to
receive digital signals). The
Data Direction Register (DDR)

is used to configure the
port, and in the P
BASIC language the DDR is allocated the label
'dirs'
.


If all the bits in the DDR are set high then all the pins will be set as outputs. If all the
bits are set low each pin will be set as an input.


For example,


let dirs = 255



' set all pins as outputs

let dirs = 0



' set all pins as inputs

let dirs = %11110000

' set 0
-
3 inputs, 4
-
7 outputs


Every PBASIC program listing should always begin with a 'let dirs =' statement to
correctly setup the DDR. By default all pins are set to inputs when the Stamp
Con
troller is reset.

Technological Studies:
Systems and Control Students’ Course Notes (H) Outcome 3

6

Beginning Programming


A simple example of a control operation is represented by the flowchart shown below.




A PBASIC program which would achieve this control operation is:


let dirs = %11110000

' set pins 0
-
3 inputs, 4
-
7 outputs


hig
h 7



' set pin 7 high

pause 2000



' wait for 2 seconds (= 2000 ms)

high 6



' set pin 6 high

pause 1000



' wait for 1 second

let pins = %11110000

' set pins 4
-
7 high

pause 3000



' wait for 3 seconds

let pins = 0


' switch all pins low

end




' end the
program


Technological Studies:
Systems and Control Students’ Course Notes (H) Outcome 3

7

Labels and Addressing


Sometimes it is necessary to create programs that loop 'forever', as shown by the
flowchart. In this case it is necessary to add labels to the program, and to use the
'goto'

command to jump to the line marked by the label.


A PBASIC program which would achieve this control operation is listed below.


init:

let dirs = %11110000

' set pins 4
-
7 as outputs


main:high 7




' set pin 7 high


pause 2000



' wait for 2 seconds


high 6



' set pin 6 high


pause 1000



' wait for 1
second


let pins = %11110000

' set pins 4
-
7 high


pause 3000



' wait for 3 seconds


let pins = 0


' switch all pins low


pause 1000



' wait for 1 second


goto main



' loop forever


end



Technological Studies:
Systems and Control Students’ Course Notes (H) Outcome 3

8

For...Next Loops




A
for...next

loop is used when you wish to r
epeat a section of
code a number of times.


symbol counter = b0' define the variable "counter"

symbol red = 7 ' define pin 7 with the name "red"


init:let dirs = %10000000'set up pin 7 as an output


main:for counter = 1 to 5 'start a for...next loop



high red



'switch pin 7 high



pause 1000


'wait for 1 second



low red



'switch pin 7 low



pause 1000


'wait for 1 second


next counter


'end of for...next loop




end



'end program


The number of times the program runs for is set by a v
ariable.



A variable is a number that is stored in the RAM memory of
the Stamp Controller. There are 14 memory locations that byte
variables can be stored in.


These locations are labelled b0 to b13, but can also be
'renamed' to more appropriate names b
y use of the
'symbol'

command.







Technological Studies:
Systems and Control Students’ Course Notes (H) Outcome 3

9

If...Then...






The
if...then

programming structure allows the computer to
make a decision based on information received from an
input pin.


The following program switches pin 7 high, and then waits
for an input con
nected to pin 3 to go high. When the input
switch is pushed the output pin is switched low












init:

let dirs = %10000000

' setup the DDR


main:

let pins = %10000000

' switch pin 7 high

if pin3 = 1 then skip

' jump to 'skip' if input 3 is high


go
to main



' loop


skip:

let pins = 0


' switch all pins off


end




' end the program



Note:

Unlike some other BASIC languages, the
then

command can only be followed by a
label to jump to. You cannot add extra commands on the same line within the
PBASIC l
anguage.




Technological Studies:
Systems and Control Students’ Course Notes (H) Outcome 3

10

Sub
-
Procedures




It is often useful to be able
to re
-
use sections of code
within a program. A
sub
-
procedure

is a small
section of code that can be
'called' from a different part
of the program. After the
sub
-
procedure is finished
program flo
w moves back
to the original section of the
program.










init:

let dirs = %10000000


' setup the DDR


main:

let pins = %10000000


' switch pin 7 high



let b1 = 5



' give variable b1 the value 5


gosub flash



' call sub
-
procedure


pause 2000



' wa
it two seconds



let b1 = 20



' give variable b1 the value 20


gosub flash



' call sub
-
procedure


pause 2000



' wait two seconds



let b1 = 10



' give variable b1 the value 10


gosub flash



' call sub
-
procedure


pause 2000



' wait two seconds



end




' end the main program


' Sub
-
procedures start here.


flash:






for b2 = 1 to b1


' setup a for...next loop using b2



high 7



' output pin on



pause 100



' wait 100ms



low 7



' output pin off



pause 100



' wait 100ms


next b2




' next

loop


return




' return form sub
-
procedure


To 'call' a sub
-
procedure the
gosub

(go
-
to
-
sub
-
procedure) command is used. The last
line of the sub
-
procedure must be
return
, which means 'return to the original
position'.


Technological Studies:
Systems and Control Students’ Course Notes (H) Outcome 3

11

Stepper Motors


Stepper motors are

very accurate motors that are
commonly used in computer disk drives, printers,
XY plotters and clocks. Unlike dc motors, which
spin round freely when power is applied, stepper
motors require that their power supply be
continuously pulsed in specific patte
rns. For each
pulse, the stepper motor moves around one 'step',
typically 7.5 degrees (giving 48 steps in a full
revolution).


To make the armature rotate
continuously the four coils must
be switched on and off in a
certain order. Many
microcontroller sy
stems use
four output lines to control the
stepper motor, each output line
controlling the power to one of
the coils.


As the stepper motor operates at
12V, a transistor switching
circuit is used to switch each
coil. As the coils create a back
EMF when swi
tched off, a suppression diode on each coil is also required. The
ULN2803 Darlington driver integrated circuit provides a convenient device housing
these transistors and coils.


The table below show the four different steps required to make the motor turn

Type A

Step

Coil 4

Coil 3

Coil 2

Coil 1


1


1


0


1


0


2


1


0


0


1


3


0


1


0


1


4


0


1


1


0


1


1


0


1


0

symbol delay = b0




' define the variable


init:

let dirs = %11110000


' make pins 4
-
7 ou
tputs


let delay = 100



' set delay to 100ms




main:

let pins = %10100000


' first step


pause delay




' pause for delay


let pins = %10010000


' next step


pause delay




' pause for delay


let pins = %01010000


' next step


pause delay




' pause for
delay


let pins = %01100000


' next step


pause delay




' pause for delay


goto main




' loop forever

Technological Studies:
Systems and Control Students’ Course Notes (H) Outcome 3

12

Stepper Motor Driver IC


The use of four output pins to drive a stepper motor can be an inefficient way to use
the microcontroller input/output pins. A
dedicated integrated circuit, called the
SAA1027 stepper motor driver, has been designed to overcome this problem by
building the logic step generator, and the transistor switches, into one package.




The stepper motor driver IC just requires two signals

-

direction and step. The
'direction' signal sets the direction of rotation, when set high the motor turns one way,
when set low the motor turns the other way. The 'step' signal is pulsed (switched high
then low again) to move the stepper motor one step.
Therefore to move the stepper
motor ten steps the 'step' pin would be pulsed ten times.


symbol direct = 5



' pin 5 is direction pin

symbol clock = 4



' pin 4 is clock pin

symbol counter = b0



' variable b0 is loop counter


init:

let dirs = %00110000


'

pin 4 & 5 outputs


main:

high direct



' set dir pin high



for counter = 1 to 48


' setup a for...next loop



high clock



' clock pin high



pause 10



' wait 10ms



low clock



' clock pin low



pause 10



' wait 10ms



next counter



' next lo
op



low direct



' set dir pin high



for counter = 1 to 48


' setup a for...next loop



high clock



' clock pin high



pause 10



' wait 10ms



low clock



' clock pin low



pause 10



' wait 10ms



next counter



' next loop



goto main



' loo
p forever


Technological Studies:
Systems and Control Students’ Course Notes (H) Outcome 3

13

Push
-
Pull Motor Drivers


To allow the motor to spin in either
direction a
push
-
pull

arrangement of
transistors can be used, as shown in the
diagram below.


When the two transistors labelled A are
both switched on the motor spins in one
directi
on. If the other two transistors are
switched on the motor spins in the other
direction.








Naturally it is important that both sets of transistors are not switched on
simultaneously! This would result in a short circuit between the power rails and th
e
transistors would overheat and hence be destroyed.












The following tables show how the two motor outputs 'A' and 'B' are controlled by the
four input pins.



pin 4

pin 5

motor A


pin 6

pin 7

motor B

0

0

halt


0

0

halt

0

1

forward


0

1

forward

1

0

reverse


1

0

reverse

1

1

halt


1

1

halt






Technological Studies:
Systems and Control Students’ Course Notes (H) Outcome 3

14

DC Motor Speed Control


The speed of a dc motor varies directly with the voltage applied across it.
Microcontroller do not normally have an analogue output, and so they cannot be used
to vary the voltag
e to a motor in this manner.


However there are two main methods by which a microcontroller can control the
speed of a DC motor:



Digital to Analogue Conversion (DAC)



Pulse Width Modulation


Digital to Analogue Conversion

The simplest way to control the spe
ed of a DC motor is to vary the voltage applied to
the motor coils
-

the higher the voltage the faster the motor will spin (within the motor
operating limits).


However the digital output from a microcontroller is at a fixed voltage, and the
microcontrol
ler cannot
supply enough current to
drive the motor. Therefore
an interfacing circuit is
required to boost the
supply current for the
motor and to provide
different voltage levels.



A

Digital to Analogue Converter (DAC)

is an integrated circuit that decod
es binary
information and generates an analogue voltage proportional to the binary information
provided.


A three bit DAC, with an output range of 0
-
5V, may produce a voltage output
according to the table below:


binary input

analogue output (V)

000

0.00

001

0.62

010

1.25

011

1.87

100

2.50

101

3.12

110

3.75

111

4.37


Technological Studies:
Systems and Control Students’ Course Notes (H) Outcome 3

15

Each increase in the binary input produces a
step increase of 0.625V (5V ÷ 8 steps) in the
analogue output. In most practical
applications the DAC cannot supply the full
output volt
age (e.g. 5V) due to the technical
operating limitations of the device.




When plotted as a graph this transfer function
appears as a 'staircase' shape. An increase in
the number of input bits will increase the
resolution of the DAC, therefore producing
'smaller steps'.


The simplest form of DAC is made from a summing amplifier, as shown in the
diagram below.



In this example the output voltage is equal to


Vo

=
-
5 (Pin 2 x (10K/10K) + Pin 1 x (10K/22K) + Pin 0 x (10K/39K))


=
-
5 (Pin 2 + 0.5 (Pin 1)
+ 0.25 (Pin0))


where the pin value is 0 or 1 (presuming a high logic signal of 5V)

symbol counter = b0



' variable b0 is loop counter

symbol direct = 5



' pin 5 is re
-
named direct


init:

let dirs = %11110000


' pin 4
-
7 outputs


let pins = %00010000


' s
tarting speed


main:

high direct



' set dir pin high


for counter = 0 to 7



let pins = pins + 16


' next speed



pause 5000



' wait 5 seconds


next counter



' next loop




end




' end

Technological Studies:
Systems and Control Students’ Course Notes (H) Outcome 3

16

Pulse Width Modulation


Pulse Width Modulation
(PWM)

is a dig
ital method
which can be used to vary
the motor speed. In this
method the full voltage is
applied to the motor, but it is
rapidly pulsed on and off.
By varying the on and off
ratio of the pulses the speed
of the motor can be varied.
As the full voltage is
applied
to the motor during the 'on'
pulses the torque of the motor remains high.


The graph shows how the technique is applied. The 'on' time for the motor is called
the mark, the 'off' time is called the space. When the voltage is applied to the motor i
t
accelerates to top speed. However before the top speed is reached the motor is
switched off, thus slowing it down. By increasing the frequency of the pulses this
acceleration/deceleration becomes negligible, and the motor rotates constantly at a
slower s
peed.


symbol mark = b1

symbol space = b2

symbol motor = 7


init:

let dirs = %11110000


' pin 4
-
7 outputs


let mark = 10



' set mark to 10ms


let space = 20



' set space to 20ms


main:

high motor



' output high


pause mark



' pause for mark time


low
motor



' output low


pause space



' pause for low time


goto main



' loop

















Technological Studies:
Systems and Control Students’ Course Notes (H) Outcome 3

17

Soft Start of DC Motors


In some devices, such as electric drills, it is desirable for the motor to start rotating
slowly and then build up speed, rather than ra
pidly 'accelerating' up to full speed. This
is called
'soft

starting'

the motor, and the use of PWM is often appropriate in these
situations. The motor is started at a low speed and then gradually accelerated by
varying the mark to space ratio over a perio
d of time.


symbol counter = b0



' variable b0 is loop counter

symbol mark = b1

symbol space = b2

symbol motor = 7


init:

let dirs = %11110000


' pin 4
-
7 outputs



let mark = 10



' set mark to 10ms


let space = 20



' set space to 20ms


main:

gosub pul
s




' call sub
-
procedure


let mark = mark + 2


' increase mark time


goto main




' loop


' sub
-
procedure


puls:

for counter = 0 to 50


' start a for...next loop



high motor



' output high



pause mark



' pause for mark time



low motor



' outp
ut low



pause space



' pause for low time


next counter



' loop


return




' return from sub
-
procedure


Technological Studies:
Systems and Contr
ol Students’ Notes (H) Outcome 4

1