只需一步,快速开始
签到天数: 867 天
[LV.10]以坛为家III
U型测速模块
TT马达和测速码盘
标准电源(3V和6V) 使用了淘宝上很便宜的TT马达,下图为TT马达的几个基本参数:
TT电机参数.jpg (89.43 KB, 下载次数: 82)
下载附件
2013-11-23 11:04 上传
U型传感器.jpg (61.56 KB, 下载次数: 81)
2013-11-23 11:00 上传
/************************************************************************ 电机测速 使用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; }
48减速比—3V测速结果.png (17.72 KB, 下载次数: 71)
2013-11-23 11:24 上传
48减速比—6V测速结果.png (17.68 KB, 下载次数: 81)
使用道具 举报
签到天数: 22 天
[LV.4]偶尔看看III
签到天数: 7 天
[LV.3]偶尔看看II
本版积分规则 发表回复
|小黑屋|联系我们|YFROBOT ( 苏ICP备20009901号-2 )
GMT+8, 2024-11-22 02:08 , Processed in 0.049095 second(s), 26 queries .
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.