Op 28 augustus 2013 08:52:31 schreef Hoihoi:
Ik heb een ds1307 rtc besteld voor de arduino; weten jullie of die ook stand alone kan werken voor een 1hz puls?
De datasheet is je vriend. *
Ik hou er niet van om de nixie's te multiplexien [...]
Met 2x3 multiplexing zou ik nog uitkomen met de arduino UNO. Zonder multiplexing moet ik al aan de arduino maxi denken......
Als je niet wil multiplexen dan kan je IO expanders gebruiken. Die geven je, zoals de naam zegt, meer IO-pinnen. Een andere mogelijkheid voor dit doel zijn schuifregisters.
* Enkele relevante fragmenten uit de datasheet:
FEATURES
- Programmable Square-Wave Output SignalPin 7: Square Wave/Output Driver. When enabled, the SQWE bit set to 1, the SQW/OUT pin outputs one of four square-wave frequencies (1Hz, 4kHz, 8kHz, 32kHz).
CONTROL REGISTER
Bit 4: Square-Wave Enable (SQWE). This bit, when set to logic 1, enables the oscillator output. The frequency of the square-wave output depends upon the value of the RS0 and RS1 bits. With the square-wave output set to 1Hz,
the clock registers update on the falling edge of the square wave. On initial application of power to the device, this bit is typically set to a 0.
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Levensduur van gemultiplexte nixies is niet veel korter als van niet gemultiplexte, als je de stroom maar niet te hoog maakt.
Voor de ZM1030 geeft Philips zelfs een minimum life expectancy van 50.000 uur, en de ZM1030 is intern gemultiplexed 'by nature' (heeft maar 9 pinnen)
Hoihoi
Michel
Nou, sorry jongens maar ik kom er met de code toch niet uit. Helaas kan ik nu even niet de code posten.
Whats happening ?
Heb een ds1307 module gekocht voor de arduino. Beetje mee zitten spelen op een lcd, no problem.
Probleem zit hem in het hoe ik bijvoorbeeld het minuten getal die uit de ds1307 komt kan splitsen naar 2 cijfers (/10). Hoe doe je dat in de code?
Nog een problem. Ik heb een 4 bit lijn voor de 0-9 cijfers (7 segment driver) en een 2 bit lijn voor de blok selectie (ik heb 4 blokken). Dit om eerst te testen met m'n 7 segment proef bordje. Hoe doorloop je die 2 arrays om je getal te laten zien. (Snap er niets meer van.....)
Heb zo veel sites bezocht en bekeken daar wordt je eng van maar niet de code die ik zoek. Kan iemand mij helpen alstublieft?
Op 23 augustus 2013 16:34:04 schreef Arco:
DS1307 is hooguit om het programma iets simpeler te maken, heeft zeker niets met nauwkeurigheid te maken. (Ze lopen tenslotte beiden op een kristal...)
Neen.
Je programma wordt veel ingewikkelder, maar het is nauwkeuriger.
Als je gebruik maakt van het kristal van de Arduino zelf heb je al na enkele minuten een verschil van seconden. Als je hiermee een klok gaat maken moet je je uur alle dagen bijstellen of hij loopt ferm fout.
Bij de DS1302 daarentegen zit er zo goed als geen afwijking op (Ik heb dit een keer getest door hem 3 dagen te laten draaien, en er was geen seconde verschoven t.o.v. de klok van de PC)
Met de arduino time library (en wire, en ds1307 library) is het een fluitje van een cent. Ik had mijn klok lopen in 5 minuten.
http://www.pjrc.com/teensy/td_libs_Time.html
Let op: time lib zelf gebruikt de interne klok van de arduino, maar zodra je een reference clock toevoegt werkt ie wel degelijk extern. En dan in 2 regels code (1 setSyncProvider en 1 getTime). Ik kan dat niet korter.
Edit: voor het opsplitsen van de nummers kun je in C de modulo operator gebruiken
int getal = ....(0..99)
int digit1 = getal / 10;
Int digit2 = getal % 10;
[Bericht gewijzigd door RobvdVeer op (17%)]
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Als je een van de kristal c'tjes van die arduino vervangt door een trimmertje, kun je net zo exact afregelen.
Ik doe het meestal door per minuut een aantal cycles bij te tellen of af te trekken. Houdt je iets van 1 minuut afwijking per jaar over.
Waatrschijnlijk heb je met die DS1307 net geluk gehad en een precies lopend kristal getroffen. Anders is het niet te verklaren.
Op 4 september 2013 21:15:37 schreef Hoihoi:
Probleem zit hem in het hoe ik bijvoorbeeld het minuten getal die uit de ds1307 komt kan splitsen naar 2 cijfers (/10). Hoe doe je dat in de code?
...
Met de functie modulo kun je de rest van een breuk bereken.
610 minuten / 60 ≈ 6 uur (wel even opletten of je afrondingen goed gaan)
nu de functie modulo:
610 minuten % 60 = 10
Dus 6:10
Nog een problem. Ik heb een 4 bit lijn voor de 0-9 cijfers (7 segment driver) en een 2 bit lijn voor de blok selectie (ik heb 4 blokken). Dit om eerst te testen met m'n 7 segment proef bordje. Hoe doorloop je die 2 arrays om je getal te laten zien
Weet niet of dit het meest efficient is, maar dit kan ook met modulo (rest). Wat je moet proberen is om vier losse getallen te krijgen. Men neme 12:15 als voorbeeld. Het eerste array bevat nu 12.
12/10 ≈ 1 --> eerste getal wordt 'n 1 (let weer op of de afrondingen goed gaan)
12%10 = 2 --> tweede getal wordt een twee
Ik hoop dat mijn verhaal duidelijk is.
Hoihoi
Michel
Nou ik zit even met mn ds1307 module te stoeien. Ik had de tijd ingesteld op dat ding en aan de praat gekregen op een lcd scherm.
Elke dag heb ik wel even mee gespeeld en hij hield de tijd gewoon bij zodra de spanning eraf was.
Vervolgens op vakantie voor een week. Ik doe de stekker in het stopcontact en de tijd en de dag is 3 dagen + een aantal uur verlopen.
Zo is hij aangesloten (behalve de ds-pin naar digital pin 2, is toch voor optionele temperatuur uitlezing).
Er zit een batterij op.
snap er niets van...
3 dagen verschil in een week is wel èrg veel. Maar de bedrading is zo moeilijk te zien op het plaatje...
Hoihoi
Michel
Het plaatje is idd te klein zie ik nu maar zo lastig aangesloten is hij niet.
2 pinnen op de i2c bus en de 2 analoge poorten ernaast heb ik laag en hoog gemaakt zodat die de ds1307 voeden (<20mA).
Ik heb dezelfde ds1307 vorige week weer hergeprogrammeerd met de juiste tijd maar nu niet aangesloten op het arduino bord (los op mn bureau). Ik zal morgen even kijken of hij de tijd nog weet.
Zou het kunnen dat de batterij leegloopt over de analoge poorten van de arduino en dat ik hem toch maar direct moet voeden?
En er zit toch een laadcircuit op die ds1307 bordjes?
Op 23 september 2013 10:55:41 schreef Hoihoi:
En er zit toch een laadcircuit op die ds1307 bordjes?
Eehm nee. Bovendien is de batterij in de ds1307 geen oplaadbare. Maar los daarvan zou het niet zo mogen zijn dat de batterij de arduino gaat voeden, als dat zo is, is er iets goed mis.
Op 23 september 2013 10:59:35 schreef RobvdVeer:
[...]
Eehm nee. Bovendien is de batterij in de ds1307 geen oplaadbare. Maar los daarvan zou het niet zo mogen zijn dat de batterij de arduino gaat voeden, als dat zo is, is er iets goed mis.
Ehm, zeker weten? In dit specifieke geval zit er een laadcircuit op. Heb laatst er een gekocht voor exact hetzelfde doel (een arduino klok).
Er zit een LIR2032 cel op, was zelf ook verrast.
Die had ik niet verwacht... En is een laadcircuit werkelijk zo eenvoudig? Want dan ga ik dat meteen inbouwen in mijn eigen ontwerp.
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Oplaadbaar maken heeft weinig zin. Een standaard 2032 gaat al minimaal 10 jaar mee. (Dan is de oplaadbare ook wel gaar)
Daarbij ook nog dat een 'gewone' zo'n 250mA is, en een oplaadbare maar 40mA...
Op 23 september 2013 23:28:25 schreef Arco:
Oplaadbaar maken heeft weinig zin. Een standaard 2032 gaat al minimaal 10 jaar mee. (Dan is de oplaadbare ook wel gaar)
Da's ook weer waar.. Bedankt dat je me weer met beide benen op de grond zet. Ik zou eerst moeten focussen op het afkrijgen, voordat ik het ga verbeteren. 
Het lijkt erop dat overladen een mogelijkheid is.
Uitgaande van de 1N4148 spanningsval van 0,6V heb je met een 5V voeding een maximale laadspanning van 4,4V. Dat is meer dan 4.2V.
Wellicht door R5, R4+R6 en het verbruik van de DS1307 valt het mee?
R4+R6 geven een verbruik van 2,1uA (bij 4.2V). De DS1307 heeft een verbruik van max 50nA als de voeding erop staat, dus die negeren we even. Stroom door R5 zou 1mA kunnen zijn (bij 0,2V).
Bij elkaar opgeteld word er dus altijd overladen als de schakeling altijd aan staat.
Nu ik er zo over nadenk, wellicht verstandig om de LIR2032 te vervangen voor een CR2032 en het laadcircuit er af te slopen. (maar dat hebben jij en Arco ook al bedacht tijdens het typen van deze post)
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Op 23 september 2013 23:49:52 schreef dino7:
Uitgaande van de 1N4148 spanningsval van 0,6V heb je met een 5V voeding een maximale laadspanning van 4,4V. Dat is meer dan 4.2V.
De 0.6V gaat uit van een "normale stroom". Zodra je nauwelijks stroom trekt neemt de spanningsval over een diode ook weer af. Voor een onbelaste gelijkrichter/condensator-afvlakking zal je ook iets van 0V spanningsval over de diodes meten.
Ga je de boel uit een 5V lader-ding voeden staat er ook wel eens 5.5V op. Zeker als je nauwelijks stroom trekt. Kortom, lithium ion laden vanaf de 5V met een diode als spanningsval vind ik een dom plan.
Hoihoi
Michel
hmnn, heb even een foto gemaakt van mijn module.
Volgens mij heb ik dan de batterij laad module....

Ik heb net de module weer uitgelezen en hij is weer behoorlijk verlopen..... welke componenten uit het schema van dino7 moet ik dan even kapot knippen/lossolderen en/of overbruggen? Kan ik even kijken of het daar aan schort. dan zet ik daarna er wel een CR2032 op.
Hopelijk los ik daarmee een probleem op en kunnen er meerdere mensen hiermee geholpen zijn.
[Bericht gewijzigd door Hoihoi op (12%)]
Hoihoi
Michel
Ok, het is gebeurd. De componenten verwijderd/overbrugd en een cr2032 erop gezet. vervolgens gesync met de pc tijd. ik leg hem nu weer een week weg en kijken wat hij doet.
Verder had ik nog zo'n module en die sluitte ik op precies dezelfde manier aan en die ging 2x zo snel! Nu net deed hij helemaal niets meer, ik snap er niets van. Ik denk dat ik twee maandag-ochtend modules heb gekocht. Hopelijk doet er 1 het weer goed, we weten het volgende week....
Ik heb ergens gelezen dat je de behuizing van het xtal aan de GND moet leggen, dit zou allerlei vage problemen oplossen. Zal nog kijken of ik het artikel kan vinden.
Dit was het http://forum.arduino.cc/index.php?topic=87846.0
Maar lees ok dat je niet aan het xtal behuizing moet solderen zonder voldoende warmte afvoer.
Mischien heb je iets aan dit artikel.
Amsterdamse Tukker
Zoek en je zult vinden...
Als ik zo rond zoek dan blijkt de ds1307 gewoon niet zo nauwkeurig te zijn. Misschien hier (DS3231) eens naar kijken?
Hoihoi
Michel
Hè jammer, ik had niet van de ds3231 gehoord. Ik heb er gelijk 1 gekocht op ebay, bedankt voor de tip. Ik gebruik dan die ds1307 voor mn prototype...
@rolo; dat zou wel kunnen ja, dat andere bordje zat het kristal los (dus niet met behuizing aan GND).
Mijn idee is om er ook een Dekatron spinner in te zetten die via de SQW output van een DS1307/3231 1 HZ puls precies in 1 seconde ronddraait (per seconde dus). Ik ben dus nog op zoek naar een schema die dat kan realiseren.
Het eindigen van het draaien hoeft niet op de ms nauwkeurig (als jullie begrijpen wat ik bedoel) na een 1 Hz puls moet hij starten met draaien zeg maar. Ik zelf vind het mooi als hij in +/- 0,8 sec klaar is met 1 cirkel draaien (instelbaar met potmeter). En dat hij dan wacht op de volgende 1hz puls.
Iemand een idee?
Ik ben ook wat aan het experimenteren met zo'n zelfde DS1307 module. Ik heb als eerste de aanpassingen gedaan voor gebruik van een normale CR2032, en ik heb de twee I2C pull-up weerstanden ook verwijderd, ik wilde deze module samen gebruiken met een I2C LCD display en samen op de I2C bus merkte ik dat de RTC module niet meer reageerde, alleen op de bus wel. Nu zonder die pull-up weerstanden werkt bij goed. Ik gebruik nu niet de Time library en ook niet een DS1307 library maar lees en schrijf direct naar de registers van de DS1307.
Zo leer ik de werking van de chip beter kennen. Werkt goed alleen erg onnauwkeurig, zoals ook al eerder in deze post gezegd. Hij wijkt nu in twee dagen al 30 seconden af, als je dat even doorrekent is het echt onacceptabel, dus wie dat beter wil moet overstappen naar de DS3231 of DS3232.