Improved control of proportional solenoids. Addition of oscillations and asymmetric displacement.

I’ve been working with electrohydraulic valves for a long time and have thoughts on improving the control code.
I found out that in the controllers used by commercial companies there is an additional function that causes the slider to vibrate so as to avoid resting friction, i.e. sticking of the fixed slider, which requires more force to move it, and is the cause of uneven work. So it is solved in such a way that the slider has minimal vibrations all the time and never stands still. I think it would be nice to try adding something like this to the control code.
Another problem sometimes is the lack of symmetrical valve operation in both directions, i.e. to the left, less PWM is enough than to the right to obtain a satisfactory wheel movement. It would be nice to have a control that would allow you to add a bit more gain to just one side or the other.
I know that these are not simple modifications, but the topic is for consideration.


Yes, adding dither might help especially with large direct-drive valves. Basically it’s a secondary frequency added on top of the “main” PWM signal. You can get the same effect with a low enough PWM frequency as well, but that’s of course just a dirty way to do it.

1 Like

Maybe this is something

1 Like

I played around with the ino code a bit and tested different frequencies. 122hz seems to work fine.
At 30hz you can hear a clear pulsation and feel the vibrations of the hydraulic system, although the control is working properly.
I have no idea how to solve the gain shift more to the right or left in the code. But I have found that asymmetry can cause the valves to be vertically oriented and the gravity force acting in one direction on the spool. For now, I will try to mount the valve horizontally.

I tried also a few different frequency’s and with 3921 hz (or something like that, don’t know the exact number) it’s reacting way more smooth then the standard or lower freq’s

The asymmetry could be maybe solved in the ino code by scaling the final PWM value with a factor just before you write out the PWM command?

What I’m thinking to try out during the winter is to add current control. A current sensing circuit into the solenoids and then a PID controller to control the PWM value. THe AOG would give directly a current value for the valve, so that you’d get rid of temperature dependence of the coil etc. as the spool displacement should be proportional to the current.


We were discussing this in another thread, I forget which one now, I actually got as far as buying some components for monitoring current control on i2c, as you are 100% right, the real best way to do it is with current control, so there is always good control. But never got the time yet to spend more time on the project!

1 Like

I second for the currant control.

in this tread beginning around post no 20 there is some current stuff, with a great pdf at post 23:

I don’t know what you think, but we could use the cytron with a hz output similar to the required dither and use a rectifier filter of the type (Placa de alimentación de filtro rectificador 8A con indicador LED rojo, alimentación única de CA a CC, placa de fuente única|Circuitos integrados| - AliExpress .420437adLi2pvO & algo_pvid = 43df2b1b-4e7f-4708-a2fa-3b3f859d5533 & algo_expid = 43df2b1b-4e7f-4708-a2fa-3b3f859d5533-40 & btsid = 2100bdca16121184156546928e7c58 & ws_ab_test = searchweb0_0, searchweb201602_, searchweb201603_) for converting digital signal to logic signal, change the condenser by another of smaller capacity for that the filtering is not perfect and we will have a logical signal but with the residual ripple similar to the dither.

Has anyone wrote a ino with different gain for left and right? I think my tractor would benefit greatly from this, as there seems to be quite a difference in the pwm required to move the left vs right solenoids. Surely it wouldn’t be to hard to add some lines of code to the ino that would do this?

I hard coded that into a modified Arduino sketch for my windshield wiper motor after testing the min/max for both directions. Would be handy to have those options in AoG.

If it is the screw in type valve with both solenoids at one end, then I remember reading that you can get shims to put under the solenoids to adjust A and B output

I think I might have to try hard coding it. I wonder how many people a setting like this would benefit? Our tractor is very obvious when you watch the steer chart. I simply can’t get it to follow the set point very good steering left, but steering right it follows almost perfectly!

That’s an idea, but it almost seems easier to adjust it in the ino, rather than adjusting how many shims.

I would like that option also for our sprayer and my swinging draw bar planter steering where our steering cylinders are not symmetrical either.