Fórum témák
» Több friss téma |
Fórum » Házilag építhető fémkereső
Több mint három hetembe telt mire jittermentesen összehoztam a dacot és az adc-t, hiába vannak adatlapok, a kínai jóemberek mindent is máshogyan csinálnak.
Annyi hibába belefutottam hogy totál minimalista kapcsolást hoztam össze amíg írom a kódot, mert nem találtam a hibát. Az eredmény viszont meglepő, esp32s3 n16r8 a főegység, van egy gmt-130 240x240 pixeles színes lcd, egy enkóder, egy pcm1808m 24 bites adc, egy max98357a mono 5 wattos dac erősítő, és egy ina118u az rx-nek 100-150x erősítéssel, egy kapcsoló a gb-nek és egy féltáp ic, kb. ennyi. Per pillanat usb-ről megy ami nem az igazi, az 5v egy dc-dc tápról, másfél méterre a fejtől van egy jó nagy fém satupad, illetve egy méterre egy pc, ettől messzebbre nem tudtam vinni sajnos. Az elve röviden annyi hogy a bejövő jelet pontról pontra megszorozzuk egy szinusz (I) és egy 90°-kal eltolt koszinusz(Q) referenciával, majd összegezzük, ez kinullázza a zajt, és két stabil számot adami mag és vdi, van egy 257 pontos lineárisan interpolált szinusz tábla, ez adja dacnak a szinuszt, van egy szoftveres dc blokkoló szűrő illetve gb ami gombnyomásra nem kioltja a jelet vagy kivonja hanem egyszerűen figyelmen kívül hagyja, illetve van egy szoftveres pár soros kálmán szűrő ami a vdi ugrálás miatt kellett. Per pillanat első tesztnél kis érme 40 centi levegőben úgy hogy egyből erős stabil hangot ad, bármekkora vasat elutasít és semmi cicergés nincsen.
Szia!
Örömmel olvasom a sikereidet. Legalább valaki dolgozott is a gépén. Én most nem nagyon értem rá. Illetve egy másik problémával foglalkozom, ami eddig elkerülte a figyelmemet. Mégpedig a fejkábel és annak helyes illesztése. Ez a dolog egy szinuszos gépnél nem gond. De egy négyszög jeles gépnél, aminél gyors felfutású négyszög jelek vannak, okoz egy-két problémát. A múltkor olvastam itt a fórumon, talán Pucuka írásaiban, hogy miként vizsgálták az érpárok hibáit. Szakadást, vagy rövidzárat. Egy gyors felfutású négyszögjelet adtak az érpár egyik végére. A hibahelyre fénysebességgel ment a jel, majd visszajött és a visszaverődött jel polaritásából tudták, hogy szakadás, vagy zárlat. Na, én most itt végzek tapasztalásokat. Meredek négyszögeknél ez a kábel már tápvonal, amit illeszteni kell, hogy ne legyenek reflexiók, amik mindenbe bezavarnak. Persze ekkor kiderült, hogy annyira értek a tápvonalakhoz, mint a kútásáshoz és a harangöntéshez. Tehát most vissza az alapokhoz és kicsit kupálódok.
Azt majd én is ki akarom próbálni hogy mi van akkor ha négyszöggel hajtom meg a tekercset, van is itthon ir2104s félhíd meghajtóm hozzá meg pár fet, az órajel már megvan.
Nem tudsz véletlenül megbízható vdi értékeket fémekre? Sok helyen néztem de mindenhol mást írnak.
Ebben a kérdésben teljesen a saját értékrendszeremmel dolgozok.
De majd, ha földben lesz az érme, az elég rendesen megváltoztatja a mérést. Elég annyit tenned, hogy levegő tesztnél az érmét egy fél tégla mögé rejted és úgy tesztelsz. Idézet: Tipikusan 50Ω forrásimpedancia, 50Ω kábelimpedancia (koax.), 50Ω lezáróimpedancia lenne a járható út. Kellő teljesítményű meghajtás is kell, gyakorlatilag 50Ω terheli a meghajtást. Itt nem lehetnek 50-100V jelek a fejtekercsen, mert nagy teljesítménnyel kellene meghajtani, sőt így csak fele feszültség lesz a fejtekercsen.„kábel már tápvonal, amit illeszteni kell, hogy ne legyenek reflexiók” Gyanítom ez nem lesz jó út.
Igazából nem is az adó, hanem a vevő tekercs a jelenlegi problémám. Kéteres árnyékolt vezeték. A két ér megy a tekercs végekre. Az árnyékoló harisnya pedig a tekercs árnyékolására megy. Illetve a tekercset ellenállással csillapítani is kell a berezgések ellen, hasonló módon, mint a PI gépek tekercsét.
Ha az oszcilloszkóp beépített 50Ω lezáró ellenállását bekapcsolva adok rá 50Ω forrásimpedanciáról (generátor) gyors felfutású négyszögjelet, kapok a képernyőn egy jó jelalakot. Ha a szkóp belső ellenállása helyett a bemeneti BNC-re teszek külső 50Ω lezárást, már látszik kis reflexió a jelalaknál pedig csak pár centivel van odébb a lezárás, és fizikailag kissé más útvonalak a jelnek.
Lényeg, hogy ennyicske már okoz kis reflexiót.
Igen. Mint írtam, ebben a témakörben még keveset tudok, de az, hogy a csillapító ellenállást megosztottam, egyik felét közvetlenül a tekercsre tettem, a másik felét pedig a vevőerősítő bemenetére, így már látható a javulás. De túl kicsi ellenállással nem dogozhatok, mert hátrányosan befolyásolja a vett jelet.
Lenne egy kérdésem valakihez, aki jobban ért a szerzői jogokhoz, mint én. Egy olyan művet, aminek az elején a következő sorok vannak, azt be lehet-e csatolni ide a fórumba?
Idézet: „Az összes rajz és fénykép a szerzők tulajdonát képezi, kivéve a köszönetnyilvánításban megjelölteket. Minden jog fenntartva. Személyes használat kivételével a könyv egyetlen része sem reprodukálható semmilyen formában a kiadó írásbeli engedélye nélkül.”
"A magyar szerzői jog (szabad felhasználás esetei) alapján van néhány jogi kiskapu, amivel mégis hivatkozhatsz a könyvre:Idézés joga: Rövid, pár mondatos részletet kimásolhatsz, ha azt egy saját gondolatmeneted, kritikád vagy elemzésed alátámasztására használod. Fontos, hogy a forrást (szerző, cím) pontosan meg kell jelölni. A teljes fejezetek vagy hosszú oldalak bemásolása viszont már nem minősül jogszerű idézésnek.Saját szavas összefoglalás: A könyvben található információkat, gondolatokat, tényeket átfogalmazhatod a saját szavaiddal. A gondolatok és információk maguk nem állnak szerzői jogi védelem alatt, csak azok konkrét leírt formája (a szöveg).Fényképek és rajzok: A képek, illusztrációk másolása szinte soha nem fér bele a szabad idézés kategóriájába, ezeket semmiképp ne töltsd fel."
Most beindult a fejemben a zagy. Kettő adó tekercs, egy vevő. Mindkét adó más-más frekin. A vevő meg veszi mindkettőt.
Kérdés, hogy kiegyenlíthető-e. Nem tudom. A DD fej alakja is azért olyan, mert így van nullhelyzet amiben az egész tekercsalak részt vesz.
Én nem a kiegyenlíthetőségtől félek. Hanem attól, hogy kicsi lesz az érzékelési zóna. Kell kicsit kísérletezni.
Nem lenne egyszerűbb egyből 2 dróttal tekerni tx tekercset? Én is gondolkodtam nem szabványos tekercselésen, laposan tekert, magasan tekert, dupla nyolcas és 4 levelű lóhere alak is volt közöttük, párat ki is fogok tudni próbálni, van elég sok drótom illetve maradt nagyon régről letekert de nem ragasztott tgsl tekercsem.
Az úgy nem megy. Az gyakorlatilag egy tekercs lenne.
pcm1808 adc-nél találtam egy nagy hibát, L és R bemenetén 10uf elkó van és a negatív fele van a csatlakozónál, szerintem eleve úgy gondolták hogy belső féltápja a pozitív a bemenethez képest, viszont kintről is 2,5 voltra ültetett jelet kap, ez bezavarhat vajon a mérésbe?
Nem lehet, hogy rosszul nézed? A bemeneteken 1µF kerámia van az én nézetem szeirnt.
Nem mert kimértem az útját, 2 nagy kondi van 3 lyuk mellett, a 3 lyuk a gnd L és R.
Az mindenképpen problémás, ha a váltakozó áramú jelútban polarizált kondi van. De ha így van, akkor azért az kicserélhető lenne fóliára.
Kijavítottam az adc-n talált hibát, nagyon jó lett most, vdi maximum 1-2 számot változik találatkor, zaj, cicergés nulla, egyből erős hang van. Annyit még megcsináltam vele hogy adc mindkét csatornáját használom, egyik rx bemenet, másik tx bemenet, így csak felemelve lehet bekapcsolni mert pár század másodpercig mér és elforgatja tx-hez képest 90 fokkal rx-et. Gb csak utána nullázható.
Akkor ezek szerint nálad a vevő tekercs egyáltalán nincsen rezonanciára hangolva.
Én ezt nem szeretem, mert ha rezonancián van a tekercs, akkor nagyságrenddel nagyobb a vett jel, így sokkal kisebb erősítés is elegendő és így az erősítő hibái is kisebbek lesznek. De viszont, ha a vevő rezonancián van, akkor az alkatrészek dilatációja is jelentősen befolyásolja a fej fázistolását, amit viszonylag gyakran ellenőrizni kell.
Az majd érdekelni fog (ha publikus), hogy miként oldod meg a talaj jel gyakorlati kiszűrését. Mert ugye a talaj hasonlatos a találatokhoz. Mágnesezhető a vasoxid miatt. Mint a vas. és vezeti az áramot a vízben oldott sók és egyebek miatt. Mint a vas.
Most hogy mondod az rx rezonanciát, találtam még egy hibát, ugyanis rx tekercset felharmónikusra hangoltam (32khz), pedig színusszal dolgozom, ferritre vasra meg sem nyikkan. Megnézem melyik verzió került bele, a gb szerintem a figyelmen kívűl hagyás illetve iir szűrő és kálmán szűrő talajhatás ellen, az pár soros kód.
Most jön az érdekes dolog az esp32s3 ban van egy Ai funkció ami szöveget illetve kamerát rákötve arcot is felismer, gyakorlatilag nagy macerával kell mintavételezni pl. 10db szeget söröskupakot érmét stb. külön külön, amit később rá lehet tölteni és egyből megmondja mit találtál. Ezt elég egyszer megcsinálni viszont laptop is kell hozzá. A másik ötlet még egy beépített 6 tengelyes giroszkóp. Találatnál megnyomsz egy gombot ami nullázza, körbetapogatod a fejjel mivel miliméter pontosan tudja merre lengetsz és hol a találat valamit kirajzol.
Goertzel/Kalman után 90°-kal elforgatom az I/Q-t, hogy a talajhatás egy tengelyre essen, gombnyomásra 10 blokkot (10x2304) átlagolok az elforgatott értékekből → ez lesz a zero_I / zero_Q, minden új mintánál kivonom ezt a vektort, vizes/vasas talajon a maradék lassú driftet a Motion mode HP-szűrője takarítja. (esp32s3 wroom n16r8)
// === GB VALTOZOK ===
volatile float zero_I = 0.0f; volatile float zero_Q = 0.0f; volatile bool ground_balance_request = false; const float HP_ALPHA = 0.992f; // motion modehoz // Ezt hivd meg a Goertzel + Kalman szures utan: // Bemenet: filtered_I, filtered_Q (Vrms szinten) // Kimenet: out_I, out_Q (talajmentes) void applyGroundBalance(float filtered_I, float filtered_Q, float& out_I, float& out_Q, bool motion_mode_active, float& last_I_zeroed, float& last_Q_zeroed, float& hp_filter_I, float& hp_filter_Q) { // 1. 90 fokos elforgatas (TX-hez kepest) // Ezzel a talaj vektora nagyreszt az I tengelyre kerul float rotated_I = filtered_Q; float rotated_Q = -filtered_I; // 2. Ground balance gyujtes (gombnyomasra) static bool gb_collecting = false; static float gb_sum_I = 0.0f; static float gb_sum_Q = 0.0f; static int gb_samples = 0; if (ground_balance_request) { gb_collecting = true; gb_sum_I = 0.0f; gb_sum_Q = 0.0f; gb_samples = 0; ground_balance_request = false; Serial.println("[GB] Gyujtes indul..."); } if (gb_collecting) { gb_sum_I += rotated_I; gb_sum_Q += rotated_Q; gb_samples++; if (gb_samples >= 10) { // 10 Goertzel blokk atlagolasa zero_I = gb_sum_I / gb_samples; zero_Q = gb_sum_Q / gb_samples; gb_collecting = false; Serial.printf("[GB] Kesz. zero_I=%.4f zero_Q=%.4f\n", zero_I, zero_Q); } } // 3. Kivonas - a talaj allando vektorat eltavolitjuk float I_zeroed = rotated_I - zero_I; float Q_zeroed = rotated_Q - zero_Q; // 4. Motion mode (vizes/vasas talaj lassu valtozasaihoz) if (motion_mode_active) { hp_filter_I = HP_ALPHA * (hp_filter_I + I_zeroed - last_I_zeroed); hp_filter_Q = HP_ALPHA * (hp_filter_Q + Q_zeroed - last_Q_zeroed); out_I = hp_filter_I; out_Q = hp_filter_Q; } else { out_I = I_zeroed; out_Q = Q_zeroed; hp_filter_I = 0.0f; hp_filter_Q = 0.0f; } last_I_zeroed = I_zeroed; last_Q_zeroed = Q_zeroed; } // === GOMB KEZELES (loop-ban) === // #define GND_BALANCE_BTN 14 void handleGBButton() { static uint32_t gb_btn_timer = 0; static bool last_gb_btn = HIGH; static uint32_t gb_lock = 0; bool gb_btn = digitalRead(GND_BALANCE_BTN); if (gb_btn == LOW && last_gb_btn == HIGH) { gb_btn_timer = millis(); } if (gb_btn == HIGH && last_gb_btn == LOW) { uint32_t d = millis() - gb_btn_timer; if (d > 20 && d < 2000 && (millis() - gb_lock > 500)) { ground_balance_request = true; gb_lock = millis(); } } last_gb_btn = gb_btn; }
// Goertzel szamitas utan megvan: volt_I_L, volt_Q_L
// Dejitter + Kalman utan: filtered_I, filtered_Q float processed_I, processed_Q; applyGroundBalance(filtered_I, filtered_Q, processed_I, processed_Q, motion_mode_active, last_I_zeroed, last_Q_zeroed, hp_filter_I, hp_filter_Q); // Innentol processed_I/Q mar talajmentes float mag = sqrtf(processed_I*processed_I + processed_Q*processed_Q); |
Bejelentkezés
Hirdetés |










