Introduction: Rideable Segway Clone - Low Cost and Easy Build

This Instructable will show you how to build a ride-able Segway clone. Here are its features:

  • Easy to build with no welding, no complicated steering linkage and minimal soldering.
  • Uses a readily available $3 digital MPU6050 accelerometer/gyro IMU board.
  • Total parts cost is under $400 (including shipping). A real Segway is $5000!
  • No salvage, dumpster diving or Craigslist parts.
  • A detailed parts list and ALL purchasable sources are included.
  • Well documented with over 50 minutes of HD how-to video, pictures and a detailed plan.
  • Uses the very common Arduino UNO processor board.
  • All Arduino processor code is included. NO additional Arduino libraries need to be installed.

This is a great learning project. It involves:

  • wood working
  • metal working
  • plumbing techniques
  • wiring from schematics
  • micro controller (Arduino) C like coding
  • accelerometer/gyro basics


I would say that a motivated middle schooler (12+ year old) with a parental figure could tackle this project. If the motivation isn't in the technical learning and assembly, it will be in the riding fun!

----------------------------------------------------------------------------------------------------------------------------

UPDATE 12/24/2014: There is a separate Instructable here to strengthen the Segway Clone PVC to Wood junction.

Step 1: Introduction Video

This video shows some action shots of the Segway clone!

Step 2: How to Ride the Segway Clone

  • With the Segway clone leaning forward, it's front edge touching the ground, toggle the power switch on.
  • The LED will glow red. Wait about 8 seconds for the MPU6050 Accelerometer/gyro to calibrate.
  • Lift up the board so it is parallel to the ground.
  • Hold in the deadman switch. The LED will turn green.
  • Step on the board.
  • Lean forward to go forward and lean back to go backward.
  • While you are moving, you can press the steering rocker switch to go left or right.
  • You can press the tilt rocker switch to adjust the neutral balancing position of the board.

Step 3: How to Build the Segway Clone Video

This video is over 50 minutes long and includes detailed instructions on how to build this Segway clone:

Step 4: Electrical Schematics

This is the electrical wiring schematic. It was drawn in MS Visio and saved as a .PDF here.

Step 5: Parts List, Cost and Tools Needed

Parts List and Cost Breakdown
The parts cost is under $400.  The attached .PDF file below  includes the sources, cost and HTML links.

Step 6: Tools Needed

Tools Needed:
Wood saw, hack saw, drill, drill bits, hammer, screwdrivers, wrenches, wire strippers, soldering iron, files, metal punch

Optional tools:
table saw, drill press, Dremel tool, VOM (Voltage Ohm Meter), WD40 (for drilling)

Step 7: Plans and Dimensions

These are the mechanical plans.   I designed this in MS Visio and saved off the .PDF here.

Step 8: The Arduino Code


The Segway Clone Arduino code is below:

The Arduino code development took the longest amount of time to get right in this Instructable. It could still be improved. Any ideas would be appreciated. It was influenced by the following authors of self balancing device projects and MPU6050 development:

Jeff Rowberg: https://github.com/jrowberg/i2cdevlib
XenonJohn: https://www.instructables.com/id/Self-balancing-skateboardsegwy-project-Arduino-S/
ScitechWA: https://www.instructables.com/id/Self-Balancing-Scooter-Ver-20/
Geekmom: http://www.geekmomprojects.com/mpu-6050-dmp-data-from-i2cdevlib/
Julian Arnott: https://www.youtube.com/watch?v=q29MMfLRFYM
and Eric Wang

Installation:

  • Install the Arduino software (http://arduino.cc/en/Main/Software#.UxiP2BCmZU0)
  • Download the .zip file BELOW with all the code (note that Instructables MAY corrupt the name)
  • Unzip the file (this is a good freeware unzip program: http://www.7-zip.org/download.html)
  • Open the Arduino software
  • Connect a USB cable to the Arduino board
  • To ensure your Arduino is working, get your Arduino to "load" the "blink" program (file->examples->basics->blink)
  • Open the file hartway_digital.ino
  • Compile and "load" to the Arduino board

You can search on YouTube to learn about the Arduino. This guy does a good job explaining everything about Arduinos:
http://www.youtube.com/watch?v=fCxzA9_kg6s


notes:

1) Instructable user fgastald posted the following note. This library code change seemed to help him and some others with stability issues. Most people do not experience these issues but you may want to make the following changes if you have vibration in your final design:

"For those who are experiencing some MPU6050 issues (weird behavior.....motor that suddenly goes to 100%.....) i suggest this : Go to the library file MPU6050_6Axis_MotionApps20.h find the line 0x02, 0x16, 0x02, 0x00, 0x01 // D_0_22 inv_set_fifo_rate Modify the last number (0x01) to something higher, i'm using 0x02 right now and it works fine."

2) There is a bug in the code that will show up if you hit and release the deadman switch about 250 times. User rtreffkorn reported this and suggested the following solution. I have not tested it but it sounds reasonable.

"The fix is to change set_motor() from void to int.
In the normal case return 0. When the deadman button was released return 1;
Then in loop() do: "if (set_motor()) break;" "



The Segway Clone Arduino code is below:

Step 9: Step by Step Instructions Start Here

The following are step by step instructions of how I built this Segway clone.  You may decide to copy this exactly or just use this for inspiration in your own variation.

Step 10: Lawyer Stuff and Safety

  • This project includes cutting, drilling and soldering.  Please wear safety gear and be careful.
  • Riding on a 2 wheel device that is inherently unstable is dangerous.  You will fall off it and crash into things.  You are responsible for your own safety.   Wear protective gear. 
  • The real Segway device can be dangerous even though it has safety shutoffs and error detection.  This Segway clone has NO safety detection or elegant shutdown.  Ride at your own risk. 
  • This Segway corporation video clip shows some of the dangers riding the real Segway device may have.  I found it useful to watch before riding this Segway clone: http://www.segway.com/flash/video/safetyvideo.php
  • Putting your fingers inside a chain and gear drive while the motor is running will remove your fingers.
  • Lead Acid batteries should be recycled and not thrown in the trash.

Step 11: Cut and Prepare Wood Riding Platform

We'll start this by cutting our plywood base.  I used birch plywood.  Any 3/4" plywood piece that can finish to 29" by 17 1/4" will do.  I cut the piece on a table-saw.  If you do this, use eye protection and watch your hands.

You can use a hand saw as well.  Accuracy in cutting is not critical but if you applying plywood edge tape, it needs to be smooth.

Optional: Use a coffee can or something with around a 3" radius to mark curves on the corners.  See video.  A compass set to 3" will work as well.  Cut the corners with a jigsaw or a coping hand saw.

Optional: Sand and then apply iron on edge tape to the edges.

Optional: Sand top and bottom of board.

Step 12: Cut and Drill Brackets

NOTE: this step is not shown in the how to make video clip.  Sorry.  See plans and read this text.

Get the four 8" x 8" x 2" angle brackets.  Two of them will be outside brackets.  Two of them will be inside brackets.   See the .pdf file of the plans for a drawing of the brackets.

To make the 2 outside brackets, do this twice:
  • Use a hacksaw to cut off 1.5" from the end of a bracket arm.  Length should be 6.5" when done. Clean up with a flat file.
  • Use a hacksaw to cut off 2 1/4" off the end of the other bracket arm.  Length should be 5 3/4" when done. Clean up with a flat file.
  • Use a metal punch to make a mark centered between the end 2 holes of the 6.5" bracket arm. 
  • Drill this hole out with a 3/8" or .375" drill bit.   This will hold the wheel axle.  Use a drill lubricant when drilling metal.
  • Widen this drilled hole with a Dremel or round file to make it 0.40" and test that it will fit the wheel axle.
  • Punch and drill four 1/4" holes in the bottom of the 5 3/4" bracket arm.   See drawing for position.  It is not critical.
To make the 2 inside brackets, do this twice:
  • Use a hacksaw to cut off 1.5" from the end of a bracket arm.  Length should be 6.5" when done.  Clean up with a flat file.
  • Use a metal punch to make a mark centered between the end 2 holes of the 6.5" bracket arm.
  • Drill this hole out with a 3/8" or .375" drill bit.   This will hold the wheel axle.  Use a drill lubricant when drilling metal.
  • Widen this drilled hole with a Dremel or file to make it 0.40" and test that it will fit the wheel axle.
  • Punch and drill four 1/4" holes in the bottom of the 8" bracket arm.   See drawing for position.  It is not critical.

tips:
  • When drilling into metal, it's better to use a drill press if you have access to one.  It goes faster and the hole will be straighter.
  • When drilling into metal, it helps to use a lubricant between the metal and the drill bit.  The lubricant takes the heat away from the hole.   WD-40 is a great lubricant.   Don't run the drill bit too fast.  Stop and let the hole cool off occasionally.

Step 13: Mount Brackets Under Platform

Grab the 8x8x8 brackets, wheels, chain, 1/4-20 x 1-1/4 in. Zinc-Plated Hex Flange Bolts, nuts and washers.
  • Measure 4.5" in from an edge and mark a line.  This will be the outer line that the bracket will rest on.  See drawing.
  • Place brackets on board bottom as shown in drawing, pictures and video.
  • Mark 4 1/4" holes per bracket with a pencil.  See video.
  • Remove brackets and punch center of each hole lightly.  This is to center the drill bit.
  • Drill holes with a 1/4" drill bit.
  • Remove brake assemblies from the wheels if they are on still.  See picture above.
  • Attach brackets with wheels and chain to board with (16) 1/4-20 x 1-1/4 in. Zinc-Plated Hex Flange Bolts, nuts and washers.

Step 14: Mount Motors to Platform

The motor has a bracket attached to it with 4 pre-threaded metric screw holes.
  • Set motor up so chain is straight and motor gear is perpendicular to the wheel brackets.
  • Pull gently on motor away from the wheels and mark the 4 holes.
  • Note that you may want to use a short piece of pencil lead to mark the motor holes.
  • Repeat for the other motor.
  • Punch the 8 holes and drill with a 7/32" drill bit.
  • Insert a washer and an M6 1.0x30mm bolt into each hole and tighten it.

Step 15: Crimp on Battery Wires

Find an extension cord to cannibalize or use speaker wire for this step.

  • Cut 2 lengths per the drawing.
  • Mark the bumpy ridged side of all ends of the cords with a black Sharpie pen. This will indicate our negative side.
  • Separate the end of one side on each wire and strip it 1/4".
  • Crimp on a Battery Terminal connectors (16-14 AWG, .250 Series) to each wire.
  • Use 4 Battery Terminal connectors total.

Step 16: Connect Motor Wires

Find an extension cord to cannibalize or use speaker wire for this step.

  • Cut 2 lengths per the drawing.
  • Mark the bumpy ridged side of all ends of the cords. This will indicate our negative side.
  • Separate the end of one side on each wire and strip it 1/4".
  • optional: slide small pieces of heat shrink tubing to each extension cord wire.
  • Twist on the black motor wire to the bumpy ridged marked extension cord wire. Do the same with the red wire to the other extension cord wire.
  • Heat shrink tubing OR cover with electrical tape.

Step 17: Install Galvanized Floor Flange

----------------------------------------------------------------------------------------------------------------------------
UPDATE 12/24/2014: There is a separate Instructable here to strengthen the Segway Clone PVC to Wood junction. You may want to reference that to modify your design. A few of the parts will change.

----------------------------------------------------------------------------------------------------------------------------

The 1-1/2 in. Galvanized Floor Flange is used to connect the PVC handle bar assembly.

  • Mark the center line of the 29" long side of the board.
  • Center the Floor Flange in this line about 1/4" away from the edge of the board. see pics, drawing and video.
  • Mark all 5 holes.
  • Drill 4 1/4" holes for the screws.
  • Drill 1 1 1/8" hole (using a spade bit) for the wires to pass through this 1-1/2 in. Galvanized Floor Flange.
  • Install Four 1/4" 20 x 1-1/2 in. Flat Head Phillips Machine Screws with washers and nuts.

Step 18: Cut the PVC Pipe

Get your 10' section of 1 1/4" schedule 40 PVC pipe.
  • Measure 31.5" and cut.  This is the main vertical pipe.
  • Measure 10.25" and cut.  This is for the right horizontal hand hold pipe.
  • Measure 10.25" and cut.  This is for the left horizontal hand hold pipe.
  • Take all the parts and "dry-fit" assemble them per drawing and video.

Step 19: Cut PVC for Switches

Get the circular "deadman" switch and the 2 rocker type switches.  You should hold these switches on the dry fit to see where you want them.  The measurements I give here are for what I did.    Get switches to fit in this step.  We'll add the wires later.

Deadman circular switch
  • Mark a hole on one of the 10.25" PVC pieces 4" from the end.
  • Drill a hole in the center with a 3/8" drill bit.  Reverse the bit for a while to start the hole if need be.
  • File the hole or use a dremel tool to widen the hole to about 0.45" to allow switch to fit in the hole.  It should be snug and NOT use glue.

You may want to practice the following rocker switch hole cutting on scrap PVC first.  Also, watch the vid.

Steering Rocker switch
  • Mark a hole on one of the 10.25" PVC pieces 6" from the end.
  • around the center of the hole, mark a rectangle that is 1 1/16" by 9/16".
  • Using a small 1/16" drill bit, drill many holes INSIDE the rectangle EDGE.  Use the drill bit to "cut" through the PVC, connecting the holes you drilled to cut out the rectangle.  An alternative method is to use a Dremel tool for this with a cutter bit.
  • File the hole or use a Dremel tool to widen the hole to allow the switch to fit in the hole.  It should be snug and NOT use glue.
Steering Tilt switch
  • Mark a hole on one of the 31.5" PVC piece 4.5" from the end.
  • around the center of the hole, mark a rectangle that is 1 1/16" by 9/16".
  • Using a small 1/16" drill bit, drill many holes INSIDE the rectangle EDGE.  Use the drill bit to "cut" through the PVC, connecting the holes you drilled to cut out the rectangle.  An alternative method is to use a Dremel tool for this with a cutter bit.
  • File the hole or use a Dremel tool to widen the hole to allow the switch to fit in the hole.  It should be snug and NOT use glue.

Step 20: Harvest the Wire

If you are using Cat5 cable, you can "harvest" or remove the wire pairs like this.
  • Strip the end of the cable to remove the outer plastic insulation.
  • Put the 8 wires in a vice.
  • Go to the other end and pull on the insulation. 
  • Go back to the beginning of the cable near the vice and slowly pull the insulation down. 
  • It will come off a little at a time.  See video.
Better way from another Instructables user!:
Mar 19, 2014. 1:59 PM rmelchiori says:
There is an easier way to strip the outer jacket of cat5 cable. If you pull down on the thin nylon floss, it will cut the jacket and open it up like pulling a zipper.

Step 21: Prepare PVC Switch Wires

Measure out the switch wires.
  • Use electrical phone type wire that is about 6' long.  I used CAT5 Ethernet cable which has 4 twisted pairs of conductors.  
  • One pair is for the deadman switch.
  • To make the 3 conductor tilt and steer cables, separate out one pair into 2 individual wires:
  •  A fast way to do this is to put one end in a in a drill chuck,  attach the other end to a vice or have a buddy hold it.   Spin the drill to loosen the wires so you get 2 non-twisted individual wires.
  • Now, take one individual wire and add it to a twisted pair.  You will have 3 wires.  Put one end in a in a drill chuck,  attach the other end to a vice or have a buddy hold it.  Spin the drill to tighten the spin of the wires together.
  • Repeat for the other 3 wire cable.

Step 22: Optional: Epoxy PVC Reducer Into Floor Flange

This step is optional but recommended so the handle bars don't  twist while you are riding.
  • Take the epoxy tubes.  Squeeze out about 3/4" of each the resin and hardener on a piece of scrap paper.
  • Mix the 2 gels together until its a consistent dark grey color.
  • Apply the mixture to the white PVC threads of the PVC 1.5" to 1.25" reducing male adapter.
  • Screw this PVC 1.5" to 1.25" reducing male adapter into the Floor Flange on the board.  Hand tighten.
  • Wait 10 minutes for the epoxy to dry.

Step 23: Install Switches in PVC

Get the 2 rocker switches and deadman switch.
  • Solder the 2 wire cable to the deadman switch.
  • Solder a 3 wire cable to the steer rocker switch.
  • Solder a 3 wire cable to the tilt rocker switch.
  • Write down all the colors of the switches for reference later when you connect them to the Arduino.
  • Snake in the switch wires through the switch holes.  See picture and video.
  • Push in switch to friction fit.

Step 24: Glue PVC Parts Together

Get the PVC Cleaner and Glue.   An alternative to PVC glue is to use epoxy.  You are working around the snaked wires so lay it out on a table.

Do it in this order:
  • End caps
  • Handles to Tee. (watch the switch positions!)
  • Tee to main pipe.
  • Main pipe to Reducer PVC (floor flange)  For this last step. Make sure the Segway board is lying flat on the table.  Quickly step back and look at the handle bar assembly to make sure you twist them parallel to the table while the glue has not dried.
How to Glue PVC:
  • Use the PVC cleaner wand (purple) to wipe cleaner on both parts to be bonded.
  • Apply glue (clear color) to both sides. 
  • Push pieces together and twist to spread the glue.  The working time for the PVC glue is about 10 seconds.  Make sure the switch is where you want it!

Step 25: Mount Electronics Box to Platform

Use the 1/2" #4 wood screws:
  • Line up the box as shown in the picture.
  • Mark the holes with a punch (or screw) by tapping with a hammer.
  • Drill holes with a 1/16" drill bit.
  • Using a hand held screwdriver, attach box with #4 1/2" screws.

Step 26: Install Batteries

  • Mark Battery lines at 3/4" in from long edge of board.
  • Mark battery line 1" in from short end of board. 
  • Trace rectangle around each battery.
  • Mark 4 holes outside battery rectangle for zip ties to go through.  See pictures and video.
  • Drill a hole for each battery power wire to go through.
  • Make sure the batteries will fit but dont lock the zip ties now!

Step 27: Install the Bi-Color LED


Grab the bi-color LED and the 300ohm resistor.  Watch the video.
  • Trim the LED center conductor.
  • Trim and solder on the resistor to the LED center conductor.
  • Solder an 8" long piece of 3 conductor wire cable to the LED assembly.
  • Insulate all wires with electrical tape.
  • Drill a 3/32" hole in the project box.
  • Insert the LED into the hole.
  • Hot glue or epoxy it in.

Step 28: Install the Charging Connector and Power Switch

Get the 3pin charging connector and circular rocker power switch.  see video.
  • Drill a 5/8" hole with a spade bit in the end of the project box.
  • Insert the 3 pin charge connector and put on lock nut.
  • Drill a 13/16" hole with a spade bit centered in the top of the project box for the power switch.
  • Press fit switch in.

Optional:  Add a hole for USB access to the Arduino.  You can see white electrical tape covering mine in the pic above.
  • Place the Arduino with shield in the box aligned with the side away from the connector.
  • Mark the USB connector position on the inside of the box.
  • Transfer the center of the marks to the outside of the box.
  • Use a large drill bit to make a hole for the USB. 
  • Try to connect a USB cable to the Arduino. 
  • Trim to fit using a Dremel tool or file.

Step 29: Drill Project Box Holes and Pass Through Wires.

I didn't shoot video of this step so look at this picture.  
Get your Arduino and your Dimension Engineering Motor Driver boards.
  • Place both boards in box for test fit.   Mark edges of board to ease hole placement.
  • Mark and drill 1/4" holes for power wires on side closest to batteries.  Be sure not to hit the rubber wheels below!
  • Use a Dremel tool or files to widen holes.  An alternative is to use a bigger drill bit so wires will fit through more easily.
  • Drill a 1/4" hole 2.5" from these power wires hole.  This hole is for the control wires.
  • Push through all available wires now.   Make sure that the boards still fit in with wires in place.

Step 30: Tack Down Wires and Connect Battery Wires

Get the 1/4" wire tacks and a short piece of extension cord.
  • Flip over the segway on a few 2x4's or a small bucket so you can work on the bottom.
  • Tack down wires that are loose by hammering in the small tacks.
  • Snake the previously crimped battery cables through the battery holes.
  • Measure and tack the battery cables to arrive under the Project box.  Strip ends.
  • Make a small (8") piece of extension cord cable to pass through hole into project enclosure.  Strip all ends.
  • Twist together the batteries in "series" per the schematic under the Project box location.
  • Twist in the connector cable per schematic.
  • Add in short 8" cable per schematic.
  • Secure with 3 wire nuts or just solder and electrical tape.

Step 31: Get Wires Ready


With all the wires sticking up from the project box:
  • Solder a short extension cord wire to the power switch as shown in the schematic and pictures.
  • Put electrical tape over the power switch to avoid any shorting.
  • Place the motor controller and Arduino boards in the enclosure temporarily.  
  • Find a good final length for the wires and cut them. 
  • Strip the wire ends.
  • Using a soldering iron, "tin" all the wires
  • Optional: Attach small terminals to the control wires. 
  • You can use the straight terminals that came with the MPU6050. 
  • Break them apart. 
  • Use a hemostat or cardboard to hold them while soldering.

IMPORTANT NOTE:
This is from the Dimension Engineering web .pdf for the Saber controller :
"Warning! Be very careful to wire and plug in the battery and connector correctly.
Connecting the battery backwards will destroy the Sabertooth and will void the warranty."

Step 32: Install Batteries and Quick Meter Check

Get the batteries and zip-ties.
  • Put the batteries on the board.
  • Thread the zip ties through the holes and around the batteries.
  • Pull tight on the zip ties so the batteries are secure.
  • Trim off the ends of the zip ties with wore cutters.
IMPORTANT NOTE:
This is from the Dimension Engineering web .pdf for the Saber controller :
"Warning! Be very careful to wire and plug in the battery and connector correctly.
Connecting the battery backwards will destroy the Sabertooth and will void the warranty."

Step 33: Install Electronics

Get the motor driver board, the Arduino and the Arduino shield.

  • Place each board into the box as shown in the picture.
  • Secure each board with screws through the plastic and into the wood.
  • Connect the battery wires.
  • Connect the power wires to the motor controller as shown in the schematic.
  • BE SURE THE BATTERY WIRE POLARITY IS CORRECT. If the + and - are swapped, you will burn out the expensive motor driver board.
  • Install the Arduino shield board
  • Connect the control wires to the Arduino shield as shown in the schematic. ALL WIRES MUST BE TWISTED AND KEPT VERY SHORT!!
  • Solder on the MPU6050 GY521 accelerometer/gyro board right angle pins that came with the board.
  • Insert the accelerometer/gyro right angle pins as shown in picture. Make sure that the component side faces the back of the board.
  • Wire up the pull up resistors, Vcc, GND, and I2C lines as shown in the schematic. Use twisted pair wiring for the I2C wires and keep them very short. ALL WIRES MUST BE TWISTED AND KEPT VERY SHORT!!
  • Connect the wires from the saber to the Arduino.

    Use twisted pair wiring and keep them very short. ALL WIRES MUST BE TWISTED AND KEPT VERY SHORT!!

  • Check Saber dip switches match the picture for 9600 baud. This is to match the serial communication rate set in the Arduino code for communication between the Arduino and the Saber. This is the Saber 2x12 Data sheet for your reference: http://www.dimensionengineering.com/products/sabertooth2x12

Step 34: Test!

At this point, you should be ready to test out your Segway Clone!

  • I would recommend setting the board up on a bucket so the wheels CAN'T touch the ground.
  • Turn on the power switch. Wait 8 seconds.
  • Hold the deadman switch down and move the board forward and backwards.
  • You should see the wheels spin in each direction.
  • If you see the red Error LED on the Saber flashing and the motors start to shake, you have low battery voltage. You either need to charge your batteries OR replace them because they cant hold a full charge anymore.


When this works:

  • Try out the board on the ground.
  • If forward and backward tilt are reversed, flip the pins in the Arduino code.
  • Try out the steering and tilt.
  • Pop out and flip the steering and tilt switches if they are reversed.
  • If you see the red Error LED on the Saber flashing and the motors start to shake, you have low battery voltage. You either need to charge your batteries OR replace them because they cant hold a full charge anymore.

CONGRATS!

Step 35: Optional: Debug

Before you start to debug, check the following:

    • All wiring is as short as possibleas shown in this Instructable. Long wires will get noise on them from the motors and the serial communication will fail. ALL WIRES MUST BE TWISTED AND KEPT VERY SHORT!!
    • The resistors shown in the schematic have been added.
    • The MPU6050 Accel/Gyro is installed and oriented as shown in the Instructable.
    • The tilt switch is for minor comfort adjustments. Don't use it for the tuning. Just try tilting the board back and forth while the board is balanced on a bucket or stool.
    • Make sure to wait at least 5 seconds after power up for the MPU6050 to internally calibrate.
    • Make sure your batteries are fresh. Each battery should measure at least 12V when not under load. If not, replace your batteries.

    This is optional for debug

    Arduino Serial Monitor

    Open the Arduino Serial Monitor. Set it for 115,200 baud

    The code has this line in it:

    Serial.begin(115200); // initialize I2C and serial monitor to 115,200 baud

    To enable printing to the serial monitor, set this to a 1:

    #define DEBUG_ENABLE_PRINTING 0 //normal

    If you are up on a bucket, to avoid holding the deadman switch, set this to a 1:

    #define DEBUG_FORCE_DEADMAN_SWITCH 0 //normal

    To just look at the serial monitor and not have the motors running, set this to a 1:

    #define DEBUG_DISABLE_MOTORS 0 //normal

    recompile.

    The serial monitor screen should output something like this:

    Initializing I2C devices...
    Testing device connections...
    MPU6050 connection successfulI
    initializing DMP...
    Enabling DMP...
    Enabling interrupt detection (Arduino external interrupt 0)...
    DMP ready! Waiting for first interrupt...

    NOTE:

    If you turn on DEBUG_ENABLE_PRINTING and see a message that says: "1024 mpuIntStatus: 19FIFO overflow!", don't worry about it. It is caused by the fact that printing out messages is a relatively slow task for the Arduino processor. While this printing is occurring, the control loop which is trying to pull accell/gyro data from the MPU6050 cant keep up. Eventually, the FIFO holding this data in the MPU6050 has too much data or overflows. The FIFO will recover. When you are done with debug, disable DEBUG_ENABLE_PRINTING flag.

    Oscilloscope:

    if you want to observe the "loop time" of the Arduino code, you can use an oscilloscope to do this. It should be around 10Hz or 10 times per second.

    • Hook a scope probe to Arduino pin 3. Connect the ground as well.
    • Un-comment this lines in the code: // digitalWrite(oscopePin, HIGH);
    • recompile.

    To adjust the base tilt angle in the code:

    If the board powers up and wants to sit at a strange angle, you can use the tilt switch to tweak it OR, you can make a code change to permanently tweak it:

    Look for this line in the code and modify the 80 number to whatever you want:

    // Sensor tilt number below is Determined experimentally. Bigger is more tilted forward. It needs to change if you adjust ANGLE_GAIN. x_accdeg = (float)((SG_filter_result - (80 + balancetrim)) * (1.0));

    Step 36: Optional: Chain Tensioning Block

    If your chain is coming off or it's loosened up, you can add chain tensioning blocks as shown in the above pics.
    • Cut out a pice of 2" x 4" plywood.
    • Drill a 1/4" hole 1 1/8" from one end.
    • Drill a 13/16" hole 1 3/8" from the other end.
    • Press fit a 2 1/4" piece of 1/2" PVC into the larger hole.
    • Secure the other hole with a 1/4" nut, washer and bolt to each bracket as shown in the picture.

    Step 37: Final Notes:


    Low Cost Goal:
    My main goal in this project was to make it low cost and easy to build. A number of design decisions would have been different if the goal was long term reliability, range, power etc.

    Batteries:
    The 12V sealed lead acid batteries used in this project were ONLY chosen because they are very low cost. They are really made for starting gas motors. They are not the best choice for a long life, deep discharge, rechargeable battery. They are prone to failure if they are discharged below 20% capacity. They must be charged after use to keep them from failing. I went through 2 sets of batteries before I learned this.
    Some reading on batteries:
    http://batteryuniversity.com/learn/article/can_the_lead_acid_battery_compete_in_modern_times
    Deep discharge batteries will work better but cost more.
    http://auto.howstuffworks.com/question219.htm

    Weak Point:
    I have found that one weak point of the design is at the interface between the PVC and the board. If you push too hard on the PVC handle bars let's say in a crash, the PVC at that fulcrum may crack. A design improvement would be to use a threaded metal pipe coming up from the board. The top threaded metal pipe would join the PVC at the handlebars. The PVC would have the switches in it.

    Motor Controller:
    The Dimension Engineering Saber motor controller was one of the most expensive parts of this project. I tried two cheaper ebay motor controllers using PWM driven by the Arduino. They both failed to work well and so we needed to use the Saber part. It would be great to find a lower cost alternative to the Saber which is very well designed.

    Future Enhancements (as of 3/2014):
    Here are some future enhancement ideas I would like to see made to this Segway clone:

    1. Voltage monitor circuit. This would be a pair of resistors set up as a voltage divider. They would bring the 24V range down to a 5V range and be monitored by an ADC input on the Arduino. If the voltage dropped below a preset threshold for a certain period of time, the LED would flash at a 2Hz rate to let you know to recharge the battery.
    2. More work to smooth the control algorithm. This Segway clone control is just OK. I think there could be more refinement to the gain adjustment and steering.
    3. Battery research to replace the $32 lead acid batteries with cheap LIPO or LiFePO4.
    4. Find cheap encoders and add them to the wheels.

    ----------------------------------------------------------------------------------------------------------------------------
    UPDATE 12/24/2014: There is a separate Instructable here to strengthen the Segway Clone PVC to Wood junction.

    Step 38: Conclusion

    I hope you enjoyed this Instructable.  This Segway clone could not have been done without the work of others in the Instructable community. 

    If you make one of these Segway clones, please add a picture or video clip to the comments!

    I will end this Instructable with a final safety warning:
    • Riding on a 2 wheel device that is inherently unstable is dangerous.  You will fall off it and crash into things.  You are responsible for your own safety.   Wear protective gear.
    • The real Segway device can be dangerous even though it has safety shutoffs and error detection.  This Segway clone has NO safety detection or elegant shutdown.  Ride at your own risk.
    • This Segway corporation video clip shows some of the dangers riding the real Segway may have.  I found it useful to watch before riding this Segway clone: http://www.segway.com/flash/video/safetyvideo.php

    Comments

    author
    Jean-Claude+GERMAIN made it!(author)2017-07-12

    Hi Ira,

    I almost gave up the construction, but I think I spent a lot
    of time on it, and it would be a shame.

    So here's a new question:

    I read in the instructable that the geared motors were
    sensitive to the back slashs. In addition, the gears generate a free play which must disturb the proper functioning of
    the gyroscope. Also, I intend to remove the gearbox and replace it with a
    sprocket and a wheel as you did.

    With a sprocket with 11 teeth and a wheel with 66 teeth, the
    ratio is 1/6.

    Your engine runs at 2650 RPM, so 440 rpm per minute on the
    wheel.

    The engine I use runs at 4900 RPM

    With the 11-tooth sprocket and the 66-tooth wheel, the wheel
    will run at 816 RPM.

    We go from 440 RPM to 816 RPM.

    The difference is quite significant.

    Can it be taken into account in the Arduino code, or is it
    necessary to choose another ratio with the number of teeth for the sprocket and
    the wheel?

    If we can act in Arduino code, what is the parameter to
    modify ? (could be the ACC_GAIN ?)

    Best regards,

    Jean-Claude.

    author
    ihart made it!(author)2017-07-12

    You can try to adjust the gain settings. Play with these values in the code. Start with the ACCEL_GAIN:

    //Variables for GYRO_GAIN and ACCEL_GAIN

    #define ACCEL_GAIN 18.0 //

    #define GYRO_GAIN 5.0 //

    author
    Ehsan786 made it!(author)2017-07-11

    Hello ihart !!!

    I followed the instructable as you mentioned and build the segway.

    But finally my gyro didn't work. I build the same design.

    Also motors only move forward as I press deadman switch. They didn't move backward.

    Kindly tell me the problem as soon as possible.

    Thanx.

    author
    Vmtr made it!(author)2017-06-24

    A photo of my (almost) completed project is attached. I used wheelchair motors/wheels because I had them. Other than that, 22AH batteries, and a larger (2X25) Sabertooth controller, the electrical and electronic portion is the same as in the Instructable.

    So far, it's only traveled about 4 meters. After running for a few seconds, the wheels start to shake or chatter. I just read in previous comments that the Sabertooth may do that when too much current is being drawn. I have been unable to find the power usage for the motors that I'm using. I'm going to upgrade some of the wiring that I'm unsure of but I know most of it is 14 gauge. I may have to get scooter motors if all else fails.

    SBT_01.jpg
    author
    ihart made it!(author)2017-06-27

    Hi James,

    That looks great. I would consider replacing at least the bottom of the vertical bar with metal. There is another instructable I did that shows how to do this. The PVC can (will) snap at the base if you put a lot of force on it.

    14AWG wiring should be fine for all the 24v stuff going to motors, batteries and Saber power.

    The motor will shake and chatter if the Saber determines that it is in over current. This could be due to dead batteries, undersized batteries or really big people riding up a hill. I would suspect other problems first and your motors last.

    author
    Vmtr made it!(author)2017-07-05

    Thanks for the response. For the three wires going from the Arduino to the motor controller, which wires are twisted with which? It's a little difficult to follow those wires in the photos because that's also where several wires are exiting the box.

    I am testing it currently without steering and tilt adjust switches/wires to reduce possible noise locations. I still get chatter or erratic behavior after 30-60 seconds. All cable on the 24V side is 14 or 12 gauge and the batteries are the same as those used for wheelchairs. (After one failed segway attempt, I put the batteries into a lawnmower that I converted to electric and was able to mow for 45 minutes, so I'm sure they have enough charge.)

    I saw your information about the PVC. I thought I could overcome it by using a different attachment method and by hot-gluing a 1" PVC pipe inside the outer one, but it's definitely weak at the threaded area. I've bought materials to correct it.

    author
    Vmtr made it!(author)2017-07-05

    One other bit of information: in a test, the battery voltage read 25.8 volts before starting, then drops to 25.3 when running at moderate speed. In this test, it didn't chatter; instead, it went to full speed after about five minutes. It then dropped to a little under 25 volts. In a previous test, it dropped to about 23.8 when it was chattering.

    author
    ihart made it!(author)2017-07-07

    @Vmtr

    The wires just need to be twisted to block magnetic coupling. Actually, each wire could be twisted in a curl by itself and it would have the desired effect. You do need the twist.

    You also need the proper pullup resistor installed per the schematic to prevent I2C noise.

    It sounds like your battery is OK.

    There is gyro drift if you leave the segway alone for a while. This may make the wheels turn if it's sitting for 30secs. Chattering could be overcurrent. The light on the saber would flash red if this were happeneing.

    Have you tried just finishing the build and trying to actually ride the segway?

    author
    Vmtr made it!(author)2017-07-07

    I had ridden it a couple of times just before I posted the photo. That's when I experienced the chatter (on a flat driveway with a 185 pound rider). Still, it worked well enough that I don't want to give up now. I have put it back on blocks to test some things - different motors, heavier wire, etc. The Sabertooth error light does blink when the motors chatter, which seems odd because it happens when the machine is on saw horses - no weight, no hills, good batteries.

    The twisting of wires is a lesser concern but the motors do occasionally go into high speed without reason. I'm currently checking my wiring against the schematic to try to spot mistakes.

    author
    Vmtr made it!(author)2017-07-10

    I made some progress yesterday. Among other things, I made some changes to the wiring. The way that I originally had the resistors connected on a small breadboard should have worked, but I changed it to look more like the photos. It seems to have made a difference; I rode farther than before without issues. I'm not quite ready to declare victory over the electrons, but things are looking up.

    I also replaced the vertical PVC with 3/4" iron pipe, so am no longer worried about pushing on the handle too hard.

    author
    ihart made it!(author)2017-07-10

    Sounds great. Signal integrity through short and twisted wires is critical for this project with motors generating lots of noise.

    author
    nagna5424 made it!(author)2017-06-13

    Hi ihart,
    I wonder what each switch is intended for. And, We followed you exactly. However, the gyro sensor doesn't seem to work properly. The motor rotates to the maximum output from start to finish. What seems to be the problem?

    author
    ihart made it!(author)2017-06-15

    Go through the debug section please. Make sure your wiring matches the schematic exactly. Wires should be twisted. Pullup resistors correct.

    author
    eggy524 made it!(author)2017-06-10

    Hi,

    Brilliant tutorial! I'm attempting to make your segway clone however instead of using a Savitzky Golay and Complementary filter I'm trying to use a PID with basic input of the tilt angle (ignoring rate of tilt etc) Have you tried this method at all? I'm struggling to tune my PID and wondering if you'd have any advice?

    author
    ihart made it!(author)2017-06-13

    Hi Eggy,

    I did try to implement a PID controller in my experiments. I used the Arduino library for PID. It didn't work well for me. Let us know if you have better luck.

    I have PID control multiple times in hardware for FPGA designs but not for self balancers.

    author
    eggy524 made it!(author)2017-06-13

    I've been trying for a while now using a PID controller (the Arduino library you mentioned) taking examples of self balancing robots etc. from Youtube but I haven't made good progress at all. I've seen other examples where people have achieved seemingly quite stable systems using a PID but the tuning of these seems to be quite an art.

    author
    Jean-Claude+GERMAIN made it!(author)2017-06-12

    Hi Ira,

    I continue my investigations to have a good functioning

    In view of the various comments in the instructable, I see that there are several people who have the same dysfunction, namely a wheel that turns slowly.

    According to you, this is due to a noise in the system. You also point out that the system noise can have a bad effect on the I2C bus with all the consequences we know (motor going mad, vibration)

    So, am I right with the following assertion:

    "As long as you have a slowly rotating wheel, it means that the bus can be disturbed by the motors whatever the reason either Radio Frequency Interference (RFI) or ElectroMagnetic Interference (EMI)"

    In short, seeing a slow-moving wheel is an indicator of malfunction, and even if it does not interfere with driving, it is very important to find the cause.

    Best regards,

    Jean-Claude

    Ps : unlike other people on the internet, you always give an answer to questions which are asked. It's very kind of you...

    author
    ihart made it!(author)2017-06-13

    Hi Jean-Claude,

    I believe that the slow turning wheel is from noise. It sounds like you are curious about this issue. Set up an experiment where you can reproduce it. Generate a hypothesis of the cause or a number of hypotheses and come up with experiments to eliminate or modify them. Share your results.

    author
    Jean-Claude+GERMAIN made it!(author)2017-06-13

    Hi Ira,

    Thank you for your reply.

    You advise to reproduce the malfunction of the rotating wheel to draw hypotheses.

    In fact, the fault is always present at power up and without having to press the dead man switch.

    Unfortunately, I have no other elements apart from the fact that the 2 motors I use come from an old wheelchair. They are probably more powerful than the motors you use.

    In the instructable's, you also wrote that gear motors are more prone to hooking (back lash). Do you think it is better to have a softer system with a chain transmission. If so, I could try to keep my actual motors, removing the gearbox and replacing it with sprockets and chain.

    Regarding the question I posed in my previous post, you do not answer directly. It is true that my English is not perfect, and it is possible that I have expressed myself badly.

    That is why I ask it again in other words:

    2 - According to you, a wheel that rotates slowly does not affect the driving of the clone segway

    1 - always according to you, it is an electric noise that causes the wheel to turn

    3 - EFI or EMI electrical noise can disturb the I2C bus

    4 - so, as long as a wheel rotates slowly, this means that there is electrical noise and therefore the system is not reliable because the I2C bus is exposed to disturbances

    5 - in fact, and in short, a spinning wheel is actually an alert

    Do you agree with my point of view?

    Best regards

    Jean-Claude

    author
    Siddharthmahe123 made it!(author)2017-05-28

    Sir is it possible to sell your Segway
    You can message me to my gmail account
    naftas.mahe@gmail.com

    author
    Jean-Claude+GERMAIN made it!(author)2017-05-23

    Hi Ira,

    I think the issue I face could be due to gear motors I use.

    They are quite powerful and need very high curent

    The Sabertooth card has to deal
    with regenerative current.

    So my intention is to make a try with same motors you use.

    You are using motors 280 W and batteries 7Ah. So, have you an
    idea of the autonomy ?

    Is there a method to calculate autonomy when we know power of
    motor and batteries capacity ?

    Best regards

    Jean-Claude

    author
    ihart made it!(author)2017-05-23

    I dont know what autonomy is in this context.

    author
    Jean-Claude+GERMAIN made it!(author)2017-05-23

    Hi Ira,

    To me « autonomy » is the time you can drive the
    segway (in terms of hours and minutes) before the batteries run out. You may
    call it « battery life »

    As an example, I have made a very basic calculation :

    Motor power 280 W / 24 V = +/- 12 A

    With 2 batteries 12 V 6 Ah in serie, the segway could run in
    theory half an hour.

    Am I right ?

    Best regards

    JC

    author
    ihart made it!(author)2017-05-23

    Not sure. I didn't build it to ride for more than a few minutes.

    The calculation will be skewed based on how much current (power) is being used. THis will vary based on weight of rider, hills etc.

    Also, each motor is 280W and is drawing power. So your worst case math is 560W at 24V....

    author
    Jean-Claude+GERMAIN made it!(author)2017-05-08

    Hello Ira,

    After a long period of inactivity, I
    resume the development of my segway clone.

    My Sabertooth card has been repaired by
    the manufacturer (fast and free repair)

    This is the report of the after sales
    service :

    The damage was caused by the inhibition
    of the regenerative current.

    If the motors could be spun when power
    is switched off from the 2x25, then use a power switch in parallel with a
    diode.

    In my case, I use two motors with an
    angle drive (worm). Therefore, it is not possible to run the engine by rotating
    the wheel.

    So I do not really know why the card was
    damaged.

    Now, I am able to repeat the tests.

    There are still two malfunctions

    https://youtu.be/-rDSIh0no_k

    1 - direction of rotation

    By tilting the gyroscope towards the
    rear, the motors also rotate towards the rear. So it's normal.

    On the other hand, by tilting the
    gyroscope forward, at the start the engines turn forwards, but from a certain
    point, they turn towards the rear.

    In addition, the forward speed is slower
    than the reverse speed.

    2 - motors vibrate and stop

    At random, engines behave abnormally

    I changed the
    MPU6050_6Axis_MotionApps20.h library by changing the last number, but that does
    not change anything.

    I use engines that are very different
    from yours. They must have a more powerful torque, and must use a higher
    current. Would any gain and sensitivity parameters be changed in the code?

    Thank you in advance for your help

    Jean Claude

    author
    ihart made it!(author)2017-05-09

    Hi Jean Claude,

    Welcome back...

    You have 2 problems.

    The direction of rotation issue is due to electromagnetic noise being coupled into the serial communications. You need to have a common ground tie point. All the wires especially the I2C and Saber serial wires need to be twisted.

    The vibrating motors are caused by the saber telling you it is in over-current mode. They vibrate the motors for you when that happens. You will also see the lights flashing red on the saber when this happens. This can be due to undersized power wires or more likely a battery that cannot produce the current you need. You may need to charge or replace your 12 batteries. Each should measure at least 12V when you start.

    author
    Jean-Claude+GERMAIN made it!(author)2017-05-10

    Thanks for your answer.

    All point you preconize have been already taken in account (one point tie ground + wires twisted by
    pair + connection as short as possible + pull resistors + battery fully charge
    + DIP configured as indicated in the instructable + wire with very large
    section)

    The wiring has been verified
    against the schematic, and the construction is quite neat.

    So now, I am a bit disappointed,
    and I am about to give up. To me, the only solution seems to find a local hight
    level technician to find out what could be wrong.

    Best regards.

    Jean-CLaude

    author
    ziga95 made it!(author)2017-05-07

    VID-20170507-WA0005.mp4
    author
    ihart made it!(author)2017-05-09

    Hi Ziga,

    Thanks for the videos. As mentioned multiple times in these comments, you cannot prototype this kind of a motor design without twisting the wires. Please twist ALL your wires preferably with a ground wire. Make sure that you have a common ground tie point in your design. See if that makes your design work better.

    author
    ziga95 made it!(author)2017-04-29

    Hello i hart,

    I am using a 350W scooter motor with 12 v lead acid batteries. The arduino, the sabretooth and the gyroscope are the same that you have used. However, during testing, the gyroscope seems to be calibrating and there is no problem with the circuit but the wheels do not rotate at all. Is this a problem with the battery? Please respond at the earliest.

    author
    ihart made it!(author)2017-04-29

    First check the schematic carefully to make sure it matches what you have.
    Check that the batteries are at least 12 volts each.

    author
    ziga95 made it!(author)2017-04-30

    I have made the connections as per the given schematic. I have attached videos to show the present working of the segway. The batteries are 12.3V each to be precise, and the discharge rate is 7000mAh each. Does the orientation of the gyroscope affect its calibration? The board and transmission system i have used is a timer belt and pulley system. Will that affect the working of the gyroscope or motor driver?

    IMG_2659.MP4IMG_2658 (1).MP4
    author
    ihart made it!(author)2017-05-01

    And yes, the orientation of the gyroscope will matter in the final version to get the motors to spin the proper way. Make sure it matches the Instructable images on your board.

    The fact that your motors dont spin at all is not due to gyro orientation.

    author
    ziga95 made it!(author)2017-05-07

    Hi Ira,

    I have finished the basic fabrication and am testing the model out. Im facing a problem with the gyroscope. It seems to indicate calibration, however the the LED on the arduino lows only when the SLC and SDA pins are NOT connected. The 13th pin on the arduino seems to control the rotation. There is actuation of the motor to run, but it is arbitrary. It is not according to the corresponding movement of gyroscope. I have enclosed 2 videos. Please let me know if you find any errors.

    VID-20170507-WA0005.mp4VID-20170507-WA0002.mp4
    author
    ziga95 made it!(author)2017-04-30

    Also, the LED's which are supposed to represent the calibration are not switching on. The motors are not running when tilted during the testing process

    IMG_5333.PNGIMG_5329.PNGIMG_5330.PNGIMG_5331.PNGIMG_5332.PNG
    author
    ziga95 made it!(author)2017-04-30

    author
    ihart made it!(author)2017-05-01

    Hi,

    It looks like you have a good start.

    The LED will come on when you hit the deadman switch. it does not indicate calibration. It doesn't look like your LED is coming on so something is wrong there.

    You have to pick where to start your debug. The Saber controller won't get the command to power the wheels from the Arduino if the deadman switch circuit is not closed. I assume that you have tested your motors by applying 24V to them at sime point.

    Also, after you do this initial testing, make sure to shorten and twist all your wires or it will not be reliable.

    author
    ziga95 made it!(author)2017-05-02

    Hi Ira,

    I have tested the motors and they work fine. so do the batteries. Its just that there is no output current leaving from the Arduino board to the deadman switch and hence to the motor driver. However, there is input entering the Arduino at 5V. The lights of all the components are ON, indicating they are working. Im trying to figure out why there is no output from the UNO. Could damage to the terminals be a reason? All the switches are working fine and the circuit was triple checked. Also would there be a problem if we directly load the code available in the instructables page onto the UNO? (after unzipping)

    author
    ihart made it!(author)2017-05-02

    Just to correct one thing you wrote. The deadman switch is an input to the Arduino. It is high impedance and has no output current. If you ground that input, it enables the Arduino to drive the Saber.

    Yes, you should unzip the code you downloaded and program your Uno. I assume that you have proven that you can program the Uno with some blinky code to prove that programming it works?

    It's possible that you damaged the Uno outputs but I would rule out everything else before you assume that.

    Also, look in the debug section. You should be able to print out the gyro angle to confirm the Uno and setup are working.

    author
    betwys1 made it!(author)2017-04-30

    This is a really REALLY brilliant electronic implementation; described so professionally that I really felt this was repeatable by anyone, as you claimed.

    author
    ihart made it!(author)2017-05-01

    Thank you!

    author
    DeveshV made it!(author)2017-04-25

    https://youtu.be/Jxih4E2yXvM

    link for working of my project ..

    author
    ihart made it!(author)2017-05-01

    Nice build! Thank you for sharing your presentation. I hope you get an A...

    author
    Claudio_Scatena made it!(author)2017-04-27

    Hi Ira,
    Thanks
    for the suggestions but I think the problems I had at the beginning
    maybe were because I still had to learn in Seg's guide.
    Now I have to say it goes much better even if I think the motors are a bit small of power. Maybe because I'm a bit fat.

    Sometimes
    it happens to me that the Seg is blocking instantly and I have to
    figure out whether it depends on the Deadman button faulty or if the
    card Sabertooth for an overload. For this I have to control better

    Anyway, I'm happy about everything.
    Thanks again Ira.
    I posted on Youtube 2 small videos that show me in action.
    Here follows the path:

    Ciao

    author
    ihart made it!(author)2017-05-01

    Hi Claudio,

    Thanks for sharing your videos! That looks like a great build. The background in your country looks beautiful. Similar to Tuscany where we vacationed a while ago.

    author
    GerardZ1 made it!(author)2017-05-01

    An Amazing and wonderful contribution to Children and the future....

    author
    Claudio_Scatena made it!(author)2017-04-22

    Good morning Ira,
    I would first like to thank you for sharing your project with me and I believe in many other people.
    For the operation I used your code in which I also inserted the power monitor of Fabio Gastaldi. Of its software at the beginning I had tried and modified the steer with the potentiometer but then I went back because your buttons gave me more
    confidence.
    I also modified the row in the file MPU6050 as suggested by Fabio and I have made remarkable progress.
    Now my Seg works really well but I have a little one problem and I would ask for.
    It seems to me that after several start / stop the control angle changes.
    I try to explain it better.
    While at the beginning i just tilt very little to get moving, after several operations this angle changes considerably and I am forced to tilt a lot.
    In that case I have to turn it OFF and ON again to be able to reactivate.
    It seems to me that the balancing buttons do not produce affect about the movement.
    Do you have an explanation for this problem?
    Thank you again

    Claudio

    006_a.jpg010_a.jpg014_a.jpg016_a.jpg013_a.jpg
    author
    ihart made it!(author)2017-04-25

    Hi Claudio,

    What a cool looking build.

    I haven't had the issue you are observing with the starting tilt angle changing over time. Could it be that there is some kind of intermittent short with the tilt wire? That might explain the built up tilt offset as you ride.

    Please post a youtube video of your machine running for us when you have a chance.

    author
    fgastald made it!(author)2017-04-21

    Hi Ira,

    finally i was able to make things working with the new setup. I had strange values from MPU and motor that often goes 100%.

    In the new setup i have 500W motors and a sabertooth 2x32. (see images)

    I modified the settings from 0x01 to 0x02 (as in my previous setup with 250w motors)

    I added a STEP DOWN from 24v to 12v circuit to power the Arduino, instead of using 5v from sabertooth.

    I twisted cables as you wrote several time :)

    Now it works! I just need to make it more responsive, which parameters do you think i should touch at the beginning?

    Attached some pictures

    Thanks again for the great help

    regards

    Fabio

    StepDown.jpgUnder1.jpgUnder2.jpgUnder3.jpgUnder4.jpg
    author
    ihart made it!(author)2017-04-25

    That's great news. Twisting the wires is important. Big motors give off a lot of electromagnetic energy which couples into the low voltage signal wires and corrupts the I2C communications. Twisting cancels out this noise.

    I don't believe that the "modified the settings from 0x01 to 0x02" mod does anything. it would be interesting to try backing that out again as an experiment to see if you notice a difference.

    To modify the gain, change this at the top of the code. I would start with ACCEL_GAIN:

    //Variables for GYRO_GAIN and ACCEL_GAIN

    #define ACCEL_GAIN 18.0 //

    #define GYRO_GAIN 5.0 //

    Post a youtube video of the machine in motion if you can.

    About This Instructable

    527,241views

    2,204favorites

    License:

    Bio: I'm an Electrical Engineer with "engineer disease." I need to always be making, fixing or learning about something.
    More by ihart:Update: Segway Clone - Stronger Design ModificationWood Bike Rack for 5 Bikes, Fast and Low Cost BuildRideable Segway Clone - Low Cost and Easy Build
    Add instructable to: