冰楓論壇

 找回密碼
 立即註冊
ads_sugarbook
搜索
查看: 1673|回覆: 0

[討論] LPC11C24微控制器 電機控速器

[複製鏈接]

2609

主題

0

好友

942

積分

高級會員

Rank: 4

UID
373967
帖子
7305
主題
2609
精華
0
積分
942
楓幣
1506
威望
922
存款
25000
贊助金額
0
推廣
0
GP
1205
閱讀權限
50
在線時間
402 小時
註冊時間
2023-1-12
最後登入
2024-4-16

2023端午節紀念勳章 2023中秋節紀念勳章 2023聖誕節紀念勳章

發表於 2023-5-9 18:48:36 |顯示全部樓層
使用LPC11C24微控制器電機控速器,同時顯示設定速度和即時速度,你需要以下零件和相關連結腳位:

零件:

LPC11C24微控制器:LPC11C24是一款具有ARM Cortex-M0核心的微控制器,它提供了足夠的功能和接口用於電機控制應用。
電機驅動模塊:你需要一個電機驅動模塊,例如H-橋驅動器,用於控制電機的轉速和方向。
電機:選擇一個適合的直流馬達或步進馬達,根據你的需求來選擇適當的馬達類型和規格。
連結腳位:

將LPC11C24的GPIO引腳連接到電機驅動模塊的輸入引腳,以控制電機的轉速和方向。
使用PWM模塊將LPC11C24的PWM輸出引腳連接到電機驅動模塊的PWM輸入引腳,以提供PWM信號來控制電機的轉速。
使用UART模塊將LPC11C24的UART輸出引腳連接到顯示器或終端設備,以顯示設定速度和即時速度的信息。

程式碼:
下面是示例程式碼,用於控制電機的轉速並顯示設定速度和即時速度:


#include <LPC11C24.h>

// 定義引腳和UART通訊設置
#define PWM_PIN   0    // 用於PWM信號的引腳編號
#define UART_TX_PIN   1    // UART傳輸引腳編號
#define UART_BAUDRATE   9600    // UART波特率

// 全局變量
volatile uint32_t setSpeed = 0;    // 設定速度
volatile uint32_t currentSpeed = 0;    // 即時速度

// 初始化PWM模塊
void initPWM() {
    // 設置PWM引腳為PWM功能
    LPC_IOCON->PIO0_0 |= (1 << 0);
   
    // 配置PWM模塊
    LPC_PWM->PR = 0;    // 不分頻
    LPC_PWM->MCR = (1 << 1);    // 清空PWM定時器
   
    // 設置PWM周期和占空比
    LPC_PWM->

MR0 = 1000; // PWM周期為1000
LPC_PWM->MR1 = setSpeed; // 設定占空比為設定速度
LPC_PWM->LER = (1 << 0) | (1 << 1); // 更新MR0和MR1的值

// 啟動PWM
LPC_PWM->PCR = (1 << 9);  // 啟用PWM通道1

// 啟動PWM定時器
LPC_PWM->TCR = (1 << 0);  // 啟動PWM定時器
}

// 初始化UART模塊
void initUART() {
// 設置UART引腳為UART功能
LPC_IOCON->PIO0_1 |= (1 << 0);

// 配置UART模塊
LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 12);  // 啟用UART時鐘
LPC_SYSCON->UARTCLKDIV = 1;  // UART時鐘分頻為1

// 設置波特率
LPC_UART->LCR = (1 << 7);  // 開啟設置波特率的訪問
LPC_UART->DLL = SystemCoreClock / (16 * UART_BAUDRATE);  // 設置波特率
LPC_UART->DLM = 0;  // 設置波特率
LPC_UART->LCR = 3;  // 8位數據,無校驗位

// 啟用UART接收中斷
LPC_UART->IER = (1 << 0);  // 啟用接收中斷
NVIC_EnableIRQ(UART_IRQn);  // 啟用UART中斷

// 啟動UART
LPC_UART->TER = (1 << 7);  // 啟用UART傳輸
}

// UART中斷處理函數
void UART_IRQHandler() {
if (LPC_UART->IIR & (1 << 0)) { // 接收中斷標誌位
char receivedData = LPC_UART->RBR; // 讀取接收到的數據

    // 解析接收到的數據並設定速度
    if (receivedData >= '0' && receivedData <= '9') {
        setSpeed = (receivedData - '0') * 100;  // 將數字轉換為速度值
    }
}
}

// 主函數
int main() {
initPWM(); // 初始化PWM模塊
initUART(); // 初始化UART模塊

while (1) {
    // 更新即時速度
    currentSpeed = setSpeed;
   
    // 顯示設定速度和即時速度
    // 你可以使用UART傳輸函數將設定速度和即時速度發送到顯示器或終端設備
   
    // 停頓一段時間
    for (volatile uint32_t i = 0; i < 100000; i++);
}
}


在上面的程式碼中,初始化了PWM模塊和UART模塊。
在UART中斷處理函數中,我們解析接收到的數據並將其轉換為速度值,然後在主函數中更新即時速度並顯示設定速度和即時速度。
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$
高級模式
B Color Image Link Quote Code Smilies |上傳

廣告刊登意見回饋關於我們職位招聘本站規範DMCA隱私權政策

Copyright © 2011-2024 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2024-4-16 13:26

回頂部