Monday 27 February 2017

component selection - How do I plan a long range product with microcontroller that needs long term support?


I need to use a microcontroller on a system that must stay working without major changes for a long time (decades). To ensure that there always will be replacement parts, I need a microcontroller that will be long run produced or produced by some manufactures in a firmware binary and encapsulation pin compatible way. What can I do to ensure that the microcontroller I choose meets these criteria?


The application doesn't need much computing power. Its aim is to control motors and other industrial systems. A microcontroller of 8 bits capable of changing the state of about 8-16 IO pins at a frequency of 0.5-1 MHz is OK. An ADC may be valuable, but can be replaced by a simple external comparator.



Answer



The FPGA manufacturers say if you use a 'soft core', that is, a microcontroller written in VHDL, then that VHDL design can be implemented on any future programmable FPGA hardware, thus freeing you from the likelyhood of any particular piece of hardware going out of production.


To buy that argument, you would need to assume that programmable hardware will continue to be available over your timespan (which is probable), and will continue to be available in chip sizes, costs and voltages that will suit your product (which I find harder to believe). To use this approach, you would have to accept that you may need to do a new hardware design to accept a new package, which kinda defeats your object of no major changes.


My approach, and my advice would be, to isolate your control processing from the rest of the circuitry on a small board, and define your own interface to it, the fewer pins the better. Perhaps SPI makes a suitable interface, or a nybble bus with data read/write and address strobes. Then if your chosen processor becomes obsolete during the product lifetime, you only have to redesign and test a small board, rather than a large board with vital analogue product functions on it.



Program the control processor in C. Split your code strictly into generic algorithm, and hardware interface modules. Then if particular bits of hardware have to change, you have isolated the rewrite to a small number of modules, and are not crawling all over your code.


Choose a suitable voltage, I'd prefer 3.3v to 5v for instance.


When you choose your small control board, you could do worse than to pick a form factor that matches an available Arduino or PIC dev board. Then, your development and prototyping get a leg-up, and you could even start low run production with bought modules before designing a lower cost replacement.


No comments:

Post a Comment

arduino - Can I use TI's cc2541 BLE as micro controller to perform operations/ processing instead of ATmega328P AU to save cost?

I am using arduino pro mini (which contains Atmega328p AU ) along with cc2541(HM-10) to process and transfer data over BLE to smartphone. I...