Gjenvinning av dypvannsordningen Kolokolov-Shchedrin. Forskjeller fra det opprinnelige opplegget:
1. Det er INGEN krystalloscillator på k561 .. -brikken og 32 kHz kvarts. 32 kHz signalet gir Arduino Pro Mini.
2. Lydvarslingskretser på flere mikrokretser i 561-serien er heller ikke til stede, Arduino gir også uttrykk for målet (Og jeg må si, det er utmerket stemmer, sammenlignet med forfatterens skjema).
3. Drevet av unipolar spenning 12v (bly-syre batteri).
4. Juster følsomheten med knappene. Med ADC-skalaen fra 0 til 1023 er responsgrensen justerbar fra 1 til 38 (verdien kan enkelt endres i skissen).
Viktigst av alt, ønsket jeg å vise i denne artikkelen at det er mulig å sette sammen MD-er på Arduino som ikke er dårligere enn originalen i følsomhet (dette fungerte, fordi originalene til den opprinnelige kretsen ble samlet i størrelsesorden 10 stykker, så det er materiale til sammenligning). Opprinnelig krets:
Da jeg først begynte å jobbe med Arduino, var jeg så begeistret at jeg trodde jeg kunne finne og sette sammen alle metalldetektorkretser fra Internett på Arduino som jeg lett kunne finne i den enorme søppeldyngden. I prinsippet viste det seg slik, men kretsene var basert på en frekvensdisk, som ikke tillot å oppnå et virkelig bra område. Noen barneleker og en test av pennen + forsøk på å tjene penger på nybegynnere. Originalen til denne MD er en ekte arbeidshest som lar deg finne store gjenstander i en avstand på 2 m (se Kolokolov-Shchedrin-boken på Google). Det er ingen statistikk om den transformerte md. Jeg håper hun vises med støtte fra fans av MD og Arduino. Opplegget arbeidet med Arduino Uno og Arduino Pro Mini.
Videre på lenken er lagt ut prosessen med fødselen til denne MD på nettstedet til loddebolt, som varte i mer enn ett år og presset forfatteren til å studere programmeringsduin. Kanskje vil skissen virke elendig for noen - jeg vil gjerne akseptere dine FIXES.
For øyeblikket er det en skisse som lar deg justere følsomhetsbarrieren (pinne 7 tviler +1 til barrieren, pinne 8 -1 til barrieren). .
Arduino om mini 5v, 16MHz, ATmega168 og skjermen brukte disse. Ved siden av skalaen er Mini SD-adapter
Som allerede sagt 1602 koster 86 rubler, ProMini - 82 rubler. Hvis du ønsker det, kan du vanligvis ta en naken ATmega168, utvikle et brett for det og fylle skissen direkte inn i den.Og så for eksempel installerte jeg mamma-pappa på MD-brettet ved hjelp av kontakten. Bildet viser Arduinos 6-pinners plugg, gjennom hvilken skisser ble hellet direkte på brettet.
Skisse-MD.Rx-Tx.ProMini.SrednjajaTochkaRegBar.ino
// A3 analog inngang for voltmeter
// A4 analog inngang for signal
// 6- konklusjonen av dyrehagen
// 9 - utgangsfrekvens 31200 Hz
#include
Liquid Crystal lcd (12, 11, 5, 4, 3, 2);
byte z1 [8] = {// batteriikon
0b01100, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110};
int countleds = 0; // variabel for å lagre skalaenivåverdien
int voltag = 0; // variabel for å lagre spenningsverdien
int noll = 0; // variabel for å lagre midtpunktverdien
#definer NUM_SAMPLES 10 // 10 analoge prøver å lese på 1 sekund
int sum = 0; // summen av prøvene som er tatt
int sol = 0; // samme, men delt med 10
usignert røye sample_count = 0; // nåværende prøvenummer med
float spenning = 0,0; // beregnet spenning
const int-knapp1 = 7; // barriere pluss-knapp
const int-knapp2 = 8; // barriere-minus-knapp
int i = 5; // barriere
ugyldig oppsett () {
lcd.begin (16, 2); // vis initialisering
lcd.set Markør (1, 0);
lcd.set markør (10, 1);
lcd.print ("Rx-Tx");
forsinkelse (3000);
lcd.clear ();
TCCR1A = TCCR1A & amp; 0xe0 | 2;
TCCR1B = TCCR1B & amp; 0xe0 | 0x09;
analogWrite (9, 126); // ved pinne 10 PWM = 50% f = 31200Hz
lcd.createChar (1, z1);
}
void loop () {
int-knappState1 = HØY; // Knappens tilstand er én
int-knappState2 = HØY; // To-knappstilstand
sample_count = 0; // tilbakestille konturen til antall tillegg
sum = 0; // tilbakestille summen av 10 tillegg
mens (sample_count & lt; NUM_SAMPLES) {
sum + = analog Les (A4); // neste måling legges til summen
sample_count ++; // enheten legges til måleenummeret
sun = sum / 10;} // Finn gjennomsnittsverdien fra 10 målinger
noll = analog Les (A3) / 2; // midtpunktkraft
float spenning = kart (analogRead (A3), 0,1023,0,1500) /100,0;
// Voltmeter bygget ved inngang A3
if (sol & gt; = noll + i) {countleds = kart (sol, noll + i, noll * 2 - 250, 9, 14);
// hvis det mottatte resultatet er på det 9.-15. segmentet av skalaen
tone (6, tellede * 100);}
if (sol & lt; = noll - i) {countleds = kart (sol, 116, noll - i, 0, 7);
// hvis det resulterende resultatet er 0-7 segment av skalaen
tone (6, tellede * 50); }
if (sun & lt; noll & amp; & amp; sun & gt; = noll - (i-1)) {countleds = 7;
noTone (6); } // holmen av virtuell NULL (7 segment)
if (sun & gt; noll & amp; & amp; sun & lt; = noll + (i-1)) {countleds = 8;
noTone (6); } // øy av virtuell NUL-skala (8 segment)
{lcd.setCursor (countleds, 0); // sett markøren til talt kolonne, linje 0
lcd.print ("\ xff"); // fylt ikon
lcd.set Markør (0, 1); // gå til 2 rad, kolonne-0
lcd.print (char (1)); // Indikasjon av batteriikon
lcd.set markør (1, 1); // gå til spenningsindikasjon
lcd.print (spenning); // spenning
lcd.set Markør (7, 0); // 8. kolonne 1. rad
if (sun & lt; noll) {lcd.print ("{");} // print
lcd.set Markør (8, 0); // 9. kolonne 1. rad
if (sol & gt; noll) {lcd.print ("}");} // skriv ut
lcd.set markør (7, 1);
lcd.print ("B =");
lcd.set Markør (9, 1); // 11 kolonne 2. rad
lcd.print (i); // barriere
lcd.set markør (13, 1); // 13. kolonne 2. rad
lcd.print (sol); // skriv ut gjennomsnittsverdien på ADC-verdien
forsinkelse (100); // vent
buttonState1 = digitalRead (knapp1); // Les knapp 1-status
buttonState2 = digitalRead (knapp2); // Les knappen 2-tilstand
if (buttonState1 == LOW) {i = i + 1; forsinkelse (50);}
// Når du trykker på knappen, vokser barrieren med 1. Forsinkelse 50
if (buttonState2 == LAV) {i = i - 1; forsinkelse (50);}
// Når du trykker på knappen, reduseres barrieren med 1. Forsinkelse 50
if (i & lt; 1) {i = 1;} // Nedre grense for barrieren
if (i & gt; 38) {i = 38;} // Barrens øvre grense
lcd.clear ();
}
}
Jeg brukte ikke bilen. De to siste elementene i TL074 ble inaktive. Men på kretsen og brettet er de. Det kan være lurt å ta dem i arbeidslivet litt senere. Jeg tror at jeg har nådd målet mitt. Displayenheten fungerer fantastisk. Alt annet avhenger av MD.