Two quick questions, can the board itself be powered via the USB port, and is the voltage reference pin on the main chip jumpered so other voltages lower than the board voltage be used as reference?
The USB can not power the board. We are using an FTDI USB to Serial chip which can supply at most 100ma(including it’s own power requirements which leaves something like 40ma for the rest of the board). It’s just not enough for practicle use.
The A/D reference voltage is tied to 5v still. There just isn’t any more room for extra jumpers. We barely fit the three to disconnect the USB chip.
To power the logic part of the board from the USB connection,you would tap the ± at the USB connector where it connects to the board. It won’t power connected servos, but will power the logic power needs. This is the way I’m currently powering the logic power on my ssc-32. One could make a simple power breakout connector to fit between the board USB jack and the USB cable.
Yes, I understand that but we had space and total power considerations. We needed this to work without several more prototypes. The 40ma envolope the FTDI gives is right on the edge of not enough when running the 3687/mux’s at full speed. Also the board needs to function with out being connected to USB. We barely had the room for the FTDI jumpers so adding others to connect/disconnect from FTDI/Main power wasn’t an option. I did ask about adding a single jumper to get access to the A/D reference pin. I was told there may be enough room for a single jumper. We are pushing what can be done on a double layer board. We don’t want to go to a 4 layer board because it more than doubles the cost and most board houses hate dealing with hidden vias so we end up getting jacked around.
Not having the capability to power the board logic from the computer USB connection may may make the board somewhat obsolete compared to other new boards. You wouldn’t power the board logic off of the the FTDI chip, but directly from the USB cable (generally capable of supplying ~500ma). The below pix is how I get logic power for my ssc-32 from a USB hub to which my USB-serial adapter is also connected. More thoughts in the “new ssc-32” discussion. Bottom pix is my setup to allow for different reference voltages. Some gizmos now output 0-3.3v instead of the usual 0-5v range. I did some servo feedback testing and the output of the servo pot was 0-2v, so I had to change the ssc-32 reference voltage to 0-2v instead of 0-5v to get full range resolution. Just some ideas I think are important for a new product.
The point I’m trying to make is not every feature everyone can think up can be on this board. It had a design criteria to match the physical dimensions of the SSC-32. Also USB only supplies the 500ma if you ask for the 500ma(at least that is the way it is supposed to work by the USB spec). The FTDI asks only for 100ma and since it is the only thing on our board that talks to the USB on the PC we assume only 100ma is going to be supplied. The primary limitation is physical size(short of going to a 4 layer board). To power by USB, we’d have to have the option to NOT power by USB which means jumpers or some other electronics that would take up space. This board MUST be able to work without USB power so we can’t make it ONLY work on USB power. That means we would have had to have extra components(jumpers or electronics) to support USB power. Also the FTDI part is supposed to have a different circuit when USB powered which would add a couple more components.
I’m making a list of suggestions and when we come around for the next rev we’ll see if we can add them(some or all). I don’t currently see any way to add USB powering to the board without making it bigger or going 4 layer.
If your SSC-32 hack is working then just connecting the USB +5v to VL+ should give you what you want(VL-(Vss) is common to the USB logic already) but that is not the way it is supposed to be wired. This is by no means within spec but I don’t see why it wouldn’t work(as long as the 100ma is enough).
Exactly, well said. No matter what the product is, people always find Pro’s and cons. As an example, product reviews for cameras, cell phones, etc. always have pros and cons. If a cell phone manufactures tried to cater to everyone’s needs / desires, you would end up with a brick that didn’t work.
Having designed my own two layer board, I understand what it means to work with limited real estate. Considering this board has the ssc-32 and the abb as a single unit on a two layer board, its understandable there is isn’t room for much else. I thinks it’s a fantastic design packed with features that will more than satisfy the needs of many sophisticated bots such as the A-pod and beyond. This is a biped builder’s dream considering there’s limited mounting space.
Hey-
What is the target date for the ARC-32 boards to be available-
I’ve been told we have the blank PCBs now and are just waiting for final testing(this weekend for us) and baring any problems Jim runs into over the next week, before we send them to be assembled. Assuming no last minute problems are found we should have stock in two to three weeks for customers(through us and Lynxmotion). Couple more people will be getting samples before then. If it goes two weeks(very optomistic) we may catch Chrismas but if it goes three weeks don’t expect to be able to get your hands on one until afters the 1st.
On a side note, I’ve already ported Xan’s Phoenix code to run on a BHR-3 with Arc-32 board(thats what I’m doing most of my testing on). :mrgreen:
Sounds great. It sounds like you may be having some fun!
Kurt
I think the USB power would be a prudent business decision and not just a pro/con or another do-dad (but this isn’t my project and my $$$). You can see what others are doing with USB power below. Bottom is basically what I have done (the low voltage drop diode is a protection after thought). I think the board (not sure of all the features) may have many uses where servos are never connected (data logging, home automation and security, etc).
pololu.com/catalog/product/390
arduino.cc/en/Main/ArduinoBoardDuemilanove
arduino.cc/en/uploads/Main/ardui … ematic.pdf
Sounds great! Does it work fine too? Any numbers for one cycle time? I’m looking forward to test this board one time. How long time does the it take to send one cycle command to all 18 servos? With BB2 and SSC32 that take about 45 mS. I would guess with the new ARC32 this isn’t an issue anymore?
I agree that there are definitely cases that would make this nice.
But if I had to choose between this and the ability to gain back the second USART from the USB port, or the ability to control more AtoD lines or Servos or the ability to do SPI or I2C, or maybe a larger capacitor that makes it less likely that I need a separate VL, this capability would be pretty low on my priority list.
If I were wanting to do several of these valid projects you mentioned, I probably would not need a board that had all of bells and whistles that this one does, but instead maybe a simpler board that maybe had some other features, like battery backup, … I might start off with something like: basicmicro.com/USB-Universal … p_69.html#
I personally like the H8 processors that the BAPs are based on. But if I were looking for a different Microcontroller, I would be considering the new Axon2 parallax.com/Store/Microcont … roductName
I am sure glad that I am not the one who has to make the decisions on what goes into the board and what does not. But I can’t wait until I get my hands on one!
Kurt
Well,if the solder points on the board for the USB connector are on the bottom of the board, then one can “hack” the board with a jumper soldered to the USB connector +5v solder pad, much like I did to power my ssc-32. The selectable chip reference voltage is lost for want of a single jumper on a trace. With a surface mounted chip this would be difficult to DIY.
Zoomkat, I guess I’ll just leave it at “we can’t make a board that has everything everyone wants on it in limited size”. I’m done arguing. I’ve stated you can hack the board yourself(which we can’t do because it isn’t the “right” way of doing USB powered devices) and that we’ll try adding the extra jumper to allow access to A/D ref.
Zenta, The Phoenix port has power to burn for want of a better description. The only problem I have at the moment is I broke something in the balance code.
Sigh, now we are gona have to fix that.
I do like the idea of maybe making the AtoD reference point possible to change (don’t need it yet, but…)
This sounds great. One of the first things I would check with some of this code is that there are not any overflows. I found with some of Xans code, when I switched the code to work with my CHR-3 from the phoenix, that I got some overflows. So I ended up converting several of the variables from word to long or sword to slong…
My guess is that without having to ask the SSC-32 for information, you can also probably simplify some stuff and not have to use a timer to know when to issue the next command. You could end up using HservoWait or probably better do work and do calls to GetHservo to find out the state of the different servos. May even give you an excuse to add the GetHservos command like you mentioned in an email:
Also my guess is Xan could have a blast with this. He could probably do quick tests to see when a leg touches something do a quick GetHServos and then stop that legs movement at that location. These commands should be very quick as they simply have to query or update some memory locations and not have to slumber along doing serial commands.
Kurt
I believe this need some more explanation, exactly what are broke? I could have a look at it if you want. Did you have to edit some of the code in the balance section for making it work with ARC32?
Kurt, correct on your guess about not needing the timer stuff when using the ARC-32. I use hservoidle() function to determine if the last move is complete other wise I just continue processing ps2.
Zenta, when I enable the balance code the robot tends to shift some to one side and also tends to vibrate/bounce.
Does this happends even when the robot are standing (no walking)? It sound like some input values to the balance code are a bit off. Debugging the input variables (PosX,Y,Z) in the BalCalcOneLeg sub and the output variables TotalTransX,Z,Y and Total(X/Y/Z)Bal in the BalanceBody sub would give you an indication. If the input values are staying unchanged/constant there shouldn’t be any shifting/rotation. Also when the robot stands in the initposition (no walking) all the output variables should be 0.