按照图纸所示,将相应元件焊接到板子上.
图1 控制电路板原理图(Schematic Prints.pdf)
本次制作需要添加的元器件名称及规格如下所示:
Item |
Designator |
Description |
Comment |
1 |
C3,C5,C7 |
贴片胆电容,竖线为正端 |
10uF |
2 |
C4,C6,C8 |
贴片电容,无极性 |
0.1uF |
3 |
D1 |
3.3v电源指示灯,与R6配套使用,按照箭头方向为从正到负 |
发光二极管 |
4 |
J1,J2 |
接左右电机控制线 |
XH-2.54底座 4pin |
5 |
J3 |
5v电源接入 |
XH-2.54底座 3pin |
6 |
J4 |
编程器接入,有线通信接口 |
XH-2.54底座 5pin |
7 |
JP1,JP2 |
通信选择 |
3pin单排针 |
8 |
R5 |
电阻 |
1K |
9 |
R6 |
电阻 |
220 |
10 |
S1 |
开关 |
自锁开关7*7 |
11 |
U1 |
AMS1117-3.3电源 |
电源芯片 |
12 |
U2 |
单片机,先焊接一个20pin芯片底座 |
STC11L02单片机 |
图2 元器件名称及规格(全部元件规格可参见stcmcuCar.xls)
焊接注意事项:
1)此为双面板,元器件应统一放置在印有白色的元器件名称的一面,切勿放在反面.
2)此板包含较多的贴片元件,对焊接技术要求较高.对于贴片元件,可先在其中一个贴片上上好锡,然后将元器件的一端先焊接在该贴片上,再将剩下的一端焊上去.贴片元件都较小,可用镊子辅助.
3)焊接应基本遵循元器件由矮到高的原则,先焊接电阻和电容和U1和D1,然后焊接J1-J4,接着焊接JP1,JP2和S1,最后焊接U2的底座.
4)JP1和JP2的3pin跳针,连接12是开启蓝牙功能,连接23是串口,所以我们还需要把23连上.
5)开关S1焊接的时候将开关上的一个蓝点(用记号笔做了记号的)对准板子上的一个点即可,同理,J1-J4的底座方向也要与板子上画的相同,C3,C5,C7上有一个竖线的一端是正极,D1上有一个绿色的小箭头与板上方向一致即可.U2的一段有一个凹进去的内圆,对准即可.
6)小车原有的几块板子的焊接可能也会有问题.最好可以顺便测试修理下.以绝后患!小车已有的所有板子的原理图及元器件规格等可参见KC1-Course-handout1.pdf
焊完后的板子如下所示:
2.调试部分
完成了板子的焊接后,先可以简单测试下.将小车原有的在顶上的控制板拆下,将3pin的电源插头插入刚做的板子上,D1应该会发出红光(与开关状态无关),证明电源工作基本正常.
然后需要制作USB线以及编程调试,具体可参看http://eelab.sjtu.edu.cn/Course/mod/forum/discuss.php?d=645
由于我们使用的是新的小车,上述地址中的部分信息已失效.以下为可用信息摘录:
3、USB线的使用
USB转串口RS232通信电缆,TTL电平,用于单片机的串口和计算机USB口连接,通讯速率高达1M,并带+5V电源。可以用于没有串口的电脑或笔记本进行单片机编程、通信测试。可以直接与单片机的RS232 TTL信号连接,省去了RS232或485芯片;也可以用它实现各通信设备向目前流行的USB接口的转换,+5V电源可直接用于+5V电路供电。
旧款USB转TTL线(带蓝色线的) |
新款USB转TTL线(带绿色线的) |
四线:RS232 TTL RXD 兰色 |
四线:RS232 TTL |
使用时请注意绝缘,不要短路,尤其是TXD与GND不能碰到一起,+5V和GND更不能碰到一起,由此引起的通信线损坏自行解决。
串口线最新驱动:
http://eelab.sjtu.edu.cn/Course/file.php/10/3/PL2303_Prolific_DriverInstaller_v110.zip
安装后,电脑上将多出一个串口(com2或3或其他),(设备管理器可查到)通过程序控制串口的输出。
使用时,将该线的白色(TXD)和黑色(GND)接入小车单片机的RXD脚和GND脚(在单片机小板上有字标明) 即可建立小车和计算机的串行通信。
其余两根线不用,请做好绝缘。
测试方法:
使用串口调试软件,设定好串口号,通信速率,将线的TXD与线RXD(白色和蓝色,千万不能将黑色与任意一根接在一起,会短路!)接在一起,发送数据后可同时收回,可确认线是好的。
一款串口调试软件:http://eelab.sjtu.edu.cn/Course/file.php/9/Car/AccessPort.rar
制作好的usb线如下所示:
电脑上需要的操作:
1) 安装单片机的集成开发环境KeilforC51: http://eelab.sjtu.edu.cn/Course/file.php/9/Car/KeilC51v750a_Full.rar
2) 安装STC-ISP下载编程烧录软件: http://www.stcmcu.com/datasheet/stc/stc-isp-v4.80/stc-isp-v4.80-not-setup.EXE
3) 安装串口线驱动: http://eelab.sjtu.edu.cn/Course/file.php/10/3/PL2303_Prolific_DriverInstaller_v110.zip
4) 设置keil,增加对STC型号芯片的支持,需下载:http://www.stcmcu.com/datasheet/stc/STC-CDB/UV2.CDB
先将keil/uv2/下的uv2.cdb文件进行备份,然后用下载的新的文件进行替换即可.
调试部分注意事项1:
1) 确保原有的小车部件的工作正常.
2) 确保制作的USB线的几根线之间相互绝缘.
然后就可以开始写程序调试了.已经写好了一个简单的测试程序,可以测试小车前进,后退,左转和右转的基本功能.
小车完成后的样子:
写程序的基本步骤:
1) 打开keil uVision2,选择Project->New Porject
然后选择保存位置及工程的名字.然后选择CPU的类型为STC11L02.如果没有该选项,说明补丁没有打好,可参照上面 电脑上需要的操作(4) 打好补丁文件.
2) 在左边的视窗中选中Target1然后选择Project->Options for Target 'Target 1'
在打开的窗口中选择Output选项栏,将Create HEX File打上钩,并将后面选择为HEX-80.
3) 下面就可以创建代码文件并编程了.具体可参看样例程序carTestMotor.
先编译,编译成功后生成可执行文件,同时会创建一个以工程名命名的 target1.hex文件,我们要的就是这个文件
4) 打开stc-isp-v480.exe
a) 在MCU Type 的地方选择STC11L02
b) 选择刚才生成的 target1.hex 文件
c) 查看你系统的设备管理器,选择相应的USB转的com端口,如果找不到可能是驱动没装好,可以参看上面的 电脑上需要的操作(3) 安装驱动
d) 不需要做更改
e) 选择Downloads/下载,单片机的电源必须要打开,然后按开关复位单片机的状态,在提示框中就能够看到程序连接下载成功等信息了..如果提示你需要给MCU上电,说明没有成功,可以检测单片机是否供电正常,串口是否有连接正常,JP1,JP2的跳针是否正确,以及开关在断开复位后必须处于合上的状态.
5) 注意事项:
每次重新生成.hex文件想要下载到单片机上时,必须在STC-ISP中重新选择该文件,不然还是上次的版本.
步骤3中的波特率一般不用调整,会自动适应,有的电脑可能驱动问题,可以强制设定,一般9600-38400都可以.
样例程序中有较详细的注释,应该能看懂,主要的几个问题摘如下:
1) 电机的状态控制,enable端都是低电平有效,即enable端为0时,电机运转,为1时停止.
2) dir端,为0时是向前,为1时为向后,当然这与你具体的安装方法有关.这里以J1连接右轮,J2连接左轮为例,可根据自己情况调整.
3) 中断控制.没啥好说的,中断频率据实测大约为25KHz.
以上..
(ps:还缺少那根USB线的详细制作过程..一方面那个接头用的那些元件我也说不清楚..另一方面..我的都全部用胶带封起来了..不想再拆掉拍照一步步来了..)
附程序代码:
motor.c:
/* FILENAME: motor.c (ControlMotor) AUTHOR: Zhengji Tao ([email protected]) LastModfied: Apr 25, 2010 DESCRIPTION: The control program for the motor Func Added : 1) set motor status */ #include "motor.h" #include
timer.c:
/* FILENAME: drivers/timer.c VERSION: 1.1.0.0 AUTHOR: Tony Huang ([email protected]) RELEASE DATE: July 27, 2007 DESCRIPTION: The implement of the driver of internal timer MODIFICATION: Aug 1, 2007 ADD FUNCTION: drv_timer_istimeout() ADD FUNCTION: drv_timer_wait_jeff() */ #include
main.c:
/* FILENAME: main.c (selftest) AUTHOR: Zhengji Tao ([email protected]) LastModfied: Apr 25, 2010 DESCRIPTION: The selftest program for the car Func Added : 1) motor contrl 2) timer0 interrupt */ #include