|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
迅为4412开发板-步进电机-驱动和测试例程
% N+ o- V' U% ]和本文档配套的资料有:
& C4 t# S/ |1 Z: Z; n. C1 内核配置和步进电机驱动补丁包:6 _" S1 r' x9 R( e
topeet_modules_20190319.tar.gz
) D8 S, ]4 R( @0 `7 a2 linux-C 的测试例程:
$ E8 k6 k* q5 x: j$ \iTOP-4412-linuxc-stepmotor_V1.0.zip5 u* L4 h o: V g' x
3 QtE 的测试例程:
* @2 n* G4 ?, ?- IiTOP-4412-QtE4.7-step_moter_V1.0.tar) h! ~' |1 U0 \/ P2 t
4 Android 的测试例程:
% U' w- F% M. M" ^+ ViTOP-4412-Android4.0-stepmotortest-V1.0.zip
% D6 ~# I1 C/ [# E4 N$ M请注意,在光盘的内核源码中,没有步进电机的驱动,需要添加步进电机的驱动之后才能使用。步进电机使用的是 camera 接口上的 IO,需要屏蔽掉 camera 驱动。
# y& c M8 r# ]+ U' {1.硬件连接# P8 N9 V' V+ c8 N5 L% F
硬件连接分为两个部分,供电和控制线的连接。
8 q. G" {$ I( O7 @2 i8 k. }, p如下图所示,是步进电机的原理图部分。
, h4 y# t; E$ E![]()
% i# k& W( Y4 _; H- Q ]端子 j2 可以看出,需要通过排线和开发板的 camera 接口。上图右半部分,可以看出供电可以采用 5v 电源或者 usb 供电的方式。( q% V9 ^8 v% z% U
排线链接,如下图所示。火牛座和 USB 线供电二选一,如下图所示是 usb 线供电。
0 d! Z) n" {5 d8 ?8 C # A# C4 d, A4 d
这里务必需要注意的是,如果大家使用的是默认的光盘内核镜像,请不要给步进电机上电太长时间。因为步进电机驱动芯片,默认状态是上拉,会导致步进电机处于不正常的状态,会让电机发热。( [* Q7 a8 g4 V9 @8 O9 W
需要将步进电机驱动配置完成之后,步进电机驱动在初始化的时,将步进电机的驱动芯片拉低,这样步进电机就会处于准备工作状态,这种状态不会有电流,不会导致步进电机发热!
3 ^( i0 i6 ?. B. o4 A8 d( Y2.内核配置和补丁包9 v4 L5 H5 B6 C: O
由硬件部分可知,步进电机使用的是 camera 接口,内核默认状态会编译 camera 驱动,camera 驱动会占用电机用到的四个 GPIO,所以首先需要在内核配置中将 camera 驱动去掉。然后添加驱动补丁包,重新编译内核,烧写到内核中。+ D. t* t5 M5 b! `' Y2 a
2.1 内核配置
6 }5 ~* y4 B x9 j8 q进入内核目录,配置所需要的缺省文件,使用命令“make menuconfig”,如下图所示,进入配置界面。# u6 t, P4 j/ d
选中“Device Drivers --->”进入。
' ?% o7 B o* W 5 q( r; T( r4 E/ x: ^
如下图所示,选中“Multimedia support --->”,进到选项中。6 g7 [6 B1 B; w; X$ c/ B
# K; @9 `( ?/ f0 q
如下图所示,进入“Video capture adapters --->”选项。* L# g9 z5 K; F6 ^, A
7 m/ K- W7 H- @3 [5 V5 t+ v% K
如下图所示,取消“OmniVision OV5640 sensor support ”,这个是摄像头 ov5640的配置选项。
9 c% M# u( L( D5 | $ X6 q. n7 O0 i
如上图所示,取消 ov5640 的选项,然后保存退出,得到新的.config 文件。/ }) G/ e4 E& k+ k; k3 k+ i
2.2 修改 Makefile 文件/ O+ y% e1 k/ Z2 ?* t
然后需要修改 Makefile 文件。
p6 T8 [5 D& C6 Q. d, H7 m, Q8 \打开“drivers/char/Makefile”文件,如下图所示。2 j" L1 l, J. P. x
增加以下代码:
. U3 G8 w- m( h( Tobj-y += topeet_modules/
- `& v c+ W) g$ q- Q/ f9 W![]()
1 c1 [; B# c( G" `然后保存退出。% j* X* J0 D0 s
2.3 补丁包' r5 p0 P- F2 s
驱动补丁包“topeet_modules_20190319.tar.gz”和文档放在一起。
% ^( z7 N3 P) Z& j- k6 {补丁包同时也放在网盘链接“iTOP4412 开发板资料汇总(不含光盘内容)\iTOP-4412开发板系统源码及镜像(其他)\topeet_modules”目录下的“topeet_modules_20190319.tar.gz”下,日期可能会有变化,使用最新日期的压缩包即可。
, Z5 i V5 N! f9 `5 t; m2 K5 i拷贝到“drivers/char”目录下,使用命令“tar -vxftopeet_modules_20190319.tar.gz”解压,如下图所示。
: @' m/ s( @, `9 s/ ?! \; U( s![]()
% R2 N! u- {& G( i1 ?: \8 w2.4 内核编译和测试! m2 f+ u2 U3 M8 s% A; p
重新编译内核,烧写到开发板,启动开发板,如下图所示。在“/dev”目录下可以看到有设备节点“step_motor_driver”生成。+ I% X! ?2 S4 l$ R' F) c' p- ?& z
; y( |" z1 W& K9 H6 L& d: x3 \5 H* ]
至此,内核驱动配置完成。这个时候给步进电机上电,会发现四个并排的小灯已经灭了。
& b& [. D, S# g8 @- e3.Linux-C 的测试例程
5 r+ u6 @; A8 S5 k然后拷贝和本文档一起打包的“iTOP-4412-linuxc-stepmotor_V1.0.zip”压缩包中“step_motor_app”文件到开发板(U 盘,tf 卡或者 nfs 都可以)。
7 @7 r3 Y4 @4 p& ?; ~& u如下图所示,拷贝到开发板上,作者的系统是最小 Linux 系统。如果是 Android 系统,则需要使用“chmod 777 /dev/step_motor_driver”修改权限。
% D( t; @. x. d4 Z! \7 R H3 C$ U; I" P
使用命令“./step_motor_app”如下图所示,可以看到有如下提示。9 G! p- Y4 i7 d
![]()
! u7 b5 s' \$ k- \1 }- O步进电机的测试例程需要传递参数。/ q4 p% z5 |# X, q$ N& `
第一个参数是 R 或者 L,用于设置步进电机的方向;
' H5 o; ], G7 F( l第二个参数是步角距,步角距是 5.625/64 度,4096 个步角距就是 360 度,所以这个参数的范围是 0-4096,取值 4096 是一圈,最小建议为 10。# S; M/ _! d3 ]- B
第三个参数是转速,建议取值为 3000 到 20000 之间,小于 3000 转速不稳定。提供了一个 demon 为“./step_motor_app R 4076 3000”。3 F" U3 ]5 ~* Z G
使用命令“./step_motor_app R 4076 3000”,可以看到步进电机在右转,转一圈之后就会停下,“./step_motor_app L 4076 3000”会左转一圈之后停止,用户可以执行测试其它参数。' U: R4 }- e) y: Z* e
![]()
% S& m" i9 `7 m$ l# |4.QtE4.7 的测试例程
: |0 f' l. l4 T$ T# A8 ?' m% G和本文档一起打包的“iTOP-4412-QtE4.7-step_moter_V1.0”为 QtE4.7 的测试源码资源包,源码中的“step_moter”为步进电机的编译好的 qt4.7 程序。" f: [7 W: \' y4 R
请注意,需要参考本文档第二小节,先配置内核驱动,确认有设备节点“/dev/step_motor_driver”。0 V, t$ N5 ^8 f% _
开发板烧写 QtE4.7 系统,将“step_moter”拷贝到开发板,使用命令“./step_moter& ”运行,如下图所示。
: d6 I" Y6 m) o7 A8 d u![]()
" g g) @' y+ g8 R, T以上界面中,参数如下:
4 Q7 i( J6 F q$ Q; ?Speed:通过改变延时来控制速度,延时越短,转速越快。延时范围:3--20ms。
; r4 l( I/ P7 g M2 eNum:设置步进数,当值为 4096 时转一圈。
2 e! |; w5 Q. t3 d7 a) ADirection:设置转动方向。RIGHT 为正转,LEFT 为反转。. r) b7 H7 }; N, r; g3 Q) s; R
START:设置好后,点击 START 开始运行。- N* @" T6 H0 D" f: M: o/ z/ W
CLOSE:关闭当前页面。
* ?! r ^& H. R6 L$ A% x7 `# n5.Android4.0.3 的例程测试
& o: \9 @& j* g1 a“iTOP-4412-Android4.0-stepmotortest-V1.0.zip”为 Android4.0.3 的测试源码资源包,源码包中的“bin”下的“stepmotortest.apk”为步进电机的编译好的 Android4.0.3 程序。9 S# T5 h" d6 N6 k
请注意,需要参考本文档第二小节,先配置内核驱动,确认有设备节点“/dev/step_motor_driver”,如下图所示。
5 E4 E; `8 e( B0 K$ x 3 h" d/ F/ {& _- j, V+ g' N, l
在控制台输入命令“chmod 777 /dev/step_motor_driver”修改权限。- `9 \- n, I8 E* i6 k: j, h
![]()
# A* x5 M7 I$ M5 }0 E' m1 b1 p在控制台输入命令“chmod 777 /dev/step_motor_driver”修改权限。! J" W4 N. u, c" P6 p
![]()
, R) W; q% j4 L速度:通过改变延时来控制速度,速度设置越大,转速越快,但不能设置成 20。
0 o% Q* ?1 J( `# j步数:设置步进数,当值为 4096 时转一圈。
1 H6 O% o. @+ I$ i- F) U4 k8 v2 f1 K方向:设置转动方向。
8 u; h4 T; k/ m2 _" o6 gSTART:设置好后,点击 START 开始运行。2 Z6 |+ T. T! I: a, L
! S: y$ V7 L$ K6 Y* o: h
|
|