成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

四足機(jī)器人——舵機(jī)控制

cnTomato / 2047人閱讀

摘要:延時(shí)函數(shù)初始化定時(shí)器初始化對(duì)應(yīng)度對(duì)應(yīng)度對(duì)應(yīng)度對(duì)應(yīng)度對(duì)應(yīng)度驅(qū)動(dòng)模塊驅(qū)動(dòng)程序主函數(shù)延時(shí)函數(shù)初始化初始化舵機(jī)驅(qū)動(dòng)

目錄

1、51定時(shí)器控制單個(gè)舵機(jī)

2、51定時(shí)器控制多路舵機(jī)

3、stm32控制舵機(jī)

4、pca9685驅(qū)動(dòng)模塊


1、51定時(shí)器控制單個(gè)舵機(jī)

舵機(jī)的控制一般需要一個(gè)20ms左右的時(shí)基脈沖,該脈沖的高電平部分一般為0.5ms~2.5ms范圍內(nèi)的角度控制脈沖部分,總間隔為2ms,比如說180度伺服角度,對(duì)應(yīng)的關(guān)系如下。

void main(void){	InitTimer0();	//定時(shí)器0初始化	EA = 1;			//開總中斷	while(1)		//大循環(huán)	{			Servo0PwmDuty = 500;		//脈沖寬度在500微秒,對(duì)應(yīng)-90°		DelayMs(1000);		//延時(shí)1秒		Servo0PwmDuty = 1000;	//脈沖寬度在1000微秒,對(duì)應(yīng)-45°		DelayMs(1000);		Servo0PwmDuty = 1500;		DelayMs(1000);		Servo0PwmDuty = 2000;		DelayMs(1000);		Servo0PwmDuty = 2500;		DelayMs(1000);	}}

2、51定時(shí)器控制多路舵機(jī)

void main(void){	uint8 i;	InitTimer0();	//定時(shí)器0初始化	EA = 1;			//開總中斷	while(1)		//大循環(huán)	{			for(i = 0;i<8;i++)			ServoPwmDuty[i] = 500;		//脈沖寬度在500微秒,對(duì)應(yīng)-90°		DelayMs(1000);					//延時(shí)1秒		for(i = 0;i<8;i++)			ServoPwmDuty[i] = 1000;		//脈沖寬度在1000微秒,對(duì)應(yīng)-45°		DelayMs(1000);		for(i = 0;i<8;i++)			ServoPwmDuty[i] = 1500;		//脈沖寬度在1500微秒,對(duì)應(yīng)0°		DelayMs(1000);					//延時(shí)1秒		for(i = 0;i<8;i++)			ServoPwmDuty[i] = 2000;		//脈沖寬度在2000微秒,對(duì)應(yīng)45°		DelayMs(1000);		for(i = 0;i<8;i++)			ServoPwmDuty[i] = 2500;		//脈沖寬度在2500微秒,對(duì)應(yīng)90°		DelayMs(1000);					//延時(shí)1秒	}}

3、stm32控制舵機(jī)

PWM就是脈沖寬度調(diào)制,也就是占空比可變的脈沖波形.

pwm的占空比,就是指高電平保持的時(shí)間,與該pwm時(shí)鐘周期時(shí)間之比。

在應(yīng)用中就是通過調(diào)節(jié)pwm占空比來控制,也就是一個(gè)周期中高電平所占的百分比來控制舵機(jī)的轉(zhuǎn)角的。

在代碼中要特別注意的是時(shí)基結(jié)構(gòu)體的TIM_Period(自動(dòng)重裝載寄存器值,簡稱arr)和TIM_Prescaler(預(yù)分頻寄存器值,簡稱psc),因?yàn)檫@兩個(gè)決定了輸出PWM信號(hào)的周期。具體的周期計(jì)算公式為:周期=(arr+1)*(psc+1)/CLK。其中CLK為計(jì)數(shù)器的時(shí)鐘頻率,我的是72MHZ,也就是72000000。最后計(jì)算結(jié)果單位為秒,結(jié)果為0.02s,也就是20ms。這樣的配置就是為了讓輸出的PWM信號(hào)達(dá)到前面說到的舵機(jī)要求的20ms周期。

int main(void){	int delay_time;	delay_init(); //延時(shí)函數(shù)初始化	TIM_Init(); //定時(shí)器初始化	while(1)	{		delay_ms(1000);		TIM_SetCompare1(TIM1, 175); //對(duì)應(yīng)180度        delay_ms(1000);		TIM_SetCompare1(TIM1, 180); //對(duì)應(yīng)135度        delay_ms(1000);		TIM_SetCompare1(TIM1, 185); //對(duì)應(yīng)90度        delay_ms(1000);		TIM_SetCompare1(TIM1, 190); //對(duì)應(yīng)45度        delay_ms(1000);		TIM_SetCompare1(TIM1, 195); //對(duì)應(yīng)0度	}}

4、pca9685驅(qū)動(dòng)模塊

stm32驅(qū)動(dòng)程序:

#include "pca9685.h"#include "myiic.h"#include "delay.h"#include "math.h"void pca_write(u8 adrr,u8 data){ 	IIC_Start();		IIC_Send_Byte(pca_adrr);	IIC_Wait_Ack();		IIC_Send_Byte(adrr);	IIC_Wait_Ack();		IIC_Send_Byte(data);	IIC_Wait_Ack();		IIC_Stop();}u8 pca_read(u8 adrr){	u8 data;	IIC_Start();		IIC_Send_Byte(pca_adrr);	IIC_Wait_Ack();		IIC_Send_Byte(adrr);	IIC_Wait_Ack();		IIC_Start();		IIC_Send_Byte(pca_adrr|0x01);	IIC_Wait_Ack();		data=IIC_Read_Byte(0);	IIC_Stop();		return data;}void pca_setfreq(float freq){		u8 prescale,oldmode,newmode;		double prescaleval;		freq *= 0.92; 		prescaleval = 25000000;		prescaleval /= 4096;		prescaleval /= freq;		prescaleval -= 1;		prescale =floor(prescaleval + 0.5f);		oldmode = pca_read(pca_mode1);			newmode = (oldmode&0x7F) | 0x10; // sleep			pca_write(pca_mode1, newmode); // go to sleep			pca_write(pca_pre, prescale); // set the prescaler			pca_write(pca_mode1, oldmode);		delay_ms(2);			pca_write(pca_mode1, oldmode | 0xa1); }void pca_setpwm(u8 num, u32 on, u32 off){		pca_write(LED0_ON_L+4*num,on);		pca_write(LED0_ON_H+4*num,on>>8);		pca_write(LED0_OFF_L+4*num,off);		pca_write(LED0_OFF_H+4*num,off>>8);}void Servo_Init(float hz,u8 angle){	u32 off=0;                    	IIC_Init();	pca_write(pca_mode1,0x0);	pca_setfreq(hz);              	off=(u32)(145+angle*2.4);	pca_setpwm(0,0,off);	pca_setpwm(1,0,off);	pca_setpwm(2,0,off);	pca_setpwm(3,0,off);	pca_setpwm(4,0,off);	pca_setpwm(5,0,off);	pca_setpwm(6,0,off);	pca_setpwm(7,0,off);	pca_setpwm(8,0,off);	pca_setpwm(9,0,off);	pca_setpwm(10,0,off);	pca_setpwm(11,0,off);	pca_setpwm(12,0,off);	pca_setpwm(13,0,off);	pca_setpwm(14,0,off);	pca_setpwm(15,0,off);	delay_ms(500);}void Servo_angle(u8 num,u8 angle){	u32 off = 0;  off = (u32)(158+angle*2.2);	pca_setpwm(num,0,off);}

stm32主函數(shù):

int main(void){		delay_init();//延時(shí)函數(shù)初始化	Servo_Init(50,90);//初始化舵機(jī)驅(qū)動(dòng)	delay_ms(1000);	uart_init(9600);	Servo_angle(0,90);	printf("this is a drill");}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/123604.html

相關(guān)文章

  • 四足機(jī)器狗——12自由度舵機(jī)狗DIY(一)

    摘要:四足仿生機(jī)器人具有高機(jī)動(dòng)性,負(fù)載能力和適應(yīng)能力強(qiáng),可運(yùn)用于物資運(yùn)輸搶險(xiǎn)救援等方面,具有廣闊前景。由于制作電機(jī)狗需要高昂的成本。自主設(shè)計(jì)制造一款舵機(jī)狗來學(xué)習(xí)研究四足機(jī)器狗的步態(tài)算法是一件性價(jià)比極高且很有意義的一件事。 文章目錄 前言 一、初步了解四足結(jié)構(gòu) 1.1.2串聯(lián)機(jī)構(gòu) 1.2?...

    不知名網(wǎng)友 評(píng)論0 收藏0
  • 白澤四足機(jī)器人Opencat程序玩法之——下載安裝配置WiFi app

    摘要:導(dǎo)航在這里白澤四足機(jī)器人導(dǎo)航貼白澤四足機(jī)器人導(dǎo)航貼給模塊燒錄透傳程序這個(gè)程序燒錄進(jìn)模塊之后,它就可以接收手機(jī)指令了。然后我們?nèi)ゲ榭礄C(jī)器人的地址,在設(shè)置那里進(jìn)行地址修改然后點(diǎn)擊右上角的按鈕就可以了連上機(jī)器人了。 導(dǎo)航在這里:白澤四足機(jī)器人導(dǎo)航貼 1.給esp8266模塊燒錄透傳程序 這個(gè)程序燒...

    不知名網(wǎng)友 評(píng)論0 收藏0
  • TFmini與舵機(jī)結(jié)合的機(jī)器人小車避障應(yīng)用方案

    摘要:舵機(jī)接線小車避障原理小車啟動(dòng)后,小車開始向前運(yùn)動(dòng)。搭載的外部電源過重時(shí),會(huì)影響小車車輪的摩擦力,可能兩個(gè)車輪的轉(zhuǎn)速不一致,導(dǎo)致小車并不能按照軌跡行駛。小車車輪在光滑地面有可能造成空轉(zhuǎn)的現(xiàn)象,導(dǎo)致小車不能走直線。 1.試驗(yàn)設(shè)備及接線 1.1實(shí)驗(yàn)設(shè)備 ? MiniQ 桌面機(jī)器人底盤showImg(https://segmentfault.com/img/bVbu59l); 底盤直...

    raoyi 評(píng)論0 收藏0
  • 10. STM32——PWM 控制舵機(jī)(超聲波感應(yīng)開蓋垃圾桶)

    摘要:中央對(duì)齊模式向上計(jì)數(shù)時(shí)當(dāng)時(shí)通道為無效電平,否則為有效電平向下計(jì)數(shù)時(shí)一旦通道為有效電平,否則為無效電平。一般來說,舵機(jī)接收的信號(hào)頻率為,即周期為。 STM32——P...

    jasperyang 評(píng)論0 收藏0
  • STM32CubeMX筆記(9)--定時(shí)器生成PWM特定波形,控制舵機(jī)轉(zhuǎn)動(dòng)

    摘要:只能在度到度之間運(yùn)動(dòng),超過范圍,舵機(jī)輕則齒輪打壞,重則燒壞內(nèi)部電路舵機(jī)能度轉(zhuǎn)動(dòng)能控制轉(zhuǎn)速。相關(guān)定時(shí)器的參數(shù)設(shè)置定時(shí)器為例編寫相關(guān)的函數(shù)文件相關(guān)函數(shù)開啟添加定時(shí)器的通道和通道的生成開啟使能函數(shù),放置于到中的用戶代碼區(qū)。 ...

    darryrzhong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<