查看: 10487|回复: 4
收起左侧

[求助] 树莓派 pwm 步进电机 如何精确位移!

2015-11-16 09:06:52 | 显示全部楼层 |阅读模式
目前以实现通过softPwm控制步进电机转动 如何控制电机精确位移 请大神教我!下面附上程序
#include <wiringPi.h>
#include <softPwm.h>
#include <stdio.h>
#define uchar unsigned char
#define pwm1    27
int main(void)
{
  if(wiringPiSetup() == -1){      //when initialize wiring failed,print message to screen
    printf("setup wiringPi failed !");
    return 1;
  }
//  pwmInit();
    softPwmCreate(pwm1,1,2);
   while(1)
{
   //pwmSet(1);
  softPwmWrite(pwm1,1);
}
  return 0;
}
//编译gcc -o pwm pwm.c -lwiringPi lpthread
回复

使用道具 举报

2015-11-16 16:20:10 | 显示全部楼层
放弃吧,树莓派不可能精确产生pwm的,操作系统调度对于pwm来说,不确定因素太多了。只能使用外设
回复 支持 反对

使用道具 举报

 楼主| 2015-11-17 09:47:21 | 显示全部楼层
seth.yang 发表于 2015-11-16 16:20
放弃吧,树莓派不可能精确产生pwm的,操作系统调度对于pwm来说,不确定因素太多了。只能使用外设

既然他有pwm 应该有个控制步进电机的方案吧
回复 支持 反对

使用道具 举报

2015-11-17 10:30:50 | 显示全部楼层
可以控制步进电机,但想“精确”的控制就不现实了。如果你的精度要求不高,可以使用。要知道,我们每一句代码的确切执行时间都不由我们决定,而是通过系统的调度机制决定的,而linux系统很忙,尺度大概在毫秒级别的,精确pwm通常在微秒级别,因此精确控制不现实。
回复 支持 反对

使用道具 举报

2016-1-21 22:25:02 | 显示全部楼层
你好,能说下你是如何接线的吗?四轮驱动的话。
我是wiringPi 的 0,1,2,3 即板上的11,12,13,15 分别接L298N电机的in1,in2,in3,in4
但现在想调速,用sotfpwm,请问你是用ENA,ENB的四个随意接到其它GPIO口上吗?还是这图上标的pwm0,pwm1四个针脚上,
谢谢,请回复。

pi2b40 Pins

pi2b40 Pins
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热点推荐

关注我们,了解更多

官方微信

服务时间:10:00-16:00

13714503811

公司地址:深圳市龙岗区南湾街道东门头路8号

Copyright © 2012-2020 Powered by 树莓派论坛 2019.4  粤ICP备15075382号-1
快速回复 返回列表 返回顶部