Data Acquisition
& Real-Time System Integration:
Matt Hulse
Marc Kessler
Chris Lites
Preston Schipper
Andy Lin
Presentation Outline:
•Project Overview
•Sensor Systems
•Communication
•Main Board &
Storage
•Project
Administration &
Management
Our data acquisition system:
•Sensors
•Sensor preprocessing units
•Sensor network & communication
•Main processing
•Storage
•Sensors
•Testing apparatus
•Wheel speed tested and implemented with pre-processor
•Linear position sensor circuit prototype
•Microcontroller (Preprocessor)
•Development environment for processor working
•Preprocessor system prototype
•Coding complete except CAN communication
•Main processor: Written code & developed schematics
Wheel Speed:
-Hall effect
-5V supply
Shock Position:
LVDT:
Linear
Variable
Differential
Transducer
Preprocessor Details:
•16 MHz
•C Programmable
•Hardware CAN
•A/D Converter
23 GP I/O
External Clock
5 10-bit A/D Converter
1536 RAM (256 used)
Hardware CAN
ICSP
#include <p18f458.h> //for chip ports
#include <adc.h> //for A/D conf
#include <timers.h>
#include "CB256.h"
//for timer conf struct CB raw_data_buffer;
//struct CB send_data_buffer; struct pulse_data
{ int csample; int psample; int pulses; int trigger_level; int cur_pulse; int samples;
} frequency_data; char dev_id; char reset_now = 0; char raw_data_overflow = 0; char send_data_overflow = 0; char counter = 0; int sample_time; int timerval; int speed; char wheel_dia; char num_teeth; char sample_type = 0;
/*Valid Sample types:
0: Voltage 0-5 corresponding to resistance
1: Periodic corresponding to frequency
*/
void configure_a_d_c(void); void configure_sample_timer(void); void configure_interrupts(void); void int_handler(void); void get_dev_id(void); void resistive_samples(void); void frequency_samples(void); void can_send(int my_data); void set_constants(void); void no_calib_data(void); void EEPROM_Write(int location, int value); void main (void)
{ get_dev_id();
SetCBEmpty(&raw_data_buffer);
//SetCBEmpty(&send_data_buffer);
//DEFAULT VERSION
EEPROM_Write(255,2); set_constants(); configure_a_d_c(); configure_sample_timer(); configure_interrupts();
PORTAbits.RA1 = 1;
PORTC = dev_id; if(sample_type == 0)
{ while (reset_now == 0)
{
} else if(sample_type == 1)
{
} while (reset_now == 0)
{ resistive_samples(); frequency_samples();
}
}
}
Controller Area Network:
In a CAN system, all messages sent out on the bus are detected by all nodes on the bus.
Error detection:
•Bit stuffing
•Cyclic redundancy check
•Self checking
Probability for undetected corrupt message < message rate * 4.7 * 10 -11
CAN 2.0A:
•11 bit identifier field
Data Frames:
Data, Remote, Error, Overload
PIC18F458
Voltage Regulator
Flash Controller
Master Controller for CAN
Same Family and Data Sheet
Two more Ports (8 bit registers)
8 – bit Parallel
2 comparators (not used)
Total 34 I/O compared to 23 I/O
Smart Media
22 Pads
8 bit parallel I/O
FAT16
•PIC18F258
•PIC18F458
•Software Development Tools
•Honeywell hall effect sensor
•Linear Variable Differential Transducer
•Assorted inverters, voltage regulators, DIP switches, clocks
Andy:
•PCB design
Christ & Matt:
•CAN bus
Marc:
•In circuit serial programming (ICSP)
•Software development
Preston:
•Memory
Milestone 1 Goals:
•Sensor Unit
•Main control schematics
•CAN working on preprocessor in loop-back mode
Milestone 2 Goals:
•Everything constructed
•Final debugging & testing