Title: ECE 300 Embedded Microcontroller Project
1ECE 300Embedded Microcontroller Project
- Group 4
- Bryan Bollinger
- Molly Kryder
- David Windsor
- Brian Washington
2Things to pick up along the way
- To learn about embedded systems
- To gain basic knowledge and working experience
with soldering on a small scale - To learn to apply basic troubleshooting knowledge
of circuits - To become more familiar with the design process
and working in a group environment
3Goals What exactly needs to be accomplished?
- Construct a functioning board
- Power the microcontroller
- Successfully Flash the microcontroller
- Power and drive the LCD
- Interface the board with a sensor
- Choose an appropriate device
- Connect the sensor to the microcontroller
- Scale and display the output
4MSP430The microcontroller in question
- Low Supply-Voltage Range, 1.8 V to 3.6 V
- Lithium and Alkaline voltage range, easy to
produce - 12-Bit A/D Converter With Internal Reference,
Sample-and-Hold and Autoscan Feature - No need for us to convert analog to digital
- Integrated LCD Driver for Up to 160 Segments
- No need to write a new interface to drive the LCD
- MSP430F449 60KB256B Flash Memory, 2KB
RAM - Flexibility for coding
5Board Construction
- Team Meeting to practice soldering with the
surface mount components and the chip - Resistors
- Capacitors
- Processor
- Final Board Construction
- A unified soldering method should be decided upon
to complete the board, in order to minimize
possible soldering error and repair time
6Problems
- Missing Kit Components
- -no polarized capacitors, only one MSP430, no
voltage converter - Soldering Problems
- -melted a part of the LCD cover, fused the
oscillator crystal leads, first chip soldered
incorrectly - Mostly minor problems, but the frequency of the
problems and the time necessary to retool between
them - (i.e. time required to obtain replacements
etc.) - caused initial construction to take much longer
than expected
7Testing and Troubleshooting
- Initial Flashes were not successful
- Learned it was an operator error as the Flash
Emulation Tool was upside down, another delay - Subsequent Flashes
- Reported success but the LCD showed incoherent
digits - Shortly thereafter, the LCD showed nothing at all
8Testing and Troubleshooting
- Possible Causes of Error
- Heat Damaged Chip
- Mismanufactured Chip
- Damaged LCD
- Bad Solder Joints
- Further study of the board with a voltmeter
revealed some bad solder joints which were then
repaired - LCD still showed garbage, but at least it showed
something
9Testing and Troubleshooting
- All points on the LCD had continuity to their
respective pin on the microprocessor, but still
something was not functioning properly - Starting a new board recommended
- About this time, another group member began their
own board, just in case the current board could
not be repaired - The board warranted further testing, so more time
was committed to experimentation - An exact-o-knife was used to check the solder
joints and traces from the microprocessor to the
board - During this process, the LCD managed to show a
broken HELLO
10Testing and Troubleshooting
- Adding tiny amounts of solder to each of the pins
of the chip resulted in a fully functional board - Another meet to show the board to the team, the
LCD would fade in and out, apparently a capacitor
problem - Board Finally Successfully Displays Hello 888
message consistently
11Sensor Selection
- Several Types of Analog Sensors Group Members
Considered - Temperature Analog Devices 22100, 22103
- Magnetic Field Sentron CSA1V, AD 22151G
- Infrared - Sharp GP2D12
- Ultrasonic Transducer - USONICPNPA
- RPM Sensor
12Quick Sensor Reference
Temperature Magnetic Field Infrared Ultrasonic
Cost FREE FREE 10 60
Expected Ease of Interface Easy Midrange Midrange Difficult
Expected Ease to Test Easy Difficult Easy Easy
13More Sensor Selection
- Ease of use of the temperature sensor made it
very appealing, but there were several models to
choose from - The Analog Devices AD22103 is an analog, low
power, 3.3V device with a temperature range from
0 to 100 Celsius and it was available in a 3 pin
TO-92 Package as opposed to the way many of its
cousins and competitors were, an 8 pin package
14Interfacing the Sensor and Board
- Sensor needed
- Power
- which was drawn from a spot on the board labeled
Vcc which provided 2.85 V - Common ground of the board
- a spot for a banana plug lead was drilled and
connected to one of the boards several common
grounds - Voltage out to go to the A/D of the MSP430
- again a spot for a banana plug lead was drilled
and a wire was run to this location
15Analyzing the Code
- The code provided took the input from the A/D and
converted it to a voltage 100 and stored it in
a floating variable called sample. The times 100
comes into play later when displaying results to
the LCD - The AD22103 Datasheet provided a Transfer
Function to convert this voltage into a
temperature in degrees Celsius
Rearranging the Equation and Solving for TA
gives
16More Changes
- Celsius is the standard temperature scale, but
Fahrenheit is easier for most people to relate to - To convert from C to F, simply use the equation
below - (1.8 C) 32
- This was an easy modification to the code
17A glimpse of the code
- sample ADC12MEM6
- sample sample A
- B (3.3 / 2.85) / .028
- sample sample B
- sample sample - (.25 / .028)100
- sample (sample 1.8) 3200
- lcd_word(sample,2)
- Its time to recall the fact that the board is
storing and sampling the voltage times 100.
Because of this, all constants need to be
multiplied by 100. The reason for this is pretty
obvious if you look the way in which the LCD
driver functions operate. They take the number
and perform modulus division on the sample to
find out the value of the thousands place, the
hundreds place, the tens place, and the ones
place and it sends it to the 3rd segment, 2nd
segment, 1st segment, and 0th segment
respectively.
18An Example
- What if it were 72.35 degrees in this room?
- Then the value of sample after the conversions
would be 7,235 so the processor would try to
figure out what to send each segment one at a
time
Segment 3 7,235 / 1000 7.235 10 7.235
0 7 Segment 2 7,235 / 100 72.35 10
2.35 0 2 Segment 1 7,235 / 10
723.5 10 3.5 0 3 Segment 0 7,235
/ 1 7,235 10 5 0 5
19Future Changes
- Make the board perform an action when a condition
is met - Turn on an LED
- Make a noise with a small buzzer
- Such tasks would require only a small amount of
additional knowledge of the chip and its
interrupt system
20Some pictures
Back of the board
Front of the Board
AD22103 Temp Sensor