Encoder Front Page
SRS Home | Front Page | Monthly Issue | Index
Google
Search WWW Search seattlerobotics.org

Designing a new controller board

Kevin Ross

kevinro@nwlink.com

Someone once wrote that the only constant in the universe is change. It has been very interesting to watch the changing face of the robotics hobby over the past 10 years. As I think back, there have been many great innovations produced by members of the Seattle Robotics Society, and that is something I feel very proud to be associated with. I also look forward to seeing the great things that will happen in the future.

An important part of our ability to innovate has been the use of some standard technologies that we have all become very familiar with. The 68HC11 based BotBoard kits in particular have been a real staple in the SRS. The HC11 is a versatile part that has served us very well over the past 10 years, and in all likely hood will continue to do so. However, in a couple of years, our supply of the 68HC811E2 is going to go away. Motorola is going to discontinue the 811E2 part. Other HC11 variants will live on. The last order date is June of this year, and the last shipments will be June of 2002. In anticipation of this, I went ahead and bought 500 of the 811E2 parts. This should keep the club in BotBoard's for at least a year or so. That is great, since the BotBoard plus is a handy and useful board for lots of small to medium sized projects.

It is time, however, to start planning for the future. So, I decided to embark on the creation of a new development system. I am going to document what I am planning and some of the decisions that need to be made along the way, and the steps needed to create a new PCB. In the end, I would like to have in place a new core system that SRS members can use to develop their own projects.

What was good...

A good starting place is to look at what we currently have. The HC11 is a decent enough chip. The key features of the 68HC811E2 are:

The nicest part of the HC11 is the bootstrap programming mode. This allows you to program the part in circuit without any external programming tools other than a serial port. This means it really doesn't cost a lot of money to get started with the HC11.

What could be better...

If I were in charge, I would like to see a few changes in the HC11. Specifically, I would like to see:

The Search...

I started thinking about what I could base a new board on. Looking at various options in controllers is like window shopping at a candy store. There are many very capable parts out there. I really like the 68332 boards. We already have several boards in the club that are available. They are, however, larger than many people would like to start with, and consume quite a bit of power relative to the single chip designs. The PIC series are good parts, but I dislike writing assembler, and we don't have access to free compilers or low cost programmer boards.

The important parts to me are a single chip designs with enough resources to do larger projects. I would also like to leverage and expand on the codebase and knowledge that the club already has in place. This helped me narrow my search parameters quite a ways. I am looking for a controller that we would have access to free or very inexpensive development tools that a typical hobbyist could get started with. I would really have liked a chip that had onboard development support, like the bootstrap mode of the HC12. I could indeed write a bootloader, and put it into Flash or EEPROM of the new board. This would, however, require someone to program the part up front, and to have access to a programmer in the event of bootloader erasure. Its was a possibility. Karl Lunt, for example, is working on a PIC16C874 design that has a built in bootloader.

I have already been working with the HC12 for many of these reasons. I like the HC12 because there is an SBASIC already available, learning the HC12 is no more complicated than the HC11, the peripheral set is similar but better, and the onboard debugging support (the BDM module) is very useful. The downside is that the parts are a little more expensive, and it requires a programming tool. All of the other controllers also requires some sort of programming tool, so it mostly becomes an issue of price. I already have available a low cost kit for programming the HC12, so that doesn't seem like such a big barrier.

The two variants of the HC12 I already work with are the HC912B32 and HC812A4. The B32 has 32k of Flash and 1K of RAM. The A4 has 4K of EEPROM, and 1K of flash. Both of these parts are great to work with. However, there is a newer part, the 912D60 which sports 60K of Flash and 2K of RAM. It also has 16 A/D channels, a nice PWM module, and some really interesting enhancements to the timer section.

Issues to resolve

I am leaning heavily towards the 912D60 at this point. However, there are still several issues I need to resolve before jumping in with all feet. Designing a general purpose board is an interesting set of tradeoffs. I could make it bare bones and extremely flexible, or I could put on dedicated special purpose components that not everyone will want.

I need to design a board for it. It is a 112 pin TQFP, which is the same as the A4. It really isn't difficult to solder, but it does require a SMD layout on a board. I have already done this part of the layout. I am also considering what kinds of extras to put on board. The D60 has 2 serial ports, an SPI port, 2 CAN network ports, and tons of other I/O. Most of the cool peripherals are connected to pins that can otherwise be used for general purpose I/O. There are 68 general purpose I/O and 18 additional input pins. Rather than tie up a bunch of these I/O ports, I am trying to decide which perhiperals are most likely to be used, and which others can be done using the end users design. I am leaning towards putting almost nothing else on the D60 board but 2 serial ports, a BDM connector, and a power jack.

The board will bring all pins down on .100" centers, so you can use my board as a socket for the chip. I did the same thing with my A4 board, and it has worked out quite well. I might also produce a development board with a few extras, like motor drivers and perhaps a couple of quadrature encoder parts.

I should have a board lay out done by the next issue.

Coming up...

In the next couple of issues, I am hoping to document what is required to get a board designed, debugged, and sent off to the board house for production. I am planning to use Eagle 4.0, GC-Prevue, Ap-Circuits for prototypes, and Advanced Circuits for the production run. I am hoping I will be able to convey enough information to point you in the right direction if you ever plan to create your own board.

 

Kevin