การรีไซเคิลโครงการน้ำลึก Kolokolov-Shchedrin ความแตกต่างจากรูปแบบดั้งเดิม:
1. ไม่มีออสซิลเลเตอร์คริสตัลบน k561 .. ชิปและควอตซ์ 32 kHz สัญญาณ 32 kHz ให้ Arduino Pro Mini
2. วงจรการแจ้งเตือนด้วยเสียงบนไมโครซีรีย์ 561 หลายชุดยังขาดอยู่ - เป้าหมายก็เช่นกันเช่น Arduino (และฉันต้องบอกว่าเสียงที่ยอดเยี่ยมเมื่อเทียบกับวงจรของผู้เขียน)
3. ขับเคลื่อนโดยแรงดัน unipolar 12 โวลต์ (แบตเตอรี่ตะกั่วกรด)
4. ปรับความไวด้วยปุ่มต่างๆ ด้วยสเกล ADC จาก 0 ถึง 1023 ขีด จำกัด การตอบสนองสามารถปรับได้ตั้งแต่ 1 ถึง 38 (ค่าสามารถเปลี่ยนแปลงได้ง่ายในแบบร่าง)
สิ่งสำคัญที่สุดคือฉันต้องการแสดงในบทความนี้ว่าเป็นไปได้ที่จะรวบรวม MDs บน Arduino ไม่ด้อยกว่าความไวแสงดั้งเดิม (สิ่งนี้ได้ผลเพราะต้นฉบับของวงจรต้นฉบับถูกรวบรวมตามลำดับ 10 ชิ้นดังนั้นจึงมีวัสดุสำหรับการเปรียบเทียบ) วงจรเดิม:
เมื่อฉันเริ่มทำงานกับ Arduino ครั้งแรกฉันกระตือรือร้นมากที่ฉันคิดว่าฉันสามารถค้นหาและประกอบวงจรเครื่องตรวจจับโลหะใด ๆ จากอินเทอร์เน็ตบน Arduino ที่ฉันสามารถหาได้ง่ายในกองขยะขนาดใหญ่ โดยหลักการแล้วมันกลับกลายเป็นอย่างนั้น แต่วงจรนั้นตั้งอยู่บนตัวนับความถี่ซึ่งไม่อนุญาตให้บรรลุช่วงที่ดีจริงๆ ของเล่นเด็กบางชิ้นและการทดสอบปากกา + พยายามทำเงินให้กับผู้เริ่มต้น เอกสารต้นฉบับของ MD นี้เป็นเสมือนจริงที่อนุญาตให้คุณค้นหาวัตถุขนาดใหญ่ในระยะ 2 ม. (ดูหนังสือ Kolokolov-Shchedrin ใน Google) ไม่มีสถิติเกี่ยวกับการแปลง md ฉันหวังว่าเธอจะปรากฏตัวพร้อมกับการสนับสนุนจากแฟน ๆ ของ MD และ Arduino โครงการทำงานร่วมกับ Arduino Uno และ Arduino Pro Mini
เพิ่มเติมเกี่ยวกับการเชื่อมโยงจะถูกวางกระบวนการของการเกิดของ MD นี้บนเว็บไซต์ของหัวแร้งซึ่งกินเวลานานกว่าหนึ่งปีและผลักดันให้ผู้เขียนศึกษาการเขียนโปรแกรมคู่ บางทีภาพร่างอาจดูน่ารำคาญสำหรับใครบางคน - ฉันยินดีที่จะยอมรับการแก้ไขของคุณ
ในขณะนี้มีร่างที่ให้คุณปรับความไวของสิ่งกีดขวาง (พิน 7 douins +1 ไปที่สิ่งกีดขวางและพิน 8 -1 ถึงสิ่งกีดขวาง) .
Arduino เกี่ยวกับ mini 5v, 16MHz, ATmega168 และหน้าจอที่ใช้ ถัดจากเครื่องชั่งคืออะแดปเตอร์ Mini SD
ตามที่ระบุไว้แล้ว 1602 ค่าใช้จ่าย 86 รูเบิล, ProMini - 82 รูเบิล หากคุณต้องการโดยทั่วไปคุณสามารถนำ ATmega168 ที่เปลือยเปล่าพัฒนากระดานขึ้นมาและเติมร่างลงในกระดานได้โดยตรงตัวอย่างเช่นฉันติดตั้ง mom-dad บนบอร์ด MD โดยใช้ตัวเชื่อมต่อ ภาพแสดงปลั๊ก 6 ขาของ Arduino ซึ่งร่างสเก็ตถูกเทลงบนบอร์ดโดยตรง
ร่าง MD.Rx-Tx.ProMini.SrednjajaTochkaRegBar.ino
// อินพุตแบบอะนาล็อก A3 สำหรับโวลต์มิเตอร์
// สัญญาณอะนาล็อก A4 ขนาด A4 สำหรับสัญญาณ
// 6- ข้อสรุปของสวนสัตว์
// 9 - ความถี่ขาออก 31200 Hz
#include
จอแอลซีดีคริสตัลเหลว (12, 11, 5, 4, 3, 2);
byte z1 [8] = {// ไอคอนแบตเตอรี่
0b01100, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110};
int countleds = 0; // variable เพื่อเก็บค่าระดับสเกล
int voltag = 0; // ตัวแปรเพื่อจัดเก็บค่าแรงดันไฟฟ้า
int noll = 0; // ตัวแปรเพื่อเก็บค่าจุดกึ่งกลาง
#define NUM_SAMPLES 10 ตัวอย่างแบบอะนาล็อก 10 // 10 ให้อ่านใน 1 วินาที
int sum = 0; // ผลรวมของตัวอย่างที่ถ่าย
int sun = 0; // เดียวกัน แต่หารด้วย 10
ถ่านตัวอย่างที่ไม่ได้ลงชื่อ = 0; // หมายเลขตัวอย่างปัจจุบันด้วย
แรงดันลอย = 0.0; // แรงดันไฟฟ้าที่คำนวณได้
const int button1 = 7; // ปุ่ม barrier plus
const int button2 = 8; // ปุ่มสิ่งกีดขวางลบ
int i = 5; // อุปสรรค
การตั้งค่าเป็นโมฆะ () {
lcd.begin (16, 2); // แสดงการเริ่มต้น
lcd.setCursor (1, 0);
lcd.setCursor (10, 1);
lcd.print ("Rx-Tx");
ล่าช้า (3000);
lcd.clear ();
TCCR1A = TCCR1A & amp; 0xe0 | 2;
TCCR1B = TCCR1B & amp; 0xe0 | 0x09;
analogWrite (9, 126); // ที่ขา 10 PWM = 50% f = 31200Hz
lcd.createChar (1, z1);
}
void loop () {
int buttonState1 = สูง; // สถานะของปุ่มเป็นหนึ่ง
int buttonState2 = สูง; // สถานะสองปุ่ม
sample_count = 0; // รีเซ็ตรูปร่างของจำนวนการเพิ่ม
รวม = 0; // รีเซ็ตผลรวมของการเพิ่ม 10 ครั้ง
ในขณะที่ (sample_count & lt; NUM_SAMPLES) {
รวม + = analogRead (A4); // การวัดถัดไปจะถูกเพิ่มเข้าไปในผลรวม
sample_count ++; // หน่วยถูกเพิ่มเข้าไปในหมายเลขการวัด
sun = sum / 10;} // หาค่าเฉลี่ยจากการวัด 10 ครั้ง
noll = analogRead (A3) / 2; // จุดกึ่งกลางพลังงาน
แรงดันลอย = แผนที่ (อะนาล็อกอ่าน (A3), 0,1023,0,1500) /100.0;
// โวลต์มิเตอร์สร้างขึ้นที่อินพุต A3
if (sun & gt; = noll + i) {countleds = แผนที่ (sun, noll + i, noll * 2 - 250, 9, 14);
// ถ้าผลลัพธ์ที่ได้รับอยู่ในส่วนที่ 9-15 ของสเกล
เสียง (6, นับ * 100);}
if (sun & lt; = noll - i) {countleds = map (sun, 116, noll - i, 0, 7)
// ถ้าผลลัพธ์ที่ได้คือ 0-7 เซกเมนต์ของเครื่องชั่ง
เสียง (6, นับ * 50); }
if (sun & lt; noll & amp; & amp; sun & gt; = noll - (i-1)) {countleds = 7;
ไม่มี (6); } // islet ของ ZERO เสมือน (7 ส่วน)
if (sun & gt; noll & amp; & amp; sun & lt; = noll + (i-1)) {countleds = 8;
ไม่มี (6); } // island of virtual ZERO scale (8 ส่วน)
{lcd.setCursor (countleds, 0); // ตั้งค่าเคอร์เซอร์เป็นคอลัมน์ countleds, บรรทัด 0
lcd.print ("\ xff"); // กรอกไอคอน
lcd.setCursor (0, 1); // เลื่อนไปที่ 2 แถว, คอลัมน์ -0
lcd.print (อักขระ (1)); // สัญลักษณ์ของแบตเตอรี่
lcd.setCursor (1, 1); // เลื่อนไปที่ตัวบ่งชี้แรงดันไฟฟ้า
lcd.print (แรงดันไฟฟ้า) // แรงดันไฟฟ้า
lcd.setCursor (7, 0); // คอลัมน์ที่ 8 แถวที่ 1
if (sun & lt; noll) {lcd.print ("{");} // พิมพ์
lcd.setCursor (8, 0); // คอลัมน์ที่ 9 แถวที่ 1
if (sun & gt; noll) {lcd.print ("}");} // พิมพ์
lcd.setCursor (7, 1);
lcd.print ("B =");
lcd.setCursor (9, 1); // 11 คอลัมน์แถวที่ 2
lcd.print (i); // อุปสรรค
lcd.setCursor (13, 1); // คอลัมน์ที่ 13 แถวที่ 2
lcd.print (ดวงอาทิตย์); // พิมพ์ค่าเฉลี่ยของค่า ADC
ล่าช้า (100); // รอ
buttonState1 = digitalRead (button1); // อ่านปุ่มสถานะ 1
buttonState2 = digitalRead (button2); // อ่านสถานะปุ่ม 2
if (buttonState1 == LOW) {i = i + 1; ล่าช้า (50);}
// เมื่อกดปุ่มสิ่งกีดขวางก็จะเพิ่มขึ้น 1 หน่วงเวลา 50
if (buttonState2 == LOW) {i = i - 1; ล่าช้า (50);}
// เมื่อกดปุ่มสิ่งกีดขวางจะลดลง 1 หน่วงเวลา 50
if (i & lt; 1) {i = 1;} // ขอบเขตล่างของสิ่งกีดขวาง
if (i & gt; 38) {i = 38;} // ขอบเขตบนสุดของสิ่งกีดขวาง
lcd.clear ();
}
}
ฉันไม่ได้ใช้รถสององค์ประกอบสุดท้ายของ TL074 ไม่มีการใช้งาน แต่ในวงจรและบอร์ดพวกเขาอยู่ คุณอาจต้องการให้พวกเขาทำงานในภายหลัง ฉันเชื่อว่าฉันบรรลุเป้าหมาย หน่วยแสดงผลทำงานได้อย่างยอดเยี่ยม ทุกอย่างอื่นขึ้นอยู่กับ MD