然后根据平台的接口文档,搭建你的开发环境。这个一般使用单片机吧?或arduino?平台有对应的程序。当然单片机环境必须要有网络模块或wifi模块来联网。
在平台中建立你的设备,传感器等,建立后有对应的编号等,在程序中要用。
最后,完善程序,调试传感器,调试上传,平台就能收到数据。小小云提示:教程作者 caterpillar是来自台湾的programmer(kinda),所以在一些专有名词的使用上会和我们这边使用的不太一样啦,不过作者也有标注出英文名称,大家自行转换哟(⁎⁍̴̛ᴗ⁍̴̛⁎)
步进电机这东西的学问真不少,就结论而言,控制步进电机最好的方式,就是找到与手边步进电机可以配合的程式库来使用。Arduino IDE 不是有 Stepper 程式库可以使用吗?嗯!它是可以用一些步进电机上,不过,不见得能完全发挥步进电机应有的控制能力,控制某些电机则会有些问题,正巧,我手上这颗 28BYJ-48 5V DC 就是!… XD
在 Arduino 官方网站的 Arduino – Stepper 文件中,谈到了步进电机的两个基本分类:单极步进电机(Unipolar Stepper)与双极步进电机(Bipolar Stepper)。那么就从这两个分类开始认识!
单极步进电机是提供单一方向的电流来驱动电机,例如:
在上图中,可以看到线圈各有一个共同接点,通常接电源,只要改变其他接点的电压讯号,就可以产生电流,而电流都是固定的方向,而由于有四个线圈,这样的电机被称为四相(Phase)电机。
双极步进电机的电流则是双向的,例如:
这类电机在驱动时,需要改变电流的方向来达到不同激磁的效果,而由于有两个线圈,这样的电机被称为二相电机。
电机的相数除了二向、四相之外,还有单相、三相、五相等,这是为了达到不同程度的控制,电机的控制是运用电流通过线圈会产生磁场,并与另一永久磁铁产生作用,来达到转动的效果,以四相步进电机为例:
如果做为定子的线圈激磁后,面对转子一面是 S 极,就会吸引转子的 N 极,只要依顺序对各相线圈激磁,就会产生转动效果,像上面这种一次激磁一个线圈的方式,称为一相激磁,因为每次只激磁一个线圈,电力消耗小,不过缺点是振动大、转距小。
常见的激磁方式是二相激磁,顾名思义,一次激磁两相,由于有两相用以吸引住转子,因此振动小、转距大:
也有一相、二相轮流激磁,称为一/二相激磁,顺序其实就是上面两张图的结合:
可以看出这种激磁方式,每次转动的角度为一相或二相激磁的一半,可以得到更精确的控制。
步进电机需要比较高的电压或电流驱动,在 Arduino 官方网站的 Arduino – Stepper 文件中,有 Unipolar Steppers 及 Bipolar Steppers 两个页面,介绍了如何连接出能驱动步进电机的电路,分别有可以接成两个控制脚位与四个控制脚位的方式。
其中会用到的 IC 是达灵顿阵列(Darlington Array),如先前〈mBlock & Arduino(15)认识晶体管与继电器〉谈到的,若想运用晶体管提供更大的电流来驱动电机,可以使用两个或多个晶体管的组合,达灵顿阵列中有多组达灵顿电路,以 ULN2003APG 来说,里头有七组达灵顿电路。
如果不想那么麻烦地自己接电路,那么可以依使用的步进电机来搭配现成的步进电机驱动模组:
这个步进电机驱动模组,左上四个脚位可以接到 Arduino 的数位输出脚位,下方有 +、- 两个脚位,分别接 Vcc 与 GND,右上白色插槽用来连接我手边这颗五线四相的 28BYJ-48 5V DC,上图步进电机驱动模组中的 ULN2003APG,可搭配 28BYJ-48 5V DC 这个步进电机:
28BYJ-48 5V DC 这个步进电机,其中红线是接 5V 电源,各线的连接是:
如果搭配 ULN2003,要对 28BYJ-48 5V DC 步进电机做激磁,那么 ULN2003 的输入脚位 4、3、2、1,提供电位以进行激磁的顺序为 …
一相激磁:1000-0100-0010-0001
二相激磁:1100-0110-0011-1001
一/二相激磁:1000-1100-0100-0110-0010-0011-0001-1001
如果想要体验一下步进电机转动,那么可以简单地如下实作,脚位 D8 到 D11 分别对应至澄、黄、粉、蓝,例如一相激磁:
执行程式之后,你可以见到步进电机缓慢的转动,将顺序改为 S4 到 S1,就会看到电机缓慢的逆转,这边没有设任何的工作时间延迟,这是因为 mBlock 执行速度的关系,直接使用 Arduino 积木方块,只能是这个速度了。
类似地,以下是二相激磁:
以下是一/二相激磁:
如果想更进一步试试步进电机控制,可以使用 Arduino IDE 中的 Stepper 范例,它们使用到 Arduino 的 Stepper 程式库,不过,如果你手边是 28BYJ-48 5V DC 步进电机,就要注意一下了,以 stepper_oneRevolution 范例为例:
直接执行的话,你的电机只会有一个方向的转动,无法逆转,这是因为 28BYJ-48 5V DC 的接线顺序,与 Stepper 程式库预期的不同,如果你的 28BYJ-48 5V DC 的接线顺序由澄、黄、粉、蓝分别是接至 D8 到 D11,那么有两个方式可以解决,一个方式是在 Arduino 上将 D9 与 D10 接线对调,另一个方式是在建立Stepper时,9与10对调:
再来是stepsPerRevolution必须设定为你的电机实际上一圈会有多少步,如果是 28BYJ-48 5V DC 的话,查询到的规格上写着,步进角为5625 / 64,因此这电机转一圈需要的步数是360 / (5625 / 64),也就是4096步,不过,这是一/二相激磁才会有的步数,如果你查看 Stepper 程式库原始码,会发现,它是采二相激磁的实作方式,因此,使用这个 Stepper 程式库,你实际上要设的stepsPerRevolution必须是2048步。
不过,如果你改了脚位也将stepsPerRevolution设为2048,步进电机还是不会动,这是因为 Stepper 程式库中setSpeed函式的关系:
这是以毫秒为单位来设置step_delay,如果你设为2048步,那number_of_steps就是2048,那么step_delay就会是29296875 / whatSpeed,如果whatSpeed设为60,那结果就会是048828125,然而step_delay是unsigned long,也就是实际上结果只会储存0,那么step函式中millis() - this->last_step_time >= this->step_delay该行,就会一直是成立的,也就是完全没给工作时间,这么一来电机就不会动了。
因此,如果你直接使用 Stepper 程式库,设为 2048 步之后,那么速度就不能设太高,例如以下就可以正常正反转了:
如果你会使用 Arduino 官方语言的话,改写 Stepper 应该不是难事,可以试着实作一/二相激磁,并令其能支援 28BYJ-48 5V DC 的4096步与高转速,懒的话,网路上是也有人已经实作或改写好的版本,不过,想要精确控制的话,重点还是在于,认识你的步进电机与程式库!
感谢CodeData用户: caterpillar 的贡献 著作权归作者所有
整理:宁波家电物联网云平台,中科极动云传统IT企业、通信运营商、通信设备商、互联网企业、工业方案提供商、新型创业公司等多股势力如雨后春笋般纷纷涌入,在经过井喷期的热闹,平台沉淀进入下半场盘整,物联网平台基于IaaS、PaaS、SaaS三种云计算服务模型,平台类型有ICP(基础设施云服务平台)、CMP(连接管理)、DMP(设备管理平台)、AEP(应用使能平台)、BAP(业务分析平台)等。以下是物联网平台举例:
互联网领域 :
阿里云—Link物联网平合、腾讯—QQ物联、百度云—天工智能物联网平台、京东—京东微联、小米—小米IOT开发者平台
通信领域 :
中国移动— OneNeT、中国联通— 物联网平台20、中国电信—ctwing、华为—Ocean Connect、中兴通讯 —Thing Cloud兴云、中国通信服务—CCS开放物联网平台
垂直行业领域:
美的—美的云物联网IOT平台、航天科工— INDICS、徐工信息—Xrea
树根、研华科技— WISE-PaS、海尔— COSMOPlat、研华科技— WISE-PaaS、海尔— COSMOPlat
创业公司:
树根互联—根云平台、立子科技—立子云、智云奇点—Matrix、中科云创—云中控、寄云科技— NeuSeer平台、涂鸦智能—涂鸦智能云、小葱智能—小葱智能物联网IOT平台、上海庆科— FogCloud、粒聚科技— LETSIOT平台、艾森智能— senzFlow、青莲云—物联网安全云平合
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)