欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
STM32F103+PWM+DMA精準控制輸出脈沖的數量和頻率 源程序
[打印本頁]
作者:
hhhhhhaa
時間:
2020-8-24 14:33
標題:
STM32F103+PWM+DMA精準控制輸出脈沖的數量和頻率 源程序
最近參加一個農業機器人的比賽,由于今年的題目是蔬菜幼苗自動搬運,因此搬運部分需要用到一個三軸運動的裝置,我們參考了3D打印機的原理,上面通過步進電機控制絲桿和皮帶從而帶動我們的抓手來抓舉幼苗。因為比賽的幼苗和幼苗的基質比較小,這個過程需要精度比較高,查詢了一些資料后,我想到了用dma來給STM32單片機的定時器寄存器ARR發送數據來精準控制輸出pwm的數量,從而可以精準控制步進電機轉動的度數,可以十分方便的計算出到某個位置需要的脈沖。
MVIMG_20200819_143937.jpg
(16.83 MB, 下載次數: 103)
下載附件
2020-8-24 14:24 上傳
上圖為我們的裝置的三維圖。
stm32的DMA功能不需要使用中斷,這是我選用這個方式的主要原因,因為我們這個項目所需要的步進電機比較多 ,如果通過中斷的方式必然會使我們的程序比較混亂,而通過DMA的功能不占用CPU的運行,直接在目標地址之間發送數據。只要我們設置一個數組,將數組的最后一位設置為0,數組的長度就為pwm脈沖的數量,數組的數據就為ARR的值(即控制輸出pwm的頻率大小),十分方便。但這個方法有一個缺點就是如此長的數組比較占內存空間,這個可以通過共用一個數組和減少細分等方法解決。
單片機源程序如下:
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "timer.h"
#include "dma.h"
/************************************************
dma + pwm 測試代碼
************************************************/
#define size 8000
u16 send_buf[size];
u32 i;
void pwm_out(int step_count,int arr)
{
for(i=0;i<step_count;i++)
{
if(i < step_count-1)
send_buf[i]=arr;
else
send_buf[i]=0;
}
MYDMA_Enable(DMA1_Channel6,step_count);
}
int main(void)
{
u8 count = 5;
delay_init(); //延時函數初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
uart_init(115200); //串口初始化為115200
LED_Init(); //LED端口初始化
MYDMA_Config(DMA1_Channel6, (u32)&TIM3->ARR, (u32)send_buf, size);
TIM3_PWM_Init(2000,100-1); //不分頻。PWM頻率=72000000/900=80Khz PA6
TIM_SetCompare1(TIM3,500);
pwm_out(1000,1000);
while(1)
{
if(TIM3->ARR==0)
{
pwm_out(1000,1000);
}
delay_ms(50000);
}
}
復制代碼
下載:
dma控制pwm測試代碼.7z
(186.23 KB, 下載次數: 321)
2020-8-24 15:01 上傳
點擊文件名下載附件
dma控制pwm測試代碼
下載積分: 黑幣 -5
作者:
waerdeng
時間:
2020-8-24 19:27
支持農業機器人比賽,蔬菜幼苗自動搬運可以減輕勞動強度,希望早日量產。
作者:
流星2019
時間:
2020-9-4 15:40
你好,請問能進一步交流嗎,沒太看懂您的代碼
作者:
wis98
時間:
2020-9-12 17:56
用PLC完成這樣的項目,一小時就搞定
作者:
安shijia
時間:
2021-10-19 09:41
不行脈沖抖動太大
作者:
HQing1
時間:
2022-8-27 11:19
為啥改成PA7就不可了
作者:
sbdt
時間:
2023-10-29 10:55
不能加減速,還有待優化
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1