Jump to content

Load Cell Data Acquisition Unit for Ballin'


DefectiveDave
 Share

Recommended Posts

  • Baller

I've been undertaking a project this winter which I thought I might share. This post is a bit lengthy, so there are videos at the end if you'd like to skip some of the details.

 

Right before Christmas a friend lent me their copy of the West Coast Slalom DVD and I thought it was a great video which made some really good points. I wanted to get out on the water and start trying some stuff out, but it was almost Christmas and everyone I know had already stopped skiing and winterized their boat (including myself). So here I was obsessing over skiing with no way to actually get out on the water, so I redirected my energy.

 

I really liked the section where they had measured the intermittent loads as Terry and Marcus had performed their various runs and I was curious what my own loads might be. It also seemed to me that load data could be a good quantitative metric to help judge my own performance run-to-run and to evaluate the effects of changes to my technique. So I started looking around to see if such a thing existed and found nothing which fit my criterion. I could either get a mechanical dynamometer for around $500-1000 and let someone monitor or video it, or I could get a commercial of the shelf (COTS) data acquisition (DAQ) unit with load cell and pay around $2000-2500. I didn't like the dynamometer while the COTS option was just way out of my budget and didn't do exactly what I wanted, so I decided to build my own.

 

I'd never done embedded systems before so I started out with the Arduino platform, which has a supportive hobbist community and lots of documentation. I needed a microcontroller, load cell, signal conditioner, data logger, and an LCD to interact with the device. The Arduino platform itself provides the microcontroller and I readily found available “shields” for Arduino which gave me a data logger and LCD. Shields are really just prepackaged electronics board which are designed to be easily attached to the Arduino boards. I was also able to track down a cheap $95 1000 lb (450 kg) s-type load cell and I built the signal conditioner myself. I packaged it all into a “water-proof” box which I hope will survive next season and beyond. Here is the final prototype including load cell:

 

550dda1428132dad277e422f437d58.jpg

 

I used a bayonet connector to make sure the load cell can be securely attached to the electronics box. I also only used two switches in the design, the first switch controls battery power (on-off) and the second functions as the sole input switch for the user interface (UI). The single UI switch was meant to keep things as simple as possible so I can focus on skiing and not fiddling with the data acquisition system. The 1000 lb load cell might be a bit of overkill, but I wanted that extra factor of safety in there just in case. Better too much capacity than too little. It still provides a resolution on the order of about 0.9 lb (0.4 kg), which is more than enough for my purposes. It's notable that the signal conditioning does slightly limit the range and in the end the device can capture loads from 0-900 lbs (0-410 kg). I also used 2x 18650 lithium ion batteries to provide enough juice for a full day of skiing (more on this later).

 

I did all the programming and software architecture myself, but I used several libraries available from the community to help expedite the process (sdFat, wire, and nilrtos). I made sure to store data to an SD card in comma separated value (CSV) format so that it would be easily readable and portable across systems. This also provided lots of space so I could record data for very long periods of time. However, the SD card also created plenty of lag in the system due to it's write latency and I was forced to implement a real time operating system (RTOS). For this purpose I used NilRTOS by Giovanni Di Sirio (the Arduino port was provided by Bill Greiman), which allowed me to easily deal with the latency of the SD write and better control time intervals between write operations (down to the microsecond). In the end I was able to get data acquisition rates of approximately 488 Hz using the Atmega 328 microcontroller in the Arduino Uno R3 while still performing some simple data processing to output calibrated loads rather than scale values. The Atmega 328 is an old 8-bit microcontroller which functions at 16 Mhz and has very limited memory, modern options such as the Cortex M4 platform would provide much higher data acquisition rates and allow for more comprehensive data processing.

 

The first thing I did after getting the system up and running was get an approximation of the battery life. The system uses 2x 18650 protected lithium ion batteries connected in series. These batteries each provide 3.7-4.2 V of juice and are rated at 2400 mah. I simply measured the input current directly from the battery during data acquisition and found that the entire system draws between 70-100 ma depending on whether a write operation to the SD card is taking place. This indicates that the total battery life is approximately 24 hours in the worse case scenario and 34 hours in the best case. It seems too good to be true, but these are pretty substantial batteries and I wouldn't be surprised if those measurements hold. In any case we'll see next season.

 

I also provided a calibration by using the load cell to measure various objects around the house. That data can be seen in the plot below:

 

2ac85eb15121035de6d330e6114ea7.png

 

In general, load cells exhibit a linear response. However, their signal output is approximately 3mV/V which means that an amplifier is required to measure the signal. I used a texas instruemnts INA125p op-amp to boost the signal to be read by the Arduino's 10-bit ADC. Unfortunately, in the low range this op-amp is not able to provide a linear signal transformation, which is why the data above is non-linear for small loads. There are ways that I could fix this electronically such as by using a negative source voltage, but it wasn't necessary. I simply compensated for it in software by building it into the calibration.

 

I also wanted to test the device in course like conditions, but I had no way of getting out on the water at this time of year. So I setup a little test on the deck as seen in the video below:

 

 

Here is a plot of the data collected during the video:

 

4acaf4c7da40b3d9cee1129ba05f2e.png

 

If you zoom in you can even see where the rope slipped:

 

a351d859582ff4a05d3f6c5127ab4d.png

Link to comment
Share on other sites

  • Baller

 

I've also thrown together a quick video to show the user interface. I made it as simple as possible so the operator could focus on driving if there isn't a 3rd person to operate the device.

 

 

I consider the DAQ box to be mostly complete aside from a few potential software modifications. It does everything I set out to do and I'm excited to try it next year on the water. I still need to find a method of safely attaching the load cell to the pylon without interfering with the ability to change line lengths. My current plan is to take out the sections of rope between 38 off and 43 off (I have a very ambitious rope) and make a 5' section which includes the load cell and attaches directly to the pylon. I would use a heavy duty carabiner to attach the ski rope to this section. I've seen some tutorials online for splicing my own ski ropes, but I'm open to suggestions here as I'd hate to snap my pylon attachment and see the whole system get dragged into the water (not to mention potential injury).

 

I'm not an EE, but I've had a lot of fun on this project and I think it was a great learning experience. In retrospect there were some things I could have done differently to improve the device and save a little money, but I think it turned out pretty well for a learning experience. There may be some design flaws waiting to rear their head when the season starts, but for now I'm confident in the final prototype. The final relevant stats for the device are below:

 

Stats

Battery Life: >24 hours

Data Acquisition Rate: 488 Hz

Load Range: 0-900 lb (0-410 kg)

Load Resolution: 0.9 lb (0.4 kg)

Total Cost (including tooling): ~$550

Total Time Committed: ~3-4 weeks (spread out over the winter)

Link to comment
Share on other sites

  • Baller_

@DefectiveDave,

 

Great innovation and some solid engineering. I can't wait to see the results of an on-the-water test.

 

Speaking of getting on-the-water results, you mentioned it was winter. But, I noticed three things:

 

1. No snow

2. Relatively sunny skies and apparently low winds

3. You are wearing a short sleeve shirt.

 

Unless there is some secret cache of ice on your lakes, I would expect to be in the water. What is preventing that?

 

 

The worst slalom equipment I own is between my ears.

Link to comment
Share on other sites

  • Baller

@MISkier‌

 

It is getting warmer out there, but still a bit cold for me. The video was shot on the warmest day since November (70F air, water 45F), but the baller index is still hovering around 0 most days. Soon!

 

@kfennell‌

 

I'd have to break down the parts, but I would guess $400 to build another now that I have the tooling. I'd probably make some changes too so that I didn't have to manually fabricate the signal conditioner circuit. That was the most time consuming part.

Link to comment
Share on other sites

  • Baller

Once you get behind the boat you'll find the simple things are the problem!!

 

I did a similar setup for a World Cup stop in Ireland a few years ago. Load sensor on the rope being monitored by a laptop in the boat on a WIFI connection to a laptop on shore that was driving a step motor with a big wooden clock arm on it showing live how hard the skier was pulling.

 

Unfortunately on Jodi Fishers potentially winning pass the rope connecting the load sensor to the pylon broke and dropped him in the river- he's never forgiven me

 

Nice project

Link to comment
Share on other sites

  • Baller

@DefectiveDave‌ that is really cool. I think it can be a great training aid to see how your on and off side pulls compare. What would be really neat is if you could tie it in with a plotter on "where" the load is measured, I.e., heading into the wakes, behind the boat, etc... I think with the timer, you may be able deduce the skier location if it zeroed at the gate trigger and added line length to equate skier position.

 

There was another system started a few years back that was trying to use gps tracking for the skier. Never finished though.

 

Neat stuff!

Link to comment
Share on other sites

  • Baller

@Splasheye‌

That seems like a cool setup and thanks for the insight. I'm still working out how to do the connection to the pylon, but if ropes can't be trusted then I might be able to go with coated steel cable. I could build a simple PTFE and aluminum bearing for the pylon to distribute the load and prevent the cable from digging in. The rest of the rope would still be PE so it could continue to absorb shocks and it likely wouldn't drastically change the "feel" of the rope. I'm completely open to any suggestions you may have.

 

@eleeski‌

I did this more of as a hobby project so I wasn't planning on selling them. However, if there is enough interest I might be able to make a few for others at or near cost. Before I even consider that though I need to do some testing on the lake and work out any potential kinks.

 

@AB‌

I had seriously considered a ski mounted IMU (inertial measurement unit) which could be used to measure the acceleration and angular orientation of the ski. The thought was to use video to find a fudicial when the skier crossed the gate and sync it with the data. Then it would just be a matter of interpreting the IMU data to determine things like skier location, relative edge angle, etc. Unfortunately I didn't have time this winter to take on a second project. I might try it later this season or next winter depending on how the load cell works out. I agree that data would be nice to have and could be very useful.

 

@mwetskier‌

I used Libreoffice Calc for the plot images, but for the video data I used Matlab. Really anything could be used given that the data is in CSV format. I put the video together using Adobe premiere. Currently it's a manual process but I plan on automating it all using python, ffmpeg, and imagemagick in the near future. That way after skiing I can just batch process everything, get dinner, and then come back to look at the results.

Link to comment
Share on other sites

@Horton,

You could start some interesting discussions with this....

Skiing same pass of various different ski's.

 

 

Results would be interesting.

 

Not sure it would prove anything, but would be interesting to know what results looked like.

 

Cheers

 

Phil

Link to comment
Share on other sites

@DefectiveDave‌

 

Just looking at the graph & considering how the load was increasing at balls 1,2,3, & 4, then dropped back for 5 & 6.

 

Doing the mental analysis of this when I looked at the time scale & realised it was not real data....

Lol, came back to reality...

Such good brain food though.

Cheers.

Link to comment
Share on other sites

  • Baller

So... I still think the trick is to simply measure pylon deflection

 

Pre-calibrate the system to the boat by using a ratchet strap and a hanging scale - get a deflection curve for weights over the range you want.

 

Pull the deflection by having X and Y readings from digital micrometers mounted near the floor of the boat.

 

Nothing in line with the skier rope - which would go on the pylon as per usual.

 

deflection in X and Y would give line load as well as vector of the load.

 

 

Link to comment
Share on other sites

  • Baller

@AB - the idea is that since a pull of 400 lbs at 30 degrees left of centerline will deflect the pylon both left and back, a measurement of the position of the pylon in terms of how "left" it was deflected, and how "back" it was deflected will give you the magnitude and angle of the pull.

 

It is all about integrating the data - the beauty of measuring load on the line is that no matter the direction pull is pull.

 

But from a useful dataset - I think the angular change in the force is more important - for instance if the skier holds 400 lbs on the line for X time, that doesn't tell you where he is, because the skier could be playing tug of war off the ball, or the skier could have held that through the wakes for the same time.

 

If however I told you he held 400 lbs and went from 30 degrees left of center to center in X time - you have an extra data set - one that describes acceleration (rate of change in the direction of pull)

Link to comment
Share on other sites

  • Baller

@Phil2360‌

I was wondering why the load went down on the 5th and 6th pulls myself. To be honest I felt like I was pulling harder. Maybe something got a bit off and I wasn't as "stacked" even in a strong row position.

 

Hopefully I'll get the chance this year to collect data from lots of different people. Then I could do quantitative comparisons of say 22'off runs by someone who can easily run 35' off versus someone who can barely make 28' off. I think there's lots of potential.

 

@BraceMaker‌

I think you are right about the angular acceleration being more important that the load on the line. Conceivably it is possible to get the same load with lots of different ski pitch and yaw configurations, some of which are more efficient at converting the load into cross-course direction. If the skier is playing tug-of-war with the boat then they would be wasting a lot of energy and wouldn't be efficiently gaining cross-course direction.

 

My theory is that the load cell might not be the greatest indicator off the ball, but once the skier gains speed then they are forced into a more efficient ski orientation by the oncoming water in their path (otherwise their CG would go out the front). So I think it should be a decent indicator once the skier gets into their main acceleration phase. Plus I have some data to compare against from Waterski Magazine, the West Coast Slalom DVD, and who knows where else. Those peak values they recorded were normally in the main accel phase where I feel pretty confident in the load cell.

 

Off the top of my head I have no clue how to build a device to measure pylon deflection, but I would like to hear more details about the idea. Does the pylon deflect quickly enough to get useful data? I'm a bit worried about the dynamics of the system (given the mass and aspect ration of the pylon) interfering with the data collection. Unfortunately I don't know enough the the pylon like how it's mounted, whether it's hollow, etc. to be able to perform those calculations myself.

Link to comment
Share on other sites

  • Baller

Pylons are quite variable between boats. But the acetal bearing where the rope attaches is a pretty standard item. Redesign that with a pressure transducer and an angle measurement and your system would be invisible to the skier while collecting data.

 

Eric

Link to comment
Share on other sites

  • Baller

@DefectiveDave- maybe you should change your moniker to DetectiveDave – fascinating endeavor.

 

For a given consistent (shortline - < or = 11.25m) skier, boat setup, etc., it would be very interesting to compare data between drivers. Data of top-rated drivers (probably having similar results) could speculatively be used to improve driving skills of those developing.

 

Keep up the great efforts!

 

Link to comment
Share on other sites

One way to do this would be pretty cool, and@defectivedave you've done the hard part already. Mount two load cells 90 degrees from each other at the base of the pylon where it attaches to the hull of the boat. Take your readings from there, calculate the mech advantage from the lever arm above the floor, resolve the readings from both cells into a direction vector and Boom! Load and skier position. Make a little cartridge with the two loads cells we can buy and plug onto the bilge end of our pylons along with your signal conditioning gear and I bet quite a few of us freaks would buy it
Link to comment
Share on other sites

  • Baller

@dchristman,

 

No updates as of yet. I wasn't brave enough to try just attaching the load cell to the rope knowing the bend radius of the eye bolts was too small. So I've been building a little assembly to ensure the bend radius is sufficient. Life has been intervening and making sure I don't work too fast. Here is a current image:

 

295aa86a22f7b6bf480f6df3d67380.jpg

 

I'm hoping to be up and running within a few weeks once I build a little jig to make sure the rope stays in place (some cut PVC). I'm also waiting for a custom length of rope from Masterline so that I can attach it close to the pylon and maintain appropriate rope length. Come to think of it I should call them tomorrow to check in as I haven't heard anything for a week.

Link to comment
Share on other sites

  • Baller

@klindy,

 

That's exactly what I want to do. As I'm not really using the 39.5 to 41 off loop I had tried to use that, but it proved a bit too long for my purposes. I need to shorten that length of rope by almost exactly 8". Would you just un-splice and re-splice it?

 

The shortened rope will attach to one clevis while the rest of the rope will attach to the other. The load cell plus clevises is very near 8". It's preferable to take the length off of the shortest rope connecting the load cell to the pylon so the mass of the load cell does not have to travel far along the arc of the rope. Thanks.

Link to comment
Share on other sites

  • Baller

@mwetskier,

 

I'm afraid that tying off a section of rope would generate stress concentrations due to tight bend radii which would cause the rope to break.

 

Removing the 41off section gives me 18" to deal with, and the the load cell is only 8". I don't care so much about the extra 8" for skiing purposes, but if the rope connecting the pylon to the load cell is long then the load cell flops around too much. This could potentially damage the load cell and feels really funny when you're behind the boat. A shorter length of rope allows me to get the correct overall length and use my wakeye to stabilize the load cell. I have tried this by tying off a section of rope and it works well. However, I didn't dare load the rope too heavily and I pretty much just did some light cuts side-to-side outside of the course.

 

 

Link to comment
Share on other sites

@DefectiveDave take the 41off section (assuming it can be removed) and simply double it. Loop it thru the load cell clevis and attach both ends to the pylon. Or the opposite way. That will give you the length you need (+/- 1") and make it harder to break the rope.
Link to comment
Share on other sites

  • Baller
@DefectiveDave -when you need a rope section to short to tie a loop at each end like 8 '' you can just make a single loop with a 16 '' circumference and put it in line as if it had 2 ends. for @klindy s idea you might want to tie a section from different rope so your 41 off piece wont get worn in an odd way and can be put back in when your done with your experiments.
Link to comment
Share on other sites

  • Baller_
In 1994-96 at Correct Craft we had a boat loaded with accelerometer's, potentiometer's on the steering, a torque cell in line with the prop shaft and proximity sensor calibrated to measure load as deflection on the pylon and a stalker radar gun. All wired in to a data acquisition setup in conjunction with a early lap top. We were trying to develop our own speed control system and or enhance the Hobbs system we were utilizing at the time. we were able to at least put on a graph how much HP it took to pull a shortline skier at given line lengths, what kind of actual loads at the pylon, how much steering input was required and speed changes throughout the course. This information we utilized to some degree when we built the 1997-2001 ski Nautique!
Link to comment
Share on other sites

  • Baller

@dchristman,

 

I still have the hardware and it works great. However, I kind of stalled at the point where I was going to mount it onto the boat "safely". The problem is how to attach it in such a way as to not damage the rope on either side (bend radius, etc.). I had a solution to that as well that I think would have worked, but I was advised against doing my rope thing for safety purposes.

 

I tried to order some shorter lengths of rope from Masterline to complete the setup, but for such a small order they would never get back to me (I don't blame them). I suppose it would be relatively easy to complete it with some regular poly rope. However, after trying to get rope from Masterline for 3 weeks I got side tracked and haven't gone back to it since.

 

With respect to IPA, my prototype board is a mess. It would be pretty difficult to make it communicate with your setup at this point without some really annoying soldering work. Even then we would probably be limited to I2C or SPI. Path forward to integrate it into IPA would probably include updating the hardware to add wireless comm. and PCB hardware rather than direct soldered wires.

 

Currently I write data to an SD card at around 500 Hz.

Link to comment
Share on other sites

  • Baller_
@DefectiveDave: I think you could use the carabiners just like a PP switch and then add a short (loose) safety rope so if a failure occurs the secondary rope takes up the tension and the skier will barely notice.
Link to comment
Share on other sites

@DefectiveDave let me know what you need and I can make it out of Dyneema. Since your concern is losing your equipment I would go with @DW 's idea of using a leash as a back up. I'll do it for free so long as you get some data and share it with us. I have been looking for good data on how much load skiers and wakeboarders actually put on a rope.
Link to comment
Share on other sites

  • Baller

@rab,

 

I can make it work with a little effort, so no need to send me anything. As far as testing goes, I'm not in a great position at the moment to go out and collect data. We have a newborn daughter at home which limits me to skiing once per week. So when I go out I just try to work on my flaws and have fun. There's just not much time to fiddle around with new hardware and integration unfortunately.

 

I'm also probably not the greatest lab rat, I run 28 off on a good day at 34 mph. To me it seems that the best way to get data for a significant number of people is to work with @dchristman and company, they seem like they have a good thing going with IPA and it's integration with Swerve. I'll support them as best I am able and they can have my current hardware if it helps them out.

 

I'm actually curious if the load data has utility as a performance metric alongside IPA and Swerve. My original thinking when I built it was, "more load = more acceleration" but I now know that to not be true. It's definitely possible to load inefficiently (lots of load) and generate very little acceleration. I'm actually kind of an expert at that! Still, there are most certainly patterns in load time history data that can be used to distinguish a good skier from a not-so-good skier or inhumanly amazing skier.

 

@kfennell and @DW,

 

Those comments alleviate my safety concerns, so getting it up and running should be trivial. Thank you both. I could probably find some decent poly rope at Lowes to complete it. However, even completing it at the moment I'm still left with no time to play with it, haha. So for now I'll wait and see what @dchristman has in mind.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...