首頁 搜索 分類
您的位置:首頁 » 家居生活 » 家電傢俱 » stm32f407能同時控制幾個舵機,怎麼控制的?
問題 【其他】  【歸檔】16年01月22日

stm32f407能同時控制幾個舵機,怎麼控制的?

問題描述 最近想問問大家,請問stm32f407怎麼同時控制幾個舵機地呢?
網友回答
 最佳答案 用mega16產生中斷,有溢出中斷,比較中斷等,主要就是用這兩種來產生方波。溢出中斷:用溢出中斷就完全受到計時器計時週期的束縛,比如,從1計到256用了大約8ms,之後產生 溢出中斷並重新從1開始計時,此時你可以在每次溢出中斷發生的時候讓電平反轉一次,也可以隔幾個中斷讓電平反轉一次,可以用一個全域變數來控制,比如:uint32_t count1=0;uint32_t count2=0;//count1用來設置高電平持續時間,count2用來設置低電平持續時間PA0=1;//剛開始。PA0置高電平ISR(SIG_OVERFLOW0)//256分頻,計數器加1大約為0.032ms,78對應2.5ms,250對應8ms{ count1+=1; count2+=1; if(count12&&PA0==1){ PA0=0;//count1過時了,PA的0位引腳變成低電平,由count2接管 else if(count24&&PA0==0){ PA0=1;//count2過時了,PA0重新回到高電平,由count1接管 count1=0; count2=0;} else ;//空語句}//end ISR這個例子也許寫的漏洞百出,但你可以看出一點端倪,用中斷定時,高電平時間和低電平時間都只能是計時器週期的整數倍。因為只有當計時器經過一整個週期,產生溢出中斷時才會轉入ISR中斷服務程式,從而讓我們可以反轉電平產生方波波形。現在你可能有點懂我的意思了,你再看看比較匹配中斷:計時器從1計到256(假定),中途如果與OCR0(假定)相比較,匹配的話就會產生比較匹配中斷,還是假設256分頻,計數器加1大約為0.032ms,78對應2.5ms,250對應8ms你看舵機驅動我們需要高電平1.5ms~2.5ms來控制0~180度轉向,同時整個週期要保持在20ms,對吧我們再來算一下,256分頻,計時器每加一,就是大約0.032ms,要達到1.5ms,差不多計數49次,2.5ms,對應計數約80次,20ms對應計數約645次。1.5~2.5ms之間安插了180度角,對吧,一度角差不多0.00555556ms,用256分頻的話不切實際,我們換用8分頻,分頻後頻率是1MHz,計數器加一耗時約0.000954ms,要達到1.5ms,差不多計數1573次,2.5ms,對應計數約2621次。1.5~2.5ms之間安插了180度角,一度角差不多0.00555556ms,差不多相當於計數6次的時間差。我的主要方法是:用多個全域變數控制多個舵機。有多少個電機,就用多少個全域變數,比如舵機1,舵機2,,,,舵機100.。。然後,由於1.5ms,2.5ms,20ms,都差不多是計數6次的時間0.00555556ms的整數倍,所以我們就以6為基數,讓每計數六次產生一次比較中斷,每次中斷,所有全域變數都加1,然後用不同的全域變數的值來決定具體哪個舵機受到本次中斷的影響。回到溢出中斷的例子,你看看:ISR(SIG_OVERFLOW0)//256分頻,計數器加1大約為0.032ms,78對應2.5ms,250對應8ms{ count1+=1; count2+=1; if(count12&&PA0==1){ PA0=0;//count1過時了,PA的0位引腳變成低電平,由count2接管 else if(count24&&PA0==0){ PA0=1;//count2過時了,PA0重新回到高電平,由count1接管 count1=0; count2=0;} else ;//空語句}//end ISR每次count1,count2都一起加1,剛開始是高電平,當count1增加到3時高電平結束,count2則增加到5時低電平結束,到這時二者都清零,然後一切又周而復始多個舵機也是一樣的,假設兩個全域變數控制一個舵機,其中一個控制高電平另一個控制低電平,則很多個舵機就有很多對全域變數。每次比較匹配中斷時所有變數都+1,然後每個變數加到某個數值時觸發“電平變化”,然後控制某個舵機的那一對脈衝經過自己的一個週期後清零就可以了,就像上面程式中那樣。多個舵機跟一個舵機沒啥大區別,就是全域變數有點暈人而已。做機器人用的舵機多了,不僅程式設計要細心一點,還要算好舵機之間的角度關係式,看好哪些個舵機的角度之間有公式聯繫,儘量減少變數數。數學很重要,程式設計都是附帶的。只要引腳夠用,mega16可以控制無限多的舵機,然而舵機數量太多,if判斷語句太多,就會導致語句執行時間過長,舵機方波時間精度達不到要求。它們之間會有平衡點的。
2016年01月22日 00:00

看看我們的舵機吧,控制很簡單,Arduino串口都能同時控制幾個舵機運動,我們的舵機0-360°的位置可控制(不是360°連續旋轉哦,其實我們的也能360°旋轉),相容PWM控制。www.oc-servo.com有興趣可以看看。void setup() { Serial.begin(1000000); Serial.println(“#254 P0 T1500 “); delay(1600); }void loop() { Serial.println(“#0 S-1000“); Serial.println(“#4 SD900 T1000“); Serial.println(“#1 P4095 T1000“); delay(2000); Serial.println(“#4 SD900 T1000“); Serial.println(“#1 P0 T1000“); delay(2000); Serial.println(“#4 SD900 T1000“);}以上是用Arduino控制幾個舵機做不同的動作希望對您有用。

2016年01月22日 00:00

這你應該問專業的人了。

 相關用戶問答
  • 現在電視主流無非是lcd和led兩種。lcd和led的差別,一,外觀上很好分辨,lcd厚,快十釐米呢,led薄,最後不到3.5釐米,手一摸就能差別。二,兩個發光原理不一樣,lcd屏後面是一排燈管作為光源發光,led是發光二極體,運行同一時間的兩種機子明顯lcd的屏比led的燙很多,所以lcd費電,壽命沒有led長。三,led的清晰度和色彩都要好於lcd。所以建議led的,lcd馬上就淘汰了,現在各個品牌都在對lcd進行清貨,已經不生產了,到了十一基本全是led。然後買電視主要買的還是內個屏,問清楚是什麼屏,軟屏硬屏哪家產的。軟屏用手指按壓有水文,輕輕敲擊會閃,硬屏不會。硬屏之所以叫硬屏就是比軟屏多了層膜,相對散熱就差些,這點去賣場摸能摸出來。硬屏色彩深一些,軟屏色彩鮮亮。臺灣屏便宜啊,自然沒有samsunglg的好。再者解析度頻率,記住要看物理解析度,而不是支援解析度,頻率自然是越高越好。然後就是功能了,現在都在推網路電視,能上網,我覺得這個功能挺無聊的,不過是連上網線去他們品牌自己專門弄的那麼個網路平臺看點兒過時的資訊和網上早已火過了的電影電視劇,資源太有限了,還會導致機子運行緩慢,所以帶網路的不推薦,上網電腦就行了用電視幹嘛。關於品牌,並不是samsung索尼夏普的電視用的就是samsung索尼夏普的液晶屏,他們的便宜低端機基本都是臺灣屏,這點買的時候一定要問清楚否則就要上當。其實日韓牌子現在都是國內代工的,性價比低,同樣面板功能類似的機子要比國產品牌貴很多,花大價錢不過買一個銘牌。個人推薦國產品牌konka的,自己買過兩台幫親戚買過幾台都沒有問題,畫質也很好。konka37寸92系列,新產品,led的,最近我剛買了一個32寸這款,性價比很高。37寸這款5000上下,不帶網路,全高清,有usb,可插硬碟看電影支援大部分視頻格式。或者konka40寸86系列,lcd的,比上款多了一個網路功能可線上看電影,4600上下。konka42寸80系列,lcd的,不帶網路,全高清,有usb,可插硬碟看電影支援大部分視頻格式,4900上下。

  • 三星彩電ua75f6400ajxxz參考報價:¥4999螢幕尺寸:55英寸解析度:4K(3840*2160)HDMI介面:主機:3*HDMI2.0推薦觀看距離:5.0米以上回應時間:8msUSB媒體播放:Ultra-VDEC強勁解碼,支持HEVC4K2K@120Hz,支援多路高清解價格來源網路,僅供參考。

  • KU Band LNBLNB是長期工作在露天的有源電子部件,產生故障的原因有慢性的,如雨水銹蝕,也有瞬間的,如雷擊、浪湧(電壓和電流)衝擊。

  • 這就普通的一個變數定義啊 uint8_t是類型,應該就是unsigned char inputstr是一個陣列,元素類型是uint8_t,陣列元素個數是CMD_STRING_SIZE。 CMD_STRING_SIZE可能是一個巨集定義,代表一個數值,如50,100之類。也可能是一個const常量或是枚舉值。

  • 把ADC設置成計時器事件觸發就可以了啊!然後把相應的計時器配置成PWM方式,這時PWM的頻率就是ADC的取樣速率了。設定的時候只能設計時器3部分或者完全重映射,部分重映射只有通道1和2被重映射,完全重映射,四個通道都會被映射到其他IO。用計時器中斷吧,把PWM的脈寬配置成定時中斷,把GPIO引腳都配置好,相應時鐘都使能,然後到計時器中斷函數中做相同的處理。STM32F103哪有對外供電的能力?看看你的板子上有沒有232介面器件(例如MAX232、MAX202等),這類介面器件內部有升壓電荷泵並且有一定的帶載能力。

地圖 隱私 臉書 聯繫
搜索
喜欢就按个赞吧!!!
点击关闭提示