Reciclarea schemei de ape profunde Kolokolov-Shchedrin Diferențe față de schema inițială:
1. Nu există oscilator de cristal pe cipul k561 .. cip și cuarț de 32 kHz. Semnalul de 32 kHz oferă Arduino Pro Mini.
2. Circuitele de notificare sonoră pe mai multe microcircuite din seria 561 sunt, de asemenea, absente - vocile sunt și obiectivele, Arduino (și trebuie să spun, voci excelente, în comparație cu circuitul autorului).
3. Alimentat cu tensiune unipolară 12v (baterie plumb-acid).
4. Reglați sensibilitatea cu ajutorul butoanelor. Cu scara ADC de la 0 la 1023, pragul de răspuns este reglabil de la 1 la 38 (valoarea poate fi ușor modificată în schiță).
Cel mai important, am vrut să arăt în acest articol că este posibil să asamblați MD-uri pe Arduino nu inferioare originalului în sensibilitate (acest lucru a rezultat, deoarece originalele circuitului original au fost colectate de ordinul a 10 bucăți, deci există material pentru comparație). Circuitul original:
Când am început să lucrez cu Arduino, am fost atât de entuziasmat încât am crezut că pot găsi și asambla orice circuit de detectoare de metale de pe Internet pe Arduino, încât puteam găsi cu ușurință în vasta groapă de gunoi. În principiu, s-a dovedit astfel, dar circuitele se bazau pe un contor de frecvență, ceea ce nu permitea obținerea unui interval cu adevărat bun. Câteva jucării pentru copii și un test al pixului + încearcă să câștige bani pentru începători. Originalul acestui MD este un adevărat pas de lucru care vă permite să găsiți obiecte mari la o distanță de 2m (consultați cartea Kolokolov-Shchedrin în Google). Nu există statistici cu privire la md transformat. Sper că apare cu sprijinul fanilor MD și Arduino. Schema a funcționat cu Arduino Uno și Arduino Pro Mini.
Mai departe, linkul este prezentat procesul nașterii acestui MD pe site-ul de fier de lipit, care a durat mai mult de un an și a împins autorul să studieze programul duin. Poate că schița va părea nenorocită cu cineva - Voi accepta cu plăcere FIXURILE tale.
În momentul de față, există o schiță care vă permite să reglați bariera de sensibilitate (pinul 7 douins +1 la barieră, pinul 8 -1 la barieră). .
Arduino despre mini 5v, 16MHz, ATmega168 și display-ul le-a folosit. Alături de scară se află adaptorul Mini SD
După cum sa spus deja, 1602 costă 86 de ruble, ProMini - 82 de ruble. Dacă doriți, puteți lua, în general, un ATmega168 gol, dezvolta o placă pentru acesta și completați schița direct în ea.Și, de exemplu, am instalat mama-tată pe placa MD folosind conectorul. Fotografia prezintă dopul cu 6 pini al lui Arduino, prin care s-au turnat schițe direct pe tablă.
Schiță-MD.Rx-Tx.ProMini.SrednjajaTochkaRegBar.ino
// Intrare analogică A3 pentru voltmetru
// Intrare analogică A4 pentru semnal
// 6- concluzia zook-ului
// 9 - frecvență de ieșire 31200 Hz
#include
Cristal lichid lcd (12, 11, 5, 4, 3, 2);
byte z1 [8] = {// pictograma bateriei
0b01100, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110};
int countleds = 0; // variabilă pentru a stoca valoarea nivelului scării
int voltag = 0; // variabilă pentru a stoca valoarea tensiunii
int noll = 0; // variabilă pentru a stoca valoarea punctului mediu
#define NUM_SAMPLES 10 // 10 probe analogice pentru citit în 1 secundă
suma sumă = 0; // suma probelor prelevate
int soare = 0; // același, dar împărțit la 10
unsigned char sample_count = 0; // numărul curent al eșantionului cu
tensiune float = 0,0; // tensiunea calculată
butonul const int1 = 7; // butonul de barieră plus
butonul const int2 = 8; // buton barieră-minus
int i = 5; // barieră
void setup () {
lcd.begin (16, 2); // inițializare afișare
lcd.setCursor (1, 0);
lcd.setCursor (10, 1);
lcd.print ("Rx-Tx");
întârziere (3000);
lcd.clear ();
TCCR1A = TCCR1A & amp; 0xe0 | 2;
TCCR1B = TCCR1B & amp; 0xe0 | 0x09;
analogWrite (9, 126); // la pinul 10 PWM = 50% f = 31200Hz
lcd.createChar (1, z1);
}
void loop () {
buton intState1 = HIGH; // Starea butonului este una
buton intState2 = HIGH; // Stare cu două butoane
sample_count = 0; // resetați conturul numărului de completări
suma = 0; // resetați suma de 10 completări
while (sample_count & lt; NUM_SAMPLES) {
suma + = analogRead (A4); // următoarea măsurare este adăugată la sumă
sample_count ++; // unitatea este adăugată la numărul de măsurare
sun = sumă / 10;} // găsiți valoarea medie din 10 măsurători
noll = analogRead (A3) / 2; // puterea punctului mijlociu
float voltage = hartă (analogRead (A3), 0,1023,0,1500) / 100,0;
// Voltmetru construit la intrarea A3
if (sun & gt; = noll + i) {countleds = hartă (soare, noll + i, noll * 2 - 250, 9, 14);
// dacă rezultatul primit se află pe segmentul 9-15 al scării
ton (6, numărătoare * 100);}
if (sun & lt; = noll - i) {countleds = hartă (soare, 116, noll - i, 0, 7);
// dacă rezultatul rezultat este 0-7 segment al scării
ton (6, numărate * 50); }
if (sun & lt; noll & amp; sun & gt; = noll - (i-1)) {countleds = 7;
noTone (6); } // insula virtual ZERO (7 segmente)
if (sun & gt; noll & amp; sun & lt; = noll + (i-1)) {countleds = 8;
noTone (6); } // insula scării virtuale ZERO (8 segmente)
{lcd.setCursor (numărate, 0); // setați cursorul la coloana numărată, linia 0
lcd.print ("\ xff"); // pictograma umplută
lcd.setCursor (0, 1); // treceți la 2 rânduri, coloana-0
lcd.print (char (1)); // Indicația pictogramei bateriei
lcd.setCursor (1, 1); // treceți la indicarea tensiunii
lcd.print (tensiune); // tensiune
lcd.setCursor (7, 0); // a 8-a coloană primul rând
if (sun & lt; noll) {lcd.print ("{");} // print
lcd.setCursor (8, 0); // a 9-a coloană primul rând
if (sun & gt; noll) {lcd.print ("}");} // print
lcd.setCursor (7, 1);
lcd.print ("B =");
lcd.setCursor (9, 1); // 11 coloana al doilea rând
lcd.print (i); // barieră
lcd.setCursor (13, 1); // 13a coloană al doilea rând
lcd.print (soare); // imprimați valoarea medie a valorii ADC
întârziere (100); // așteptați
buttonState1 = digitalRead (buton1); // Citiți starea butonului 1
buttonState2 = digitalRead (buton2); // Citiți butonul 2 de stare
if (butonState1 == LOW) {i = i + 1; întârziere (50);}
// Când este apăsat butonul, bariera crește cu 1. Întârziere 50
if (butonState2 == LOW) {i = i - 1; întârziere (50);}
// Când este apăsat butonul, bariera scade cu 1. Întârzierea 50
if (i & lt; 1) {i = 1;} // Limita inferioară a barierei
if (i & gt; 38) {i = 38;} // Limita superioară a barierei
lcd.clear ();
}
}
Nu am folosit mașina, ultimele două elemente ale TL074 au fost lăsate la ralanti. Dar pe circuit și bord sunt. Poate doriți să le aduceți în condiții de lucru puțin mai târziu. Cred că mi-am atins obiectivul. Unitatea de afișare funcționează de minune. Orice altceva depinde de MD.