arduino uno r3 控制工业伺服电机程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
digitalWrite(0,HIGH); digitalWrite(1,HIGH); pinMode(DIR_1,OUTPUT); pinMode(PUL_1,OUTPUT); pinMode(0,OUTPUT);//正反转指示灯 pinMode(1,OUTPUT); //正反转指示灯 attachInterrupt(0, blink,RISING);//中断函数 }
void loop() {
if (d2==0) { delay(dy); digitalWrite(DIR_1,LOW); while (d2==0)
{ digitalWrite(PUL_1,HIGH); delayMicroseconds(t0); digitalWrite(PUL_1,LOW); delayMicroseconds(t0);
arduino uno r3 控制工业伺服电机程序 一. 本案例实现功能说明:
arduino r3 通电后伺服电机慢速反转(寻找归零开关),碰到 U 型光 电开关(归零开关)后高速正转,设定的正转脉冲数发送完成后,电 机反转,设定的反转脉冲数发送完成后,跳转到正转,如此循环下去。 二. 案例图片:
不好意思,图片拍得比较黑,晚上拍的。 三. 接线说明
} }
if (d2==1)//中断后进入此程序,也就是碰到零点开关后。 {
delay(dy); digitalWrite(0,LOW); digitalWrite(1,HIGH); digitalWrite(DIR_1,HIGH);
while (d0>0) {
digitalWrite(PUL_1,HIGH); delayMicroseconds(t1); digitalWrite(PUL_1,LOW); delayMicroseconds(t1); d0--; } delay(dy); digitalWrite(1,LOW); digitalWrite(0,HIGH); digitalWrite(DIR_1,LOW); while (d1>0) { digitalWrite(PUL_1,HIGH); delayMicroseconds(t1); digitalWrite(PUL_1,LOW); delayMicroseconds(t1); d1--; } d0=30000;//数值重装 d1=30000; //数值重装 } }
void blink()//中断函数 {
d2=1; }
版权:nokiagx@163.com 梁பைடு நூலகம்生
零点开关接 arduino uno r3 的 2 脚,不是直接接的,用光隅 PC817C 隔离,零点开关用 24V 电压,来自伺服驱动器,脉冲输出 7 脚,方向 输出 6 脚。
脉冲输出和方向输出也是用光隅 PC817C 隔离传送到伺服驱动器的 PUL 和 DIR 接点上,不说这么多,你们懂的了。 另外,伺服驱动器接两个正向极限和反向极限开关。 注意:三个光电开关为常闭型。 四.上程序:
int PUL_1=7; int DIR_1=6; unsigned long d0=30000; //d0 为正向脉冲个数 unsigned long d1=30000; //d1 为反向脉冲个数 unsigned int d2=0; // unsigned int t0=200;//寻找零点开关速度 unsigned int t1=100; //正反转速度 unsigned int dy=500; void setup( ) {
相关文档
最新文档