0
\$\begingroup\$

I have been working on a treadmill project whereby my aim is to manually control the treadmill with an Srduino without using the remote.

Info about the treadmill - The treadmill is just a normal walking pad. It has a 2hp PMDC motor which is controlled by a MC2 V3.1 motor driver/controller (whatever you like to call it.) The motor driver is connected to a display board which is a separate PCB which takes in IR signals from the remote of the treadmill.

I have not found a datasheet for the motor driver or the display board PCB. On the display board PCB, there are 4 pins which are connected directly to the motor driver. They are GND, VCC(10.8V), REV, SEND. After some investigation with a multimeter and oscilloscope, the Rev is the received signal from the driver and Send is the signal sent by our display PCB. I want to replicate this Send signal with my Arduino.

My issue - I have attached original and annotated images of the signal on the Send pin. It looks like async serial data. I have checked with oscilloscope cursors and the smallest bit is 1.6ms wide. The slightly bigger one is 3.2ms and all of the high and low are either this 1.6ms bit or 3.2ms (2 bits.) The signal I am getting on scope is inverted as I can see a small inverter on the PCB. The start bit is 1 and stop bit is 0. Now as I start counting the bits I am not getting a consistent 8 bit data (in between the start and stop bits are either both zero or one.) Even if I consider a 7 bit data then the next problem is when I increase the speed of the treadmill, the signal changes and the start and stop bits again are equal (which shouldn't be.)

I can't afford a logic analyzer so I am manually trying to decode it. My scope doesn't have the decode feature. Please help me decode this signal.

original image of the signal

Annotated image

\$\endgroup\$
2
  • 3
    \$\begingroup\$ Looks to me like an RZ (Return to Zero) code. The data might be encoded in the length of the pulses (or pauses). Many optical transmission (like IrDA or TV remote controls) use such codes. \$\endgroup\$
    – kruemi
    Commented Jun 19 at 6:26
  • \$\begingroup\$ Appears to be some form of pulse-width modulated code, where the falling edge indicates the end of each bit (useful for clock recovery). If you split the packet up on every falling edge, you essentially have two transmitted symbols are basically 001 and 011, which probably represent 0 and 1 respectively (but could be inverted). \$\endgroup\$ Commented Jun 19 at 16:20

0

Browse other questions tagged or ask your own question.