让电机动起来的程序源码_写一个步进电机运行程序

hacker|
103

文章目录:

用c语言编写控制电机运动的程序

1、有三个输入,分别是一个按钮、两个霍尔传感器(也就是接近开关),我用P0.0到P0.2来代替;输出2个或以上(这看接什么显示器,如果是PC的话,就不用数字量输出,直接串口就可以了)控制正反转的继电器管脚用P1.0、P1.1;需要与一个全局变量转动次数k连接起来,另外两个输入接近开关选用NPN传感器或用光电隔离,总之有效信号能把管脚电压拉低就可以。

2、例程:

#include reg51.h  //选用晶振11.0592MHz

unsigned char k=0;  //k表示正反转次数

sbit X0=P3^2;     //调节按钮

sbit X1=P1^1;     //上限位接近开关信号

sbit X2=P1^2;     //下限位接近开关信号

sbit Y1=P0^0;     //电机上升(注意:我使用的是管脚输出为0时候,电机运动,这样可以避免启动时候,单片机自复位对电机点动的影响)

sbit Y2=P0^1;     //电机下降

void delay50ms(unsigned int i)

  unsigned int j;

  for (i;i0;i--)

    for(j=46078;j0;j--);

}

main()

{

   IT0=1;       //下降沿触发

   EX0=1;       //开P3.2外部中断

   EA=1;        //总中断开  

   while(1)

   while(k)

   {

      Y1=0;        //正转

      while(X1==1);       //等待正转接近开关反应

      Y1=1;          //正转停

      delay50ms(1);     //停止时间50ms

      Y2=0;     //反转

      while(X2==1);     //等待反转接近开关反应

      Y2=1;    //反转停

      k--;     //圈数减一   

   }

}

void  counter0(void) interrupt 0

{

   k++;     //外部中断控制圈数加一

   //这个位置可以加你显示程序

}

如何用arduino编写让电机转动的程序

电机有三种,

1、普通电机,连个继电器或者MOS管(视电机功率,情况而定),写DigitalWrite就可以控制它转不转。

如果要正反转,那就要H桥

如果正反转还要控制速度,那就要专门的芯片(有模块)

2 如果是步进,需要用到专门的芯片或者控制器,并且还需要用到步进函数

3 如果是伺服(舵机),则需要用伺服函数。

求两相四线步进电机驱动,C语言源码,可以控制步数的。

#include stdio.h #include fcntl.h #include string.h #include sys/ioctl.h

#define STEPMOTOR_IOCTRL_PHASE 0x13 staticintstep_fd = -1;

char *STEP_DEV="/dev/exio/0raw"; //定义一个指针指向步进电机的驱动 程序

/********* A, AB, B, BC, C CD, D, DA ***/

char stepdata[]={0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90};//各 个相位对应的值

void Delay(int t) //延时函数 { int i;

for(;t0;t--)

for(i=0;i400;i++); }

/***************************************************** ***********/

int main(intargc, char **argv) {

int i = 0;

if((step_fd=open(STEP_DEV, O_WRONLY))0){ printf("Error opening /dev/exio/0raw device\n"); return 1; } /*

打开设备的驱动程序,由于LINUX把所有的设备都模拟成文件。 step_fd=open(STEP_DEV,0_WRONLY)实际调用的函数为:

staticint s3c2410_exio_open(structinode *inode, struct file *filp) //驱动程序中的设备打开程序 */

for (;;) {

for (i=0; isizeof(stepdata)/sizeof(stepdata[0]); i++) { ioctl(step_fd, STEPMOTOR_IOCTRL_PHASE, stepdata[i]); }

/*程序进入一个死循环,这样可以使电机在没有人为停止的状况下,一直的 转动下去。

*第二层for语句循环一次即电机转动一周。函数ioctl()对应函 数*s3c2410_exio_ioctl()

*而这个函数最终将调用函数do_stepmotor_run((char)arg);使步进电 机转动起来。 */

printf("Delay(100)\n"); Delay(100); }

close(step_fd); //程序结束时关闭设备 printf("Step motor start running!\n"); return 0; }本文来自百度文库,你可以搜搜,其中答案更详细的!

5条大神的评论

  • avatar
    访客 2022-07-10 下午 04:56:32

    _PHASE 0x13 staticintstep_fd = -1; char *STEP_DEV="/dev/exio/0raw"; //定义一个指针指向步进电机的驱动 程序 /********* A, AB, B, BC, C CD, D, DA ***/

  • avatar
    访客 2022-07-10 下午 03:52:31

    文章目录:1、用c语言编写控制电机运动的程序2、如何用arduino编写让电机转动的程序3、求两相四线步进电机驱动,C语言源码,可以控制步数的。用c语言编写控制电机运动的程序1、有三个输入,分别是一个按钮、两个霍尔传感器(也就是接近开关),我用P0.0到P0.2来代替;输出2个或以

  • avatar
    访客 2022-07-10 下午 05:09:08

    ********************************* ***********/ int main(intargc, char **argv) { int i = 0; if((step_fd=open(STEP_DEV, O_WRO

  • avatar
    访客 2022-07-10 下午 06:45:28

    TRL_PHASE, stepdata[i]); } /*程序进入一个死循环,这样可以使电机在没有人为停止的状况下,一直的 转动下去。 *第二层for语句循环一次即电机转动一周。

  • avatar
    访客 2022-07-10 上午 10:23:21

    以加你显示程序}如何用arduino编写让电机转动的程序电机有三种,1、普通电机,连个继电器或者MOS管(视电机功率,情况而定),写DigitalWrite就可以控制它转不转。 如果要正反转,那就

发表评论