www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 公眾號精選 > 嵌入式基地

1、賽題回顧

2、硬件說明

  1. 整個模塊分上下三層:最下層為亞克力板固定四個8520電機(jī),中間層為電機(jī)驅(qū)動電路板、各個模塊接口等,上層為主控核心板;

  2. 電機(jī)兩個正轉(zhuǎn),兩個反轉(zhuǎn),分別對應(yīng)X、Y的+/-兩個方向;螺旋槳兩正兩反,在這里螺旋槳做推力方向,可以良好的避免異常情況下的射槳等極端情況;

  3. 傳感器:MPU6050陀螺儀模塊

  4. 點狀激光頭 –固定在底部亞克力板上

  5. 電機(jī)使用8520空心杯電機(jī),電氣參數(shù)如下:
    電機(jī)型號:8520空心杯電機(jī)(2S) 重量:5.3g
    工作電壓:5~7.4V DC 堵轉(zhuǎn)電流:8A
    空載電流:100mA 空載轉(zhuǎn)速:50000RPM
    負(fù)載電流:1.2A 負(fù)載轉(zhuǎn)速:44000RPM

3、算法分析

3.1、基礎(chǔ)知識

  • 當(dāng)只有一個方向的水平擺動的情形如x方向的擺動時;根據(jù)定義,我們可將系統(tǒng)理想化為單擺模型,因此有:


    上述(1)為簡諧運(yùn)動的典型運(yùn)動學(xué)公式,質(zhì)點做簡諧運(yùn)動,其位移與時間的函數(shù)關(guān)系;
    f(x):表示位移

A:表示振幅
w:表示角速度
φ:表示相位
周期T與w之間的關(guān)系為:T=2π/w。

  • 為單擺周期計算公式,結(jié)合實物參數(shù)推算大致的運(yùn)動周期:
    L=擺桿長度=0.3m
    g=重力加速度,我們?nèi)?0m/s2
    因此,推導(dǎo)出下面公式:


    顯然,上面的擺桿我們選取的長度是相對比較短的,假設(shè)極端一點,我們選取擺桿長度為2m,此時公式:


    周期T的取值范圍:1.09s ~2.81s

  • 根據(jù)單擺周期的實驗法去測得周期:這里我們測量的是十次單擺周期秒表計時為11.5s;因此在程序中定義

#define Period 1150 //單擺周期 ms 

如果修改了擺桿長度、機(jī)械結(jié)構(gòu),這個值要去重新測得,然后看公式(1)中的變量

A:振幅,是我們需要設(shè)定的擺動幅度;
φ:相位,在這里可以理解為開始時對應(yīng)的位移,我們設(shè)為0;
w:角速度,w=2π/T 已知
t:自變量,u32 TimeCnt;//運(yùn)動時間計數(shù)器

綜上,可以推導(dǎo)出f(x)


公式(3)是一種典型的數(shù)據(jù)離散歸一的處理方法,具體的意義我們可以理解為在一個運(yùn)動周期內(nèi)每隔5ms(5ms中斷)取點,映射到2π的范圍上,記錄對應(yīng)點位移隨著時間在A范圍內(nèi)正弦函數(shù)周期性變化情況;


3.2、PID算法

3.2.1、參數(shù)設(shè)置

圖1
根據(jù)上圖做設(shè)置以下參數(shù)定義 :
  • 離地高度 float Height=675(單位 mm);

  • 角度由陀螺儀模塊反饋獲得,X 方向為 Roll,Y 方向為 Pitch

  • 激光點位置 float Measure_X,可以通過測得的角度三角轉(zhuǎn)換得出測量值:Measure_X=tan(Roll)Height;加入初始值、弧度單位換算即:Measure_X=(float)tan((Roll-ZHONGZHI_B)/1802PI)Height;

3.2.2、控制簡諧運(yùn)動

  • 控制激光點的位置滿足單擺運(yùn)動因此有目標(biāo)值 Target_X:

Alpha=(float)TimeCnt/Period2PI;
Target_X=Amplitude_xsin(Alpha);    //X 方向目標(biāo)值函數(shù) PID 公式 :pwm=Kpe(k)+Ki*∑e(k)+Kd[e(k)-e(k-1)]

此時可以通過控制 Amplitude_x 來控制擺動的幅度,導(dǎo)入 PID 這里就不做具體的敘述了;這樣就可以控制風(fēng)力擺每個方向做單擺運(yùn)動(簡諧運(yùn)動);

3.2.3、李薩如圖形

定義:李薩如圖形由在互相垂直的方向上的兩個頻率成簡單整數(shù)比的簡諧振動所合成的規(guī)則的、穩(wěn)定的閉合曲線;
要點:互相垂直、 簡諧運(yùn)動、頻率成整數(shù)比
系統(tǒng)滿足要求,我們來看下李薩如圖形的數(shù)學(xué)定義:


設(shè)n=q/p; n稱為曲線的參數(shù),是兩個正弦振動的頻率比; 參數(shù)方程可以寫作:

又有李薩如圖形特殊情形:


若a=b,n=1,則曲線是橢圓
若 φ=π/2 ,則這橢圓其實是圓
若 φ=0 ,則這橢圓其實是線段

對應(yīng)我們的需求,回到我們風(fēng)力擺系統(tǒng)中,當(dāng)風(fēng)力擺同時參與兩個互相垂直方向上的簡諧運(yùn)動,風(fēng)力擺的位移是這兩個振動的矢量和:

  1. n=1,我們沒有必要去調(diào)節(jié)頻率比;因此有我們的目標(biāo)值函數(shù):Target_X=Amplitude_xsin(Alpha); Target_Y=Amplitude_ysin(Alpha+Phase);

  2. 畫直線,相位差φ=0;

  3. 畫圓,a=b,n=1,φ=π/2或者3π/2

  • 這部分內(nèi)容較多,這里就不展開講解了,詳細(xì)的可以查看該資料:https://mbd.pub/o/bread/ZJiakp5y

4、電路設(shè)計

4.1、STM32最小系統(tǒng)

4.2、電源電路

4.3、OLED顯示電路

5、程序設(shè)計

5.1、位置式PID控制

int Position_PID_X (float value,float Target) { static float Bias,Pwm,Integral_bias,Last_Bias;
 Bias=value-Target; //計算偏差 Integral_bias+=Bias; //求出偏差的積分 Pwm=Position_KP*Bias+ //PID控制器比例項 Position_KI*Integral_bias+ //PID控制器積分項 Position_KD*(Bias-Last_Bias); //PID控制器微分項  Last_Bias=Bias; //保存上一次偏差  return Pwm; //增量輸出 } int Position_PID_Y (float value,float Target) { static float Bias,Pwm,Integral_bias,Last_Bias;
 Bias=value-Target; //計算偏差 Integral_bias+=Bias; //求出偏差的積分 Pwm=Position_Kp*Bias+ //PID控制器比例項 Position_Ki*Integral_bias+ //PID控制器積分項 Position_Kd*(Bias-Last_Bias); //PID控制器微分項  Last_Bias=Bias; //保存上一次偏差  return Pwm; //增量輸出 }

5.2、讀取MPU6050姿態(tài)信息

void Read_DMP(void) { unsigned long sensor_timestamp; unsigned char more; long quat[4];

 dmp_read_fifo(gyro, accel, quat, &sensor_timestamp, &sensors, &more); if (sensors & INV_WXYZ_QUAT )
 { 
 q0=quat[0] / q30;
 q1=quat[1] / q30;
 q2=quat[2] / q30;
 q3=quat[3] / q30;
 Pitch = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3; 
 Roll = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3; // roll Yaw = atan2(2*(q1*q2 + q0*q3),q0*q0+q1*q1-q2*q2-q3*q3) * 57.3;//yaw }
}

6、資料下載

  • https://mbd.pub/o/bread/ZJiakp5y



本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
關(guān)閉