EDA365电子论坛网

标题: 迅为4412开发板-步进电机-驱动和测试例程 [打印本页]

作者: 孤久厌闹    时间: 2020-10-13 10:42
标题: 迅为4412开发板-步进电机-驱动和测试例程
迅为4412开发板-步进电机-驱动和测试例程
6 Y+ x4 i5 ~! a9 g/ ^和本文档配套的资料有:
9 S' h9 `8 k- }; R1 内核配置和步进电机驱动补丁包:
- L( j3 X: b  Y& B$ v7 `( z, Ftopeet_modules_20190319.tar.gz% t! F6 a& V8 r9 d) m  C$ _1 r, q
2 linux-C 的测试例程:
9 c6 [0 ^# D# A! MiTOP-4412-linuxc-stepmotor_V1.0.zip
% Q7 S2 G* q/ U; e' B( G3 QtE 的测试例程:
7 C% Z: @5 V3 e6 R3 DiTOP-4412-QtE4.7-step_moter_V1.0.tar
' e2 r0 m* a, H  n! ?4 Android 的测试例程:
  l6 O) G: N6 y4 `( hiTOP-4412-Android4.0-stepmotortest-V1.0.zip: [$ F) o( q. R
请注意,在光盘的内核源码中,没有步进电机的驱动,需要添加步进电机的驱动之后才能使用。步进电机使用的是 camera 接口上的 IO,需要屏蔽掉 camera 驱动。
! O- k  E9 ]5 p, l/ K* \4 @1.硬件连接
, u, U* U$ O- Y4 W硬件连接分为两个部分,供电和控制线的连接。- d# K) Y& x- k; D+ L2 y& w# |
如下图所示,是步进电机的原理图部分。6 V4 {. _! m  X$ s6 s2 x" b4 v

5 W7 i) f2 a. x% K. M/ |* K& [端子 j2 可以看出,需要通过排线和开发板的 camera 接口。上图右半部分,可以看出供电可以采用 5v 电源或者 usb 供电的方式。
$ o1 I$ A' b. f3 M; `排线链接,如下图所示。火牛座和 USB 线供电二选一,如下图所示是 usb 线供电。
; L$ _& @- B: Y/ P( z1 j5 j5 i  U
7 _  u/ S4 C6 G- B6 s这里务必需要注意的是,如果大家使用的是默认的光盘内核镜像,请不要给步进电机上电太长时间。因为步进电机驱动芯片,默认状态是上拉,会导致步进电机处于不正常的状态,会让电机发热。
! O4 t! g1 \- A) P需要将步进电机驱动配置完成之后,步进电机驱动在初始化的时,将步进电机的驱动芯片拉低,这样步进电机就会处于准备工作状态,这种状态不会有电流,不会导致步进电机发热!, r$ y9 x( f( d5 x7 ^
2.内核配置和补丁包
  N6 N$ ]; ]1 F8 k由硬件部分可知,步进电机使用的是 camera 接口,内核默认状态会编译 camera 驱动,camera 驱动会占用电机用到的四个 GPIO,所以首先需要在内核配置中将 camera 驱动去掉。然后添加驱动补丁包,重新编译内核,烧写到内核中。# C4 G/ v4 _0 g$ J2 {4 j
2.1 内核配置
2 R' ]# }* t; V3 v' {, A# y进入内核目录,配置所需要的缺省文件,使用命令“make menuconfig”,如下图所示,进入配置界面。" {5 y% f  _# h/ r% {6 m
选中“Device Drivers --->”进入。
  P0 O( a1 Q" G6 M
# _/ i+ W6 b7 g+ n2 J7 ^) ?如下图所示,选中“Multimedia support --->”,进到选项中。$ c& H/ M. Z6 [/ Q" I% c+ k
- H5 q3 _+ x& V& \: @3 K0 N
如下图所示,进入“Video capture adapters --->”选项。
4 G& V8 `+ V" y  P- \: |7 P0 t
如下图所示,取消“OmniVision OV5640 sensor support ”,这个是摄像头 ov5640的配置选项。  ]8 l; y- z  y9 E* T

/ L3 `1 H6 h0 E4 a: g5 n如上图所示,取消 ov5640 的选项,然后保存退出,得到新的.config 文件。) Y# C% H  [+ [( k
2.2 修改 Makefile 文件
' V6 |% r0 \/ h( s6 Q- u" G然后需要修改 Makefile 文件。0 n6 r2 S2 w0 o- r- o0 b' p' H' i
打开“drivers/char/Makefile”文件,如下图所示。
4 T. t* Q5 O- L  \5 o( D& K: r* i增加以下代码:
# F3 j4 n. w0 r* Jobj-y += topeet_modules/0 y1 \$ {$ o& [6 ~" f  R7 Z
. ]4 N* {) U6 e
然后保存退出。
6 x( K3 e4 O8 b/ c5 g2.3 补丁包
1 s4 p$ w# H2 W' d% _" X驱动补丁包“topeet_modules_20190319.tar.gz”和文档放在一起。
" Q9 j9 V, E/ {( d. }1 b3 s. m补丁包同时也放在网盘链接“iTOP4412 开发板资料汇总(不含光盘内容)\iTOP-4412开发板系统源码及镜像(其他)\topeet_modules”目录下的“topeet_modules_20190319.tar.gz”下,日期可能会有变化,使用最新日期的压缩包即可。
( F+ H- b) w9 t, j; _! ]拷贝到“drivers/char”目录下,使用命令“tar -vxftopeet_modules_20190319.tar.gz”解压,如下图所示。
6 S2 S) k, P6 }/ ^1 w3 I
, V2 ]* O1 B: c. {2 R8 U, S1 u2.4 内核编译和测试$ L+ Q* k, H) }( G6 p
重新编译内核,烧写到开发板,启动开发板,如下图所示。在“/dev”目录下可以看到有设备节点“step_motor_driver”生成。2 q% D, |4 Z* N. @" v2 f% c
; E% o4 U% ^1 B" G: j1 y
至此,内核驱动配置完成。这个时候给步进电机上电,会发现四个并排的小灯已经灭了。
+ G$ [- N4 t$ K9 Y5 i( \) B3.Linux-C 的测试例程
7 |8 X0 o0 r0 M; q1 N# Z8 R然后拷贝和本文档一起打包的“iTOP-4412-linuxc-stepmotor_V1.0.zip”压缩包中“step_motor_app”文件到开发板(U 盘,tf 卡或者 nfs 都可以)。
1 v! q$ I5 @; x$ M* _! P如下图所示,拷贝到开发板上,作者的系统是最小 Linux 系统。如果是 Android 系统,则需要使用“chmod 777 /dev/step_motor_driver”修改权限。3 `7 _( c0 X8 K; K

5 k2 K  q% c9 R' Y7 Q使用命令“./step_motor_app”如下图所示,可以看到有如下提示。7 J: c( k- j4 o; ~& g

) m) B5 ?. {3 b3 u步进电机的测试例程需要传递参数。
; ]# L/ `8 C9 p/ _第一个参数是 R 或者 L,用于设置步进电机的方向;
' @) ?% N5 N1 U第二个参数是步角距,步角距是 5.625/64 度,4096 个步角距就是 360 度,所以这个参数的范围是 0-4096,取值 4096 是一圈,最小建议为 10。5 `; i! ~: Z$ ~, M" X0 l0 e9 z
第三个参数是转速,建议取值为 3000 到 20000 之间,小于 3000 转速不稳定。提供了一个 demon 为“./step_motor_app R 4076 3000”。
9 S2 b* ~1 l& g2 C! z5 g8 M使用命令“./step_motor_app R 4076 3000”,可以看到步进电机在右转,转一圈之后就会停下,“./step_motor_app L 4076 3000”会左转一圈之后停止,用户可以执行测试其它参数。" ]! @/ ]# ]  G! c! D6 c

: H0 E2 h. e0 Z) D- R1 V- u$ Q+ [' ~4.QtE4.7 的测试例程5 {9 t2 t( G0 P3 ^! U  m4 D
和本文档一起打包的“iTOP-4412-QtE4.7-step_moter_V1.0”为 QtE4.7 的测试源码资源包,源码中的“step_moter”为步进电机的编译好的 qt4.7 程序。
! k2 C+ Q& ]* Z3 _4 D: n' s请注意,需要参考本文档第二小节,先配置内核驱动,确认有设备节点“/dev/step_motor_driver”。7 z4 E" ~) ]+ {. s' J
开发板烧写 QtE4.7 系统,将“step_moter”拷贝到开发板,使用命令“./step_moter& ”运行,如下图所示。
) j" y) x# H. f$ ^( x  M
% e. x6 l( G( M# |以上界面中,参数如下:
1 c2 M) L' y8 v$ m$ ASpeed:通过改变延时来控制速度,延时越短,转速越快。延时范围:3--20ms。
+ w  H* I) O# n# XNum:设置步进数,当值为 4096 时转一圈。' z) {2 l8 N! e- y
Direction:设置转动方向。RIGHT 为正转,LEFT 为反转。
% j( O4 X  Q- I) a& fSTART:设置好后,点击 START 开始运行。; }% o, s: R; j8 D6 \
CLOSE:关闭当前页面。; u- j* R0 G7 F1 B) w; Q) ^
5.Android4.0.3 的例程测试
8 h/ @) o9 h/ F8 e' F“iTOP-4412-Android4.0-stepmotortest-V1.0.zip”为 Android4.0.3 的测试源码资源包,源码包中的“bin”下的“stepmotortest.apk”为步进电机的编译好的 Android4.0.3 程序。( I0 A' M# _5 _
请注意,需要参考本文档第二小节,先配置内核驱动,确认有设备节点“/dev/step_motor_driver”,如下图所示。4 w; F  G' S* T" ^
+ p* Q# c7 }. n$ n2 H( R# F, c
在控制台输入命令“chmod 777 /dev/step_motor_driver”修改权限。
) v) \( I7 S5 ]4 o/ ]! `: ^$ t2 ^' f7 H( j4 N: W
在控制台输入命令“chmod 777 /dev/step_motor_driver”修改权限。
- H& W, c, ^% i$ b* p1 ^+ {' }6 T5 [  L
! h9 ~: |5 _3 N& Q# W速度:通过改变延时来控制速度,速度设置越大,转速越快,但不能设置成 20。8 O! N' Z* U6 G
步数:设置步进数,当值为 4096 时转一圈。% u& q% L! D7 {0 a* m7 [9 F) j& _
方向:设置转动方向。" ^4 m1 D* A  r8 L% i1 R% g
START:设置好后,点击 START 开始运行。- \' }6 p0 ~1 v! @0 J

, b+ W) O9 D- y
作者: Zjianeng    时间: 2020-10-13 18:22
内核配置和步进电机驱动




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2