Backup till µC för att hinna spara data vid strömavbrott

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Backup till µC för att hinna spara data vid strömavbrott

Inlägg av Magnus_K »

Hej hej,

Nedan kan se min matning till en PIC16F690.
Jag skulle vilja ha lite kräm kvar när inspänningen försvinner till att spara 2 bytes data till det inbyggda EEPROM/FLASH:et.

I det här läget har jag bara lagt på lite kapacitans innan 7805:an då 24V-matningen ändå inte kommer dra någon märkvärdig ström. Det finns dock en risk att strömbortfallet sker precis när 24V-matningen har en "peak" så det vore bra med backup:en vid utgången på 7805:an istället.
Det jag läst någonstans är dock att dessa inte gillar att back-matas och därav denna tråd.

Databladet avslöjar väl att skriva till FLASH:et är snabbare men har mindre marginaler på matningen. Se bild 2 nedan.

Söker tips på modifiering för att få önskad funktion. Skulle en diod i serie med utgången räcka, om spänningsfallet är acceptabelt vill säga?
PS.JPG
Memory_write.JPG
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
persika
EF Sponsor
Inlägg: 1541
Blev medlem: 31 juli 2006, 22:14:37
Ort: Österlen, Skåne

Re: Backup till µC för att hinna spara data vid strömavbrott

Inlägg av persika »

Jag har några ggr också haft behov av att spara värden inför spänningsbortfall.
Jag har kopplat så här: +12A inkommande spänning kopplad via en diod till +12B. Vid +12B finns en backup-elektrolytkondensator ( i mitt fall 47uF ) och en 78L05. +5 går i vanlig ordning till uC ( 16F1xxx ).
Vid +12A är två motstånd kopplade för spänningsdelning som via pulsformande krets med op ger signal till interrupt-ingången INT på uC.
Interruptrutinen sparar de viktiga värdena i EEPROMmet, tar bara några ms, 47uF räcker fint till det om det inte finns strömslukare på +12B eller +5.
När värdena är sparade väntar Interruptrutinen tills +12A är tilbaka, om det skulle bara vara en tillfällig dipp, får inte gå tbx till huvudprogrammet sålänge +12A är borta för då kan nya behov av att spara värden skapas.
xxargs
Inlägg: 10189
Blev medlem: 23 september 2006, 14:28:27
Ort: Södertälje

Re: Backup till µC för att hinna spara data vid strömavbrott

Inlägg av xxargs »

Ett av problemen att lösa är att detektera att spänningen håller på att försvinna och sedan har man tillräckligt med energi kvar i tex. kondingar för att slutföra jobbet. - PIC kan ju inte vänta till 5 Volt börja försvinna innan det gör skrivåtgärden då det är försent, utan något måste skvallra i förväg!

Som redan nämnt typ via spänningsdelare på V24+ in på A/D-ingång (om den har sådan) och något i programmet som med tät intervall kolla av spänningen alternativt komparator mot referensspänning som lägger om vid säg 15 Volt på V24+ till en interrupt-kopplad ingång.
Användarvisningsbild
Berrabongo
Inlägg: 624
Blev medlem: 3 oktober 2006, 15:17:12
Ort: Solna

Re: Backup till µC för att hinna spara data vid strömavbrott

Inlägg av Berrabongo »

Sök på LVD (Low voltage detect), funktion som brukar finnas innbyggt i processorn.
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Backup till µC för att hinna spara data vid strömavbrott

Inlägg av Icecap »

Om LVD utlöser är det med viss sannolikhet för sent.

En annan vinkel är att montera en FRAM och spara de värden närhelst de ändras.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46963
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Backup till µC för att hinna spara data vid strömavbrott

Inlägg av TomasL »

Även om FLASH är snabbare än EEPROMet så är det långsammare, då du inte kan skriva enskilda byte, utan det handlar om fulla minnesbanker, vilka också måste rensas innan skrivning, hur det ser ut för just din processor vet jag inte.
Sätt en Backup-konding med lämplig laddninslogik detektera när 5V försvinner via ett IO.
Mindmapper
Inlägg: 7109
Blev medlem: 31 augusti 2006, 16:42:43
Ort: Jamtland

Re: Backup till µC för att hinna spara data vid strömavbrott

Inlägg av Mindmapper »

Magnus_K skrev:Hej hej,

Nedan kan se min matning till en PIC16F690.
Jag skulle vilja ha lite kräm kvar när inspänningen försvinner till att spara 2 bytes data till det inbyggda EEPROM/FLASH:et.

I det här läget har jag bara lagt på lite kapacitans innan 7805:an då 24V-matningen ändå inte kommer dra någon märkvärdig ström. Det finns dock en risk att strömbortfallet sker precis när 24V-matningen har en "peak" så det vore bra med backup:en vid utgången på 7805:an istället.
Det jag läst någonstans är dock att dessa inte gillar att back-matas och därav denna tråd.

Databladet avslöjar väl att skriva till FLASH:et är snabbare men har mindre marginaler på matningen. Se bild 2 nedan.

Söker tips på modifiering för att få önskad funktion. Skulle en diod i serie med utgången räcka, om spänningsfallet är acceptabelt vill säga?
PS.JPG
Memory_write.JPG
Utifrån ditt schema hade jag satt en diod mellan + sidan på kondensatorerna 470 uF och 1000 uF. Då får du 24V innan dioden med 470 uF som glättar den. Behöver du mera glättning till 24V kanske det räcker med att byta plats på kondensatorerna.

När spänningsförlust, försvinner 24V matningen snabbt medans kondensatorn efter dioden bara har 5V att försörja med ström. Eftersom spänningen är så pass hög in på 5V regulatorn har du goda förutsättningar att hålla uppe spänningen så länge som det behövs att detektera spänningsbortfall och göra din grej.

Naturligtvis har du att detektera spänningsavbrottet på 24V sidan också. Har du en jämn belastning där så kommer ju spänningen där att sjunka rätt snabbt medans 5 V måste hållas uppe länge nog. Har du stort strömuttag på 5V sidan? Isåfall kanske en ytterligare uppdelning ska ske.

Parallellt med 1000uF kondingen hade jag satt en mindre kondensator 0,47 eller 0,1uF (så nära ingången på regulatorn som möjligt) för att undvika självsvängningstendenser på 5V regulatorn.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Backup till µC för att hinna spara data vid strömavbrott

Inlägg av Magnus_K »

Tack för alla bra svar! Jättekul att läsa.

Kretsen du förklarar persika är nog ungefär som Mindmapper förklarar, dvs separera via en diod innan regulatorn.
Idén låter precis klockren och då 5V-railen inte är någon strömslukare så kommer det inte bli speciellt stor effektutveckling i dioden heller. Vid otur kanske kretsen drar max 150mA men förhoppningsvis mer runt 50mA.

Tror jag gör utrymme för en glättningskonding innan dioden och en större och en mindre efter dioden, som du skrev Mindmapper.

Känna av strömbortfallet tänkte jag mycket riktigt göra genom en spänningsdelare på 24V:en. Se krets nedan.
Dra in den till en ingång med komparator och låta interrupten sköta skrivandet låter som en väldigt bra idé!

LVD har jag läst om men uteslöt det direkt för det kändes som att det skulle bli för komplext att få till. Läste inte mer om ämnet av samma anledning som Icecap skriver.

Typ av minne kikade jag runt på också. FRAM-minne hade varit fint för att kunna skriva obehindrat men beslutade mig till slut för att använda det interna.
Det du skriver TomasL, är värdefull information. Förslagsvis så bör jag alltså ändå använda EEPROM:et före FLASH:et när jag ska skriva så här lite data pga "minstorlek" på skrivning till FLASH:et?
Grid_sense.JPG
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
persika
EF Sponsor
Inlägg: 1541
Blev medlem: 31 juli 2006, 22:14:37
Ort: Österlen, Skåne

Re: Backup till µC för att hinna spara data vid strömavbrott

Inlägg av persika »

TomasL skrev:Även om FLASH är snabbare än EEPROMet så är det långsammare, då du inte kan skriva enskilda byte, utan det handlar om fulla minnesbanker, vilka också måste rensas innan skrivning, hur det ser ut för just din processor vet jag inte.
Sätt en Backup-konding med lämplig laddninslogik detektera när 5V försvinner via ett IO.

Minnesbanken skulle kunna rensas redan vid uppstart, efter att värden lästs in i arbetsminne, så ligger den färdig att användas vid spänningsbortfall.
Nerre
Inlägg: 27223
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Backup till µC för att hinna spara data vid strömavbrott

Inlägg av Nerre »

Fast då tappar man den ju OM det av nån anledning kraschar.
Användarvisningsbild
persika
EF Sponsor
Inlägg: 1541
Blev medlem: 31 juli 2006, 22:14:37
Ort: Österlen, Skåne

Re: Backup till µC för att hinna spara data vid strömavbrott

Inlägg av persika »

Ja, man kan inte få allt.. iaf inte samtidigt..

Men, istf att kopieras till arbetsminne, kan den lika gärna kopieras till en annan bank, vid uppstart, för då finns det ofta gott om tid.
Användarvisningsbild
netrunner
Inlägg: 5510
Blev medlem: 4 februari 2005, 12:26:05
Ort: 127.0.0.1

Re: Backup till µC för att hinna spara data vid strömavbrott

Inlägg av netrunner »

Ett annat alternativ till 7805 är att ta en usb-laddare och då slippa hela det "mecket".

För 2 dollar kan du sen ha en "DC/DC stepup" till 25V -> biffig kondensator -> "DC/DC stepdown" till 5V.

Känner man av att första källa till 5V faller så kommer energin i kondensatorn att räcka i gott och väl för att spara alla data.
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Backup till µC för att hinna spara data vid strömavbrott

Inlägg av Icecap »

Jag förstår att det är data som dels laddas in vid uppstart men som även ändras under driften.

Jag kan bara tänka mig att det är någon räknare eller liknande som ska sparas och där finns det ett par saker man kan göra:
1: Använda extern FRAM EEPROM, kan skrivas i utan problem, snabbt går det också. Uppdatera där varje gång data ändras.
2: Internt EEPROM: ta en timer och räkna t.ex. 5 minuter. Om värdet är ändrat sparas det nya värdet och timern ställs upp till nästa 5 minuter. Detta ger en drifttid på minst 500 000 minuter = nästan ett år vid konstanta ändringar - om man bara använder en enda plats i EEPROM'et. Alltså ung 1 år/byte, det finns 256+ bytes i nästan alla PIC så tiden borde räcka till.

Jag kan enkelt komma på ett sätt att fördela trycket över många platser på ett sätt som enkelt kan detekteras.

Svårigheten i att spara data vid strömbortfall är inte det att spara men att detektera att det är dags och göra det tidigt nog.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Backup till µC för att hinna spara data vid strömavbrott

Inlägg av Magnus_K »

Det som ska sparas är vilken position slavuret är i när spänningen försvinner.
Tänkte bara ta antalet minuter per 12h vilket är 720. Då borde 2 bytes räcka.
När spänningen är tillbaka så ställer man huvudurets klocka och trycker "synk". Går allt vägen så ska slaven justeras till rätt position.
Det här är bara en liten lyx som jag tänkte lägga till mest för att det är skoj. Skulle det fungera vore det ännu roligare, då kan man ju använda samma upplägg vid ett viktigare tillfälle.

Kretsen matas med en väggvårta med riktig trafo i så jag går i evig förhoppning om att även den är lite "slö" att dö ut pga permabilitet eller annat (Obs. vet inte vad jag pratar om).

Läste på lite om skillnaden mellan FLASH och EEPROM och vad jag förstår så är EEPROM absolut att föredra i det här fallet pga blockskrivningen ni nämnde tidigare.
Till EEPROM skriver man byte per byte men till FLASH både raderar och skriver man i block.
Då jag inte behöver mer än 2 bytes så borde EEPROM bli bäst.

@netrunner: Jag vill gärna mecka med det här. Hur ska jag annars lära mig?
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Backup till µC för att hinna spara data vid strömavbrott

Inlägg av Icecap »

OK.

Jag hade ju gjort en annan lösning - men det är jag det.
Det måste vara möjligt att fixa en indikering i form av en "nord-puls" på minuter & timmer, alltså visarnas position.

Sedan hade jag byggt en lite krets med en PIC + en DS3232 eller liknande med drivsteg till klockan.
RTC'n skulle såklart ha super-cap backup.

När strömmen kommer ska klockan läsas och allt justeras, därefter startas klockan med "många" steg till man vet vilken position det befinner sig i varefter den stegas på plats.

Detta kan(/bör?) såklart utökas till att ta höjd för sommar & vintertid.

På detta vis går den rätt (DS3232 har max. ±63 sekunder/år vid inomhustemperatur), allting är inbyggd och missade pulser har ingen betydelse alls.
Skriv svar