Created 23.5.2003

SC1 - a Shareware Controller

This an introduction to the SC-1, a multipurpose dual personality shareware microcontroller board. This is not a DYI electronics project page or build instructions for anything. The main purpose of this page is to introduce anyone interested to the SC-1 board and provide inspiration and pointers to related stuff plus background information and motivation for the design choises that I've made and which anybody who wants to use this board needs to consider.

The design, schematics and PCB layot along with some documention is available here for the interested. I have some board available at production cost. This is by no means any business, all information on this site is provided purely in the spirit of sharing what I've done, an the limited supply of boards that I have is made available only in the same spirit.

The schematics and PCB layout were created by me and you should remember that I have no formal qualifications for the job, so if you embark on utilizing, in anyway, any part of this design, you are totally on your own. Absolutely no guarantees, except that I can vouche for having tried to provide true story here. Having said that, I must say that I'm reasonably satisfied myself with the overall board design, schematics and PCB layout.I think it might be used as basis for e.g. a university level embedded system project.

As the schematics and layout are available , you can and should use your own judgement to see if they are worth anything to you. This is definatelly not a project for beginners and newcomers. The style of writing in this page is aimed to experienced hobbyist, pros and experts should look elsewhere and not spoil their day with this kind elementary stuff ;-)

Note that to utilize this board potentially quite a lot of software is required; this page mainly deals with the hardware aspects of SC-1. Maybe some day I will write about the software and maybe even make some software available. At very least I try to provide enough information to bring the tools and board alive with GNU tools. Someday.

I touch a lot of subjects here ranging from DC-servo motors to IrDA communication and quadrature sensors. While briefly introducing the concepts this page does not try to provide tutorial on those, for all of these subjects there is a lot of good, even excellent tutorials on the web. Not to mention that I'm no authority on any of these, just standing on the shoulders of giants and paroting stuff.... ;-)

Get the Documentation

These links will open in a new window.

Schematics as a PDF-file

PCB layout as a PDF-file

I/O-Cross Reference by MCU pin

Connector Cross Reference by con/pin

Bill of Materials

Shopping List

Power Budget

Links to Datasheets and Stuff

How this Board Came to Being

Every now and then, say more than twice each year, I get this idea that I could hook up a couple of parts, an MPU, some I/O to do something interesting. Lately I've not managed to do much in that line, maily of course because of lack of spare time;-), but also, because I do not fancy wiring complex circuits. Wired (at least if wired by me) circuits take a lot of effort to complete, are unreliable and difficult to trouble shoot. And if, against all odds, one manages to come up with something that would be worth reproducing, they are not reproducible.

Of course there are a lot of microcontroller boards around, so who needs one more? I had a look around, but did not like any that I found. Some were too pricy, some did not have the features I wanted. Besides, designing is half the fun the other part being construction. Anyway, sane or not, I deciced that I would have a go at designing a kind of hobby board with some interesting I/O and manufacture some PCBs. The result was SC-1 and this page.

Dual Personality?

Besides being a Swiss Army Knife style all round hobby board this board is also to function as the heart of my four axis CNC milling machine project and some of the I/O has been designed for that purpose in mind. My philosophy was to make it a good CNC controller first and a nice hobby board second. But actually the design came up quite nicely balanced so that the dual goals did not intefare too much. I least I think so.

System Block Diagram

Below is a block diagram of the board. Most of the blocks are optional, the idea is that the board is configured with jumpers but of course you can configure it by installing only the necessary parts, depending on your application. The board naturally centers around the micro controller unit (MCU), which is basically the only non-optional part of the board. In addition to the MCU, which contains both FLASH ROM and RAM, there is room for external RAM and ROM, and some potentially interesting I/O, including both voltage and current mode analog inputs and outputs, digital I/O, relay/solenoid drivers for outputs, HALL/opto fork compatible inputs, twelve half bridges for motor control applications, IrDA compatible infrared communication and Ethernet! There are on board regulators and a switch mode (step down) converter, just in case. And if you still think you need more I/O there is a connector for LCD character displa, hex keyboard and SPI interface connector for expansion purposes. Plus a RS232 compatible serial port for hooking up a PC in case you need to do some software development ;-)

What could be done with the board

Given the I/O briefly listed above, what could one do with it? Here are some of the applications I had in mind. Naturally some of these are mutually exclusive so before getting too exited you need to check out the schematics and datasheets plus board layout to see if it realy is possible.

Robotics with RC-Servos

You can control up to eight RC (Radio Control) servos. These are simple (to use) devices, they just need 6 volt in (the 5 volt available from the board should be ok) and a pulse whose width determines the position. There are eight PWM (pulse width modulation) outputs on connector J8. There are lot of good tutorial on RC servos on the net so I won't go into details here.

Motors, motors, motors

There is a dozen half bridges that can sink and source up to XXX amps. These are connected to PWM outputs of the MCU and offer a lot of interesting options. At one extreme you could control the speed of up to twelve permanent magnet DC motors and on the other extremen you could drive three 2-phase bipolar stepper motors. Or four 3-phase bipolar stepper motors, or two 5-phase! Mount an Agilent HEDS quadrature pulse encoder to the saft of a DC motor, hook it to the MCU quadrature inputs and create a closed loop servo motor (or two) for that high speed X/Y table you are planning. Or control (open loop) the speed and direction of six DC motors, make a Lunar roamer.

Back to the 70's

Use the two AD converters to digitize your music, write a piece a FFT (Fast Fourier Transform) spectrum analyzer software and use the sixteen hi current drivers to blink 55W / 24 V car halogens 'nsync to your favourite disco beat. Actually the board layut probably cannot handle that much current but you can always supplement it with extra wiring.

MP3 player

How does a web based MP3 player sound to you? Probably awfull because the on board DA converters are only 8-bit ones, but you could wire some neat DA converters from Analog Devices to the SPI connector and make your own MP3 player. Or, do you too hate those speaker cords that crawl all over your flat? Connect the DA output to an amplifier and hook the Ethernet controller to WLAN (you do have WLAN, don't you?) and presto, wireless speakers! Darn it, forgot the batteries, you still need the power from somewhere. There is always a catch somewhere!

Remote control your remote control

Well, not quite but, use the IR transmitter to talk to your VCR (Video Casetter Recorder) remote control receiver and program it via internet using an embedded web server running on the board. No longer do you need to remember to program it to record that 70's show before you catch the bus, you can do it all from the office at company time!

Remote control that old amp you built

I have this amplifier that I built long time ago. It uses a Motorola TC5500, if I recollect correctly (IIRC) pre-amp which has voltage controlled inputs for volume, bass, treble and balance. This board could be used to receive signals from a standard TV/radio set IR remote controller and control this amplifier. And the stepper motor driving capabilety could be turned into a CD jukebox system. Only that the simplest way to create a jukebox is to turn your PC into one, just MP3 all your CDs and store 'em a 40 Gig hard disk. Nothing to it. Sigh!

GSM Micromouse

Use the IrDA connection to connect to your mobile phone and give your micro mouse robot a global communication channel and cheat your way through the maze. Under Class B Division rules this is allowed, if you do not harm the local space time continuum.

a Weather Station

Turn the board into a weather station by hooking up some sensors to the SPI bus. With a LCD display and hex keyboard you can then read and record the weather from the convenience of your lazy chair. Or make it to a web server and check the weather back home, no matter where you are. And while you are at it, why not add a photo diode to one of the inputs, put it next to your house kW-meter that has the blinking LED indicator (at least mine has) and monitor the power consumption of your heating system.

Digitals scope or data logger

The next time you debug your lates circuit why not first make a digital lloscope from this board, would it not be nice to be able program you scope to catch just that ever so rare glitch that only happens under this or that condition? Actually, this maybe already a past dream as there are ridiculously cheap gadgets (aka oscilloscopes) that plug directly to USB connector. But a datalogger for the next launch of your high power rocketry project? That too maybe a bit of the mark as there are very nice PIC based loggers that hook between your keyboard and the PC so that you get the data directly to Excel. But still Daddy, I want to do this all by MYSELF...Or monitor your camping propane container turned to gas turbine!

The above are just some of the possibilites that I had in mind when designing this board. All you need is some imagination and of course it helps if your know your digital circuits and can do a litle programming. Software is actually what this board is all about.

Walk Through the Design

The Power Supply

Strictly speaking there is no power supply on board but there are voltage regulators, rectified power needs to be supplied to the board through J20. The DC input is protected by against wrong polarity by D6 which has a current rating of 1 Amp. If you need more current and you can of course change the type or replace it with wire althogether. (For example MBRS340TR has a rating of 3 Amp at 40 V, it comes in a SMC package instead of SMB but you should be able to solder it in.)

The board is designed to be powered from 9 - 36 V DC supply. The higher the voltage the more losses you will have on the linear regulators and thus more heat. As there are no heat sinks this puts a limit on either current consumption or supply voltage. Maximum input voltage of 36 V DC allows the use of simple rectified 24 V AC with sufficient filter capacitors (mind you if the line voltage is 10% above nominal you may be stretching your luck as some components might be over max spec). The minimum operating voltage of 9 V DC allows the board to be run from single 9 V block or 12 V car battery.

A word about the linear regulators. I chose to have them all of type LM317 which is adjustable, so that I need not to purchase three varieties. More components (two resistors) but they also have the nice feature that they can be used up 40 V input voltages, more than most fixed voltage regulators. In theory they can put out .5 Amps but the chosen D-pack (TO-252)package (without heat sink) limits the max power dissipation to about W at room temperature. So with 34 V input voltage you can only draw about 30 mAmps from the 5V line, hardly enough to power the MCU.

5 Volt regulators

The 5 V regulator feeds the MCU, external RAM/ROM, (off board) LCD display, Octal drivers, RS232 port and IRDA tranceiver + the encoder/decoder, so it is pretty vital piece. Depending on the current consumption you can get away with a linear regulator (IC17,R53,R72,C15) or if need more current, say you want to drive RC-servos with the board and solder on all the possible bells and whistles, then you need the on board switch mode regulator (IC19,C21,D3,R74,C19,C20,C14,C13,C16,L1). You need to decide and install only the approriate components. See power budget below for details on estimated power consumption of different parts on the board.

3.3 Volt regulator

The 3.3 V is only needed by the Ethernet controller and associated parts, so if you do install them you can leave the 3.3 reg out (IC20,R79,R80,C17). Actually, the 3.3V regulator together with the 100 mA drawn by the Ethernet chip limits the maximum allowable DC input voltage to the board to about 14 Volts, otherwise it may run too hot. If you need higher input voltages and install the switcher for the 5 Volt, then you can/should wire (sorry about that) the 3.3 V regulator input to use the 5 V instead of the board input voltage (V_DC).

12 Volt regulator

The 12 V regulator supplies the half bridge drivers (IC12,IC13,IC14,IC15), the (off board) position reference sensors for motors and the opamp (operation amplifier) that is used to buffer the DA outputs. All the voltages (except 3.3V) are available (via jumper configuration) at the I/O connectors (J8,J10) for use as supplies to the off board devices (relays, solenoids etc). At below 14 V input voltages (to the board) this regulator is not able to regulate anything, so you might just replace it with a piece of wire. The bridge driver work down to 7 Volts and most opamps too, so operation down to 9 volt in to the board even with the 12V regulator installed should work ok. There is no particular reason for the 12V to be 12V, you can change it from by changing the voltage dividers (R15,R13), just check that all components fed by the 12V line will remain within spec. You migh, for example, want to raise the voltage to 15V if you need higher output from the opamp and use one with whose output high does not reach the rail voltage.


MCU stands for Micro Controller Unit as opposed to CPU or Central Prosessing Unit, implying that it is in fact a system-on-chip (in case you have missed this piece of semantic pedantry ;-). The chosen MCU (IC10), Hitachi H8S 2398, is pretty much a system-on-chip, depending on which kind of system you want. In addition to the powerfull CPU it has got 256 kB Flash ROM, 8 kB RAM, three serial ports, versatile timers, lots of I/O etc, etc. For a minimal system you do not need much more than the MCU and the clock (X1,C28,R93) plus reset circuits (IC16,C11,R52,R39) plus the serial port (to be able to download some software. Actually, I plan to built my CNC (Computerised Numerically Controlled) milling machine using just the MCU, the serial port and the half-bridge drivers.

Internal Flash

According to the MCU datasheet the internal Flash can only be rewriten about 100 times, which is plenty if you just need to download the software once but seems way too low number if need to do some software development. However a knowledgable friend said that what the spec actually means is that the manufacturer guarantees that after 100 write cycles the data will be retained for 10 years, if you perform more write the data retention will gradually get shorter, he estimated that after a 1000 writes it might be down to year or so. I have high confidence on this friend and I'm going to try my luck, but if you feel differently you need to solder in the external Flash and do your software development there.

MCU operatin modes

The MCU can operate in various modes. You can run it in single chip mode in which you have more I/O pins available, or in external bus mode in which you can have external RAM/ROM (in external bus mode you can use either 8 or 16 bit bus width) and you can boot it up in a special bootstrap mode in which software can be downloaded using the serial port (J22). The operating mode can be configure with jumpers (J115,J16,J24). Without any jumpers installed the mode will be XXCHECK. The viable modes in which the board is designed to be run in are either single chip or 8 bit external bus mode. And of course the boot variaties of these to download at least the initial software. The 8 bit external bus mode is mainly aimed for the Ethernet controller.

External Memory

External here means to external to the MCU chip. There is room on the board for two 512 kB JEDEC standard chips (sorry no sockets, either you solder them on or not). You can thus have MB of RAM or (Flash) ROM or 512 kB of each. This should be plenty, actually I think I will never need them, but there they are, just in case like Pope's...

Solenoid Drivers

To drive (relatively) high current and inductive loads, such as relays, solenoids and magnetic valves, I incorporated two Motorola MC33298 chips (IC2,IC3) to the design. Intenally (on the board) they are connected to the SPI bus, which makes sence both in PCB real estate sence and in that there can be no need to switch these types of loads at high frequency, so SPI is fast enough. These chips have so called lo-side drive transistor ie the load is connected between a supply voltage and the output, which the driver then pulls down.

The outputs are protected against inductive spikes and short circuit (the chip was origanlly designed for automotive applications where ruggedness is vital). The short circuits protection turns of an individual output in case of a short. However, it is possible to destroy these chips with thermal overloading if you keep turning on the shorted output. Even though it turns off automatically it may eventually generate enough heat to destroy the chip. Keep this in mind when developing the software.

The chip has some built in diagnostic capacity in that if an output is in the off state you can check weather a load is present or not. And if an output is in on state you can check if it is shorted or not.

Despite of the immediate and fast over current protection it is possible to drive also loads with high initial (inrush) current, such as incandescant lamps. For this purpose you need to install the jumpers (J12,J13) to place the drivers in linear current limit mode.

In theory these drivers can drive 3 amp from each output pin. The Rds_on is 0.45 Ohms per output so the power dissipation is 4 W at max current which is quite a lot of heat, but you can parallel the outputs at will, so you can get this down to 0.5 W. With a maximum usable supply voltage of 50 Volts this gives 150 W of controllable power. With two chips that is 300 Watts, not much for disco but probably enough to discofy your T-bird not to mention controlling a dozen or so magnetic valves for automatic watering of flowers or a drink dispencer! Actually the board layout does not support this much current but you can augment the board with external wiring. Check the layout before attempting high currents.

Analog Inputs

There are four plain analog inputs (J8-39,J8-37,J8-35,J8-33) that are directly connected to the AD (Analog to Digital) converter inputs pins on the MCU. The converter on the H8S is a 10-bit one, so it is very nice, but the board layout and your wiring probably wont't allow this level of precision not to mention the noice. These inputs are protected by the TCF6000 (IC4) diode network that clamps the signals to +5V and ground. To use these inputs you connect your signal source (a voltage source) between the input and ground.

These signals can also be used as general purpose digital I/O pins.

Inputs with 4-20 mA Loop Cmpatibility

Two more analog inputs are provided (J10-37, J10-33). These inputs are provided with shut resitors to ground the idea being to use them as industry-semi-standard 4-20 mA loop inputs.

The 4-20mA loop, for the uninitiated, is a simple two wire scheme which provides power to a sensor and the signal from the sensor over just two wires. The scheme is that an unregulated voltage is alway provided between the two wires and the sensors can use this voltage to power its internal electronics or any local circuits it needs. The signal is transmitted by modulating the sensors current consumption proportionally. The great advantage of using current as the signal carrier is that it is immune to electrical (capacitive or inductive overhearing) interference, because the current modulator at the sensor side will compensate for any noise. As (almost) any sensor is bound to use atleast some current, 4 mA has been defined as the zero reference and 20mA as the max scale for the current loop interface.

To use these inputs the sensor (or whatever) is connected between the input and a supply voltage. Any current consumed by the sensor is visible as voltage loss over the shunt resistor (R90,R91) and can be digitized with the MCU analog inputs. This simplistic implementation (on this board) sacrificies 20% of the AD converter range because the zero point (4 mA) is not compensated for in anyway. But the simplicity is worth that I thought. And if you do not mount the shunt resistors you can use these in the same manner as the other analog inputs (and also as digital I/O). Also these inputs are protected by a diode network (IC24).

Analog Outputs

Two analog outputs are provided (J10-39,J10-37), which are connected to the DA (Digital Analog) outputs of the MCU. The DA converters are only 8-bit ones, but that is enough for most applications.

Either buffered voltage mode or 4-20 mA current mode is available, configurable with jumpers (J4,J5).

In the voltage mode (jumper between pins & 2) the output voltage depends on the voltage divider (R86/R89 and R88/R87) and is of course limited by the installed opamp (IC21) output capacities and the 12 Volt opamp supply. To use this mode the load must be connected between ground and the output.

In the current mode (jumper between pins 2&3) a transistor (Q1,Q2) functions as an open collector controlled-current sink. The current is controllable between 0-20 mAmps making it compatible with the 4-20 mA loop spec (if there is one, it is such an ancient thing). To use this output mode the load needs to be connected between a supply voltage and the output.

RS232C Port

A RS232C compatible serial port is available (J22) for connection to a PC (Personal Computer) with a stanrad 9 pin cable. The board is wired as DTE (Data Terminal Equipment)with a male connector, same as a PC, so a cross cable with female connectors is needed. This port and cable could also be used to hook two boards together. CTS (Clear To Send) and RTS (Request To Send) handshake lines are provided. The serial port is wired, via RS232C transceiver (IC25) to the MCU serial port , which makes it possible to use it for bootstrap loading also.

IrDA Port

The MCU serial port 0 is connected to an Agilent IrDA encoder/decorder (IC22) which inturn can be configure with jumper(J3, between 2&3) to drive an Agilent IrDA transceiver (IC1). This should enable you to use your GSM cellular phone as a wireless modem with the board (no strings attached, pun atempted) or talk to your laptop PC to exchange files, for example. If you don't want the IrDA you can leave out the encoder/decoder.

IR-remote control

The above mentioned IrDA transceiver, which is litle more than a high curren IR LED and an IR-photo transistor in the same package, can also be connected via jumpers to the MCU I/O port.

My bright idea was that to be able to send IR remote control commands to your VCR or TV would open up interesting possibilites. And to be able to receive command from standard remote conrols would make it possible to command the board with an off-the-selv remote controller (like the one that was left over from that TV set that was dropped out of the window when the license inspector knocked on you doormitory door).

You have the choise of two outputs and two inputs to drive/read the transceiver. The reason is that to drive the transmitter IR-LED you probably would like to use one of the TPU (Timer Pulse Unit) outputs in the MCU, which means the pin in question cannot be used for anything else. So you need to sacrify something, basically either one of the half-bridge drives or one of the (possible) RC-servo outputs. I couldn't decive which, so I put in a jumper header (J6). Now you can choose.

The same reasoning applies to reading in the IR-opto transistor, you would probably want to use the pulse counting facilites of the TPU to receive the data but do you want to sacrifice one of the quadrature inputs or one of the half bridges. As answer dependce on what you want to do I put in another jumper header (J1).

I have to confess, I'm a bit out on a limb here as I haven't got any experience with either IrDA or remote control IR application in general. Just thought that might interesting to experiment with those too.

Dozen or so Half Bridge Drivers

There are twelve of these to be exact. Why twelve? That is because I want to drive both three and two phase stepper motors with this board and to drive a bipolar (is there any other kind) 3-phase motor you need three half bridges and to drive a 2-phase motor you need four half bridges. So the lowest common denominator is 12. Besides, one HIP4086 driver driver three half bridges so 12 is a neat figure from that point as well.

The twelve half bridges are made of two N-channel MOS-FET swithces (Fairchild NDS 9956A) each (Q5A/B-Q16A/B). These come conveniently in a small surface mount (SO-8)packages. The switches can handle 30 Volts at 3.7 Amps with Rds_on of meager 0.08 Ohms. This means about 1 Watt heat dissipation at max current! No need for heat sink! The half bridges are fed directly by the DC input of the board, so what ever riple voltage you have there is directly visible at the outputs of the drivers.

Note that the 30 V max rating means that your power supply must not put out more than that, so rectifying a 24 volt winding and filtering it is out with these FETs installed. If you need that you could try FDS3890 devices that have even more impressive specs, but I have no experience with them. They should handle 80 Volts at 4.7 Amps with Rds_on of only 0.044 Ohms, yes that's right, 44 mOhms.

With N-channel MOS-FETs driving the upper side switch is always a bit complicated, but the HIP4086 (IC12-IC15) chip makes it easy, it has built in charge pumps to generate the above-supply voltage levels necessary to drive the high side gate and also provide circuitry to prevent accidental (or intentional for that matter) shoot through, which is nice, especially in a software driven system.

In order to protect the MOS-FET and maybe even more importantly to protect the PCB board an over current protection circuit is implemented by (R112,R103,C36,R95,Q17,R99,C43,R104 and Q21 for motor drive 1, see schematics for the other motor drives). Quite a lot of component (even if cheap) for just protection, but given the nature of software I think they are worth every cent. But if you think you can lead a meaningfull life withtout them, just do not install them, just replace the current measurement resistors (R112,R113,R114,R115) with pieces of wire.

Over current triggers a flip-flop (IC9/A) which disables all of the half bridge drives, loose one motor, loose all. Software can then reset the flip-flop when approriate. A LED (D2) is provided to visually allert the debugger (that's me) of the problem. The over current signal is also connected to the a MCU interrupt line to alert the software, the flip-flop is there realy only to provide fast and software independent action. Again if you do not need the over current protection, you can leave some parts out (IC9,R7,R16,D2).

Note by, my main focus here has been the 3-phase stepper motors as you can read from the schematics as the over current protection is common to 3-half bridges. However, this should not make much difference if two phase motors are used.

So why not a ready made H-bridge? Well, good question. First of all the price of this solution (to me atleast) was atractive, the HIP4086 should be available for less than 5 EUROs and the FETs at less than 80 cents a package. The last time I checked I could not beat this with an integrated solution (i.e. one chip). Also most of the one-chip solutions require heat sinks as they are old designs with inferior MOS-FETs. And the flexibility of a semi discrete solution is that you can use better (or worse) FETs as they come available.

Driving Stepper Motors with the Half Bridges

Usually when you want to control motors, especially stepper motors, you put in a sequencer and a pair of H-bridges with built-in current chopping and be done with it. This is a bit different approach.

First of all there is no sequencer, instead it is all done in software in the MCU using the TPU, which can put out 15 PWM (Pulse Width Modulation) signals.

Secondly, there is no current chopping. In motor, magnetic force is generated by current which in turn is generated by applying a voltage to the coils of the motor. Now if you drive the motor slowly (I'm talking about steppers here) you apply the nominal voltage to the coils and get the nominal current flowing as a result. At higher speed, however, the short pulses of the nominal voltage are not enough to rise the current in the coil, because of the coil inductance, to the required level. So the normal practice is to drive motors from considerably higher than nominal voltage and have a current measurement circuit that turns off the voltage as soon as the desired current is reached. This prevents the motor from burning with under slow speed conditions and still enable enough current and hence torque at high speeds.

But my plan is to do this open loop ie no current feed back. With PWM control of the half bridge drives it is possible to generate a virtual or average voltage (between ground and V_DC) at any of the outputs (J19/11&12&13,J19/8&9&19,J19/5&6&7,J19/1&2&3) at high (say 40 kHz) frequency. As the motor characteristics (coil inductance) is known it is then possible to predict, ie calculate, how large a voltage needs to be applied to the coils depending on the speed. It should even be possible to do so called micro stepping with this technique.

To drive stepper motors you connect each coil end to one half bridge. This also works for permanent magnet DC-motors. As stated you could control the direction and speed of up to six motors with this (or with a suitably stiff midle tapped power supply you could do it even for twice that many motors!)

A bit unconventional approach, sadly not (totally) original to me.

Quadrature Inputs, or DC-servos anyone?

Over the years DC-servos have, for some obscure reason, facinated me a lot.

A DC servo, for those not in the know, is a (usually) permanent magnet DC-motor, with a positional or speed sensors and control system that uses the sensor information to precisely control the speed or angular position of the motor. These have many same applications as stepper motors but have inherently more torque and speed available because, unlike stepper motors, they are operated in closed loop fashion and can never loose steps (they sometimes may lag a bit or over-shoot the target or oscillate about the target a bit, but then there is no such thing as free lunch).

A common way to get both (angular) positional information and speed information is to mount a pulse sensor on the motor saft (or gear box output saft, there are pro's and con's here). Basically they are opto fork and interrupter discs, you probably have two of them inside your mouse! Usually they have two opto sensors for each disc so placed that there is a so called 90 degree phase shift between them. In practice this means that if the spokes (or holes) in the interupter disc are 1 mm appart then the sensors are 0.5 mm appart. This means that a) the two signal never change simultaneously and b) if you look at the other signal at each rising (or falling) edge of the other signal it will tell you the direction of rotation! What a clever piece of hardware. Agilent makes a range of these, under the type code HEDS. They are not cheap but then they are of the high precision required for this application +500 pulses per revolution.

So anyway, the MCU has two quadrature inputs (ie two times two inputs) that are internally configurable to count these pulses so that both position and speed information can be recovered. All you need then is some software that implements the classical PID (Proportional, Integrating, Derivative) control system ie if the position is laging behind, increase speed (voltage) and vice versa. But that's worth a book all by itself.

These quadrature inputs are wired to the connectors (J8/7,11,15,3) in case you or I want to experiment with this topic.

Reference Inputs

Any motor controller application (bar the most trivial) needs atleast some reference sensors so that the software knows in which position in the real physical world the arms, joints and actuators are. If absolute position sensors are used then the mechanisms are drive, preferabley slowly and safely, over their range of movements and the reference sensor is used to detect a reference point on that range, from which then all movements can be calculated.

For this purpose the board has inputs for four reference sensors, one for each motor (if you are using 3-phase steppers). My idea is to use the kind of reference sensors that change state in the midle of the most usefull travel of the movement. In this fashion the state of the signal directly tells you which way to drive the motor if and when you want to find the actual reference position and when the signal changes you know that this is it! There is no need for limit switches (unless you distrust the software ;-)

The inputs (J19-15,J19-24,J15-21,J19-18) are compatible with simple switches, HALL sensors (such as Allegro UGN 3123) or common anode/emitter type opto forks (such as Alep OJ 2020). Each input is provided with a pull up so that the sensor just needs to be of the closing contact type (open collector).

Power is also provided for each sensor. As opto sensor usually require a current limiting resistor these are incorporated into the power feed for the sensor (R119-R122). Moreover, as opto fork and to lesser extent HALL sensors as well are current hungry devices the power feed for the sensors is under software control (Q3,Q4,R37,R38). These transistors (same as the DA current mode sink transistors Q1 and Q2) are not surface mount devices so that they can better handle the current and the heat. The optos can take up to 50 mAmps each so the transistor need to handle up to 500 mAmps peak. Note that many common small signal switch transistor cannot handle that, especially not continuoysly, so take care when writing the software.

Again, for those that do not know, a HALL sensor can be thought as open collector transistor whose base current is induced with a magnet! In otherwords in presence of magnetism the transisto starts to conduct. In actuality internalay there is HALL-effect sensor and some smart sensing and amplificatio logic, but who cares. We nice in may application as it provides for non contact approximity sensing, sometimes inherent magnetism in parts is enough and no external magnets are needed, though usualy they are used. Mostly used as on/off ie logic level input device but there are varieties that can be used to also indicate the strength of the magnetic field.

Touch Probe Input

There is a touch probe input to connect to a touch probe (J23-2). A CNC milling machine needs not only motion reference sensors to know position of the milling table but also a reference from the work piece. For that purpose a touch probe is mounted in place of the cutter and system is drive to a reference point on the work piece. The touch probe inputs is just for this purpose, in every respect it is identical to reference inputs.

Speed Control Potentiometer Input

A milling machine speed needs to be controlled in real time, for example to control chatter. To do that a potentiometer is much more handy input device than the computer keyboard. Therefore one of the AD inputs is also available (J23-5) in the control console connector.

LCD -interface

There is quite a variety of character based LCD displays available. Single row of 40 characters, two rows of 24 characters each etc. At bargain prices as surplus devices. What these have in common is that they can be interfaced to a micro controller using only seven I/O pins. Actually, that is quite a lot, but this industry standard has a long history so nobody had thought of SPI or some such simple interface yet. In those days your idea of a MCU was a postcard sized PCB full of 40 pin DIL packaged chips. Anyway, there is a connector and enough (just) I/O on this board to hook a LCD display to it. Together with the keyboard input (see below) this makes it possible to create a totally standalone gadgets with some human readable/writable I/O.

Hex Keyboard Input

Actually this is just an 8 bit I/O port with a connector (J14). By using four of those lines as outputs and turning them on (or actually off ie to logic zero) one at a time it is possible to scan and read in a 16 key matrix keyboard. The name hex must come, instead of six, from the word hexadecimal meaning base 16.

Ethernet Interface

An on board Ethernet controller makes it possible to hook the board to standard 10/100 Mb twisted pair Ethernet. With an TCP/IP stack you can turn it into a web server. The great thing about TCP/IP is that the Sockect based communication needs no drivers (that YOU need to write) so any hardware with Ethernet/TCP/IP capabilety is orders of magnitude easier to interface to any computer (that has TCP/IP of course). Throw in Java and you can write totally platform independent applications that control you hardware. Use Mac or Wintel or Linux, Write-Once-Test-Everywhere or something like that...

Again, if you do not need the Ethernet you can save some money by not installing the Ethernet stuff (IC18,X2,C79,R116,R117,R124,R125,D7,R66,R69,R71,R70,R68,R67,T1,C63,C64,C77,C78). The Ethernet chip is probably the most expensive component on the board, in the order of 15 EUROs + the transformer 5 EUROs. Which is not much.

Connections (not by James Burke)

Below is a sketch of the front panel.

I/O Connectors J8 & J10

These connectors are 40 pin so called headers i.e. they are just pins sticking out of the board. The 40 pin format was selected so that you can utilise all those flat ribbon IDE cables that are lying around from decomissioned PCs (I trust you never throw anything away?)

The pins are arrange into 'cluster' as illustrated below.

This makes for convenient wiring, just splice the ribbon cable to threads of two to four wires and connect them. No need to connect more that one device to one wire.

SPI-Expansion Connector J2

Motor Connector J19

Control Console Connector J23

Ethernet Connector J21

RS232 Connector J22

Power Connector J20

LCD-Display Connector J11

HEX Keypad Connector J14


J22 - Wrong Gender

This connector (a D9 - RS232C connector) is wired as DTE-equipment, but the gender of the connector is female, instead of male. So to connect it to a PC COM port you need a female/male cable with wires 2-3 and 7,8 crossed. This may not be readily available, so you may need to wire it your self.