Sida 1 av 4
Backup till µC för att hinna spara data vid strömavbrott
Postat: 12 juni 2016, 03:31:59
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
Re: Backup till µC för att hinna spara data vid strömavbrott
Postat: 12 juni 2016, 05:42:14
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.
Re: Backup till µC för att hinna spara data vid strömavbrott
Postat: 12 juni 2016, 08:44:34
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.
Re: Backup till µC för att hinna spara data vid strömavbrott
Postat: 12 juni 2016, 09:59:20
av Berrabongo
Sök på LVD (Low voltage detect), funktion som brukar finnas innbyggt i processorn.
Re: Backup till µC för att hinna spara data vid strömavbrott
Postat: 12 juni 2016, 10:32:51
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.
Re: Backup till µC för att hinna spara data vid strömavbrott
Postat: 12 juni 2016, 11:19:29
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.
Re: Backup till µC för att hinna spara data vid strömavbrott
Postat: 12 juni 2016, 11:30:16
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.
Re: Backup till µC för att hinna spara data vid strömavbrott
Postat: 12 juni 2016, 12:50:55
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
Re: Backup till µC för att hinna spara data vid strömavbrott
Postat: 12 juni 2016, 18:55:42
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.
Re: Backup till µC för att hinna spara data vid strömavbrott
Postat: 12 juni 2016, 19:02:02
av Nerre
Fast då tappar man den ju OM det av nån anledning kraschar.
Re: Backup till µC för att hinna spara data vid strömavbrott
Postat: 12 juni 2016, 19:05:43
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.
Re: Backup till µC för att hinna spara data vid strömavbrott
Postat: 12 juni 2016, 20:09:26
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.
Re: Backup till µC för att hinna spara data vid strömavbrott
Postat: 12 juni 2016, 20:44:18
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.
Re: Backup till µC för att hinna spara data vid strömavbrott
Postat: 12 juni 2016, 20:59:22
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?
Re: Backup till µC för att hinna spara data vid strömavbrott
Postat: 12 juni 2016, 21:18:21
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.