4

Recently I have read two books about programming in general: First one being Code Complete and the other being The Pragmatic Programmer that describe how one should think when dealing with large projects. Wonderful books.

My weak point is electronics. How shall one start with larger projects? How do the "professionals" do?

For example, If we are going to make a vacuum cleaner robot, do they review the requirements first? Start sketching in a computer ECAD software? Or maybe the breadboard? What steps should I follow?

2 Answers2

8

The general steps to the engineering design process are:

Define the Problem

This is typically the customer's or the boss's job. To decide how to fix something, you must first know what needs fixing.

Do Background Research

Understand the problem. Find out everything about it. Consult experts, literature, and conduct design reviews and generate questions for the client.

Specify Requirements

Take the customer's problem, and the information gathered, and put quantifiable specifications and constraints on the solution. This isn't a time to define a solutioin, only to determine how to measure the solution's success.

Create Alternative Solutions

This is where you take the specifications, and generate different ideas to approach the problem. For example can the problem be solved with a few logic gates, or is a microcontroller necessary? Customer input will likely be necessary.

Choose the Best Solution

Evaluate the pros and cons of each proposed solution. Choose the one that makes the most sense. There are many variables in that decision, such as price, availability, time, etc.

Do Development Work

This is where you actually implement the chosen solution. Simulate and breadboard until your heart is content.

Build a Prototype

Take the developed solution, build it, and integrate other aspects of the project (ie. mechanical).

Test and Redesign

Take the prototype and evaluate it against the specifications. Make any design changes based on information gained, and complete another iteration of this process.

Matt Young
  • 13,734
  • 5
  • 34
  • 61
  • I would add that for very complex problems, sometimes the evaluation of alternative solutions involves building prototypes of those solutions and testing them before deciding which one is best for the final design. – lyndon Jun 01 '13 at 18:23
3

Professionals start with breaking down the design into smaller blocks that can be designed somewhat independently. This is very similar to how software people break a problem into function, modules, classes, etc. Of course, it is mostly experience that helps us subdivide the design into blocks that make sense.

With a Vacuum Robot, I would break up the design into the following blocks: Microcontroller, sensors, power, motor control, communication, and motors. Additionally, there are the following non-EE blocks: Chassis, dust collection, microcontroller firmware, wheel drive, possibly PC/Mac software, packaging, manufacturing, sales, technical support, test and validation, etc.

I came up with those blocks based on experience and a guess at what the requirements would be. Of course, if I had read requirements I might change the blocks. But odds are that those blocks are 95% correct.

Next, I would figure out the electronic and non-electronic parts required for each of the blocks. Of course there are dependencies to be dealt with. For example, the motors depend on the dust collection system and the wheel drive system. Motor control and drivers are dependent on the motors. Power is dependent on everything. I should at least have a very good idea about what the major parts are before starting to draw out schematics. I would also work with the chassis designer before starting on the PCB layout.

I would not use a breadboard at all. Breadboards are of very limited usefulness for professionals for several reasons. Circuits are often too complex for breadboards, either in size, speed, or other electrical properties. The parts that I would use in a robot are often incompatible with breadboards (surface mount parts). And breadboards are too delicate, too error prone, and too labor intensive. Professionals almost always go straight to designing a PCB for the product-- even for proof of concept designs.

There is nothing special about what comes after this. I just work on each of the blocks until I'm done. There is a lot of iterations. As one block changes, I might have to change another block. For example, changing to a bigger motor might change the size of the battery. I also go back and forth with the other engineers (software, mechanical, etc.) making our respective parts work well together.