|
第一次发帖,好紧张啊{:soso__3110130392203091378_3:}
之前在玩步进电机驱动的泵,一直在找怎么怎么用arduino产生脉冲信号,参考了几种方法,但输出的精度不够,特别是频率比较高的时候,误差就会增大。
自己写了个库,很好懂,发上来给大家参考一下(轻拍,please)。
输出引脚只能是0~7,占空比不能设置,有些语句加进去会增大误差。
输出的时候还是有点误差,不过可以通过方程计算一下,比如想输出1000Hz,代入方程算出Input = 1016,填入1016就能输出1000Hz的脉冲,公式是自己算的,不知道在其他板子里的公式对不对,不过可以自己去算。4000Hz以下误差可以小于1%,不过大于4000Hz的话,误差就会大一点。
还有个问题就是,loop里加入digitalWrite(Vin, 0);digitalWrite(dir, 0);这两句之后,误差会增大,不知道还有什么方法可以解决。
- #include "StepPump.h"
- StepPump PumpA(3);
- #define dir 4
- #define Vin 5
- void setup(){
- pinMode(dir, OUTPUT);
- pinMode(Vin, OUTPUT);
- }
- void loop(){
- /* digitalWrite(Vin, 0);
- digitalWrite(dir, 0);*/
- PumpA.pulseOut(1016); //15.6E-6 * INPUT - (1 - 601.2E-6)* INPUT + OUTPUT = 0, target_Hz = Output, 计算出对应的Input
- }
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|