雪烧云朵 发表于 2015-11-16 09:06:52

树莓派 pwm 步进电机 如何精确位移!

目前以实现通过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

seth.yang 发表于 2015-11-16 16:20:10

放弃吧,树莓派不可能精确产生pwm的,操作系统调度对于pwm来说,不确定因素太多了。只能使用外设

雪烧云朵 发表于 2015-11-17 09:47:21

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

既然他有pwm 应该有个控制步进电机的方案吧

seth.yang 发表于 2015-11-17 10:30:50

可以控制步进电机,但想“精确”的控制就不现实了。如果你的精度要求不高,可以使用。要知道,我们每一句代码的确切执行时间都不由我们决定,而是通过系统的调度机制决定的,而linux系统很忙,尺度大概在毫秒级别的,精确pwm通常在微秒级别,因此精确控制不现实。

Rasper 发表于 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四个针脚上,
谢谢,请回复。
页: [1]
查看完整版本: 树莓派 pwm 步进电机 如何精确位移!