Recycling van het Kolokolov-Shchedrin-diepwatersysteem. Verschillen met het oorspronkelijke schema:
1. Er zit GEEN kristaloscillator op de k561 .. chip en 32 kHz quartz. Het 32 kHz signaal geeft de Arduino Pro Mini.
2. Geluidsmeldingscircuits op verschillende microcircuits uit de 561-serie zijn ook niet aanwezig, Arduino spreekt ook het doel uit (en ik moet zeggen, het is een uitstekende stem, in vergelijking met het schema van de auteur).
3. Aangedreven door unipolaire spanning 12v (lood-zuur batterij).
4. Pas de gevoeligheid aan met de knoppen. Met de ADC-schaal van 0 tot 1023 is de responsdrempel instelbaar van 1 tot 38 (de waarde kan eenvoudig in de schets worden gewijzigd).
Het belangrijkste was dat ik in dit artikel wilde laten zien dat het mogelijk is om MD's op Arduino te monteren die qua gevoeligheid niet onderdoen voor het origineel (dit is gelukt, omdat de originelen van het originele circuit in de orde van 10 stuks zijn verzameld, dus er is materiaal voor vergelijking). Origineel circuit:
Toen ik voor het eerst met Arduino begon te werken, was ik zo enthousiast dat ik dacht dat ik alle metaaldetectorcircuits van internet op Arduino kon vinden en monteren die ik gemakkelijk kon vinden in de enorme vuilnisbelt. In principe is het zo gegaan, maar de circuits waren gebaseerd op een frequentieteller, waardoor een echt goed bereik niet kon worden bereikt. Wat kinderspeelgoed en een test van de pen + proberen geld te verdienen aan beginners. Het origineel van deze MD is een echt werkpaard waarmee je grote objecten kunt vinden op een afstand van 2 meter (zie het Kolokolov-Shchedrin boek in Google). Er zijn geen statistieken over de getransformeerde md. Ik hoop dat ze verschijnt met de steun van fans van MD en Arduino. Het schema werkte met Arduino Uno en Arduino Pro Mini.
Verder op de link staat het proces van de geboorte van deze MD op de website van de soldeerbout, die meer dan een jaar duurde en de auteur ertoe aanzette programmeertuin te studeren. Misschien lijkt de schets iemand ellendig - ik zal je FIXES graag accepteren.
Op dit moment is er een schets waarmee u de gevoeligheidsbarrière kunt aanpassen (pin 7 douins +1 op de barrière, pin 8 -1 op de barrière). .
Arduino over mini 5v, 16MHz, ATmega168 en het display gebruikte deze. Naast de weegschaal staat de Mini SD-adapter
Zoals gezegd kost 1602 86 roebel, ProMini - 82 roebel. Als je wilt, kun je over het algemeen een naakte ATmega168 nemen, er een bord voor ontwikkelen en de schets er direct in vullen.En dus installeerde ik bijvoorbeeld mama-papa op het MD-bord met behulp van de connector. De foto toont de 6-pins plug van Arduino, waardoor schetsen direct op het bord werden gegoten.
Sketch-MD.Rx-Tx.ProMini.SrednjajaTochkaRegBar.ino
// A3 analoge ingang voor voltmeter
// A4 analoge ingang voor signaal
// 6- conclusie van de zook
// 9 - uitgangsfrequentie 31200 Hz
#include
LCD-scherm met vloeibare kristallen (12, 11, 5, 4, 3, 2);
byte z1 [8] = {// batterijpictogram
0b01100, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110};
int geteld = 0; // variabele om de schaalniveauwaarde op te slaan
int voltag = 0; // variabele om de spanningswaarde op te slaan
int noll = 0; // variabele om de middelpuntwaarde op te slaan
#define NUM_SAMPLES 10 // 10 analoge samples om in 1 seconde te lezen
int sum = 0; // som van de genomen monsters
int zon = 0; // hetzelfde, maar gedeeld door 10
unsigned char sample_count = 0; // huidig monsternummer met
drijfspanning = 0,0; // berekende spanning
const int button1 = 7; // barrière plus-knop
const int button2 = 8; // barrière-min knop
int i = 5; // barrière
ongeldige setup () {
lcd.begin (16, 2); // initialisatie weergeven
lcd.setCursor (1, 0);
lcd.setCursor (10, 1);
lcd.print ("Rx-Tx");
vertraging (3000);
lcd.clear ();
TCCR1A = TCCR1A & amp; 0xe0 | 2;
TCCR1B = TCCR1B & amp; 0xe0 | 0x09;
analogWrite (9, 126); // op pin 10 PWM = 50% f = 31200Hz
lcd.createChar (1, z1);
}
leegte lus () {
int buttonState1 = HOOG; // De status van de knop is één
int buttonState2 = HOOG; // Twee knopstatus
sample_count = 0; // reset de contour van het aantal toevoegingen
som = 0; // reset de som van 10 toevoegingen
while (sample_count & lt; NUM_SAMPLES) {
som + = analogRead (A4); // de volgende meting wordt bij de som opgeteld
sample_count ++; // de eenheid wordt toegevoegd aan het meetnummer
sun = sum / 10;} // vind de gemiddelde waarde van 10 metingen
noll = analogRead (A3) / 2; // middelpunt
floatspanning = kaart (analogRead (A3), 0,1023,0,1500) / 100,0;
// Voltmeter gebouwd op ingang A3
if (sun & gt; = noll + i) {countleds = map (zon, noll + i, noll * 2 - 250, 9, 14);
// als het ontvangen resultaat op het 9-15e segment van de schaal ligt
toon (6, telt * 100);}
if (sun & lt; = noll - i) {countleds = map (zon, 116, noll - i, 0, 7);
// als het resulterende resultaat 0-7 segment van de schaal is
toon (6, geteld * 50); }
if (sun & lt; noll & amp; sun & gt; = noll - (i-1)) {countleds = 7;
noTone (6); } // eilandje van virtuele ZERO (7 segment)
if (sun & gt; noll & amp; & sun & lt; = noll + (i-1)) {countleds = 8;
noTone (6); } // eiland van virtuele nulschaal (8 segment)
{lcd.setCursor (countleds, 0); // zet de cursor op de kolom met getallen, regel 0
lcd.print ("\ xff"); // gevuld pictogram
lcd.setCursor (0, 1); // ga naar 2 rijen, kolom-0
lcd.print (char (1)); // Indicatie batterijpictogram
lcd.setCursor (1, 1); // ga naar spanningsindicatie
lcd.print (spanning); // spanning
lcd.setCursor (7, 0); // 8e kolom 1e rij
if (sun & lt; noll) {lcd.print ("{");} // print
lcd.setCursor (8, 0); // 9e kolom 1e rij
if (sun & gt; noll) {lcd.print ("}");} // print
lcd.setCursor (7, 1);
lcd.print ("B =");
lcd.setCursor (9, 1); // 11 kolom 2e rij
lcd.print (i); // barrière
lcd.setCursor (13, 1); // 13e kolom 2e rij
lcd.print (zon); // print de gemiddelde waarde van de ADC-waarde
vertraging (100); // wacht
buttonState1 = digitalRead (knop1); // Lees knop 1 Status
buttonState2 = digitalRead (button2); // Lees knop 2 staat
if (buttonState1 == LOW) {i = i + 1; vertraging (50);}
// Als de knop wordt ingedrukt, groeit de barrière met 1. Vertraging 50
if (buttonState2 == LOW) {i = i - 1; vertraging (50);}
// Als de knop wordt ingedrukt, neemt de barrière met 1 af. Vertraging 50
if (i & lt; 1) {i = 1;} // Ondergrens van de barrière
if (i & gt; 38) {i = 38;} // De bovengrens van de barrière
lcd.clear ();
}
}
Ik heb de auto niet gebruikt. De laatste twee elementen van de TL074 bleven inactief. Maar op het circuit en het bord zijn ze. Misschien wilt u ze iets later in werkende staat brengen. Ik denk dat ik mijn doel heb bereikt. De display-unit werkt wonderwel. Al het andere hangt af van de MD.