Recreate inductive crank/cam sensor wave

I am trying to recreate signals generated by inductive sensors on a truck engine. The problem is they are not pure analogue waves and they operate at much higher voltage than what the arduino can create +/- 50V (depending on engine speed). I have attached an image of the waveforms I need to recreate. Firstly can this wave or similar waveform be created by arduino and secondly how would I step up the 5V signal to 50V?

Any help would be greatly appreciated :smiley:

you could use the arduino to drive a motor, to which you connect, manually to your 50v sensor proper calibration you could dial in your required speed/frequency

I don't understand what you really have in mind. As long as you want to "read" the sensor signals, a voltage divider/limiter would be sufficient.

When you want to feed your own signals into the engine, instead of the sensor signals, you have to know more about the actuators you attach to, i.e. the load and characteristics of those inputs. What's their resistance, is it complex (capacitive, inductive), what are the trigger types and levels, what's the required timing...

I don't think that the waveforms are critical, their (measured) shape depends on the source (sensor) and sink (actuator) characteristics. When you send digital pulses from the Arduino into an transformer, the output voltage will look much like in your figure. But when you connect the transformer output to the motor, the signal most probably will break down to something quite different. Then you'll have to add a driver stage before the transformer, that supplies the required current as well.

DrDiettrich: I don't understand what you really have in mind. As long as you want to "read" the sensor signals, a voltage divider/limiter would be sufficient.

When you want to feed your own signals into the engine, instead of the sensor signals, you have to know more about the actuators you attach to, i.e. the load and characteristics of those inputs. What's their resistance, is it complex (capacitive, inductive), what are the trigger types and levels, what's the required timing...

I don't think that the waveforms are critical, their (measured) shape depends on the source (sensor) and sink (actuator) characteristics. When you send digital pulses from the Arduino into an transformer, the output voltage will look much like in your figure. But when you connect the transformer output to the motor, the signal most probably will break down to something quite different. Then you'll have to add a driver stage before the transformer, that supplies the required current as well.

Quite right I need to recreate a signal to drive/trigger an ECU for an engine. I need to be able to test the ECU on a bench and without the correct cam and crank signal input this is not possible. The inductive crank sensor runs along the flywheel which has 36 evenly spaced notches + 1 notch to indicate TDC. The cam sensor picks up 12 evenly spaced peaks + 1 to indicate TDC. The ECU will read this signal and convert it from an analog signal to a digital one.

If i want to achieve an engine speed of 600RPM then I will need to programme arduino to send pulses at 360 Htz + 1. In other words one pulse every 10 degrees of engine rotation as well as one extra pulse at 355 degrees.

How would I write this code?

I am considering using something like the LM2577 DC-DC Adjustable Step-up Power Converter Module which will convert the 5V DC up to 35V DC which should be sufficient to power the ECU. I am not sure on the current requirements but will take some measurements next week. My only concern is if the ECU will recognise the generated wave and be able to trigger off it.

Normally you would take the inductive waveform from the sensor and run it through a VR Conditioner such as a MAX9926 or LM1815 and then passing the 5v square wave they output onto the ECU. Unless you're trying to create a VR conditioner yourself, I would strongly suggest using an existing IC for this task as they are quite complex to get right in terms of noise tolerance etc.

If you just want to simulate the square wave version of a signal such as this (Which practically every aftermarket ECU would accept), check out Ardustim (https://gitlab.com/libreems-suite/ardu-stim), it does exactly what you're after.