首页 > 其他分享 >Arduino电机测速原理及代码实现

Arduino电机测速原理及代码实现

时间:2023-07-30 13:00:28浏览次数:30  
标签:counter 电机 ISR void Arduino Motor print Serial 测速

 

 

 

//Include the TimerOne Library from Paul Stoffregen
#include "TimerOne.h"

//Constants for Interrupt Pins
//Change values if not using Arduino Uno

const byte MOTOR1 = 2;  //Motor 1 Interrupt Pin - INT 0
const byte MOTOR2 = 3;  //Motor 2 Interrupt Pin - INT 1

//Integers for pulse counters
unsigned int counter1 = 0;
unsigned int counter2 = 0;
//Float for number of slots in encoder disk
float diskslots 30; //Change to match value of encoder disk

//Interrupt Service Routines

//Motor 1 pulse count ISR
void ISR_count1()
{
    counter1++;    // increment Motor 1 counter value
}
//Motor 2 pulse count ISR
void ISR_count2()
{ 
   counter2++;    // increment Motor 2 counter value
}

//TimerOne ISR
void ISR timerone (
{
    Timerl.detachInterrupt ();    //    Stop the timer
    Serial.print ("Motor Speed 1:");
    float rotationl = (counterl / diskslots) * 60.00;    //calculate RPM for Motor 1
    Serial.print (rotationl);
    Serial.print (" RPM - ");
    counterl = 0; // reset counter to zero
    Serial.print ("Motor Speed 2:");
    float rotation2 = (counter2 / diskslots) * 60.00; //calculate RPM for Motor 2
    Serial.print (rotation2);
    Serial.println (" RPM");
    counter2 = 0; // reset counter to zero
    Timerl.attachInterrupt ( ISR_timerone ); // Enable the timer
}

void setup()
{
    Serial.begin(9600);

    Timerl.initialize(1000000); // set timer for lsec
    attachInterrupt (digitalPinToInterrupt (MOTOR1), ISR_count1, RISING); // Increase counter 1 when speed sensor pin goes High
    attachInterrupt (digitalPinToInterrupt (MOTOR2), ISR_count2, RISING); // Increase counter 2 when speed sensor pin goes High
    Timer1.attachInterrupt( ISR_timerone ); // Enable the timer
}

void loop()
{
    //Nothing in the loop!
    //You can place code here
}

 

标签:counter,电机,ISR,void,Arduino,Motor,print,Serial,测速
From: https://www.cnblogs.com/asandstar/p/17591305.html

相关文章

  • 极具性价比的步进电机驱动芯片-TMC2226/TMC2209使用小结
    TMC2226/2209相对于TMC2660C、TMC5160来说,价格低了很多,同时功能并没有太多阉割。对比TMC5160,少了内部加减速曲线,电流足够(Ipeak=2.8A),相对5160而言功能也很足够,所以毫无疑问TMC2226是极具性价比的步进驱动芯片。让我们一起看看TMC2226/TMC2209的一些特点:1、配置接......
  • 伺服电机三环(电流环、速度环、位置环)控制
    0伺服伺服控制是为满足某种目的,对产生的运动(对物体运动的位置、速度及加速度等变化量)进行有效控制的人类活动。伺服控制系统则指的是用来精确地跟随或复现某个过程的反馈控制系统。主令和控制结果的近似达到一定高度时就能称为伺服,和机器的结构没有直接的关系。 伺服电机......
  • 【雕爷学编程】Arduino动手做(173)---SG90舵机双轴云台模块
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • 电机行业未来的发展之路
    未来电机的发展趋势主要有以下几个方面:高效能:未来电机将会越来越高效能,以更少的能源消耗产生更高的动力输出。这将通过使用新材料、新设计和新技术来实现,如使用更高级别的磁体和磁性材料、更高级别的轴承、更高级别的轴线等等。高性能:未来电机将会更高性能,以适应更高要求的应用场......
  • 【雕爷学编程】Arduino动手做(168)---ATTINY85迷你USB开发板2
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • 【雕爷学编程】Arduino动手做(168)---ATTINY85迷你USB开发板
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • 【雕爷学编程】Arduino动手做(55)--DHT11温湿度传感器模块3
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • 【雕爷学编程】Arduino动手做(55)--DHT11温湿度传感器模块2
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • 「雕爷学编程」Arduino动手做(39)——DS18B20温度传感器3
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题......
  • 「雕爷学编程」Arduino动手做(39)——DS18B20温度传感器2
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题......