U型测速模块
TT马达和测速码盘
标准电源(3V和6V)
使用了淘宝上很便宜的TT马达,下图为TT马达的几个基本参数:
/************************************************************************
电机测速
使用millis()函数,记录时间,单位为毫秒
使用中断函数,当引脚电平改变时触发,计数一次
以1:48减速电机、20孔的码盘为例
将得到的值Val除以40,得到转动圈数
除以 时间,可自定义采样时间,单位:ms
换算单位,得到电机转速Speed ,单位 转/分
BY YFROBOT
************************************************************************/
/* 注意:这里电机直接给电压转动,未使用程序和驱动模块驱动 */
int U_Pin = 2; //设置模块引脚接到数字引脚2(程序用到中断函数,UNO中断引脚为数字引脚2和3)
float Val = 0; //设置变量Val,计脉冲数
unsigned long time = 0; //设置变量time,计时
int sampling_time = 500; //采样时间
float Speed; //设置变量Speed,存储转速
void setup() {
Serial.begin(9600);
attachInterrupt(0, count, CHANGE); //引脚电平发生改变时触发
time = millis();
}
void loop() {
if (millis() - time >= sampling_time) {
detachInterrupt(0); // 关闭外部中断
// Val/40 圈数; sampling_time/60000 换算时间单位;
// 计算公式:转速/时间 - (Val / 40) / (sampling_time / 60000) ;
// 简化:
Speed = (float) (Val * 1500 / sampling_time);
Serial.println(Speed);
Val = 0;
time = millis();
attachInterrupt(0, count, CHANGE); //重新开启外部中断
}
}
void count() {
Val += 1;
}
欢迎光临 YFROBOT创客社区 (http://yfrobot.com.cn/) | Powered by Discuz! X3.1 |