Kysymys:
Arduino-kellon tarkkuus
KK6FSL
2014-02-16 05:54:06 UTC
view on stackexchange narkive permalink

Yritän tällä hetkellä luoda Arduino-kellon käyttämällä PJRC-aikakirjastoa ( http://www.pjrc.com/teensy/td_libs_Time.html). Tiedän, että koska suurin osa Arduino-levyistä on käynnissä 16 MHz: n kellolla ja yhdellä resonaattorilla, aika voi muuttua "synkronoitumattomaksi" tietyn ajan kuluttua.

Mietin kuitenkin, onko jollakulla ajatusta Time-kirjaston tarkkuudesta, kun sitä käytetään Arduino DUE: ssa 84 MHz: n kellolla. Olen testannut sitä, ja toistaiseksi kelloa on pidetty synkronoituna muutaman tunnin ajan. Kiitos!

Kirjaston tarkkuuden rajoitukset riippuvat kiteen tarkkuudesta. Oletetaan, että sinulla on kide, joka on pois päältä 0,5 sekunnilla joka tunti, loistava lyhyellä aikavälillä, mutta jos laajennat sitä vuoden aikana, se on yli tunti vapaata siihen mennessä. Jos haluat jotain pitävän tarkkaa aikaa pitkään, suosittelen reaaliaikakelloa (niillä on edelleen epätarkkuuksia), GPS-moduulia tai Internet-yhteyttä synkronoitavaksi.
@jamolnng Kiitos vastauksestasi. Tiedätkö Arduino DUE: n kiteen tarkkuuden tai mistä voisin löytää sen?
Paras tarkkuus, jonka aiot saada, on 84 MHz, kun he valmistavat tai valmistavat kiteen, jonka he voivat tehdä siitä vain tietyssä määrin tarkkoja, myös kiteen ympäristöllä (lämpötila, kosteus jne.) On merkitystä sen tarkkuus.
@jamolnng Joten voinko odottaa suurempaa tarkkuutta 84 MHz: n kristallilla kuin 16 MHz: n kristallilla useimmissa muissa Arduinoissa?
Ei välttämättä, koska jos molemmilla 84 MHz: llä ja 16 MHz: llä on sama määrä epätarkkuuksia kellojaksoa kohden, niin 16 MHz: n kellolla olisi lopussa pienempi epätarkkuus, koska se teki vähemmän jaksoja. Kiteen taajuus on enemmän prosessorin nopeudelle
"Paras tarkkuus, jonka aiot saada, on 84 MHz" - sillä ei ole minulle paljon järkeä!
Hän etsi tarkkaa kellokiteen taajuutta, mukaan lukien sen viat. Näyttää olevan myöhässä muokata ...
Dueillä on [RTC] (http://forum.arduino.cc/index.php?topic=141233.msg1061157#msg1061157 "RTC"), mutta siinä ei ole nastoja ulkoisen akun lisäämiseksi sen pitämiseksi käynnissä.
Neljä vastused:
#1
+10
Jesse Laning
2014-02-16 06:30:47 UTC
view on stackexchange narkive permalink

Kirjaston tarkkuuden rajoitukset riippuvat kiteen tarkkuudesta. Kun he valmistavat tai valmistavat kiteen, he voivat tehdä siitä vain tietyssä määrin tarkan, myös kiteen ympäristöllä (lämpötila, kosteus jne.) On merkitystä sen tarkkuudessa. Oletetaan, että sinulla on kide, joka on pois päältä 0,5 sekunnilla joka tunti, loistava lyhyellä aikavälillä, mutta jos laajennat sitä vuoden aikana, se on yli tunti vapaata siihen mennessä. Jos haluat jotain pitävän tarkkaa aikaa pitkään, suosittelen reaaliaikakelloa (niillä on edelleen epätarkkuuksia), GPS-moduulia tai Internet-yhteyttä synkronoitavaksi.

Lisätietoja on osoitteessa wikipediaartikkeli kvartsikiteistä

84 MHz: n ja 16 MHz: n kristallien käyttö ei välttämättä paranna Arduino-kellon tarkkuutta, koska kiteen taajuus on enemmän indikaattori prosessorin nopeuden kuin tarkkuuden. Arduino-kellon tarkkuus riippuu ensisijaisesti kideoskillaattorin tarkkuudesta.

MUOKKAA: En ole kideoskillaattoreiden asiantuntija, joten jos näet täällä jotain vikaa, ilmoita siitä minulle

#2
+5
Edgar Bonet
2016-09-02 21:08:13 UTC
view on stackexchange narkive permalink

Vierailen vanhassa kysymyksessä uudelleen ... kun löysin erittäin informatiivisen blogiviestin, joka valaisee siihen uutta. Mutta anna minun ensin antaa asiayhteys ennen linkin antamista.

Aikapohjan laatua arvioitaessa, olipa se sitten kristalli, keraaminen resonaattori tai laboratoriotason taajuusstandardi, on erotettava kaksi käsitystä:

  • tarkkuus : kuinka lähellä ajanjakson taajuus on sen nimellinen arvo
  • vakaus : kuinka paljon taajuus kulkeutuu ajan myötä

Tarkkuus on tärkeää, jos haluat kellosi antavan oikean ajan "pois laatikosta". Jos kuitenkin olet valmis viettämään jonkin aikaa kellon kalibrointiin, et todellakaan välitä siitä, koska aiot kalibroida mittaamasi epätarkkuudet. jfpoilpretin vastaus tarjoaa esimerkin "manuaalisesta" kalibrointiprotokollasta, joka on välttämättä melko pitkä. Jos voit lainata GPS-moduulia, jossa on 1PPS-lähtö, kalibrointi voidaan tehdä muutamassa sekunnissa.

Vakaus on vakavampi ongelma. Jos aikaperusteisuuden taajuus satunnaisesti sattuu, se voittaa kalibrointiponnistuksesi. Pohjimmiltaan kalibrointi kertoo sinulle kuinka nopeasti tai hitaasti kellosi käy juuri nyt , mutta se ei salli sinun ennustaa kuinka nopeasti tai hitaasti se toimii tulevaisuudessa .

Tässä on luvattu linkki: Arduino-kellotaajuuden tarkkuus, kirjoittanut Joris van Rantwijk.

Joris teki mittaamaan Arduino ProMinin tarkkuuden ja vakauden ( kellotettu keraaminen resonaattori) ja vanha Duemilianove (kvartsikide). Minun näkökulmastani tärkeimmät takeawayt ovat:

  • molemmat kellot ovat karkeasti epätarkkoja, joten molemmat tarvitsevat käyttökalibrointia, jotta niitä voidaan käyttää kelloina
  • Duemilianoven kvartsikidellä on riittävä vakaus, parempi kuin 1,5e-8 6 tunnin keskiarvoaikana
  • Pro Minin keraamisen resonaattorin vakaus on säälittävää, enemmän kuin kaksi suuruusluokkaa huonompi kuin kristalli, mikä tekee siitä olennaisesti hyödyttömän aikakappaleena

Tässä on hänen Allan-poikkeamansa juoni, joka mittaa kellon epävakautta havainnointiajan funktiona:

Allan deviation of Arduino Clock Frequency
(lähde: jorisvr.nl) sub >

Vaikka tässä tutkimuksessa on joitain rajoituksia (vain kaksi levyä testattiin ja havaintoaika on liian lyhyt), se on hyvin harkittu ja erittäin informatiivinen. Kehotan sinua lukemaan sen kokonaisuudessaan.

Kvartsikiteiden taajuus muuttuu hieman lämpötilan mukaan. Jos pystyt hallitsemaan lämpötilaa, se auttaa pitämään taajuuden vakaana.
#3
+3
jfpoilpret
2014-02-16 14:20:36 UTC
view on stackexchange narkive permalink

Paras tapa tietää taulusi resonaattorin tarkkuus on mitata se itse.

Voit tehdä tämän käyttämällä Arduino-funktiota millis () laudallesi ja kirjoita pieni luonnos, joka:

  1. antaa sinun asettaa aikasiirtymän alkamisajan (esim. yksinkertaisella painikkeella); käynnistät painikkeen tarkan aikaperustan perusteella.
  2. Soita sitten toistuvasti millis (), kunnes vähintään 120 h ("arduino tuntia", joka olisi noin 5 päivää) on kulunut
  3. näyttää signaalin, kun nämä 120 tuntia on kulunut (luonnoksesi todennäköisesti "varoittaa" sinua ennen kuin tarkka aika on saavutettu, jotta valmistaudut mittaukseen)
  4. kun 120 tuntia on kulunut kulunut, tarkista viite-aikaesi perusteella (käytetty vaiheessa 1) ja tarkista kuinka paljon aikaa on kulunut (pitäisi olla 120h +/- epsilon)
  5. kun tiedät kellosi ajautumisen toimii samoissa ympäristöolosuhteissa (pääasiassa lämpötilassa) kuin mittauksesi, voit käyttää sitä luonnoksissasi säätääksesi millis () -arvoa noin tunnin välein.

Tietysti tämä lähestymistapa ei ole kaukana täydellisestä , koska se vaatii ihmisen toimia ja siten luo lisäaikatauluja mittausten aikana, siksi sinun on mitattava kelloaikasipitkällä aikavälillä.

Parempi lähestymistapa olisi liittää korkean tarkkuuden RTC-kello (tarkkuus on valittava sovelluksellesi tarvitsemasi tarkkuuden perusteella) taululle ja mukautettava luonnos siten, että se laskee automaattisesti ajautumisen. Kun aika on kulunut, voit tehdä saman kuin yllä oleva vaihe 5 luonnoksissasi ja irrottaa RTC-kellon taulustasi.

Tärkeitä seikkoja :

  • mittaa aikalevy taululla, joka tarvitsee kellon säätöä myöhemmin (jos sinulla on useita laudoja, sinun on mitattava yksi ajautuminen per lauta)
  • varmista sen ympäristön vakaus, jossa taulusi on taulua käytetään

Lopuksi, jos tarvitset todella suurta tarkkuutta, kytke ehdottomasti ulkoinen kellolähde (esim. RTC-kello, GPS, NTP) taululle ja käytä sitä PJRC-kirjaston SyncProvider-ohjelmana.

#4
+2
jippie
2014-02-16 13:50:26 UTC
view on stackexchange narkive permalink

Keskimääräinen järjestelmän kellokide sammuu useita kymmeniä ppm (miljoonasosat. Ne ovat erinomaisia ​​signaalien vakaan ja tarkan ajoituksen kannalta, mutta dramaattisia tarkan ajan pitämiseksi. Ilman erityissäännöksiä järjestelmän kide voi sammua muutamalla sekunnilla päivässä.

Ratkaisu on käyttää oikeaa reaaliaikaista kelloa, jota ohjaa yleisesti 32768Hz: n kellokide. Nämä kiteet ovat helposti 10 kertaa tarkempia. Voit joko asettaa oma oskillaattori, joka keskeyttää pääprosessorin ja pitää laskennan Arduino-luonnoksessasi tai löydät RTC-levyn.

Kaksi satunnaista esimerkkiä, jotka avautuvat Googlessa hakutermeillä "RTC breakout":



Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 3.0-lisenssistä, jolla sitä jaetaan.
Loading...