当前位置:首页 > 经验 >

编码器编程实例视频(编码器编程实例)

来源:原点资讯(www.yd166.com)时间:2022-11-06 15:19:38作者:YD166手机阅读>>

本实例可以向串口输入目标转速,电机通过编码器进行调速,并达到目标转速。输入的目标转速为正或负时,电机转速不同。

1 带霍尔编码器的电机

编码器编程实例视频,编码器编程实例(1)

2 接线

UNO引脚

外设引脚

2

编码器A相

5

编码器B相

3

L298N驱动IN1

4

L298N驱动IN2

7

L298N驱动ENA

5V

面包板

GND

面包板-

编码电机引脚

所接引脚

电机线﹢

L298N驱动AOUT2

电机线 -

L298N驱动AOUT1

编码器5v

面包板

编码器GND

面包板-

L298N

所接引脚

5V

面包板﹢

GND

面包板-

12V

驱动12V电源

3 实物连接图

编码器编程实例视频,编码器编程实例(2)

4 程序

const unsigned int Motor_PWM=7; const unsigned int L298N_IN1=3; const unsigned int L298N_IN2=4; int value; #include <FlexiTimer2.h> //定时中断 #define ENCODER_A 2 #define ENCODER_B 5 String Target_Value; int Velocity,Count=0; float Velocity_KP =7.2, Velocity_KI =0.68,Target=0; int startPWM=0; int PWM_Restrict=255; void setup() { Serial.begin(9600); Serial.println("/*****开始驱动*****/"); pinMode(ENCODER_A,INPUT); pinMode(ENCODER_B,INPUT); pinMode(L298N_IN1,OUTPUT); pinMode(L298N_IN2,OUTPUT); pinMode(Motor_PWM,OUTPUT); FlexiTimer2::set(5, control); //5毫秒定时中断函数,每5s执行一次control函数 FlexiTimer2::start (); //中断使能 attachInterrupt(0, READ_ENCODER_A, CHANGE); } void loop() { while(Serial.available()>0) //检测串口是否接收到了数据 { Target_Value=Serial.readString(); //读取串口字符串 Target=Target_Value.toFloat(); //将字符串转换为浮点型,并将其赋给目标值 Serial.print("目标转速频率:"); //串口打印出设定的目标转速 Serial.println(Target); } } void control() { Velocity=Count; //单位时间内读取位置信息 Count=0; //并清零 value=Incremental_PI_A(Velocity,Target); Set_PWM(value); } void READ_ENCODER_A() { if (digitalRead(ENCODER_A) == HIGH) { if (digitalRead(ENCODER_B) == LOW) Count ; //根据另外一相电平判定方向 else Count--; } else { if (digitalRead(ENCODER_B) == LOW) Count--; //根据另外一相电平判定方向 else Count ; } } int Incremental_PI_A (int Encoder,int Target) { float Bias; static float PWM=0,Last_bias=0; Bias=Target-Encoder; //计算偏差 PWM =Velocity_KP*(Bias-Last_bias) Velocity_KI*Bias; //增量式PI控制器 if(PWM>PWM_Restrict)PWM=PWM_Restrict; //限幅 if(PWM<-PWM_Restrict)PWM=-PWM_Restrict; //限幅 Last_bias=Bias; //保存上一次偏差 return PWM; //增量输出 } void Set_PWM(int motora) { if (motora > 0) { digitalWrite(L298N_IN1,HIGH); digitalWrite(L298N_IN2,LOW); analogWrite(Motor_PWM, motora startPWM); } else if(motora == 0) { digitalWrite(L298N_IN1,LOW); digitalWrite(L298N_IN2,LOW); } else if (motora < 0) { digitalWrite(L298N_IN1,LOW); digitalWrite(L298N_IN2,HIGH); analogWrite(Motor_PWM, -motora startPWM); } }

5 实验效果

栏目热文

编码器颜色对照接线图(安川编码器颜色对照接线图)

编码器颜色对照接线图(安川编码器颜色对照接线图)

各类PLC的输入电路大致相同,通常有三种类型。一种是直流12~24V输入,另一类是交流100~120V、200~240V...

2022-11-06 16:02:23查看全文 >>

编码器的工作原理及编程(电机编码器坏了会怎样)

编码器的工作原理及编程(电机编码器坏了会怎样)

原创不易,每篇文章都倾注了我的心血,大家喜欢的话请点赞并分享,您的支持是我坚持下去的动力!编码器将信号或数据进行编制、转...

2022-11-06 15:39:03查看全文 >>

编码器编程实例(编码器与plc的编程梯形图)

编码器编程实例(编码器与plc的编程梯形图)

西门子S7-1200与增量编码器的连接西门子S7-1200的数字输入开关点均提供了增量编码器脉冲信号的快速计数器功能,单...

2022-11-06 15:27:48查看全文 >>

编码器工作原理示意图(编码器原理及图解)

编码器工作原理示意图(编码器原理及图解)

私信“分享”二字,即可领取400G电机、伺服控制、机器人专属资料!一图解读编码器的原理编码器原理、介绍、工作原理、接口、...

2022-11-06 15:26:05查看全文 >>

编码器结构原理图解(编码器原理及图解)

编码器结构原理图解(编码器原理及图解)

大家有没有遇到过鼠标滚轮失灵的情况?做PPT时候突然自动翻页,网页卡死不能上下滑动,这八成就是滚轮坏了。那么,你知道滚轮...

2022-11-06 15:48:07查看全文 >>

霍尔编码器原理动画图gif(霍尔传感器原理动画图gif)

霍尔编码器原理动画图gif(霍尔传感器原理动画图gif)

霍尔效应是美国物理学家 Edwin Hall 于 1879 年发现;由于导体中电流的性质,电流是由电子的定向移动所形成的...

2022-11-06 15:26:20查看全文 >>

编码器的工作原理及接线(编码器坏了的故障现象)

编码器的工作原理及接线(编码器坏了的故障现象)

什么是编码器?编码器是将信号或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。编码器把角位移或直线位移转换成...

2022-11-06 15:15:33查看全文 >>

旋转编码器工作原理(编码器接线口诀)

旋转编码器工作原理(编码器接线口诀)

增量式旋转编码器通过内部两个光敏接受管转化其角度码盘的时序和相位关系,得到其角度码盘角度位移量增加(正方向)或减少(负方...

2022-11-06 15:30:48查看全文 >>

编码器的结构与工作原理(编码器工作原理详细点)

编码器的结构与工作原理(编码器工作原理详细点)

编码器(encoder)是将信号(如比特流)或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。编码器把角位移...

2022-11-06 15:30:12查看全文 >>

编码器的作用(多摩川编码器接线图解)

编码器的作用(多摩川编码器接线图解)

机器之心报道编辑:蛋酱在这篇新论文中,TOELT LLC 联合创始人兼首席 AI 科学家 Umberto Michelu...

2022-11-06 15:27:18查看全文 >>

文档排行