RunRyder RC
 7  Topic Subscribe
WATCH
 5 pages [ <<    <     1      2     ( 3 )     4      5     NEXT    >> ] 34718 views POST REPLY
Scorpion Power Scorpion Power
HelicopterRadio - Servo - Gyro - Gov - Batt › Decoding Futaba PCM 1024Z
11-09-2003 07:31 PM  13 years agoPost 41
Angelos

rrKey Veteran

nr Oxford, OX11, UK

My Posts: All  Forum  Topic

Frederic,
a change of 100 absolute units would for example result in a 50 units change from the differential correction. but 110 absolute units would still have 50 units differential correction. so you need to find what is the smallest absolute change before you determine the differential value. but then... how are you going to create precise absolute changes?

PM  EMAIL  GALLERY  Attn:RR  Quote
11-09-2003 07:35 PM  13 years agoPost 42
w.pasman

rrElite Veteran

Netherlands

My Posts: All  Forum  Topic

Hi Frederic

"Suppose we have 3 successive frames, 1, 2 and 3. A (small) step was applied between the generation of frame 1 and 2 for a given channel. For that channel frame 1 and 3 contain the absolute values A1 and A3 and frame 2 contains the differential value D2. Then should A3 = A1 + diff_array[D2]"

Yes that sounds nice! You assume using the transmitter AND receiver to measure this. One problem with this is that I have some problems generating small steps because of the RF noise coming from the transmitter.

I also thought about using ONLY the transmitter and unplug the radio module. This saves me a lot of headaches with RF noise getting into the scope. I was thinking about sending the signal to TWO channels instead of one, that way you can always see both the differential and the absolute code coming out. I then can find the 'switching point' where the delta code changes, and then check the absolute jump associated with it.

PM  EMAIL  HOMEPAGE  GALLERY  Attn:RR  Quote
11-09-2003 07:41 PM  13 years agoPost 43
w.pasman

rrElite Veteran

Netherlands

My Posts: All  Forum  Topic

The other [third] option would be using [ONLY] the receiver, and plugging in digital codes to see what happens with the outputs. For instance we could send pos=10, delta=0, pos=0, delta=2 in this order to channel 1 and see if the outputs keep stable. If so, delta=2 means a jump of 10. This solution needs us to inject digital pulses into the receiver, and I'm not sure that's possible. I haven't even opened the receiver yet, this is just investigation of the possibilities.

PM  EMAIL  HOMEPAGE  GALLERY  Attn:RR  Quote
11-09-2003 08:39 PM  13 years agoPost 44
FredericG

rrNovice

Belgium

My Posts: All  Forum  Topic

Since my last post I have been thinking about it and also wrote this (I only have a dialup connection and so prepare a little text before I connect)

Aside from how we do the measurements, I would think that the equation will only work for small differences; a one to one relationship between step and coded differential value. For bigger steps I would think that multiple step values would map to the same coded differential value so that A3 > A1 + diff_array[D2]

So Angelos, I think we agree, we need to find out where the transitions are. No?

Wouter, I was thinking of only using the TX; connecting a function generator to the radio and look at the frames it generates. I did not think about the possibility to generate small steps might be difficult. In the past I have made a device that reads the PPM and behaves as a joystick. I used to remove the crystal from the TX because too much noise was picked up. So, yes I think this might improve things a lot.

But perhaps there is another idea to generate the steps. We can setup a mixer on the TX with a slider and connect a switch to activate the mixer (this is standard functionality on a computer radio). Toggling the switch will generate a clean step I think.

Your last idea, Wouter, is also very nice I think and I think it goes in the direction of Angelos proposal. (If so, it will definitely work )

We could also walk different paths and compare...

Frederic

PM  EMAIL  HOMEPAGE  Attn:RR  Quote
11-09-2003 09:41 PM  13 years agoPost 45
Angelos

rrKey Veteran

nr Oxford, OX11, UK

My Posts: All  Forum  Topic

I though about generating PPM myself and feeding it in the 9Z, but you will find out that PPM is a bit jittery and I don't think it is sampled at 10bit resolution by the 9Z anyway. So you won't get the precise setting that you need in the absolute values.

PM  EMAIL  GALLERY  Attn:RR  Quote
11-10-2003 09:40 AM  13 years agoPost 46
w.pasman

rrElite Veteran

Netherlands

My Posts: All  Forum  Topic

Hi

" Aside from how we do the measurements, I would think that the equation will only work for small differences; a one to one relationship between step and coded differential value. For bigger steps I would think that multiple step values would map to the same coded differential value so that A3 > A1 + diff_array[D2]"

No the diff_array works for every value. There are no "multiple step" values. The diff is used only once, after that comes an absolute position update for that same channel.
I expect for the array something like this

-512,-256,-64,-8,4,2,0, 2,4,8,16,64,256,512

The delta to be taken aways has to be lower than the actual jump to avoid servo overshoot. So real jumps between 64 and 255 all map to 64.

If we dont use the transmitter module we can't use both transmitter and receiver so your first proposal to use my latency setup would not work then... But if we can decode the pcm digital signal that's no problem at all.
The idea to use the mixer and a switch is a neat idea! Only problem might be that I dont know how switches are connected, maybe we can not straightly inject volts into a switch input...
It was not clear to me, it seemed that Angelos was using analog input, and not direct injection of digital signals somewhere into the receiver. So I'm not so convinced that that will work.

Angelos, yoru idea of using PPM (via the trainer port) idea is also neat, didn't think of that one yet. But I agree, if they dont sample at 10 bits it will be troublesome to try that.

PM  EMAIL  HOMEPAGE  GALLERY  Attn:RR  Quote
11-10-2003 10:11 AM  13 years agoPost 47
FredericG

rrNovice

Belgium

My Posts: All  Forum  Topic

Hi Wouter,
No the diff_array works for every value. There are no "multiple step" values. The diff is used only once, after that comes an absolute position update for that same channel.
from your explanation I think you agree with me but that I didn’t make myself clear… What I meant is that the TX will generate the same “pcm_delta” for multiple differences. The receiver on the other hand will generate only one difference for a specific “pcm_delta”; in fact the lowest value, because it does not want to steer the servo over the target.

Anyhow, I did what I described yesterday:

I programmed a mixer to combine a stick with a slider. A switch controls de mixer. By toggling the switch I get a sudden step.

I modified the SmartPropo code to display, for one channel, the absolute value and the coded difference value. This is how an output looks like:
D1 8 A1 514
D1 8 A1 492 => transition without diff value
D1 8 A1 492
D1 8 A1 492
D1 8 A1 492
D1 11 A1 514 => transition where first the diff value is shown
D1 8 A1 514
D1 8 A1 514
D1 5 A1 492 => transition where first the diff value is shown
D1 8 A1 492
D1 8 A1 492
D1 8 A1 492
D1 11 A1 514
D1 8 A1 514
D1 8 A1 514
D1 5 A1 492
D1 8 A1 492
D1 8 A1 492

With this method I do not seem to be able to generate steps with odd values…

I think my setup provides workable results. I will check this further but these are my preliminary conclusions:
Diff between => coded diff (TX generated)
0->3 => 0
4->7 => 1
10->15 => 2
16->35 => 3
36->43 => 4
44->63 => 5
64->87 => 6
88-> => 7


So, as I see it now, the array looks like:
-88, -64, -44, -36, -16, -10, -4, 0, 4, 10, 16, 36, 44, 64, 88

Frederic

PM  EMAIL  HOMEPAGE  Attn:RR  Quote
11-10-2003 10:38 AM  13 years agoPost 48
Angelos

rrKey Veteran

nr Oxford, OX11, UK

My Posts: All  Forum  Topic

it seemed that Angelos was using analog input, and not direct injection of digital signals somewhere into the receiver
I was not injecting anything in the TX. You can generate the diff values you want by assigning the channel to a switch and using servo delay. Although this will give you the diff value you want (when you figure the correct % for the delay), it does not guarantee precise steps of the absolute values too. Then you can measure the servo pulse generated by the absolute value and the following pulse to see how much the pulse width has changed.

I must emphasise again that you need to develop some microcontroller program to assist you with this. First of all you need to write some code that selectively locks to the frame of your choice. Then you can capture the absolute and differential pulses that follow.

PM  EMAIL  GALLERY  Attn:RR  Quote
11-10-2003 12:08 PM  13 years agoPost 49
w.pasman

rrElite Veteran

Netherlands

My Posts: All  Forum  Topic

Hi Frederic!

Yes that's much clearer as you describe it now.

Wow that is a fast result for the delta array!
Note you have 15 values in your array, there should be 16 values. (I know, my example is flawed )
Furthermore I find it odd that there is a jump of 20 between the number 16 and 36, but only a jump of 8 between 36 and 44. My guess would be that the 36 point is somewhat too high, it would more likely be around 28.
About being unable to generate even jumps, maybe you have the subtrim step on 2 instead of 1 ?

PM  EMAIL  HOMEPAGE  GALLERY  Attn:RR  Quote
11-10-2003 12:12 PM  13 years agoPost 50
w.pasman

rrElite Veteran

Netherlands

My Posts: All  Forum  Topic

Angelos,

Can you explain why you use 'servo delay'? I thought that all still depends on when you throw the switch?

PM  EMAIL  HOMEPAGE  GALLERY  Attn:RR  Quote
11-10-2003 12:58 PM  13 years agoPost 51
Angelos

rrKey Veteran

nr Oxford, OX11, UK

My Posts: All  Forum  Topic

If you manually move the sticks you will never get a constant rate of position change. If you use a switch with no delay the servo output will just go to the other side on a single step. If you however use a servo delay together with a switch you will constantly receive the same diff data until the servo reaches the other side. This is just a trick to make the TX generate the diff value you want so that you can measure the difference in pulse width between absolute and diff adjusted pulse.

PM  EMAIL  GALLERY  Attn:RR  Quote
11-10-2003 01:12 PM  13 years agoPost 52
Angelos

rrKey Veteran

nr Oxford, OX11, UK

My Posts: All  Forum  Topic

Frederic,
So, as I see it now, the array looks like:
-88, -64, -44, -36, -16, -10, -4, 0, 4, 10, 16, 36, 44, 64, 88
I must say that you are doing quite well! Please double cleck your values. Particularly I don't like 10 and 36.

Guys, don't tell me you haven't seen the mathematical model behind this yet!

Hint... here is the table the TX would use to generate the diff values...

01, 01, 01, 01, 01, 01, 01,
02, 02, 02, 02, 02, 02,
03, 03, 03, 03, 03,
04, 04, 04, 04,
05, 05, 05,
06, 06,
07,
08,
08,
09,
0A, 0A,
0B, 0B, 0B,
0C, 0C, 0C, 0C,
0D, 0D, 0D, 0D, 0D,
0E, 0E, 0E, 0E, 0E, 0E,
0F, 0F, 0F, 0F, 0F, 0F, 0F

-Angelos

PM  EMAIL  GALLERY  Attn:RR  Quote
11-10-2003 02:49 PM  13 years agoPost 53
w.pasman

rrElite Veteran

Netherlands

My Posts: All  Forum  Topic

Hi Angelos

Aaaah thanks for the explanation, I see what you mean with the delay, nice trick. I completely forgot about those airplane features and how they function. You must fly fixed wings at times or have very special gadgets on your heli!

PM  EMAIL  HOMEPAGE  GALLERY  Attn:RR  Quote
11-10-2003 02:56 PM  13 years agoPost 54
w.pasman

rrElite Veteran

Netherlands

My Posts: All  Forum  Topic

Mmmm Angelos, I know this 'mathematical model' but it fits very badly to the points that Frederic found.
Also are you sure you have TWO points represented by 8? That would mean either 0 and +1 or 0 and -1 to be represented there which is both not symmetric.

PM  EMAIL  HOMEPAGE  GALLERY  Attn:RR  Quote
11-10-2003 02:58 PM  13 years agoPost 55
Angelos

rrKey Veteran

nr Oxford, OX11, UK

My Posts: All  Forum  Topic

You must fly fixed wings at times or have very special gadgets on your heli!
Well, I have one pylon racer only and that needs just 3 channels. However, since I am making my own TX software I have carefully studied all functions of the 9Z for all model types.

PM  EMAIL  GALLERY  Attn:RR  Quote
11-10-2003 02:59 PM  13 years agoPost 56
w.pasman

rrElite Veteran

Netherlands

My Posts: All  Forum  Topic

Frederic

I indeed do remember quite large jumps from the latency measurements, therefore I mentioned values up to 512 in my example. Thus I think Angelos' maximum jump of around 30 is too low, and your 88 is better. Sure that's the maximum? Might there be more bits involved in this delta code?

PM  EMAIL  HOMEPAGE  GALLERY  Attn:RR  Quote
11-10-2003 03:03 PM  13 years agoPost 57
Angelos

rrKey Veteran

nr Oxford, OX11, UK

My Posts: All  Forum  Topic

w.pasman,
Angelos, I know this 'mathematical model' but it fits very badly to the points that Frederic found. Also are you sure you have TWO points represented by 8?
No, it fits perfectly with what Frederic found apart from the values that he measured wrong. Have a look at it again. It is easy.

The two points in the centre represent a small range where no differential correction takes place. Frederic already figure this out, so you can already work out what this range is.

-Angelos

PM  EMAIL  GALLERY  Attn:RR  Quote
11-10-2003 05:22 PM  13 years agoPost 58
w.pasman

rrElite Veteran

Netherlands

My Posts: All  Forum  Topic

Okay, so you suggest 0,4,8,16,28,44,64,88,116. I thought you were hinting at something else with your table So I hit it on the head saying that 36 more likely was 28

Can you check that Frederic?

PM  EMAIL  HOMEPAGE  GALLERY  Attn:RR  Quote
11-10-2003 05:32 PM  13 years agoPost 59
w.pasman

rrElite Veteran

Netherlands

My Posts: All  Forum  Topic

Oh and also we need to check what happens in the middle. Is there a double 0 in the middle as Angelos suggests? That would be a painful waste with only 16 values available...

PM  EMAIL  HOMEPAGE  GALLERY  Attn:RR  Quote
11-10-2003 05:44 PM  13 years agoPost 60
Angelos

rrKey Veteran

nr Oxford, OX11, UK

My Posts: All  Forum  Topic

w.pasman,
no, the double is only on the transmitter side to create a small gap where no differential correction is sent. If you make small changes on the position you will notice that the diff value remains 0x08. Basically on the TX side you divide the difference by 4 and then look up on the table to see which 4-bit number you send out. Possible values are only 0x01 to 0x0F so the receiver has a 15 element lookup table.

PM  EMAIL  GALLERY  Attn:RR  Quote
WATCH
 5 pages [ <<    <     1      2     ( 3 )     4      5     NEXT    >> ] 34718 views POST REPLY
Scorpion Power Scorpion Power
HelicopterRadio - Servo - Gyro - Gov - Batt › Decoding Futaba PCM 1024Z
 Print TOPIC  Make Suggestion 

 7  Topic Subscribe

Wednesday, October 18 - 10:24 am - Copyright © 2000-2017 RunRyder   EMAILEnable Cookies

Login Here
 New Subscriptions 
 Buddies Online