该应用程序适用于 345 英寸 5 英寸的车计算结果为 7 英寸 x 12 英寸您将自己更换为金属车床。可以使用 Arduino Nano、两行液晶显示器和 IR 传感器的床为您的金属车床。
因为我的车床霍尔设备没有和没有表,所以我决定做一个。在高速下表现不佳。设备看起来工作得更好,最高转速会超过 1000。可能适合 1000 转速的传感器,我很少做任何比这转速的金属。
我的第一个任务是让Arduino、LCD和传感器启动并运行。我在电机上削磨的手钻上放了一条条纸,以便在台标上进行测试。我使用小型驱动驱动工具来测试的速度更快。
蜜蜂将用围绕着保护其车内元件的作用,设置在侧盖的位置,以保护齿轮。
当床棒的时候,有宽敞的空间在主设备附近用半个左右盖上盖乙柱,所以我把车缩窄子把转换器改成了一个支架。将传感器拧到它上面,并为传感器安装功能做了一个漏洞。
图为安全的测试设置,测试完成后将用覆盖范围覆盖。
这显示了以及可以使用的位置,电缆将固定。
画的线是盖子适合这台车床的位置。我用它来帮助定位传感器。
传感器有一个小安装孔,只是一块石头子上。螺丝和两个小柱之间有一个小柱子。
表面有一个电位器,可以调节信号距离。您可以调整它以使信号距离清晰。
在这里,您可以看到制造的两个阶段:面包,以及将所有部件安装到主要产品板的板上。
下图中需要注意的一些事项:
1. 有很多东西要用来做盒子里。我认为这是一个树莓派。
2. 切割上原型板焊接到LED上。这允许连接到Arduino。
3. 一个 Arduino 被焊接到一个小型原型上更改。下个月我将很容易使用 Nano。如果 Nano 出现,将很容易使用。
4. 1K电位器在原电池上,连接断线时切断电源线,并不会造成短路。
5. 一个小开关和 9 副电池座也被焊接到系统中。
6. Nano,以便在更改程序时安装。为了实现这一点,在盒子里制作一个USB连接点。
这个传感器围起来起来揭开来,安装被剪掉,你的X的X坏了。
LCD 的原型板,大多数的螺丝钉,让你在外面用任何东西安装。或者你可以在我做你的盒子的盒子,然后把所有东西放在一起。
订购清单
中有很多东西可以在亚马逊、Adafruit 或 SparkFun 上购买。
OSOYOO 10PCS IR 红外避障传感器模块(亚马逊)
KNACRO IIC/2C/TWI 1602蓝光蓝光模组(亚马逊)
Mini Nano V3.0 ATmega328P 微控制器板(亚马逊)
Gikfun 可焊接面包板镶金饰面原型板(亚马逊)
Adafruit Perma-Proto 单颗粒样板 PCB -
9v电池座
9v电池
小拨动开关
LCD显示对应的10K器电位
我用是很久以前从 SparkFun 购买的。我认为这是 Raspberry Pi 准备的。
螺丝、螺丝、水泥和垫片
金属丝
爆破管
车床计 Arduino 代码:
// Tachometer_For_Lathe_IR
// 显示车床主轴转速
// 用途:
// Arduino Nano V 3.0
// OSOYOO IR 红外传感器(亚马逊有售)
// IM162 LCD 显示屏(亚马逊上有类似的)
// 包含 LCD 和 Timer 库代码:
#include
#include
//通过将任何需要的LCD接口引脚//与连接到
const int rs = 12,en = 11,d4 = 6,d5 = 5,d6 = 4,d7 = 3的arduino引脚号相关联来初始化库;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
// 用于跟踪的 RPM 值
const int IRSensorPin = 2; // IR 传感器输入引脚的编号
const int ledPin = 13;
// Nano int ledState = HIGH上的 LED 引脚数;// 输出引脚的当前状态
// 注意:该程序曾与簧片继电器一起使用,用于自行车踏频计数器,
// 但它可以与红外传感器的输入一起正常工作。
// 如果我需要重用它,所有变量都还在。
整数输入状态;// 来自输入引脚的当前状态
int lastInputState = LOW; // 来自输入引脚的前一个 InputState
long lastDebounceTime = 0; // 最后一次切换输出引脚
long debounceDelay = 5; // 去抖时间;
如果输出长时间闪烁,则增加;
长结束时间;
长启动时间;
国际转数 = 0;
//int lnCount = 0; // 平均 RPM 计数器
//int avgRPM = 0; // 平均总数
//长电压= 0; // 从锅中读取的值
//long outputValue = 0; // 值输出到 PWM(模拟输出)
//int speedVal = 0;
//长 rpm50 = 833333;
//volatile unsigned long cadTime = 0; // 对共享变量使用 volatile
//long timeC, endTimeC, startTimeC;
//int RPMC = 0;
浮动 lnTime = 0;
//int SpeakerPin = 10;
//int 低速率;
//int hiRate;
//int potPin = A0; //模拟引脚 0
//int switchValPin = A1; //模拟引脚1
//------------------------------------------------ ---------------
void setup(void) {
pinMode(IRSensorPin, INPUT);
pinMode(ledPin,输出);
数字写入(ledPin,ledState);
序列号.开始(9600);
lcd.begin(16, 2); //初始化液晶显示器
// 显示屏上的启动文本
lcd.clear();
lcd.print("车床红外。");
lcd.setCursor(0, 1);
lcd.print("转速表");
延迟(2000);
结束时间 = 0;
Timer1.initialize(1000000); // 将定时器设置为 60 rpm,1,000,000 微秒(1 秒)
Timer1.attachInterrupt(timerIsr); // 在此处附加服务例程
}
//------------------------------------------------ ---------------
无效循环(无效){
时间=毫秒();
int currentSwitchState = digitalRead(IRSensorPin);
if (currentSwitchState != lastInputState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (currentSwitchState != inputState) {
inputState = currentSwitchState;
if (inputState == LOW) {
digitalWrite(ledPin, LOW);
计算RPM();// 来自传感器的实际 RPM
ledState = !ledState;
}
else {
digitalWrite(ledPin, HIGH);
}
}
}
lastInputState = currentSwitchState;
}
//------------------------------------------------ ---------------
void calculateRPM() {
startTime = lastDebounceTime;
lnTime = 开始时间 - 结束时间;
RPM = 60000 /(开始时间 - 结束时间);
结束时间 = 开始时间;
}
// --------------------------
// 自定义 ISR 定时器例程
// 定时器设置为 rpm,见上
// ----- ---------------------
void timerIsr()
{
// 每秒打印 RPM
// 基于计时器的 RPM
Serial.println("------- --------");
时间=毫秒()/ 1000;
序列号。打印(时间);
Serial.print("RPM:");
序列号.println(RPM);
lcd.clear();
lcd.print("主轴转速");
lcd.setCursor(0, 1);
lcd.print(RPM);
lcd.setCursor(6,1);
lcd.print("RPM");
延迟(500);
转速 = 0;
}
//------------------------------------------------ ---------------
全部0条评论
快来发表一下你的评论吧 !