group 8 matt mcnealy (ee) scott martin (ee) andrew lee (cpe) josh hamby (ee)
TRANSCRIPT
Group 8
Matt McNealy (EE)
Scott Martin (EE)
Andrew Lee (CpE)
Josh Hamby (EE)
Workout BuddyA muscle fiber stimulation sensor
and data logger
Goals & Objectives
To design and implement a device that will allow weight lifters to monitor and track their progress electronically.
To build a sensor system that: Measures the electric potential generated by certain
muscle groups. Detects the angle of body part being exercised.
To learn about wireless technology, medical devices and programming microcontrollers.
To find points of over exertion in any particular exercise and improve on underworked muscle groups.
Work Allocation
Sensor circuit: Operating time: 3 hours. Operating voltage: 2.8-3.7V Powered by polymer lithium
ion battery Dimensions: 2.1” x 2.3” Measure S-EMG ranging
from 0.02-5mV. Capability of measuring a
full 360 degree range of motion in three dimensions.
Communicate with the control module up to 3 meters.
Must secure to the body via velcro strap.
Control module: Operating time: 3 hours. Operating voltage: 3.3V Powered by a 9V lithium
battery. Dimensions: 3” x 2.6” Wirelessly receive data
from the sensor circuit. Automatically count
repetitions and sets. Display data on the LCD
screen. Write data to a micro-SD
card.
ScottParts acquired and researched:
Microcontroller programming
Control Unit Design
MattParts acquired and researched:
Power system
Filters
Parts acquired and researched:
Wireless interface
microSD interface
Andrew Parts acquired and researched:
PCB design and assembly
EMG/EKG detection
Accelerometer
Josh
Documentation
Prototyping
Budget
Research & Design
Specifications and Requirements
Sensor circuit: Operating time: 6.5 hours. Operating voltage: 3.7V Powered by polymer lithium
ion battery Dimensions: 2.1” x 2.3” Measure S-EMG ranging
from 0.02-5mV. Capability of measuring a
full 360 degree range of motion in three dimensions.
Communicate with the control module up to 15 meters.
Must secure to the body via Velcro strap.
Control module: Operating time: 34
hours. Operating voltage: 3.3V Powered by a 9V lithium
battery. Dimensions: 3” x 2.6” Wirelessly receive data
from the sensor circuit. Automatically count
repetitions and sets. Display data on the LCD
screen. Write data to a micro-SD
card.
Block DiagramSensor Unit
Block DiagramControl module
Signal Acquisition & Processing
Processing of the signal enables the user to maximize their workout experience.
EMG Requirements
Amplifier: Gain of 1000+ High CMRR >95 db for frequencies 10 – 500
Hz Input impedance = 10 x electrode impedance
Skin Preparation: Cleaned and freed of dry skin cells Centered on the belly of the muscle 2 Electrodes 2 cm center to center
Instrumentation Amplifier
INA122P-ND Voltage supply: 2.2
– 36 VDC Supply current: 60
- 85 μA CMRR: 83 - 96 db Gain: 1-10000 Input impedance:
10^10 ohm Digikey: $5.56
AD626AN-ND Voltage supply: 2.4 -
10 VDC Supply current: 230 -
290 μA CMRR: 66 - 90 db Gain: 1-100 Input impedance:
200 k ohm Digikey: $7.46
Triple Axis Accelerometer MMA7260Q :
Power supply: ○ 2.2 - 3.7 VDC○ 500 - 800 μA
Selectable sensitivity: ○ 1.5g = 800 mV/g○ 2g = 600 mV/g○ 4g = 300 mV/g○ 6g = 200 mV/g
Sleep mode option Sparkfun: $19.95
MMA7260Q Orientation
Atmel Atmega 328P 8 bit MCU running at 16 MHZ with XTAL Serial Communication via UART, I2C, SPI 6 channel 10 bit Analog to Digital Converter 3 Timers, 6 PWM channels Free C Compiler and Development Tools $4.30 @ Digikey
Setting the Processor speed
The clock must be at a specific frequency in order to set the correct sampling rate to sample data from the EMG sensor. The clock value was chosen to ensure the highest sampling resolution possible that the Atmega 328 can support.
Development Environments AVR Studio is an Integrated Development
Environment for writing, compiling, simulating, and debugging
AVRDUDE is an open source utility to download/upload/manipulate the ROM and EEPROM
AVRlibc and AVRlib
AVRlibc is the Standard C Library for AVR microcontrollers and provides basic functions like printf, stdio calls, math functions, plus some AVR-specific functions
AVRLib provides functions for conventional tasks such as writing to LCD’s and SD cards and reading from buttons and encoders
Sensor Software Block Diagram
The software on the sensor is a while() loop that
continuously samples the
voltages on the accelerometer
and EMG sensor input pins
Analog to Digital Conversion
Using highest possible Sampling Frequency 125kHz
Approximate resolution is 4.9 mV
The free running mode allows the control unit to continuously update the voltage received off the sensor and provide the user with a measurable output of intensity.
USART Functions
FILE usart_stream = FDEV_SETUP_STREAM(usart_putchar, usart_getchar, _FDEV_SETUP_RW);
This sets up the stream object that avr-libc uses for standard i/o.
void usart_init(unsigned int baud) This function enables the receiver and transmitter, sets the frame
format, and sets standard i/o to use the USART stream.
int usart_putchar(char c, FILE *stream) This function puts character to send into the USART i/o data
register and handles converting the newline character.
int usart_getchar(FILE *stream) This function waits for the receive complete bit to be set in the
USART control register then gets the charaacter out of the data register.
General Software Block Diagram:Control Unit
Starting with the Main(); block different functions are called depending on which state it is on while button is pressed.
State 1 calls free_mode();
State 2 calls free_mode(); with saving enabled.
State 3 calls credits();
Control Unit Software Block Diagram
The main menu items are part of a state machine which call the functions free_mode(save_flag) and credits when the button is pressed while in a specific state. The save_flag determines whether or not createfile(fileName, file) gets called.
Getting User Input – Rotary Encoder
3 Terminal Device to get sequential input 2 bit grey code provides 4 states for
MCU to read MCU must keep track of previous state. Debouncing via software delays or
hardware LPF’s Triggering via Interrupts or Polling
Color LCD – 128 x 128 Nokia clone
LCD Logic - 3.3V @ 2-3mA LED Backlight - 7V @ 40-50mA (very bright) Full 4,096 Color Display Uses the Epson S1D15G10 or Philips PCF8833
Controller Active Display Dimensions: 1.2"x1.2” Two-wire serial SPI interface (clock and data)
LCD Functions void LCDSend9Bit(int data);
Breaks the 9th bit out into this special case so that we can use only 8-bit variables in the main loop
static void LCDInitIO()
Sets up the data direction port and turns on inputs and outputs void LCDInitController()
This function configures the Epson LCD controller void LCDClearScreen(int color)
This function blanks the screen. void drawString(char *s, int fg, int bg, int x, int y)
This function allows the writing of text to the screen with control over the string to write, foreground and background color, pixel position in the x and y directions
Wireless interface – TXM-900 Specifications
Operating voltage: 2.8–13 VDC Supply current: 14-17 mA Transmit frequency range:
902.62-927.62 MHZ Data rate: 100-56,000 bps Operating temperature range:
-30 to 85C
SIP Style Price: $29.45 from Digikey Part #: TXM-900-HP3-PPO-ND
SMD Style Price: $29.45 from Digikey Part #: TXM-900-HP3SPO-ND
Wireless interface – RXM-900
Specifications Operating voltage: 2.8–13
VDC Supply current: 16-21 mA Receive frequency range:
902.62-927.62 MHZ Data rate: 100-56,000 bps Operating temperature range:
-30 to 85C
SIP Style Price: $43.40 from Digikey Part #: RXM-900-HP3-PPO_-ND
SMD Style Price: $39.22 from Digikey Part #: RXM-900-HP3-SPO-ND
Antenna JJB Series
The Electrical Specifications:○ Center Freq. 916MHz○ Bandwidth 30MHz○ Wavelength 1/4-wave○ Impedance 50 ohms○ Connection Direct solder
SP Series “The Splatch” The Electrical
Specifications: Center Freq. 916MHz Bandwidth 30MHz Wavelength 1/4-wave Impedance 50 ohms Connection Surface-mount
Model: ANT-916-SP Price: $2.08 from DigikeyModel: ANT-916-
JJB-xx
Price: $1.96 from Digikey
Layout of Parts Sensor Unit
Data from the accelerometer and sensor units are fed into the ATmega328p MCU.
This data is streamed to the control unit via transmitter at 9600bps.
DA
TA
DATA
DATA
DATA
Layout of Parts Control Unit
Data will be received by the receiver and fed into the ATmega328p MCU.
Data is then saved to the SD card in the FAT32 file system architecture. It will become a CSV file. (Comma-separated values)
The SD card can now be removed from the device and read on a computer .
9V
10nF
On/Off
HP3RXM900
192021222324252627
282930313233343536
Splatch
1 2 3 4 5 6
1uF
AtmelAtmega
328
2918
462078
5321
22pF
22pF
2324252627281922303132129
1011121314151617
uSDSocket
12345678
CD1CD2D1D2
330 330
RotEnc
330
330
330
330
ISPProg
Reset
330Reset
Nokia Display
LP8345
DATA
DATA
SD CARD MODULEFor our data logging we based our design off of CC Dharmani’s “SD Card Interfacing with ATmega 8/32 (FAT32 implementation)” project.
The circuit design was carefully adapted to work with our Atmega328p.
A standard SD card adapter was used in testing and prototyping.
We used his method of creating a FAT32 file.
More info at: http://www.dharmanitech.com/2009/01/sd-card-interfacing-with-atmega8-fat32.html
SD MODULE cont..
This schematic shows the integration of the SD card module into our design.
The SD card module requires 3.3-3.6v in order to write data to the micro SD card.
SD Functions Void createFile(unsigned char *fileName,
unsigned char file[512]); Creates a file in FAT32 format in the root
directory. Unsigned char readFile(unsigned char flag,
unsigned char *fileName); Determines if filename is valid and returns a
flag. Unsigned char convertFileName(unsigned char
*fileName ); Converts filename into FAT format.
Unsigned long searchNextFreeCluster(unsigned long startCluster); Searches for the next free cluster in the root
directory.
Simulator
We initially wanted to implement a simulator which would display various information of each workout saved on the SD card.
Due to unforeseen programming issues with the control unit and lack of time we unable to implement more than one exercise.
We have left it up to the user to take the data stored on the SD card and use it at their discretion.
CSV file The CSV file saved on the SD card can be
opened and read. The SD card will contain from each
workout:○ X-axis○ # of repetitions○ Z-axis○ EMG signal
Format: 126,0,200,5, 125,0,201,5, ....................
Used to keep track of the effectiveness of the user’s workouts.
CSV file (Excel)
Opening the CSV file in Excel Graphing the data in Excel
0
50
100
150
200
250
300
1 3 5 7 9 11 13 15 17 19 21
Series1
Series2
Series3
Series4
It is up to the user how he/she would like to use the data. For example, the CSV file can be easily opened using Excel and a graph can be made using the values stored.
The columns are the X-Axis, Repetitions, Z-Axis and EMG signals respectively.
Power SystemSensor unit
Requirements Generate sufficient electricity to keep the unit
running for 3 hours. Environmentally friendly Length of charge Determining factors: Availability, capacity, &
size
Operating Voltages (1) MMA7260Q – 3.7 (1) Atmel ATmega328 – 3.7V (1) TXM-900-HP3 – 3.7V (2) INA122 Instrumentation amplifier
– 3.7V Total Power Consumed: 370mW CR2032 3V lithium button cell
battery was used initially, but the accelerometer did not function properly due to a dropout voltage across the battery of 500mV. Minimum voltage for the accelerometer is 2.7V Capacity: 225mAh. Radius=20mm
,height=3mm
Power SystemSensor unit
Device Power Consumption
(mW)
MMA7260QAccelerometer
1.8
ATmega328 0.9
INA122 0.3
TXM-900-HP3 39.2
Power SystemSensor unit
Powered by a rechargeable 3.7V lithium-ion battery. Has a capacity of
650mAh. Running time of 6+
hours before needing a charge.
Power SystemControl module
Operating Voltages (1) Nokia display – 3.3V (1) Atmel ATmega328 – 3.3V (1) RXM-900-HP3 – 3.3V (1) uSD – 3.3V Demands 340mA Total power consumption of
1.112 W Powered by the Ultra life 9V
battery Chemistry: Lithium Capacity: 1.2 A*h Can run the module for 4 hours
before replacement is needed.
Device Power Consumption
(mW)
uSD 3
ATmega328 0.9
RXM-900 15
Nokia LCD
900
Power SystemControl Unit
Final DesignControl module
Final DesignSensor unit
Testing For EMG Signals
Obstacles: Noise from lab equipment
(60Hz hum) Used a 9V battery to
power the circuit Noise artifacts from
movement of body, RF, and cables Active filters may enable
more accurate readings but it was decided to use passive filters for RF and rely on the difference amplifier to discard noise from the body.
Testing The MMA7260Q
X-axis = verticalZ-axis = horizontal
X-axis = horizontalZ-axis = vertical
Testing – Hardware Design Sensor / Digital
The FT232RL serial to USB converter was used to monitor values being sampled by the MCU by displaying them on a PC in a terminal window.
The accelerometer pins for SLEEP, GS1 and GS2 were wired to Vcc, GND and GND during testing but were moved to the pins PB0, PB1 and PB2 to
offer additional configuration flexibility. 8 bits of resolution on the ADC pins connected to
the accelerometer and to the EMG sensor provided 0 - 255 values between GND and VCC. It
was unnecessary to use 10 bits.
Testing – Hardware Design Control Unit
The FT232RL serial to USB converter was used to monitor values being transmitted from the sensor to the control unit MCU .
The SPI interface from the MCU to the LCD had to run at 3.3V, wouldn’t work at 5V.
Wireless reception improved from a few feet to 60 ft once the design was moved from a breadboard to the PCB with ground plane.
MicroSD circuit worked well without modifications
Testing the Control Unit
Andrew troubleshooting the microSD circuit.
Testing/Implementation – Software Design Sensor
The sensor software is implemented as designed; a loop samples the voltages on the sensor input pins and then those values are put into a datastream which is transmitted to the control unit microcontroller.
Troubles with processing the serial data on the control unit were solved by adding some “padding”, or unused characters to the data stream.
Testing/Implemtation – Software Design Control Unit
The various functions for controlling the LCD and writing to the microSD card worked well independently as designed.
The algorithm for reading off the encoder inputs has room for improvement, does not always record correct state for unknown reasons.
The implementation we used to transfer data to the control unit caused issues related to timing which were difficult to track down. These issues interfered with the LCD drawing functions and required us to scale back the UI.
Implemented User Interface Block Diagram
The UI is implemented using a state machine with each of the display screens being a different state.
Possible improvements
Use a buffer to store the data packets on the sensor side so that a more modular design can be used on the control unit side.
Create a better method of data logging. Reduce power consumption. Reduce size of circuits. Utilize internal memory and USB interface. Implement a heart rate monitor.
Budgeting
Fully funded by the V.A.
Contributions by SignTek.
Questions?