智能小车的直流电机控制

智能小车的直流电机控制
【实验目的】
了解以单片机为核心的直流电机控制系统
掌握此系统中直流电机驱动与调速原理
熟悉iccavr 软件编译环境,会编写控制程序
【实验器材】
智能小车一部,下载线一根
【实验原理】
直流电机驱动控制系统示意图:
在本实验中所分析的是以单片机atmega8515l 为核心的直流电机控制系统。
atmega8515l 芯片的引脚图如下:
功放驱动电路采用基于双极性h-桥型脉宽调整方式pwm 的集成电路l293d。l293d是单
块集成电路,高电压,高电流,四通道驱动,设计用来接受dtl 或者ttl 逻辑电平,驱动感
性负载(比如 继电器,直流和步近马达),和开关电源晶体管。其引脚图如下:
atmega8515l 利用i/o 口(pd5,pe2,pd4,pd6)向驱动电路输出控制电平,这些i/o
口作为单片机控制指令的输出,连接到驱动电路中l293d 的相应管脚上。
其真值表如下:
对于电机的转速调整,我们是采用脉宽调制(pwm)办法,控制电机的时候,电源并非
连续地向电机供电,而是在一个特定的频率下以方波脉冲的形式提供电能。不同占空比的方
波信号能对电机起到调速作用,这是因为电机实际上是一个大电感,它有阻碍输入电流和电
压突变的能力,因此脉冲输入信号被平均分配到作用时间上,这样,改变在始能端pe2 和
pd5 上输入方波的占空比就能改变加在电机两端的电压大小,从而改变了转速。
此实验中用微处理机来实现脉宽调制,通常的方法有两种:
(1)用软件方式来实现,即通过执行软件延时循环程序交替改变端口某个二进制位输出逻
辑状态来产生脉宽调制信号,设置不同的延时时间得到不同的占空比。
(2)硬件电路自动产生pwm 信号,不占用cpu 处理的时间。
这就要用到atmega8515l 的在pwm 模式下的计数器1,具体内容可参考相关书籍。
【实验步骤】
(1) 连接好电路,把数据线,下载线连接好,打开电源
(2) 进入iccavr 编译环境,调试程序直至没有错误,编译环境简介请参见附录一
(3) 下载,烧录进单片机,观察实验结果
(4) 反复修改调试程序,逐渐增强其功能
(5) 写好实验报告,实验心得体会
【程序示例】
1、小车前进一段——>左转一圈——>右转一圈——>前进一段——>后退一段——>停下
//icc-avr application builder : 2005-5-19 19:12:13
// target : m8515
// crystal: 4.0000mhz
#include
#include
unsigned int time;
unsigned int yan;
void port_init(void)
{
porta = 0x00;
ddra = 0xff;
portb = 0x00;
ddrb = 0x00;
portc = 0x00;
ddrc = 0x00;
portd = 0x00;
ddrd = 0xff;
porte = 0x00;
ddre = 0xff;
}
//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
cli(); //disable all interrupts
port_init();
mcucr = 0x00;
emcucr =0x00;
gicr = 0x00;
timsk = 0x00;
sei(); //re-enable interrupts
//all peripherals are now initialized
}
void delay(unsigned int yan)
{
while(yan>0)
yan--;
}
void runforth(void)
{
while(time<1000)
{
porte=0x04;
portd=0x70;
delay(2000);
time++;
}
time=0;
}
void zuozhuanwan(void)
{while(time<1000)
{
porte=0x00;
portd=0x70;
delay(2000);
time++;
}
time=0;
}
void youzhuanwan(void)
{while(time<1000)
{
porte=0x04;
portd=0x50;
delay(2000);
time++;
}
time=0;
}
void houtui(void)
{while(time<1000)
{
porte=0x04;
portd=0x20;
delay(2000);
time++;
}
time=0;
}
void stop(void)
{
porte=0x00;
portd=0x00;
}
void main(void)
{ init_devices();
time=0;
runforth();
zuozhuanwan();
youzhuanwan();
runforth();
houtui();
stop();
}
2、调速程序
以下是用两定时器来控制加在两方向控制口的方波占空比,以此来对电机进行调速,而
同学们可以利用对两始能端高低电平进行不同延时来实现调速功能。
//icc-avr application builder : 2005-5-18 16:45:27
// target : m8515
// crystal: 4.0000mhz
#include
#include
unsigned char a;
unsigned char p;
unsigned char m;
unsigned char n;
void port_init(void)
{
porta = 0x00;
ddra = 0x00;
portb = 0x00;
ddrb = 0x00;
portc = 0x00;
ddrc = 0x00;
portd = 0x00;
ddrd = 0x70;
porte = 0x00;
ddre = 0x04;
}
//timer0 initialize - prescale:64
// wgm: normal
// desired value: 40hz
// actual value: out of range
void timer0_init(void)
{
tccr0 = 0x00; //stop timer
tcnt0 = 0xfa /*invalid setting*/; //set count value
tccr0 = 0x03; //start timer
}
#pragma interrupt_handler timer0_ovf_isr:8
void timer0_ovf_isr(void)
{
tcnt0 = 0xfa /*invalid setting*/; //reload counter value
if(m==a)
{portd=0x70;
tccr1b=0x03;
tccr0=0x00;
n=1;}
else{m++;}
}
//timer1 initialize - prescale:64
// wgm: 0) normal, top=0xffff
// desired value: 40hz
// actual value: 40.013hz (0.0%)
void timer1_init(void)
{
tccr1b = 0x00; //stop
tcnt1h = 0xff; //setup
tcnt1l = 0xfa;
ocr1ah = 0x06;
ocr1al = 0x1a;
ocr1bh = 0x06;
ocr1bl = 0x1a;
tccr1a = 0x00;
tccr1b = 0x00;
}
#pragma interrupt_handler timer1_ovf_isr:7
void timer1_ovf_isr(void)
{
tcnt1h = 0xff; //reload counter high value
tcnt1l = 0xfa; //reload counter low value
if(n==250-a)
{portd=0x20;
tccr0=0x03;
tccr1b=0x00;
m=1;
if(p==0){if(a==125){p=1;}
else{a++;}}
else{{if(a==1){p=0;}
else{a--;}}}}
else{n++;}
}
//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
cli(); //disable all interrupts
port_init();
timer0_init();
timer1_init();
mcucr = 0x00;
emcucr = 0x00;
gicr = 0x00;
timsk = 0x82;
sei(); //re-enable interrupts
//all peripherals are now initialized
}
void main(void)
{a=0;
p=0;
m=1;
n=1;
init_devices();
while(1)
{porte=0x04;}
}

NVIDIA已正式确认其从软银收购英国移动芯片制造商ARM的决定
MIMO技术在移动WiMAX中的应用
MS2609—低噪声放大器
基本共集放大电路的组成、静态分析及动态分析
【节能学院】安科瑞红外测温方案在某锂电厂房项目密集母线槽上的应用
智能小车的直流电机控制
明基i707智能投影机体验 让家用机兼具商务机的作用
东芝推出采用新型封装的车载40V N沟道功率MOSFET
2019上海春季医疗器械博览会
蒸汽冷凝水回收装置的特点介绍
云计算风险应该怎样来管理
NB81模组的特点优势
赛普拉斯即日起将正式并入英飞凌
TSSA80精密凸轮连杆输送机的特点及应用
杭州永磁集团有限公司企业标准测量系统分析(MSA)方法
盘点2019年度汽车零部件巨头接下来的计划
高速PCB板加工流程中哪些因素会影响到信号完整性SI呢?
载人级自动驾驶飞行器迎来新机遇,亿航或许正迎来自己的时代
Silicon Labs PCI Express时钟抖动计算工具简化计时设计
苹果Apple Pay的全球交易额预计到2024年将达到6860亿美元