Hi,

Voor een aantal projectjes betreffende het loggen van data, heb ik een klok moduul nodig die b.v. is uitgerust met een Maxim klok IC.

De meest bekende is de DS1307 Real Time Clock, deze is lekker goedkoop maar je zal er zelf een 32Khz xtal aan moeten knopen.
Er zijn natuurlijk via ebay zat printjes te koop, waarbij dat solderen van het xtal niet nodig is.

De eerste testen heb ik ook gedaan met een moduul dat dit IC bevatte.
Langzamerhand kwam ik er achter wat er zoal nodig was, voor het uitlezen van de tijd en later het instellen van de tijd.

Dat is natuurlijk geen "Rocket Sience" maar wel als je ziet welke library's er allemaal voor deze serie klok IC's zijn.
Het bekende "Library Worstellen" is mij nu niet meer vreemd *grin*

Ergens in juli heb ik een hand van de DS3231 printjes gekocht, dit was ik vergeten en toen heb ik nog een hand van de dingen gekocht,
nu zijn er hier zo'n 25 stuks DS3231 printjes voor handen :-)
Deze komen trouwens van Banggood.

Omdat ik nieuwsgierig was, had ik ook nog 5 stuks bij Deal Extreme gekocht, laat dat verder maar uit je hoofd, als je geen geld wil weg gooien.
Die IC's op de Deal Extreme printjes hebben niets met de DS3231 te maken.
De oscilator frequentie, swabbert als een dronken hoer op een fiets... <== Oude uitdrukking, werd hier regelmatig gebruikt in Amsterdam.

Door flink te zoeken en te lezen over deze klok IC's kwam ik er echter dat voor de modellen die op de printjes zitten,
er temperatuur compensatie aanwezig is en er een register in zit, waarmee je de frequentie van het 32 Khz xtal kan tunen.
Er zijn twee belangrijke eigenschappen die de nauwkeurigheid over tijd bepalen van deze klok IC's,
dat is de temperatuur en hoe goed de klok frequentie is ingesteld. (32,768KHz)
De moduul die ik net heb afgeregeld staat op 32,768.000.864 KHZ, en dit is niet op 000 te krijgen wat de laatste drie digits betreft.

De versie van het IC op de printjes die ik heb is deze DS3231DS, en heb geen idee of er echt een 32KHZ xtal in zit of iets in de 6 a 10MHZ.
Lijkt mij een beetje moeilijk in een 16 pins SO behuizing een 32KHZ xtal te proppen.
Hoe ze het ook doen, de frequentie is dus te tunen met een klein stukje software, een Arduino en twee drukknopjes.
De datasheet zegt dat rond de 25C, de bitgrote van de stapjes ongeveer 0,1ppm is.

Voor het uitlezen van de 32,768.000.864 KHZ gebruik ik mijn Rigol DG4162 Functie generator waar ook een Counter in zit.
Deze heeft her voordeel t.o.v. mijn Racal Dana counter, dat ik een langere Gate Time kan gebruiken, zelfs meer dan 10-Seconden, dat is trouwens extreem lang voor de Reciprocal stand die ik dan gebruik.
Je kan aan de waarde in de regel hierboven zien dat het 11 digits resolutie is, en daar zit redelijk wat "ruis" bij, daarom gebruik is de lange "Gate Time"
Als referentie wordt voor de Counter wordt de Miedema 10Mhz Referentie gebruikt, daar mijn GPS Referentie nog niet klaar is.
Maar het gaat mij hier niet om precies de 32,768KHz te krijgen, want dat kan niet omdat de resolutie van het afregel register niet voldoende is en te temperatuur correctie ook niet zo nauwkeurig is van het IC.

Goed afgesteld zou de afwijken binnen 1 minuut per jaar moeten zijn, ze geven 2ppm/jaar op.
Hou er ook rekening mee, dat ook de voeding spanning 1ppm/V is.
Misschien een manier om toch precies op 32,768.000.00 KHZ af te regelen :-)

En dan het probleem waar ik tegeen aan liep...
Tot vanavond kon ik geen software vinden die de klok echt goed instelde, de afwijking als ik een Arduino schets gebruik was bij de meest gunstige opstelling 7 seconde afwijking van de echte tijd!!!
En geen van die "Coder Apen" maakt melding van deze afwijkingen als je hun manier gebruikt voor het stellen van de tijd in de DS3231.
Ik weet ondertussen nog steeds niet waar deze grote afwijking allemaal in zit.
Ik speel het meeste met code op een Arduino Nano, waar ik er een stuk of vijf van heb zwerven hier in het LAB.
Vandaag ook de Arduino Duo geboot, de eerste keer, ook daarmee geworsteld, maar alsnog redelijk snel werkend gekregen.
Door de veel krachtiger processor van de Due en waarschijnlijk de andere manier van programmeren kwam ik op ongeveer 6 seconde afwijking uit.
De klok loopt dus altijd achter en met de Duo was dit het beste en rond de 6 seconde.

Dit vind ik pure onzin, dit moet binnen 1 seconde kunnen!
Er lag ook al een tijdje een Arduino Uno Ethernet Shield hier op de plank, zal ik eens zoeken op NTP en Arduino of ik dan iet zinnigs vind?
Na een stuk of 5 stukjes code te hebben gedownload en aangepast, lukte me het als eerste de klok van mijn NTP server uit te lezen (PiHole op een Rapbery PI 3) hier binnen mijn IP range.
Daarna een stukje code gevonden die de tijd uit mijn (of iedere andere tijdserver zoals ntp1.nl.net) in mijn DS3231 te proppen met een afwijking van net minder dan 1 seconde en dat vind ik mooi genoeg :-)

Ik vergelijk de tijd uit de DS3231 Klok moduul met de tijd die wordt weergegeven door de TAC32 software die aan een Ublox GPS ontvanger hangt.
Ondertussen heb ik een nog mooiere Ublox ontvangen binnen maar niet de gene die Henk voorstelde (electron920) zoals de LEA-M8F, de beste of de LEA-M8T , en deze zijn bijna niet te vinden/koop.
Maar dat is iets voor later.

Als eerste dan even de laatst GPS moduul die binnen kwam en nog niet getest is, de NEO-7M
Van deze moduul kan je een van de pinnen de uitgangs frequentie met wat software van Ublox instellen, hier zitten wel wat haken en ogen aan.
http://www.bramcam.nl/Arduino/NEO-7M-01.png

De test setup, een Ethernet Shield op een Uno en daar een DS3231 printje via i2c aan gekoppeld.
Vergeeet de Nano en Display dat je ook kan zien, deze worden nu niet gebruikt.
Nog een leuke...
De Arduino Uno had ik zeker twee jaar geleden gekocht, en ik heb drie orginele.
Erg vreemd gedrag hebben deze modules, ik kies voor de Uno in de IDE en kies het goede comm. port nummer.
In de IDE kan ik de gegeven opvragen van de aangesloten Arduino moduul en deze geeft de correcte gegevens terug, alles goed ingestel en OK denk je dan, nou vergeet het maar!
De Uno blijkt niet te programmeren, steeds geeft hij aan dat de comm port niet te vinden is, umh... en je hebt net de gegevens uitgelezen van de aangesloten Arduino...
Coder Apen dus, niet goed testen van je software.
De Arduino dan maar op een andere poort aangesloten en wel een USB2 poort en dan wel werken...
Al mijn clone Arduino's hebben geen enkel probleem met de USB3 poorten, maar ja, dit weet ik nu ook weer, bakken tijd gooi je weg door de klunzigheid van je medemens.
http://www.bramcam.nl/Arduino/Klok/DS3231-10.png

Dit is een plaatje van de Rigol DG4162 als Counter gebruikt, sorry voor de gele zweem, komt door het kunstlicht.
http://www.bramcam.nl/Arduino/Klok/DS3231-11.png

Dit zijn de Banggood modules.
http://www.bramcam.nl/Arduino/Klok/DS3231-09.png

Rechts kan je de Deal Extream moduul zien, die je dus maar beter niet kan kopen.
http://www.bramcam.nl/Arduino/Klok/DS3231-12.png

Als er mensen zijn die een goed afgeregelde klok moduul willen hebben dan zeg je het maar, een paar ben ik bereid weg te geven :-)

Waarom niet gewoon de logger maken met GPS tijd of NTP tijd zoals ik dat nu al kan doen.
Stroomverbruik en de ruimte die het inneemt zorgen er voor dat dit voor een aantal toepassingen niet geschikt is.

Deze code zet je DS3231 moduul gelijk aan en NTP server, ik heb mijn NTP Server er uit ge-edit wat het IP adres betreft, wel even een andere aanzetten.
www.bramcam.nl/Arduino/Klok/NTP-Time-Set-DS1307-2.ino

En dit is een simpel stukje code die de tijd uitleest van je DS3231 moduul.
www.bramcam.nl/Arduino/Klok/DS3231-ReadTest.ino

Niet vergeten dat veel PC klokken niet op tijd lopen ook al staat er een tijdserver ingevult om de PC op tijd te zetten.
Sommige computers zijn echt heel slecht wat tijd bijhoeden betreft, maar een DCF klokje kan je ook helpen of een bliep van een tijd station.

De code is gedraait op een Arduino Uno met een Ethernet Shield en dan via i2c verbonden met een Banggood DS3231 moduul met twee 2K7 pull up weerstanden voor de i2c pennen.
Ik kan niet garanderen dat het ook met andere Arduino of soortgenoten zal werken, zelf uitzoeken :-)

Gegroet,
Bram

Ha blackdog,

Interessante ontwikkeling altijd bruikbaar in de diverse projecten.
Ik gebruik de DS3232 is bijna geen verschil met de DS3231 alleen in de DS3232 is een klein beetje geheugen beschikbaar en de temperatuur overdracht kan je instellen.
De oscillator is een MEMS resonator dit is veel nauwkeuriger als de klok in je AVR op je (Arduino).
Ik weet niet meer uit het hoofd hoeveel klok pulsen de chip nodig heeft om het register te schrijven maar 5sec dat is wel heel veel misscien is een optie om de tijd 5sec vroeger in te voeren.

Groet Henk.

Ha die Henk, :-)

Ik heb vandaag wat samples aangevraagt bij Maxim van die nieuwere versie.
Zal wel een week duren voor de samples er zijn.

Het zal mij benieuwen wat de verschillen zullen zijn, misschien wat minder jitter?

Groet,
Bram

Die Deal Extreme modules kun je altijd nog gebruiken om een "echte" DS3231 op te zetten. Doe ik zelf ook regelmatig aangezien het zelf ontwerpen en laten maken van printjes vaak meer kost dan deze modules die ook nog gratis verzonden worden.

Morge Roland, :-)

Dat was ook de bedoeling, als de sampels binnen zijn krijgen de printjes een tweede leven.
Op min support vraag ovr de slecht werkende printjes kreeg ik een standaard antwoordt van Deal Extreme, maak een video!
Jaja, ik ga een video maken voor 7 euro handel, of ik niets anders te doen heb...

Trouwens, ik heb de code voor het op tijd zetten van de DS3231 een beetje aangepast,
de code staat ingesteld op GMT + 1 en op het ogenblik is het GMT +2.
Dus ik heb in het bestand dat downloadbaar is deze waarde even aangepast.
Als ik vanmiddag nog wat tijd heb, zal ik de link naar de maker van de code in dee code zetten, wel zo netjes :-)

Gegroet,
Blackdog

Hi Clock Nuts, ;-)

Ik heb de data van de ontwikkelaar van het NTP code er boven in geplakt.
Zelf heb ik nog zitten spelen "delay" opdrachten in de code, zowel voor het programmeren van de tijd in de DS3231 als de code die de tijd uitleest van de DS3231.

Het staat nu heel snel ingesteld in mijn code en ik kan zien dat het ruim binnen 1 seconde op tijd staat.
Jullie mogen er zelf mee spelen wat werkbaar is voor jullie.
Ik gebruik mijn eigen NTP server's, en die vinden het niet erg dat ik 10x per seconde de tijd opvraag :-)

Let dus op als je het zou willen versnellen in het NTP script,
hoe er dan rekening mee dat de NTP servers het niet leuk vinden als je ze te vaak aanroept, anders kom je op de ban lijst.
Het is leuk om te zien dat mijn tweede NTP server in het datacenter een zeer lage jitter heeft, het beste van de ingestelde tijdservers "0,589".
Zal wel door de lage belasting van het systeem komen en de mooie Gigabit uplink die de server heeft.

Mooi, ik ben er klaar mee, ik kan mijn klok modules mooi instellen.
Was er nog iemand die een "afgeregelde" module wilt hebben?

Gegroet,
Blackdog

Ha blackdog,

Heb je gekeken naar het andere chipie waarom die raar doet of niet doet wat je wil.

Hi Henk,

De Deal Extream DS3231 zwabbert de 32Khz klok als een gek, een stukje terug omschreef ik dit zwabberen iets anders *grin*

Maar als je het hebt over de UBLOX modules die goed te gebruiken zijn als referentie frequentie, daar heb ik ook naar gezocht.
Zoals je al aangaf, zijn de modules die je voorstelde wel de beste types hiervoor, maar ook slecht te verkrijgen voor een redelijke prijs...

Gegroet,
Bram

Hi,

Voor de gene die er intresse in hebben, hier onder een klikbaar plaatje van een "analoge" manier voor het regelen van de oven.
Dit is één van de schakelingen en deze is bedoeld voor de buiten oven.

Rechts zie je het relais dat de ovenwikelingen omschakeld van "Pre Heath" naar normaal als de oven een bepaalde temperatuur heeft bereikt, hier aangegeven ongeveer 38C.

Als de oven koud is, dan is de uitgang van de onderste LM358 opamp "0"
De basis van Q2 krijgt dan sturing en deze trekt de +ingang van de opamp naar de +24V toe.
Het gevolg hiervan is dat de uitgang van de opamp nu ook naar de 24V gaat en de Fet in de verzadiging gestuurd wordt.
Hier zou nog een zener van de Gate naar massa moeten worden gebracht daar de stuurspanning van de Geate tegen zijn grens zit.

Q3 begrenst de stroom door de verwarmings weerstanden, zodat het vermogen niet te hoog wordt in deze weertanden.
Als de "Pre Heath" temperatuur bereikt is wordt de uitgang van de onderste opamp ongeveer +24V het relais valt af.
Ook krijgt Q2 nu geen sturing meer en de bovenste opamp kan zijn normale werk gaan doen.

Er hoort dus nog een stukje schakeling bij die de opto coupler aanstuurd, deze schakeling bevat een brug waar de temperatuur sensor in hangt.
Deze schakeling is door de H11F1 galvanisch gescheiden van het sensor deel.
Nauwkeurig regelende ovens krijg je alleen, als je zeer goed oplet wat je aan het doen bent.
Het beste is dat je net zoveel aandacht aan dit regelcircuit geeft als aan de bouw van een spannings referentie.
Als jullie mij niet geloven, zoek dan maar eens naar artikelen over precisie ovens, ondermeer van Jim Williams en HP.
Ik had een inzichtelijke ervaring met een PWM geregelde oven, milimeter werk wat bedrading betreft, om het maar eningzins goed te laten regelen.
Het moest echt met een ster aardpunt worden opgebouwd bij die oven.

De schakeling die ik in maart getekend heb en nog niet klaar is/was.
http://www.bramcam.nl/NA/Dual-Oven/Dual-Oven-02-c-Klein.png

Met een microcontroler kan ik dus al aardig wat electronica vervangen en als het goed is ook leuker maken :-)

Gegroet,
Blackdog