From WikiBarbell
Jump to: navigation, search

Here you'll find all the info that requires version control for OpenBarbell version 0.25. V0.25 was developed in the Fall of 2015 and shipped to Dr. Mike Zourdos in December 2015. The device was made for that purpose as well as to make a more friendly open source alternative to V0.24. It is the fourth version of OpenBarbell, following the first prototype dubbed ‘Mystery Shoebox’, the second prototype which is the original 3D printed OpenBarbell unit, and V0.24 which is the first open sourced design.

Feature List

  • Sub-3mm accuracy with custom 3D printed encoder wheel
  • Quadrature encoder for directional output
  • Average velocity output accurate to 2 units of precision (validated against Tendo Unit)
  • Stores up to 39 reps locally
  • 2 buttons for toggling between reps and UI input
  • OLED screen
  • Rechargeable Lithium Polymer battery (lasts several weeks on a charge)
    • charges from 3% to 40% in minutes
  • Also compatible with disposable battery power source
  • Bluetooth capable
  • Compatible with OpenBarbell phone app to be released in the Spring
  • 10 ft. Kevlar string
  • 3D printed enclosure
  • 12 ft. spring steel reel

Parts List

The following links below are active as of 1/24/2016. They are the lowest cost sources that we have found in our efforts to this point. If better resources are found feel free to edit this Wiki. Our goal will be to have most of these parts for sale in the squatsandscience.com web store.

You will also need the following:

  • Solder
  • Soldering Iron
  • SMD reflow station for MAX17043G+U (if you're skilled in soldering, you do not need this)
  • Hot glue gun
  • Superglue
  • Hot air gun (not required, used for heat shrink tubing)
  • 3D printer & 3D printer filament (unless acquiring 3D parts elsewhere)
  • Pliers (to install spring)
  • Razer blades (to clean up prints)


  1. Read the top level Wiki titled “Build Your Own OpenBarbell” for a list of things you need to get done before you start this version-specific instruction. Once those items are completed, move on to step 2.
  2. By now you should have all of the source files needed to complete an OpenBarbell unit from scratch. V0.25 is packed with a lot more content than previous versions, including a set of Eagle CAD files, a detailed PCB bill of materials with a Digikey Cart - http://www.digikey.com/short/3cjzr4, and a reference designator file to describe what part goes where on the PCB. When you're ready to build, check out our YouTube tutorial that takes you through a full build of a V0.25 prototype. It's recommended when assembling the 3D printed device to have the Solidworks assembly in front of you. If you don't have Solidworks then have no fear, the tutorial will guide you - https://www.youtube.com/embed/qytn7cA2MjQ.   </div>
  3. A total of 19 parts need to be printed (one of which is optional), you can find the list below. All of these parts can be printed without support material. Unless specified, the parts below can be printed at 0.3mm layer size. We recommend printing your own parts, but if need be you can use services like <a href="https://www.3dhubs.com/3dprint#" target="_blank">3DHubs </a> and Shapeways - http://www.shapeways.com/. See step 4 for a description of how to install the spring.
    • Axel (0.2mm)
    • Battery Compartment
    • Compartment bottom (0.2mm)
    • Dowel x 4 (0.2mm)
    • Housing
    • Pillar Base
    • Pillar Lock Flange
    • Pillar Lock
    • Pillar
    • Pillar Balance
    • Screen Mount (optional) (0.2mm)
    • Spindle Encoder (0.1mm, or the smallest possible layer size for your 3D printer)
    • Spindle Housing
    • Spring Mount Thin (or Spring Mount Wide, depending on your spring width)
    • String Guard
    • String Hook
      • The reason you need to print 21 files instead of 1 like you see in 3D printing videos is because this device pushes the limits of the 3D printer. Parts like the Spindle Encoder need to be very precise so they need to be printed in a precise manner. Other parts tend to warp if printed together, so they are separated. Support material has been completely avoided to reduce plastic burs.
  4. Check out our tutorial for a visual walk through of the Spring Mount installation (https://youtu.be/qytn7cA2MjQ?t=8m38s). The Spring Mount was designed to be slightly larger than the average spring enclosure in a 6-12 ft. tape measure, so it could be possible to grab the spring out of the tape measure and transplant it to the Spring Mount without it unraveling. If it does unravel, the spring MUST be wound in reverse direction or it will not provide retraction for your OpenBarbell unit. Care must also be taken to install the spring in the correct orientation. V0.25 was built so the string is pulled from the right of the encoder (if you are facing the screen). If the string is pulled from the left of the encoder (because the spring was installed incorrectly) you can just change the direction bit in the code and it will work, but you will not have the string guard to keep the string from getting caught in the spindle.
    1. Changing the direction bit: This is useful if the OpenBarbell happens to be reading the downward velocity instead of the upward velocity. That should only happen if you have installed either the spring or the string in the wrong direction. All you need to do is change which input value the code thinks is UP. That code can be found on line 175:
      • goingUpward = digitalRead(3);
      • change to: goingUpward = !digitalRead(3);
  5. The electronics for V0.25 are the biggest differentiator between it and V0.24. If you don't have experience doing SMD soldering you can still use the previous schematic from V0.24 and it will work on this version, just keep in mind there is less space in the battery compartment for the electronics in V0.25. The old version is not compatible with a single cell 3.7V lithium polymer battery, so to fit in the smaller enclosure a 9V battery and a 5V regulator (compatible with 9V input) is recommended. Here, we'll outline all of your choices for obtaining your own OpenBarbell PCB.
    1. Making it yourself - This is a two layer PCB so you would need to use a DIY method that allows copper on both sides as well as VIAS. These methods exist - http://www.instructables.com/id/Two-sided-PCB-using-toner-method/?ALLSTEPS - but they are tricky. Option two may be a better bet for most people.
    2. Buying small batches - There are a few great resources out there for small batch PCB manufacturing. OSHPark - https://oshpark.com/ - and DirtyPCBs - http://dirtypcbs.com/ - are a couple that we've used before and like. In fact, here's our shared project on OSHPark - https://oshpark.com/shared_projects/IcWd7Sc6. If you're not in a rush, you can get a handful of boards for about 5 bucks a piece or less. If you do this and end up with extra boards please feel free to post in the For Sale/Wanted forum - http://squatsandscience.com/forums/forum/openbarbell-buildlog/general-questions/for-salewanted/ - that you have spares. If you aren't confident in your PCB purchasing skills, head down to option 3.
    3. Buy one from us - http://squatsandscience.com/product/openbarbell-v0-25-pcb/. We have extras from our prototyping batch that worked like a charm (we didn't have to change anything but the silkscreen) so we're tossing them in the online store at cost. We paid a little more than the price you can get from OSHPark (we needed them in a particular way, and FAST) but they're guaranteed to work and you'll be supporting the cause.
  6. Once you get yourself a PCB and buy everything on our above mentioned Digikey Cart - http://www.digikey.com/short/3cjzr4 you're ready to assemble the electronics (keep in mind, if you're looking for a budget version of the OpenBarbell you can have the same VBT functionality without a lithium ion battery, lithium ion charger, and lithium ion fuel gauge and save about $7). If you're skilled with a soldering iron you can do everything with just that. If you're kind of OK with one but not the greatest, you'll need to find a local makerspace that has a surface mount station or some kind of hot air reflow machine - https://youtu.be/qytn7cA2MjQ?t=21m9s - (the MAX17043 has small pads, although they have a little bit of exposed pad that can be soldered by hand in a pinch, we've done it a couple times). For your convenience, we put together a reference designator file - http://squatsandscience.com/wp-content/uploads/2016/01/OpenBarbell_Order_V0p25_11_7_2016.pdf - that matches up with part numbers and descriptions on our BOM - http://squatsandscience.com/wp-content/uploads/2016/01/OpenBarbell_V0p25_BOM.xls. We recommend starting from the top and crossing out each item on the BOM until the board is done.
  7. Head up one level in this Wiki and you'll find the OpenBarbell V0.25 parts list. We've put together a list of links where you can find yourself everything you need that can't be made at home. We did our best to source everything in the US and reduce the number of stores you need to visit to complete the build. If you know of any improvements or found a better source, go ahead and post it in the Where to Find Parts Forum - http://squatsandscience.com/forums/forum/openbarbell-buildlog/general-questions/where-to-find-parts/
  8. At this point, you've collected all 19 requisite OpenBarbell parts, bought a bunch of miscellaneous dubiously related items, acquired a PCB and assembled all components, and are staring at a pile of anabolic potential. If you haven't already, now is when you should head over to the Tubes and watch our OpenBarbell V0.25 tutorial - https://www.youtube.com/watch?v=qytn7cA2MjQ.
  9. Uploading Code

  10. Back already? That must mean you have a fully assembled OpenBarbell ready to upload code. To do so, you need to connect the RFduino on your device to an FTDI breakout board - http://forum.rfduino.com/index.php?topic=75.0. RFduino sells a USB shield that does just that - http://www.rfduino.com/product/rfd22121-usb-shield-for-rfduino/, or you can use anything you have lying around. We routed the appropriate pins to the spare microUSB pins on the board for easy access, but don't go plugging it into your computer. We need to get those pins hooked up to your FTDI board. You need 5 pins to program an RFduino, GND, VCC, TX, RX, and RESET. TX and RX are hooked up to pins GPIO0/1 so they are routed to USB pins D+ and D-. The most convenient way to access these pins is to split a USB cord, but most USB cords do not utilize the ID pin and therefore do not have a 5th wire. If you do not have a 5 pin microUSB cable, you need a microUSB breakout board to have access to these pins. Sparkfun has a great one for $4 - https://www.sparkfun.com/products/10031. See the schematic below for reference.
  11. Now that we're hooked up to the computer we can go ahead and load code. You should have been to our Github by now, but if not you can download the release code here - https://github.com/seminolemuscle/V0.25/tree/master/OpenBarbell_12_29_2015. Make sure you download all of the libraries used for the code, and double check that you're downloading the ARM version of the libraries and not the AVR version (if you download Adafruit_SSD1306 and not Adafruit_SSD1306ms.h you'll get a delay.h issue). You can find the libraries here - http://squatsandscience.com/wp-content/uploads/2016/01/OpenBarbell-Libraries.zip, but please download fresh versions as these are not live.
  12. Libraries are up to date? Great, you should be able to load code and start playing with your device. Velocity is a great unit of measurement when consistent, but it's even better when accurate. That's why we recommend everybody to calibrate their own unit against a VBT device whenever possible. We've been able to verify accuracy on our end by comparing it to several gold standard velocity measurement devices, but there could be a few things that fudge that calibration between our build and yours. If you do get that chance, the fix is pretty simple. Go into the code and play with line 64. It represents the space of the gaps in the encoder in micrometers. You adjust that up if your device is reading slow, and down if it's reading fast.
    1. long ticLength = 2950
  13. If you're here, you're pretty much set! Check back soon for updates on the open source phone app that's currently in development and what you can do to hack that as well. Please do us a solid and head to the forum and document your build. Others will be happy to see it and it will undoubtedly help them on their very own OpenBarbell build.