百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

Arduino 实例(十九)调速带霍尔编码器的电机

liuian 2024-12-08 16:24 43 浏览

1 带霍尔编码器的直流减速电机

2 接线示意图

3 实物连接图

4 运行情况

5 程序

 /*
Bnag Bnang Control with Encoded DC Motor(霍尔编码器与起停控制直流电机)
Last Edited: Feb.27th.2021 by Mun Kim
Contact: robotix.kim@gmail.com     
*/
 
// Motor encoder output pulse per rotation (change as required)// 每圈的脉冲数量,可以从数据手册中查找
int PPR= 3;
 
// Encoder output to Arduino Interrupt pin// 编码器的A相位接Arduino的D2.
int encoder_A= 2; 
int encoder_B=3;
 
// L298n Motor Driver // 马达驱动接线:D5控制PWM, D6与D7控制转动方向
int enB= 5; int in3= 6; int in4= 7;
 
// Analog pin for potentiometer // 电位器接线:用来控制目标转速(不是PWM)
int pot = 0;
 
// Pulse count from encoder // 用来储存脉冲数量
volatile long encoderCount = 0;
 
// One-second interval for measurements // 每一秒进行一次测量与控制,可改小,ie: interval=100;
int interval = 1000;
 
// Counters for milliseconds during interval // 用来计算时间 
long previousMillis = 0; long currentMillis = 0;
 
// Variable for RPM measuerment //rpm: 实际测到的转速, setRPM:目标转速
int rpm = 0; int setRPM=0;
 
// Variable for PWM motor speed output // PWM初始值, 可以设为 0-255 之间的任意值
int pwm = 50; 
 
void setup(){
  Serial.begin(9600); 
  pinMode(encoder_A, INPUT_PULLUP);   
  pinMode(encoder_B, INPUT);
  attachInterrupt(digitalPinToInterrupt(encoder_A), ISR_EncoderA, CHANGE);
  attachInterrupt(digitalPinToInterrupt(encoder_B), ISR_EncoderB, CHANGE);

  previousMillis = millis();
}
 
void loop(){
    // Set desired RPM // 把电位器读数转换成目标转速(2000到10000转每分钟)
    setRPM = map(analogRead(pot), 0, 1023, 2000, 10000);
    
    //Set motor direction // 马达转动方向
    digitalWrite(in3, HIGH); digitalWrite(in4,LOW);
    

    // Update RPM value every second // 每一秒更新一次测量转速
    currentMillis = millis();
    if (currentMillis - previousMillis > interval) {
    previousMillis = currentMillis;
 
    // Calculate RPM // 计算
    rpm = (float)((encoderCount/PPR)*(1000/interval)*60);
 
    // 串口监视器上显示目标,Arduino 输出的 PWM, 以及测量到的RPM
      Serial.print("Set RPM: ");         Serial.print(setRPM);
      Serial.print('\t');
      Serial.print("Measured RPM: ");    Serial.print(rpm);
      Serial.print('\t');
      Serial.print("Crrent PWM: ");    Serial.println(pwm);
   
    //Bang Bang control // 起停式控制了
      if(rpm < setRPM){ pwm++; }   
      if(rpm > setRPM){ pwm--; }
      else{pwm=pwm;} 

    analogWrite(enB, pwm); //调整马达转速

    //pulse count reset // 累计脉冲数量重置,为下一秒测量做准备  
    encoderCount = 0; 
    }
  
}

 // Interupt service routine.
void ISR_Encoder(){
  encoderCount++; }


 void ISR_EncoderA() {
// Phase A: Low to High // A相位从低到高
  if (digitalRead(encoder_A) == HIGH) {
    // check phase B // 观察B相位从而判断转动方向
    if (digitalRead(encoder_B) == LOW) {
      encoderCount++; }        // CW, 顺时针  
    else {
      encoderCount--; }       // CCW, 逆时针  
  }

  else  // Phase A: High to Low // A相位从高到低 
  {
    // check phase B // 观察B相位从而判断转动方向
    if (digitalRead(encoder_B) == HIGH) {
      encoderCount++; }         // CW   
    else {
      encoderCount--; }         // CCW
    }
 }

void ISR_EncoderB() {
  if (digitalRead(encoder_B) == HIGH) {
    if (digitalRead(encoder_A) == HIGH) {
     encoderCount++;        
    }
    else {
      encoderCount--;        
    }
  }
  else {
    if (digitalRead(encoder_A) == LOW) {
      encoderCount++;}          
    else {
     encoderCount--;}         
     }
}

相关推荐

怎么把电脑c盘格式化(怎么把c盘格式化吗)

1.在进行c盘格式化之前,必须备份重要的数据,以免数据丢失。2.在格式化c盘之前,确保所有的应用程序和系统文件都已经备份。否则,在进行格式化之后,将需要重新安装操作系统和所有的应用程序。3.如果...

中国移动赠送的wifi6路由器(192.168.10.1中国移动路由器)

移动tclwifi6路由器很好的。WiFi6路由器远强于WiFi5路由器,值得购买性价比不错。家庭生活中网速慢最主要的原因并非速率,而是穿墙效果。坐在离路由器很近的地方,手机网速一般不会有问题。...

office2010如何激活免费使用
  • office2010如何激活免费使用
  • office2010如何激活免费使用
  • office2010如何激活免费使用
  • office2010如何激活免费使用
win官网网址(win官方网站)

具体方法如下:打开电脑,在浏览器地址栏输入window,就会进入win中文官网,然后再寻找自己需要的软件,升级包等就可以了。下面是windows官网网址:1http://www.microsoft.c...

电脑的任务栏不见了怎么恢复
  • 电脑的任务栏不见了怎么恢复
  • 电脑的任务栏不见了怎么恢复
  • 电脑的任务栏不见了怎么恢复
  • 电脑的任务栏不见了怎么恢复
wifi网址登录入口(wifi网址登录入口有哪些)

wifi网页登录入口是网关地址192.168.1.1.1.首先检查路由器线路连接(参考前面手机设置路由器部分)2.将电脑Tnternet协议(TCP/IP)属性设置为“自动获取IP地址”和“自...

没有驱动程序怎么安装打印机

(1)启动电脑进入Windows操作系统,在桌面上单击开始-设置-打印机。(2)用鼠标右单击安装好的打印机图标,在弹出的右键菜单中选择属性,然后单击打印测试页按钮。(3)此时打印机会打出一页信息,从这...

u盘怎么取消写保护状态(u盘如何解除写保护状态)

如果您的U盘被设置为写保护,您可以尝试以下方法来关闭写保护:1.检查U盘上的物理开关:一些U盘上可能有一个物理开关,用于启用或禁用写保护。请检查U盘的外壳,看看是否有这样的开关,并将其切换到未锁定的...

压缩文件查看器(压缩文件查看器密码是多少)

1,打开手机上面的文件管理器,找到要压缩的WPS文件。2,长按一下WPS文件,然后选择要压缩的文件。3,点击右下角的【更多】,选择【压缩】。4,对压缩文件进行保存,压缩完成。扩展资料:wps产品特点1...

键盘哪个是截图键(键盘中的截图键是哪一个)

1、按Prtsc键截图这样获取的是整个电脑屏幕的内容,按Prtsc键后,可以直接打开画图工具,接粘贴使用。也可以粘贴在QQ聊天框或者Word文档中,之后再选择保存即可。2、按Ctrl+Prtsc键截图...

flash插件电脑版下载(flash插件下载安装)

可以不安装,不安装对电脑也不会有什么影响。友情提示,最好安装,这个也不会占用你多少内存,它是用来播放网页中的flash文件的。如果你不安装,网页中的flash动画就不能正常播放。浏览器也会提示你安装!...

如何打开注册表管理器(如何打开注册表管理器权限)
  • 如何打开注册表管理器(如何打开注册表管理器权限)
  • 如何打开注册表管理器(如何打开注册表管理器权限)
  • 如何打开注册表管理器(如何打开注册表管理器权限)
  • 如何打开注册表管理器(如何打开注册表管理器权限)
foxmail邮箱怎么设置(foxmail邮箱设置成功后点完成没反应)

操作步骤/方法1.打开新建界面:2.打开foxmail,在上方导航栏处找到“邮箱(B)”点开此功能,会看到一个下拉菜单,在下拉菜单中找到“新建邮箱账户(N)”。3.建立账户信息:4.点击“新建邮箱账...

电脑自动关机解决办法(电脑自动关机,原来是这里出了问题)

电脑自动关机的原因一、系统文件损坏一个完整的系统受到袭击之后,电脑就不能进行初始化,从而引起自动关机,这也是一个常见的原因。可以选择重装系统的方法来解决问题。电脑自动关机的原因二、CPU太热这是电脑自...

m2固态硬盘安装系统教程(m2固态如何装系统)

加装m.2固态硬盘后,重装系统的操作步骤如下:1、下载U盘启动盘制作工具,下载一个GHOST版最新的WIN7,准备一个足够大的U盘(16G足够了),用U盘启动盘制作工具将其制作成启动U盘;2、插入新电...