need serial pulse coder info


Page 1 of 5 1234 ... LastLast
Results 1 to 12 of 53

Thread: need serial pulse coder info

  1. #1
    Registered
    Join Date
    Mar 2004
    Location
    St. Louis, MO
    Posts
    352
    Downloads
    0
    Uploads
    0

    Default need serial pulse coder info

    Hi, I have made a converter for the original red cap pulse coder. But, now I'd like to make a converter for the serial pulse coder as well. I can't fine even the most basic info like pinout for these. Does anyone have info, at least the pinout, but if you have any more details like the serial format or what the control sends to make the encoder transmit the position, I'd be very grateful!

    These motors have the Alpha A64 or Serial Pulse Coder A encoder.

    Thanks,

    Jon

    Similar Threads:


  2. #2
    Registered tc429's Avatar
    Join Date
    Feb 2011
    Location
    USA
    Posts
    624
    Downloads
    0
    Uploads
    0

    Default

    good luck...I tried years ago (no expert by ANY means) and gave up...Ive got a rough timing chart I made up, could only figure out about 1/3 of it...the oddities are its like 77 bits at 100k baudrate, so you need a high speed I/O card, and the resolution changes depending on RPM...a million counts at low speed, 2048 at max rpm...oddly the disk is a 2048 line- I still wonder if the high resolution is all a advertising gimmick or something...it must be interpolating analog scaled transitions of the a/b channel, seems fishy to me...but they work, so whatever...

    I'd just wanted to make up a 'led box' like Ive had for the old dc/ac servos to show quadrature and rotor position for timing encoders on alphas that were rewound, or motors that had the encoder key coupler pulled to replace motor bearings...

    in the end I pulled a board off a red encoder, simply put timing marks on the disk to show 'timed' and rotation verification positions when teasing the windings with a battery...its crude, but works
    + on A, - on B+C times it, unhook C, hit again and shaft should go ccw...I went round and round with a motor guy once over WHY these motors must have windings/rotation in a specific pattern...

    what sucks, I'd made up a box that plugged into 110 to jog servos(made it for folding big robots up in storage building so they would fit in new elevator), but without commutation, couldnt use it on the serial encoder S420 models...worked fine on anything incremental...had started to modify a cordless drill to run incremental AC servos too- a simple transistor array and one gate chip was all that was needed to run the motor from the drill battery/speed 'trigger' control, but like many other projects, never finished it up...without a way to handle serial encoders, it was a moot point...



  3. #3
    Registered
    Join Date
    Jan 2007
    Location
    USA
    Posts
    83
    Downloads
    0
    Uploads
    0

    Default

    It would also be interesting to know the difference (if any) between the Serial Pulse Coder A/B/C series and alphaI64, alphaA64 and alphaA1000 encoders. They seem to have the same interface.



  4. #4
    Registered
    Join Date
    Mar 2004
    Location
    St. Louis, MO
    Posts
    352
    Downloads
    0
    Uploads
    0

    Default

    Quote Originally Posted by tc429 View Post
    good luck...I tried years ago (no expert by ANY means) and gave up...Ive got a rough timing chart I made up, could only figure out about 1/3 of it...the oddities are its like 77 bits at 100k baudrate, so you need a high speed I/O card, and the resolution changes depending on RPM...a million counts at low speed, 2048 at max rpm...oddly the disk is a 2048 line- I still wonder if the high resolution is all a advertising gimmick or something...it must be interpolating analog scaled transitions of the a/b channel, seems fishy to me...but they work, so whatever...
    WOW! That is very good to hear, could you possibly send me what info you did figure out?
    My main question is what you have to send on the REQ lines to make the encoder send back the report. Yes, the million count/rev encoder has to be interpolating.

    I have a logic analyzer here, so it would be no problem to capture the entire stream and decipher it.

    Actually, if I could just get the 2048 cycle/rev data and the commutation codes I'd be pretty happy.
    That would allow me to use the motors in traditional CNC applications. 2048 * 4 (quadrature) * 5 (TPI) = 40960 counts/inch.

    Thanks,

    Jon



  5. #5
    Registered ulihuber's Avatar
    Join Date
    Nov 2005
    Location
    germany
    Posts
    104
    Downloads
    3
    Uploads
    0

    Default

    Jon,

    I started to analyze the protocol of the 1000 series pulsecoder a few years ago.
    The serial protocol is carried over RS422 and can be stimulated by a simple sequence. I programmed an AVR processor to receive the information and output it for analysis to the serial port of the PC.
    Then I imported the data to Excel and tried to find the secret of the protocol. But it is not straight forward binary, there is a sort of redundancy in the code I was unable to resolve. So it works to see the incremented data, but there are 'jumps' I could not get rid of.

    If you wanted to, I'd give you all sampled data and the AVR assembler program for further work. This with the assumption, that the outcome will be published as well.

    What I do not have readily available is the circuitry I built in these days. It was purely experimental and not really documented. But it was simple, just a MAXIM chip for providing the RS422 levels.

    Best regards
    Uli



  6. #6
    Registered
    Join Date
    Jan 2007
    Location
    USA
    Posts
    83
    Downloads
    0
    Uploads
    0

    Default

    Uli -
    Is it possible that the jumps you observed were the commutation codes? Commutation information does have to be encoded in the stream or the motor could not be driven!



  7. #7
    Registered ulihuber's Avatar
    Join Date
    Nov 2005
    Location
    germany
    Posts
    104
    Downloads
    3
    Uploads
    0

    Default

    Bruce,

    shure it is possible - who knows... ;-)

    This a snipped from the telegrams from a slowly turned Pulsecoder:
    UHU Pulse(de)coder 0.9 (c) Snr: 1
    0111001001011001110010100000000000100000000000000000100000011111000001011101111
    0101001001011001110010100000000000100000000000000000100000011111000011110111111
    0101001001011001110010100000000000100000000000000000100000011111000011110111111
    0101001001011001110010100000000000100000000000000000100000011111000011110111111
    0101001001011001110010100000000000100000000000000000100000011111000011110111111
    0101001001011001110010100000000000100000000000000000100000011111000001110111111
    0101001001011001110010100000000000100000000000000000100000011111000001110111111
    0101001001001001110010100000000000100000000000000000100000011111000001100001111
    0101001001011001110010100000000000100000000000000000100000011111000001110111111
    0101001001011001110010100000000000100000000000000000100000011111000001110111111
    0101001001011001110010100000000000100000000000000000100000011111000001110111111
    0101001001011001110010100000000000100000000000000000100000011111000001110111111
    0101001001011001110010100000000000100000000000000000100000011111000001110111111
    0101001001011001110010100000000000100000000000000000100000011111000001110111111
    0101001001011001110010100000000000100000000000000000100000011111000001110111111
    0101001001011001110010100000000000100000000000000000100000011111000011110111111
    0101001001011001110010100000000000100000000000000000100000011111000011110111111
    0101001001000101110010100000000000100000000000000000100000011111000011010001111
    0101001001001001110010100000000000100000000000000000100000011111000011100001111
    0101001001011001110010100000000000100000000000000000100000011111000011110111111
    0101001001011001110010100000000000100000000000000000100000011111000011110111111
    0101001001011001110010100000000000100000000000000000100000011111000001110111111
    0101001001011001110010100000000000100000000000000000100000011111000001110111111
    0101001001011001110010100000000000100000000000000000100000011111000001110111111
    0101001001000101110010100000000000100000000000000000100000011111000001100001111
    0101001001011001110010100000000000100000000000000000100000011111000001110111111
    0101001001001000010110100000000000100000000000000000100000011111000001100011111
    0101001001001000110100100000000000100000000000000000100000011111000001101011111
    0101001001011010110010100000000000100000000000000000100000011111000001111011111
    0101001001000110110010100000000000100000000000000000100000011111000001101101111
    0101001001011010110010100000000000100000000000000000100000011111000001111011111
    0101001001000111010010100000000000100000000000000000100000011111000001101011111
    0101001001000010110110100000000000100000000000000000100000011111000001111001111
    0101001001001100110010110000000000100000000000000000101000011111000001100101111
    0101001001000101010100100101000000100000000000000000100010111111000001101001111
    0101001001011000110100011111000000100000000000000000100111111111000001000011111
    0101001001011100110100010110100000100000000000000000101111111111000001000001111
    0101001001011000110011100101100000100000000000000000101100000000000001000101111
    0101001001000100010110000111000000100000000000000000100101000000000001110001111
    0101001001001100010010101010000000100000000000000000101001100000000001110101111
    0101001001010101010111011001000000100000000000000000101000010000000001001011111
    0101001001000001110101111000100000100000000000000000100100110000000001111111111
    0101001001010010010010110110100000100000000000000000100011110000000001111101111
    0101001001001101110100011011100000100000000000000000101101001000000001100101111
    0101001001011110110111100110000000100000000000000000101011101000000001110111111
    0101001001011110110101100001000000100000000000000000101000011000000001101011111
    0101001001011111110011101011000000100000000000000000101101011000000001111111111
    0101001001000011110011001000100000100000000000000000100100111000000001110011111
    0101001001000011010011111110100000100000000000000000101111111000000001110011111
    0101001001011100010111110000010000100000000000000000101000100100000001101011111
    0101001001010111010010110110010000100000000000000000101011100100000001111111111
    0101001001011110110101111001010000100000000000000000101100010100000001100111111
    0101001001010101110100101111010000100000000000000000100111010100000001101111111
    0101001001010100110010110001110000100000000000000000100100001100000001111011111
    0101001001001100110110000111110000100000000000000000100001001100000011001101111
    0101001001011010110010100000001000100000000000000000101000101100000011010011111

    This is a screencopy of the Excel decode:
    need serial pulse coder info-pulsecoder-jpg
    Non-linearity is here a un-uniform movement. I am sure I was unable to twist the shaft in a 1/1000.000 precision....

    Best regards
    Uli



  8. #8
    Registered tc429's Avatar
    Join Date
    Feb 2011
    Location
    USA
    Posts
    624
    Downloads
    0
    Uploads
    0

    Default

    my notes are so scribbled up, I'll type them in so they are somewhat readable...this was from '97, so I cant recall any more than what my notes were... it was caught just with a scopemeter, wasnt sync'd right, so...

    serial C advertised at 40,000 counts- but uses a 2000 line disk
    alpha 64 advertised 65,536 counts, but has a 2048 line disk.

    as for the pattern I got off the serial C:

    request= '255' sent from control
    111111110000---- (dont know why I had the last 4 blank)

    word1
    1111111111111111

    word2
    1*******-------- *= binary count of pulses since last update?

    word3
    1*******-------- *= binary count of lead/lag pulses @ 1 rev marker?

    word4
    *********x111101 x= 0 at one rev marker *=?

    word5
    *****00000000000 *=?


    ____________________________________________________________

    second page of scribbled notes-

    rotor position serial C:

    1 2 4 8-------ccw----- ------cw-----
    0 0 0 0 - 111111 000 - 000000 000
    1 0 0 0 - 111111 100 - 000000 100
    1 1 0 0 - 111111 010 - 000000 010
    0 1 0 0 - 111111 110 - 000000 110
    0 1 1 0 - 111111 001 - 000000 001
    1 1 1 0 - 111111 101 - 000000 101
    1 0 1 0 - 111111 011 - 000000 011
    0 0 1 0 - 111111 000 - 000000 000
    0 0 1 1 - 111111 000 - 000000 000 (note- same as prior?)
    1 0 1 1 - 000000 100 - 000000 100
    1 0 1 1 - 111111 100 - 111111 100 <one rev marker here>
    1 1 1 1 - 000000 010 - 000000 010
    0 1 1 1 - 111110 010 - 000000 010
    0 1 1 1 - 111111 110 - 000000 001 changed w/o 1-2-4-8 shift?
    0 1 1 1 - 111111 001 - 000000 001
    0 1 0 1 - 111111 110 - 000000 110
    1 1 0 1 - 111111 010 - 000000 010
    1 0 0 1 - 111111 100 - 000000 100
    0 0 0 1 - 111111 000 - 000000 000

    the above pattern is 1/4 of a revolution, and repeats...

    again, bad notes...think the above patterns were in the 'word 4'

    this jibberish is probably just that...sorry, but its all I kept



  9. #9
    Registered
    Join Date
    Mar 2004
    Location
    St. Louis, MO
    Posts
    352
    Downloads
    0
    Uploads
    0

    Default

    Quote Originally Posted by ulihuber View Post
    Jon,

    I started to analyze the protocol of the 1000 series pulsecoder a few years ago.
    The serial protocol is carried over RS422 and can be stimulated by a simple sequence. I programmed an AVR processor to receive the information and output it for analysis to the serial port of the PC.
    Then I imported the data to Excel and tried to find the secret of the protocol. But it is not straight forward binary, there is a sort of redundancy in the code I was unable to resolve. So it works to see the incremented data, but there are 'jumps' I could not get rid of.

    If you wanted to, I'd give you all sampled data and the AVR assembler program for further work. This with the assumption, that the outcome will be published as well.

    What I do not have readily available is the circuitry I built in these days. It was purely experimental and not really documented. But it was simple, just a MAXIM chip for providing the RS422 levels.

    Best regards
    Uli
    I think I can figure out the circuit, in fact I can probably use my Fanuc converter that has 8 differential inputs and 8 differential outputs and a CPLD. The most important thing is what signal must be sent to make the encoder send a message. It is a 255, you say? I did a stripped-down UART in a CPLD for the Panasonic encoder converter, so I just need to expand it to 77 data bits.
    Hmmm, a 77-bit serial word has a lot more critical clock timing requirements than an 8-bit word.

    Thanks, Uli and tc429, this might be enough to get me going.

    Jon



  10. #10
    Registered ulihuber's Avatar
    Join Date
    Nov 2005
    Location
    germany
    Posts
    104
    Downloads
    3
    Uploads
    0

    Default

    Jon,

    here it shows again, that even small projects should be well documented - which I didn't ... :-(

    Just my sequence for starting a position telegram on an Attiny2313 (20MHz)with some remarks I tried to do now:

    GetPos:
    sbi portd,4 'set direction of data RS422

    rcall BitAus100 'output low bit and wait for a bit length
    rcall BitAus100
    rcall BitAn100 ' output high bit and wait for a bit length
    rcall BitAn100
    rcall BitAn100
    rcall BitAn100
    rcall BitAn100
    rcall BitAn100
    rcall BitAn100
    rcall BitAn100
    rcall BitAus100

    cbi portd,4 'switch RS422 to receive

    ldi _bcnt,SampleLen ' 85
    ldiw Y, SampleBuf

    Sync1: sbic pinb,0 ' Wait for start of telegram (no idea what was behind this...)
    rjmp sync1
    Sync2: sbic pinb,0
    rjmp sync2
    Sync3: sbic pinb,0
    rjmp sync3

    tc0_bitloop:
    rcall getBit
    dec _bcnt
    brne tc0_bitloop

    ldi _bcnt,SampleLen
    ldiw Y, SampleBuf
    tc0_outLoop:
    rcall setBit
    dec _bcnt
    brne tc0_outloop
    rjmp main



    .
    .
    .
    ;------------------------------------------------;
    ; Bit 1 senden
    BitAn100:
    sbi portd,5
    ldi _univ1,3
    BitAn100_1:
    dec _univ1
    brne BitAn100_1
    nop
    nop
    ret


    ;------------------------------------------------;
    ; Bit 1 senden

    BitAus100:
    cbi portd,5
    ldi _univ1,3
    BitAus100_1:
    dec _univ1
    brne BitAus100_1
    nop
    nop
    ret




    ;----------------------------------------------------------;
    ; getBit
    getBit:
    nop
    in _univ2,pinb
    st Y+, _univ2
    lsl _univ2
    out portb,_univ2
    nop
    nop
    nop
    nop
    ret


    ;----------------------------------------------------------;
    ; setBit
    setBit:

    ld _univ2, Y+
    andi _univ2, 0b0000001
    lsl _univ2
    out portb,_univ2
    nop
    nop
    nop
    nop
    nop
    ret


    The delays are critical as you may see with the NOPs.
    Outloop was for test purpose only.
    Sorry, all this was just experimental code, uncommented and on the fly. I don't have the time to rework it by now, but maybe it helps anyway.

    Uli



  11. #11
    Registered
    Join Date
    Mar 2004
    Location
    St. Louis, MO
    Posts
    352
    Downloads
    0
    Uploads
    0

    Default

    Quote Originally Posted by ulihuber View Post
    Jon,
    What I do not have readily available is the circuitry I built in these days. It was purely experimental and not really documented. But it was simple, just a MAXIM chip for providing the RS422 levels.

    Uli
    Well, I got the motor today and tried to hook up the circuits to make it work. But, I couldn't get the encoder to produce any response. There are both +5 V and +6 V battery connections. I connected both to +5 V. Maybe that is the problem, it may need a real +6 V supply. I think I am providing a valid differential signal on REQ and REQ/, and am looking on SD. I see that SD is +3 V and SD/ is at ground, but they never change.

    So, do Uli or TC429 have any suggestions on power connections, signal characteristics, power sequencing or anything else that might be keeping this from working?

    Thanks,

    Jon



  12. #12
    Registered
    Join Date
    Mar 2004
    Location
    St. Louis, MO
    Posts
    352
    Downloads
    0
    Uploads
    0

    Default

    Quote Originally Posted by jmelson View Post
    Well, I got the motor today and tried to hook up the circuits to make it work.
    Ahh, I got it! The REQ pulse must be between 6.5 and 9.1 us wide, positive-going. Outside this range, the encoder gives no response. The bit rate appears to be 1 MBIT/second, not 100 KBits/sec. Looking at the data stream on the scope, it appears the data are repeated, but it looks like one set counts revolutions, and the other one might reset every revolution. (That would be handy for commutation.) There is something at the end of the string that may be a redundancy check character.

    OK, now I know I can read the data, and it looks a bit like the screen shot and dump from Uli Huber.

    The unit I have here is a 64K count/rev encoder, there likely are differences in the format for different resolutions.

    Thanks to all, now I need to code up a 77-bit UART in VHDL and figure out a way to read that data into a computer.

    Jon



Page 1 of 5 1234 ... LastLast

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  


About CNCzone.com

    We are the largest and most active discussion forum for manufacturing industry. The site is 100% free to join and use, so join today!

Follow us on


Our Brands

need serial pulse coder info
need serial pulse coder info