由于这段时间工作很忙,OUR ROBOT 1号的研发工作一直搁浅。最近利用指导本科毕业生毕业设计的机会,和漂亮的毕业生陈MM一起制作了一辆可播放语音的红外遥控小车,也算是把OUR ROBOT 1号的一些核心部件进行了实际组装测试,收获颇多,先看看照片吧。
1、洞洞板子的最后检查。
2、小车正面。
3、后侧面。
4、正后方。
5、前侧面。
6、再来一张。
7、俯视。
8、板子。
9、大脑:MEGA8L。
10、主力:L298N。
11、嗓子:PM5020。
12、眼睛:红外一体化接受头。
回复: 可播放语音的红外遥控小车
征得陈MM的同意,在此公布原理图和BASCOM的源程序。
源程序(BASCOM-AVR 1.11.8.1编译通过):
鄙人的作品,自我感觉程序风格还是比较清晰流畅易懂的……(在此省略N个赞美之词)看不懂请跟帖提问,哈哈!
'********************************** 编译器设置 *********************************
$regfile = "M8def.dat"
$crystal = 7372800
$hwstack = 32
$swstack = 32
$framesize = 32
'*********************************** 定义常量 **********************************
Const Car_forward = &B00000110
Const Car_back = &B00001001
Const Car_left = &B00000101
Const Car_right = &B00001010
Const Car_stop = &B00001111
'********************************* 指定端口别名 ********************************
Voc_sck Alias Portc.4
Voc_dat Alias Portc.5
'******************************** 声明自定义过程 *******************************
Declare Sub Chip_init()
Declare Sub Voc_play(byval Command As Byte)
Declare Sub Car_go(byval Type As Byte , Byval Speed As Byte)
'******************************** 声明自定义函数 *******************************
Declare Function Get_speed() As Byte
Declare Function Get_command() As Byte
'********************************* 声明全局变量 ********************************
Dim Main_speed As Byte , Car_state As Byte
'************************************ 主程序 ***********************************
Call Chip_init()
Wait 1
Call Voc_play(&H08)
Do
Main_speed = Get_speed()
Select Case Get_command()
Case &H00:
Call Voc_play(&H00)
Case &H01:
Call Car_go(1 , Main_speed)
Call Voc_play(&H01)
Car_state = 1
Case &H02:
Call Car_go(2 , Main_speed)
Call Voc_play(&H02)
Car_state = 1
Case &H03:
Main_speed = Main_speed / 2
Call Car_go(3 , Main_speed )
Call Voc_play(&H03)
Car_state = 0
Case &H04:
Main_speed = Main_speed / 2
Call Car_go(4 , Main_speed )
Call Voc_play(&H04)
Car_state = 0
Case &H05:
Call Car_go(0 , 0)
If Car_state = 1 Then
Call Voc_play(&H09)
Waitms 800
End If
Car_state = 0
Call Voc_play(&H05)
Case &H08:
Call Voc_play(&H08)
Waitms 200
Case &H09:
Call Voc_play(&H07)
Waitms 200
Case &HFF:
$asm
Nop;
$end Asm
Case Else :
Call Car_go(0 , 0)
Call Voc_play(&H06)
End Select
Loop
'********************************** 自定义过程 *********************************
Sub Voc_play(byval Command As Byte)
Local I As Byte , Temp As Byte
Command = Command + &H80
Waitms 50
For I = 1 To 8
Reset Voc_sck
Temp = Command And 1
If Temp = 1 Then
Set Voc_dat
Else
Reset Voc_dat
End If
Rotate Command , Right
Waitus 10
Set Voc_sck
Waitus 10
Next I
End Sub
Sub Chip_init()
Portb = &B11111001
Portc = &B11111111
Portd = &B11111111
Ddrb = &B00000110
Ddrc = &B00111111
Ddrd = &B00000000
Config Rc5 = Pinb.0
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 256
Start Timer1
Enable Interrupts
End Sub
Sub Car_go(byval Type As Byte , Byval Speed As Byte)
Select Case Type
Case 0:
Portc = &B00001111 And Car_stop
Case 1:
Portc = &B00001111 And Car_forward
Case 2:
Portc = &B00001111 And Car_back
Case 3:
Portc = &B00001111 And Car_left
Case 4:
Portc = &B00001111 And Car_right
End Select
Pwm1a = Speed
Pwm1b = Speed
End Sub
'********************************** 自定义函数 *********************************
Function Get_speed() As Byte
Local Speed As Byte
Speed = Pind
Rotate Speed , Right , 4
Speed = Speed And &B00001111
Get_speed = Speed * 17
End Function
Function Get_command() As Byte
Local Address As Byte , Command As Byte
Getrc5(address , Command)
If Address = 0 Then Command = Command And &B01111111
Get_command = Command
End Function
回复: 可播放语音的红外遥控小车
迟到的制作感受:
1、L298是一块性能很优秀的IC,耐用不容易坏,发热量低,使用起来也很容易,基本上就是不接错线就能用的,实为制作小功率机器人小车的首选,但愿该IC不要停产为好……
2、这次采用的履带车架用料很好,原来是挖掘机和钩机的玩具,下部都是一样的,拆掉上面的部分就是一个很好的机械平台,电池仓和电路板平台都一应俱全。但是电机菜了点,有条件的可以更换功率大些的电机,以免速度和动力不够。
3、履带相比轮子来说更能适应复杂地面,虽然不能装上编码盘,但是野外使用效果很好,采用左右轮逆向驱动的方式来转弯,并没有想象中的履带比轮子笨拙的问题,也可以实现原地转圈,不会产生最小转弯半径过大的问题。
4、对于制作机器人,锂离子电池是最好的电源,其他的可充电电池都是太重,极大消耗机器小车的动力,工包的笔记本电池芯比较好用,价格也比较低,当然,二手的手机电池也是不错的选择。
5、要制作一个可以跑起来的小车并不困难,但是要达到最高效率,以及配合各种传感器做自主行动,就不是很简单的事情。车身自重和电机功率、电能消耗以及电池的重量,感觉总是有一定的关系在里边,但是鄙人数学比较差,没法建立相关的数学模型,只能靠使用最大能量密度的电池以及多次试验才能解决这些问题,以前总觉得高数是垃圾,现在才觉得,做理工科的还真是少不了高数~~~~~老师原谅我吧,毕业N年后才觉得你的知识多么有用
回复:可播放语音的红外遥控小车
不错啊,哈哈,那天有空我做一个,看看效果怎么样啊。
回复:可播放语音的红外遥控小车
看着很爽啊,我也想做一个
回复: 可播放语音的红外遥控小车
文章写的很不错,不过下面这个最好做个PCB比较好,谢谢分享!
喜欢单片机的请加群48811593(500人超级群)
回复:可播放语音的红外遥控小车
羡慕啊,怎么牛,呵呵,我也想搞个什么发明的
zhen xiang zi ji zuo yi ge
看着很爽啊,我也想做一个
楼主的图片看不到,7楼的好像没最终外形。。。。。。。。
很有同感!怀念 老师的谆谆教导
老师原谅我吧,毕业N年后才觉得你的知识多么有用。。。。。。。。。。。
Re: 可播放语音的红外遥控小车
先下再顶,也总是入不敷出啊。
https://home.eeworld.com.cn/?110427