To estimate a development effort I start with gathering the requirements. What is the power source, inputs, outputs, user interface, communications interfaces, and environment? This information allows the hardware that connects to the outside world to be designed. The details of the logic between the inputs and outputs will indicate what microcontroller or other circuitry is needed for processing.
Essential to the function of any circuit is its source of power. I have designed for AC sources up to 240 volts and participated in the agency safety testing and electromagnetic immunity and compatibility qualifications of those designs. A circuit fed by a class 2 supply which is low voltage and energy limited will be faster to execute due to reduced agency consideration and typically lower immunity and compatibility needs.
There are many types of input connections I have experience with. I have the most experience with temperature sensors but have worked with many others like current, light, and position. Sensors can be digital or analog. Proper power and signal conditioning should be considered for either type. Additionally, digital sensors may only require an appropriate communications interface in the microcontroller but analog sensors could require additional gain, filtration, or other types of conditioning. Most modern designs convert analog signals into the digital domain for processing in a microcontroller.
Outputs can vary greatly depending on the application. There are thyristor switched 240VAC, motor, battery charge, and LED drive to name a few. It’s important to get the current and voltage limits for the output so the components can be selected. Knowing the load characteristics will indicate whether the output will need to withstand conditions like voltage transients and current inrush.
A simple users interface may contain some push buttons and LEDs. An encoder and character display would add more flexibility. Graphic displays with touch are becoming more common but require a significant investment to develop the graphical user interface.
Communications is an increasingly common interface to the world outside the circuit to consider. UART based interfaces are usually the simplest from a hardware and software perspective. USB interfaces have become easier to implement with the peripherals and software libraries included with modern microcontrollers. More resource intensive interfaces like Ethernet are not much more complicated to implement from a hardware perspective but require significantly more software and memory to support them.
Even though the vast majority of my projects include a microcontroller some applications are best served by simple analog and logic circuits to process the inputs and outputs. Avoiding a microcontroller when it’s not necessary reduces design time and the risk of software bugs.
Most projects will gain enough value and flexibility from having a microcontroller to justify the additional development cost. For most projects, I would suggest the use of an ARM Cortex-M based microcontroller because of the breadth of parts and development tools available. Cortex-M microcontrollers are available from simple $0.50 parts to parts that can play video streamed through an Ethernet interface. Reasons to consider other options could be high-cost sensitivity, unique environmental or peripheral requirements, or supporting a legacy platform.
The environment of electronics is an important consideration. The temperature of the electronic assembly’s environment will drive what the component ratings need to be and what type of thermal management should be used. If the environment is dirty or humid silicon coating or a sealed enclosure should be considered.
For a project gathering the hardware requirements consists of identifying the connections to the world outside the circuit and what is necessary for the circuit to process those connections. The software or logic will implement the processing of the connections