I bought an ODB II code reader to diagnose a check engine light problem of my car. The reader I got was an Autel MaxiScan MS300. This particular model is very popular as it is rather inexpensive, coming in at just around $20. Out of curiosity, I decided to open it up and take a look of what is inside.
The design of this ODB II reader is quite elegant, by removing the two self-tapped screws at the back, the clam shell case opens up easily. The following picture shows the circuit board inside:
The first thing I noticed is that the build quality is quite exceptional, especially for this kind of cheap devices. The overall design is pretty standard and more or less what I had expected.
To the left is the 8×2 character LCD module, which is secured by thee screws. The fourth mounting hole on the LCD is left unused as the circuit board lies directly underneath it. Of course, the PCB could have been routed such that there is enough room for a fourth stand-off to come through but I guess that securing three corners of the LCD is probably considered more than adequate by the designer.
The LCD is a JHD571 8×2 character display based on KS0066 which is compatible with the popular HD44780 chip. It is made by Jing Handa Electronics.
Like many Chinese electronics products, the MCU is 8051 based. The chip used here is an STCMicro STC89C53RC. This chip does not have integrated CAN bus support and thus a Microchip MCP2551 CAN transceiver chip is added. Today, many MCUs have integrated CAN transceiver so it may be a cost consideration for this two chip design.
Interesting enough, the board has the UART port clearly marked. Presumably it can be used to reprogram the MCU. This makes sense as new OBD II codes can be loaded to make the device current without having to revision the board design.