单片机课程设计:设计一个传输带控制系统"/>
单片机课程设计:设计一个传输带控制系统
一、题目
设计基本要求:
(1)制作一个小型的传输带控制系统,传输带上没有物件的时候停止传输带运行,传输带有物件后,根据物件的颜色可以使得传输带传输的速度不同,至少有两种明显的速度区分,传输带模型如下图1所示,传输带提供了传输带模型和直流电机,其他控制电路自制。
(2)系统具有显示屏,可以统计各组不同颜色物件当前已传输的数量。
二、工程下载链接:下载
三、器件选择
1、传送带选择:传送带模型可以直接tb或者pdd直接买一个。
2、驱动选择:L298N 因为要实现速度 不一样,所以需要驱动模块。
3、颜色识别:GY-31颜色传感器,可以识别颜色,返回RGB的值。
4、显示模块:LCD1602
5、单片机选择:STC15F2K60S2
外加LED灯和按键模块。
原理图如下:
成品模型:
四:设计思路
1、首先最重要的是颜色传感器的使用:代码参考
颜色传感器的使用有一点需要注意:他的引脚 S2、S3可以接给单片机的任何一个引脚,但是OUT引脚需要接给单片机带有计数器功能的引脚。
S2, S3选择颜色通道,如下表。OUT输出50% duty方波,方波频率与光强成比例,规格书给出的范围为 10-20kHz(周期50-100us):
原理介绍可以看这个博客:颜色传感器
具体使用是:初始化采集传送带RGB的值,记录传送带的RGB的值,之后物块放上去RGB值改变,则代表有物块,开始运输,传送带开始运动,不同颜色给不同的运动速度。
2、L298N使用
原理介绍:L298N
具体方法:IN1和IN2为一组,输入高低电平控制电机运动状态,ENA输入PWM控制电机转速。
其中ENA产生的PWM我一般用10-16Khz。
部分代码演示:
#include "Motor.h"uint cycle = 12;
uint PWM_high = 10;void Timer2Init(void) //1微秒@11.0592MHz
{AUXR |= 0x04; //定时器时钟1T模式T2L = 0xF5; //设置定时初始值T2H = 0xFF; //设置定时初始值IE2 |= (1<<2); //允许中断IE2 |= 0x04; // Enable T2 overflow interrupt requestIE |= 0x80; // Enable global interruptAUXR |= 0x10; //定时器2开始计时EA=1; //开中断
}//定时器2中断服务函数
//设置电机频率约为15khz
void time2() interrupt 12
{static uint i = 0;i++;if(i <= PWM_high)ENA = 1;elseENA = 0;if(i == cycle)i = 0;
}
//电机运行设置
//0 1 转动方向 其他数字则停止
void Motor_direction(uchar direction)
{if(direction == 1){IN1 = 1;IN2 = 0;}else if(direction == 0){IN1 = 0;IN2 = 1;}else{IN1 = 1;IN2 = 1;}
}
//电机速度和方向设置
//speed 速度设置 0-12
//direction 运行方向设置0 1 转动方向 其他数字则停止
void Motor_speed(uint speed,uchar direction)
{Motor_direction(direction);PWM_high = speed;
}
更多推荐
单片机课程设计:设计一个传输带控制系统
发布评论