色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

【飛凌OKA40i-C開發板試用體驗】伺服電機控制完結篇

開發板試用精選 ? 來源:開發板試用 ? 作者:電子發燒友論壇 ? 2022-10-19 11:15 ? 次閱讀

本文來源電子發燒友社區,作者:劉建華, 帖子地址:https://bbs.elecfans.com/jishu_2309556_1_1.html


【話外】經過大伙的一個星期的努力,疫情得到控制,核酸檢測社會面清零。今天,單位的領導熱情的用鮮花迎接我們凱旋而歸。

63535e5af4761e1fea0327b9b84ca2c.jpg

790de888f1e317bb2bc1a0bfb87f131.jpg
到家后立馬投入到這個帖子的收尾工作,因為今天是最后一天提交作品。話不多說繼續我的工作。
前面已經實現的界面的制作,今天完結伺服電機的控制。

1、生成電機控制指令,電機的指令是通過modbus(RTU 模式)來控制驅動器的。主機可以通過 modbus 的讀寫寄存器功能來設置驅動器參數和控制運行。這里只用到了功能碼為 0x3(讀寄存器)、0x6(寫寄存器)這兩個指令。指令格式如下:
image.png

2、這里需要用到CRC16的較驗。具體的函數如下:

quint16 MainWindow::CalcCRC16(quint8 *SC_Buffer, quint8 SC_Amount)//生成校驗碼
{
    quint16 Crc;
    quint8 n, m, x;

    Crc= 0xFFFF;//16個1
    m= SC_Amount;//拿到長度
    x= 0;

    while(m>0){
        Crc ^= SC_Buffer[x];//第一個數據幀異或
        for(n=0; n<8; n++){//因為是quint8是8位數據,所以循環8次
            if(Crc & 1){//移出位為1,就進行異或
                Crc >>= 1;
                Crc ^= 0xA001;
            }else//為0繼續移出
                Crc >>= 1;
        }
        m--;//下一個數據幀
        x++;
    }

    x = Crc>>8;//拿到高8位
    Crc <<= 8;//剩下低8位
    Crc &= 0xff00;//低位清0
    Crc |= x;//實現高低位位置互換

    return Crc;
}

3、有了CRC16的較驗后,組裝設置使能電機命令如下:

void MainWindow::on_openMotorBut_clicked()
{
    QByteArray data;
    data.resize(8);
    quint8 crc[8];
    quint8 n;

    ui->textBrowser->insertPlainText("start clicked!n");
    if(ui->openMotorBut->text() == "啟動電機")
    {
        //EN set
        crc[0] = 0x01;
        crc[1] = 0x06;
        crc[2] = 0x00;
        crc[3] = 0x00;
        crc[4] = 0x00;
        crc[5] = 0x01;
        quint16 reCrc;
        reCrc = CalcCRC16(crc,6);
        crc[6] = reCrc>>8;
        crc[7] = reCrc & 0xff;

        for(n=0;n<8;n++){
            data[n] = crc[n];
        }
        serialPort->write(data);
        ui->openMotorBut->setText("關閉電機");
    }
    else {
        //close
        crc[0] = 0x01;
        crc[1] = 0x06;
        crc[2] = 0x00;
        crc[3] = 0x00;
        crc[4] = 0x00;
        crc[5] = 0x01;
        quint16 reCrc;
        reCrc = CalcCRC16(crc,6);
        crc[6] = reCrc>>8;
        crc[7] = reCrc & 0xff;
        ui->openMotorBut->setText("啟動電機");
    }
}

4、組裝設置電機目標速度,輸入框在設計時規定,只能輸入整數,在獲取目標速度時,電機的最高轉速為3000轉,所以如果設置值高于3000,也只設置3000轉。具體函數如下:

void MainWindow::on_setSpeedBut_clicked()
{
    QByteArray data;
    data.resize(8);
    quint8 crc[8];
    quint8 n;
    quint16 speed_val;
    ui->textBrowser->insertPlainText("set speed!n");
        //speed set 01 06 00 02 05 DC 2A C3
    speed_val = ui->editSetSpeed->text().toInt();
    if (speed_val>3000)
    {
        speed_val = 3000;
    }
    crc[0] = 0x01;
    crc[1] = 0x06;
    crc[2] = 0x00;
    crc[3] = 0x02;

    crc[4] = speed_val>>8;
    crc[5] = speed_val & 0xff;
    quint16 reCrc;
    reCrc = CalcCRC16(crc,6);
    crc[6] = reCrc>>8;
    crc[7] = reCrc & 0xff;

    for(n=0;n<8;n++){
        data[n] = crc[n];
    }
    serialPort->write(data);
    ui->textBrowser->setText("set speed val");

}

5、獲取實時的電機速度。獲取電機實時速度,設置了一個定時器,每一秒向電機發送讀取電機的指令:01 03 00 10 00 01 85 cf。串口接收數據時,判斷前3位是否為收到的速度的指令,如果是就更新LCDNUMBER。具體指令如下:

void MainWindow::read_speed()
{
    QByteArray data;
    quint8 n;
    quint8 crc[8] = {0x01, 0x03, 0x00, 0x10, 0x00, 0x01, 0x85, 0xcf};
    for(n=0;n<8;n++){
        data[n] = crc[n];
    }
    serialPort->write(data);
}
void MainWindow::serialPortReadyRead()
 {
     /* 接收緩沖區中讀取數據 */
    quint16 speed;
     QByteArray buf = serialPort->readAll();
     if(buf[0] == 0x01 && buf[1] == 0x03 && buf[2] == 0x02)
     {
         speed = buf[3]<<8 | buf[4];
         speed = speed/10;
         ui->lcdNumber->display(QString::number(speed));
     }
     ui->textBrowser->insertPlainText(QString(buf.toHex()));
 }

這里還有另外一個技巧,就是要設置一個標志,只能是串口打開成功,才能啟用定時器。
6、組裝好電機、控制器后,開發板后,成功的實現了對電機的實時控制與監控。
【總結】經過了差不多兩個多月的學習試用,雖然寫出了多篇帖子,學習到了不少東西,但是對這塊開發板的了解還是只在皮毛。如果有時間,還會繼續了解這塊優秀的開發板,爭取寫出更好的作品。
附工程源碼

*附件:myserial.zip

控制
電機視頻,詳見作者原帖子內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 飛凌
    +關注

    關注

    0

    文章

    134

    瀏覽量

    16157
收藏 人收藏

    評論

    相關推薦

    3.1s啟動!嵌入式i.MX93開發板部署LVGL,打造更高效的GUI

    近期,嵌入式為基于NXP i.MX93系列處理器打造的OK-MX9352-C開發板成功移植了LVGL v8.3,不僅界面美觀精致,啟動速
    的頭像 發表于 01-16 11:52 ?216次閱讀
    3.1s啟動!<b class='flag-5'>飛</b><b class='flag-5'>凌</b>嵌入式<b class='flag-5'>i</b>.MX93<b class='flag-5'>開發板</b>部署LVGL,打造更高效的GUI

    嵌入式OK3588J-C開發板體驗】OK3588J-C開發板開箱評測

    很高興收到嵌入式提供的OK3588J-C開發板,這是瑞芯微最新的8K旗艦8核SOC,非常適合用來做機器視覺,AI,語音識別,圖像處理。 下面來看看OK3588J-
    發表于 12-04 15:23

    嵌入式受邀亮相OpenHarmony人才生態大會

    出席,并展示了其在OpenHarmony 4.1系統適配方面的最新成果。 在大會的靜態展示區域,嵌入式攜兩款明星產品OK3568-C開發板和OK527N-
    的頭像 發表于 11-29 16:47 ?195次閱讀
    <b class='flag-5'>飛</b><b class='flag-5'>凌</b>嵌入式受邀亮相OpenHarmony人才生態大會

    追加名額丨米爾瑞芯微RK3576開發板有獎試用

    米爾與瑞芯微合作發布的新品基于瑞芯微RK3576應用處理器的MYD-LR3576開發板免費試用活動加碼啦~~米爾追加了2塊價值849元的MYD-LR3576開發板發起試用活動您不僅可以
    的頭像 發表于 11-22 01:00 ?271次閱讀
    追加名額丨米爾瑞芯微RK3576<b class='flag-5'>開發板</b>有獎<b class='flag-5'>試用</b>

    i.MX Linux開發實戰指南—基于野火i.MX系列開發板

    電子發燒友網站提供《i.MX Linux開發實戰指南—基于野火i.MX系列開發板.pdf》資料免費下載
    發表于 10-10 17:23 ?11次下載

    嵌入式OK3576-C開發板體驗】開箱報告

    (12Gbps)和擴展PCIe NVMe/SATA SSD固態硬盤,提供高效的數據存儲和讀取能力,滿足工控設備對大容量存儲的需求。 1.3、工業級屬性 穩定性:核心通過了嵌入式實驗室嚴苛的工業環境測試
    發表于 10-10 09:22

    TAS5825MEVM開發板無法啟動怎么解決

    TAS5825MEVM無法啟動 我收到TAS5825MEVM開發板,目前手上沒有基板,請問我該如何線以及如何用I2C控制讓其發聲? 目前我們用我們的
    發表于 10-09 06:18

    【作品合集】龍芯2K0300蜂鳥開發板試用精選

    】+4.libmodbus移植【龍芯2K0300蜂鳥試用】+3.移植lua到loongarch【龍芯2K0300蜂鳥試用】+IIC設備讀取陀螺儀數據【龍芯2K0300蜂鳥
    發表于 09-10 18:17

    嵌入式OK3576-C開發板體驗】開箱報告

    簡介 很榮幸參與到本次由嵌入式和電子發燒友提供的OK3576-C開發板試用機會。
    發表于 08-22 02:13

    嵌入式OK527N-C開發板體驗】- 1. 開箱

    周三左右就收到了快遞,一直忙其他的事情,沒時間弄這個,就拖到周末了。 首先發個開箱貼,記錄下。 外包裝,盒子比想象的要大不少。 附帶的產品手冊,里面有很多
    發表于 07-11 21:24

    嵌入式OK527N-C開發板體驗】- 開箱

    周三左右就收到了快遞,一直忙其他的事情,沒時間弄這個,就拖到周末了。 首先發個開箱貼,記錄下。 外包裝,盒子比想象的要大不少。 附帶的產品手冊,里面有很多
    發表于 06-30 23:04

    點擊參與米爾NXP i.MX 93開發板有獎試用

    米爾與NXP合作發布的新品基于NXPi.MX93應用處理器的MYD-LMX9X開發板免費試用活動來啦~~米爾提供了3塊價值678元的MYD-LMX9X開發板發起試用活動您不僅可以免費體
    的頭像 發表于 06-13 08:02 ?606次閱讀
    點擊參與米爾NXP <b class='flag-5'>i</b>.MX 93<b class='flag-5'>開發板</b>有獎<b class='flag-5'>試用</b>

    免費!NXP i.MX 93開發板有獎試用

    米爾與NXP合作發布的新品基于NXPi.MX93應用處理器的MYD-LMX9X開發板免費試用活動來啦~~米爾提供了2塊價值678
    的頭像 發表于 05-23 08:01 ?793次閱讀
    免費!NXP <b class='flag-5'>i</b>.MX 93<b class='flag-5'>開發板</b>有獎<b class='flag-5'>試用</b>

    嵌入式i.MX8M Plus開發板的OTA遠程升級方案

    的方式,可升級系統內核、文件系統和應用。接下來,將以嵌入式OKMX8MP-C開發板為例,基于Linux5.4.70版本內核,展示升級前后的切換效果。切換前,系
    的頭像 發表于 04-29 08:01 ?796次閱讀
    <b class='flag-5'>飛</b><b class='flag-5'>凌</b>嵌入式<b class='flag-5'>i</b>.MX8M Plus<b class='flag-5'>開發板</b>的OTA遠程升級方案

    如何使用Arduino UNO和電位器控制伺服電機

    在本Arduino伺服電機教程中,您將學習如何使用Arduino UNO和電位器控制伺服電機
    的頭像 發表于 02-11 10:11 ?2969次閱讀
    如何使用Arduino UNO<b class='flag-5'>板</b>和電位器<b class='flag-5'>控制</b><b class='flag-5'>伺服</b><b class='flag-5'>電機</b>
    主站蜘蛛池模板: 暖暖视频在线高清播放 | 牛牛在线精品视频(正) | 18禁无遮挡羞羞污污污污免费 | 色婷婷综合久久久久中文一区二区 | 久久国产乱子伦免费精品 | 亚州精品永久观看视频 | 亚洲 日韩 国产 中文视频 | 吃奶摸下的羞羞漫画 | 久久精品一区二区免费看 | 处女座历史名人 | 亚洲伊人久久网 | 午夜片神马影院福利 | 牛和人交videos欧美 | 在线观看中文字幕码2021不用下载 | 成人在线视频免费观看 | 老师我好爽再深一点老师好涨 | 国产传媒精品1区2区3区 | 自拍 偷拍 亚洲 经典 | 看电影来5566一区.二区 | 在线视频一区二区三区在线播放 | 一本大道香蕉中文在线视频观看 | va亚洲va天堂va视频在线 | 性盈盈剧场 | 黄页网站18以下勿看免费 | 免费A级毛片无码鲁大师 | 亚洲精品色婷婷在线蜜芽 | 国产99九九久久无码熟妇 | 日韩欧美一区二区三区在线 | 国产精品人妻无码久久久蜜桃 | 国产精品亚洲二线在线播放 | 做暖免费观看日本 | 中文字幕一区在线观看视频 | 全彩黄漫火影忍者纲手无遮挡 | 欧美阿v在线免播播放 | 亚洲国产精品特色大片观看 | 一个人高清在线观看日本免费 | 男女性杂交内射妇女BBWXZ | 最近免费中文MV在线字幕 | 91麻豆精品一二三区在线 | 麻豆蜜桃国语精品无码视频 | 成人综合在线视频免费观看完整版 |