关于红外光电对管、微动开关及光电码盘安装应用_第1页
关于红外光电对管、微动开关及光电码盘安装应用_第2页
关于红外光电对管、微动开关及光电码盘安装应用_第3页
关于红外光电对管、微动开关及光电码盘安装应用_第4页
关于红外光电对管、微动开关及光电码盘安装应用_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

20056红外光电对管印制板SL-DIY02-8D,可用于寻迹、避障、使用;光电对管面与印制板平行安装,可用于避障、光电码盘1。SL-DIY02-8A轮式机器人出厂时装三块印制板作寻迹、避(1M),左转右转二次,LED1图利用带滑轮的轻触微动开关作避悬崖及避障用,使复杂问题简单化,尤其避悬崖,不受台子22。程序编写,可以前进—遇悬崖微动开关避障安装,由用户自己用废塑料板、废印制板等材料安装在注塑底板上,见3出厂时,给二只带滑轮的轻触微动开关,一只如图2方法安装接线(不装在注塑底板上),直角塑料板间应加双面胶固定。另一只微动开关,只焊接线(附2只2x10mm螺钉螺母,2只3x10mm如为了更好地在机器人前方多点碰撞而能正确地避开,建议用户在注塑底板上加碰撞环,碰撞环与注塑底板间加弹簧调节,无时不触发微动开关,有时,使碰撞环压微动开关,的比赛项目中触碰墙壁,则必须采用红外光电对管或超声波等非接触传感器,作为SL你不仅可以用延时函数控制机器人走过的时间,也可以用内侧的两个光电编控制机器人走通过延迟函数可以控制机器人走一定的时间,而计算转过的距离就要用机器人内侧的光电3603310.91(度SL-DIY02-8A43mm,驱动2πR=2*3.14*(43/2)=138.6(mm)138.6/33≈SL-DIY02轮式机器人光电码盘图,可根据大小打印后,剪下后贴在内侧上,作光电计数用。60.8mm,驱动轮每转一圈,机器人行走的距离是:2πR=2*3.14*(60.8/2)=191.0(mm)191.0/33≈2πR=2*3.14*(63/2)=198.0/33≈本机采列直插式LG9110电机驱动集成。PD4,PD5到电机驱动U2控制左电机;PD6,PD7到电机驱动U3LG9110控制右电机表 黑线红线黑线红线1010011010停100110停0101停停停4光电码盘实验程SL-DIY02-8A利用光电编码盘准确行走路径计算程序-走正【程序目标 2。编码盘安装在上,可以安装一个,也可以两个(更好),具体安装方法,还有光电管的安装方3(33份这也和车轮速度和光电管的反射距离有关,所以要控制好车速,还有选择发射距离远的光电管,以减少#include<iom48v.h>ATmega48#includemacros.h>unsignedcharGO_=0;//检测编码光电管标unsignedcharGO_count=0;//光电管检测黑白格计#defineGO_BACK #defineGO_FORD1 #defineTURN_R3 #defineTURN_L2 //*******延时uS**********/voiddelay_us(inttime){{time--}while} voiddelay_ms(unsignedint{{}}fa_sl=11停timvoidFORWARD_go(unsignedcharround,unsignedcharfa_sl,unsignedint{{{PORTD=0x50;PD4=0,PD5=1;PD6=0,PD7=1}else{PORTD=0xa0;//PD4=1,PD5=0;PD6=1,PD7=0}}{ }}转左快慢控制,fa_sl=0,fa_sl=1,fa_sl=2timvoidLEFT_go(unsignedcharfa_sl,unsignedinttim){{PORTD=0x10;//PD4=1,PD5=0;PD6=0,PD7=0}else{PORTD=0x90;//PD4=1,PD5=0;PD6=0,PD7=1}{ }}转右快慢控制,fa_sl=0,fa_sl=1,fa_sl=2timvoidRIGHT_go(unsignedcharfa_sl,unsignedinttim){{PORTD= //PD4=0,PD5=0;PD6=1,PD7=0}else{PORTD= //PD4=0,PD5=1;PD6=1,PD7=0}{ }}voidtimer0_init(void){TCCR0B=0x00;//stopTCNT0=0x10;//setcountTCCR0A=TCCR0B=0x02;//start}GO_=0没反射GO_=1有反#pragmainterrupt_handler {if((PINB&0x40)==0x40) {GO_}else}TCNT0=0x10;//reloadcounter}voidSTOP_oid){}type=0type=1;type=2;type=3roundvoidGO_round(unsignedchartype,unsignedintround){unsignedint//r=2.15cm,每次计数走4.2mm, {FORWARD_go(GO_BACK,1,0{while(GO_ FORWARD_go(GO_BACK,1,40STOP_go();//停} {FORWARD_go(GO_FORD,1,0{FORWARD_go(GO_BACK,1,40STOP_go();//停}if(type==2)round{{STOP_go();//停}if(type==3)round{{STOP_go();//停}elseSTOP_go()}voidmain(void){unsignedcharDDRD=0xF0;//motorcontrolportPORTD=0xF0;DDRB=0X07;//ledcontrolportPORTB=0XF7;DDRC=0x00;//SENSORINPUTPORT//insertyourfunctionalcodehere...MCUCR=EICRA=0x00;//extendedextintsEIMSK=0x00;TIMSK00x02;timer0interruptsourcesTIMSK10x00;timer1interruptsourcesTIMSK20x00;timer2interruptsourcesEIMSK=0x00;//中断使能{42cmGO_round(GO_FORD,100);42cmGO_round(TURN_L,33);90(一圈)GO_round(TURN_L,100);}}//ICC-AVRapplicationbuilder:2005-3-10//://Crystal:#include #include unsignedchartt=0; ;定义无符号字符型(PCunsignedcharML_=0;中左指示灯unsignedcharMR_=0;中右指示灯unsignedcharMM_=0;中间指示灯unsignedcharL_=0;左转unsignedcharR_=0;右转unsignedcharGO_=0;前进unsignedcharBLACK_=0;向后unsignedcharBIAN_=0;向后unsignedcharSTOP_=0; unsignedintGO_step=0; unsignedcharGO_count=0; #defineGO_BACK 0;向后#defineGO_FORD #defineTURN_L 2;左转#defineTURN_R 3;右转voiddelay_us(inttime){ {time }while time>1} voiddelay_ms(unsignedinttime){ { }}//转左快慢控制,fa_sl=0,fa_sl=1fa_sl=2voidLEFT_go(unsignedcharfa_sl,unsignedint{{//turnrightPORTD=0x10;PD7=0,PD6=0,PD5=0,PD4=1;//PORTB&=~(0X04);LED}else{//turnrightPORTD=0x90;PD7=1,PD6=0,PD5=0,PD4=1//PORTB&=~(0X04);LED}{ }}//转右快慢控制,fa_sl=0,fa_sl=1fa_sl=2voidRIGHT_go(unsignedcharfa_sl,unsignedint{{//turnleftPORTD= PD7=0,PD6=0,PD5=0,PD4=1//PORTB&=~(0X02);LED}else{//turnleftPORTD= PD7=0,PD6=1,PD5=1,PD4=0P//PORTB&=~(0X02);LED}{ }}round=0,round=1//fa_sl=0,fa_sl=1,fa_sl=2voidFORWARD_go(unsignedcharround,unsignedcharfa_sl,unsignedint{{{PORTD=0xa0;PD7=1,PD6=0,PD5=1,PD4=0PORTB&=~(0X01);LED}{PORTD= PD7=0,PD6=1,PD5=0,PD4=1//PORTB }}else{{PORTD=0xa0;//PD4=1,PD5=0;PD6=1,PD7=0 }{PORTD=0x50//PD4=0,PD5=1;PD6=0,PD7=1}}{ }}//desiredvalue://actualvalue:0.000MHz(800000100.0%)voidtimer0_init(void){TCCR0B=0x00;//stopTCNT0=0x10;//setcountTCCR0A=TCCR0B=0x02;//start}#pragmainterrupt_handler {//PC4,PC3,PC2,PC1,PC0=//M-PB0,L-PB1,R-PB2== //=0没反//=1有反if((PINB&0x40)==0x40) {GO_//PORTB}else//PORTB|=(0X04); if((tt&0x02)==0x02) {PORTB&=~(0X04);/LED}else{PORTB|=(0X04);MR_if((tt&0x04)==0x04) {PORTB&=~(0X01);/LED}else{PORTB|=(0X01);MM_ {PORTB&=~(0X02);/LED}else{PORTB|=(0X02);ML_ {//PORTB&=~(0X04);LED}else //PORTBL_=1;} {//PORTB&=~(0X02);LEDR_}else{//PORTB|=(0X02); TCNT0=0x10;//reloadcounter}voidSTOP_oid){ }type=0type=1;type=2type=3roundvoidGO_round(unsignedchartype,unsignedint{//r=2.15cm,每次计数走4.2mm, {FORWARD_go(0,1,0{FORWARD_go(1,1,0);//前正STOP_go()} {FORWARD_go(1,1,0{FORWARD_go(0,1,0STOP_go()}if(type==2)round{PORTD=0x90;{PORTD=0x60;STOP_go()}if(type==3)round{PORTD=0x60;{PORTD=0x90;STOP_go()}elseSTOP_go()}voidmain(void){unsignedcharDDRD=0xF0;//motorcontrolportPORTD=0xF0;DDRB=0X07;//ledcontrolportPORTB=0XF7;DDRC=0x00;//SENSORINPUTPORT//insertyourfunctionalcodehere...MCUCR=EICRA=0x00;//extendedextintsEIMSK=0x00;TIMSK00x02;timer0interruptsourcesTIMSK10x00;timer1interruptsourcesTIMSK20x00;timer2interruptsourcesEIMSK=0x00;//中断使能BLACK_BIAN_{STOP_go()else//把小车放在-小车走{GO_round(GO_FORD,100);42cm,根据走正方形或长方形大小,参数可修改GO_round(TURN_L,16);90GO_round(GO_FORD,100);//参数可修改GO_round(TURN_L,16);GO_round(GO_FORD,100);//参数可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论