智能小车的直流电机控制参考模板.doc

上传人:doc321 文档编号:15004031 上传时间:2022-03-03 格式:DOC 页数:8 大小:160KB
返回 下载 相关 举报
智能小车的直流电机控制参考模板.doc_第1页
第1页 / 共8页
智能小车的直流电机控制参考模板.doc_第2页
第2页 / 共8页
智能小车的直流电机控制参考模板.doc_第3页
第3页 / 共8页
智能小车的直流电机控制参考模板.doc_第4页
第4页 / 共8页
智能小车的直流电机控制参考模板.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《智能小车的直流电机控制参考模板.doc》由会员分享,可在线阅读,更多相关《智能小车的直流电机控制参考模板.doc(8页珍藏版)》请在三一文库上搜索。

1、智能小车的直流电机控制【实验目的】了解以单片机为核心的直流电机控制系统掌握此系统中直流电机驱动与调速原理熟悉ICCAVR 软件编译环境,会编写控制程序【实验器材】智能小车一部,下载线一根【实验原理】直流电机驱动控制系统示意图:在本实验中所分析的是以单片机ATMEGA8515L 为核心的直流电机控制系统。ATMEGA8515L 芯片的引脚图如下:功放驱动电路采用基于双极性H-桥型脉宽调整方式PWM 的集成电路L293D。L293D是单块集成电路,高电压,高电流,四通道驱动,设计用来接受DTL 或者TTL 逻辑电平,驱动感性负载(比如 继电器,直流和步近马达),和开关电源晶体管。其引脚图如下:1

2、/ 8ATMEGA8515L 利用I/O 口(PD5,PE2,PD4,PD6)向驱动电路输出控制电平,这些I/O口作为单片机控制指令的输出,连接到驱动电路中L293D 的相应管脚上。其真值表如下:对于电机的转速调整,我们是采用脉宽调制(PWM)办法,控制电机的时候,电源并非连续地向电机供电,而是在一个特定的频率下以方波脉冲的形式提供电能。不同占空比的方波信号能对电机起到调速作用,这是因为电机实际上是一个大电感,它有阻碍输入电流和电压突变的能力,因此脉冲输入信号被平均分配到作用时间上,这样,改变在始能端PE2 和PD5 上输入方波的占空比就能改变加在电机两端的电压大小,从而改变了转速。此实验中用

3、微处理机来实现脉宽调制,通常的方法有两种:(1)用软件方式来实现,即通过执行软件延时循环程序交替改变端口某个二进制位输出逻辑状态来产生脉宽调制信号,设置不同的延时时间得到不同的占空比。(2)硬件电路自动产生PWM 信号,不占用CPU 处理的时间。这就要用到ATMEGA8515L 的在PWM 模式下的计数器1,具体内容可参考相关书籍。【实验步骤】(1) 连接好电路,把数据线,下载线连接好,打开电源(2) 进入ICCAVR 编译环境,调试程序直至没有错误,编译环境简介请参见附录一(3) 下载,烧录进单片机,观察实验结果(4) 反复修改调试程序,逐渐增强其功能(5) 写好实验报告,实验心得体会【程序

4、示例】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;

5、DDRE = 0xFF;/call this routine to initialize all peripheralsvoid init_devices(void)/stop errant interrupts until set upCLI(); /disable all interruptsport_init();MCUCR = 0x00;EMCUCR =0x00;GICR = 0x00;TIMSK = 0x00;SEI(); /re-enable interrupts/all peripherals are now initializedvoid delay(unsigned int

6、yan)while(yan0)yan-;void runforth(void)while(time1000)PORTE=0x04;PORTD=0x70;delay(2000);time+;time=0;void zuozhuanwan(void)while(time1000)PORTE=0x00;PORTD=0X70;delay(2000);time+;time=0;void youzhuanwan(void)while(time1000)PORTE=0x04;PORTD=0x50;delay(2000);time+;time=0;void houtui(void)while(time1000

7、)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

8、-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 - pres

9、cale:64/ WGM: Normal/ desired value: 40Hz/ actual value: Out of rangevoid timer0_init(void)TCCR0 = 0x00; /stop timerTCNT0 = 0xfa /*INVALID SETTING*/; /set count valueTCCR0 = 0x03; /start timer#pragma interrupt_handler timer0_ovf_isr:8void timer0_ovf_isr(void)TCNT0 = 0xfa /*INVALID SETTING*/; /reload

10、 counter valueif(m=a)PORTD=0x70;TCCR1B=0x03;TCCR0=0x00;n=1;elsem+;/TIMER1 initialize - prescale:64/ WGM: 0) Normal, TOP=0xFFFF/ desired value: 40Hz/ actual value: 40.013Hz (0.0%)void timer1_init(void)TCCR1B = 0x00; /stopTCNT1H = 0xff; /setupTCNT1L = 0xfa;OCR1AH = 0x06;OCR1AL = 0x1A;OCR1BH = 0x06;OCR

11、1BL = 0x1A;TCCR1A = 0x00;TCCR1B = 0x00;#pragma interrupt_handler timer1_ovf_isr:7void timer1_ovf_isr(void)TCNT1H = 0xff; /reload counter high valueTCNT1L = 0xfa; /reload counter low valueif(n=250-a)PORTD=0x20;TCCR0=0x03;TCCR1B=0x00;m=1;if(p=0)if(a=125)p=1;elsea+;elseif(a=1)p=0;elsea-;elsen+;/call th

12、is routine to initialize all peripheralsvoid init_devices(void)/stop errant interrupts until set upCLI(); /disable all interruptsport_init();timer0_init();timer1_init();MCUCR = 0x00;EMCUCR = 0x00;GICR = 0x00;TIMSK = 0x82;SEI(); /re-enable interrupts/all peripherals are now initializedvoid main(void)a=0;p=0;m=1;n=1;init_devices();while(1)PORTE=0x04;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1