{"id":762,"date":"2026-06-12T15:16:15","date_gmt":"2026-06-12T07:16:15","guid":{"rendered":"https:\/\/projectleon.net\/make\/blog\/convert-bicycle-self-balancing-arduino-mpu6050-reaction-wheel-farsi\/"},"modified":"2026-06-12T15:16:16","modified_gmt":"2026-06-12T07:16:16","slug":"convert-bicycle-self-balancing-arduino-mpu6050-reaction-wheel-farsi","status":"publish","type":"post","link":"https:\/\/projectleon.net\/make\/blog\/convert-bicycle-self-balancing-arduino-mpu6050-reaction-wheel-farsi\/","title":{"rendered":"\u062a\u0628\u062f\u06cc\u0644 \u062f\u0648\u0686\u0631\u062e\u0647 \u0645\u0639\u0645\u0648\u0644\u06cc \u0628\u0647 \u062f\u0648\u0686\u0631\u062e\u0647 \u062e\u0648\u062f\u0645\u062a\u0648\u0627\u0632\u0646 \u0628\u0627 Arduino \u0648 MPU-6050 (\u0641\u0627\u0631\u0633\u06cc)"},"content":{"rendered":"<div class='hero-image-container' style='margin-bottom:28px;border-radius:14px;overflow:hidden;box-shadow:0 4px 18px rgba(0,0,0,0.08)'>\n<img src='https:\/\/projectleon.net\/make\/wp-content\/uploads\/2026\/06\/post142-self-balancing-bicycle.jpg' alt='\u062f\u0648\u0686\u0631\u062e\u0647 \u062e\u0648\u062f\u0645\u062a\u0648\u0627\u0632\u0646 DIY Reaction Wheel \u0622\u0631\u062f\u0648\u06cc\u0646\u0648' style='width:100%;height:auto;display:block' loading='eager'\/>\n<\/div>\n<div class='beginner-intro' style='background:#f0f7ff;border-right:4px solid #2e5fb6;padding:16px 20px;border-radius:10px;margin-bottom:22px'>\n<h2 style='margin-top:0'>\u062f\u0648\u0686\u0631\u062e\u0647 \u0686\u0637\u0648\u0631 \u0628\u062f\u0648\u0646 \u0631\u0627\u0646\u0646\u062f\u0647 \u062a\u0639\u0627\u062f\u0644 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u062f\u061f<\/h2>\n<p>\u062f\u0648 \u0631\u0648\u0634 \u0627\u0635\u0644\u06cc \u0628\u0631\u0627\u06cc \u062a\u0639\u0627\u062f\u0644 \u062f\u0648\u0686\u0631\u062e\u0647 \u0628\u062f\u0648\u0646 \u0631\u0627\u0646\u0646\u062f\u0647 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f: \u0631\u0648\u0634 <strong>\u0641\u0631\u0645\u0627\u0646 \u0632\u062f\u0646<\/strong> (\u0645\u062b\u0644 \u067e\u0633\u062a \u0645\u0648\u062a\u0648\u0631\u0633\u06cc\u06a9\u0644\u062a) \u0648 \u0631\u0648\u0634 <strong>\u0686\u0631\u062e \u0648\u0627\u06a9\u0646\u0634\u06cc (Reaction Wheel)<\/strong>. \u062f\u0631 \u0631\u0648\u0634 \u062f\u0648\u0645 \u06cc\u06a9 \u062f\u06cc\u0633\u06a9 \u0633\u0646\u06af\u06cc\u0646 \u0628\u0627 \u0645\u0648\u062a\u0648\u0631 BLDC \u062f\u0631 \u0628\u0627\u0644\u0627\u06cc \u062f\u0648\u0686\u0631\u062e\u0647 \u0646\u0635\u0628 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0648\u0642\u062a\u06cc \u062f\u0648\u0686\u0631\u062e\u0647 \u06a9\u062c \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0627\u06cc\u0646 \u062f\u06cc\u0633\u06a9 \u062e\u0644\u0627\u0641 \u062c\u0647\u062a \u0645\u06cc\u200c\u0686\u0631\u062e\u062f \u0648 \u0628\u0627 \u0627\u062b\u0631 <strong>\u0645\u0645\u0627\u0646 \u0627\u06cc\u0646\u0631\u0633\u06cc \u0632\u0627\u0648\u06cc\u0647\u200c\u0627\u06cc (Angular Momentum)<\/strong> \u062f\u0648\u0686\u0631\u062e\u0647 \u0631\u0627 \u0633\u0631\u067e\u0627 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u062f \u2014 \u062f\u0642\u06cc\u0642\u0627\u064b \u0645\u062b\u0644 \u0641\u0636\u0627\u067e\u06cc\u0645\u0627\u0647\u0627 \u06a9\u0647 \u0628\u0627 reaction wheel \u062c\u0647\u062a\u200c\u06af\u06cc\u0631\u06cc \u0631\u0627 \u062d\u0641\u0638 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n<p>\u0627\u06cc\u0646 \u0631\u0648\u0634 \u0628\u0631\u0627\u06cc \u062f\u0648\u0686\u0631\u062e\u0647 \u062f\u0631 \u062c\u0627\u06cc \u062b\u0627\u0628\u062a (\u067e\u0627\u0631\u06a9\u200c\u0634\u062f\u0647) \u0639\u0627\u0644\u06cc \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u062d\u0631\u06a9\u062a \u0646\u062f\u0627\u0631\u062f \u2014 \u0628\u0631\u062e\u0644\u0627\u0641 \u0631\u0648\u0634 \u0641\u0631\u0645\u0627\u0646 \u06a9\u0647 \u0628\u0627\u06cc\u062f \u062f\u0648\u0686\u0631\u062e\u0647 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0631\u06a9\u062a \u0628\u0627\u0634\u062f \u062a\u0627 \u062a\u0639\u0627\u062f\u0644 \u0628\u0631\u0642\u0631\u0627\u0631 \u0634\u0648\u062f.<\/p>\n<\/div>\n<div style='background:#fff8e1;border:1px solid #ffd54f;border-radius:10px;padding:16px;margin-bottom:22px'>\n<h3 style='margin-top:0'>&#x1f6e0;&#xfe0f; \u06a9\u0627\u0631\u062a \u067e\u0631\u0648\u0698\u0647<\/h3>\n<table style='width:100%;border-collapse:collapse'>\n<tr>\n<td style='padding:6px;font-weight:bold;width:40%'>\u0686\u0647 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645\u061f<\/td>\n<td style='padding:6px'>\u062f\u0648\u0686\u0631\u062e\u0647 \u06f2\u06f6 \u0627\u06cc\u0646\u0686 \u0628\u0627 Reaction Wheel \u0631\u0648\u06cc \u0641\u0631\u06cc\u0645<\/td>\n<\/tr>\n<tr style='background:#fffde7'>\n<td style='padding:6px;font-weight:bold'>\u0628\u0648\u062f\u062c\u0647<\/td>\n<td style='padding:6px'>~\u06f1.\u06f8M \u062a\u0648\u0645\u0627\u0646 (\u0628\u0627 \u0645\u0648\u062a\u0648\u0631 BLDC \u0648 VESC)<\/td>\n<\/tr>\n<tr>\n<td style='padding:6px;font-weight:bold'>\u0632\u0645\u0627\u0646<\/td>\n<td style='padding:6px'>\u06f1 \u0622\u062e\u0631 \u0647\u0641\u062a\u0647 \u0633\u0627\u062e\u062a + \u06f1 \u0631\u0648\u0632 \u062a\u0646\u0638\u06cc\u0645 PID<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<h2>BOM<\/h2>\n<table style='width:100%;border-collapse:collapse;margin-bottom:18px'>\n<thead>\n<tr style='background:#e8f0fe'>\n<th style='padding:9px;border:1px solid #ddd;text-align:right'>\u0642\u0637\u0639\u0647<\/th>\n<th style='padding:9px;border:1px solid #ddd;text-align:right'>\u0645\u0634\u062e\u0635\u0627\u062a<\/th>\n<th style='padding:9px;border:1px solid #ddd;text-align:right'>\u0642\u06cc\u0645\u062a<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style='padding:8px;border:1px solid #ddd'>\u062f\u0648\u0686\u0631\u062e\u0647 \u06a9\u0627\u0631\u06a9\u0631\u062f\u0647<\/td>\n<td style='padding:8px;border:1px solid #ddd'>\u06f2\u06f6 \u0627\u06cc\u0646\u0686 \u2014 \u0647\u0631 \u0645\u062f\u0644<\/td>\n<td style='padding:8px;border:1px solid #ddd'>~\u06f5\u06f0\u06f0K<\/td>\n<\/tr>\n<tr style='background:#fafafa'>\n<td style='padding:8px;border:1px solid #ddd'>\u0645\u0648\u062a\u0648\u0631 BLDC 5065 140KV<\/td>\n<td style='padding:8px;border:1px solid #ddd'>\u0628\u0631\u0627\u06cc reaction wheel<\/td>\n<td style='padding:8px;border:1px solid #ddd'>~\u06f4\u06f0\u06f0K<\/td>\n<\/tr>\n<tr>\n<td style='padding:8px;border:1px solid #ddd'>VESC 4.12 \u06cc\u0627 FSESC<\/td>\n<td style='padding:8px;border:1px solid #ddd'>\u062f\u0631\u0627\u06cc\u0648\u0631 FOC \u0645\u0648\u062a\u0648\u0631<\/td>\n<td style='padding:8px;border:1px solid #ddd'>~\u06f5\u06f0\u06f0K<\/td>\n<\/tr>\n<tr style='background:#fafafa'>\n<td style='padding:8px;border:1px solid #ddd'>\u062f\u06cc\u0633\u06a9 \u0622\u0644\u0648\u0645\u06cc\u0646\u06cc\u0648\u0645 \u06f2\u06f0cm \u0642\u0637\u0631\u060c \u06f1cm \u0636\u062e\u0627\u0645\u062a<\/td>\n<td style='padding:8px;border:1px solid #ddd'>\u0648\u0632\u0646 reaction wheel<\/td>\n<td style='padding:8px;border:1px solid #ddd'>~\u06f2\u06f0\u06f0K<\/td>\n<\/tr>\n<tr>\n<td style='padding:8px;border:1px solid #ddd'>Arduino Mega 2560<\/td>\n<td style='padding:8px;border:1px solid #ddd'>\u06a9\u0646\u062a\u0631\u0644 PID<\/td>\n<td style='padding:8px;border:1px solid #ddd'>~\u06f2\u06f5\u06f0K<\/td>\n<\/tr>\n<tr style='background:#fafafa'>\n<td style='padding:8px;border:1px solid #ddd'>MPU-6050<\/td>\n<td style='padding:8px;border:1px solid #ddd'>IMU<\/td>\n<td style='padding:8px;border:1px solid #ddd'>~\u06f4\u06f0K<\/td>\n<\/tr>\n<tr>\n<td style='padding:8px;border:1px solid #ddd'>\u0628\u0627\u062a\u0631\u06cc LiPo 4S 5000mAh<\/td>\n<td style='padding:8px;border:1px solid #ddd'>\u06f1\u06f4.\u06f8V \u0628\u0631\u0627\u06cc VESC<\/td>\n<td style='padding:8px;border:1px solid #ddd'>~\u06f6\u06f0\u06f0K<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>\u0645\u062d\u0627\u0633\u0628\u0647 \u0645\u0645\u0627\u0646 \u0627\u06cc\u0646\u0631\u0633\u06cc \u062f\u06cc\u0633\u06a9<\/h2>\n<p>\u0628\u0631\u0627\u06cc \u06cc\u06a9 \u062f\u06cc\u0633\u06a9 \u062a\u0648\u067e\u0631 \u0628\u0627 \u062c\u0631\u0645 m \u0648 \u0634\u0639\u0627\u0639 r: <strong>I = \u00bd \u00d7 m \u00d7 r\u00b2<\/strong><\/p>\n<p>\u062f\u06cc\u0633\u06a9 \u0622\u0644\u0648\u0645\u06cc\u0646\u06cc\u0648\u0645 \u06f2\u06f0cm \u0642\u0637\u0631\u060c \u06f1cm \u0636\u062e\u0627\u0645\u062a: m \u2248 \u06f0.\u06f8\u06f5kg \u2192 I = \u00bd \u00d7 \u06f0.\u06f8\u06f5 \u00d7 \u06f0.\u06f1\u00b2 = <strong>0.00425 kg\u00b7m\u00b2<\/strong><\/p>\n<p>\u0628\u0627 \u0686\u0631\u062e\u0634 \u06f3\u06f0\u06f0\u06f0 RPM \u06af\u0634\u062a\u0627\u0648\u0631 \u0648\u0627\u06a9\u0646\u0634\u06cc: T = I \u00d7 \u03b1 \u2014 \u0628\u0631\u0627\u06cc \u0627\u0635\u0644\u0627\u062d \u06f1\u00b0\/s\u00b2 \u0646\u06cc\u0627\u0632 \u0627\u0633\u062a: T = 0.00425 \u00d7 0.0175 \u2248 <strong>74 mN\u00b7m<\/strong> \u2014 \u06a9\u0627\u0641\u06cc \u0628\u0631\u0627\u06cc \u062f\u0648\u0686\u0631\u062e\u0647 \u06f1\u06f5kg.<\/p>\n<h2>\u0645\u0631\u0627\u062d\u0644 \u0646\u0635\u0628 Reaction Wheel<\/h2>\n<ol style='line-height:2.2'>\n<li>\u06cc\u06a9 \u067e\u0627\u06cc\u0647 L-\u0634\u06a9\u0644 \u0627\u0632 \u0622\u0644\u0648\u0645\u06cc\u0646\u06cc\u0648\u0645 \u06f5mm \u0631\u0648\u06cc \u0644\u0648\u0644\u0647 \u0627\u0641\u0642\u06cc \u0641\u0631\u06cc\u0645 \u062f\u0648\u0686\u0631\u062e\u0647 (\u0628\u0627\u0644\u0627\u062a\u0631\u06cc\u0646 \u0646\u0642\u0637\u0647) \u062c\u0648\u0634 \u06cc\u0627 \u0628\u0628\u0646\u062f.<\/li>\n<li>\u0645\u0648\u062a\u0648\u0631 BLDC \u0631\u0627 \u062f\u0631 \u0645\u0631\u06a9\u0632 \u062f\u06cc\u0633\u06a9 \u0628\u0627 Hub Adapter \u0648\u0635\u0644 \u06a9\u0646.<\/li>\n<li>\u0645\u062c\u0645\u0648\u0639\u0647 \u062f\u06cc\u0633\u06a9+\u0645\u0648\u062a\u0648\u0631 \u0631\u0627 \u0639\u0645\u0648\u062f \u0628\u0631 \u0635\u0641\u062d\u0647 \u062f\u0648\u0686\u0631\u062e\u0647 (\u0645\u062d\u0648\u0631 \u0686\u0631\u062e\u0634 = \u0645\u062d\u0648\u0631 \u0637\u0648\u0644\u06cc) \u0646\u0635\u0628 \u06a9\u0646.<\/li>\n<li>MPU-6050 \u0631\u0627 \u0631\u0648\u06cc \u0641\u0631\u06cc\u0645 \u0646\u0635\u0628 \u06a9\u0646 \u2014 \u0645\u062d\u0648\u0631 X \u0628\u0627\u06cc\u062f \u0645\u0648\u0627\u0632\u06cc \u062c\u0647\u062a \u062d\u0631\u06a9\u062a \u0628\u0627\u0634\u062f.<\/li>\n<li>VESC \u0631\u0627 \u0632\u06cc\u0631 \u0641\u0631\u06cc\u0645 \u0628\u0627 \u062a\u0633\u0645\u0647 \u0648\u0644\u06a9\u0631\u0648 \u062b\u0627\u0628\u062a \u06a9\u0646.<\/li>\n<\/ol>\n<h2>\u06a9\u062f PID \u0628\u0631\u0627\u06cc Reaction Wheel<\/h2>\n<pre style='background:#1e1e1e;color:#d4d4d4;padding:16px;border-radius:10px;overflow-x:auto;font-size:12px;margin-bottom:18px'><code>#include &lt;Wire.h&gt;\n#include &lt;MPU6050.h&gt;\n\nMPU6050 imu;\n\/\/ VESC \u062f\u0631\u0627\u06cc\u0648 \u0627\u0632 \u0637\u0631\u06cc\u0642 UART \u06cc\u0627 PWM\n\/\/ \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644 \u0627\u0632 PWM \u0631\u0648\u06cc D9 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f (0-255 \u2192 \u0633\u0631\u0639\u062a BLDC)\n\nfloat Kp=120.0, Ki=2.0, Kd=8.0;\nfloat angle=0, setpoint=0;\nfloat errSum=0, lastErr=0;\nunsigned long lastTime;\n\nvoid setup(){\n  Wire.begin(); imu.initialize();\n  pinMode(9, OUTPUT);\n  lastTime = millis();\n}\n\nvoid loop(){\n  int16_t ax,ay,az,gx,gy,gz;\n  imu.getMotion6(&ax,&ay,&az,&gx,&gy,&gz);\n  float dt = (millis()-lastTime)\/1000.0; lastTime=millis();\n\n  \/\/ roll angle (\u0686\u067e-\u0631\u0627\u0633\u062a)\n  float accelRoll = atan2(ax, az)*180.0\/PI;\n  angle = 0.98*(angle+(gz\/131.0)*dt)+0.02*accelRoll;\n\n  float err = setpoint - angle;\n  errSum += err*dt; errSum=constrain(errSum,-50,50);\n  float dErr=(err-lastErr)\/dt; lastErr=err;\n  float out = Kp*err + Ki*errSum + Kd*dErr;\n  \/\/ \u062a\u0628\u062f\u06cc\u0644 \u062e\u0631\u0648\u062c\u06cc PID \u0628\u0647 \u0633\u0631\u0639\u062a reaction wheel\n  \/\/ \u0645\u062b\u0628\u062a = \u0686\u0631\u062e\u0634 \u06cc\u06a9 \u062c\u0647\u062a\u060c \u0645\u0646\u0641\u06cc = \u0645\u0639\u06a9\u0648\u0633\n  int pwmVal = 128 + constrain((int)out,-128,127);\n  analogWrite(9, pwmVal);\n  delay(5);\n}<\/code><\/pre>\n<div style='display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px;margin:20px 0'>\n<iframe width='100%' height='280' src='https:\/\/www.youtube.com\/embed\/YNpgGnWH-o8' title='Self Balancing Bicycle Reaction Wheel Arduino' frameborder='0' allowfullscreen><\/iframe><br \/>\n<iframe width='100%' height='280' src='https:\/\/www.youtube.com\/embed\/2_GoxRy-3aU' title='VESC Setup Tutorial Beginner' frameborder='0' allowfullscreen><\/iframe>\n<\/div>\n<ul>\n<li><a href='https:\/\/vesc-project.com' target='_blank'>VESC Project \u2014 \u0641\u0631\u06cc\u0645\u0648\u0631 \u0648 \u0645\u0633\u062a\u0646\u062f\u0627\u062a<\/a><\/li>\n<li><a href='https:\/\/www.aparat.com\/result\/%D8%AF%D9%88%DA%86%D8%B1%D8%AE%D9%87+%D8%AE%D9%88%D8%AF%D9%85%D8%AA%D9%88%D8%A7%D8%B2%D9%86' target='_blank'>\u0622\u067e\u0627\u0631\u0627\u062a: \u062f\u0648\u0686\u0631\u062e\u0647 \u062e\u0648\u062f\u0645\u062a\u0648\u0627\u0632\u0646 \u0641\u0627\u0631\u0633\u06cc<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\u0622\u0645\u0648\u0632\u0634 \u062a\u0628\u062f\u06cc\u0644 \u06cc\u06a9 \u062f\u0648\u0686\u0631\u062e\u0647 \u0645\u0639\u0645\u0648\u0644\u06cc \u0628\u0647 \u062f\u0648\u0686\u0631\u062e\u0647 \u062e\u0648\u062f\u0645\u062a\u0648\u0627\u0632\u0646 \u0628\u0627 \u0686\u0631\u062e \u0648\u0627\u06a9\u0646\u0634\u06cc (reaction wheel)\u060c MPU-6050 \u0648 \u0622\u0631\u062f\u0648\u06cc\u0646\u0648 Mega. \u0646\u0635\u0628 \u0645\u0648\u062a\u0648\u0631 BLDC\u060c \u06a9\u0646\u062a\u0631\u0644 PID \u0648 \u062a\u0633\u062a \u062f\u0631 \u062c\u0627\u06cc \u062b\u0627\u0628\u062a.<\/p>\n","protected":false},"author":1,"featured_media":761,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"pagelayer_contact_templates":[],"_pagelayer_content":"","footnotes":""},"categories":[19,16],"tags":[135,396,73,547,48,21,548,546],"class_list":["post-762","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials-2","category-ugv","tag-bldc","tag-mpu-6050","tag-pid","tag-reaction-wheel","tag-ugv","tag-arduino","tag-548","tag-546"],"_links":{"self":[{"href":"https:\/\/projectleon.net\/make\/wp-json\/wp\/v2\/posts\/762","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/projectleon.net\/make\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/projectleon.net\/make\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/projectleon.net\/make\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/projectleon.net\/make\/wp-json\/wp\/v2\/comments?post=762"}],"version-history":[{"count":1,"href":"https:\/\/projectleon.net\/make\/wp-json\/wp\/v2\/posts\/762\/revisions"}],"predecessor-version":[{"id":763,"href":"https:\/\/projectleon.net\/make\/wp-json\/wp\/v2\/posts\/762\/revisions\/763"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/projectleon.net\/make\/wp-json\/wp\/v2\/media\/761"}],"wp:attachment":[{"href":"https:\/\/projectleon.net\/make\/wp-json\/wp\/v2\/media?parent=762"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/projectleon.net\/make\/wp-json\/wp\/v2\/categories?post=762"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/projectleon.net\/make\/wp-json\/wp\/v2\/tags?post=762"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}