发 帖  
原厂入驻New
申请华秋企业认证 多层板首单免费打样!
30s提交资料,10分钟通过审核(免费赔付+顺丰包邮)>>立即报名

[经验] 【NanoPC-T4试用体验】NanoPC-T4控制步进电机

2018-10-30 09:15:25  18952 NanoPC-T4
分享
0
友善之臂NanoPC-T4的IO接口非常丰富,控制步进电机要比点灯具有更高的可玩性,
今天我们来进行步进电机的控制
先上一张整体连接图片和控制效果视频
Screenshot_20181030-074353.png
视频:(貌似到了容量限制,我会放在本帖二楼)
GIF动图预览视频(GIF约15MB,可能加载需要一段时间):
20181029_190002~1.gif

材料准备:
1.友善之臂NanoPC-T4开发套件一套
2.a4988一到三枚
3.CNC控制板一块(这上面有保险丝,而且能使插线整齐)
4.12v20a电源一件(带一个电机12v2a也可,一般LED灯箱电源为12v20a,12v30a,较为经济的选择)
5.步进电机一到三枚(也可以用光驱电机,这样对应的电压一般为5v,7v,9v,12v,看电机上的标号)
6.同步轮一到三枚(同步轮为了能在视频中看清电机转动效果,也可贴个箭头看电机旋转方向)
7.UART连接器网线方式连接亦可实现控制功能)
8.杜邦线,USB延长线(方便连接电脑的可不用)

首先是A4988的原理图,方便大家连接引脚
879879.jpg
测试时12v供电线尽量细一些,电机空载且不细分时一般不会电流不够,
细一些能防止一些不必要的意外,以后测试好了再用粗的。
上电前注意散热片与元器件电气意义触点的接触情况,散热片是导体,如果触碰到一些器件,容易短路,即使用了细线供电,12v和5v导通还是会有损失哦,所以尽量上电前仔细检查一下,这对NanoPC-T4和电脑也是一种保护。
20181029_190240.jpg

然后是驱动部分:
  1. #ifndef __KERNEL__
  2. #define __KERNEL__
  3. #endif
  4. #ifndef MODULE
  5. #define MODULE
  6. #endif

  7. #include <linux/config.h>
  8. #include <linux/module.h>
  9. #include <linux/kernel.h>
  10. #include <linux/init.h>
  11. #include <linux/sched.h>

  12. #include <asm/hardware.h>

  13. #define DEVICE_NAME  "StepMoto"

  14. unsigned char bu[]={(1<<5),(1<<6),(1<<7),(1<<0)};

  15. static int stepmoto_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg)
  16. {
  17.   if (arg > 4) return -EINVAL;

  18.   switch(cmd)
  19.   {
  20.     case 0:
  21.       GPCDAT = GPCDAT | bu[arg];break;
  22.     case 1:
  23.       GPCDAT = GPCDAT & (~bu[arg]);break;
  24.     default:
  25.       return -EINVAL;
  26.   }
  27. }

  28. static int stepmoto_open(struct inode *inode, struct file *filp)
  29. {
  30.   int i;
  31.   
  32.     GPCCON = (GPCCON & (~0x0000FC03)) | (0x00005401);  
  33.     GPCUP  = GPCUP | 0x00E1;     
  34.     GPCDAT = GPCDAT & (~0x00E1);
  35.    
  36.   MOD_INC_USE_COUNT;
  37.   printk(KERN_INFO DEVICE_NAME ": opened.\n");
  38.   return 0;
  39. }

  40. static int stepmoto_release(struct inode *inode, struct file *filp)
  41. {
  42.   MOD_DEC_USE_COUNT;
  43.   printk(KERN_INFO DEVICE_NAME ": released.\n");
  44.   return 0;
  45. }

  46. static struct file_operations stepmoto_fops =
  47. {
  48.   owner:  THIS_MODULE,
  49.   ioctl:  stepmoto_ioctl,
  50.   open:  stepmoto_open,
  51.   release:  stepmoto_release,
  52. };

  53. static devfs_handle_t devfs_handle;
  54. static int __init stepmoto_init(void)
  55. {
  56.   devfs_handle = devfs_register(0, DEVICE_NAME, DEVFS_FL_AUTO_DEVNUM,
  57.     0, 0, S_IFCHR | S_IRUSR | S_IWUSR, &stepmoto_fops, NULL);

  58.   printk(KERN_INFO DEVICE_NAME ": Initialize OK.\n");
  59.   return 0;
  60. }

  61. static void __exit stepmoto_exit(void)
  62. {
  63.   devfs_unregister(devfs_handle);
  64. }

  65. module_init(stepmoto_init);
  66. module_exit(stepmoto_exit);
复制代码

NanoPC-T4与编程器之间的连线
接线依次为:
VCC-VCC
GND-GND
TX-RX
RX-TX
如果读不懂上述英文,可直接看下面图片
20181029_190413.jpg
需要注意的是tx与rx的对接是相反的,而GND和VCC不能插反,图中这样子可能看不清,后面我会单独写一篇UART的帖子上TX RX连接的细节图,或者放在本帖的后续楼层。

然后是步进电机的测试例程:(传不上来,我会放在本帖二楼)
mp4格式的测试视频我会压缩成rar也放在本帖二楼

超级开发板 2018-10-30 09:34:21
控制视频:
20181029_190002.rar (18.04 MB, 下载次数: 14)

步进电机测试例程:
test008.rar (489 Bytes, 下载次数: 8)

回复

举报

只有小组成员才能发言,加入小组>>

251个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /6 下一条

快速回复 返回顶部 返回列表