Setting Up L298n H-Bridge This tutorial assumes only a single combined speed control for both motors. For independent speed of each motor the tutorial will be slightly different - See post #2 of this topic.
Assuming ports D15, D16, D17, D18 & D19 D15 Signal > Left Trigger A (In 1) D16 Signal > Left Trigger B (In 2) D17 Signal > Right Trigger A (In 3) D18 Signal > Right Trigger B (In 4)
D19 VCC > H-Bridge 5V D19 Ground > H-Bridge Ground D19 Signal > H-Bridge ENA & ENB
D19 Signal will need to be connected to 2 pins on the H-Bridge and the jumpers on the H-Bridge removed. I made a Y cable out of a couple of jumper cables.
Connect the positive of the battery to the H-Bridge VCC
Connect motor 1 to the Out 1 and Out 2 terminals Connect motor 2 to the Out 3 and Out 4 terminals
In ARC add a 4 Wire H-Bridge control and a PWM control.
Set up the H-Bridge control as the above D15 to D18 on LTA, LTB, RTA and RTB Set up the PWM control to D19
To use, set the PWM to 100% (or a lower value if you want it slower) - I have mine set to 100% in an init script that is run on successful connection of the EZ-B. Use the H-Bridge control and the motors should move.
Here is a project with both controls added, you can save it and merge it with your project (or open it and test the H-Bridge). It's also accessible in ARC by opening from the cloud.
Note: The PWM wire is optional. If you wanted to save a digital port and lose speed control you could connect any of D15 to D18's VCC to the H-Bridge 5V and any of the D15 to D18's Ground to the H-Bridge Ground. Keep the jumpers on between ENA and 5v and ENB and 5v.
If your H-Bridge looks different, they are pretty much all much of a muchness. A H-Bridge generally has 4 inputs to control the 2 motors plus 1 or 2 inputs for speed control. The same principle as above can be applied.
Signal wires from Digital ports to each of the inputs to control the motors. Generally labeled In1 to In4 or AIn1, AIn2, BIn1 and BIn2. Signal wires (this can be combined for 1 port if you don't want individual speed control from side to side) for the PWM or speed. Generally labelled as ENa and ENb. +5V or VIn is generally the 5V from the EZ-B Vm is generally the supply to the motors taken from the battery. Ground is always Ground, taken from any ground since it's a common ground.
A simple truth table for how the H-Bridge works.
In4 | In3 | In2 | In1 | Function
-----+-----+-----+-----+--------------
0 | 0 | 0 | 0 | Stop/Free Wheel
0 | 0 | 0 | 1 | Motor 1 Forward
0 | 0 | 1 | 0 | Motor 1 Reverse
0 | 0 | 1 | 1 | Motor 1 Brake
0 | 1 | 0 | 0 | Motor 2 Forward
1 | 0 | 0 | 0 | Motor 2 Reverse
1 | 1 | 0 | 0 | Motor 2 Brake
So to use that on the robot, setting digital to on (1) and off (0) as follows
In4 | In3 | In2 | In1 | Function
-----+-----+-----+-----+--------------
0 | 1 | 0 | 1 | Robot Forward
1 | 0 | 1 | 0 | Robot Reverse
1 | 0 | 0 | 1 | Robot Turn Left (or right depending on motor orientation)
0 | 1 | 1 | 0 | Robot Turn Right (or left depending on motor orientation)
0 | 0 | 0 | 0 | Robot Stop
EZ-B V4 Usage
With the EZ-B V4 there is a slight difference when connecting the L298n H-Bridge up in that the Vcc pins of the V4 have the same voltage as VIn i.e. if you supply the EZ-B V4 with a 7.4v 2s LiPo battery you will get 7.4v on the Vcc pins of the EZ-B.
The L298n H-Bridge, as previously explained has a terminal for +5V which, on the EZ-B V3 was fine to supply from one of the digital ports Vcc however with the V4 this is not the case.
Rather than supply the L298n with +5V we need to not connect this terminal and press the switch on the H-Bridge so that it uses it's on board regulators to provide its own 5V from the Vcc supplied.
All other connections remain as previously explained.
Pushing this button will enable the on board regulators. When enabled it may indicate so with a red LED.
On the EZ-B side, the connections would be pretty much as previously with the exception of the Vcc. On upgrading my test bot I simply disconnected the Vcc on the H-Bridge side so that my connections wouldn't require changing.
On the H-Bridge side, connections remained the same as previously however the +5V is disconnected.
That's all there is to it.
Update: 17/06/2014 (or 06/17/2014 if you write your dates wrong...)
Alternative wiring for a simpler method
The connections on the L298n are simply;
Vcc = Motor Supply Positive Gnd = Motor Supply Ground (ensure this is common if using more than one supply) +5V = Not Connected
In1 = Digital Port Signal (i.e. D8) In2 = Digital Port Signal (i.e. D9) In3 = Digital Port Signal (i.e. D10) In4 = Digital Port Signal (i.e. D11) EnA = Digital Port Signal (i.e. D12)* EnB = Digital Port Signal (i.e. D13)*
- EnA & EnB connections optional for speed control, If speed control is not required connect the two jumpers which come with the L298n to link EnA to the +5v pin to it's right and EnB to the +5v pin to it's left. If combined speed control is required (i.e. one speed control for both channels) a Y-cable can be used to connect both EnA and EnB to one Digital Port Signal (i.e. D12).
No ground or Vcc from the EZ-B to the L298n is required if you have a single source for both EZ-B and L298n or if you have a common ground.
You must make sure you press the switch to enable the on board 5V regulator circuit otherwise it will not operate
Some photos (I'll change them once I get chance to edit and tidy them up but no idea when I'll get the chance so here's the unedited ones).
The L298n in it's stock state
The L298n wired power connections
The L298n wired for no speed control
The EZ-B V4 wired for no speed control
The L298n with the jumpers removed
The L298n wired for common speed control (1 PWM adjusts the speed of both channels). White wires is a Y cable, 2 to 1 with the 2 at the L298n end
The EZ-B V4 wired for common speed control (1 PWM adjusts the speed of both channels). White wire is a Y cable, 2 to 1 with the 1 at the EZ-B V4 end
The L298n wired for independent speed control
The EZ-B V4 wired for independent speed control
Sorry / what movement control would I use with the SyRen 50?
EZ Robot only allows one movement control per project. You would have to write scripts to operate more H-bridges.
The SyRen is controlled by Simple Serial commands through EZB's Uart port. Just like the Sabertooth. I haven't tried it but I think you may be able to use the Sabertooth control within ARC with the SyRen. They both are made by DE but the SyRen is the low budget model. EDIT: I think the biggest difference is that the SyRen will only drive one motor and the Sabertooth will drive two.
Are you looking for position and speed control? If so you'll also need one of DE's Kangaroo X2 daughter boards along with the SyRen.
Am I going to have a problem hooking up 1 SyRen and several sabertooth's to one EZ-B? Can I use scripting to provide positional feedback from saber tooth or do I need to have a kangaroo for each? And what about using positional feedback with h-bridges? I really do need to provide DC motor control for seven or eight motors with positional Feedback.
You could also use a bunch of low cost BTS7960B 43A Motor Drivers (from ebay) to drive your 25A requirement but yeah you would still have to write scripts to control each one independently.
The H-bridge Movement Panel is usually used for the lower locomotion end of the robot. Driving the robot around. @castlephelps are you using DC motors for robot appendages or for driving it? Or both?
Positional feedback can be used with H-bridges but you usually don't see both systems tied together. Optical encoders and a encoder wheel can be applied to just about any motor to give it positional feedback. A Large RC servo motor could also be used as an alternate solution.
So, DJ, why only one Movement Panel per project / Are you just assuming everyone builds robots that only roll on the floor? But seriously, it seems that you should be able to support many h-bridges, even across multiple EZ-Bs...
Well, you actually don't even need a movement panel. However one does come in handy for moving the wheels of a robot so you can roll it around the house or yard. I don't use a Movement Panel in my project and I'm moving 7 DC motors in my robot. All motors are moving arms, waist and radar sweep motors. He's not going to be moving around the house so I'm not going to be using a movement panel. The scripts I have move these motors to the positions and speeds I want. The scripts respond to voice recognition or personalty generation or sensor readings. I plan to add a joystick or tablet control soon to control the arms of the robot.
As far as the Kangaroo X2 and either the Sabertooth or SyRen; Yes, you'll need one Kangaroo per Sabertooth or SyRen unit. You can control 2 motors with one Sabertooth and a Kangaroo or one motor with one SyRen and a Kangaroo X2. LIke Jermie mentioned you'll also have to add a feedback device like an encoder or potentiometer. These are so the motor controller and EZB knows where the motor is when needed and how fact it's going.
Wow! That is the information I really have been looking for! Perhaps you would be willing to hate some of you scripting knowledge with me as I go along?
I ordered the SyRen today and it is being delivered tomorrow / I will get the kangaroo ordered tomorrow. My SyRen will be controlling a hydraulic pump for my arm and I have it fitted with a Spectra Symbol linear softPot potentiometer / so I will need some help connecting those pieces together and then writing test scripts.
Thank you very much, Castle
Dave,
I am planning to do everything with voice control so what you have done and what I am planning are very similar. My first task is going to be the control of an arm that extends 6 feet using a rack and pinion, a dc motor and a 10 turn pot for feed back. I have attached a video of the initial testing retracting with a 70 lb lead weight on it.
So when I get the Sabertooth tomorrrow how do I connect it to the EZ-B and how do I address it in ARC?
Thanks again, Castle