Kompiuteriai ir modernios programėlės

Atrodytų, nereikšmingas reikalas paleisti laikrodžio kvarcą. Kokios gali buti problemos? Yra mikrovaldiklis ir dvi jo kojelės, kurios yra specialiai skirtos kvarcui prijungti. Yra laikrodžio kvarcas. Kvarco litavimas yra dviejų sekundžių reikalas. Dar reikia minutės, kad programa būtų įtraukta į keletą eilučių laikmačio inicijavimo. Atrodo, kad viskas. BET, paleidęs šį prakeiktą laikrodžių kvarcą tris dienas, supratau, kad problema nėra tokia paprasta, kaip maniau.

O fonas buvo toks. Draugas paprašė padaryti jam paprastą laikrodį, be puošmenų, su 7 segmentų indikatoriais. Nieko didelio. Mikrovaldiklis buvo paimtas ATmega48 (gali dirbti su laikrodžio kvarcu), greitai buvo parašyta programa, išgraviruotas ženklas. Surinkus laikrodį ir derinus programą (dinaminis ekranas, mygtukai ir pan.), atėjo laikas laikrodžio kvarcui. Prieš šį laikrodį jau porą kartų buvau naudojęs laikrodžio kvarcą savo projektuose ir jokių bėdų požymių nebuvo :), bet nutiko netikėta - laikrodžio kvarcas kategoriškai atsisakė paleisti. Iš viso!
Bandydamas išsiaiškinti, kas trukdė mano laikrodžio kvarcui veikti, pirmiausia atsigręžiau į mikrovaldiklio (ATmega48) duomenų lapą. Informacijos apie asinchroninį režimą ir laikmačio prijungimą buvo labai mažai. Tada aš pradėjau ieškoti problemos sprendimo forumuose. Čia buvo įvairių sprendimų ir patarimų, įskaitant ritualinius šokius su tamburinais, kurie man irgi nelabai padėjo. Turėjau išsiaiškinti, kas yra kas per bandymus ir klaidas (nepainioti su „poke metodu“!). Didvyriškų pastangų, užlipus ant visų įmanomų grėblio ir nužudant tris dienas, rezultatas, gimė praktinė laikrodžio kvarco sujungimo patirtis, kuria pasidalinsiu čia.

Taigi, koks grėblys mūsų laukia paleidžiant laikrodžių kvarcą?

1 Grandinės dizainas.
1.1 Kondensatoriai.
Mikrovaldiklio duomenų lape šiek tiek paminėta, kad kondensatoriai turi būti prijungti prie laikrodžio kvarco, tačiau paprastai sunku sužinoti apie jų talpą. Laikrodžio kvarcas greičiausiai veiks be kondensatorių, tačiau geriau juos įdiegti, tai pagerins dažnio stabilumą ir padės kvarcui greičiau įsijungti.
Kondensatorių talpa turėtų būti 12-22 pF.

1.2 Kvarco takelių išdėstymas.
Čia duomenų lapas ir apnotai pateikia aiškias instrukcijas. Keliai nuo mikrovaldiklio kojelių iki kvarco turi būti minimalaus ilgio, kondensatorių įžeminimo kelias turi būti atskiras, tai yra, juo neturėtų tekėti pašalinės srovės (ypač didelės srovės ir aukšto dažnio grandinėse).

1.3 Laikrodžio kvarcinis dėklas.
Laikrodžio kvarco geležinį korpusą būtinai prilituokite prie žemės (prie to, prie kurio lituojami kondensatoriai). Neįžemintas dėklas veiks kaip antena, iškraipydama kvarco veikimą, pablogindama laikrodžio tikslumą.

1.4 Nešvarumai ant lentos.
Laikrodžio kvarcas yra gana subtilus dalykas ir jam sustabdyti visiškai pakanka poros megaomų pasipriešinimo tarp kojų. Kaip parodė praktika, skystas srautas, jei prastai nuplaunamas, užtikrina pakankamą atsparumą, kad kvarcas neveiktų. Po litavimo plokštę kruopščiai nuplaukite. Labai dažnai srautuose yra rūgšties, kuri suteikia laidumą tarp kojų. Norėdami neutralizuoti rūgštį, lentą nuplaukite silpnu sodos tirpalu ir kruopščiai nuplaukite švariu vandeniu.

2 Programavimas.
2.1 Asinchroninio laikmačio režimo inicijavimas.

Kad laikmatis veiktų iš laikrodžio kvarco, jis (laikmatis) turi būti perjungtas į asinchroninį režimą. Norėdami perjungti laikmatį (beveik visiems mikrovaldikliams tai yra 2 laikmatis) į šį režimą, turite įrašyti 1 į AS2 bitą. Tačiau ne viskas taip paprasta, reikia laikytis tam tikro paleidimo algoritmo. Remiantis duomenų lapu, 2 laikmačio asinchroninio režimo įjungimo procedūra yra tokia:
1. Išjungti pertraukimus iš laikmačio/skaitiklio 2 – OCIE2x, TOIE2;
2. Perjunkite jį į asinchroninį režimą 1 -> AS2;
3. Įrašykite naujas reikšmes į TCNT2, OCR2x ir TCCR2x registrus;
4. Palaukite, kol TCN2UB, OCR2xUB ir TCR2xUB vėliavėlės bus nustatytos iš naujo;
5. Atstatyti laikmačio/skaitiklio 2 pertraukimo vėliavėles;
6. Įjunkite pertraukimus (jei reikia).

Būtinai laikykitės šios sekos. Čia pateikiamas teisingo laikmačio 2 asinchroninio režimo inicijavimo sąrašas.

/* išjungti pertraukimus */ cli() ; /* 1. Išjunkite Timer/Counter2 pertraukimus iš naujo nustatydami OCIE2x ir TOIE2. */ TIMSK2 &= ~((1<< OCIE2A) | (1 << OCIE2B) | (1 << TOIE2) ) ; /* 2. Perjungiame Timer/Counter2 į asinchroninį režimą įdiegę AS2. */ ASSR = (1<< AS2) ; /* Duokite šiek tiek laiko generatoriui stabilizuotis (galima ir praleisti). */ _delay_ms(1000) ; /* 3. Parašykite naujas reikšmes TCNT2, OCR2x ir TCCR2B. */ TCNT2 = 0; /* nustatyti ribotuvą = 128 32,768 kHz / 128 / 256 = perpildymas kartą per sekundę. */ TCCR2B |= (1<< CS22) | (1 << CS20) ; /* 4. Norėdami įsitikinti, kad laikrodis pradėjo veikti, palaukite, kol bus išvalyti bitai: TCN2UB, OCR2AUB, OCR2BUB, TCR2AUB ir TCR2BUB. */ while (ASSR & 0x1F ); /* 5. Iš naujo nustatykite Timer/Counter2 pertraukimo vėliavėles. */ TIFR2 |= ((1<< OCF2A) | (1 << OCF2B) | (1 << TOV2) ) ; /* 6. Įgalinkite 2 laikmačio perpildymo pertraukimą */ TIMSK2 |= (1<< TOIE2) ; /* įjungti pertraukimus */ sei() ;

/* išjungti pertraukimus */ cli(); /* 1. Išjunkite Timer/Counter2 pertraukimus iš naujo nustatydami OCIE2x ir TOIE2. */ TIMSK2 &= ~((1<

2.2 Laikmačio limitas 2.
Kad 2 laikmačio perpildymo pertraukimai įvyktų kartą per sekundę, ribotuvo reikšmė turi būti 128. (128 ribotuvas * 256 perpildymas = 32768 kvarco dažnis).

2.3 Laikrodžio veikimas energijos taupymo miego režimu.
Labai vilioja pertraukas tarp antrųjų pertraukimų įjungti mikrovaldiklį į miego režimą, tokiu atveju mikrovaldiklio srovė nukris iki 6-7 µA. Tokiam atvejui yra PowerSave mažai energijos suvartojantis režimas, kuriame laikmatis 2 toliau veikia nuo laikrodžio kvarco ir pažadina mikrovaldiklį su pertraukimu. Šio darbo režimo algoritmas yra paprastas: išėjus iš miego režimo laikmačio pertraukimu, pertraukų apdorojimo procedūroje „pažymime“ laikrodį, išeiname iš pertraukos ir vėl duodame komandą miegoti (SLEEP). Čia yra labai svarbus niuansas. Dar kartą pažiūrėkite į mikrovaldiklio duomenų lapą skyriuje apie mažo suvartojimo režimus ir asinchroninio režimo veikimą. Kad laikmatis pradėtų normaliai veikti po pabudimo ir galėtų pažadinti mikrovaldiklį iš miego po kito pertraukimo, reikia palaukti tam tikrą laiką iki miego komandos. Norint įsitikinti, kad generatorius veikia normaliai, reikia rašyti į bet kurį laikmačio registrą, tokį, kuris nesutrikdys laikrodžio (pvz., OCR2x) ir laukti, kol bus iš naujo nustatytos šio registro parengties vėliavėlės (OCR2xUB) . Iš naujo nustatę vėliavėlę, galite saugiai įjungti mikrovaldiklį į miego režimą.

/* Timer2 perpildymo pertraukimo išėjimo taškas */ /* Įrašykite bet kokią reikšmę į OCR2A. */ OCR2A = 0; /* Palaukite, kol OCR2AUB bus nustatytas iš naujo. */ while(ASSR & (1<

3 Įvairūs.
3.1 Nenaudokite pigaus kiniško kvarco(ypač lituotų iš senų sulūžusių centų laikrodžių). Net jei jie dirbs, jie neturės tikslumo.

3.2 Ir galiausiai, turėkite po ranka kelis skirtingus kvarcus, galbūt jūsų kvarcas neužsiveda dėl to, kad jis miega. Pabandykite jį pakeisti.

Atrodo, kad tai yra visas grėblis, kurį sutrypiau paleisdamas laikrodžio kvarcą. O gal dar yra ką pridurti?


(Aplankyta 9 748 kartus, 1 apsilankymai šiandien)

Kartais pravartu sistemoje turėti laikrodį, kuris laiką skaičiuoja sekundėmis ir net labai tiksliai. Dažnai specialios RTC (Real Time Clock) mikroschemos kaip . Tiesiog tai yra papildomas atvejis ir kartais kainuoja tiek pat, kiek ir pats MK, nors galite apsieiti ir be jo. Be to, daugelis MK turi įmontuotą RTC bloką. Tiesa, AVR jo neturi, tačiau turi asinchroninį laikmatį, kuris tarnauja kaip pusgaminis gaminiui gaminti.

Visų pirma, mums reikia laikrodžio kvarco, kurio dažnis yra 32768 Hz.

Kodėl kvarcas yra tiksliai 32768 Hz ir kodėl jis vadinamas sargybiniu? Taip, viskas labai paprasta – 32768 yra dviejų galia. Du iki penkioliktos galios. Todėl penkiolikos bitų skaitiklis, tiksintis 32768 Hz dažniu, perpildys kartą per sekundę. Tai leidžia be jokių problemų sukurti laikrodį naudojant įprastą loginį srautą. O AVR mikrovaldiklyje galite sutvarkyti laikrodį su sekundėmis beveik nenaudodami smegenų, naudodami periferinius refleksus.

Asinchroninis laikmačio režimas
Prisiminkite, kaip veikia laikmačiai? Laikrodžio dažnis iš pagrindinio laikrodžio generatoriaus (RC išorinis ar vidinis, išorinis kvarcinis arba išorinis generatorius) eina į išankstinius skalerius, o iš išankstinių skaliklių išvesties jau spusteli TCNT registro reikšmes. Arba įvesties signalas ateina iš skaičiavimo įvesties Tn ir taip pat paspaudžia TCNT registrą

Norėdami tai padaryti, ant kaiščių TOSC2 ir TOSC1 pakabinamas kvarcinis rezonatorius. Žemas dažnis, paprastai valandos kvarcas, esant 32768 Hz. Jis sumontuotas dešinėje valdiklio pusėje ir sujungtas su trumpikliais. Be to, procesoriaus laikrodžio dažnis turi būti bent keturis kartus didesnis. Turime laikrodį iš 8 MHz vidinio osciliatoriaus, tad ši sąlyga mūsų visai nevargina :)

Ir jums nereikia skaičiuoti pagrindinio kvarco ciklų skaičiaus, o jei jo nėra, nerimauti dėl įmontuoto RC osciliatoriaus slankiojo dažnio. Laikrodžių kvarcas yra daug kompaktiškesnis nei įprastas kvarcas ir yra pigesnis.


Svarbu ir tai, kad asinchroninis laikmatis gali tiksėti pats, nuo laikrodžio kvarco, nes jam nereikia procesoriaus laikrodžio dažnio, vadinasi, galima išjungti valdiklio šerdies (sunkiausia, ką ji turi) taktinį dažnį. užmigdant procesorių, žymiai sumažinant energijos sąnaudas ir pabusiant tik tada, kai laikmatis persipildo (1-2 kartus per sekundę), kad užfiksuotų naujus laiko rodmenis.

Konfigūracija
Norėdami jį įjungti, tereikia nustatyti ASSR registro AS2 bitą - ir viskas, laikmatis veikia asinchroniniu režimu. Tačiau čia yra viena savybė, kuri vienu metu man kainavo daug galvos skausmo. Faktas yra tas, kad dirbant iš savo kvarco, visi vidiniai laikmačio registrai pradeda sinchronizuoti naudodami savo kvarcą. Tačiau tai yra lėta ir pagrindinė programa gali pakeisti jau įvestą reikšmę daug greičiau, nei ją gali apdoroti laikmatis.

Tai yra, pavyzdžiui, iš anksto nustatėte reikšmę TCNT2, jūsų 32 kHz kūlimo laikmatis dar net nespėjo jo sukramtyti, bet jūsų algoritmas jau praėjo ir vėl kažką ten parašė - dėl to greičiausiai bus šiukšlių. atsiduria TCNT2. Kad taip nenutiktų, įrašas saugomas buferiu. Tie. manote, kad įrašėte duomenis į TCNT2, bet iš tikrųjų jie patenka į laikinąjį registrą ir pateks į skaičiavimo registrą tik po trijų lėto generatoriaus laikrodžio ciklų.

OCR2 palyginimo registrai ir TCCR2 konfigūracijos registrai taip pat yra buferiniai

Kaip sužinoti, ar duomenys jau įvesti į laikmatį, ar kabo tarpiniuose langeliuose? Taip, tai labai paprasta - naudojant ASSR registro vėliavėles. Tai yra TCN2UB, OCR2UB ir TCR2UB bitai – kiekvienas yra atsakingas už savo registrą. Kai, pavyzdžiui, įrašome reikšmę TCNT2, TCNUB tampa 1, o kai tik mūsų skaičius iš tarpinio registro persikelia į tikrąjį skaičiavimo registrą TCNT2 ir pradeda varnėti, ši vėliavėlė automatiškai nustatoma iš naujo.

Taigi, asinchroniniu režimu, rašant į TCNT2, OCR2 ir TCCR2 registrus, pirmiausia reikia patikrinti TCN2UB, OCR2UB ir TCR2UB vėliavėles ir rašyti tik tuo atveju, jei jos lygios nuliui. Priešingu atveju rezultatas gali būti nenuspėjamas.

Taip, dar vienas svarbus momentas – perjungiant sinchroninį ir asinchroninį režimą, TCNT skaitiklio registre esanti reikšmė gali būti prarasta. Taigi, norėdami būti saugūs, perjungiame taip:

  • Išjungti šio laikmačio pertraukimus
  • Perjunkite į norimą režimą (sinchroninį arba asinchroninį)
  • Mes vėl nustatome laikmatį pagal poreikį. Tie. jei reikia, nustatykite TCNT2 išankstinį nustatymą, iš naujo sukonfigūruokite TCCR2
  • Jei pereiname į asinchroninį režimą, laukiame, kol visos TCN2UB, OCR2UB ir TCR2UB vėliavėlės bus nustatytos iš naujo. Tie. nustatymai pritaikyti ir yra paruošti naudoti.
  • Iš naujo nustatomos laikmačio / skaitiklio pertraukimo vėliavėlės. Nes su visais šiais trikdžiais jie gali atsitiktinai susitvarkyti
  • Įgalinti pertraukimus iš šio laikmačio

Jei nesilaikoma šios sekos, atsiranda nenuspėjamų ir sunkiai aptinkamų trikdžių.

Miego režimai ir asinchroninis laikmatis
Nes asinchroninis laikmatis dažnai naudojamas įvairiuose taupymo režimuose, tada atsiranda viena savybė, kuri sukuria visą grėblio lauką.

Esmė ta, kad lėto kvarco varomas laikmatis negali neatsilikti nuo pagrindinio procesoriaus, be to, yra daug priklausomybių nuo periferinių įrenginių – pavyzdžiui, tie patys pertraukimai. Ir kai procesorius miega, šios priklausomybės negali būti įgyvendintos, todėl atsiranda gedimų, tokių kaip nutrūkę pertraukimai arba sugadintos registrų reikšmės. Taigi darbo su asinchroniniu laikmačiu ir miego režimu logika turėtų būti sukurta taip, kad tarp pabudimo ir įjungimo į užmigdymo režimą asinchroninis laikmatis turėtų laiko atlikti kelis laikrodžio ciklus ir atlikti visas užduotis.

Pavyzdžiai:
Valdiklis naudoja energijos taupymo ir pagrindinio išjungimo režimą ir pažadina pertraukimus iš asinchroninio laikmačio. Čia turime atsižvelgti į tai, kad jei pakeisime TCNT2, OCR2 ir TCCR2 registrų reikšmes, užmigdymo režimas turėtų būti atliekamas TIK nukritus TCN2UB, OCR2UB ir TCR2UB vėliavėlėms. Priešingu atveju rezultatas bus toks netvarkingas – asinchroninis laikmatis dar nespėjo paimti duomenų iš tarpinių registrų (jis yra lėtas, šimtus kartų lėtesnis už šerdį), o šerdis jau nupjauta. Ir būtų puiku, jei naujoji konfigūracija nebūtų pritaikyta, tai nesąmonė.

Blogiausia tai, kad kol keičiami TCNT ar OCR registrai, blokuojamas palyginimo bloko veikimas, o tai reiškia, kad jei branduolys užmiega anksčiau, palyginimo blokas niekada neįsijungs – nebus kam jo įjungti. Ir mes, palyginus, prarasime pertraukimą. Rizika yra tai, kad mes praleisime renginį ir prarasime juos iki kito pabudimo iš žiemos miego.
Ką daryti, jei valdiklį pažadina palyginimo pertraukimas? Tada jis visiškai užmigs. Oi!
Taigi pastebėkite šį gedimą vėliau.

Taigi prieš pereidami į energijos taupymo režimus, būtinai turite leisti asinchroniniam laikmačiui kramtyti įvestas reikšmes (jei jos buvo įvestos) ir palaukti, kol vėliavėlės bus iš naujo nustatytos.

Kitas pokštas su asinchroniniu režimu ir energijos taupymu yra tas, kad pertraukų posistemis, išeinant iš užmigdymo, paleidžiamas per 1 lėto generatoriaus laikrodžio ciklą. Taigi net jei nieko nepakeitėme, negalime grįžti į žiemos miegą – nepabussime, nes... pertraukia neturės laiko paleisti.

Taigi išėjimas iš žiemos miego ir užmigimas, kai jį pertraukia asinchroninis laikmatis, turėtų atrodyti taip:

  • pabudo
  • Jie kažką padarė teisingai
  • Užmigti

O operacijos trukmė tarp pabudimo ir užmigimo NETURI BŪTI MAŽesnė už vieną asinchroninio laikmačio varnelę. Priešingu atveju sustabdyta animacija bus amžina. Galite nustatyti delsą arba galite tai padaryti, kaip nurodyta duomenų lape:

  • pabudo
  • Jie kažką padarė teisingai
  • Tiesiog savo malonumui kažką įrašėme į bet kurį buferinį registrą. Pavyzdžiui, TCNT buvo 1, o mes vėl įrašėme 1. Niekas nepasikeitė, bet įvyko įrašas, buvo iškelta TCN2UB vėliavėlė, kuri garantuotai atlaikys tris lėto generatoriaus ciklus.
  • Palaukite, kol vėliava nukris
  • Užmigome.

Taip pat nerekomenduojama iš karto perskaityti TCNT verčių išėjus iš žiemos miego - tai gali būti laikoma netvarka. Geriau palaukti vieną asinchroninio laikmačio varnelę. Arba pajuokaukite rašydami į registrą ir laukdami, kol vėliava nukris, kaip buvo parašyta aukščiau.

Na, o paskutinis, bet svarbus punktas - prijungus maitinimą arba išėjus iš gilaus žiemos miego, išjungus ne tik branduolį, bet apskritai visą periferiją, primygtinai rekomenduojama naudoti lėtą generatorių ne anksčiau kaip po to. 1 sekundė(ne milisekundę, o visą sekundę!). Priešingu atveju generatorius vis tiek gali būti nestabilus, o registruose bus daugiau netvarkos ir šiukšlių.

Ir straipsnio pabaigoje mažas pavyzdys. Asinchroninio laikmačio paleidimas „Atmega16“ (kaip daugiakampis naudoja lentą)

Projektas standartinis, paremtas dispečeriu, skirtumas tik tas, kad dispečeris perkeltas į timer0, kad atlaisvintų timer2.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 int main(void) (InitAll(); // Inicijuoti periferinį įrenginį InitRTOS() ; // Inicijuoti branduolį VykdytiRTOS() ; // Paleiskite branduolį. UDR = "R"; // Paleidimo žymeklis, skirtas derinimui SetTimerTask(InitASS_Timer, 1000 ) ; // Kadangi laikmatis asinchroniniu režimu // įsijungia lėtai, mes tai darome // Delsimas pradėti inicijuoti laikmatį. kol (1) // Pagrindinė dispečerinė kilpa( wdt_reset() ; // Iš naujo nustatyti šuns laikmatį TaskManager() ; // Skambinti dispečeriui) grąžinti 0 ; )

int main(void) ( InitAll(); // Inicijuoti periferinį įrenginį InitRTOS(); // Inicijuoti branduolį RunRTOS(); // Paleisti branduolį. UDR = "R"; // Paleisti žymeklį, skirtą derinti SetTimerTask(InitASS_Timer ,1000) ; // Kadangi laikmatis asinchroniniu režimu // paleidžiamas lėtai, mes // laukiame, kol pradės inicijuoti laikmatį while(1) // Pagrindinė dispečerio kilpa ( wdt_reset(); // Iš naujo nustatykite šuns laikmatį TaskManager( ); // Skambinti dispečeriui ) return 0;

Laikmačio inicijavimo asinchroniniu režimu procedūra atliekama baigtinės būsenos mašinos pavidalu. Kai pirmą kartą paleidžiamas, jis nustato asinchroninio režimo bitą ir ruošiasi, tada vėl paleidžiamas per dispečerį, kad suteiktų dar kažkam galimybę praslysti per eilę neužblokuojant sistemos laukiant.

Vėlesniuose įėjimuose tikrinami parengti laikmačio registrų vėliavėlės bitai. Jei visi jie yra nuliai, tada tik tuo atveju, jei iš naujo nustatysime laikmačio pertraukimo vėliavėles, kad išvengtume trikdžių ir klaidingų teigiamų rezultatų, tada įgalinsime mums reikalingą pertraukimą. Ir mes išeiname.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 void InitASS_Timer(void ) ( if (ASSR & (1<< AS2) ) //Jei tai antra įvestis, tada( if (ASSR & (1<< TCN2UB | 1 << OCR2UB | TCR2UB) ) // patikrinkite, ar yra bent vienas vėliavėlės bitas( SetTask(InitASS_Timer) ; // Jei yra, tada siunčiame į kartotinį laukimo ciklą) Kitas // Jei viskas aišku, galite paleisti pertraukimus(TIFR |= 1<< OCF2 | 1 << TOV2; // Iš naujo nustatykite pertraukimo vėliavėles, tik tuo atveju. TIMSK |= 1<< TOIE2; // Įgalinti perpildymo pertraukimą grąžinti; ) ) TIMSK &= ~(1<< OCIE2 | 1 << TOIE2) ; // Išjungti 2 laikmačio pertraukimus ASSR = 1<< AS2; // Įjungti asinchroninį režimą TCNT2 = 0; TCCR2 = 5<< CS20; // 128 x 32768 pirminis skaleris duos 256 žymes per sekundę // Kuris duos 1 perpildymo pertraukimą per sekundę. SetTask(InitASS_Timer) ; // Paleiskite jį per dispečerį, kad vėl prisijungtumėte. }

void InitASS_Timer(void) ( if(ASSR & (1<

ISR(TIMER2_OVF_vect) // 2 laikmačio perpildymo pertraukimas ( UDR = i; i++; )

Buvo galima padaryti kintamuosius, kuriuose būtų valandos:minutės:sekundės, ir spustelėti tuos kintamuosius su visa jų valandų/minučių perpildymo logika, bet aš buvau per tinginys. Ir taip viskas aišku.

Šiame trumpame esė su nuotraukomis plačiajai visuomenei parodysiu, kaip gydyti gana dažną skaitmeninių elektroninių laikrodžių „skausmą“ - netikslumą. Laikrodis gali vėluoti ar skubėti, o dažniausiai nekreipiame dėmesio į mažas paklaidas, tačiau kai per dieną laikrodis atsilieka 5 (penkiomis) minutėmis, tai pradeda erzinti.
Pasiruošę? Pirmyn!

Įvadas

Įsigijau šį laikrodį, kad pajusčiau nostalgiją seniems sovietiniams laikams, kai saulė buvo žalesnė, o žolė šviesesnė... ar atvirkščiai?.. nesvarbu! Svarbiausia, kad džiaugsmo nebuvo – laikrodis bjauriai atsiliko. Daugiau nei 5 minutes per dieną. Man reikia pasveikti, pagalvojau.



Žvelgdamas į ateitį, norėčiau pažymėti, kad aš nepradėjau ginčo, šimtas rublių nėra tie patys pinigai. Problema ne tame, kad pardavėjas atsiuntė nekokybišką prekę. Problema yra prekėje, kurios pardavėjas niekaip negali patikrinti – ar tikrai kinas/moteris nesėdės ir nepamatuos judesio tikslumo?

Norėdami apdoroti laikrodį, kurio mums reikia:

Būtinai
+ lituoklis. pageidautina ne labai galingas, užtenka 25-40 vatų. 60 jau bus per daug.
+ pakaitinis kvarcinis rezonatorius. Parduodama Kinijoje arba bet kurioje radijo parduotuvėje. Jis yra nebrangus ir vadinamas „laikrodžio kvarcu“.
+ plonas Phillips atsuktuvas arba plonas plokščiagalvis atsuktuvas. pirmenybė teikiama kryžiui.

Pageidautina
+ pincetas su aštriais žandikauliais - paimkite varžtus (taip, korpusas plastikinis, rėmas irgi plastikinis. Visur yra varžtai)
+ geras apšvietimas ir stacionarus didinamasis stiklas arba juvelyro/laikrodininko akiniai, kad aiškiai matytumėte Raudonkepuraitės laikrodį.

Išardome laikrodį

Atsukite keturis varžtus, laikančius galinį dangtelį. Atsargiai nuimkite dangtelį ir nuimkite pjezoelektrinį rezonatorių (aukštų dažnių garsiakalbį). Pirštais squeaker'o letenomis nelaikome už šoninių kraštų ir metalinio pagrindo.


Atkreipiame dėmesį, kad laikrodis neturi apsauginės tarpinės, todėl į laikrodžio vidų pateks vandens ir prakaito. Suprantame, kad kinai taupo viską dėl pigumo, vadinasi, stiklas greičiausiai sėdi ant dvipusės juostos, o mygtukai neturi guminių tarpiklių. Tai reiškia, kad esant blogam orui ir dirbant fizinį darbą, laikrodį reikės nusiimti.

Išimame laikrodį iš korpuso.


Mes atidėjome dėklą, galinį dangtelį, galinio dangtelio varžtus ir aukštų dažnių garsiakalbį.

Atsukame keturis varžtus – trys laikosi 2016 metų ličio bateriją, vienas laiko spyruoklinį skirtuką signalui siųsti į aukštųjų dažnių garsiakalbį.


Atidėkime visa tai į šalį. Mes svarstome mokestį. Daugiau varžtų nematote, vadinasi, viskas gerai.

Pincetu atsargiai išimkite lentą iš plastikinio laikiklio.


Klipo viduje matome laidžią guminę juostelę, kuri perduoda signalą į LCD ir patį LCD indikatorių.
Tamprės pirštais neliečiame, nes tai nesvarbu. Jei į vidų patenka dėmė ar nešvarumai, nukrenta koks nors segmentas ant indikatoriaus ir vėl reikia jį išardyti... kas po velnių...
Mėlyname šilumos susitraukime yra ritė, kuri skleidžia garsą. Jo liesti irgi nereikia. Lengva sugadinti, laidai ten plonesni už plauką.
Bet metalinis cilindras ant kojų yra mūsų kvarcinis rezonatorius, kurį reikia keisti.

Norėdami pakeisti kvarcą, nusprendžiau naudoti donorinį kvarcą iš senos pagrindinės plokštės, kuri mirė prieš dešimt metų ir pamažu jį išskaidau į mažus komponentus.


Kvarcas čia yra šiek tiek didesnis nei laikrodžiuose.
Čia, palyginimui, jau yra lituojamas kvarcas iš pagrindinės plokštės ir laikrodžio plokštė.


Lentą tepame kvarcu. Tinka. Į narvą dedame kvarco, irgi tinka! Puiku! Pasikeiskime!

Norėdami pakeisti, tiesiog išlituokite vieną kvarcą ir lituokite kitą.
Nėra poliškumo, jokių savybių. Procedūra yra paprasta ir nereikalauja specialios kvalifikacijos.


Voila! pakeistas kvarcas. Kvarcinį korpusą išlyginame taip, kad jis būtų tiesiai po plokšte ir neliestų akumuliatoriaus.

Surinkimas

Surenkame mechanizmą atvirkštine tvarka - dedame lentą ant laikiklio, ten yra kreipiamieji kaiščiai. Mes įdėjome bateriją ant lentos, minusas nukreiptas žemyn.


Uždėkite kontaktinį bloką ant akumuliatoriaus viršaus. Šiame laikrodyje jis vienu metu laiko bateriją ir yra mygtukų kontaktų grupė. Pritvirtinkite trimis varžtais. Tada atskiras aukštų dažnių garsiakalbio kontaktas. Taip pat prisukame.

Apverčiame bloką ir žiūrime – turėtų prasidėti laikrodis. Jei taip neatsitiks, vadinasi, akumuliatorius apverstas aukštyn kojomis arba kvarcas neįlituotas arba neveikia, arba plokštę sunaikino statinis krūvis :)
Na, o jei viskas veikia, atsargiai įdėkite lentą į laikrodžio korpusą, sucentruokite, kad skaičiai būtų lygiagrečiai krašteliui, tada įstatykite pyptelėjimą atgal, užsukite dangtelį...

Gerai, viskas dabar!
Mes įveikėme didelę problemą)))

Dienos metu laikrodis nejudėjo nei pirmyn, nei atgal, veikia sklandžiai ir tiksliai. Žiūrėsiu dar šiek tiek ir tada pranešiu apie tikslumą.

Reikia pasakyti, kad kvarco keitimo procedūra yra vienoda visiems kvarciniams laikrodžiams - skaitmeniniams, ciferblatui. Tačiau reikia prisiminti, kad dauguma kiniškų kvarcinių laikrodžių yra surenkami ant plastikinių kniedžių, kurios išlydomos „grybais“, t.y. Tiesą sakant, kai laikrodis yra išardytas, jį labai sunku surinkti.
Na, o kvarco dydis taip pat turi reikšmės - jei kvarcas iš pagrindinės plokštės netiko pagal dydį, tuomet tektų ieškoti kito, mažesnio.

Už šios „Murzilkos“ rėmo buvo plėvelė, kurios kinai neišėmė iš LCD ekrano, kai įdėjo ją į laikiklį. Nuėmiau šią plėvelę ir ekrano kontrastas šiek tiek padidėjo. Filmas beveik nematomas, bet jis buvo mano laikrodyje.

UPD .
Per pastarąsias keturias dienas, kai buvo pakeistas kvarcas, laikrodis pajudėjo dviem sekundėmis į priekį. 15 sekundžių per mėnesį.
Manau, kad pigaus laikrodžio ir nemokamo kvarco rezultatas yra patenkinamas. Asmeniškai mane tai visiškai tenkina)))
Žinoma, galite ieškoti kvarcinių laikrodžių už centus sendaikčių turguose, pasiimti iš ten krūvą kvarco ir tiksliai eksperimentuoti... bet tai paliksime perfekcionistams ir užkietėjusiems keistuoliams)))

Komentaruose pateikiamas receptas, kaip tiksliau sureguliuoti tikslumą lituojant miniatiūrinius keraminius kondensatorius. Kaip alternatyva kvarco pakeitimui, jis yra gana perspektyvus ir protingas. Svarbiausia, kad yra vieta, kur įdėti šiuos kondensatorius. Na, o jų buvimas...

Ir apskritai, draugai, svarbiausia ne apžvalga, svarbiausia yra komentarai)))
Ačiū visiems už vertingas idėjas ir įvairias diskusijas)))

Planuoju pirkti +16 Įtraukti į adresyną Man patiko apžvalga +91 +166

Jei pastebėjote klaidą, pasirinkite teksto dalį ir paspauskite Ctrl+Enter
DALINTIS:
Kompiuteriai ir modernios programėlės