self balancing robot - schematic

hi friends,

i am working on a project - self balancing robot using mpu 6050. details i gathered from
having sorce code also. from that code i got some idea for wiring the robo. but still missing few connections.
few lines i mentioned in red - here i have some doubts in connection.
can anyone help me with the schematic?

main source code:

#include <Wire.h>
#include “I2Cdev.h”
#include “MPU6050_6Axis_MotionApps20.h”

#define LED 13

#define PWM_L 10
#define PWM_R 11

#define DIR_L1 6
#define DIR_L2 12
#define DIR_R1 8
#define DIR_R2 9

#define SPD_INT_L 3//1
#define SPD_PUL_L 4

#define SPD_INT_R 7
#define SPD_PUL_R 5

#define MPU_INT 2//0

#define K_AGL_AD A0
#define K_AGL_DOT_AD A1
#define K_POS_AD A2
#define K_POS_DOT_AD A3

MPU6050 mpu; // AD0 low = 0x68

// MPU control/status vars
bool dmpReady = false; // set true if DMP init was successful
uint8_t mpuIntStatus; // holds actual interrupt status byte from MPU
uint8_t devStatus; // return status after each device operation (0 = success, !0 = error)
uint16_t packetSize; // expected DMP packet size (default is 42 bytes)
uint16_t fifoCount; // count of all bytes currently in FIFO
uint8_t fifoBuffer[64]; // FIFO storage buffer

// orientation/motion vars
Quaternion q; // [w, x, y, z] quaternion container
VectorFloat gravity; // [x, y, z] gravity vector
int16_t gyro[3]; // [x, y, z] gyro vector
float ypr[3]; // [yaw, pitch, roll] yaw/pitch/roll container and gravity vector

double K_angle,K_angle_dot,K_position,K_position_dot;
double K_angle_AD,K_angle_dot_AD,K_position_AD,K_position_dot_AD;
double position_add,position_dot;
double position_dot_filter;
int speed_real_l,speed_real_r;
int pwm,pwm_l,pwm_r;
int Turn_Need,Speed_Need;
float angle, angular_rate;
bool blinkState = false;
int rx_count=0;
byte buf_tmp=0;
uint8_t i2cData[14]; // Buffer for I2C data

volatile bool mpuInterrupt = false; // indicates whether MPU interrupt pin has gone high
void dmpDataReady()
mpuInterrupt = true;

void setup()

Wire.begin();// join I2C bus (I2Cdev library doesn’t do this automatically)
TWBR = 24; // 400kHz I2C clock (200kHz if CPU is 8MHz)
// Serial.begin(9600);

// initialize device
Serial.println(F(“Initializing I2C devices…”));

// verify connection
Serial.println(F(“Testing device connections…”));
Serial.println(mpu.testConnection() ? F(“MPU6050 connection successful”) : F(“MPU6050 connection failed”));
code goes like this…
pls refer

thanks in advance…

Hi sudheesh19, I'm currently using the same code to get my own Self Balancing Robot working.

The SPD_PUL_L 4 and SPD_PUL_R 5 are encoder connections. The SPD_INT_L 3 and SPD_INT_R 7 are the AttachInterrupt functions, related to encoder reading. The K_AGL_AD A0, K_AGL_DOT_AD A1, K_POS_AD A2 and K_POS_DOT_AD A3, are from the PID_PWM tunning, you can use a potentiometer to calibrate them.

The only part that I've not been able to understand is this: K_angle = 34 * 25.6; K_angle_dot = 2 * 25.6; K_position = 0.8 * 0.209; K_position_dot = 1.09 * 20.9;

I've looked everywhere trying to find a reason for those numbers, specially the 34, 2, 0.8 and the 1.09, but I've failed miserably.

If you have info regarding that part, please, let me know.

Hi Mr. JoshepKerr. i am making the same balance car. But it doesn't work. Can you give me the schematic of your project. I will really appreciate. My gmail: