Asked — Edited

Hb25- Initialzing Via A Power Cycle

I have had a little issue with using the Parallaz HB25 motor controllers I use with "Cy". Maybe someone could shed some light on this. It would seem every time I go to power up the robot, I seem to have to cycle the power to the HB25's a "second" time before they will work with EZB. Power to the HB25 and Parallaz drive motors is the required 12V via a 7A SLA. I use the continous servo control with these, and generally have no problem with controlling them with scripts and such, but only after I have cycled the power to them the second time. One thing to note, I do have a small delay built in to initalize the HB25's as per Parallax's recommendation, and have tried a longer init and a shorter init times, with no difference in the result. I know others use these here too, so any ideas on whats going on? I have already looked thru here but could not find an answer to this so far. Thanks!



Upgrade to ARC Pro

Join the ARC Pro community and gain access to a wealth of resources and support, ensuring your robot's success.


Sounds as if the pwm detection of that motor controller gets confused. I doubt there is anything you can do on the ezb's side, unfortunately. You can attempt to re-initialize the pwm at a different duty cycle to see if that makes a difference.

There was another controller that has the same experience from spark fun. I forget the model number, but I used it on my omnibot. I would have to cycle the power on it if the ezb was ever disconnected because it would lose the pwm sync.

Lastly, check if there is a firmware upgrade for the Motor controller. Perhaps this has been resolved by the manufacturer?

Tough part is that parallax is getting out of Robotics and focusing on drones in education - so not sure how much time they are investing into fixing bugs - although their support is pretty good and Ken is a really great guy.


Hi tech, Yes I did know about the initialization, which I already am using. But would seem that it is having no effect, even if I stretch out the time a little bit more. I'm still having to cycle power. Il kinda thinking of adding a relay in the power input that would auto cycle the power from. the initial power up. Course this is just a thought.


That (relay) would probably work.




I'm familiar with those motor controllers, as per the documentation the I/O pin going to the HB-25 needs to be LOW when power is applied.

This is easy to control when you have an Arduino because the code runs immediately versus EZB waiting for the "brain" to tell what to do next.

you can try, a pull down resistor 1K between the GND and the HB25 pin, that will help the HB25 initialization and avoid the random locks when the pin floats waiting for a ARC command.

please let me know if it works.



I tried the 1K pull-down as recommended. Looks like that did the trick! I tried a couple of programs to verify. So now, upon power up, load the program, give the command and off he goes!



I've been there too, still good controllers.


Ah - that makes sense. The pin on the HB25 is a floating input and they didn't put a pulldown resistor on it from original design. That's a flaw which they documented as a feature:) Sneaky devils.

Lesson to all of you - this is why a digital port that is selected as an INPUT must include a pull-up or pull-down resistor if connected to a switch or something that is also floating.

This is why if you set a digital port to input on the ez-b and monitor it in ARC, you can watch it flick states based on running your finger near it. Specifically in a very dry environment you can watch it change state all by itself from static.


Can you explain the resistor installation to a novice. I understand ground but do not understand how exactly how to install it on the HB25 pin. Are you saying to add a resistor in series with the ground wire that goes to the HB25 ground pin?

I would like to put this problem to bed.



I don't have a direct answer to the question. However, my recommendation is to use an easier and supported HBridge, such as the 2.5 Amp Motor Controller - which also supports speed control.

Messing around with difficult 3rd party hardware that wasn't designed correctly is going to be a struggle.



For the HB25, what works is a 1K pull down resistor, between the signal line and the gnd pin. It was was recommended to me, so I tried it an it works perfect for me. Also make sure to add a little delay when you fist initialize the them upon power up as well.


Note to DJ. The HB25 is 25amps, not 2.5, so an equivalent would be something like a Sabertooth 2x25. Twice the price, but also drives 2 motors.



I needed thi more powerful motor control for the drive system I chose. It at the time was the only reasonable choice I had.

If I add the resister do I need to do the initiation code I have been using to connect to the motors?



The HB25 is a very good piece of hardware, good motor chipset, fuse and fan and can handle a lot of amps.

There is no erratic behavior and is very important to read the available documentation to understand the behavior.

The HB25 converts a H-Bridge to a continuous servo, HB25 can work single or dual mode daisy chain sharing the servo signal line between two HB25 controllers.

The first initial seconds (5 to 50ms) are very important/critical, the HB25's microcontroller (PIC) checks the signal line to decide the mode (single or dual).

As you can see between power on the EZB, ARC connection to the EZB and run a script the 5 to 50ms are already gone.

To answer to your question, the initialization script is useless to setup the mode, but works to setup the HB25 initial position (stopped).

You can have a proper initialization script in C or Spin (Parallax Propeller) if you upload the code to the micro-controller and the micro-controller will run the code immediately when you connect the power.

The documentation mentions the initial 5 ms to 50ms (different firmware versions) the signal must be low.

That is the reason for the pull down resistor.

Some people complain about the erratic HB25 behavior.

The main reason is: without a pull down the digital port will be in input mode, the logic value is unknown and can float, if floats 2 or 3 cycles during the initial seconds, HB25 will assume the dual mode configuration (daisy chain).

While in dual mode the HB25 does not answer to the standard servo PPM signal instead waits for a special second sequential pulse.

To summarize you should add the pull down 1K resistor, otherwise you are playing roulette.


Thanks everyone. I have wired a 1k resistor between GND and Signal. I will solder this when I am sure it is correctly wired. Please look at picture below and tell me if this looks right.

User-inserted image


Thanks Dave

So I can solder it now? This will solve my issue with the parrolax motor controller?



Seems good, it's a 1K resistor ? Good to go.