Bricktronics EXT1 and EXT2 not working as described in book

I built the bricktronics shield and chocolate milk maker robot from the bricktronics book, but the EXT1 and EXT2 outputs are not working correctly to run the stirrer motor and aquarium pump, respectively. I was working with Matthew after sending an email to support, but after some initial troubleshooting he has stopped responding. Can anyone help me to finish troubleshooting this? I am pasting our conversation below:
Matthew,
The first procedure did result in a flashing LED. What now?
-warren

On Thu, May 5, 2016 at 1:28 PM, Wayne and Layne Support support@wayneandlayne.com wrote:
Here’s how to build a little circuit that pretends to be a motor, for the purposes of checking if the EXT1/EXT2 ports are working correctly.

Find an LED and a resistor between 300 and 1000 ohms. On the LED, the longer lead indicates the positive lead. Solder one lead of the resistor to the positive lead of the LED. These are the connections to make to EXT1:

pin 1 - resistor’s free lead (which is connected to the LED’s positive lead)
pin 2 - LED’s negative lead
pins 3 & 4 - Connect these two pins together with a little bit of wire.

Using the same sketch as before, we should see the LED switch between on and off every two seconds.

If we observe the LED flashing every two seconds, that means the TIP120 switching transistor is operating correctly.

Alternative troubleshooting if the above procedure doesn’t result in a flashing LED:

Use a resistor above 1000 ohms (brown black red), ideally 10k ohms (brown black orange) or more resistance. Connect it between pins 1 and 2 of the EXT1 header. Connect pins 3 and 4 with a piece of wire. Using your multimeter, measure the voltage at pin 2. It should alternate between 0 and the high motor voltage (10v for you).

Let me know how the tests go.

-Matthew

Excellent, those are all good findings, thanks for taking the measurements. I’ll reply again in the morning with instructions on how we can use a led + resistor to test out the EXT1 and EXT2 ports.

-Matthew

Matthew,
Sorry about the delay, this is the first chance we’ve had to do this. Here are our results (all good, I think):

  1. The Vin input voltage from the shield, which is coming from your DC adapter or battery pack. Should be around 9v (or a little lower if you’re using batteries).
    –1. the vin on the shield is reading at a little over 10V.

  2. EXT1 pin 1. You can use a short piece of wire to stick in the header and then measure the voltage, or press the red lead to the pad on the back side of the PCB. This should match the reading from #1 above.
    –2. Yes, this also reads a little above 10V.

  3. EXT1 pin 4. This should be ground, so it should give a voltage reading of 0 or very nearly 0 volts.
    –3. Yes, this reads 0.
    Repeat #2 and #3 above for EXT2.
    –2. Yes, 10V.
    –3. Yes, 0V.

Load this sketch into your Arduino, then measure #4 below.

void setup() {
pinMode(11, OUTPUT);
}

void loop() {
digitalWrite(11, HIGH);
delay(2000);
digitalWrite(11, LOW);
delay(2000);
}

  1. Arduino pin D11, which controls the transistor driving EXT1.

This pin’s voltage should switch between 0v and 5v every two seconds.
–4. Yes, this does switch from 0V to 5V every two secs.

And we do have leds and resistors lying around.
Thanks again for your help, Matthew.
-warren

On Tue, May 3, 2016 at 10:00 AM, Wayne and Layne Support support@wayneandlayne.com wrote:
Hello again, I’m glad you have a multimeter, they are incredibly useful for troubleshooting. Switch it into voltage measuring mode, put the black (common / ground) lead on a ground pin (I’d suggest the two ground pads highlighted in the image below), then use the red lead to measure the DC voltage at these points (also labeled in the image):

  1. The Vin input voltage from the shield, which is coming from your DC adapter or battery pack. Should be around 9v (or a little lower if you’re using batteries).
  2. EXT1 pin 1. You can use a short piece of wire to stick in the header and then measure the voltage, or press the red lead to the pad on the back side of the PCB. This should match the reading from #1 above.
  3. EXT1 pin 4. This should be ground, so it should give a voltage reading of 0 or very nearly 0 volts.

Repeat #2 and #3 above for EXT2.

Load this sketch into your Arduino, then measure #4 below.

void setup() {
pinMode(11, OUTPUT);
}

void loop() {
digitalWrite(11, HIGH);
delay(2000);
digitalWrite(11, LOW);
delay(2000);
}

  1. Arduino pin D11, which controls the transistor driving EXT1.

This pin’s voltage should switch between 0v and 5v every two seconds.

Do you have any spare resistors lying around? What about spare LEDs? Any LED will work, and any resistance between 300 and 1000 ohms would be best. We can use those two parts together to make a little detector to diagnose the EXT1 and EXT2 connections.

Thanks,
Matthew

[image: Inline image 1]
here’s a picture of the backside, and I do have a multimeter. Thanks for
your help, Matthew!

On Mon, May 2, 2016 at 9:02 PM, Wayne and Layne Support <
support@wayneandlayne.com> wrote:

Oh no, I was hoping that would fix it. Thanks for attaching the photo, at
first glance everything looks great in terms of soldering. Maybe snap a
photo of the other side of the circuit board so we can see more of the
soldering joints?

Do you have access to a multimeter or voltmeter? That would be the best
tool to help us troubleshoot this.

I’ll take a look at this again tomorrow morning.

-Matthew

On Mon, May 2, 2016 at 8:58 PM, Wayne and Layne Support <
support@wayneandlayne.com> wrote:

[image: Inline image 1]Sigh, no luck, Matthew. In fact, with ext1, when I
plug a pin connected to ground on the power functions stirrer motor into
pin 4 on ext1, the arduino turns off. The board won’t turn off if the
cable isn’t plugged into the power functions motor, but will if it is (or
if I connect it afterwards). Also, no luck with the pump rewired as
suggested on ext2. I’ve attached a picture of my shield with the diodes.
Is there anything else I can take a picture of? Is there some way I can
test if the right voltage is coming out of the ext2 pins when they’re
supposed to be running a motor?
Thanks,
-warren

On Sun, May 1, 2016 at 5:00 PM, Wayne and Layne Support <
support@wayneandlayne.com> wrote:

Hi Warren, thanks for the email. I’m sure we’ll be able to figure out
what’s going on.

I pasted a screenshot of the book’s Figure 5-94 below, along with the
TIP-120 section of the Bricktronics Shield schematic (v1.04 and newer,
v1.03 had the diode connected incorrectly).

On the schematic, the TIP120 will be in one of two states:

  1. If the B pin has a low voltage (like 0v) then pins C and E are not
    connected.
  2. If the B pin has a higher voltage (above 1.5v or so) then pins C and E
    are directly connected and current can flow through.
    We use Arduino code to control the voltage at pin B, which turns the
    transistor on and off.

It looks like sometime between when we submitted the images to the
publisher, and when we finalized production of the Bricktronics Shield
circuit board, we rotated the EXT1 and EXT2 connectors by 180 degrees, so
Figure 5-94 is showing the wires in reverse order.

This is how the connections should be for EXT1 for the stirring motor. The
star on the circuit board indicates pin 1 on EXT1.

  1. Connect pin 1 on EXT1 to both 9V and C1 on the stirring motor cable.
  2. Connect pin 2 on EXT1 to C2 on the stirring motor cable.
  3. Connect both pins 3 and 4 on EXT1 to the GND pin on the stirring motor
    cable.

Basically just reverse the wire order to EXT1 in Figure 5-94.

For EXT2, the same applies. Skip pin 1 on EXT1, EXT1 pin 2 is the yellow
wire, EXT1 pin 3 is the blue wire, and EXT1 pin 4 is the black wire.

You did solder in the diodes correctly, nice work. I’ll have to update the
build documents to make that more clear. There was a bunch of confusion
with the diodes back at release, compounded by our mistake in how the diode
pads were wired on the circuit board, but v1.04 and newer is correct. With
cylindrical diodes like this, one usually matches the gray/black stripe
with the white stripe on the circuit board under the part, which you
figured out.

Let me know if you have any questions, I think reversing the pin order
should resolve the issue.

-Matthew Beckler
Co-founder and Engineer
Wayne and Layne, LLC

[image: Inline image 2]

[image: Inline image 1]

On Sun, May 1, 2016 at 4:40 PM, Wayne and Layne Support <support@wayneandlayne.com
wrote:

What’s up?: I built one of your kits, and it doesn’t work.
Which kit are you having problems with?: Bricktronics Shield
We’re sorry your kit doesn’t work. Could you tell us more about your
problem?: Hi, guys…I bought the bricktronics shield, soldered it up, and
attempted to build the chocolate milk-making robot from the Make book.
everything works great, except for the lego power functions motor and the
pump, which are connected to the two ext headers. If I connect the c2 on
the motor (or pump) to the top pin (ground) on ext1, and the 9v on the
motor to the bottom pin (+) on ext1, then the motor will run. in other
words, I have power, but not control. I did solder in the diodes, by the
way. I wasn’t really sure if I was supposed to, or which way to put them;
I put them in with the grey stripe toward the top of the ext header next to
it. Hope you guys can help me, because I’m almost there!
Thanks,
-warren
Is there a version number printed on the PCB? If so, what is it?: 1.04

Hello, there appears to be something broken with our email support system! It looks like the server got hung-up and will be sending out all the backlog of emails. I’ll look into the email support system failures and preventing future failures, but also reply here:

If you do have a flashing LED, that indicates that the Arduino is correctly driving the TIP120 transistor on and off. Great news so far!

What kind of motor are you using? A LEGO power functions motor or a non-LEGO two-wire brushed DC motor? If you could post a photo that might help.

This was my original suggestion for rewriting the LEGO PF motors to EXT1:

This is how the connections should be for EXT1 for the stirring motor. The
star on the circuit board indicates pin 1 on EXT1.

  1. Connect pin 1 on EXT1 to both 9V and C1 on the stirring motor cable.
  2. Connect pin 2 on EXT1 to C2 on the stirring motor cable.
  3. Connect both pins 3 and 4 on EXT1 to the GND pin on the stirring motor
    cable.

I’ll reply to your emails and we can continue support there.