Tái chế sơ đồ nước sâu Kolokolov-Shchedrin. Sự khác biệt so với sơ đồ ban đầu:
1. KHÔNG có dao động tinh thể trên k561 .. chip và thạch anh 32 kHz. Tín hiệu 32 kHz mang lại cho Arduino Pro Mini.
2. Các mạch thông báo âm thanh trên một số vi mạch loạt 561 cũng không có mặt - tiếng nói của các mục tiêu cũng vậy, Arduino (và tôi phải nói rằng, giọng nói tuyệt vời, so với mạch của tác giả).
3. Cung cấp bởi điện áp đơn cực 12 v (pin axit-chì).
4. Điều chỉnh độ nhạy bằng các nút. Với thang đo ADC từ 0 đến 1023, ngưỡng phản hồi được điều chỉnh từ 1 đến 38 (giá trị có thể dễ dàng thay đổi trong bản phác thảo).
Quan trọng nhất, tôi muốn chỉ ra trong bài viết này rằng có thể lắp ráp MD trên Arduino không thua kém độ nhạy ban đầu (điều này đã được thực hiện, bởi vì bản gốc của mạch gốc được thu thập theo thứ tự 10 mảnh, vì vậy có tài liệu để so sánh). Mạch gốc:
Khi tôi mới bắt đầu làm việc với Arduino, tôi đã có cảm hứng đến mức tôi nghĩ rằng tôi có thể tìm và lắp ráp bất kỳ mạch Metal dò nào từ Internet trên Arduino mà tôi có thể dễ dàng tìm thấy trong bãi rác rộng lớn. Về nguyên tắc, hóa ra là như vậy, nhưng các mạch dựa trên bộ đếm tần số, không cho phép đạt được phạm vi thực sự tốt. Một số đồ chơi trẻ em và một bài kiểm tra bút + cố gắng kiếm tiền cho người mới bắt đầu. Bản gốc của MD này là một chiếc xe ngựa thực sự cho phép bạn tìm thấy các vật thể lớn ở khoảng cách 2m (xem sách Kolokolov-Shchedrin trên Google). Thống kê về MD biến đổi số. Tôi hy vọng cô ấy xuất hiện với sự hỗ trợ của người hâm mộ MD và Arduino. Chương trình này hoạt động với Arduino Uno và Arduino Pro Mini.
Hơn nữa, liên kết được trình bày về quá trình ra đời của MD này trên trang web của Iron Iron, kéo dài hơn một năm và thúc đẩy tác giả nghiên cứu về lập trình duin. Có lẽ bản phác thảo sẽ có vẻ tồi tệ với ai đó - tôi sẽ sẵn sàng chấp nhận CỐ ĐỊNH của bạn.
Hiện tại, có một bản phác thảo cho phép bạn điều chỉnh hàng rào độ nhạy (chân 7 nhân đôi +1 với hàng rào, chân 8 -1 cho hàng rào). .
Arduino về mini 5v, 16 MHz, ATmega168 và màn hình đã sử dụng những thứ này. Bên cạnh chiếc cân là bộ chuyển đổi Mini SD-
Như đã nói 1602 có giá 86 rúp, ProMini - 82 rúp. Nếu bạn muốn, bạn thường có thể chụp ATmega168 trần trụi, phát triển một bảng cho nó và điền bản phác thảo trực tiếp vào nó.Và vì vậy, ví dụ, tôi đã cài đặt mẹ-bố trên bảng MD bằng đầu nối. Bức ảnh cho thấy phích cắm 6 chân của Arduino, qua đó các bản phác thảo được đổ trực tiếp lên bảng.
Phác thảo-MD.Rx-Tx.ProMini.SrednjajaTochkaRegBar.ino
// Đầu vào tương tự A3 cho vôn kế
// Đầu vào tương tự A4 cho tín hiệu
// 6- kết luận của zook
// 9 - tần số đầu ra 31200 Hz
#incolee
LCD tinh thể lỏng (12, 11, 5, 4, 3, 2);
byte z1 [8] = {// biểu tượng pin
0b01100, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110};
int đếm được = 0; // biến để lưu trữ giá trị mức tỷ lệ
int voltag = 0; // biến để lưu giá trị điện áp
int noll = 0; // biến để lưu giá trị trung điểm
#define NUM_SAMPLES 10 // 10 mẫu tương tự để đọc trong 1 giây
int tổng = 0; // tổng số mẫu đã lấy
int mặt trời = 0; // giống nhau, nhưng chia cho 10
unsign char sample_count = 0; // số mẫu hiện tại với
điện áp phao = 0,0; // điện áp tính toán
const int nút1 = 7; // nút cộng rào cản
const int nút2 = 8; // nút rào cản
int i = 5; // rào cản
void setup () {
LCD.begin (16, 2); // hiển thị khởi tạo
lcd.setCoder (1, 0);
lcd.setCoder (10, 1);
lcd.print ("Rx-Tx");
độ trễ (3000);
LCD.clear ();
TCCR1A = TCCR1A & amp; 0xe0 | 2;
TCCR1B = TCCR1B & amp; 0xe0 | 0x09;
analogWrite (9, 126); // tại chân 10 PWM = 50% f = 31200Hz
lcd.createChar (1, z1);
}
void loop () {
nút intState1 = CAO; // Trạng thái của nút là một
nút intState2 = CAO; // Trạng thái hai nút
mẫu_count = 0; // đặt lại đường viền của số lượng bổ sung
tổng = 0; // đặt lại tổng của 10 bổ sung
while (sample_count & lt; NUM_SAMPLES) {
tổng + = analogRead (A4); // phép đo tiếp theo được thêm vào tổng
mẫu_count ++; // đơn vị được thêm vào số đo
sun = sum / 10;} // tìm giá trị trung bình từ 10 lần đo
noll = analogRead (A3) / 2; // công suất trung điểm
điện áp phao = bản đồ (analogRead (A3), 0,1023,0,1500) / 100,0;
// Vôn kế được xây dựng ở đầu vào A3
if (sun & gt; = noll + i) {Countleds = map (sun, noll + i, noll * 2 - 250, 9, 14);
// nếu kết quả nhận được nằm ở đoạn thứ 9-15 của thang đo
âm (6, đếm * 100);}
if (sun & lt; = noll - i) {Countleds = map (sun, 116, noll - i, 0, 7);
// nếu kết quả kết quả là phân đoạn 0-7 của thang đo
âm (6, đếm * 50); }
if (sun & lt; noll & amp; & amp; sun & gt; = noll - (i-1)) {Countleds = 7;
không có (6); } // islet of ZERO ảo (7 đoạn)
if (sun & gt; noll & amp; & amp; sun & lt; = noll + (i-1)) {Countleds = 8;
không có (6); } // đảo quy mô ZERO ảo (8 đoạn)
{lcd.setCoder (đếm, 0); // đặt con trỏ vào cột đếm, dòng 0
lcd.print ("\ xff"); // biểu tượng điền
lcd.setCoder (0, 1); // di chuyển đến 2 hàng, cột-0
lcd.print (char (1)); // Dấu hiệu biểu tượng pin
lcd.setCoder (1, 1); // di chuyển đến chỉ thị điện áp
LCD.print (điện áp); // điện áp
lcd.setCoder (7, 0); // cột thứ 8 hàng thứ 1
if (sun & lt; noll) {lcd.print ("{");} // in
lcd.setCoder (8, 0); // cột thứ 9 hàng thứ 1
if (sun & gt; noll) {lcd.print ("}");} // in
lcd.setCoder (7, 1);
lcd.print ("B =");
lcd.setCoder (9, 1); // 11 cột thứ 2
LCD.print (i); // rào cản
lcd.setCoder (13, 1); // cột thứ 13 hàng thứ 2
lcd.print (mặt trời); // in giá trị trung bình của giá trị ADC
độ trễ (100); // chờ
buttonState1 = digitalRead (button1); // Đọc nút 1 Trạng thái
buttonState2 = digitalRead (button2); // Đọc nút 2 trạng thái
if (buttonState1 == THẤP) {i = i + 1; trì hoãn (50);}
// Khi nhấn nút, rào cản tăng thêm 1. Trì hoãn 50
if (buttonState2 == THẤP) {i = i - 1; trì hoãn (50);}
// Khi nhấn nút, rào cản giảm đi 1. Trì hoãn 50
if (i & lt; 1) {i = 1;} // Ranh giới dưới của hàng rào
if (i & gt; 38) {i = 38;} // Ranh giới trên của hàng rào
LCD.clear ();
}
}
Tôi đã sử dụng xe hơi. Hai yếu tố cuối cùng của TL074 là không hoạt động. Nhưng trên mạch và bảng họ là. Bạn có thể muốn đưa họ đến tình trạng làm việc sau đó một chút. Tôi tin rằng tôi đã đạt được mục tiêu của mình. Các đơn vị hiển thị hoạt động tuyệt vời. Mọi thứ khác phụ thuộc vào MD.