A simple PC-programmable ac motor driver is easily implemented using one FIFO, simple logic, and power drivers. Figure 1 shows the basic block diagram of the circuit. It generates three sinusoidal voltage waveforms with 120° relative phase shift.
The 2-kbit FIFO memory (IC3) is organized as a long 1-bit, 16-kbit shift register with D0 as input and Q8 as output. The PC feeds the FIFO with the proper 16k bit sequence, implementing one period of the PWM sinusoidal waveform. The transfer rate isn't critical because the operation is executed once at system power-on.
Only three wires of the parallel port are used to implement data transfer: DB0 as input data, STB to write data into the FIFO, and DB1 to disconnect the PC from the board after completion of the operation. At this point, the system is ready, and the bit sequence can recirculate into the FIFO at a proper clock speed (CLK).
Recirculation happens via a multiplexer (IC1), which shorts Q7 with D0, implementing the long circular shift register. Every clock cycle, FF goes low because the FIFO is full, forcing Q8 to be written into D0. Three Flip-Flops (IC4, IC5) latch Q0, Q3, and Q6 every clock cycle and control the two motor drivers of Figure 2.
The PASCAL code for generating the 16-kbit PWM binary sequence of the sinusoidal waveform and transferring it to the FIFO can be found at the top of this page.
To download the listings, click Download the Code.