树莓派这个东西,一定要亲自动手玩一玩,多实践。所以,我打算录几期视频带大家动手做一做东西。估计要等到下半年,因为目前宿舍地方有限。

上一次我们说到了如何控制超声波传感器,这一次我们来介绍一下如何控制步进电机。

这里,我以arduino为例驱动步进电机,同样我会给出树莓派的驱动代码。

28BYJ48步进电机的详细参数网上百度一下就知道了。

这里有三种减速比:分别是1:16,1:64,1:32,我感觉我手中拿着的是1:32的,因为网上大家都说是4096步转一圈,而我实验发现是2048步转一圈。

一、首先弄明白什么是:四拍,双四拍,八拍。

四拍是说步进电机A,B,C,D四组线圈的通电时序,四拍的驱动正转通电顺序为A-B-C-D-A-B-C-D-A-……循环往复,-A-B-C-D-四拍为一个循环周期。双四拍的通电时序为AB-BC-CD-DA-AB-BC-CD-DA-...…,-AB-BC-CD-DA-四拍为一个循环周期。相对应的还有八拍的通电时序,A-AB-B-BC-C-CD-D-DA-A。

具体的arduino代码如下:

int flag=1;

void setup() {

// put your setup code here, to run once:

for(int i=2;i<=5;i++)

{

pinMode(i,OUTPUT);

}

}

void loop() {

// put your main code here, to run repeatedly:

if(flag==1)

{

for(int i=0;i<512;i++)

{

Coil_A1();

delay(5);

Coil_B1();

delay(5);

Coil_C1();

delay(5);

Coil_D1();

delay(5);

}

flag=0;

}

}

void Coil_A1()

{

digitalWrite(2,HIGH);

digitalWrite(3,LOW);

digitalWrite(4,LOW);

digitalWrite(5,LOW);

}

void Coil_B1()

{

digitalWrite(2,LOW);

digitalWrite(3,HIGH);

digitalWrite(4,LOW);

digitalWrite(5,LOW);

}

void Coil_C1()

{

digitalWrite(2,LOW);

digitalWrite(3,LOW);

digitalWrite(4,HIGH);

digitalWrite(5,LOW);

}

void Coil_D1()

{

digitalWrite(2,LOW);

digitalWrite(3,LOW);

digitalWrite(4,LOW);

digitalWrite(5,HIGH);

}

下面我来解释一下:

电机是64步/圈,每步360° / 64 = 5.625°,出来还有1 / 32减速箱,所以是64 * 32 = 2048步/圈。

每一次for循环都是步进电机内部转了一圈,也就是4步(注意是内部,看看上一篇拆机就懂啦),外面实际我们看到的只动了5.625°*4=22.5°,然而这个时候,用时是5*4=20ms,所以根据这个我们可以推算出步进电机转一圈需要10.24秒(这里的一圈指的是我们所能观察到的),具体的算法是:每步耗时5ms,一共2048步,也就是耗时10240ms,所以也就是10.24s(秒)。

不知道大家用的步进电机是不是1:32的,如果你是1:64的那就把上面i<512改为i<1024,这样也是转一圈,具体怎么算我想你应该会了吧。

如果还是不会,那就请多思考和多实验几次。

树莓派的代码如下:

#include

#include

void init();

void Coil_A1();

void Coil_B1();

void Coil_C1();

void Coil_D1();

void Coil_OFF();

int main()

{

init();

for(int i=0;i<512;i++)

{

Coil_A1();

delay(5);

Coil_B1();

delay(1500);

Coil_C1();

delay(5);

Coil_D1();

delay(5);

}

return 0;

}

void init()

{

wiringPiSetup();

for(int i=22;i<=25;i++)

{

pinMode(i,OUTPUT);

}

}

void Coil_A1()

{

digitalWrite(22,HIGH);

digitalWrite(23,LOW);

digitalWrite(24,LOW);

digitalWrite(25,LOW);

}

void Coil_B1()

{

digitalWrite(22,LOW);

digitalWrite(23,HIGH);

digitalWrite(24,LOW);

digitalWrite(25,LOW);

}

void Coil_C1()

{

digitalWrite(22,LOW);

digitalWrite(23,LOW);

digitalWrite(24,HIGH);

digitalWrite(25,LOW);

}

void Coil_D1()

{

digitalWrite(22,LOW);

digitalWrite(23,LOW);

digitalWrite(24,LOW);

digitalWrite(25,HIGH);

}

void Coil_OFF()

{

digitalWrite(22,LOW);

digitalWrite(23,LOW);

digitalWrite(24,LOW);

digitalWrite(25,LOW);

}

树莓派harmonyos,【树莓派入门】(三)| 树莓派如何控制步进电机相关推荐

  1. 用树莓派学Linux(三)--------SSH端口转发,跳出局域网的树莓派控制

    上一篇提到的通过SSH服务连接树莓派,是在局域网内实现的,并不能远程控制,比如树莓派在实验室,你用手机在4G网的环境下也需要操作树莓派,则需要考虑使用SSH服务的端口转发功能,实现真正的远程控制.本篇 ...

  2. 树莓派4B系列教程三 :优化配置

    树莓派4B系列教程三 :优化配置 写在前面 树莓派4B内存增加 CPU温度控制 显存优化 Chromuim缓存转移 优化自启程序 Chromium插件安装 离线安装插件时遇到的问题 结语 写在前面 不 ...

  3. 树莓派python编程入门先学什么_树莓派Python编程入门与实战

    树莓派Python编程入门与实战 编辑 锁定 讨论 上传视频 本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 树莓派是一个只有信用卡大小的裸露电路板,它也是一个运行开源Lin ...

  4. 《树莓派Python编程入门与实战》——3.5 关于Python交互式shell

    本节书摘来异步社区<树莓派Python编程入门与实战>一书中的第3章,第3.5节,作者:[美]Richard Blum,更多章节内容可以访问云栖社区"异步社区"公众号查 ...

  5. 树莓派怎么学linux,树莓派使用入门用树莓派学 Linux

    树莓派使用入门用树莓派学 Linux 我们的<树莓派使用入门>的第四篇文章将进入到 Linux 命令行. 在本系列的 第三篇文章 中开始了我们的树莓派探索之旅,我分享了如何安装 Raspb ...

  6. 《树莓派Python编程入门与实战》——2.1 了解Linux

    本节书摘来异步社区<树莓派Python编程入门与实战>一书中的第2章,第2.1节,作者:[美]Richard Blum,更多章节内容可以访问云栖社区"异步社区"公众号查 ...

  7. 树莓派python开发教程_树莓派教程(基于python编程)--入门篇

    原标题:树莓派教程(基于python编程)--入门篇 一:格式化SD卡 SD卡插入读卡器连接电脑,使用SDFormatter对SD卡进行格式化 (重装烧录也要进行着SD卡格式化操作) 二:下载官方镜像 ...

  8. 刚闪电入门了树莓派:斩获不止Python,Linux,goLang,还有架构,格局...

    刚闪电入门了树莓派:斩获不止Python,Linux,goLang,还有架构,格局... 引子 如何以闪电的速度入门树莓派 获得了一个自己可掌控的Python程序 goLang说,我是来打酱油的! 我 ...

  9. 详细到吐血 —— 树莓派驱动开发入门:从读懂框架到自己写驱动

    师承陈立臣 目录 README 一.驱动初步认知 为什么要学会写驱动? 设备号的两个作用? 区分硬件 索引驱动在驱动链表中的位置 从open到设备,从上层到底层,经历了什么? 二.基于内核驱动框架编写 ...

最新文章

  1. golang 获取文件md5
  2. 【Android 逆向】Android 系统文件分析 ( /system/ 系统命令和系统应用数据目录 | /system/app/ 系统应用目录 | sys Linux 系统内核文件目录 )
  3. 文娱打卡百强,重工智造升级,互联网进入“长沙时间”
  4. 牛客多校3 - Operating on a Graph(并查集+链表合并)
  5. C#中的控制台进度条
  6. 一:MyBatis知识整理(1)
  7. numpy.ndarray 交换多维数组(矩阵)的行/列
  8. java建设银行支付_基于JAVA的建设银行账目管理系统的设计
  9. Android+8.0+微信表情,微信8.0版本重大更新!emoji表情包动态化,安卓版也可以下载了...
  10. Unity中XChart饼图如何增加调色盘颜色选项
  11. openwrt_ipsec_racoon.init 分析
  12. 向大家推荐Ubuntu下九大最佳绘图程序
  13. 科学记数法在c语言中表示方法,c/c++开发分享在C语言中阅读科学记数法
  14. 万维网发明者Tim Berners-Lee著作:《编织万维网》译文:第一章
  15. 数电仿真实验-数字钟的设计
  16. 银行管理系统 Java语句
  17. 会计学原理学习笔记——第三章——账户与复式记账(3.3生产准备业务核算——固定资产构建核算)
  18. oracle Number字段类型 对于小数位数的理解
  19. windows电脑使用nvm安装node,管理node版本
  20. htcm7刷linux,htc one m7刷官方原版recovery的教程

热门文章

  1. 基于struts2和hibernate的登录和注册功能——完整实例
  2. DB2 catalog
  3. C#网页自动登录和提交POST信息的多种方法
  4. 挪动以太坊:比特币现金的新功能使其成为智能合约竞争者
  5. idea将项目打成jar包
  6. Zabbix 监控获取apache_status
  7. 使用docker toolbox 在windows上搭建统一环境
  8. Java多线程面试题
  9. 山寨山寨版手机安全卫士项目
  10. Java数据结构与算法(25) - ch11哈希(双重哈希)