⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 md_const.h

📁 本代码是仿真机器人的步行原码,因为个人的原因,代码还不是很完美,希望各位多多指教!
💻 H
字号:
/***************************************************/
/*					寻迹小车 FollowMe 项目								 */
/*        	—— 主控程序电机驱动模块								 */
/*              之常数声明   											 */
/*					    20060905                           */
/*              By DingQi                          */
/***************************************************/
// 注:以下文档的 TAB 为2个字符!

// PCA 初始化常数,
#define		STARTPCA_C 	0x40;		// or CCON 中的CR位控制 启动 PCA
#define		STOPPCA_C 	0xBF;		// and CCON 中的CR位控制 停止 PCA

#define		FOSCdiv12_C 0x00
#define		FOSCdiv2_C 	0x02	
#define		T0Over_C 	0x04		// T0 溢出
#define		ECI_C 		0x06		// 外部脉冲输入

#define		EnCF_C		0x01			// 允许PCA溢出中断

#define		EnCMP_C		0x40			// 0100 0000, CCAPMn 中控制位6, 允许比较器
#define		EnCAPP_C	0x20			// 0010 0000, CCAPMn 中控制位5, 允许上升沿捕获
#define		EnCAPN_C	0x10			// 0001 0000, CCAPMn 中控制位4, 允许下降沿捕获
#define		EnMAT_C		0x08			// 0000 1000, CCAPMn 中控制位3, 允许匹配或捕获后置位 CCFn
#define		EnTOG_C		0x04			// 0000 0100, CCAPMn 中控制位2, 允许匹配或捕获后触发输出翻转
#define		EnPWM_C		0x02			// 0000 0010, CCAPMn 中控制位1, 允许对应的端子输出PWM信号
#define		EnCCFI_C	0x01			// 0000 0001, CCAPMn 中控制位0, 允许CCF产生中断

// PCA 中断
#define		EnPCALVD_C 	0x40

// PCA 优先级
#define		PCALVD_HIGH 0x40	

// 电机控制

#define		INIT_PWM_FREQ 200				// PWM频率初始化值
#define		MIN_OUT_TIME	800				// 最小PWM 输出的时间,单位 :1/(FOSC/2)

// PID 常数
#define		DEFAULT_KP				1			// 默认PID系数
#define		DEFAULT_TI				0			// 默认PID系数
#define		DEFAULT_TD				0			// 默认PID系数
#define		DEFAULT_PID_RATIO	1			// 默认PID系数

#define		INI_PWM_VALUE			100		// PID 控制时的PWM初值,用于启动电机,否则无法实现测速

// 电机控制输出

/* 控制位对应关系:
电机1(左)
P2.0 - CTL 1, H 桥的左上臂,0 电平输出导通 1 电平输出截止
P2.1 - CTL 2, H 桥的左下臂,1 电平输出导通 0 电平输出截止
P2.2 - CTL 3, H 桥的右上臂,0 电平输出导通 1 电平输出截止
P2.3 - CTL 4, H 桥的右下臂,1 电平输出导通 0 电平输出截止

电机 2(右)
P2.4 - CTL 1, H 桥的左上臂,0 电平输出导通 1 电平输出截止
P2.5 - CTL 2, H 桥的左下臂,1 电平输出导通 0 电平输出截止
P2.6 - CTL 3, H 桥的右上臂,0 电平输出导通 1 电平输出截止
P2.7 - CTL 4, H 桥的右下臂,1 电平输出导通 0 电平输出截止


电机 1 控制逻辑:
							P2.3     P2.2    P2.1   P2.0
							右下     右上    左下   左上
正向前半周      1       1       0      0
正向后半周      1       1       0      1

反向前半周      0       0       1      1
反向前半周      0       1       1      1

惰行      			0       1       0      1
刹车      			1       1       1      1

双极性前半周		1				1				0			 0
双极性后半周		0				0				1			 1

电机 2 控制逻辑相同,只是对应高 4 位。

*/

// 电机 1 控制
#define 	M1FORWARD1	0x0C			// 0000 1100 前进,左上、右下导通,
#define 	M1FORWARD2	0x0D			// 0000 1101 前进间歇,右下导通

#define 	M1BACK1			0x03			// 0000 0011 后退,左下、右上导通
#define 	M1BACK2			0x07			// 0000 0111 后退间歇,左下导通

#define 	M1FLOAT			0x05			// 0000 0101 行进控制浮空,4 个臂都截止
#define 	M1BRACK			0x0F			// 0000 1111 行进控制刹车,两个下臂导通,上臂截止

#define		M1_MASK			0xF0			// 清除原来输出值,保留另一个电机的输出

// 电机 2 控制
#define 	M2FORWARD1	0xC0			// 1100 0000 前进,左上、右下导通,
#define 	M2FORWARD2	0xD0			// 1101 0000 前进间歇,右下导通

#define 	M2BACK1			0x30			// 0011 0000 后退,左下、右上导通
#define 	M2BACK2			0x70			// 0111 0000 后退间歇,左下导通

#define 	M2FLOAT			0x50			// 0101 0000 行进控制浮空,4 个臂都截止
#define 	M2BRACK			0xF0			// 1111 0000 行进控制刹车,两个下臂导通,上臂截止

#define		M2_MASK			0x0F			// 清除原来输出值,保留另一个电机的输出

#define		PWM_CVT_POINT 50			// 单、双极性电机控制的PWM值转换点。好像效果不好,所以暂时降低进入点

#define		FLOAT_PWM 	1001			// PWM开环模式下的惰行命令
#define		BRAKE_PWM		1002			// PWM开环模式下的刹车命令

#define		FLOAT_SPEED 	10001		// 转速闭环模式下的惰行命令
#define		BRAKE_SPEED		10002		// 转速闭环模式下的刹车命令

#define		IN_STOP				0					// 电机运转标志 —— 停
#define		IN_FORWARD		1					// 电机运转标志 —— 正转
#define		IN_BACKWARD		-1				// 电机运转标志 —— 反转

// 测速用常数
#define		UP					0						// 正跳数据对应的下标
#define		DOWN				1						// 负跳数据对应的下标
#define		GAP					2						// 两次计算之间的时间

#define		NO_START_CAPTURE	0			// 未开始脉冲捕获
#define		START_CAPTURE			0xFF	// 开始脉冲捕获

#define		PCA_CNT_FEQ 11059200l		// PCA的计数频率. Fosc/2

#define		PULSNUM_OF_CYCLE	10		// 一圈的脉冲数,即码盘的分割数

#define		P_ERROR_LIMIT			8			// 正跳周期相对于对应负跳周期的偏差限制

// 基础常数

#define		FOSC		22118400l				// 振荡器频率 22.1184Mhz

#define		TRUE				1
#define		FALSE				0

#define		HIGH_C			1
#define		LOW_C				0

#define		ON_C				1
#define		OFF_C				0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -