castlephelps
USA
Asked
— Edited
Resolved by DJ Sures!
The robot that I am building is going to have DC motors for XY and Z movement as well as elbow bending, wrist turning, etc. I will probably wind up with eight DC motors when I'm done.
Now that I've learned how to drive a DC motor with an H-bridge which works for two motors how do I drive the remaining six motors ? One of the motors will require the use of a SyRen 50 controller.
My plan is to use 10 turn potentiometers on the motors for position feedback.
As I posted to you in another thread: You don't even more than one movement panel. One does come in handy if you're 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. Have a look at my project to see how I've done it. It's a bit unorganized but you should get the idea:
B9RobotControl(1).ezb
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.
Another method and much cheaper is to just use a regular H-Bridges (must be sized to your amp load like the Sabertooth would have to be). Attach a pot to the pivot joint and then to an ADC port of the EZB. When the pot turns with the joint the readings at the ADC port will change proportionately. You can use these changing readings in scripts using a loop and the GetADC command to see where your motor is. When the reading gets to a point you want have the script turn off the h-bridge.
An added warning about the Kangaroo; It's a bear set up sometimes. If you don't have your setup wired up exactly right you won't be able to get a successful tune. Also the self tune process sucks for heavy asymmetrical loads (like a load out on the end of a lever like a robot arm). Power can not be starved to any of the components and your feedback devices must be wired correctly. Even after I did get a successful tune on my robot arm elbow joint I had to spend a day manually retuning the setting s to get them the way I wanted. However after all that it's a rock solid controller and a simple one to command through the Uart ports on the EZB. One Uart port will command one Kangaroo X2 (that means you can control 2 motors through one EZB Uart port if you are using a Kangaroo X2 and a Sabertooth X2). So using that formula; One ezb can controll 6 dc motors through it's 3 uart ports if you use the Sabertooth/Kangaroo combo boards.
Hi Dave! Very good information! So if I have more than 6 motors I will run out of UART ports / should I get a second EZ-B?
Without knowing your skill set, it is hard to provide options to you. I run 4 sabertooth devices on my robot, each controlling 2 motors. This is done differently than most because I have a programmer background and have handled this outside of the EZ-B.
Are you familiar with Arduino or PIC programming? Are the motors going to work in conjunction with each other? For example, do you want the arms to extend prior to moving around?
The short answer is that there are a lot of ways to complete a task and without knowing your design or skill set, it is hard to provide the best solution to you. If you want to just use EZ-B's in your project, adding a second EZ-B is definitely an option to you. If you have the ability to program PIC's or Arduino's, there are a lot of different options available to you.
Let us know so we can recommend the best path for your particular situation.
Thanks David Cochran
You can connect Sabertooth to the EZ-B as Servos. Which simply uses one EZ-B port per motor.
Can you do the same with kangaroos? Do you know which mode the sabortooth needs to be set to for connecting to the digital ports? I didn't realize this was an option. I may use that.
Sabertooth uses simple serial on a digital port. It is only one way communications though.
Yea, hmm, I guess if you wanted to tie up the analog ports on the V4 for pots or include Kangaroos on all of these it would work. The issue is knowing where you are with the motor more than anything I guess. I am trying to leave all possible ports open for the user, so I think I will keep heading down the path that I am. Right now I am only using 1 I2C port by default with my project to leave the platform as expandable as possible. This is being used for the MPU9150 so I don't feel bad about taking one of them to leave everything else open I guess.
I will have to keep this in mind for other projects though.
I2C can be daisychained anyway so using the port isn't a big loss, you leave them with 254 more I2C devices to use (I believe, memory is a little hazy but 255 I2C slaves on one master is what I believe is correct).
Sabertooth on digital ports is not ideal in all situations but it's a simple method of adding motor control to two motors from a single digital port.
If you have Arduino/PIC experience you're better off taking the motor control away from the EZ-B and using one digital port, I2C address or URT port to communicate with the motor controller. I use a similar method for servos in some instances, with the EZ-B telling the control board for the servos (Arduino usually) what needs to be done, the Arduino then monitors the servos and monitors the environment while telling the servos what to do.
@Rich, its good to see you post first of all.
You and I are doing very similar things. Also, the I2C daisy chain and just demonstrating the ability to add sensors to my robot very easily are the main reasons that I did things the way that I did.
Anyway, great to see you on. I hope you are doing well.
I read on one place on DE's web site that the Kangaroo X2 can be daisy chained. I looked over all the documentation and couldn't find any info on how to do this or what the commands would look like to move the motors. I stopped short of contacting DE's tech support to ask if it's really possible and how to do it.
I ended up using a second EZB (and a third do to logistics issues in the robot) to take advantage of the extra Uart, digital and analog ports. I had used them all up anyway on the first EZB and needed more. Seemed like the simplest solution for me as I didn't want to mess around with an Arduino or learning scripting for it. I also didn't want to use a servo expander board. I figured If I needed more hardware why not just get another EZB. I'm actually running 3 EZB's and am seeing no slowdown or collusion. ARC and the 3 EZB's seem to he working just fine together. Granted I do have 4 Sabertooth/Kangaroo combo sets in my robot that do all the heavy lifting as far as motor control so maybe that's why everything is running so smoothly.
I think it is just what someone is comfortable with personally. I think that there are multiple ways to skin a cat and all, and each has its advantages and disadvantages. For me, the Arduino route is better simply because I change out the cost of 4 Sabertooth devices and another EZ-B for the cost of a couple Arduino Mini's and some time. Time can be valuable for sure.
I like to have the control of knowing what is happening and why, and the ability to go in and fix it if needed personally, but I also understand that isn't for everyone. It's what I like about EZ-Robot. You can get as simple or as complex in many areas as you want to get. The best solution to a problem just all depends on what you are comfortable with.
This is also the reason that you see people drop off of the forum IMHO. Once you start down a path that you like that doesn't fall into ARC directly, you find that the topics don't fit you anymore. This is why I had though a while back that it might be better to have multiple areas of the forum that matched more of the type of builds that you were working on. I see the benefit in not doing that also.
Anyway, there are multiple options to do this based on what you want to learn. Robotics is about learning for sure, and which area you want to learn next often times determines the path that you want to take.
OK, I'm now at a computer where I can type a response to your question - Without knowing your skill set, it is hard to provide options to you? Formal education - I have an undergraduate in physics/math/chemistry. Doctoral work in the management of engineering and technology. Work experience ranges from navy helicopter pilot, to industrial signal conditioning application engineer, university professor in the college of information systems and technology, software engineering project management, software developing project management, network and communication engineering, wireless networking ISP. Personal experience includes welding - all metals/all processes, machining - lathe and vertical mill, hydraulics, electrical, electronics, woodworking, solar design and installation, wind turbine installation, fully automated research grade astronomical observatory and the list goes on - I typically get tagged as a renaissance man - I don't know - I just make things happen. When I need something I study what it will take to make it happen, obtain the raw materials, finish them to what I need and make it happen. Programming experience - nothing in robotics. I have built database driven websites and have been using computers since I built my first one in 1978. I took FORTRAN in college but found that typically I could find programs easier than writing them. Object oriented programming is not all that difficult and the languages change as fast as you change underwear. So, it is a matter of learning the appropriate language and then adapting to achieve my goal.
So where does that take us? I have been developing an idea for a robot helper for 25 years and have finally reached the point where I think the technology is there to finally pull it all together when I stumbled on the EZ-Robot SDK.
What I want is a ceiling mounted robotic arm that can travel around my 40 by 40 foot barn on a gantry at ceiling height (because I don't want to have to deal with stuff on the floor) and be able to bring me tools and pick up and put tools away for me. I want it to be voice controlled and I want it to know where the tools are kept so it can either get them or put them away and also be able to search the floor for tools, pick them up and put them away at the end of the day.
At present I am fabricating all the parts of the gantry and rotating arm and playing with the EZ-B learning how to control motors. Gear motors are attractive as they will move to a position and lock in place. Obviously, I will need to have feedback from the motors because getting and taking tools is all about position. As I have stated earlier, I figure I am going to need probably 8 motors with feed back to be able to operate the gantry in N,E,S,W directions, rotate the arm, depress the arm, extend the arm, rotate the elbow, depress the elbow, rotate the wrist and operate the gripper with force feedback. You have probably already seen the initial test of the arm extension video with a motor driven rack and pinion.
So, to do this I need controlled power. For the arm depression I am using hydraulics, most everything else is geared DC motors. I have installed a linear SoftPot on the hyd ram for feedback and it works good. The hyd pump draws 28 amps when loaded hence the SyRen50.
So now, I need to figure out how to implement the control of all of this. Fabrication of the gantry and arm are easy. So, the EZ-B incorporates voice control, camera, obstacle avoidance and both digital and analog control. Now I have to learn what else I need to enable this dream. The sabertooth and kangaroo combination looks like a perfect fit. What I need to learn is how to electrically connect them to the EZ-B and what objects or script I need to write (I should mention that I hate to reinvent the wheel - if someone has already written code that is close to what I need, I'm happy to learn how to adapt it. The biggest problem so far is figuring out if the EZ-B will do what I want. Figuring it out reading the forum is difficult because most everyone is building small stuff that runs around the room. So until my kangaroo arrives (who knows how long the shipping delay will be?) I can only study and learn. Probably right now, a good thing to study is how to interface a DC motor with a pot feedback using and H-bridge and an analog input for the pot control. Then learn how to voice control the motor to move a certain amount and stop.
What other information do you need from me to be able to advise me the direction to take?
I believe dave's question was regarding electronics and robotics - however, everyone loves an introduction! The features that you're requesting are the most simplistic functionality of ez-robot.
What I would recommend is using a sabertooth kangaroo, or something equally as powerful as an hbridge for each motor. Connect them, as previously stated, to the EZ-B as servo ports. Each motor would require a source of measurement for the kangaroo (not sure if kangaroo uses potentiometer or how it determines position). The EZ-B merely sends positions.
As for positions, use the Auto Positioner control.
For speech recognition, add the speech recognition control.
For vision capabilities, use the camera device control.
Information about each of these controls can be found in the learn section of this website, under the ARC manual page.
Programming the robot for your requirements shouldn't take longer than a few hours.
I agree with DJ here. What you want to do is pretty simple and the V4 is able to handle this without any issue. The Kangaroo will handle the position location, ramping, stop switchs and pot readings. The EZ-B just needs to say, move to this position and let the kangaroo do what it does.
You may have to download the DE software to setup your kangaroos depending on if you can move the arm without messing up any of the motors. If the motors can be removed from power, and the pots still report their locations, you should be able to use the auto tune feature on the Kangaroo.
The other thing that you will have to consider is what to use for a microphone in this large of a room. I would think that a lapel mic that is bluetooth would work.
Hi! Thank you to the many people who contributed to the final answer and that is that I am going to be able to do this and that EZ-Robot with sabertooth/kangaroo combinations and maybe an H-bridge or two.
I apologize for the long introduction but I want to make sure you understood that I should be up for almost any challenge. The lapel blue tooth mike is a great idea.
Thanks to Jeremie, Rich, Dave, CochranRobotics and DJ Sures!
How to I list all of you on the This was resolved by: dropdown?
DJ Gave the best answer IMO
Long introduction is always good Everyone is pretty awesome on here! Some people to keep an eye on that you may wish to ping about how they accomplished stuff are
Bob Houston: https://synthiam.com/User/bhouston/Projects
Cochran Robotics (dave): https://synthiam.com/User/CochranRobotics.com/Projects
Dave Schulpius (b9 dave): https://synthiam.com/User/dave-schulpius/Projects
and of course Rich (inmoov bartender): https://synthiam.com/User/richard-r/Projects
Look at each of their projects to see where they're at. As you can see, they are pretty busy at their robots, but they've been known to chime in with assistance. If you're wondering how they accomplished some things, look at their posts because code is often published. Also look at their EZ-Cloud App projects. Most people have their projects available to download.
All other robots that are ez-robot favorites are here: https://synthiam.com/Community/Robots/
There's obviously many others, such as you've seen in your threads - but those 4 have been responsible for most of the features that you're interested in. They are always challenging me
@DJ, if you're still listening, You mentioned using the Auto Positioner control for positioning. I was under the impression that this control can only be used with servos and not a DC motor controlled by Sabertooth with a Kangaroo attached. Was I misunderstanding (which is very possible). My robot arm has a combination of servos and a DC windshield wiper motor controlled by a Sabertooth/Kangaroo. All commanded from ARC. I'd love to use the Auto Positioner control on this hot mess of mine but have avoided it because I thought the Sabertooth/Roo wasn't supported in the AP. Tell me I'm wrong please. eek
I'm still listening and very curious to know the answer! DE says they should ship my Roos today so next week will be power up time!
This is the URL to the kangaroo motion controller product: https://www.dimensionengineering.com/products/kangaroo
The description reads
[feature] Kangaroo x2 adds self-tuning feedback motion control to your Sabertooth or SyRen motor driver. It can be used with quadrature encoders or potentiometers to provide position or speed control. It supports one or two feedback channels.
Feedback control has always been highly desirable for mechanical systems. Being able to tell your device to move an exact amount, at a specific speed or to a certain position, and have it reliably and repeatably do so, regardless of the load or disturbances, has obvious benefits. However, PID and other controllers have to be carefully tuned to get acceptable results. Feedback tuning is difficult, time consuming and requires advanced math and physics knowledge.
Kangaroo x2 is the first self-tuning controller in its class. Instead of requiring you to measure, model and calculate the system, the controller itself will figure everything out after a few switch settings and button presses. In the time it takes to get a tasty snack, you can come back to a perfectly tuned system ready to accept your commands.
Instead of requiring you to use a microcontroller to do closed loop control, Kangaroo x2 works from analog and radio control sources as well as microcontrollers and computers. You can, for example, use it to build that two horsepower R/C servo you’ve always needed as the final piece of your doomsday device. Just remember who helped when the vaporizing starts.
During operation, you can command speeds, positions or combined commands like move to 37 inches at a speed of 4 inches per second. You can also have the Kangaroo x2 report back speeds and positions while it is running. A mixed mode allows for unstoppable mobile robots with differential drive or tank style steering.
If you need to get your product under control, Kangaroo x2 is the best way to do it. [/feature]
To summarize, connect the servo features of the kangaroo, can be found in the specifications section of that website...
[feature] Specifications: 2 channel self-tuning PID controller Position or speed control Quadrature encoder feedback or potentiometer feedback Support for limit switches and mechanical stops Analog, R/C and serial inputs [/feature]
What is relevant to this conversation is the R/C input and potentiometer. What means is, connecting a motor to a joint with a potientiometer, configuring the Kangaroo to work in R/C mode, will turn the whole mechanism into one giant servo.
Use the Auto Position control to control it.
Additional information regarding how to configure Kangaroo as a R/C mode servo controller would most likely be in their documentation - otherwise contact dimension engineering for instructions. Voila
@DJ... You need to give ez robot more credit... Sheesh LOL... You don't need a fancy kangaroo... I was able to create "that giant servo" with just a geared DC motor, a sabertooth and a 10k pot... With some nifty scripting I was able to control a dc motor like a servo... The pot spit out readings from 1 to 225 or so... With some simple math, I just converted it into a servo position from 1 to 180... Then what I did through scripting was to slow the motor proportionally the closer it got to the target servo position... If it over shot I reversed the motor... It was a little crude but worked actually pretty good...
@DJ,
Without the Roo, the Sabertooth has an R/C mode that should make it behave like a big continuous rotation servo, but no one has ever gotten R/C mode to work with an EZ-B (I haven't tried yet, my Sabertooth is still in a box, but others have).
Are you sure the R/C mode will work on a Kangaroo?
Alan
All I can do is quote their website and product information. If it doesn't work, contact Dimension Engineering for product support?
Have you ever connected an oscilloscope to an ez-b? You won't find a more stable servo controller anywhere. I am pretty sure we're the only controller that actually follows the servo specifications. Others slew the downtime as a constant, no matter the uptime of the pwm. The pwm specifications do allow that for servos, but it's frowned upon. Another reason why Arduino can't control servos without twitching.
So, if ez-b can't use a kangaroo in R/C mode, than no one can. Contact dimension engineering for product support is all i can say.
Thanks to everyone for their input on this topic. I hope the discussion won't end here as there is still more to be discovered. I am particularily interested in trying DJ's proposal to run a Sabertooth/Kangaroo combination as a servo! My parts won't be here for few days so if anyone has them laying around and can make this work I would like to hear about it!
Castle
Woo-hoo i win this round!
@Castle, if you do run into challenges using it in r/c mode, consult the manual and if that doesn't help, contact dimension engineering - i hear they have a great support line.
@DJ, Thanks for the help. I have read in some strange places around the forum cautioning about using R/C mode but I can't remember where. Is there something different about R/C servos? Can a large high power R/C servo be used by EZ-B? Is there anything different that I need to know to use one or different controls or settings in ARC or are all servos basically the same?
You can find out how a servo works here: https://synthiam.com/Tutorials/Lesson/48
There is a LEARN section on the top link of the website. You will choose your ez-robot product and learn information about it. That's a great place to start.
As for how a servo works regarding the "power" is irrelevant. This is because a servo is nothing more than a motor with a measurement that tells what position it is in. And a circuit runs to keep the motor in that position. The measurement is usually taken with a potentiometer, as i have mentioned.
The signal that tells the motor to move is not powered by the ez-b. The ez-b is only transmitting a 3.3v signal. This signal tells the kangaroo or servo what position to hold. This signal does not power the motor. The motor, in your case, will get it's power from the battery directly.
There is a datasheet regarding the EZ-B, like all electronics. And in that datasheet defines the max current it will provide - obviously not enough to power a motor. However, signalling a controller to move a motor is a different story - which is what the purpose of an HBridge is.
There is absolutely no reason why any servo ever made will not work with an EZ-B, unless it is engineered incorrectly or not following servo specs. Dimension Engineering is a great reputable company and i am certain their product works as described. Any situations from past user experiences would be due to mis-understanding the documentation. If that is the case, contact Dimension Engineering customer support.
Again, contact dimension engineering customer support for questions about using their product. EZ-Robot has absolutely no additional detail about Dimension Engineering products outside of what is presented in datasheets and product sheets.
@DJ, Wonderful news! Thank you for the clarification on servos - I need to source a high power servo, probably from an R/C off road car for part of my robot so it is good to know that I don't have to be looking for some particular kind of servo!
I hate to be a wet blanket here but.. I put a lot of time and effort trying to get the EZB to work with the Roo in RC mode. I couldn't get my motor to respond as like a servo or even move in a reliable manner or even at all most of the time. It could very well it was as DJ says and I was misunderstanding the documentation. The thing is there is very little documentation on this function. It really didn't seem to hard though I set the dip switches on the Roo and attached it to a digital port on the EZB. I then sent it regular servo commands from ARC. For example:
Servo(D1, 98)
I would like to give it a try again now that I have more experience with both ARC and the Kangaroo. I was pretty green back then. One thing I'd like to try to get it to work is to set the ServoSpeed() at different times t see if it would make any difference. To this day I still have problems getting regular servos to move because I've set the servospeed() at the wrong time.
One other thing that should be brought up. If you are able to get the Sabertooth/Kangaroo to operate in RC mode and attach it to a digital port you'll be setting it up like a regular servo. You will not be able to get feedback from the Roo. It will operate like a regular blind servo. If set up to use a microcontroller you will be sending simple serial commands through the Uart ports. This will allow you to receive speed and position info back from the Roo.
Thanks Dave / lots of insight for me to capitalize on / my problem is that I think I know what I want my robot to do / it is about figuring out the most elegant way to do it - and there are a lot of gaps in my knowledge base that I don't know what I don't know / For example / if I have he servo move to 98 and the Roo does it / why do I care about the value being reported back to the controller? Because the next position I want the robot to move to is just another set of coordinates that when fed to the Roo would be executed... So I have a lot to learn and discover ...Update - my Roos should arrive on Friday so I may be playing earlier than I thought / then I will probably have lots more questions
you got it castle - ARC doesn't care about the position from the servo because it tells the servo what to do.
As for dave's experience and others... this is why i have repetitively mentioned "contact dimension engineering customer support" - because no one has done that. We seem to be acting for their support line I know i have most of the answers but for this one, I can only quote the documentation and product information. They made the product and will have the answers you seek
Yes, I have had extensive contact with DE's tech support. The level of support has been anywhere from quick and less than helpful to throughly covering the problem I would be having at the time. As far as the issue of the RC mode not working correctly with EZ Robot, their answer to me was the same as DJ's. They said they should work fine with each other and to look to EZ Robot for the answer. They did offer an odd explanation that I can't really remember. Somthing about the signals being different or something like that I didn't really understand. I felt like I was left standing between two giants and that was when I gave up that approach and found a different way to make things work.
I know for a fact that others working with both ez robot and DE has contacted and worked wit DE tech support. Toymaker was working with them to resolve issues with encoders and his ez robot powered robot. He also found that experience flusterating.
I can understand why DJ thinks why no one has gone to DE for customer support (on this RC issue anyway). No one ever came back to EZ Robot telling of no luck with support after being returned here from DE. Sorry DJ.
Maybe there is no problem with the two working with each other in RC mode. Maybe us as a consumer just gave up before we found out the way to properly do it.
As far as I know the two platforms work smoothly with each other in every other way. They may also in RC mode. We just haven't found the right method to do it yet.
As far as feedback, only your needs and how you set up yoir motors will dictate if you really need it. In my robot I hardly ever need to ask for positions but I do have one or two critical places in a script where I need to confirm a motor has reached a certain place before I start up a different motor.
Dave,
I am sorry to hear this. Having been a tech support manager I know how time consuming it is tontrybto help s customer with another compan's product and leave them hanging... I am going to try it when my Roo gets here since I don't know how to do any of this stuff yet. My hardware is just about complete and so I will be starting on getting things moving. Maybe I will have better luck or die in frustration... I am sure I will need a lot of handholding. I have gone down this path because I have been told that what I want to do can be easily be fone this way / I don't want to find out that I still need to buy some unobtanium...
Here's a couple things I would try if I had the time right now. This stuff may or may not work but is something I don’t think I tried. It's been a long time.; Attach the roo to the proper ezb digital port in the right manner according to the DE documents and set the dip switches properly on both the Sabertooth and the roo. DO NOT attach the roo's 5v port to the ezb! Not needed and you will burn something out as pins on each board is a voltage output pin. Then try sending servo command to the Sabertooth / Kangaroo combination. Along with the movement position command also send a servoSpeed command. I can't write a sample script now but the ez script instructions say you need to send that command either before or after the servo position command depending on if it's the first time you have used the servo or not during that session.
Good luck.
Very cool! Thanks Dave! My Roo is still in transit but I'm anxious to try it!
Hi guys! My Roo arrived and after extensively studying the DE documentation for both the Sabertooth 2x12 and the Kangaroo x2 I decided on the following dip switch settings:
I am attempting to just operate one 12VDC motor with a 10 Turn 20K potentiometer for positioning on S1. S2 is not used on either the Sabertooth or Kangaroo for this work.
Sabertooth - I chose to set up in Mode 2 - R/C Input 1 - OFF - this is for R/C mode 2 - ON (UP) - this is also for R/C mode 3 - ON (UP) - this is for when you are using Lithium Ion batteries - I'm using lead acid. 4 - OFF - this is for independent mode - i'm not steering a robot and need differential drive 5 - ON(UP) - for linear response 6 - ON(UP) - for a 0-5v input signal range - since I am feeding 5v from the Kangaroo to the pot this seemed to be the right setting.
Kangaroo 1 - ON - for digital input - I presumed this is the signal from the EZ-Bv4 - more on that later 2 - OFF - for Analog feedback - a 0-5v signal on input A 3 - NO - for Position control - the motor is controlled by the input signal 4 - ON - for Independent mode S1 controls motor 1
On the EZ-Bv4 I just have two wires - a ground wire from the black pin on D0 connected to the 0V screw on the Kangaroo, and a signal wire from the white pin on D0 which is connected to the S1 screw on the Kangaroo.
On ARC I have nothing configured but I have the computer connected to the EZ-Bv4 - I have still yet to figure out what controls to use or what script to write but for the moment I am just trying to get the Kangaroo to do a complete auto tune using the Teach Tune Mode - meaning that I will need to turn the pot from one end to the other and back to center when running auto tune.
On the potentiometer I have the 5V pin on Kangaroo 1 connected to one end of the pot, the B pin on Kangaroo 1 connected to the opposite end of the pot and the A pin on Kangaroo 1 connected to the pot's wiper.
I have attached a photo of all of this for your reference. This hookup is using the best information I have gleaned from this forum and the DE documentation.
So what happens? I power up everything and nothing happens except that the STATUS LED on the Sabertooth is on steady. I then disconnect the potentiometer drive from the motor so that I can turn it from one end to the other during the Teach Tune time. I then press and hold the autotune button on the Kangaroo until the yellow LED lights up and then I release it and it starts a slow one blink repeating blinking. This indicates that I am in Teach Tune mode. I then press the autotune button again and the yellow LED dims. I then turn the pot by hand all the way clockwise (5 turns) and then counter clockwise (10 turns) - when half way back the dim LED becomes bright but I continue to turn, it goes dim again and then I hit the opposite stop, I then turn the pot 5 turns clockwise to roughly center and stop. I then attach the pot to the driven shaft on the motor and then press the autotune button again. The yellow LED goes bright, blinks once and then starts blinking very fast. I am expecting this to signal that autotune will starting turning the motor and running through a sequence between the two ends of the Teach Tune range. But instead, as I recall, the motor turns about 1/4 turn very slowly and then stops and the yellow LED starts a slow 1 flash blinking. The documentation says this means I have a wiring error but I can't find one. I tried changing all kinds of things but nothing worked. Well, once the motor started turning in one direction and never stopped or reversed - don't remember what settings did this but it wasn't what I was expecting.
So, I will be calling DE tech support first thing tomorrow morning to find out what to do to get the autotune to completed. Once I get an autotune completed I will start working on how to send commands to the Sabertooth and will be looking for recommendations from all of you as to how to control.
p.s. the extra switch is to power cycle the Sabertooth.
Castle
OK, First, Nicely done so far. I love your enthusiasm. This is some hard stuff to grasp sometimes.
Now: If you look on page 20 of the Kangaroo manual you'll see a picture of the proper dip switch settings for the Sabertooth to have set for all modes if there is a Kangaroo attached. This is Dip 1 & 2 off and the 3,4,5 and 6 in the on position. Till you have these set like this nothing will work properly.
Your power input to the Sabertooth and output to the motor look good.
The Dip setting on the Roo look good.
Your connections on the EZB look good but it looks like you have the signal wire attached to the wrong input on the Roo. It should be attached to S2 (Receive RX).
You won't need to have the EZB up and running to get an auto Tune to complete properly but the Dips on the Sabertooth do need to be set properly. However get everything set and wired properly before you go on. You won't get a successful tune until your motor is connected properly and the feedback is attached properly so double check your connections and wiring. As far as wiring up the pot; usually the center of the pot's 3 lugs would be the signal (or the A pin on the Roo's feedback header). One side of the pot's 3 lugs is positive (or the 5v pin on the Roo's feedback header). The other side of the pot's 3 lugs is negative (or the B pin on the Roo's feedback header).
OK, Now after you triple check all your connections and correct your wiring you can try another autotune. Do not disconnect the pot or your auto tune will fail. If you can't move the motor by hand in teach mode you will have to add limit switches or physical stops and tune it in either one of those modes. One other way would be to attach the Roo to your laptop and after downloading DE's DeScribe software, tuning it with the tuning tool you'll find in there. I advise downloading this software anyway and learning it as there are many settings you can make with it that will make your motors work smoother and respond better.
Oh, and make sure your pot is in as close to center as possible.
Let me know how it turns out. If the tune fails let me know how many times the LED on the Roo blinks. It will blink a error message and then pause and re blink over and over again. Look on page 15 of the Roo manual for a list of the different error codes. If you get a failed tune you'll probably either get either one or three blinks of the LED.
I've tried to call DE's tech support and they never answer. You may have a different experience. They will answer the email "Help Desk" request but usually it takes several days to a week to get a response. When I did get a responce it was usually a short few sentences with a suggestion of something to try. I've been frustrated more than once with them. However there have been a few times they were very helpful. Again, you may have a different experience.
I think all you really need to do is get your wiring attached properly as I stated above and you'll get this moving.
EDIT: I just had another look at your setup. I see you're using a plug in wall transformer for your power source. These won't deliver enough amps to supply a DC motor and you may experience a power drain that the Roo will see. If that's the case you will not get a successful tune as it will see your motor as not attached properly. I had this issue and until I used a properly sized power supply and wire that was sized big enough to handle the motor's amp draw I had failed tunes. Make sure you either get a battery or switching power supply that is rated to handle the "TOP" amps that your motor will draw or all bets are off.
Good luck and have fun.
Good Morning Dave,
I got it to auto tune! I missed the dip switch settings on page 20,..
The wall wart does have enough power but it is just temporary - I have a glass mat battery for the system...
Since I am running independent where S1 controls motor 1 and S2 controls motor 2 I think the EZ-B input should still be on green screw S1 on the Kangaroo...
So now that I have it tuned / how do I send a command to it from EZ-B?
Castle
Hmmm / I send Replies to this thread and some of them don't make it...
Anyway- I got it working using a Horizontal servo! thanks to everyone that helped / especially Dave.
Now to move on to voice control!
Castle
Awesome that it worked in R/C mode! That is SO much simpler than serial mode. Just treat it like a servo!
Alan
Yes! I am so excited that I was able to crack the nut on this! I am now certain that I will be able to accomplish my dream! I now have a lot of welding and machining to do but I should have the arm ready for EZ control within a couple weeks! I have decided to name my robot Wiggins... This is a very happy day for me!
Thank you everyone for your patience and support!
My next questions will probably be about building and accessing a database for position storage if anyone has experience with that.
Castle
OK! Way to go Castel! Well done. I think you found the issue I was having trying to run this in RC mode.
I'm sure my problem was the way I had the control input ports of the Roo wired. I had it wired for Serial Input and I then set the Roo dips for RC Mode. I had no wire at S1 (Transmit (TX) ) as when I tried this I had the V3 EZB (because that old controller version could not revise any info back from a device). I then ran a wire from the Digital pin on the EZB (ver 3) to S2 on the Roo to be wired for Receive (RX).
Sounds like your having the Roo set for RC mode (and also independent mode) and then wiring from the digital signal pin to S1 on the Roo (for motor 1) is the proper way to do it to be able to use servo commands through ARC.
I would imagine to be able to use the other channel (motor 2) on the Sabertooth it would be as easy as attaching a second wire to a different digital port on EZB and then to S2. servo commands in ARC would point to the digital ports each channel of the Roo is attached to. I assume this is exactly how to get this setup it function within the Auto Positioner control.
This is great work and actually helps me out more than you can imagine. Up to this point I haven't been able to use the Auto Position control on my robot arm because I had the one elbow DC motor controlled by the Sabertooth/Roo (and that lifts most of the weight) commanded through EZB's Uart ports. Then the four servos that move the rest of the arm are commanded through the digital pins on EZB. The Auto Position control will not work with Serial commands through the Uart ports so I was stuck writing separate position and speed commands for the DC motor and servos I wanted to move. Your work opens up a whole new (and better) way for me to set up arm aminations for my robot arm. Thanks so much!
Castle, another option for the arm joints that are not lifting a ton of weight but are still more than a HD servo can handle is the ServoCity RobotZone Gearbox with your choice of standard sized servo installed in it. They have different gear ratios that will change the amount of torque supplied. However the higher the torque the slower the unit will move. Depending on the servo and gear ratio you use you can get over 3,402 in-oz of torque with these. I use the 7 to 1 ratio with a servo installed rated for 486 oz-in on my arm and it seems fast enough for natural human movement. With this setup it can lift more than 4 lbs on the end of a 2 foot arm without effort. You can mount them several ways depending on what model you choose. I bought the channel mounted type and used the channel as the skeletal support system of my arm. Here's a link:
RobotZone Gearboxes
Hi Dave,
I couldn't have done this without you! I'm glad that I can be some assistance with your wonderful project! My next step is to do the same thing with a quadrature encoder.
I got a response from DE support this morning and they told me that you can only use one type of feedback for both channels on the kangaroo - digital (quad) or analog (pot). They also told me that during two channel autotune that the kangaroo alternates between motors 1 and 2 until the tuning process is complete.
In my application I need to run a gear motor driven pinion gear down a 40 foot long rack and have position. I have been fooling around with gear ratios to get down to within 10 turns for the entire length of the rack (with 48 teeth per foot) but I believe that if I use a quadrature encoder then I don’t have the 10 turn limitation. The issue becomes how to run the pinion all the way down the rack and back when doing the manual turning of the encoder?
I have decided to put a DPDT switch in the gear motor power wires to allow me to switch between 12vdc driving the motors and the sabertooth driving the gearmotor. In this way I can start the Teach Tune autotune sequence with the encoder connected to the gear motor but use 12vdc to manually drive the pinion the entire length of the rack, thence to the other end of the rack and then to the center. When centered, I then switch the DPDT to sabertooth powering the gearmotor and then push the final autotune button press to start the autotune process. I will thereby get very accurate ends of the Teach Tune as the encoder is attached to the gearmotor which drives the entire length no guessing!
The rotary encoder I bought on Amazon for $16 only came with a wiring diagram with Chinese characters for each wire color for the Vcc, G, 0V, A and B connections but using Google Translate I was able to type in the wire colors and get the Chinese character to match up on the diagram ?.
I have attached a photo of the encoder and here is the sequence: Vcc Red 0V Black A Green B White G Shield
The big idea of using 10 turn pots or rotary encoders is that I am not limited to less than a full circle as is the case with a normal pot which has only about 300 degrees of rotary travel.
I’ll keep you posted on my progress with this type of feedback. I should only have to change DIP switch 2 on the Kangaroo from OFF to ON. Do you have any experience with quadrature encoders?
Castle
Dave,
Thanks for the info on the RobotZone Gearbox. Cool idea but no where near the load carrying capability I need...
I'm looking to be able to lift and move at least 70 lbs.
Castle
@Castle - the sabertooth and kangaroo are an amazing combination of electronics. Now that you have it working you should be able to switch from position mode to speed control mode. In speed control mode the motion is unlike the common servos that just move full speed to the set position then abruptly stop. In speed control the motion happens in a controlled fashion. There is also the DEScribe software that allows you to go in and tweak the motion parameters to really dial it in. There are YouTube videos on the different modes that dimension has posted. Good luck.
Castle, Yes, I prefer using an encoder with the Kangaroo. I've used only one encoder though and it has very well for me. It's a high resolution encoder made by Avago Technologies. You can get it from Mouser in several mounting and shaft size types that easily attach to just about any surface or shaft sizes of your choice. Here's the one I choose: 630-HEDS-5500-A06. Mouser order page for encoder
Here's a link to a PDF with all the info needed to make a choice for the encoder that is right for the project being worked on: docs.avagotech.com/docs/AV02-1046EN
Dave,
The encoder details mentions 500 PPR is that equivalent to 125 CPR ?
are 125 CPR enough for speed control (PID) low speeds ?
Is there a minimum CPR when working with kangaroo ?
@ptp, You're asking the wrong person for these math tech questions. I only know real life results. LOL.
All I know it that the Roo has performed nicely with the low quality pots I've used with it and this encoder. I have this encoder installed at my hip joint motor that moves very slowly and for a very short distance. I can set speeds using feedback from this encoder that just creeps along like a snail. I hope that is what your asking? The manual does say: "Encoders can be either push-pull or open collector type. With open collector encoders, it may be necessary to add stronger 1k ohm pull-ups between the A,B and I channels and 5V if a long encoder cable is used. " It also says ". Values from 16 counts per revolution to over 1000 are common." So I would say it will support low CPR just fine.
The only real issue I've had with a feedback device is a cheap 10 turn pot I have in my Radar section. If used without speed ramping enabled in the DeScribe software the motor to will start and go right to speed nicely then stop at the proper location. If I enable speed ramping in DeScribe I'll get a stuttering and jumping effect when the motor starts up. This may be because of the cheap and noisy pot.
Hi all and Merry Christmas!
I have been head down building my robot mechanicals but did notice that with the saber tooth/kangaroo combo it moves the motor to the desired location an then holds it there / if I push on the arm there is no movement but if I power off the controller then I can push the arm but when I power it back up it moves the arm back to the selected location. I don't know if all servos do this but I like it. One question is - How do you reset a kangaroo to repurpose it?
Castle
Merry Christmas back at you and your family Castle. Peace, hope, health and happy robot building to all you love and care about.
I don't know much how servos act when controlled with RC commands sent by a RC controller. However the behaviour you're explaining sounds like it's working just like it should when controlled with a microcontroller. I would think the release behaviour would be the same in both modes but not sure.
Now, as far as a servo acts; regular analog servos will hold their position just like you describe your setup is doing till you release them somehow with either a release command or cut power. Some Digital servos will hold position even after you send a release command and only relax when power is cut. From what I've read recently, once released, servos should stop holding position and act like no power is being sent to them. All my analog servos act like power has been turned off when I send a release command. However I have one high end Hitec digital servo ("Ultra Torque" HS-7950TH) that still holds position when a release command is sent. I don't know about other types of digital servos then this one but from the research I've done they all should act like power has been turned off and relax when released. I just don't know as this "Ultra Torque" HS-7950TH is the only digital servo I've ever worked with. I don't like the buzzing digital servos do and my purpose really doesn't need the advantages a digital servo provides. I'm pretty sure all the servos EZ Robot sells at this time are analog servos. My guess is that they only sell the analog servos and include them in the Revolution robots is because analog servos are less expensive, less complicated, the little robots don't need the extreme holding power and level of precision digital servos provide. All this and you don't get the high pitched buzzing with analog servos either. I'm sure analog servos makes for much quieter EZ Robot Revolution robots. However, this is all just speculation on my part and I'm wandering off subject.
As far as how to release your setup, I can only guess as we've never been able to use the Kangaroo in RC mode till you solved the puzzle. If the servo is not heating up under load, constantly fighting to keep position when not needed or sucking power from a battery you could just leave it holding it's position. I have two servos in my Robot arm I do not want energized and fighting to hold position so I make sure I release them when they are done moving. Hower I'm sending simple serial commands through the Uart port. If you really want the servo to release in your RC mode through the digital ports you're attached to you could try sending a servo Release command. This would look like this:
To shut down power to the servo in question you could try to turn off the digital port. Not sure what the effect would be but couldn't hurt to try:
You may need to turn it on again befor can use it again. However, again, I'm not sure so you'll have to experiment:
Now, I'm not sure what you mean by repurpose the Kangaroo. Do you mean resetting it so all values are at zero? There are ways to reset it but if you're using encoders you will have to rehome them each time you use this motor again. With encoders the Roo does not know where the encoder is at start up and needs to go through a homing routine to find that out. That is not a problem with a pot. There's always voltage going through a pot and the Roo know exactly what that reading is right away on startup and compares that value to your tuned values it has stored onboard. This may be an issue if using an encoder in RC mode and then turning off the digital port as I described above. Turning off the port in RC mode may shut down the Roo and force a reset (or repurpose) . Once again, I'm not sure but is something to keep in mind and test for yourself.
I can answer this question of resetting the Roo if you are sending commands in Simple Serial through the Uart port of EZB. The Roo will reset to powered up values if you send a command to "Start" the channel the motor is attached to on the Sabertooth (remember the Sabertooth/Roo has two motor channels. One for each of the two motors it can control). As you may already know This command must be sent before any other commands or nothing will work. The basic commands look like this: 1,start or 2,start depending on what channel you want to start. If sending through the Uart port of EZB from EZ Robot it must be formatted like this (this example also shows this being sent from a third EZB of 3 being used):
Remember to first start the Uart port (only needed to be done once on EZB power up:
You can also power down a motor using one of the Roo's simple serial commands of 1, powerdown or 2, powerdown . Looks like this when sending through the Uart port:
One other thing about powering down a motor through the Sabertooth/Roo. You can set the motor to automatically power down after each move from inside the DeScribe software and then upload this setting to the Roo. Then the motor should cut power after each move. This approach works great for my big windshield wiper DC motor I'm using at the elbow of my robot arm. Without powering down the motor it will heat up a lot and keep drawing power. Using this setting I don't even have to think about using the powerdown command. You'll find it towards the top of the Control section in the DeScribe software in the Kangaroo setting. I think it's called something like Cut Power after move.
Good luck and hope this helps somehow.
Dave Schulpius
Hi Dave!
What I meant by repurpose is - if I want to use the saber tooth/kangaroo with a different motor and application or input sensor is there a way to set it back to factory defaults if there are any?
An example of this is that I had the potentiometer input all set up and working perfectly on S1 so then I wanted to try the quadrature input so I installed it on S2, moved the input from the EZ-B to S2 and the motor to M2. I switched dip switch 2 to ON for quadrature input. I then did a Teach Tune auto tune and it completed successfully! I then power cycled everything, connected the computer to the EZ-B and tried moving the servo but no response from the motor...
I don't know anything about using UARTs. With my pot input I just ran a wire from D0 on the EZ-B to the S1 input on the Roo and added a Horizontal servo in ARC and configured it for D0 and then when I move the arrows the motor moved correspondingly. I assumed the same set up would work with the quad but it didn't / trying to figure out why? It should be the same signal to the Roo which should move the motor like a big servo...
I remember reading something about quadrature needing something extra - like a known starting point but don't know what that means or how to do it...
You will need to use one of the UART ports if you want to read data from the motor encoder with the ezb... The way you are doing it now is just basically one way communication out of the ezb.... Using a UART port you can have bidirectional communication where you will be able to read motor encoder counts from the roo
See this thread... Sabertooth/Kangaroo
Hi Castle. Richard is correct. You can't get any feedback from the Kangaroo if you're not using the Uart port of the EZB. However as we've discussed in detail in past posts that right now you don't really care to see or use any position or speed feedback. You just want to point to a location and tell the motor to go there and at what speed.
So, I now understand what you're saying. Yes you can reset the Roo a couple ways. However the easiest way is to just do a new auto tune. The other way is to restore the factory defaults. If you want to restore the device back to factory defaults, in the DeScribe Software go to the File menu and click New (Reset to Dimension Standard). Then, click Upload Settings. Be aware that this will erase your last tune so you'll have to do a new auto tune anyway. When I was having trouble getting a successful autotune I went back to Factory settings and this seemed to help. For me it seemed like starting with clean settings resolved any conflicts I was having with the old tune I had.
A couple other things. It's a good idea to save your current tune if it's working and worth saving. Once you finally get the Roo set and running the way you like make sure to save a copy from the Edit menu. Also, any time you make a change to your setup you'll have to do a new auto tune. So if you replace your pot for an encoder, replace a motor, move your endpoints or change the dip switches on your Roo you'll have to do a new auto tune. The only time you don't have to retune is when you change the dips from position mode to speed mode. However this does not pertain to your set up .
Hi guys!
Thanks for the quick feedback! Dave is correct, I am not trying to get feedback to the EZ-B.
What I am having difficulty with is getting the Roo working with the quad for feedback to the Roo and control from the EZ-B. I got it working with a pot. But with the quad, I got a successful auto tune but it doesn't move from the EZ-B. I'm wondering what is different when using a quad for Roo feedback?
Castle
Humm, not really sure why EZ Robot won't command the Roo if it's using an encoder. I know the EZB and ARC do not support encoders. However it's the Roo that's using the encoder and not the EZB. Perhaps it's the way the roo is interpreting the feedback and having a conflict with the way the EZB is asking where to and how fast the roo should move. With pots, feedback is measured in millivolts and (without getting technical) that's kinda the way the EZB sends movement commands to servos. Now, encoders read position and speed with lines or pulses. EZB can't send movement information in that way. RC mode on the Roo may also only work in voltage units and not lines and pulses. Voltage units are the way RC controllers communicate with devices.
That's all speculation on my part but it's the only explanation I have. There is a Units section in the Describe software where you can tell DEScribe how the units you want to use relate to machine units (millivolts or lines), and it'll let you work in your own units. This may or may not work to convert the command EZB is sending to the Roo. If it is then you're going to have to do some math. DE has an online encoder calculator that will help you run the numbers. Here's the link to the Kangaroo manual where you can look this info up: DeScribe manual
Here's the link to the online Encoder Calculator: online Encoder Calculator
EDIT: after looking closer at the online encoder calculator I cant see how that would help to convert encoder lines to pot millivolts. Sorry. I am successfully using an encoder with the roo and EZB but I'm sending simple serial commands through EZB's Uart ports. It's a whole different animal.
You should contact DE tech support to confirm this or get better answers. Please report back to let me know what you find. Good luck.
Great information! I will pulse DE and report back!
Castle
Just so that I am clear - what signal is output by the EZ-B on a digital port, D1 for example, when using the Horizontal servo control? I'm sure DE is going to ask me that...
From @DJ's servo tutorial..
The whole tutorial is here.... How servos work
Thanks RR! I would have posted that info last night but when I wrote up my theory I had already had a few cups of Christmas cheer. LOL.
Anyway when Castle sends that valuable info to DE you posted about the type of control pulse along with the fact that he is using an encoder along with his dip switching settings they should be able to see what is not working here.
@Castle, Just wondering; did you change your #1 dip switch at all? I'm thinking it should be in the ON position because the roo is looking for RC servo signal input from the EZB. If that doesn't work try your setup with the #1 dip OFF to see if that makes any difference. Dip 1 dictates what type of input the roo is looking for.
Could you share a link to the encoder you're using or at least tell us what it is along with a model number?
Hi guys,
I can't tell you how much I appreciate your support!
Here are the results of testing Dave's idea. I switched the #1 dip switch on the Roo and then powered up. The motor immediately started turning CCW for 7 turns and then slowed down and moved back and forth searching for a point - it was virtually chattering as it was moving back and forth - less than one tooth width. While it was chattering I moused over the horizontal servo control, pressed the left button and moved the mouse and the motor responded by chattering in one direction and then the other in response to my mouse movement left and right. But the motor was not turning very much at all but it was moving directly in response. When I clicked Center on the control the motor immediately moved very quickly a couple of turns and then stopped. I also tried clicking on Release and when I did that them motor stopped turning and/or chattering. From this point on there was no response to the control in either Release or Center mode but I did notice that the yellow led on the Roo was now flashing three blinks. I should also mention that when the motor was chattering the Status 1 green led and the Error red led were acting erratic.
The encoder that I am using, which autotuned in Teach Tune mode perfectly on the first try, I might add, is Chinese (what isn't anymore) is an iiMash 600P/R Incremental Rotary Encoder that I bought on Amazon for $16.00. Here are more details: 600 p/r (Single-phase 600 pulses /R,Two phase 4 frequency doubling to 2400 pulses). With small size, light weight, easy to install, cost-effective features. For measuring goods angle, acceleration, length measurements and the rotational speed Apply to a variety of displacement measurement intelligent control,measuring height of civilian body scale and so on Connection: Red = A phase, Green = B phase, White =Vcc power +, Black = power - Notice: AB 2phase output must not be directly connected with VCC, otherwise, will burn the output triode. Specifications: DC5-24V wide voltage power supply Speed: more than 5000 r / min Shaft: 6mm/0.23" Dia, 13mm/0.51" Length Size: 39mm/1.53" Dia, 36.5mm/1.43" Length Output: AB 2phase output rectangular orthogonal pulse circuit, the output for the NPN open collector output type
The Type on the unit says: LPD3806-600BM-G5-24C
Like I said, the Roo did a perfect autotune using the TeachTune method so I am confident that the encoder is working as the Roo seems to be pretty picky when it comes to inputs...
So I think the problem is the communication between the EZ- B and the Roo. When I put the Roo #1 dip switch in On then nothing happens.
Castle
OK, Sorry. You did show this encoder a few days ago. I forgot.
I'm still not sure the two devices are understanding each other (like you said). However we got movement. That's good. The next thing you really need to do is get a TTL to USB adapter and attach the roo to your laptop. Then run the DeScribe and learn how to use it. There is only so much you can do by pushing a couple buttons and flipping a few switches.
Before you do that there is one more thing. I'm sure the encoder is working well with the roo. However when you moved the dip switch and the motor started searching and trying to match the signal it was finally getting from ARC I don't think it had a good reference. When you change a dip switch you need to do a now auto tune. The only time you don't need to retune when you make a change is when you change the dip switch between speed and position control. So put dip #1 in the OFF position and do another auto tune.
I think what was happening is the deadband and other settings are not set properly. You need a proper deadband or the motor will always chatter, move around or jitter looking for a center. Actually the Kangaroo sets three deadbands. Two are for position and the third is to know when the motor is up to speed. One position deadband is set in percentages, the other two are in lines or mili volts depending on if your using a pot or encoder. A successful auto tune with the dips set properly should set all that for you.
The Roo has a great fail safe function. If it sees problems it will shut it's self down thinking it's in a runaway or stall condition. That's better then you can image but can be frustrating. When you get into a condition like this and get error flashes you need to shut down power and restart it.
Once you start using the DeScribe software you can do autotunes from within the software and actually watch it happen. You can tweak settings like the deadbands and actually do live test's to see how they work as you go. It's much easier getting the roo to work or see why it's not working when using the DeScribe software.
Cool! I will do another auto tune! Is there a TTL to USB cable you recommend?
Castle
Something like this is what you need. Here's a Amazon link below. DO NOT hook up the VCC plug:
USB to TTL Serial Cable
Perfect! I just ordered it! I tried your dip switch #1 off and did a successful auto tune but the only difference was upon power up the motor turned the exact number of turns as the TeachTune and then stopped and chattered - it responded to the EZ-B but exactly the same - so no joy!
I did discover a wiring discrepancy for the encoder between the label and the documentation so I wrote to the mfgr for resolution. Pending that I have an email ready to go to DE...
Castle
Sorry for the failure. I'm now out of ideas. This really seems like a deadband (or lack of one) to me. My next step would be to get into the software and widen the deadband. Getting the deadband set properly is a balancing act. To narrow and the motor will chatter and seek till it destroys itself. To wide and you lose your accuracy.
I was thinking about the lights you were talking about. The 3 blinks the roo was giving you means you're having a control error and the channel has been disabled before any damage has been done. The manual says to check your feedback device (encoder) and to make sure nothing has changed since your last autotune.
This could be the wiring issue you mention on your encoder.
What worries me more is the error lights you mention on Sabertooth flashing red & green. This may be a low volt or low amp issue. I had this same thing happen and couldn't get things to work till I got a bigger power supply and larger wire. You may consider replacing that wall wort with a real power supply that can deliver some real amperage. Your wiring looks OK for that motor.
Very interesting analysis! Thanks for hanging in there with me - I think it is going to be worth the effort... If the wall wart had enough power to run the thing with a potentiometer it seems it should work with an encoder - my battery is with the rest of my stuff up in the barn so I will get it tomorrow and see if there is a difference / by the way the auto tune takes almost 5 minutes to run with the motor driving all the time so I really don't think it is a power problem but I will try it! The cable is due to be delivered on Wednesday and we will see what I can find out with the DES software...
I did not change the wiring following the tune and it seems strange that I would get a successful tune if there was a wiring problem to the encoder...
Again, thanks for the great hand holding! If I have to do this with potentiometers I can probably hear down to get 10 turns over the 40 foot length of rack but the encoder seems like a much more elegant solution...
Castle
The encoder manufacturer assures me I have it wired correctly. I have sent a support email to DE with Richard's explanation of the signal output for the EZ-B's pin D1 for them to comment on...
Well, at least we've eliminated some of the basic problems that could be causing this. It looks like it's down to a deadband problem or a conflict of the signal EZB is relaying and what the Roo is expecting.
In the end if an encoder just won't work with the EZB in RC mode you still have the option to use the uart ports and send simple serial commands. It's really not hard at all. Either way it sounds like you're going to have to write scripts to get your creation to do things the way you want. You will either be writing commands for servo positions and speeds or simple serial commands. I don't think you'll be able to rely on the Movement Panel to do everything you want. The big drawback would be that the Auto Position control can't be used with simple serial commands.
Hi Dave,
I think we will know a lot more by Wednesday ... I should have my USB to TTL cable and some kind of response back from DE by then ...
Do you have any experience with looking up an x, y, z position (for multiple servos) in a database and then driving all the servos to that position in space?
Castle
There is a way to kind of use auto-position with simple serial or other scripted commands. You define the servos as virtual servos, and have the AutoPosition frames activate them. You can then have scripts with getservo(port) in a loop or in waitforchange so when the virtual servo changes position in the AutoPosition action, the script sends the equivalent serial command. You can also have scripts right in your frames, just be sure to have enough pauses because if multiple frames have scripts, each new frame will stop the previous frame's script.
Interesting concept... I am hoping for a much more elegant solution similar to using a motor controller with built in feedback releasing the robot controller for other things like the Sabertooth/Kangaroo combination. I was thinking about calling a location from a MySQL database and the EZ-B handing it off to multiple Sabertooth/Kangaroo boards to complete the movement...
@Alen, thanks for the tip on the auto-position scripting triggering simple serial commands. I haven't really worked with the AP control but was really hoping I could find a way to use it with my B9 arm. Looks like there 'is" a way or two.
@Castle, Now that you're talking about databases of locations in space and MySQL, you're over my head. Sorry. I'm sure there are others here that can answer this. If not Google is always there for you.
Hi Dave,
Actually it is not difficult at all... You probably have positions that you want your B9's arms to go - like Danger Will Robinson, Danger! So if you save those positions in a file and then call that file when you want it / then the arms move. If you have lots of those files you would keep them in a database and then just make calls to the database... Simple!
Greeting all!
I just talked with Charlene at Dimension Engineering tech support about my encoder problem. She said that since the only thing that I changed is the feedback mechanism (from pot to encoder) and since the motor is chattering that the problem is most likely a noise problem from the encoder. She recommended installing 10k pullup resistors as well as 10uF capacitors on the encoder wires. She is going to be emailing me a diagram of how to install the resistors and caps. She said that with a lot of the knock off encoders that they need these for the noise. She also said to ground the shield on the encoder cable. She is also emailing me the latest release of the DEScribe software which includes an update to the Kangaroo software which will allow you to see the encoder ticks and/or the potentiometer voltage when tuning or operating to see if there is noise on them. I can't use the software until my cable arrives on Wednesday but I can get the caps and resistors and see if that solves the problem.
Just keeping you up to date! Castle
Great to know. Please share all the drawings she sends. I'd like a copy of the new software also. What is the version number?
Did you talk on the phone? I've never been able to reach them that way.
I will definitely share everything I get from them! Yes, we talked on the phone - I checked on my order for more sanertooth/kangaroos and the asked for tech support - I had already sent her an email explaining everything so she was able to read my info and then give me advice. It was great and friendly support! This is the second time I have talked with them and it has always been between 10 and 11 am their time...for what it's worth...
Castle
Here is the info that I just received from dimension engineering: Here is the new software version we talked about: https://www.dimensionengineering.com/software/SetupDS_2015-12-21.exe
To update, after Kangaroo is connected, go to Tools > Update Firmware. Navigate to Kangaroo folder and choose the latest file 2015-10-23. Try the 1k ohm pull-up resistors on the encoder first. You will need one each from channel A to 5V and channel B to 5V.
Charleen Dimension Engineering Support +1 (330) 634-1430 www.dimensionengineering.com
@ castle - to keep an eye on your encoder you can put a 10k ohm resistor through a led to ground on both a and b encoder outputs that go to the kangaroo. This will give you a good indication if your encoder is working the way you expect it to. You will probably need to turn it very slowly to see the pulses but it should be a good indicator to help rule out things when you are in troubleshooting mode. Things like noise should be noticed with the leds, if there is any. Also DE recommends that you have a battery on the circuit for the regenerative power from your mechanism.
Wow, purple! Your right! I totally missed that. The only sabertooth that can run without a battery attached to dump the regen power back into is the Sabertooth X32. Even then you need to chock the regen power with a power resistor. Good catch. That could be why he's seeing the flashing red led on the sabertooth.
Thanks for the "stuff" Castle!
Hey Dave, yeah I'm surprised you did not catch that one. The reason I thought of it is when I had to contact DE, it's the first thing they asked me. The second was can we see a schematic. This kangaroo is really cool, I know you know that too because I have watched some of your video posts. It's a lot of control power for a little cost. I had that red light blinking on the sabertooth too, it was an indication that the voltage of my supply was dropping during load. That's something you have to watch with the wall warts, almost all are unregulated so the circuit voltage will have a huge dip under load.
Ya, totally missed it the lack of battery. I gotta chalk that one up to liquid Christmas cheer. I gotta stop troubleshooting when I'm making merry. LOL. Thanks for catching it.
I mentioned the low volt scenario and flashing lights to Castle a few posts back because I had the same flashing lights when I was trying to tune and then again with my motor was running. DE also told me the same as what you just said; Voltage dropping during load. I got a power supply with more capacity and I that solved a lot of my problems.
Hi guys,
Last evening I soldered in two 1.5k resistors on to the encoder. One is soldered to the A wire and to the red wire which is the 5vdc to the encoder. The other resistor is between the B wire and the red wire. I put all 4 Roo switches to on and connected power from a battery (thanks guys) - it is a fairly large glass may battery - no wall wart. I then conducted a button press teach tune auto tune which went perfectly. i then power cycled and then went to my Hirizontal servo on D0 and moved the mouse but alas / nothing happened. No movement, yellow led is steady, no error blinks - nothing. I then powered off, switched dip 1 on the Roo to off and powered up. The motor immediately went to one end of the tune position and chattered to a stop. When I move the mouse it chatters in both directions but not moving much. So I'm calling DE this morning..
SUCCESS!
Hi guys,
I got it working with the help of Charleen at DE. By the way, she really knows her stuff and is easily reached by phone, I have talked with her at least 6 times in the last 2 days.
The problem with the encoder turned out to be a bad input channel on the Kangaroo.
I had initially done my potentiometer testing on Roo channel 1 and then when I started doing the encoder testing I used channel 2. It would autotune great but when I went to control it from EZ-B nothing would happen. We tried different resistor sizes but still no joy. So I decided to put the potentiometer (which worked) on channel 2, did an autotune but then nothing. Ah Ha - maybe it is the channel? So I put the potentiometer on channel 1 and it worked. Then I put the encoder on channel 1 and VOILA! it worked flawlessly!
DE is shipping me a replacement Kangaroo!
By the way, I am trying to use the two channels independently. I asked Charleen if perhaps I needed to have channel 1 hooked up before I could use channel 2 and she said no - they operate completely independently. You can use just channel 2.
So, there you have it Using an inexpensive encoder from Amazon in TeachTune mode works! My USB-TTL cable is supposed to arrive tomorrow and then I will connect the DEScribe software to this Roo and down load the tune, which Charleen says I can just upload to the new Roo and it will work!
Thanks to everyone for all the help. Please let me know if you have any questions!
Castle
It is a bummer getting something new arrive broken, but what a nice feeling to know you were actually doing everything right and it was just a piece of broken hardware causing all the frustration. congrats on figuring it out. That bit of knowledge about being able to save the auto-tune and load it to other roo's may come in handy for anyone building robots for sale that use this hardware.
Alan
Yhaaaa! Nicely done! What a relief. Did you leave the pull up resistors on the encoder?
I need to give her a call. It's good to know she's so available. I'm having a problem with my motor not centering at the same point depending which way it's approaching the center and where it's starting from. Don't know if it's the Roo or the Softpot. I've tried many different adjustments with no difference. I did ask Charleen a while back about this problem and she (and others I've asked) mentioned deadband settings. No change. I only mention this off subject item because I think you said you're using the Softpot also. Just something for you to keep an eye on.
Hi Dave!
That's good information! I do have a soft pot on my hydraulic ram which I will be driving with a SyRen 50/Kangaroo combo. I did have a little problem with the motor not completely stopping when using a pot for feedback - Charleen told me that was a deadband issue that I could easily solve with DEScribe when the cable arrives!
I am so excited that I have been able to get these motor controllers behaving like servos which is going to allow me to control larger gear drive motors and bring Wiggins to life!
Castle
My USB TTL cable arrived and today I got it working with DEScribe! Don't understand a thing I'm looking at...
Greetings!
My USB to TTL cable arrived from Amazon - I ordered the one that @Dave recommended. It turned out to be make by SparkFun but did not come with any drivers. I plugged it into my Windows 7 Pro machine and Windows searched for and installed drivers which didn't work. It would download the information from the Kangaroo but would not upload it - the error was "Failed to open serial port." After numerous support calls to Charleen at DE she recommended downloading the drivers from FTDI. I found a link on the SparkFun site for drivers and upon installing them on a Windows 10 machine the cable worked!
Here is the location for the drivers: https://cdn.sparkfun.com/assets/learn_tutorials/7/4/CDM_v2.12.00_WHQL_Certified.exe
Castle