Jump to content
chopperpilot

Help with ROM/ hex file edit for Mr. RC-CAM's PANCAM

Recommended Posts

I have built the PANCAM and it works GREAT.....! Thanks Mr. RC-CAM for a great project

The problem is I'm only getting about 110 to 120 deg of travel, even with my tx EPA's set at max...!

I would like to get 180 deg. or the max....what ever that is?

I have Hex Workshop loaded and ready to go but I can't seem to find the addresses or the Values...?

Would/could someone please teach/talk me thru how to do the edit or would some kind soul please post oe email me the modded hex file.

Thank You,

Larry

Share this post


Link to post
Share on other sites

Thanks for the kind feedback. The PanCam readme file gives the instructions on how to calculate the value. As far as using your chip burner's editor, just check its instruction manual for the details.

Be careful with the servo pulse edits. With the wrong choices, some servos can be made to exceed the mechanical end stop (or available pot rotation) if you go too far. Doing that can quickly ruin pots, gears, or motors.

Share this post


Link to post
Share on other sites

"0x" is a preamble that simply means that the data is in hex format. For example, if instructed to edit address 0x20D, you would need to go to hex address 20D.

You should use the editor that is included with your PIC chip programmer. General purpose editors might not format the addresses and data with the correct byte alignment.

Share this post


Link to post
Share on other sites

Thanks Mr. RC-CAM..

I have found the address in my pic programmer SW and it has the values as you show.

Now I can't figure out the math to convert default values to the 0.75mS and the 2.25mS

pulse= ((stored hex value-0x800) * 8uS + 440uS

((800 *8us)= 6400uS + 440uS = 6840uS what do I do with this number to convert it to the 0.75mS I need...?

or should it be ((836 - 800) * 8uS + 440uS = 728 .........? how do I convert this to the 0.75mS and 2.25mS

Thank You for your help,

Larry

Edited by chopperpilot

Share this post


Link to post
Share on other sites

0.75mS is 750uS

2.25mS is 2250uS

pulse= ((stored hex value-0x800) * 8uS) + 440uS

Solve for 750uS:

750uS = ((stored hex value-0x800) * 8uS) + 440uS

750uS - 440uS = (VAL - 0x800) * 8uS

310 = (VAL - 0x800) * 8uS

310 / 8 = VAL - 0x800

39 = VAL - 0x800

(39 dec is 27 hex)

0x27 = VAL - 0x800

0x827 = VAL

Solve for 2250uS:

2250uS = ((stored hex value-0x800) * 8uS) + 440uS

2250uS - 440uS = (VAL - 0x800) * 8uS

1810 = (VAL -0x800) * 8uS

1810 / 8 = VAL - 0x800

226 = VAL - 0x800

(226 dec is E2 hex)

0xE2 = VAL - 0x800

0x8E2 = VAL

Share this post


Link to post
Share on other sites

Ok so I did the hex file mod and all went well...however it only added about 20 deg. on either end...for about 140 deg total..!

I took what I learned from you examples and came up with the following:

Does this look correct for a new minium pulse value...?

0.50mS is 500uS

Solve for 500uS

500uS =((stored hex value 0x800) * 8uS) + 440uS

500uS 440uS =(VAL 0x800) * 8uS

60 = (VAL 0x800) * 8uS

60 / 8 = VAL 0x800

7.5 = VAL 0x0800

( 8 dec is 08 hex)

0x08=VAL 0x800

0x808 = VAL

2.50mS is 2500uS

Solve for 2500uS

2500uS =((stored hex value –0x800) * 8uS) + 440uS

2500uS –440uS =(VAL –0x800) * 8uS

2060 = (VAL – 0x800) * 8uS

2060 / 8 = VAL – 0x800

257.5 = VAL – 0x0800

(258 dec is 102 hex)

102=VAL – 0x800

0x802 = VAL

Thanks,

Larry

Edited by chopperpilot

Share this post


Link to post
Share on other sites
it only added about 20 deg. on either end...for about 140 deg total..!

Are you sure the servo is capable of going further? Maybe it is stalling at those endpoints?

As mentioned is the distributed readme file, the calculated values must be between 0.75mS to 2.25mS. If you need more range then you should try a different servo or hack the servo's feedback pot to trick it into giving more travel range. Do not use a common digital servos since most will electronically limit travel to prevent gear damage. However, the Hyperion digitals will allow for nearly 180 degrees if you use their PC programming feature.

BTW, for best Pancam operation you will want to set the Tx's EPA's to a small value to allow for better control of the slower speeds.

Share this post


Link to post
Share on other sites

Hi Mr. RC-CAM,

I have check and the servo will travel about 20 deg. farther on both ends before hitting the internal stops..

I have the EPA's set at 105 on both ends and the PANCAM works great.....just would like to try and get that extra 20 deg. if I can.

Do I have the edits correct....I think I may have the 2.50mS value wrong.

Thanks for all your help,

Larry

Share this post


Link to post
Share on other sites

The calculated 2.50mS value is incorrect. If calculated correctly, it will still be wrong since 0x902 is not a proper instruction.

However, it doesn't matter since the values for 0.75mS and 2.25mS are about the "biggest" that are allowed. If you need more travel range, you must choose a different servo.

Share this post


Link to post
Share on other sites

However, it doesn't matter since the values for 0.75mS and 2.25mS are about the "biggest" that are allowed.

Huh? All my pan servos have been operated in the 500-2500us range for years. Never broke one. Changing servo most likely won't help, pulse -> angle response is very consistent across brands and models for analog servos from what I've seen.

Edited by Kilrah

Share this post


Link to post
Share on other sites

Huh? All my pan servos have been operated in the 500-2500us range for years. Never broke one. Changing servo most likely won't help, pulse -> angle response is very consistent across brands and models for analog servos from what I've seen.

So what do you suggest....? do you have a hex file I can try..?

Thanks,

Larry

Share this post


Link to post
Share on other sites
pulse -> angle response is very consistent across brands and models for analog servos from what I've seen.

I see a difference in servo travel for a given pulse width, depending on brand and servo model. For example, with the original (default) Pancam values I got 150 degrees with a HS-605MG. That is much further than what is reported with the revised hex values, which would allow greater travel than that.

During PanCam development I tested a couple dozen different servos. Their max travel varied, but many provided ~140 degrees with the stock (default) values. A couple servos came very close to the mechanical limits (within 5 degrees) and would certainly have exceeded the mechanical endpoint with the revised values discussed in post #6.

It is for this reason I think you should try some other servos. Just grab them from you R/C junk box and see what you find. If you are not successful then simply mod the servo for increased travel (two resistors on the feedback pot).

However, it doesn't matter since the values for 0.75mS and 2.25mS are about the "biggest" that are allowed.

Just to clarify, these are the biggest allowed by PanCam. The data range is only 8-bits and with the provided resolution, larger effective values are not possible (they will exceed 8-bits).

Although I doubt you will see a noticeable increase in range, you can use 0x801 and 0x8FE for your edited values. Perhaps those, along with another servo choice, will give what you need.

Edited by Mr.RC-Cam
Added 0x801 and 0x8FE comment

Share this post


Link to post
Share on other sites

do you have a hex file I can try..?

No, I've made my own device for that purpose, and as for panning one can't do the adjustements on the radio, for convenience I implemented a calibration procedure to store the end points. I slowly move the servo with the stick until I reach the mechanical stop (or whatever other position I want as an end point), go back a bit, press a button, then do the same on the other side. That way it's easy to adapt the behavior to any servo.

Edited by Kilrah

Share this post


Link to post
Share on other sites

I see a difference in servo travel for a given pulse width, depending on brand and servo model. For example, with the original (default) Pancam values I got 150 degrees with a HS-605MG. That is much further than what is reported with your revised hex values, which would allow greater travel than that.During PanCam development I tested a couple dozen different servos. Their max travel varied, but many provided ~140 degrees with the stock (default) values. A couple servos came very close to the mechanical limits (within 5 degrees) and would certainly have exceeded the mechanical endpoint with the revised values discussed in post #6.It is for this reason I think you should try some other servos. Just grab them from you R/C junk box and see what you find. If you are not successful then simply mod the servo for increased travel (two resistors on the feedback pot).Just to clarify, these are the biggest allowed by PanCam. The data range is only 8-bits and with the provided resolution, larger effective values are not possible (they will exceed 8-bits). Although I doubt you will see a noticeable increase in range, you can use 0x801 and 0x8FE for your edited values. Perhaps those, along with another servo choice, will give what you need.

Thanks....I'll give it a try......if it works it works...if not well we tried.

FYI, my pan servo is a hitec..super gears and ball bearing.....I would really like to keep it in place....

Thanks

Share this post


Link to post
Share on other sites
FYI, my pan servo is a hitec..super gears and ball bearing.....I would really like to keep it in place....

If you need to use that servo then modify it for extended travel. Start with a 470 ohm resistor on each outside leg of the servo's feedback pot. That, along with the servo pulse stretching already built into PanCam, should allow for all the travel you need for ~180 degrees.

Share this post


Link to post
Share on other sites

Mr. RC-CAM

Well it seems you were right the new edit did nothing.....I will have to try some different servos, don't really want to hack the servos but will keep it in mind.....may be, I don't even need more then the pan I have....haven't got the bird in the air yet, still building and wiring in the "Poor Mans OSD".

Thanks for the help...!

Larry

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×