So I had a chance tonight to test out my motor driver "in the field":
I was a little hasty because of the cold (and because my camera's battery was dying), but I did collect some useful data. And a video!
So, as you can see above, I don't really have a case for my circuit yet. That will probably be my next order of business. To keep anything from shorting out, I temporarily sat it on the wiper fluid tank which is made of plastic.
I connected the power terminals directly to the battery and the motor terminals straight to the motor. I didn't bother connecting the car's wiper driver to the circuit because I was only interested to see whether or not my circuit would explode under pressure.
I was surprised to find that my motor connectors weren't quite the right size. The ones on the outer ends of the connector housing fit fine (after I crushed them a bit to ensure a snug fit), but the plastic insulator was too wide for the center connection. I had to attack it with a pair of wire cutters for a bit to get it to fit.
Because there's already so much insulation in place between the conductors on account of the shape of the plastic motor housing, I'll probably end up ditching the insulated quick connect terminals for the final version in favor of uninsulated ones.
I wrote a simple Python script that ran through various motor speed settings and recorded how fast the wipers moved. As you'll recall from my other post, two of the contacts on the motor make up the "parking switch. They are shorted together for about 90% of the wiper cycle and opened for the last 10%. When my circuit detects the short, it sends a simple byte command to my laptop over serial (the character 'a') and when the circuit is opened, it sends a 'b'. The yellow LED also blinks to indicate which state it's in.
Starting with the wipers in the parked position, the Python script started them at a specific speed setting and timed how long they spent with the switch open and closed by waiting for the bytes to come back from my circuit. After one cycle, it stopped them then started them again with a different speed setting.
My results are in the plot below. Time is on the Y axis and the X axis shows different speed settings. Keep in mind that the speed settings range from 2-255 where 255 is stopped and 2 is full speed. The red line shows how much time the wipers spent with the switch open and the blue line represents time spent with the switch closed. Adding the two up will give you the time of one complete cycle.
Ok, so it's not the best plot. My code was hastily written, and as soon as the wipers got too fast, the Python had trouble keeping up with them so the whole thing died at a speed of about 25.
Still though, it does show some interesting information. It looks like a sort of logarithmic growth as the wipers get slower and slower. Still though, I really need to do this again to see what happens at the faster settings, because as-is, I'm not even showing anything faster than 30BPM (less than 2 seconds per cycle).
I was definitely in a hurry to get this thing done tonight. It was uncomfortably cold outside, and my camera's battery was dying. I'll definitely have to go back and do it again some other time.
Still though, I captured all of the data I really needed. My circuit took the current draw like a champ and didn't even get warm. I'll have to spend some time cleaning it up and finding a nice case and mounting point for it before moving forward.
The next step is to get some better data in the >30BPM department. It looks like the setting/speed relationship is not linear, so I'll definitely need some accurate data to create a proper lookup table. I'll also have to see how a wet windshield changes things.
And here's the video. Sorry there isn't any audio. I had my camera configured wrong, and I didn't realize until it was too late.
Continue this story here.