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

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

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

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

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

開(kāi)發(fā)板試用精選 ? 來(lái)源:開(kāi)發(fā)板試用 ? 作者:電子發(fā)燒友論壇 ? 2022-10-19 11:15 ? 次閱讀

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


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

63535e5af4761e1fea0327b9b84ca2c.jpg

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

1、生成電機(jī)控制指令,電機(jī)的指令是通過(guò)modbus(RTU 模式)來(lái)控制驅(qū)動(dòng)器的。主機(jī)可以通過(guò) modbus 的讀寫寄存器功能來(lái)設(shè)置驅(qū)動(dòng)器參數(shù)和控制運(yùn)行。這里只用到了功能碼為 0x3(讀寄存器)、0x6(寫寄存器)這兩個(gè)指令。指令格式如下:
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個(gè)1
    m= SC_Amount;//拿到長(zhǎng)度
    x= 0;

    while(m>0){
        Crc ^= SC_Buffer[x];//第一個(gè)數(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--;//下一個(gè)數(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() == "啟動(dòng)電機(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("啟動(dòng)電機(jī)");
    }
}

4、組裝設(shè)置電機(jī)目標(biāo)速度,輸入框在設(shè)計(jì)時(shí)規(guī)定,只能輸入整數(shù),在獲取目標(biāo)速度時(shí),電機(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í)時(shí)的電機(jī)速度。獲取電機(jī)實(shí)時(shí)速度,設(shè)置了一個(gè)定時(shí)器,每一秒向電機(jī)發(fā)送讀取電機(jī)的指令:01 03 00 10 00 01 85 cf。串口接收數(shù)據(jù)時(shí),判斷前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()));
 }

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

*附件:myserial.zip

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

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

    關(guān)注

    0

    文章

    134

    瀏覽量

    16137
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    嵌入式OK3588J-C開(kāi)發(fā)板體驗(yàn)】OK3588J-C開(kāi)發(fā)板開(kāi)箱評(píng)測(cè)

    很高興收到嵌入式提供的OK3588J-C開(kāi)發(fā)板,這是瑞芯微最新的8K旗艦8核SOC,非常適合用來(lái)做機(jī)器視覺(jué),AI,語(yǔ)音識(shí)別,圖像處理。 下面來(lái)看看OK3588J-
    發(fā)表于 12-04 15:23

    嵌入式受邀亮相OpenHarmony人才生態(tài)大會(huì)

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

    追加名額丨米爾瑞芯微RK3576開(kāi)發(fā)板有獎(jiǎng)試用

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

    嵌入式OK3576-C開(kāi)發(fā)板體驗(yàn)】開(kāi)箱報(bào)告

    簡(jiǎn)介 很榮幸參與到本次由嵌入式和電子發(fā)燒友提供的OK3576-C開(kāi)發(fā)板試用機(jī)會(huì)。
    發(fā)表于 08-22 02:13

    嵌入式OK527N-C開(kāi)發(fā)板體驗(yàn)】- 1. 開(kāi)箱

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

    嵌入式OK527N-C開(kāi)發(fā)板體驗(yàn)】- 開(kāi)箱

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

    點(diǎn)擊參與米爾NXP i.MX 93開(kāi)發(fā)板有獎(jiǎng)試用

    米爾與NXP合作發(fā)布的新品基于NXPi.MX93應(yīng)用處理器的MYD-LMX9X開(kāi)發(fā)板免費(fèi)試用活動(dòng)來(lái)啦~~米爾提供了3塊價(jià)值678元的MYD-LMX9X開(kāi)發(fā)板發(fā)起試用活動(dòng)您不僅可以免費(fèi)體
    的頭像 發(fā)表于 06-13 08:02 ?570次閱讀
    點(diǎn)擊參與米爾NXP <b class='flag-5'>i</b>.MX 93<b class='flag-5'>開(kāi)發(fā)板</b>有獎(jiǎng)<b class='flag-5'>試用</b>

    免費(fèi)!NXP i.MX 93開(kāi)發(fā)板有獎(jiǎng)試用

    米爾與NXP合作發(fā)布的新品基于NXPi.MX93應(yīng)用處理器的MYD-LMX9X開(kāi)發(fā)板免費(fèi)試用活動(dòng)來(lái)啦~~米爾提供了2塊價(jià)值678
    的頭像 發(fā)表于 05-23 08:01 ?751次閱讀
    免費(fèi)!NXP <b class='flag-5'>i</b>.MX 93<b class='flag-5'>開(kāi)發(fā)板</b>有獎(jiǎng)<b class='flag-5'>試用</b>

    嵌入式i.MX8M Plus開(kāi)發(fā)板的OTA遠(yuǎn)程升級(jí)方案

    的方式,可升級(jí)系統(tǒng)內(nèi)核、文件系統(tǒng)和應(yīng)用。接下來(lái),將以嵌入式OKMX8MP-C開(kāi)發(fā)板為例,基于Linux5.4.70版本內(nèi)核,展示升級(jí)前后的切換效果。切換前,系
    的頭像 發(fā)表于 04-29 08:01 ?762次閱讀
    <b class='flag-5'>飛</b><b class='flag-5'>凌</b>嵌入式<b class='flag-5'>i</b>.MX8M Plus<b class='flag-5'>開(kāi)發(fā)板</b>的OTA遠(yuǎn)程升級(jí)方案

    嵌入式RK3568開(kāi)發(fā)板藍(lán)牙收、發(fā)文件測(cè)試

    本文由電子發(fā)燒友論壇用戶fsdzdzy提供,感謝分享。嵌入式每月定期開(kāi)展新的開(kāi)發(fā)板體驗(yàn)活動(dòng),歡迎更多工程師朋友的關(guān)注和參與。嵌入式O
    的頭像 發(fā)表于 02-02 16:31 ?1909次閱讀
    <b class='flag-5'>飛</b><b class='flag-5'>凌</b>嵌入式RK3568<b class='flag-5'>開(kāi)發(fā)板</b>藍(lán)牙收、發(fā)文件測(cè)試

    嵌入式T113-i開(kāi)發(fā)板的調(diào)屏方法

    對(duì)于飛嵌入式T113-i開(kāi)發(fā)板的調(diào)屏問(wèn)題,需要按照以下步驟進(jìn)行操作
    的頭像 發(fā)表于 01-29 16:25 ?1039次閱讀

    如何在嵌入式T113-i開(kāi)發(fā)板的Buildroot中移植MQTT協(xié)議?

    嵌入式OK113i-S開(kāi)發(fā)板上市一段時(shí)間以來(lái)收獲了很多關(guān)注,也成為了許多客戶項(xiàng)目選型的優(yōu)質(zhì)之選。在實(shí)際的項(xiàng)目開(kāi)發(fā)中,工程師朋友們可能會(huì)需
    的頭像 發(fā)表于 01-26 08:02 ?544次閱讀
    如何在<b class='flag-5'>飛</b><b class='flag-5'>凌</b>嵌入式T113-<b class='flag-5'>i</b><b class='flag-5'>開(kāi)發(fā)板</b>的Buildroot中移植MQTT協(xié)議?

    嵌入式A40i-H核心已適配“礦鴻OS”

    嵌入式基于全志科技A40i-H打造的FETA40i-C核心成功完成了“礦鴻OS”的系統(tǒng)適配,嵌入式核心
    的頭像 發(fā)表于 01-18 08:02 ?1028次閱讀
    <b class='flag-5'>飛</b><b class='flag-5'>凌</b>嵌入式A<b class='flag-5'>40i</b>-H核心<b class='flag-5'>板</b>已適配“礦鴻OS”

    嵌入式全志T113-i開(kāi)發(fā)板的休眠及喚醒操作

    嵌入式OK113i-S開(kāi)發(fā)板支持兩種休眠方式:freeze和mem。這兩種方式可以通過(guò)/sys/power/state文件節(jié)點(diǎn)進(jìn)行操作,用戶可以通過(guò)在該文件節(jié)點(diǎn)寫入freeze或m
    發(fā)表于 01-17 09:29

    嵌入式T113-i開(kāi)發(fā)板的調(diào)屏方法,就是這樣簡(jiǎn)單

    的配備為客戶提供了更加多樣的選擇。今天小編就與大家分享一下為嵌入式OK113i-S開(kāi)發(fā)板適配LVDS屏幕的過(guò)程。
    的頭像 發(fā)表于 01-12 11:50 ?2271次閱讀
    <b class='flag-5'>飛</b><b class='flag-5'>凌</b>嵌入式T113-<b class='flag-5'>i</b><b class='flag-5'>開(kāi)發(fā)板</b>的調(diào)屏方法,就是這樣簡(jiǎn)單
    主站蜘蛛池模板: 区久久AAA片69亚洲| aa级毛片毛片免费观看久| 91国在线视频| 国产97碰免费视频| 久久婷婷电影网| 我解开了岳的乳第一个女人 | 女人精69xxxxx| 亚洲国产日韩欧美视频二区| WWW久久只有这里有精品| 久久精品国产亚洲AV热无遮挡| 少妇的肉体AA片免费| 99国产精品欲AV蜜桃臀麻豆| 精精国产www视频在线观看免费| 色狠狠xx| 免费果冻传媒2021视频| 亚洲AV成人无码999WWW| www.av日韩| 老师真棒无遮瑕版漫画免费| 校园高h肉耽文| 达达兔欧美午夜国产亚洲| 免费可以看黄的视频s色| 夜蒲团之5阳性之教| 国产精品久久久久久搜索 | 久久国产亚洲电影天堂| 我要色导航| 草比比过程图| 国产欧美在线亚洲一区刘亦菲 | 无限资源在线观看完整版免费下载| av天堂电影网在线观看| 久久天堂网| 一本道色播| 护士日本ⅹxxx丰满hd| 我要色色网| 国产成人免费片在线观看| 欧美成人无码A区在线观看免费| 在线观看免费视频a| 精品 在线 视频 亚洲| 亚洲精品国产精品麻豆99| 国产剧情福利AV一区二区| 手机在线观看mv网址| 538在线播放|