One of my good friends suggested I make a device to automate the lifting and lowering of the plow blade on his ATV (and mine). Most ATV plows use the winch attached to the front of the vehicle that lifts (pull in) and lowers (let out) the plow. To control the winch there is usually a three position rocker switch installed onto the handle bar. In the case of my Honda Rancher four-wheeler, the same hand is used to shift gears as is used to lift and lower the plow. This causes a delay in productivity when doing multiple passes, as you either have to shift and then adjust the plow or vise versa. I know… I know… does it really need to be done? Well no maybe not, but it is an interesting project that would deal with some different aspects of engineering than I am used to.
I decided to do a little project planning to come up with some design basics.
- Lift control
- Time based control – no need for blade position sensing
- Variable timing control using a potentiometer
- Fail safe to prevent “doubled up” commanded position change (no up twice, etc.)
- Start-up protection to prevent accidental movement
- Remote control head on handle bars with up, down, timing adjustment, and display
- Relay board mounted near existing solenoid box
- Ignition power control (device is powered on only when ATV ignition is on)
- 12VDC powered
Planning
I have designed PCBs in the past, but for this application I wanted something flexible, compact, and pre-equipped with a 12VDC to 5VDC buck converter. Not wanting to spend a large amount of time designing it, I decided for a pre-made option. I needed at least two relays on a board and preferred to use my old faithful ESP8266 MCU (micro controller unit). This took a little digging and finally I arrived at a solid choice. One main benefit of this particular board, which I did not realize till after I got it, was the fact the relays are not tied to any two particular GPIOs – rather they can be married to any of them by use of GPIO jumpers.

While I waited for boards to arrive, I got to work on the control head. As I always seem to have an endless supply of ESP8266 NodeMCUs laying around, I figured I could get the sketch (program that is uploaded to the ESP8266) built and tested. A quick dig through the supply drawer yielded some momentary SPST push buttons – OK good there are my raise and lowering buttons. For a screen I had some .96″ OLED displays. For a POT… well I have a lot laying around.
I wrote a sketch that contained all the required aspects that the program would need to achieve my goals. While I was doing that, I got to work printing a simple handle bar mount for the buttons. I then got to work wiring up the first prototype.

At this point, I constructed a better handle bar controller – lets call it version 2.0. This had space for the screen, but did away with the mounting bracket (I decided on a different mounting route – which we will get to in a bit). When the device first boots, it enters a standby mode. I did not want it to go active unless it was needed. It is planned to get its power from the ignition circuit, which means if the ATV is on, the controller is on. I wrote the sketch so when it boots, both the “up” and “down” buttons would have to be pressed simultaneously to enter “ready mode.”



Whats with the plastic tape? Well I wanted the screen to sit there but be removable for the time being. At this point of the game, I had not devised a good clear shield for the OLED display. As you can see in the third picture the controller does not know the the current state of the plow and the timing for the winch is at .03 seconds. Rotating the potentiometer will raise the timing.
After much contemplation I decided on a screen shield for the controller…. a pringles lid. I know, it is not the greatest choice. But it is a clear plastic lid, amazingly clear in fact.

At this point, I had decided on a commercial handle bar mount that the control head would mount to. So I finished the design for the control head and printed it off.

I installed the components and sealed the screen with liquid tape. This did not turn out as well as I hoped, but this was version 1 and I just rolled with it.


I decided to use CAT6 cable to connect the control head with the logic/relay board. I did not want to use an RJ45 type connector and instead went with a round 8 PIN din connector.
The pin out on the connector is as follows:


I made the cable and left one end equipped with GPIO female ends for the time being. I mounted the control head to the handle bar mount and tested it.


It worked as I designed it to on the bench. So I quickly made up a box to hold the logic/relay board and got to work on that. The pin out at the logic/relay board is:

I suppose I should take a moment to explain what the particular pins are:
1 (IO04) and (IO05) are used for the SDA and SCL (Inter-Integrated Circuit (I2C) Protocol) for the screen.
3 (IO02) and 6 (IO01) are used for digital read of the push button controls.
4 is a ground line, which supplies the push buttons, the screen and the pot.
7 is 3VDC to power the screen.
8 is 5VDC for the pot’s supply.

The stock winch controller is a simple 3 position switch that simply directs the power to the correct solenoid, which in turn routes the higher amperage 12VDC lines to the winch to control the direction of rotation of the winch. I made two harnesses and equipped them with butt connectors. The factory wires had the same butt connectors on it so it was fairly easy to get the relays from my board in line with the existing controls.


That was it for the bench portion of the project. It was time to get it installed and working on the ATV. A simple polarity test was all that was needed to figure out which line was up and which was down while operating the stock controller on the ATV. The new controller worked great on the bench, so it should work great once I get it installed…. well no that would have been too easy….

Hey doesn’t that look great on there? Well the mount for the logic box didn’t turn out as pretty. Remember too it isn’t waterproof.

Nothing a little zip lock would not fix, at least for the first few trials. So now that it was all hooked up it was time to try it out.
I set the timer at a very low setting, about 750ms as I did not want to risk snapping the winch cable. I pushed the up button and up it went, the controller locked up and it snapped the cable. Well damn, what happened there? So I started messing with it more…. the down movement worked fine and the up worked without a load, well kinda. Low voltage? Well lets switch out the battery on the ATV. Nope that did not fix it.
So back to the drawing board, well at least time for some serious thought. The solution I came up with was providing the board with its own power supply line from the battery, instead of using the the line that also supplied the power for the relay outputs. This solved the issue. When I originally thought up the design, I did not expect the draw the amount of current when operating the solenoids on the winch controller. After that it has been smooth sailing. Eventually I am going to get it in line with the ignition circuit, until then the trick is remembering to unplug the darn thing.