We are looking for a consultant to design a PCB in EAGLE and write related C software for sensor feedback, data logging, and motor control. ** The hardware and software will become the sole property of the hiring company. ** We have detailed specifications - we have excellent designers in house, but do not have time to complete this assignment.
Create schematic, PCB, and software to drive two 10W motors reading profiles from SD memory simultaneously; log data to SD card from sensors and read digital inputs.
Key hardware features:
Microcontroller capable of use with low-cost programmer and free software (ARM, PIC, Arduino...)
Push-button power switch (hold on/off)
1 Power LED (on when MCU is on and motors ready to be driven)
8 momentary push buttons for input
1 - Motor 1 mode (lookup table 1, lookup table 2, ...)
2 - Motor 1 power level increase
3 - Motor 1 power level decrease
4 - Motor 2 mode (off/on/reverse, cycle)
5 - Motor 2 power level increase
6 - Motor 2 power level decrease
7 - Yes / accept (write YES to file)
8 - No / decline (write NO to file)
USB interface for charging, reading SD memory card (should show up as a flash drive, charge/read data even if power is off)
Power supply from single-cell 3.7V LiPo battery with USB charge capability
2X motor controllers
M1: PWM, 5W max load, 10 power levels (based on PWM * value), ability to read PWM lookup tables from text files on SD card, nonreversible
M2: PWM, 5W max load, 10 power levels (based on PWM * value), forward/reverse/off
3 axis accelerometer (+- 2g)
3 axis gyroscope (+- 150deg/sec)
1 Microphone + preamp read as an analog value
SD memory card for reading motor lookup tables and writing output data (sensor values, motor operating characteristics, rough timestamp)
Key software features:
The software shall turn on and activate M1 on the default / first profile (located in Profile01.TXT) at half speed (power level = 5). M2 shall be left off.
Each file, Profile01.TXT - Profile99.TXT, will have a first line indicating the time step between values (from 50-1000ms) and a list of from 10 to 1000 values for PWM to be read and looped (e.g. go from EOF to the value of line 2, repeatedly)
During normal operation, the device shall log all data to the SD memory card at a minimum of 10Hz
This includes Time(approx),Mic_voltage,Xaccel,Yac
Button presses shall change the functionality of the motor
Button 1 shall change motor 1 mode (Profile01.txt -> Profile02.txt, ...)
Button 2 shall increase motor speed (speed changes happen by taking PWM value * (power level / 10), e.g. PWM value * 0.5 for half power or 0.6 for 60% power).
Button 3 shall decrease motor speed.
Button 4 shall change mode for motor 2, cycling from off to on to reverse, starting at power level 5.
Button 5 shall increase motor 2 power.
Button 6 shall decrease motor 2 power.
Button 7 shall write "YES\r\n" to SD file.
Button 8 shall write "NO\r\n" to SD file.
When plugged in to PC, the device shall be visible as a flash memory drive.
The PCB shall be 25x55mm, 2 layer, 8/8mil trace/space, 16mil drill minimum
Low cost BOM ($20 component cost @ Q100 target)
(More details available during discussion, including a rough footprint including LED, connector, and button locations)
Skills: design, microcontroller