freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

delta并聯(lián)機器人畢業(yè)論文-資料下載頁

2025-03-04 06:09本頁面

【導(dǎo)讀】關(guān)系,因而擴大了機器人的應(yīng)用領(lǐng)域。Delta并聯(lián)機器人是最典型的空間三自由度移動的。良好的運動學(xué)和動力學(xué)特性,實驗條件下末端控制加速度可高達。量的實踐證明,Delta機構(gòu)是迄今為止設(shè)計最成功的并聯(lián)機構(gòu)之一。人己經(jīng)廣泛應(yīng)用于化妝品、食品和藥品的包裝和電子產(chǎn)品的裝配。步進電機是將電脈沖信號轉(zhuǎn)為角位移或線位移的開環(huán)控制元件。Delta機器人的動力,其既簡單廉價,又可靠穩(wěn)定。它有瞬間啟動,急速停止,精度高。機器人,設(shè)計采用二相混合式步進電機作為機器人的動力來源。系統(tǒng)的核心,實現(xiàn)下位機串口數(shù)據(jù)的收發(fā)、對機械運動的控制及步進電機的驅(qū)動。

  

【正文】 序,但由于環(huán)境被破壞,原程序也無法正確運行。 ldr sp, =0x54000000 sub lr, lr, 4 stmdb sp!, {r0r12, lr} /* lr 就是 swi 的下一條指令地址 */ 處理中斷 S3C6410 共有 64 個中斷源。 在通過 VIC0INTENABLE、 VIC0INTSELECT屏蔽后,可以讀取 IRQ 中斷狀態(tài)寄存器 VIC0IRQSTATUS 的值便知中斷是否有效, VIC0IRQSTATUS 每一位對應(yīng) 0~31 號中斷源。 VIC0ADDRESS 為矢量地址寄存器,該寄存器包含當(dāng)前有效中斷的中斷服務(wù)程序的地址,讀這個寄存器就返回 ISR 的地址,然后便跳轉(zhuǎn)到中斷服務(wù)程序。 在 uart_irq_init()中 VIC1VECTADDR5 = uart_irq。 //將 UART 中斷處理函數(shù)地址賦值 在 key_irq_init()中 VIC0VECTADDR0 = eint0_3_irq。 //處理函數(shù)地址賦值 VIC0VECTADDR1 = eint4_11_irq。 使用 do_irq()函數(shù)分辨發(fā)生了哪個中斷并跳轉(zhuǎn)到中斷處理函數(shù)。 void do_irq(void) { int i = 0。 void (*the_isr)(void)。 if (VIC0IRQSTATUS) { the_isr = VIC0ADDRESS。 the_isr()。 EINT0PEND = 0x3f。 /* 清中斷 */ VIC0ADDRESS = 0。 } else if (VIC1IRQSTATUS) { the_isr = VIC1ADDRESS。 the_isr()。 武漢科技大學(xué)本科畢業(yè)設(shè)計 28 } } 恢復(fù)現(xiàn)場 返回發(fā)生中斷時的下一條指令地址。 ldmia sp!, {r0r12, pc}^ /* ^表示把 spsr 恢復(fù)到 cpsr */ 時鐘初始化 S3C6410 的時鐘整體框架如圖 所示,在系統(tǒng)上電時輸入時鐘由 Fin 直通提供,鎖相環(huán)并沒有工作,因此,對時鐘的配置一般在系統(tǒng)復(fù)位上電的 boot 階段進行。 圖 時鐘發(fā)生器結(jié)構(gòu)框圖 鎖相環(huán)配置 在配置鎖相環(huán)之前都會通過向時鐘源控制寄存器的 CLK_SRC[2:0]位寫 ’0’將系統(tǒng)時鐘選為 Fin 直通模式。 S3C6410 有三分 PLL,分別為 APLL、 MPLL、 EPLL,APLL 主要用于 ARM 時鐘操作, MPLL 用于主時鐘操作, EPLL 用于特殊用途。本次設(shè)計沒有用到 EPLL,只需完成對 APLL 于 MPLL 的配置。鎖相環(huán) APLL、MPLL 的輸出頻率由 APLL_CON 于 MPLL_CON 兩個寄存器控制。 APLL 和 MPLL 的輸出頻率計算公式: 本次設(shè)計所使用的頻率 。 武漢科技大學(xué)本科畢業(yè)設(shè)計 29 需要對 APLL_CON 寄存器進行設(shè)置: APLL_CON = ((131) | (266 16) | (3 8) | (1)) MPLL 為 6410 內(nèi)部總線 AXI、 AHB、 APB 等提供時鐘 ,設(shè)置方式同 APLL。 對 MPLL_CON 寄存器設(shè)置: MPLL_CON = ((131) | (266 16) | (3 8) | (1)) 分頻器的配置 為獲得不同的時鐘滿足不同功能模塊的需求,時鐘發(fā)生單元提供了若干個時鐘分頻器對鎖相環(huán)輸出的時鐘進行分頻處理。分頻率通過時鐘分頻寄存器CLK_DIV0~CLK_DIV2 確定。本次設(shè)計中并沒有用到 LCD、 TV 定標(biāo)器等,只對 CLK_DIV0 進行設(shè)置。 表 截取了本次設(shè)計中 CLK_DIV0 寄存器所需設(shè)置的位。本次設(shè)計中, ARMCLK = 532MHz, HCLKX2 = 266MHz, HCLK = 133MHz,PCLK = 。具體實現(xiàn)在下一章詳細解釋。 表 CLK_DIV0寄存器部分位 CLK_DIV0 位 描述 初始狀態(tài) PCLK_RATIO [15:12] PCLK = HCLKX2 / (PCLK_RATIO + 1) 0x1 HCLKX2_RATIO [11:9] HCLKX2 = HCLKX2IN / (HCLKX2_RATIO) 0x0 HCLK_RATIO [8] HCLK = HCLKX2 / (HCLK_RATIO + 1) 0 MPLL_RATIO [4] DOUTMPLL = MOUTMPLL / (MPLL_RATIO + 1) 0 ARM_RATIO [2:0] ARMCLK = DOUTAPLL / (ARM_RATIO + 1) 0x0 ARMCLK = DOUTAPLL / (ARM_RATIO + 1) ARMCLK = 532 / (0+1) = 532MHz HCLKX2 = HCLKX2IN / (HCLKX2_RATIO + 1) HCLKX2 = 532 / (1 + 1) = 266MHz HCLK = HCLKX2 / (HCLK_RATIO + 1) HCLK = 266 / (1 + 1) = 133MHz PCLK = HCLKX2 / (PCLK_RATIO + 1) PCLK = 133 / (3 + 1) = 需要 向 CLK_DIV0 寄存器設(shè)置可對以上分頻器進行設(shè)置: CLK_DIV0 = (0) | (0 4) | (1 8) | (1 9) | (3 12) 串口控制 本次設(shè)計采用通用異步串行收發(fā)器簡稱 UART 實現(xiàn)與上位機的通訊,S3C6410 在與上位機的通訊中,設(shè)置字符幀的格式為 1 位起始位, 8 位數(shù)據(jù)位,無校驗位, 1 位停止位。本次設(shè)計使用的是 RS232 規(guī)范與目標(biāo)機進行通訊,使用的是簡單連接,如圖 , TXD 用于發(fā)送數(shù)據(jù), RXD 用于接收數(shù)據(jù), GND 給雙方提供參考電平。本次設(shè)計并沒有用到流量控制,且自動流量控制也不支持武漢科技大學(xué)本科畢業(yè)設(shè)計 30 RS232。 圖 簡單方式通訊連線圖 時鐘單元選擇 本次設(shè)計 UART 時鐘單元選擇 APB 總線的時鐘 PCLK, PCLK = 。通過配置 UART 通道控制寄存器 UCON0 的 [11:10]位選擇,系統(tǒng)上電后 UCON0寄存器的初始狀態(tài)就是選擇 PCLK,不用進行設(shè)置。 UCON0 = 0x5 | (19)。 配置波特率發(fā)生器 串口通訊的波特率發(fā)生器是由波特率分頻寄存器 UBRDIV0與分頻插槽寄存器 UDIVSLOT0 控制的。我們以 DIV_VAL 作為中間值對兩寄存器的配置進行計算。 本次設(shè)計中,波特率選擇 115200bps, DIV_VAL = 。所以 UBRDIV0 =35,UDIVSLOT0 = 0x1。 串口中斷控制 串口中斷,通過查詢 S3C6410 芯片手冊(如表 所示)可知, UART0 中斷號為 37 為中斷寄存器 VIC1,在串口中斷初始化函數(shù) uart_irq_init()中使能中斷,將中斷處理函數(shù) uart_irq()地址賦給 VIC1VECTADDR5。 表 中斷表 中斷號 中斷源 描述 組 39 INT_UART2 UART2 中斷 VIC1 38 INT_UART1 UART1 中斷 VIC1 武漢科技大學(xué)本科畢業(yè)設(shè)計 31 37 INT_UART0 UART0 中斷 VIC1 UFCON0 寄存器設(shè)置發(fā)送緩沖區(qū)的閾值, UFCON0=0x07|(16)設(shè)置為緩沖區(qū)數(shù)據(jù)小于 16 bytes 時從 DDR 內(nèi)存中填充數(shù)據(jù)。最后, UINTM0 = 0xF,關(guān)閉串口中斷。 發(fā)生中斷時,處理函數(shù)判斷環(huán)形緩沖區(qū)是否為空,若為空的禁止 UART 中斷,若不為空則從環(huán)形緩沖區(qū)取出數(shù)據(jù)放到發(fā)送緩沖區(qū)去,發(fā)送數(shù)據(jù)。處理程序流程如圖 : 圖 UART 串口中斷流程 發(fā)送數(shù)據(jù)時,先用 isFull()函數(shù)判斷發(fā)送 FIFO數(shù)據(jù)是否滿,若不滿用 putData()函數(shù)將數(shù)據(jù)放到發(fā)送 FIFO 中,開啟 UART 中斷 UINTM0 amp。= ~(12)。 定時器設(shè)置 S3C6410 有 5 個 32 位定時器,這些定時器可以產(chǎn)生中斷到 ARM 子系統(tǒng),定時器 T0、 T1 具有 PWM 功能,可以驅(qū)動外部 I\O 口。但是本次設(shè)計使用的是OK6410 開發(fā)板,其具有 PWM 功能的 GPF 端并沒有擴展口。因此,本設(shè)計采用的是內(nèi)部定時器 T2。 每個定時器都有一個由定時器時鐘驅(qū)動的向下計數(shù)的計數(shù)器,下計數(shù)器的初始值來自定時器緩沖計數(shù)器 TCNTB2。當(dāng)向下計數(shù)到“ 0”時,定時器向 CPU 請求中斷,本輪計數(shù)完成,相應(yīng)的 TCNTB2 又會重新裝載,進入到下一輪的向下發(fā)生中斷 判斷發(fā)送還是接收 從 RXFIFO 取出數(shù)據(jù) Buffer{}是否為空 Buffer[]取出數(shù)據(jù)放入 TXFIFO 禁止發(fā)送中斷 清除 UART 中斷 發(fā)送 接收 是 否 武漢科技大學(xué)本科畢業(yè)設(shè)計 32 計數(shù)。比較寄存器 TCMPB2 決定 PWM 波的輸出形狀,當(dāng)下計數(shù)器 TCNTB2 向下計數(shù)到和 TCMPB2 中的值相等時,輸出電平發(fā)生翻轉(zhuǎn)。當(dāng)下計數(shù)器繼續(xù)向下計數(shù)到“ 0”時,輸出電平再次翻轉(zhuǎn)并產(chǎn)生中斷(如果中斷使能)。邏輯框圖如圖 所示。 圖 定時器邏輯框圖 本次設(shè)計定時器的時鐘源為 PCLK,為了實現(xiàn)對步進電機的精確控制,對TCNTB2寄存器賦值 val = PCLK/1000000 – 1。精確延時 1微秒,頻率為 1000KHz,TCMPB2 = (val1),占空比為 50%。 void usDelay(int duty) { unsigned int val = PCLK/1000000 1。 /*設(shè)置時鐘源 */ TCFG0 amp。= ~(0xff8)。 /* Timer2 input clock Frequency = PCLK / ( {prescaler value + 1} ) / {divider value}*/ TCFG0 |= (08)。 /* =66500000 / (0+1)/1 = 66500000 */ TCFG1 amp。= ~(0xf8)。 TCFG1 |= (08)。 TCNTB2 = val。 /*頻率為 1000Hz*/ TCMPB2 = (val1)。 /*占空比為 50%*/ TCON amp。= ~(0xf12)。 /*定時 器 2相應(yīng)控制位清零 */ TCON |= (0xb12)。 TCON amp。= ~(212)。 /*清除手動更新位 */ while(duty) { while(TCNTO2=(val1))。 while(TCNTO2(val1))。 } } 武漢科技大學(xué)本科畢業(yè)設(shè)計 33 步進電機控制 電機控制采用精確延時后反轉(zhuǎn) I\O口電平產(chǎn)生 PWM 信號, GPC GPC GPC6為方向控制,高低電平控制正反轉(zhuǎn)。 GPC0、 GPC GPC5 輸出 PWM 信號。電機控制函數(shù)如下: void moto1(int pul1,int dir1,int duty1) /*電機 1控制 */ { unsigned int i。 GPCDAT = 0x00。 GPCDAT |= (dir11)。 /*GPC1 控制電機 1 方向 */ for(i=0。ipul1。i++) { GPCDAT |= (13)。 /*GPC3 脈沖輸出 */ usDelay(duty1)。 //500Hz GPCDAT amp。= ~(13)。 usDelay(duty1)。 } } 上位機經(jīng)過坐標(biāo)反解得到運動步數(shù),通過串口發(fā) 送給機械運動控制函數(shù),函數(shù)判斷各步進電機的方向與所需運動的步數(shù)。最后數(shù)據(jù)發(fā)送給電機驅(qū)動函數(shù),完成機械運動。判斷的原理:與前一次所走步數(shù)進行比較,若所需走的步數(shù)大于前一次的步數(shù),則向下運動兩者之差,否則向上運動兩者之差,具體流程如圖 。 接收數(shù)據(jù) 與前一次比較 方向為 0 Motor(d1,0,duty) 方向為 1 Motor(d1,1,duty) 大 小 保存本次步數(shù) 結(jié)束運動 武漢科技大學(xué)本科畢業(yè)設(shè)計 34 圖 步數(shù)判斷流程圖 上位機 控制程序 上位機 程序為 VS2021 寫的 MFC 應(yīng)用程序,輸入反解坐標(biāo) ,點擊坐標(biāo)反解按鍵,右側(cè)文本框顯示坐標(biāo)反解相關(guān)數(shù)據(jù),并將最后電機步數(shù)自動寫入數(shù)據(jù)發(fā)送框,點擊開始運動按鍵發(fā)送數(shù)據(jù),機械臂開始運動,界面如圖 所示。 圖 上位機界面 上位機串口模塊 串口通信使用 VS2021 下的 MSComm 控件。 MSComm 控件通過串行端口傳輸和接收數(shù)據(jù),為應(yīng)用程序提供串行通訊功能。 MSComm 控件在串口編程時非常方便,
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1