91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【飛凌OKA40i-C開發(fā)板試用體驗(yàn)】伺服電機(jī)控制完結(jié)篇

開發(fā)板試用精選 ? 來源:開發(fā)板試用 ? 作者:電子發(fā)燒友論壇 ? 2022-10-19 11:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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


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

63535e5af4761e1fea0327b9b84ca2c.jpg

790de888f1e317bb2bc1a0bfb87f131.jpg
到家后立馬投入到這個帖子的收尾工作,因?yàn)榻裉焓亲詈笠惶焯峤蛔髌?。話不多說繼續(xù)我的工作。
前面已經(jīng)實(shí)現(xiàn)的界面的制作,今天完結(jié)伺服電機(jī)的控制。

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

2、這里需要用到CRC16的較驗(yàn)。具體的函數(shù)如下:

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

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

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

    x = Crc>>8;//拿到高8位
    Crc <<= 8;//剩下低8位
    Crc &= 0xff00;//低位清0
    Crc |= x;//實(shí)現(xiàn)高低位位置互換

    return Crc;
}

3、有了CRC16的較驗(yàn)后,組裝設(shè)置使能電機(jī)命令如下:

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() == "啟動電機(jī)")
    {
        //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("關(guān)閉電機(jī)");
    }
    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("啟動電機(jī)");
    }
}

4、組裝設(shè)置電機(jī)目標(biāo)速度,輸入框在設(shè)計(jì)時規(guī)定,只能輸入整數(shù),在獲取目標(biāo)速度時,電機(jī)的最高轉(zhuǎn)速為3000轉(zhuǎn),所以如果設(shè)置值高于3000,也只設(shè)置3000轉(zhuǎn)。具體函數(shù)如下:

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、獲取實(shí)時的電機(jī)速度。獲取電機(jī)實(shí)時速度,設(shè)置了一個定時器,每一秒向電機(jī)發(fā)送讀取電機(jī)的指令:01 03 00 10 00 01 85 cf。串口接收數(shù)據(jù)時,判斷前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()
 {
     /* 接收緩沖區(qū)中讀取數(shù)據(jù) */
    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()));
 }

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

*附件:myserial.zip

控制
電機(jī)視頻,詳見作者原帖子內(nèi)容

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 飛凌
    +關(guān)注

    關(guān)注

    0

    文章

    135

    瀏覽量

    16899
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    嵌入式RV1126B開發(fā)板】+兩款開發(fā)板之比較

    個接口并列的方式,而開發(fā)板則是采用疊層的方式,且有一組是使用Type C的接口方式。 此外為了便于程序調(diào)試,兩者均配置了Type C方式
    發(fā)表于 03-05 23:32

    OK-MX9596-C開發(fā)板試用】④RS485-TTL串口,擴(kuò)展無限可能

    OK-MX9596-C開發(fā)板試用】③云端AI拍照識別 -
    發(fā)表于 11-09 22:44

    OK-MX9596-C開發(fā)板試用】②體驗(yàn)WIFI、藍(lán)牙、音頻、視頻,為AI應(yīng)用打下基礎(chǔ)

    OK-MX9596-C開發(fā)板試用】①開箱圖賞、跑分測試、yolo大模型三箭齊發(fā) -
    發(fā)表于 10-21 18:17

    【作品合集】嵌入式OK527N-C開發(fā)板測評

    針對不同的功能做了深度優(yōu)化,方便用戶二次開發(fā)的同時簡化用戶設(shè)計(jì),為您的項(xiàng)目提供良好的評估及設(shè)計(jì)依據(jù)。 活動詳情地址:OK527N-C開發(fā)板
    發(fā)表于 09-22 15:54

    送啦!嵌入式聯(lián)合NXP邀您參加OK-MX9596-C開發(fā)板試用活動

    送啦!嵌入式聯(lián)合NXP邀您參加OK-MX9596-C開發(fā)板試用活動
    的頭像 發(fā)表于 08-22 08:03 ?1010次閱讀
    送啦!<b class='flag-5'>飛</b><b class='flag-5'>凌</b>嵌入式聯(lián)合NXP邀您參加OK-MX9596-<b class='flag-5'>C</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>試用</b>活動

    T527N開發(fā)板試用】7寸RGB屏幕適配與TP驅(qū)動

    Touchscreens input device support---> 再選中 Focaltech Touchscreen 然后重新編譯kernel。按照[【T527N開發(fā)板
    發(fā)表于 08-15 18:06

    RK3568開發(fā)板暗藏32位兼容開關(guān)?嵌入式帶你一鍵解鎖!

    RK3568是一款64位處理器,嵌入式為其提供的交叉編譯器也是64位的,然而部分用戶可能需要在RK3568開發(fā)板上運(yùn)行32位應(yīng)用。本文將詳細(xì)闡述如何使用32位交叉編譯器,編譯出32位應(yīng)用,并使其能夠在
    的頭像 發(fā)表于 07-19 08:49 ?4399次閱讀
    RK3568<b class='flag-5'>開發(fā)板</b>暗藏32位兼容開關(guān)?<b class='flag-5'>飛</b><b class='flag-5'>凌</b>嵌入式帶你一鍵解鎖!

    T527N開發(fā)板試用T527N開發(fā)板開箱評測

    很高興收到嵌入式申請的T527N開發(fā)板,板子的正反面如下圖所示: 可以看到,板子上面的資源非常的豐富,有CAN,485, SIM卡槽
    發(fā)表于 07-04 11:43

    T527N開發(fā)板試用】開箱與開發(fā)板介紹視頻

    嵌入式OK527N-C開發(fā)板開箱介紹】 https://www.bilibili.com/video/BV1sfKSzmEtU/?share_source=copy_web&
    發(fā)表于 06-26 09:43

    5分鐘學(xué)會網(wǎng)絡(luò)服務(wù)搭建!i.MX9352開發(fā)板 + Linux 6.1實(shí)戰(zhàn)示例

    本文就將以嵌入式OK-MX9352-C開發(fā)板(搭載了在工業(yè)物聯(lián)網(wǎng)領(lǐng)域廣泛應(yīng)用的NXP i.MX9352處理器)為平臺,介紹如何在Linu
    的頭像 發(fā)表于 06-13 16:42 ?1321次閱讀
    5分鐘學(xué)會網(wǎng)絡(luò)服務(wù)搭建!<b class='flag-5'>飛</b><b class='flag-5'>凌</b><b class='flag-5'>i</b>.MX9352<b class='flag-5'>開發(fā)板</b> + Linux 6.1實(shí)戰(zhàn)示例

    性能強(qiáng)悍!合眾HZ-RK3568開發(fā)板試用體驗(yàn)

    月19日 ? 評測數(shù)量: 10塊 ? 更多熱點(diǎn)文章閱讀 基于平頭哥TH1520芯片,潤開鴻HH-SCDAYU800A開發(fā)板免費(fèi)試用 RISC-V開發(fā)板深度評測!頂級開發(fā)板免費(fèi)
    的頭像 發(fā)表于 06-05 16:30 ?1482次閱讀
    性能強(qiáng)悍!合眾HZ-RK3568<b class='flag-5'>開發(fā)板</b><b class='flag-5'>試用</b>體驗(yàn)

    有獎丨米爾 NXP i.MX91開發(fā)板免費(fèi)試用來啦

    米爾與NXP合作發(fā)布的新品基于NXPi.MX91應(yīng)用處理器的MYD-LMX91開發(fā)板免費(fèi)試用名額來啦~~米爾提供了3套價值588元的MYD-LMX91開發(fā)板發(fā)起試用活動您不僅可以免費(fèi)體
    的頭像 發(fā)表于 06-05 08:02 ?1348次閱讀
    有獎丨米爾 NXP <b class='flag-5'>i</b>.MX91<b class='flag-5'>開發(fā)板</b>免費(fèi)<b class='flag-5'>試用</b>來啦

    5分鐘學(xué)會網(wǎng)絡(luò)服務(wù)搭建,i.MX9352 + Linux 6.1實(shí)戰(zhàn)示例

    本文將以嵌入式OK-MX9352-C開發(fā)板(搭載了在工業(yè)物聯(lián)網(wǎng)領(lǐng)域廣泛應(yīng)用的NXP i.MX9352處理器)為平臺,介紹如何在Linux
    的頭像 發(fā)表于 05-30 11:08 ?2331次閱讀
    5分鐘學(xué)會網(wǎng)絡(luò)服務(wù)搭建,<b class='flag-5'>飛</b><b class='flag-5'>凌</b><b class='flag-5'>i</b>.MX9352 + Linux 6.1實(shí)戰(zhàn)示例

    【評測試用】合眾HZ-T536開發(fā)板免費(fèi)試用體驗(yàn)

    【評測試用】合眾HZ-T536開發(fā)板免費(fèi)試用體驗(yàn)
    的頭像 發(fā)表于 05-27 08:05 ?979次閱讀
    【評測<b class='flag-5'>試用</b>】合眾HZ-T536<b class='flag-5'>開發(fā)板</b>免費(fèi)<b class='flag-5'>試用</b>體驗(yàn)