منتديات جيطان
السلام عليكم....
اهلا بكم بموقعنا الخاص بالالكترونيات
اخي الكريم لم تقم بتسجيل الدخول بعد
لتسجيل الدخول اضغط على دخول
للاشتراك اضغط على تسجيل

شاكرين لكم حسن الزيارة
.............. اكاديمية المهد


جيطان
 
الرئيسيةالرئيسية  البوابةالبوابة  اليوميةاليومية  مكتبة الصورمكتبة الصور  س .و .جس .و .ج  بحـثبحـث  المجموعاتالمجموعات  All pruduct  التسجيلالتسجيل  دخولدخول  Arduino  LCDs & LEDs  Motors & Drivers  Programmers & Kits   Power & Battery  Robotics Kits  Resistors   Sensors & Modules  Wireless Modules  
جديد اصبح بامكانكم مشاركتنا مساهماتكم واسئلتكم في كل ما يخص مشاريع الاردوين والرازبيري والبيك
مطلوب ادمن لادارة المنتدى شرط ان يكون متفرغ على من لديه الاستعداد مراسلتي ع الايميل hooxs.hooxs@yahoo.com
study english quotes هو قسم جديد للحكم المميزة نرجو ان ينال اعجابكم study
مطلوب ادمن لادارة المنتدى شرط ان يكون متفرغ على من لديه الاستعداد مراسلتي ع الايميل hooxs.hooxs@yahoo.com
جديد قسم مشاريع الاردوينو اضغط على الصورة للقرائة والمساهمة في المشاريع

شاطر | 
 

 تصميم كواد كوبتر بالاردوينو arduino quad copter

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل 
كاتب الموضوعرسالة
Admin
Admin


عدد المساهمات : 655
تاريخ التسجيل : 25/03/2010
العمر : 24
الموقع : عمان - الاردن

مُساهمةموضوع: تصميم كواد كوبتر بالاردوينو arduino quad copter   الأحد يوليو 13, 2014 12:41 am

تصميم كواد كوبتر بالاردوينو
arduino quad copter




َQuad Cpter Design





ََ#define X_ZERO 332
#define Y_ZERO 324
#define Z_ZERO 396
#define PITCH_ZERO 249
#define ROLL_ZERO 249
#define YAW_ZERO 248

#define GYRO_CON 1.47
#define ACCEL_CON 0.93

#define TIME_CON 0.02
#define SEN_CON 0.95

//motor speed vars
int speeds[4];

//gyro inputs - current tilt vars
float pitch, roll, yaw;
int pitchzero, rollzero;
//accelerometer inputs - current acceleration vars
float xin, yin, zin;

//human inputs - control info vars
float pitchin, rollin, yawin, zhuman;

//random other vars
float xaverage=0, yaverage=0;
int y=0;
int blah;

//proportionality constants
float p=2.5; // P proportionality constant
float d=0.5; // D proportionality constant

void setup() {
zhuman=0;
rollin=0;
Serial.begin(9600);
for(int x=6; x<10; x++) {
pinMode(x, OUTPUT);
}

//send upper bound for human inputs to the motor speed controllers
for(int x=6; x<10; x++) {
pulsout(x,2000);
}
delay(5000);

//get zeros for pitch and roll human inputs
for(int x=0; x<10; x++) {
y=y+analogRead(3);
}
pitchzero=y/10;
y=0;
for(int x=0; x<10; x++) {
y=y+analogRead(4);
}
rollzero=y/10;
}

void loop () {
//accelerometer and gyro inputs ranged -232 to 232?
xin=(analogRead(0)-X_ZERO)*ACCEL_CON;
yin=(analogRead(1)-Y_ZERO)*ACCEL_CON;
zin=(analogRead(2)-Z_ZERO)*ACCEL_CON;
pitch=(pitchzero-analogRead(3))*GYRO_CON;
roll=(rollzero-analogRead(4))*GYRO_CON;
yaw=(analogRead(5)-YAW_ZERO)*GYRO_CON;

//get human inputs through radio here range of -30 to 30 except for zhuman which has an ideal range of 1000-2000, only 2 pulses per loop
if(blah==0) {
yawin=0.06*((signed int) pulseIn(2,HIGH)-1500);
pitchin=0.06*((signed int) pulseIn(3,HIGH)-1500);
blah=1;
}
else {
zhuman=(signed int) pulseIn(4,HIGH);
rollin=0.06*((signed int) pulseIn(5,HIGH)-1400); //1400 instead of 1500 is to correct for the underpowered motor #4 by trimming it in code
blah=0;
}

//averaging, etc.
xaverage= SEN_CON *( xaverage + TIME_CON * pitch) + ( 1 - SEN_CON ) * xin;
yaverage= SEN_CON *( yaverage + TIME_CON * roll) + ( 1 - SEN_CON ) * yin;

//calculate the motor speeds
if(zhuman<1150) {
for(int x=0; x<4; x++) {
speeds[x]=zhuman;
}
}
else {
if(zhuman > 1450) {
zhuman = 1450;
}
speeds[0] = zhuman - p*(xaverage - pitchin) - p*(yawin) - d*pitch;
speeds[1] = zhuman - p*(pitchin - xaverage) - p*(yawin) + d*pitch;
speeds[2] = zhuman - p*(yaverage - rollin) + p*(yawin) - d*roll;
speeds[3] = zhuman - p*(rollin - yaverage) + p*(yawin) + d*roll;
}
//set the upper and lower bounds for motor speeds (1000=no speed, 1600=upper speed limit, 2000=maximum possible speed)
for(int x=0; x<4; x++) {
//speed limit between 1000 and 1600
if(speeds[x]<1000) {
speeds[x]=1000;
}
if(speeds[x]>1600) {
speeds[x]=1600;
}
}

//pulsouts to motor speed controllers
for(int x=0; x<4; x++) {
pulsout(x+6,speeds[x]);
}
}
void pulsout (int pin, int duration) {
digitalWrite(pin, HIGH);
delayMicroseconds(duration);
digitalWrite(pin, LOW);
}
الرجوع الى أعلى الصفحة اذهب الى الأسفل
http://jitan.hooxs.com
 
تصميم كواد كوبتر بالاردوينو arduino quad copter
استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
منتديات جيطان :: قسم المشاريع الصغيرة :: قسم الاردوينو-
انتقل الى: