Buggfix Plus
Aktuellt datum och tid: 23.30 2017-12-16

Alla tidsangivelser är UTC + 1 timme




Svara på tråd  [ 14 inlägg ] 
Författare Meddelande
InläggPostat: 21.54 2017-10-04 

Blev medlem: 19.27 2005-03-28
Inlägg: 193
Ort: Oskarshamn
Jag liksom mina föräldrar är anställda på Oskarshamns kärnkraftverk (OKG), jag är instrumentare och min pappa har varit anställd i driftorganisationen på O2 sedan innan jag ens var född, de senaste åren har han dock varit dagtidsgående. Mamma har en annan tjänst och har varit anställd sedan 1980-talet hon med men inte riktigt lika länge som farsan.
Sedan i somras så är det numera bara O3 som är i drift på halvön och därför har man monterat ned lite effekttavlor lite här och var på bygget (eller rivningskåken rättare sagt) eftersom att effekttavlor som visar noll megawatt är ändå ganska meningslöst.

En sådan effekttavla la jag beslag på :wink:
Bilaga:
DSC_0187.JPG


Min tanke är att få igång den så att den visar siffror igen och styra den med arduino eller liknande.
Dessutom vill jag att siffrorna är lite "levande" så att det ser verklighetstroget ut och inte siffrorna ligger helt statiskt på samma värde hela tiden, i alla fall den sista siffran så att t.ex O1 pendlar mellan 485 och 495 men oftast ligger runt 490.

Tanken är att ge den till farsan i present så småningom sen.

Det är alltså 2x3 7-segmentsdisplayer jag vill driva, varje segment består av 4st seriekopplade lysdioder och de drivs via en CA3081 som jag gissar funkar som förstärkare så att dioderna drivs via transistorutgångar. CA3081:an styrs i sin tur av en MC14511BCP.

Jag googlade fram ett datablad på Motorolakretsen och såg att den har en utgång för varje segment (a,b,c,d,e,f,g) samt ett gäng ingångar (A,B,C,D,LT,LE,BI).
Detta tycker jag verkar lite onödigt krångligt och tycker det vore enklare om man bara kunde styra displayen med fyra bitar (alltså A,B,C,D) och skippa LT,BI,LE.
Jag googlade lite och hittade en krets som heter "DM7446" som verkar funka precis så, är denna krets lämplig att använda sig av eller finns det något ännu bättre? 7446:an verkar ju lite halvt ovanlig men fördelen är att pinlayouten på utgångarna a - g ligger på samma ben som på MC14511BCP:an.

Med 2x3 7-segmentsdisplayer och varje display måste drivas av 4 bitar så behöver jag alltså en arduino med totalt 24 utgångar. Vilken bör jag välja?
Är det kanske billigare med två stycken arduino där var och en har 12 utgångar?


Logga in för att visa de filer som bifogats till detta inlägg.


Senast redigerad av pellebeefmaster 08.54 2017-10-05, redigerad totalt 1 gång.

Upp
 Profil  
 
InläggPostat: 23.02 2017-10-04 
EF Sponsor
Användarvisningsbild

Blev medlem: 02.11 2004-01-06
Inlägg: 3245
Ort: Hjälteby - Tjörn
Kul present :)
Du kan också ta en MAX7219 så behöver du bara fem trådar till displayen :)

https://datasheets.maximintegrated.com/en/ds/MAX7219-MAX7221.pdf


Upp
 Profil  
 
InläggPostat: 07.34 2017-10-05 

Blev medlem: 19.27 2005-03-28
Inlägg: 193
Ort: Oskarshamn
Igår innan jag gick och la mig så var det någon som hade svarat i tråden och tyckte att jag kunde multiplexa signalen direkt från Arduinot, på så sätt behövde jag bara använda mig av fyra utgångar för signalen och en aktiveringssignal för varje displayblock, alltså totalt 10 utgångar. Vad tog det inlägget vägen?

Cosmox:
Den där drivkretsen du länkar till verkar ju ha 24 ben, jag tänkte mig en krets som passar rakt uppåner i samma position som MC14511:an (som har 16 ben).
Men du kanske menar att jag ska ha den centralt placerad för styrningen istället för direkt från ett Arduino?
För jag förstår inte riktigt hur jag styr själva MAX7219:en nämligen, den verkar ju vara en egen liten CPU.
Vad för språk vill denna ha på ingången?


Upp
 Profil  
 
InläggPostat: 08.19 2017-10-05 
Användarvisningsbild

Blev medlem: 14.52 2005-01-10
Inlägg: 22400
Ort: Kristinehamn
"Onödigt krångligt" är det samma som "jag vill ha mycket mer krångel" i detta fall.

Men hur har du tänkt dig att styre den "slumpmässiga" visningen?

Jag vet hur jag skulle göra men hur har du tänkt dig det?

LE kan "låsa" utläsningen, ämnar du inte att använda den är det bara att koppla den till GND permanent.
BI är "Blanking Input", vill du inte släcka siffrorna lämnar du den kopplat till VDD permanent.
LT ("Lamp Test") låter du vara kopplat till VDD permanent.

Nu har du alltså ett färdigt system som drivs med 4 databit per siffra - som du efterfrågar.

Om detta är för mycket använder du LE (en per siffra) och kopplar alla A-ledare till alla displayen ihop, precis som med B, C & D. Då behöver du A, B, C & D + 6 st LE.

Är även detta för mycket också tar du en 1-av-8 eller 1-av-16 dekoder till att driva de 6 st LE, då behöver du totalt 7 databit för att styra rubbet.


Upp
 Profil  
 
InläggPostat: 11.38 2017-10-05 

Blev medlem: 19.27 2005-03-28
Inlägg: 193
Ort: Oskarshamn
Jag hade nog tänkt att mjukvaran ska sköta om den slumpmässiga visningen.
Frågan är bara hur man får till just "slumpmässigheten", det lär ju vara enklare att skriva ett program som följer en viss cykel.

Du får gärna förklara hur du hade löst det :)

Okej jag ger mig, jag hittade en annan sanningstabell för IC:n igår som tydligen var fel. Den här stämmer ju bättre och fungerar precis som jag menar så då behöver jag ju inte byta ut nåt:
Bilaga:
MC14511_sanningstabell.png

http://html.alldatasheet.com/html-pdf/170349/MOTOROLA/MC14511BCP/387/1/MC14511BCP.html


Logga in för att visa de filer som bifogats till detta inlägg.


Upp
 Profil  
 
InläggPostat: 12.52 2017-10-05 
Användarvisningsbild

Blev medlem: 07.13 2008-07-03
Inlägg: 11178
Ort: Norrköping
Jag har ingen aning om hur väl biblioteken till Arduino följer ANSI men jag antar att du har funktionen rand() i stdlib.h. Använd den.


Upp
 Profil  
 
InläggPostat: 12.58 2017-10-05 
Användarvisningsbild

Blev medlem: 14.52 2005-01-10
Inlägg: 22400
Ort: Kristinehamn
Jag hade tagit en PIC18F... med pinnar nog till att driva de 6 st BCD dataledningar. Alltså 24 ledningar.

Slumpen är enkelt att styra, ta två primtal och ha en variabel som sparas. För varje slumptal som behövs multiplicerar man variabeln med ena primtal och adderar det andra efteråt.

Då kan man plocka ut det antal bits man behöver eller skaler resultatet efter behov och adderar vad man vill.


Upp
 Profil  
 
InläggPostat: 16.15 2017-10-05 
EF Sponsor
Användarvisningsbild

Blev medlem: 15.29 2005-05-10
Inlägg: 35922
Ort: Söderköping
Det kanske inte ska hoppa slumpvis/momentant mellan 485 och 495
utan mer glida mellan värdena. Men man kan ju slumpa fram själva
ändringen +/1 ett steg med några sekunders intervall och låta det
justera den aktuella värdet...


Upp
 Profil  
 
InläggPostat: 18.31 2017-10-05 

Blev medlem: 19.27 2005-03-28
Inlägg: 193
Ort: Oskarshamn
lillahuset skrev:
Jag har ingen aning om hur väl biblioteken till Arduino följer ANSI men jag antar att du har funktionen rand() i stdlib.h. Använd den.

Det låter som ett smart sätt, det verkar som att funktionen finns men kommandot skrivas snarare såhär: https://www.arduino.cc/en/Reference/Random https://www.arduino.cc/en/Reference/RandomSeed.

Icecap skrev:
Jag hade tagit en PIC18F... med pinnar nog till att driva de 6 st BCD dataledningar. Alltså 24 ledningar.

Slumpen är enkelt att styra, ta två primtal och ha en variabel som sparas. För varje slumptal som behövs multiplicerar man variabeln med ena primtal och adderar det andra efteråt.

Då kan man plocka ut det antal bits man behöver eller skaler resultatet efter behov och adderar vad man vill.

Jag känner att logik är mer min starka sida än vad matematik är men jag ska forska i det där och se om jag blir något klokare.
(Jag är matematiskt efterbliven men Google underlättar om man ska tala klarspråk)

sodjan skrev:
Det kanske inte ska hoppa slumpvis/momentant mellan 485 och 495
utan mer glida mellan värdena. Men man kan ju slumpa fram själva
ändringen +/1 ett steg med några sekunders intervall och låta det
justera den aktuella värdet...

Jo självklart är det så, i ett kärnkraftverk (kokarreaktor) har man ju tre reglerloopar: En för nivåregleringen som regleras med matarvattenpumparna, en för tryckhållningen som regleras med pådragsventilen till turbinen och en för effekten som regleras med huvudcirkulationspumparna. All typ av reglering gör ju att det svänger lite som en sinuskurva och detta gör ju att effekten inte ligger riktigt som en rak linje hela tiden. Hade det bara funnits en reglerloop så hade förmodligen effekten också svängt som en sinuskurva men eftersom att det finns tre olika och alla med helt olika svarstider så svänger ju effekten lite oregelbundet. Ibland tar de ut varann, ibland plussar de på varann och ibland plussar de på varann fast inverterat. Sen påverkar ju även styrstavarnas positioner, temperaturen i havet och hur mycket klyvbart material som finns kvar i bränslet också effekten men det är ju överkurs. Men självklart så ska inte värdet på displayen ändras momentant flera MW.

Jag hittade föresten det försvunna inlägget och gjorde blixtsnabbt en skärmdump innan det försvinner igen.
Lägger in det mest för min egen skull som inspiration:
Bilaga:
platis.PNG


Logga in för att visa de filer som bifogats till detta inlägg.


Upp
 Profil  
 
InläggPostat: 19.14 2017-10-05 
Användarvisningsbild

Blev medlem: 07.13 2008-07-03
Inlägg: 11178
Ort: Norrköping
Nja, i ANSI C99 stdlib.h är det rand() som gäller, random() är definierad i en POSIX standard.
Om slumpmässigheten inte är så petig brukar rand() duga, som dessutom ingår i ANSI C99 och därför är portablare. Om man behöver bättre slumptal kan man använda random().
Oavsett vilken du använder behöver du inte krångla till det med att anropa srand()/srandom() eftersom det knappast spelar någon roll om slumpsekvensen är lika varje gång du startar displayen.


Upp
 Profil  
 
InläggPostat: 06.23 2017-10-06 

Blev medlem: 19.27 2005-03-28
Inlägg: 193
Ort: Oskarshamn
Är cykeltiden så pass snabb att man kan styra siffrorna med enbart 4 + 6 utgångar (A, B, C, D . 6st LE) utan problem eller är det risk att siffrorna börja flimmra?
Bör man kanske montera en liten kondensator på några få microfarad (eller ännu mindre) på varje "segment" för att slippa detta?


Upp
 Profil  
 
InläggPostat: 10.58 2017-10-06 
Användarvisningsbild

Blev medlem: 14.52 2005-01-10
Inlägg: 22400
Ort: Kristinehamn
Kondingar kan du skrota direkt!

Man multiplexar siffrarna vid att tända den valda siffra (position 1 - 2 - 3). Med en timer-interrupt växlar man sedan position med en hastighet av minst 150 Hz, men gärna 300 Hz.

Jag brukar spara värdet i några variabler och låta timer-ISR'n klarar scanningen. Då kan main-Main loop'en ändra värden som den vill.


Upp
 Profil  
 
InläggPostat: 11.37 2017-10-06 
Användarvisningsbild

Blev medlem: 07.13 2008-07-03
Inlägg: 11178
Ort: Norrköping
Som vanligt har Icecap rätt. :)


Upp
 Profil  
 
InläggPostat: 07.41 2017-10-07 

Blev medlem: 19.27 2005-03-28
Inlägg: 193
Ort: Oskarshamn
Jepp, forum med medlemmar som har bra kunskaper i ämnet är guld värda för oss hemmapulare! :) :tumupp:


Upp
 Profil  
 
Visa inlägg nyare än:  Sortera efter  
Svara på tråd  [ 14 inlägg ] 

Alla tidsangivelser är UTC + 1 timme


Vilka är online

Användare som besöker denna kategori: Yahoo [Bot] och 3 gäster


Du kan inte skapa nya trådar i denna kategori
Du kan inte svara på trådar i denna kategori
Du kan inte redigera dina inlägg i denna kategori
Du kan inte ta bort dina inlägg i denna kategori
Du kan inte bifoga filer i denna kategori

Sök efter:
Hoppa till:  
   
Drivs av phpBB® Forum Software © phpBB Group
Swedish translation by Peetra & phpBB Sweden © 2006-2010