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
- ngspice for simulating 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
- 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
Beyond this, being interested is the best motivation.
- LED dimming and toggle w/ AT90S2313 (PWM, interrupts, rotary encoder)
- LCD display "Hello world" w/ AT90S2313 (LCD)
- LCD control over serial link w/ 2x AT90S2313 (LCD, interrupts, UART)
- Circular buffer on AT90S2313
- Radio serial link
- a process for circuit board creation
- bayesian classifier + IP blocking for website attacks
- control the position of one servo motor with another
- WebGL fabric modelling
- Yet Another PIC Programmer
- ngspice tutorial
- temperature controlled oil heater with remote sensors