Approach
The approach taken here is to apply the concepts of unit-testing and refactoring to the design of control systems. For electronics, to unit test, one way would be to start with code, then replace it with a piece of hardware that does the same thing, for example, a filter. Refactoring might be recreating a completed project on a breadboard with a duplicate set of parts (to test) and then modifying (to refactor). Good examples are changing the output of a filter, voltage regulator or amplifier, or switching MCU.
Any control system needs a number of components.
Always start by building the simplest possible device that works. For electronics, this is usually a blink program. For a control system, it would be processing a fake signal. While this seems trivial, it validates the whole toolchain: the power supply, the compiler, the programmer, the hardware, the wiring etc. Once that works, make one change at a time and test. If it fails, you know exactly where the problem is! In this way, you can build towards your goal.
Tools of production
Start with a small project and a budget. Buy the best set of equipment it affords for that project. Build your set over time.
These are the tools I have to date:
For PIC MCUs:
- XC8 for compiling
- a PicStart+ clone for programming pic16 MCUs (ZIF socket and ISCP) and a PicKit2 clone for programming pic16 and pic18 MCUs (ISCP only)
- pk2cmd for uploading
For AVR MCUs:
- avr-gcc and avr-objcopy for compiling
- a USBasp clone for programming
- AVRdude for uploading
GNU Make for managing compilation and writing of hex files.
For circuit design:
- Eagle with Adafruit library for drawing circuits
For circuit building:
- Power supply
- Fluke 179 DMM
- Hakko FX888D soldering iron
- Panavise 396 with Quadhands workbench mount
- SS-02 solder sucker with silicone tip
- Sidecutters
- Tweezers
- A 2mm drill bit
- A set of electronics screwdrivers
- Wire strippers
- Components: solder, a resistor pack, capacitors, wires, stripboard, breadboards and dev boards
How to choose the next project
There are many projects and limited time. Use the following guide (in order of priority):
- Prefer projects that build on previous projects
- Prefer new projects that enable multiple future projects
- Prefer projects that assist your career
- Prefer projects of commercial application
Some ideas:
- electronic magic 8 ball
- dead reckoning with a rotary encoder and accelerometer
- control the position of one servo motor with another
- motion tracker
- PIC programmer with ICSP