Kolokolov-Shchedrin derin su planının geri dönüşümü Orijinal şemadan farklılıklar:
1. k561 .. çipi ve 32 kHz kuvars üzerinde NO kristal osilatör yoktur. 32 kHz sinyali Arduino Pro Mini'yi verir.
2. Birkaç 561 serisi mikro devrede de sesli bildirim devreleri yoktur - hedefleri de seslendirir Arduino (ve yazarın devresine kıyasla mükemmel sesler söylemeliyim).
3. tek kutuplu gerilim 12 v (kurşun-asit pil) tarafından desteklenmektedir.
4. Hassasiyeti düğmeleri ile ayarlayın. 0 ila 1023 arasındaki ADC ölçeği ile yanıt eşiği 1 ila 38 arasında ayarlanabilir (değer çizimde kolayca değiştirilebilir).
En önemlisi, bu makalede, orijinal olarak orijinalinden daha düşük olmayan Arduino'daki MD'leri bir araya getirmenin mümkün olduğunu göstermek istedim (bu işe yaradı, çünkü orijinal devrenin orijinalleri 10 parça sırasına göre toplandı, bu yüzden karşılaştırma için malzeme var). Orijinal devre:
Arduino ile çalışmaya ilk başladığımda, o kadar hevesliydim ki, Arduino'daki İnternet'ten herhangi bir Metal Dedektörü devresini bulabileceğimi ve monte edebileceğimi düşündüm ve büyük çöplükte kolayca bulabildim. Prensipte, bu şekilde ortaya çıktı, ancak devreler, gerçekten iyi bir aralığa ulaşmaya izin vermeyen bir frekans sayacına dayanıyordu. Bazı çocuk oyuncakları ve kalem testi + yeni başlayanlara para kazanmaya çalışır. Bu MD'nin orijinali, 2m mesafede büyük nesneler bulmanızı sağlayan gerçek bir çalışma atıdır (Google'daki Kolokolov-Shchedrin kitabına bakın). Dönüştürülen MD için istatistik yok. Umarım MD ve Arduino hayranlarının desteğiyle görünür. Program Arduino Uno ve Arduino Pro Mini ile çalıştı.
Bağlantıda ayrıca, bu MD'nin bir yıldan fazla süren ve yazarı programlama duayı çalışmaya iten Havya'nın web sitesinde doğum süreci ortaya konmuştur. Belki de kroki birine sefil görünecektir - DÜZELTME'nizi memnuniyetle kabul edeceğim.
Şu anda, duyarlılık bariyerini ayarlamanıza izin veren bir taslak vardır (pim 7 douins +1 bariyere, pim 8 -1 bariyere). .
Mini 5v, 16MHz, ATmega168 hakkında Arduino ve ekran bunları kullandı. Terazinin yanında Mini SD adaptörü
Daha önce de belirtildiği gibi 1602'nin 86 ruble, ProMini - 82 ruble. İsterseniz, çıplak bir ATmega168 bile alabilir, bunun için bir tahta geliştirebilir ve çizimi doğrudan içine doldurabilirsiniz.Örneğin, MD-kartına konektörü kullanarak anne-baba kurdum. Fotoğraf, çizimlerin doğrudan tahtaya döküldüğü Arduino'nun 6 pimli fişini göstermektedir.
Kroki-MD.Rx-Tx.ProMini.SrednjajaTochkaRegBar.ino
// Voltmetre için A3 analog giriş
// Sinyal için A4 analog giriş
// 6- Hayvanat bahçesinin sonucu
// 9 - çıkış frekansı 31200 Hz
#include
Likit Kristal lcd (12, 11, 5, 4, 3, 2);
bayt z1 [8] = {// pil simgesi
0b01100, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110};
int sayılır = 0; // ölçek seviyesi değerini saklamak için değişken
int voltag = 0; // voltaj değerini saklamak için değişken
int noll = 0; // orta nokta değerini saklamak için değişken
#define NUM_SAMPLES 10 // 10 analog örnek 1 saniyede okunacak
int toplamı = 0; // alınan örneklerin toplamı
int güneş = 0; // aynı, ancak bölü 10
unsigned char sample_count = 0; // ile geçerli örnek numarası
şamandıra gerilimi = 0.0; // hesaplanan voltaj
const int düğmesi1 = 7; // bariyer artı düğmesi
sabit int düğme2 = 8; // bariyer eksi düğmesi
int i = 5; // bariyer
void setup () {
lcd başlangıç (16, 2); // başlatmayı görüntüle
lcd.setİmleç (1, 0);
lcd.setİmleç (10, 1);
lcd.print ("Rx-Tx");
gecikme (3000);
lcd.clear ();
TCCR1A = TCCR1A & amp; 0xe0 | 2;
TCCR1B = TCCR1B & amp; 0xe0 | 0x09;
analogyaz (9, 126); // pin 10'da PWM =% 50 f = 31200Hz
lcd.createChar (1, z1);
}
void loop () {
int buttonState1 = YÜKSEK; // Düğmenin durumu birdir
int buttonState2 = YÜKSEK; // İki düğme durumu
örnek_sayısı = 0; // ekleme sayısının konturunu sıfırla
toplam = 0; // 10 eklemenin toplamını sıfırla
while (sample_count & lt; NUM_SAMPLES) {
sum + = analogOkuma (A4); // toplama bir sonraki ölçüm eklenir
sample_count ++; // birim ölçüm numarasına eklenir
sun = sum / 10;} // 10 ölçümden ortalama değeri bul
noll = analogOkuma (A3) / 2; // orta nokta gücü
şamandıra gerilimi = harita (analogOkuma (A3), 0,1023,0,1500) /100,0;
// A3 girişinde oluşturulan voltmetre
eğer (güneş> = noll + i) {sayılır = harita (güneş, noll + i, noll * 2 - 250, 9, 14);
// alınan sonuç ölçeğin 9-15. segmentindeyse
ton (6, sayılır * 100);}
eğer (sun noll & sun; = noll + (i-1)) {sayılır = 8;
noTone (6); } // sanal SIFIR ölçeği adası (8 segment)
{lcd.setCursor (sayılanlar, 0); // imleci sayılanlar sütununa ayarlayın, satır 0
lcd.print ("\ xff"); // dolu simge
lcd.setİmleç (0, 1); // 2 satıra git, sütun-0
lcd.print (karakter (1)); // Pil Simgesi Göstergesi
lcd.setİmleç (1, 1); // voltaj göstergesine geç
lcd.print (voltaj); // voltaj
lcd.setİmleç (7, 0); // 8. sütun 1. sıra
if (sun & n; noll) {lcd.print ("{");} // yazdır
lcd.setİmleç (8, 0); // 9. sütun 1. sıra
if (sun & gt; noll) {lcd.print ("}");} // yazdır
lcd.setİmleç (7, 1);
lcd.print ("B =");
lcd.setİmleç (9, 1); // 11 sütun 2. sıra
lcd.print (i); // bariyer
lcd.setİmleç (13, 1); // 13. sütun 2. sıra
lcd.print (güneş); // ADC değerinin ortalama değerini yazdır
gecikme (100); // bekle
buttonState1 = digitalRead (düğme1); // Okuma Düğmesi 1 Durumu
buttonState2 = digitalRead (düğme2); // Oku düğmesi 2 durumu
if (buttonState1 == DÜŞÜK) {i = i + 1; gecikme (50);}
// Düğmeye basıldığında, bariyer 1 büyür. Gecikme 50
if (buttonState2 == DÜŞÜK) {i = i - 1; gecikme (50);}
// Düğmeye basıldığında, bariyer 1 azalır. Gecikme 50
if (i <1) {i = 1;} // Bariyerin alt sınırı
if (i & gt; 38) {i = 38;} // Bariyerin üst sınırı
lcd.clear ();
}
}
Arabayı kullanmadım, TL074'ün son iki unsuru boş kaldı. Ancak devre ve kart üzerinde. Biraz sonra çalışma koşullarına getirmek isteyebilirsiniz. Hedefime ulaştığımı düşünüyorum. Ekran ünitesi harika çalışıyor. Diğer her şey MD'ye bağlıdır.