Test index of rotary encoder with hal only

More
7 years 3 weeks ago #147568 by PCW
Yes, maybe there some unexpected feedback/latchup issue because of the delays
You might play a bit with the thread order or might need a oneshot component for reset

Plotting hm2_7i92.0.encoder.00.index-enable would probably give some
better insight into whats happening

Please Log in to join the conversation.

More
7 years 3 weeks ago #147570 by JC10
Here you go, records #1a and #2a taken in the same conditions.

On both records, we can observe that index-enable is well set to 1 from the beginning of the record.

I assume it can not be observed going to 0 because of the hal code where : before running the code it is 0 but after running the code it is 1.

I assume that halscope gathers the shown data at the end of each cycle.

index-enable is almost always set to 1 so the signal "reset" should be 0 almost aways but it is 1 that i don't understand...

Please Log in to join the conversation.

More
7 years 2 weeks ago #147798 by JC10
Trying many things I figured out that the records were identical rotating or not the shaft of the rotary encoder...

So definitely the code working on the paper does not work. I suspect that HAL does not like to have an io pin read and written in a same cycle.

So I decided to find a workaround and found one by reading the hal manual about encoder.

I looked for a consequence of the index being triggered to rearm index-enable a bit later.

I found that counts were set to 0 when index triggered. (Makes sense because that is a purpose of an index in case of homing) and used it as follow :

Code:
loadrt hostmot2 loadrt hm2_eth board_ip="10.10.10.10" config=" num_encoders=1 num_pwmgens=0 num_stepgens=0 sserial_port_0=0000xx" loadrt threads name1=servo-thread period1=500000 loadrt wcomp loadrt not loadrt conv_s32_float loadrt tristate_bit loadrt updown addf hm2_7i92.0.read servo-thread addf conv-s32-float.0 servo-thread addf wcomp.0 servo-thread addf not.0 servo-thread addf tristate-bit.0 servo-thread addf updown.0 servo-thread addf hm2_7i92.0.write servo-thread setp tristate-bit.0.in 1 setp wcomp.0.min -100 setp wcomp.0.max 100 net s32_count hm2_7i92.0.encoder.00.count conv-s32-float.0.in net count conv-s32-float.0.out wcomp.0.in net in_min_max wcomp.0.out not.0.in net reset not.0.out tristate-bit.0.enable net enable tristate-bit.0.out hm2_7i92.0.encoder.00.index-enable updown.0.countup start loadusr halscope loadusr halmeter

And the plot in attachment.

Thanks to PCW that put me on track.

Please Log in to join the conversation.

Time to create page: 0.042 seconds
Powered by Kunena Forum