該應用程序適用于 345 英寸 5 英寸的車計算結果為 7 英寸 x 12 英寸您將自己更換為金屬車床??梢允褂?Arduino Nano、兩行液晶顯示器和 IR 傳感器的床為您的金屬車床。
因為我的車床霍爾設備沒有和沒有表,所以我決定做一個。在高速下表現(xiàn)不佳。設備看起來工作得更好,最高轉速會超過 1000??赡苓m合 1000 轉速的傳感器,我很少做任何比這轉速的金屬。
我的第一個任務是讓Arduino、LCD和傳感器啟動并運行。我在電機上削磨的手鉆上放了一條條紙,以便在臺標上進行測試。我使用小型驅動驅動工具來測試的速度更快。
蜜蜂將用圍繞著保護其車內(nèi)元件的作用,設置在側蓋的位置,以保護齒輪。
當床棒的時候,有寬敞的空間在主設備附近用半個左右蓋上蓋乙柱,所以我把車縮窄子把轉換器改成了一個支架。將傳感器擰到它上面,并為傳感器安裝功能做了一個漏洞。
圖為安全的測試設置,測試完成后將用覆蓋范圍覆蓋。
這顯示了以及可以使用的位置,電纜將固定。
畫的線是蓋子適合這臺車床的位置。我用它來幫助定位傳感器。
傳感器有一個小安裝孔,只是一塊石頭子上。螺絲和兩個小柱之間有一個小柱子。
表面有一個電位器,可以調(diào)節(jié)信號距離。您可以調(diào)整它以使信號距離清晰。
在這里,您可以看到制造的兩個階段:面包,以及將所有部件安裝到主要產(chǎn)品板的板上。
下圖中需要注意的一些事項:
1. 有很多東西要用來做盒子里。我認為這是一個樹莓派。
2. 切割上原型板焊接到LED上。這允許連接到Arduino。
3. 一個 Arduino 被焊接到一個小型原型上更改。下個月我將很容易使用 Nano。如果 Nano 出現(xiàn),將很容易使用。
4. 1K電位器在原電池上,連接斷線時切斷電源線,并不會造成短路。
5. 一個小開關和 9 副電池座也被焊接到系統(tǒng)中。
6. Nano,以便在更改程序時安裝。為了實現(xiàn)這一點,在盒子里制作一個USB連接點。
這個傳感器圍起來起來揭開來,安裝被剪掉,你的X的X壞了。
LCD 的原型板,大多數(shù)的螺絲釘,讓你在外面用任何東西安裝?;蛘吣憧梢栽谖易瞿愕暮凶拥暮凶?,然后把所有東西放在一起。
訂購清單
中有很多東西可以在亞馬遜、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引腳號相關聯(lián)來初始化庫;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
// 用于跟蹤的 RPM 值
const int IRSensorPin = 2;// IR 傳感器輸入引腳的編號
const int ledPin = 13;
// Nano int ledState = HIGH上的 LED 引腳數(shù);// 輸出引腳的當前狀態(tài)
// 注意:該程序曾與簧片繼電器一起使用,用于自行車踏頻計數(shù)器,
// 但它可以與紅外傳感器的輸入一起正常工作。
// 如果我需要重用它,所有變量都還在。
整數(shù)輸入狀態(tài);// 來自輸入引腳的當前狀態(tài)
int lastInputState = LOW;// 來自輸入引腳的前一個 InputState
long lastDebounceTime = 0;// 最后一次切換輸出引腳
long debounceDelay = 5;// 去抖時間;
如果輸出長時間閃爍,則增加;
長結束時間;
長啟動時間;
國際轉數(shù) = 0;
//int lnCount = 0;// 平均 RPM 計數(shù)器
//int avgRPM = 0;// 平均總數(shù)
//長電壓= 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,輸出);
數(shù)字寫入(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);// 在此處附加服務例程
}
//------------------------------------------------ ---------------
無效循環(huán)(無效){
時間=毫秒();
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;
序列號。打?。〞r間);
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;
}
//------------------------------------------------ ---------------
-
傳感器
+關注
關注
2545文章
50453瀏覽量
751098 -
Arduino
+關注
關注
187文章
6458瀏覽量
186504 -
車床設計
+關注
關注
0文章
2瀏覽量
5198
發(fā)布評論請先 登錄
相關推薦
評論