Recykling programu głębinowego Kolokolov-Shchedrin Różnice w stosunku do pierwotnego schematu:
1. Na chipie k561 .. i kwarcu 32 kHz NIE ma oscylatora krystalicznego. Sygnał 32 kHz daje Arduino Pro Mini.
2. Obwody powiadomień dźwiękowych na kilku mikroukładach serii 561 również nie są obecne, Arduino również wyraża cel (i muszę powiedzieć, że jest to doskonały głos w porównaniu ze schematem autora).
3. Zasilany napięciem jednobiegunowym 12v (akumulator kwasowo-ołowiowy).
4. Ustaw czułość za pomocą przycisków. W skali ADC od 0 do 1023 próg odpowiedzi można regulować w zakresie od 1 do 38 (wartość można łatwo zmienić na szkicu).
Co najważniejsze, chciałem pokazać w tym artykule, że na Arduino można montować MD nie gorsze od oryginału pod względem czułości (zadziałało, ponieważ oryginały oryginalnego obwodu zostały zebrane rzędu 10 sztuk, więc jest materiał do porównania). Oryginalny obwód:
Kiedy po raz pierwszy zacząłem pracować z Arduino, byłem tak entuzjastycznie nastawiony, że pomyślałem, że mogę znaleźć i zmontować dowolne obwody wykrywacza metalu z Internetu na Arduino, które z łatwością mogę znaleźć na ogromnym wysypisku śmieci. Zasadniczo okazało się, że tak, ale schematy oparte były na mierniku częstotliwości, co nie pozwalało na osiągnięcie naprawdę dobrego zasięgu. Niektóre zabawki dla dzieci i test pióra + próby zarabiania pieniędzy dla początkujących. Oryginał tego MD to prawdziwy koń roboczy, który pozwala znaleźć duże obiekty w odległości 2 m (patrz książka Kolokolov-Shchedrin w Google). Brak statystyk dotyczących przekształconego md. Mam nadzieję, że pojawi się przy wsparciu fanów MD i Arduino. Program współpracował z Arduino Uno i Arduino Pro Mini.
Dalej na link znajduje się proces narodzin tej MD na stronie internetowej Lutownicy, która trwała ponad rok i popchnęła autora do studiowania duetu programistycznego. Być może szkic wyda się komuś nieszczęśliwy - chętnie zaakceptuję Wasze POPRAWKI.
W tej chwili istnieje szkic, który pozwala dostosować barierę czułości (pin 7 douins +1 do bariery, pin 8 -1 do bariery). .
Wykorzystano je w Arduino o mini 5v, 16MHz, ATmega168. Obok wagi znajduje się adapter Mini SD
Jak już wspomniano 1602 kosztuje 86 rubli, ProMini - 82 ruble. Jeśli chcesz, możesz ogólnie wziąć nagą ATmega168, opracować dla niej planszę i wypełnić bezpośrednio szkic.I tak na przykład zainstalowałem mamę-tatę na płycie MD za pomocą złącza. Zdjęcie pokazuje 6-pinową wtyczkę Arduino, przez którą szkice wylano bezpośrednio na płytkę.
Sketch-MD.Rx-Tx.ProMini.SrednjajaTochkaRegBar.ino
// Wejście analogowe A3 dla woltomierza
// Wejście analogowe A4 dla sygnału
// 6- zakończenie zook
// 9 - częstotliwość wyjściowa 31200 Hz
#include
LCD ciekłokrystaliczny (12, 11, 5, 4, 3, 2);
bajt z1 [8] = {// ikona baterii
0b01100, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110};
int countleds = 0; // zmienna do przechowywania wartości poziomu skali
int voltag = 0; // zmienna do przechowywania wartości napięcia
int noll = 0; // zmienna do przechowywania wartości punktu środkowego
# zdefiniuj NUM_SAMPLES 10 // 10 próbek analogowych do odczytania za 1 sekundę
int suma = 0; // suma pobranych próbek
int sun = 0; // takie same, ale podzielone przez 10
unsigned char sample_count = 0; // bieżący numer próbki z
napięcie zmiennoprzecinkowe = 0,0; // obliczone napięcie
const int button1 = 7; // bariera plus przycisk
const int button2 = 8; // przycisk minus bariera
int i = 5; // bariera
void setup () {
lcd.begin (16, 2); // wyświetlanie inicjalizacji
lcd.setCursor (1, 0);
lcd.setCursor (10, 1);
lcd.print („Rx-Tx”);
opóźnienie (3000);
lcd.clear ();
TCCR1A = TCCR1A i amp; 0xe0 | 2;
TCCR1B = TCCR1B & amp; 0xe0 | 0x09;
analogWrite (9, 126); // na pinie 10 PWM = 50% f = 31200Hz
lcd.createChar (1, z1);
}
void loop () {
int button Stan 1 = WYSOKI; // Stan przycisku to jeden
int buttonState2 = WYSOKI; // Stan dwóch przycisków
sample_count = 0; // zresetować kontur liczby dodatków
suma = 0; // zresetuj sumę 10 dodatków
podczas gdy (sample_count & lt; NUM_SAMPLES) {
suma + = odczyt analogowy (A4); // następny pomiar jest dodawany do sumy
sample_count ++; // jednostka jest dodawana do numeru pomiaru
sun = sum / 10;} // znajdź średnią wartość z 10 pomiarów
noll = analogowy odczyt (A3) / 2; // moc punktu środkowego
napięcie zmiennoprzecinkowe = mapa (odczyt analogowy (A3), 0,1023,0,1500) / 100,0;
// Woltomierz zbudowany na wejściu A3
if (słońce & gt; = noll + i) {countleds = mapa (słońce, noll + i, noll * 2 - 250, 9, 14);
// jeśli otrzymany wynik znajduje się w 9-15 odcinku skali
tone (6, countleds * 100);}
if (sun & lt; noll - i) {countleds = map (sun, 116, noll - i, 0, 7);
// jeśli wynikiem jest 0-7 segment skali
ton (6, Countleds * 50); }
if (sun & noll & amp; sun = = noll - (i-1)) {countleds = 7;
noTone (6); } // wysepka wirtualnej ZERO (7 segmentów)
if (sun & noll & amp; amp & sun = noll + (i-1)) {countleds = 8;
noTone (6); } // wyspa wirtualnej skali ZERO (8 segmentów)
{lcd.setCursor (Countleds, 0); // ustaw kursor na kolumnie Countleds, linii 0
lcd.print („\ xff”); // ikona wypełnienia
lcd.setCursor (0, 1); // przejście do 2 wiersza, kolumna-0
lcd.print (char (1)); // Wskazanie ikony baterii
lcd.setCursor (1, 1); // przejście do wskazania napięcia
druk lcd (napięcie); // napięcie
lcd.setCursor (7, 0); // 8. kolumna 1. rząd
if (sun & lt; noll) {lcd.print ("{");} // print
lcd.setCursor (8, 0); // 9. kolumna 1. rząd
if (sun & gt; noll) {lcd.print ("}");} // print
lcd.setCursor (7, 1);
lcd.print („B =”);
lcd.setCursor (9, 1); // 11 kolumna 2. rząd
lcd.print (i); // bariera
lcd.setCursor (13, 1); // 13 kolumna 2. rząd
lcd.print (słońce); // wydrukuj średnią wartość wartości ADC
opóźnienie (100); // czekaj
buttonState1 = digitalRead (button1); // Czytaj stan przycisku 1
buttonState2 = digitalRead (button2); // Odczyt stanu przycisku 2
if (buttonState1 == LOW) {i = i + 1; opóźnienie (50);}
// Po naciśnięciu przycisku bariera rośnie o 1. Opóźnienie 50
if (buttonState2 == LOW) {i = i - 1; opóźnienie (50);}
// Po naciśnięciu przycisku bariera zmniejsza się o 1. Opóźnienie 50
if (i <1) {i = 1;} // Dolna granica bariery
if (i> 38) {i = 38;} // Górna granica bariery
lcd.clear ();
}
}
Nie korzystałem z samochodu. Dwa ostatnie elementy TL074 pozostały bezczynne. Ale są na obwodzie i płycie. Być może będziesz chciał przywrócić je do stanu roboczego nieco później. Wierzę, że osiągnąłem swój cel. Wyświetlacz działa cudownie. Wszystko inne zależy od MD.