在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>平衡segway機器人開源項目

平衡segway機器人開源項目

2022-11-18 | zip | 0.12 MB | 次下載 | 免費

資料介紹

描述

“Segbot”是 UIUC ME 461 級制造的平衡 segway 機器人segbot 由 Dan Block (d-block@illinois.edu) 教授設計的電路板和 F28379D 微控制器組成,該微控制器是德州儀器 C2000 系列的一部分。該項目的目標是讓 segbot 播放歌曲和舞蹈以響應檢測到不同的音符。

音符檢測

音符檢測是使用模數轉換完成的,將從麥克風接收到的模擬信號轉換為數字值。沒有占空比輸出的脈寬調制被用作定時器,以 10 kHz 的采樣率觸發 ADC 中斷。為了識別不同的頻率,使用Goertzel 算法一次對 1000 個 ADC 值進行離散傅里葉變換。如果算法的輸出超過某個閾值,則檢測到音符。閾值是一個稍微隨意的值,調整為在適當的時間做出響應,這意味著如果由于意外事件(例如落筆)而出現頻率,則不會檢測到音符。

// DFT with Goertzel Algorithm
float goertzel_mag(int numSamples,int TARGET_FREQUENCY,int SAMPLING_RATE, float* data)
{
    int     k,i;
    float   floatnumSamples;
    float   omega,sine,cosine,coeff,q0,q1,q2,magnitude,real,imag;

    float   scalingFactor = numSamples / 2.0;

    floatnumSamples = (float) numSamples;
    k = (int) (0.5 + ((floatnumSamples * TARGET_FREQUENCY) / SAMPLING_RATE));
    omega = (2.0 * PI * k) / floatnumSamples;
    sine = sin(omega);
    cosine = cos(omega);
    coeff = 2.0 * cosine;
    q0=0;
    q1=0;
    q2=0;

    for(i=0; i
    {
        q0 = coeff * q1 - q2 + data[i];
        q2 = q1;
        q1 = q0;
    }

    // calculate the real and imaginary results
    // scaling appropriately
    real = (q1 - q2 * cosine) / scalingFactor;
    imag = (q2 * sine) / scalingFactor;

    magnitude = sqrtf(real*real + imag*imag);
    return magnitude;
}

乒乓緩沖器

實現了一個乒乓緩沖器版本,以將 ADC 讀數存儲在單獨的陣列中,這樣一個可以收集數據,而另一個可以在 Goertzel 函數中執行計算。使用了三個這樣的數組,以便 Goertzel 算法在檢查對應于三種不同歌曲和舞蹈的三個單獨音符之間交替。當檢測到其中一個目標頻率時,它會發出歌舞開始的信號。

//Use three-part "Ping-Pong" Buffer in ADC interrupt
//Ping
    if(PingPong == 0){
        adcb_arrayPing[adcbcount] = adcb0result; // add ADC reading to array
        if(adcbcount == (n_samples-1)){
            adcbcount = -1; //incremented to 0 at end of interrupt
            RunPing = 1; //check in while loop
            PingPong = 1; //switch to Pong buffer
        }
    }
    //Pong
    if(PingPong == 1){
        adcb_arrayPong[adcbcount] = adcb0result;
        if(adcbcount == (n_samples-1)){
            adcbcount = -1; //incremented to 0 at end of interrupt
            RunPong = 1;
            PingPong = 2; //switch to Dong buffer
        }
    }
    //Dong
    if(PingPong == 2){
        adcb_arrayDong[adcbcount] = adcb0result;
        if(adcbcount == (n_samples-1)){
            adcbcount = -1; //incremented to 0 at end of interrupt
            RunDong = 1;
            PingPong = 0; //switch to Ping buffer
        }
    }

// IDLE loop. Use to pass arrays through Goertzel fxn and check for note detection
    while(1)
    {
        //after n samples, pass data through Goertzel fxn
        // use Ping Pong buffer

        if(RunPing == 1){
            goer_result = goertzel_mag(n_samples,NOTE,sampling_rate, adcb_arrayPing);
            RunPing = 0;
            if(goer_result > thresh){
                note_detected = 1;
            }
        }
        if(RunPong == 1){
            goer_result2 = goertzel_mag(n_samples,NOTE2,sampling_rate, adcb_arrayPong);
            RunPong = 0;
            if(goer_result2 > thresh){
                note2_detected = 1;
            }
        }
        if(RunDong == 1){
            goer_result3 = goertzel_mag(n_samples,NOTE3,sampling_rate, adcb_arrayDong);
            RunDong = 0;
            if(goer_result3 > thresh){
                note3_detected = 1;
            }
        }

歌舞

為了讓 segbot 播放歌曲,蜂鳴器由脈沖寬度調制控制。三個 CPU 定時器中斷中的每一個都被設置為不同的周期以對應歌曲的節奏。歌曲的音符組合成一個數組,用來改變PWM的周期,在檢測到第一個音符的情況下,每次發生定時器中斷時,蜂鳴器都會播放相應的音符。播放的歌曲是對披頭士的“Hey Jude”、夏奇拉的“Hips Don't Lie”和海灘男孩的“Little Saint Nick”的演繹。為了增強“小圣尼克”的表現,增加了一個鈴鐺,并結合 RC 伺服電機使用 PWM,在歌曲的不同部分敲擊表面。

讓 segbot 平衡是在此項目中完成的,再次使用 PWM 觸發 ADC,其中值通過 SPI 寫入,以便從 MPU-9250 讀取加速度和陀螺儀值。實施卡爾曼濾波器以在將值發送到平衡 segbot 的控制律之前對其進行過濾。與播放歌曲類似,為了讓 segbot 跳舞,為轉彎速率和向前/向后偏移創建了一個數組。當檢測到相應的音符時,在 CPU 定時器中斷中執行舞蹈。

//Sing and dance when the Goertzel value exceeds threshold
if(note_detected == 1){

        GPIO_SetupPinMux(16, GPIO_MUX_CPU1, 5);// set up buzzer

        if (numtimer1calls < songsize){
            //play the song
            if(song[numtimer1calls]==0){
                GpioDataRegs.GPACLEAR.bit.GPIO16 = 1; // ground the buzzer
            }else{
                EPwm9Regs.TBPRD = (int)(3125000/song[numtimer1calls]/2);
            }
            //dance
            FwdBkOffset = fwddance[numtimer1calls];
            turnrate = turndance[numtimer1calls];
        }   else{
            GPIO_SetupPinMux(16, GPIO_MUX_CPU1, 0); // set GPIO16 back to GPIO
            GpioDataRegs.GPACLEAR.bit.GPIO16 = 1; // ground the buzzer
            note_detected = 0;
            numtimer1calls = 0;
            FwdBkOffset = 0;
            turnrate = 0;
        }

        numtimer1calls++; // only increment after note is detected
    }
?

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1晶體三極管的電流放大作用詳細說明
  2. 0.77 MB   |  29次下載  |  2 積分
  3. 2雙極型三極管放大電路的三種基本組態的學習課件免費下載
  4. 4.03 MB   |  23次下載  |  1 積分
  5. 3多級放大電路的學習課件免費下載
  6. 1.81 MB   |  20次下載  |  2 積分
  7. 4PC4401_DC-DC 42V反激式隔離開關電路
  8. 0.85 MB   |  4次下載  |  免費
  9. 5AIWA HS-J505MKⅡ維修手冊
  10. 22.63 MB   |  2次下載  |  10 積分
  11. 6GPRS智能超聲波液位監測終端
  12. 835.55 KB  |  2次下載  |  免費
  13. 7電磁兼容性原理與設計
  14. 6.18 MB   |  1次下載  |  3 積分
  15. 8AIWA HS-JX3000/HS-JX3000D維修手冊
  16. 14.78 MB   |  次下載  |  10 積分

本月

  1. 1晶體三極管的電流放大作用詳細說明
  2. 0.77 MB   |  29次下載  |  2 積分
  3. 2雙極型三極管放大電路的三種基本組態的學習課件免費下載
  4. 4.03 MB   |  23次下載  |  1 積分
  5. 3第十一屆 藍橋杯 單片機設計與開發項目 省賽 程序設計試題及源碼
  6. 90.88KB   |  23次下載  |  3 積分
  7. 4Python從入門到精通背記手冊
  8. 18.77 MB   |  21次下載  |  1 積分
  9. 5多級放大電路的學習課件免費下載
  10. 1.81 MB   |  20次下載  |  2 積分
  11. 6STM32F103C8T6開發板最小系統原理圖
  12. 0.78 MB   |  17次下載  |  免費
  13. 7SX1308應用電路圖與SX1308升壓電路圖
  14. 0.18 MB   |  8次下載  |  1 積分
  15. 8東芝彩色電視機29SF6C維修說明書
  16. 4.86 MB   |  8次下載  |  1 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935127次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
  4. 1.48MB  |  420063次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191382次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183337次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81584次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73814次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65988次下載  |  10 積分
主站蜘蛛池模板: 天天尻| 人人看人人做人人爱精品 | 丁香综合网 | 亚洲综合天堂网 | 高清一区二区三区 | 激情六月丁香婷婷 | 一区二区免费在线观看 | 久久久久国产精品 | 综合久久2o19 | xxxxxxxxx18免费视频 | 色午夜在线| 国产精品va在线观看不 | 91pao强力打造免费高清 | 久久澡| 久久精品亚瑟全部免费观看 | 一色屋成人免费精品网站 | 男人天堂网在线观看 | 国产精品成人在线播放 | 黄色在线观看国产 | 亚洲成人99 | 色之综合天天综合色天天棕色 | 国产精品久久永久免费 | 国产三级在线观看播放 | 天天草比 | 河南毛片 | 九九99久久精品午夜剧场免费 | 日韩免费毛片视频 | 国产精品va在线观看不 | 啪啪网站免费观看 | 国产精品久久久久久久久ktv | 丁香综合在线 | 免费人成网ww44kk44 | 欧美日韩性大片 | 午夜在线| 日本视频一区在线观看免费 | 岛国一级毛片 | 成人永久免费视频网站在线观看 | 在线午夜 | 操美女大逼逼 | 久久综合99 | 国产免费高清在线精品一区 |