This is revision A design of the Motor30 board.
The Motor30 board provides a DC motor controller that can supply up to 30 Amperes of current using the ST VNH3SP30-E H-bridge chip. It uses an Allegro ACS715 30 Amp current sensor to limit current to no more that 30 Amps. The motor drive circuitry is electrically isolated from the logic circuitry. The logic circuitry is centered around an NXP LPC1754 embeded ARM microcontroller. At manufacture time an Austria Microsystems AS5040 Hall effect rotary sensor can be installed for tracking motor axis rotation. If no motor rotation sensing is needed, the AS5040 is left off to save the expense.
The control circuitry is powered by the LPWR and LGND pins on the 10-pin Robus connector. LPWR can be as high as 30V. It is fed into the LM2931 and regulated down to 5V. The LE45AB converts the 5V down to 4.5V needed for the DAC on the LPC1754. The 4.5V is regulated down to 3.3V for the LPC1754. The 4.5V and 3.3v are used by LPC1754. The AS5040 uses 3.3V as well. The remaining chips run at 5V.
The control signals come in via a 10-pin Robus connector. The CAN physical layer signals are decoded via the MCP2551 CAN bus transceiver. The MCP2551 is a 5V part and the signals are directed to both UART1 and CAN1 on LPC1754. Either UART1 or CAN1 (but not both) can be enabled by LPC1754 firmware. The LPC1754 has 5V tolerant pins.
The AS5040 is a 10-bit accuracy Hall effect absolute rotary encoder chip. It is run off 3.3V. The AS5040 can be queried for its absolute position using an SPI protocol or it can be accessed via A/B/Index for a quadrature decoder. The ACS5040 pulse width output is not used. The quadrature signals are fed to the MC0, MC1, and MC2 quadrature inputs on the LPC1754. The CSN, CL, and DO signals are fed to the SSEL0, SCK0, and MOSI0 pins on the LPC1754. The AS5040 is an output only device. The PROG pin on the AS5040 is grounded because it is not needed. At this time it is not clear whether the quadrature or SPI interface will be used to access the AS5040 chip.
The DS8921 is an RS-422 receiver and transmitter in a single chip. It is connected to the 5V tolerant UART2 pins on the LPC1754. The RS-422 signals are connected to the 1x4 SERIAL_RS422 connector. This connector can be connected to another Motor30 board so that they can talk to one another. This allows one master Motor30 board to control a slave Motor30 board to provide differential drive and dead reckoning. The 100 Ohm resistor provides RS-422 signal termination. The SERIAL_RS422 connector is designed to plug into the other board via a complete wire swap of the 4 wires.
The ICSP5 connector is used for In Circuit Serial Programming. A 3.3V serial connector is connected to ICSP5. The NPGM pin is used to flip between run and program mode. There is a 10K pull-up resistor on this line. The NRESET pin is used to reset the LPC1754 and has 10K pull-up resistor as well.
The ACS715 current sensor is a Hall effect current sensor that can measure up to 30 Amps in one direction. It is mounted on the "ground" side of the VHN3SP30-E. It is electrically isolated from the motor side electronics. The ACS715 runs off of 5V. The VOUT signal ranges from 500mV to 4.5V linearly as current scales from 0 Amps to 30Amps.
The LPC1754 Digital to Analog converter is used to set the maximum allowed current through the VHN3SP30-E. The maximum voltage of the LPC1754 DAC is controlled by VREFP. VREFP is allowed to be as high as 4.6V. By coincidence, the highest expected output from the ACS715 is 4.5V, so the DAC output can be directly compared to the ACS715 voltage output. The comparison is done using an LM311 with a 10K pull-up resistor to 5V on its output.
The PWM1.6 output of the LPC1754 emits a 10KHz stream of narrow pulses. Each pulse with needs to be just wide enough to clock a "1" into the 74HCT74 D-type flip-flop. The 74HCT74 will accept the 3.3V clock pulse from the LPC1754. The D-type flip-flop output is fed through an optoisolator to the PWM input of the VHN3SP30-E. When the VOUT signal from the ACS715 exceeds the voltage supplied by the LPC1754 DAC, the LM311 goes low and clears the 74HCT74. The clear pin on the 74HCT74 takes precedence over the clock pin. This disables the pulse fed to the PWM pin of the VHN3SP30-E. Thus, the VHN3SP30-E can never allow a current greater 30 Amps to flow. {Verify that the correct Q vs QBar pin is connected.}
Two additional optoisolators are hooked up to 3.3V output from the LPC1754 to control motor direction and braking on the VHN3SP30-E.
The motor control circuitry uses another LM2931 voltage regulator to provide 5V. While the VHN3SP30-E will accept anything over 3.5V as a logic high, the optoisolators need a regulated voltage to keep current levels under control.
The VHN3SP30-E is hooked up to the MOTOR_POWER connector. To simplify wiring of multiple Motor30 boards, another connector is provided for power daisy chaining. The power is fed into the VCC pins of the VHN3SP30-E and comes out via the GND pins. This is fed through the current sense side of the ACS715. The 1500uF capacitor provides motor surge capacity as per the recommendation of the VHN3SP30-E specification sheet.
When either side the H-bridge detects a fault condition, it drives the ENA_DIAGA/B pins to ground. The 2 10K pull-up resistors normally keep these two pins a 5V. The two diodes of the optoisolators are off because both sides of the diode are at 5V. When a fault is detected, the ENA_DIAGA/B pin goes to 0V and causes current to flow throw the appropriated optoisolator diode. This signal flows back to the LPC1754 for system shut-down. {Missing 10K pull-ups!!!}