Started as a school project from years ago that I can't put away. Currently looking at using a different MCU to make it tick.
Seek_r is an autonomous rover designed for exploration. Fitted with a number of sensors, can navigate spaces & react to the things it finds.
To make the experience fit your profile, pick a username and tell us what interests you.
We found and based on your interests.
Started as a school project from years ago that I can't put away. Currently looking at using a different MCU to make it tick.
Logical overview
Selecting I2C peripheral components greatly simplifies the hardware and software implementation of the device. Most modern MCUs have facilities for I2C built in to their hardware which removes a fairly sizeable firmware overhead.
Chassis layout
With the majority of components selected, it is possible to begin hashing out a layout for the chassis for the rover.
After sketching out major components and their possible configurations, models were acquired or built for the various parts and arranged in SolidWorks. The sheet metal chassis was then constrained, in context, against the other components.
With the basic layout completed, additional holes were added to the chassis part for cable ties. Next sheet metal press fasteners (nuts, inserts and studs) were added to make for an easy assembly job. "Penn Engineering's PEM Fasteners":http://www.pemnet.com/fastening_products/pem-self-clinching-fastener_new.html (FSH and so on) covered all the required bases and made for an easy fit with the 2mm aluminium sheet that the design targets.
Electrical and electronic design
With a large portion of the mechanical design completed it was possible to start pulling the electrical and electronic parts of the system.
With the power source already defined (NiMh battery packs) and their physical location set in the chassis it was important to find a sensible way of actually attaching the power packs to the rover's drive and logic systems. With PCB mountable JST connectors to mate with the battery packs no where to be found, a simple screw down terminal block would have to suffice.
The MD25 control board comes complete with a 5v 300mA regulator to drive its on board MCU and other logic as well as a number of power/data connectors which provide access to the logic drive 5v and the I2C bus. 300mA is more than enough to run the logic board, some LEDs and the I2C sensors. The bus cable feeds power "back" to the main logic board which in turn communicates with I2C peripherals via the MD25 board.
MCU requirements for this project in the first instance were actually fairly straightforward.
Within the constraints of the project, there are (at time of writing) 66 MCUs in the 16F series which are readily available through standard channels. Eliminating devices with insufficient I/O ports and those lacking an internal MSSP peripheral (the device onboard the PIC which handles I2C communications in hardware) brings the countdown to 12 devices. Removing the 40 pin devices (which are just too big!) leaves six chips to choose from.
From the remaining six devices the PIC 16F1936 has the largest size EEPROM, RAM and program memory (per unit cost) as well as an internal oscillator (negating the need for additional clock generating components) which would make it an obvious choice. However, careful review of the device specification reveals that the ISCP feature on this newer MCU only functions with newer programming and debugging equipment – which – I do not have access too.
For these reasons, the PIC 16F876/873 MCU was chosen as the base for this project. A well understood and documented part supported by many debugging tools; it fulfils all the stated requirements. Past experience developing with 16F877 make writing code for these smaller units relatively straightforward.
Detailed hardware/software considerations
While the ports on a PIC MCU are easy to map to different functions, the locations of certain internal peripherals are fixed (relative to their output pins) and so it makes some sense to logically separate the different functions the MCU must perform and arrange the connected hardware appropriately.
The mechanical configuration of this project must either support or facilitate a number of functions – these include:
* Some kind of frame, to which things can be mounted
* A reliable method of steering and locomotion
* Allow for easy access to electronics and connectors and so on for simple maintenance
* A mechanism to extinguish small fires
Steering
Steering and locomotion can be accomplished through a single system by implementing some kind of differential drive. Contenders for the position are:
PRO: Look badass
PRO: Zero turning circle
PRO: Capable of crossing uneven terrain
CON: Requires a precise implementation for reliability
CON: Pre-fab implementations are inflexible and expensive
CON: Prone to damage due to the number of parts involved
PRO: Relatively easy to implement
CON: Steering not particularly accurate
CON: Traction control issues
PRO: Relatively easy to implement
CON: Steering not particularly accurate
CON: Traction control issues
A direct differential drive – in the format of two directly driven wheels (motor --> gearbox --> wheel) seems like the most straight forward way to build something like this. The specific implementation of the differential drive could be done in one of the following ways (though the considerations listed here mostly apply to all of the methods motioned above):
PRO: Afford precise positioning and indexing
PRO: Inherently position aware (assumed only)
PRO: Wide range of options and good availability
PRO: Easy to lock output shaft position (braking)
PRO: Good torque response
CON: Expensive
CON: Requires a relatively complex hardware and/or software interface
CON: Positioning is implicit, not actually known
CON: Non trivial drivers required
PRO: Cheap and readily available
PRO: Easy to configure torque/speed/size with an appropriate gearbox
PRO: Simple hardware interface
CON: No position/velocity feedback without additional parts
CON: Gearbox almost certainly required (at additional cost)
CON: Potentially high peak current draw to deal with
PRO: Readily available in a number of sizes/configurations
PRO: Simple, well documented interface
PRO: Position+PID based control makes positioning parametric vs. Implied positioning from a velocity controlled system
PRO: Low voltage, built in gear box
CON: Relatively expensive
CON: Continuous rotation requires hardware modification
CON: PID implementation isn’t great in some instances
CON: Cheaper units are not super reliable, can be prone to backlash
For mechanical simplicity, drive wheels should be connected as directly as possible to motor/gear box output shafts. Belts and chains introduce all manner of issues into systems like this. With an inline motor-gearbox type assembly, having both driving units on the same axis ill likely result in a fairly wide chassis which should be relatively stable.
Given the cost complexity trade off and the potentially sizeable payload the rover will need to move (at some speed) a DC motor solutions looks to be best fitting in this scenario.
With this in mind, whilst looking for a suitable combination of drive wheels, motors, gearboxes and controllers I came across the RD02 from DevanTech.
The RD02 kit comprises:
2x EGM30 DC motors with pre fitted encoders: http://www.robot-electronics.co.uk/htm/emg30.htm
2x 100mm diameter wheels on 5mm hubs
2x Wheel-motor mounting brackets
1x MD25 2 channel motor control board with serial interface: http://www.robot-electronics.co.uk/htm/md25tech.htm
Making use of the RD02 kit greatly simplifies the construction and management of the locomotive subsystem in the rover. Encoder feedback,...
Read more »There is a room full of candles and obstacles. Devise an object which can navigate the space and upon discovering a lit candle, extinguish it.
Create an account to leave a comment. Already have an account? Log In.
Become a member to follow this project and never miss any updates