
Nixie klocka funderingar och tankar
-
- Inlägg: 1669
- Blev medlem: 8 december 2004, 00:03:49
- Ort: Falköping
Kort o gott en superb Pic programerare
kolla sodjans sida
Men nu såg jag att man kunde ladda ner picfiler från tubehobbys sida.. hmm
kolla sodjans sida
Men nu såg jag att man kunde ladda ner picfiler från tubehobbys sida.. hmm
Senast redigerad av Jim_the_one 28 november 2006, 19:00:54, redigerad totalt 1 gång.
Hmm sitter och kollar bland gamla papper och har kommit fram till att då vi höll på med det i skolan hade vi en PIC16F877 ifrån Microchip.
Hittade en liten kodbit som ska ta ca en sekund. Det blir problem eftersom man med en klocka vill ha 1 sekund så den inte går för mkt fel efter några veckor. Iaf så ser koden ut så här
Fast när jag läser det minns jag inte ett smack ifrån det 
Hittade en liten kodbit som ska ta ca en sekund. Det blir problem eftersom man med en klocka vill ha 1 sekund så den inte går för mkt fel efter några veckor. Iaf så ser koden ut så här
Kod: Markera allt
;***** Subrutinen "Wait1" fördröjning med TMR0. (tar ca 1 sek.) *****
Wait1
btfss INTCON,T0IF ;Hoppa över nästa instruktion om bit2
;(T0IF) = 1
goto Wait1
bcf INTCON,T0IF ;Nollställer bit2 (T0IF).
decfsz delay1 ;Hoppa över nästa instruktion om
;delay1 = 0
goto Wait1
movlw tid1
movwf delay1 ;Delay1 laddas med tid (D'75')
return ;Åter till därifrån vi kom i
;huvudprogrammet.

Du kan (bör) inte bygga en klocka enbart genom fördröjningar i koden. Det blir aldrig exakt nog... Däremot finns det enkla och rätt så billiga chip som innehåller en realtidsklocka som är exakta nog. Eller så använder du interupt och kanske en extra kristall.
Som sagt, kolla på min sida, där finns både schema och pic-kod till två olika varanter på nixieklockor... Även om du inte bygger rakt av så förklarar det säker en del...
//B1N4RY
Som sagt, kolla på min sida, där finns både schema och pic-kod till två olika varanter på nixieklockor... Även om du inte bygger rakt av så förklarar det säker en del...
//B1N4RY
B1n4ry kollade på din sida och såg att du hade använd IN-18 rör till en klocka som är nästan identiska mot IN-16 förutom storleken och strömåtgången.
Enligt schemat verkar du mata dom med 200V istället för 170V hur reagerar dom på det? Däremot schemat verkar inte allt för krångligt om jag säger så, borde inte vara någe större problem att plocka bort sekundrören.
Enligt schemat verkar du mata dom med 200V istället för 170V hur reagerar dom på det? Däremot schemat verkar inte allt för krångligt om jag säger så, borde inte vara någe större problem att plocka bort sekundrören.
Såg att det var lite rörigt(!) förklarat på min sida... #1 med alfanumeriska kör jag på likriktad nätspäning och den har B7971 rör.
Min andra klocka med IN-18 matar jag med 9v som switchas upp till 200V. Schemat på 9v till 200 omvandlaren finns här!
MEN som sagt, du kan köra direkt med likriktad nätspänning men du måste ha motstånd på samma sätt som till lysdioder.
Finns schema och mycket mer info på Mikes electric stuff
//B1N4RY
Min andra klocka med IN-18 matar jag med 9v som switchas upp till 200V. Schemat på 9v till 200 omvandlaren finns här!
MEN som sagt, du kan köra direkt med likriktad nätspänning men du måste ha motstånd på samma sätt som till lysdioder.
Finns schema och mycket mer info på Mikes electric stuff
//B1N4RY
Men men nu skippar vi klocka nr1 och 3 då det är helt fel rör, blir lättast så för mig 
Så detta schema är det som gäller: http://www.mohr.se/electronics/Nixieclo ... ematic.pdf
och detta program: http://www.mohr.se/electronics/Nixieclo ... Source.zip
Om man ska ta bort sekunderna får man väl ta bort allt som går ut på PB0 ifrån PIC16F84 och sen är det ganska klart väl eller är jag helt fel ute? Även ta bort 2 stycken 4094 samt några MPSA42 och motstånd så borde det göra susen
Då borde man inte heller behöva skriva om programmet för PIC16F84 heller eftersom den då bara skickar ut signaler på ett tomt ben eller man kanske ska gjorda tomma ben eller hur det är?
Dock är jag fortfarande fundersam på vad rören tycker om 200V istället för 170V, alltså 30V för mkt?
Går det med hjälp av denna http://www.electricstuff.co.uk/nixpsu.html att få ut 170V istället för 200V på ett enkelt sätt?
Helt slut i huvudet är jag verkar det som
EDIT:
Nu blev det rörigt i huvudet. Såg att det bara är 4 stycken 4094:or enligt schemat. Hur får man ihop det? Trodde det var en till 10-tal timmar, en till 1-tal timmar, sen för minuter och sekunder likadant.

Så detta schema är det som gäller: http://www.mohr.se/electronics/Nixieclo ... ematic.pdf
och detta program: http://www.mohr.se/electronics/Nixieclo ... Source.zip
Om man ska ta bort sekunderna får man väl ta bort allt som går ut på PB0 ifrån PIC16F84 och sen är det ganska klart väl eller är jag helt fel ute? Även ta bort 2 stycken 4094 samt några MPSA42 och motstånd så borde det göra susen

Dock är jag fortfarande fundersam på vad rören tycker om 200V istället för 170V, alltså 30V för mkt?
Går det med hjälp av denna http://www.electricstuff.co.uk/nixpsu.html att få ut 170V istället för 200V på ett enkelt sätt?
Helt slut i huvudet är jag verkar det som

EDIT:
Nu blev det rörigt i huvudet. Såg att det bara är 4 stycken 4094:or enligt schemat. Hur får man ihop det? Trodde det var en till 10-tal timmar, en till 1-tal timmar, sen för minuter och sekunder likadant.
Öhrrrm... Det där schemat ser inte riktigt friskt ut. Har en tillfixad variant tror jag. Sorry... Har nog kört lite för mycket copy-paste...
Den klockan är iaf multiplexad. Bara 2 rör är tända åt gången. Det går alltså åt 20st utgångar och det är således 1st 4094 för mycket i schemat.
Som du säger kan du skippa trissorna som sitter på PB0.
MEN! som någon annan skrev så tycker jag du skall skippa multiplexingen och bygga en direktdriven klocka. Det är enklare rent programmässigt och det blir bättre samt sliter antagligen mindre på rören.
Enklast möjliga approach som jag skulle rekomendera:
1) 4st rör. Hur många utgångar behövs?
Rör 1 (10 tim) = 0,1,2 = 2st
Rör 2 ( 1 tim) = 0-9 = 10st
Rör 2 (10 min) = 0-5 = 6st
Rör 4 ( 1 min) = 0-9 = 10st
Detta ger totalt 28 utgångar. (+ev kolon)
De serie till parallell-register jag kör med (4094) har 8 utångar. Totalt alltså 4st 4094 för att täcka in de 28 eller 29 som behövs.
Du kan dessutom pulsa OE (output enable) ingången på 4094:orna för att reglera ljusstyrkan (=PWM)
Varje utgång från 4094:orna genom ett motstånd på 1k till basen på en MPSA42 som jag gjort i mitt schema. Men eftersom du bara tänder ETT "segment" åt gången i varje rör så behöver du inte ett motstånd efter varje transistor. Du kan sätta ett enda motstånd på anoden på varje rör i stället.
Detta motstånd står för strömbegränsningen till rören. Det spelar alltså ingen roll exakt vilken spänning du har ut ur omvandlaren eftersom den spänning som blir över hamnar över motstånden! Tror det finns uträkningsexempel på mikes sida. annars räknar man som med lysdioder men med lite högre spännings... *hehe* Man kan dessutom sänka spänningen. Det står på mikes sida hur man gör...
Sedan så tycker jag du skall använda en nyare PIC. 16F84 är gammal och har inte t.ex. I2C-gränssnitt i hårdvara vilket många nyare har och just I2C används för att prata med klockkretsen. Blir alltså enklare med en nyare pic. Jag skulle nog ta en 16F870 eller en 18F2220 eftersom jag har dom hemma men det finns många andra som funkar lika bra...
Edit: Jag kan skissa lite på ett schema i morgon...
//B1N4RY
Den klockan är iaf multiplexad. Bara 2 rör är tända åt gången. Det går alltså åt 20st utgångar och det är således 1st 4094 för mycket i schemat.
Som du säger kan du skippa trissorna som sitter på PB0.
MEN! som någon annan skrev så tycker jag du skall skippa multiplexingen och bygga en direktdriven klocka. Det är enklare rent programmässigt och det blir bättre samt sliter antagligen mindre på rören.
Enklast möjliga approach som jag skulle rekomendera:
1) 4st rör. Hur många utgångar behövs?
Rör 1 (10 tim) = 0,1,2 = 2st
Rör 2 ( 1 tim) = 0-9 = 10st
Rör 2 (10 min) = 0-5 = 6st
Rör 4 ( 1 min) = 0-9 = 10st
Detta ger totalt 28 utgångar. (+ev kolon)
De serie till parallell-register jag kör med (4094) har 8 utångar. Totalt alltså 4st 4094 för att täcka in de 28 eller 29 som behövs.
Du kan dessutom pulsa OE (output enable) ingången på 4094:orna för att reglera ljusstyrkan (=PWM)
Varje utgång från 4094:orna genom ett motstånd på 1k till basen på en MPSA42 som jag gjort i mitt schema. Men eftersom du bara tänder ETT "segment" åt gången i varje rör så behöver du inte ett motstånd efter varje transistor. Du kan sätta ett enda motstånd på anoden på varje rör i stället.
Detta motstånd står för strömbegränsningen till rören. Det spelar alltså ingen roll exakt vilken spänning du har ut ur omvandlaren eftersom den spänning som blir över hamnar över motstånden! Tror det finns uträkningsexempel på mikes sida. annars räknar man som med lysdioder men med lite högre spännings... *hehe* Man kan dessutom sänka spänningen. Det står på mikes sida hur man gör...
Sedan så tycker jag du skall använda en nyare PIC. 16F84 är gammal och har inte t.ex. I2C-gränssnitt i hårdvara vilket många nyare har och just I2C används för att prata med klockkretsen. Blir alltså enklare med en nyare pic. Jag skulle nog ta en 16F870 eller en 18F2220 eftersom jag har dom hemma men det finns många andra som funkar lika bra...
Edit: Jag kan skissa lite på ett schema i morgon...
//B1N4RY
B1n4ry vore riktigt snällt om du kunde skissa lite på ett schema 
Efter att fått ihop vad som behövs i komponentväg så är det bara få ihop allt med rätt komponenter samt få ihop ett program till en lämplig PIC. Har som sagt ingen PIC överhuvudtaget hemma och inte heller programmerare men en Wisp628 ligger inte långt borta just nu om man säger så.

Efter att fått ihop vad som behövs i komponentväg så är det bara få ihop allt med rätt komponenter samt få ihop ett program till en lämplig PIC. Har som sagt ingen PIC överhuvudtaget hemma och inte heller programmerare men en Wisp628 ligger inte långt borta just nu om man säger så.
Varför använder Ni inte ryska K155ID1 för att driva rören? Med sådana slipper man en drös lösa trissor för katoderna. För att styraljusstyrkan använder man då en switch i anodmatningen istället.
Skippa realtidsklockan, det finns mycket enkla sätt att justera i programvara med obegränsad upplösning. En PIC med extern kristall håller sig hyfsat stabil. Det är bara stabilitet man skall stäva efter, inte någon exakt frekvens eftersom den kalibreras i mjukvara.
Orkar man göra sig besväret skulle det gå att ha en termistor som mätte temperaturen och ändrade steglängden per tick. Det borde kunna ge mycket god noggrannhet. Eller prova ut kondingar med rätt temperaturkoefficient.
För att rören skall vara så länge som möjligt så bör man rotera dem mellan de olika platserna. Det är lite besvärligt att lösa rent praktiskt och inte många som gör det, men tänk på att 10-timmarssiffran annars bara sliter på 0,1 och lite på 2. De siffror som anges för livslängd på europeiska/amerikanska rör gäller bara om de cyklas över alla 10 katoderna. Annars är siffran mycke lägre.
Som jämförelse till de ryska rörens specar kan nämnas Burroughs B5870, som är specde 200,000h. Det är över 22 år. Jämför det med vissa ryska som har 1,000h, vilket är knappt 42 dygn.
Nu håller de ryska i allmänhet mycket längre, det rapporteras om 3 år dygnet runt för klockor med IN-12, som visst är specade 7,500h vill jag minnas. Undrar om de ryska specarna kanske är vid max ström och bara en siffra hela tiden?
Skippa realtidsklockan, det finns mycket enkla sätt att justera i programvara med obegränsad upplösning. En PIC med extern kristall håller sig hyfsat stabil. Det är bara stabilitet man skall stäva efter, inte någon exakt frekvens eftersom den kalibreras i mjukvara.
Orkar man göra sig besväret skulle det gå att ha en termistor som mätte temperaturen och ändrade steglängden per tick. Det borde kunna ge mycket god noggrannhet. Eller prova ut kondingar med rätt temperaturkoefficient.
För att rören skall vara så länge som möjligt så bör man rotera dem mellan de olika platserna. Det är lite besvärligt att lösa rent praktiskt och inte många som gör det, men tänk på att 10-timmarssiffran annars bara sliter på 0,1 och lite på 2. De siffror som anges för livslängd på europeiska/amerikanska rör gäller bara om de cyklas över alla 10 katoderna. Annars är siffran mycke lägre.
Som jämförelse till de ryska rörens specar kan nämnas Burroughs B5870, som är specde 200,000h. Det är över 22 år. Jämför det med vissa ryska som har 1,000h, vilket är knappt 42 dygn.
Nu håller de ryska i allmänhet mycket längre, det rapporteras om 3 år dygnet runt för klockor med IN-12, som visst är specade 7,500h vill jag minnas. Undrar om de ryska specarna kanske är vid max ström och bara en siffra hela tiden?
-
- Inlägg: 1669
- Blev medlem: 8 december 2004, 00:03:49
- Ort: Falköping
Tja, alla sätt är bra utom dom dåliga. Sedan är det ju upp till var och en om man vill grotta ner sig i sin kod för att åstadkomma tidräkningen med tillräcklig precision eller om man bara vill läsa av aktuellt klockslag rakt av i BCD kod från en 25:- krets. 
När det gäller K155ID1 så var jag inne på att använda dom men då drar man ju massa mer pinnar på sin PIC. (16st istället för 4st om man kör med 4094 och MPSA42) Skall man sedan ha några knappar och kanske DCF ingång så hade inte min 16F84 räckt så långt. Men har man gott om I/O så kan det ju vara ett alternativ...
//B1N4RY

När det gäller K155ID1 så var jag inne på att använda dom men då drar man ju massa mer pinnar på sin PIC. (16st istället för 4st om man kör med 4094 och MPSA42) Skall man sedan ha några knappar och kanske DCF ingång så hade inte min 16F84 räckt så långt. Men har man gott om I/O så kan det ju vara ett alternativ...
//B1N4RY
Blir en aning fundersam nu efter att ha kollat på det nya schemat. Alla 200V är borta och ser ut att vara utbytta mot jord, är det jag som ser galet? Förstår att 200V måste finnas kvar iaf.B1n4ry skrev:Jag gjorde en liten snabb skiss i Grafigo...
Inte komplett och säkert inte felfritt men principen iaf...
Länk!
Jag funderar precis på om man kanske skulle bygga en nixieklocka med reläer... Jag har ju några 100 reläer från helgens ETA-auktion... *Hmmm*
//B1N4RY
Nya schemat har en 10MHz kristall istället för en på 16MHz som den gamla. Varför det nu då? Den på 32kHz finns fortfarande kvar.
Annars verkar det ganska klart förutom att vissa värden inte är med.
Man behöver inte slösa I/O för att använda K155ID1, byt 4094 mot 74HCT595 och anslut två nixiedrivers till varje.
Koden för klockkalibrering är jätteenkel.
Svårare än så här är det inte att kunna justera i tvåhudrafemtiosjättedelar av timerintervallet. Vill man ha sextiofemtusenfemhundratrettiosjättedelar istället är det bara att lägga till en byte extra under TIMER. Mer noggrannhet än denna precicion medger att utnyttja lär inte kunna uppnås av en kristall.
En stor fördel, kalibreringen är DIGITAL, inte en trimkonding. Mäter man felets storlek under en viss tid kan man kalibrera direkt sedan utan att känna sig fram femtioelva gånger eller använda en supernoggrann frekvensräknare för att ställa kondingen. Sedan driver kristallen är räknaren kopplas bort...
Koden för klockkalibrering är jätteenkel.
Kod: Markera allt
TIMER 1 BYTE
SUBTIM I BYTE
TICPS TICKS PER SEKUND
TICIRQ TIMER INTERRUPTRUTIN
RÄKNA NER TIMER
RTI OM DEN INTE ÄR NOLL
ADDERA LÅGA BYTEN AV TICPS TILL SUBTIM
ADDERA MED CARRY HÖGA BYTEN AV TICPS TILL TIMER
RÄKNA UPP KLOCKAN EN SEKUND
RTI
En stor fördel, kalibreringen är DIGITAL, inte en trimkonding. Mäter man felets storlek under en viss tid kan man kalibrera direkt sedan utan att känna sig fram femtioelva gånger eller använda en supernoggrann frekvensräknare för att ställa kondingen. Sedan driver kristallen är räknaren kopplas bort...