I am trying to reverse engineer a torque sensor. I have found the two data lines that are providing the torque value output to the ECU. Here are the waveforms that I have captured that show max. counter clockwise torque, zero torque, and max. clockwise torque respectively.

Max Counter Clockwise Toruqe

0 Torque Applied

Max Clockwise Torque

When I adjust the applied torque to the sensor, I can see the last 5 pulses vary in width. It also appears to be adjusting the width of these pulses with the last pulse being the least significant bit (pulse?).

I have done some research online and found that Bosch uses something called a PAS (Pulse Averaging System) interface in their torque sensors, but can't find much information on it.

Can anyone identify this specific protocol, and define exactly how it works? How would I turn these pulses into a human readable value?

  • 2
    \$\begingroup\$ Can you edit your post to ask a more specific question? It is very open-ended to ask if anyone has "come across this protocol before". What exactly are you looking for help with? \$\endgroup\$
    – InBedded16
    Feb 9 at 19:02
  • 1
    \$\begingroup\$ Why not telling/showing us which torque sensor you speak about? \$\endgroup\$
    – datenheim
    Feb 9 at 20:17
  • 1
    \$\begingroup\$ You likey need to program a CPU (such as an Ardiuno) to decode and display these pulses in a "human readable" way. Your first move should be to contact Bosch and just ask them. You never know, they might be forthcoming with technical detail for you. Worst case they tell you go pound salt.... \$\endgroup\$
    – Kyle B
    Feb 9 at 20:51

1 Answer 1


I do not know much about PAS. However, it seems to me that if you can use a microcontroller to detect the edges of these pulses, there are a couple ways you could go about this. One line has three longer pulses if there is clockwise torque, the other has longer pulses if there is counter clockwise torque, and they are the same if there is no torque. You could do something like: 1) watch for the first falling edge, indicating incoming data; 2) record each following rising edge, indicating the start of each pulse; 3) using an internal (or external) timer, compare the timestamp of the last - or the 8th - rising edge on each line. The time between them will correspond to the pulse width differences, which corresponds to the torque direction/value. It would take some trial and error to map those values accurately, but certainly doable.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.