beckup em caso de falta de energia

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

beckup em caso de falta de energia

Mensagempor cristian » 17 Ago 2010 13:42

boa tarde .

estou fazendo um pequeno projeto para um amigo onde o pic recebe via serial de um noteiro o valor da cedula e imprime um cupom com data e hora e outros dados

o cara ta preocupado com a falta de energia se ocorrer durante a impressao isso posso resolver pegando o status da impressora ( essa da daruma ) mas a minha preocupaçao é q ao imprimir o pic salva numa 24c512 esses dados para um relatorio futuro , se a energia acabar durante a gravaçao .

como vou saber onde parou ele grava cerca de 16 bytes por cupom entao tenho um indice q vai em sequencia salvar estes dados
pensei numa forma de check-sum pegando o indice atual e somando 16 e no final verificar se foram salvos todos ...sei al algo assim ainda estou pensando

alguem pode me ajudar ???

ja fiz pra salvar toda vez q entrar uma nota ele faz um beckup assim se faltar energia antes de imprimir o cumpom quando ligar o pic ele exibe novamente o valor da nota

o cara nao quer usar bateria
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor xultz » 17 Ago 2010 14:11

Põe um supercap, ele vai segurar a energia alguns segundos. O PIC pode ter uma entrada para saber que a energia acabou e ele está só no supercap, então ele entra em modo desespero, salva tudo e fica esperando pelo pior.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor rafael.wachter » 17 Ago 2010 14:47

ou utiliza o µC e a eeprom alimentadas pela fonte e uma baterias de placa-mãe como nobreak, qdo faltar energia, detecta e salva tudo
Any program which runs right is obsolete.
Avatar do usuário
rafael.wachter
Nibble
 
Mensagens: 89
Registrado em: 19 Nov 2008 13:12
Localização: no RS tchê

Mensagempor cristian » 17 Ago 2010 19:59

tem algum problema o pic ta alimentado com 5v e de repente cair para 3v de uma bateria ? ele nao trava nem reseta nao ?
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor MOR_AL » 17 Ago 2010 20:11

... Ou utiliza algo para informar que o dado foi gravado completamente. Por exemplo, reserve um bit de um byte da eeprom. Nomeie-o como, por exemplo, dado gravado (DG).
Mantenha-o (inicialmente) em '1' lógico. Isso representará que o ultimo byte do seu dado foi gravado com sucesso.
Ao iniciar uma nova gravação de um dado, resete o bit DG. Isso informa que o dado está sendo gravado. Ao terminar a gravação, sete o bit DG. Conclusão:
DG = '0' - Último dado perdido.
DG = '1' - Último dado gravado.
Aumente a confiabilidade do seu processo. Introduza uma verificação do dado gravado. Compare-o com o dado a ser gravado. Após a verificação é que você deve setar o bit DG.
Isso vai reduzir a velocidade do seu processo, porém vai dar mais confiança nos valores gravados.
MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor FabioSom12 » 18 Ago 2010 17:20

cristian escreveu:tem algum problema o pic ta alimentado com 5v e de repente cair para 3v de uma bateria ? ele nao trava nem reseta nao ?

Não trava nem reseta. Funfa bem suave.


Mas na minha opinião a ideia do supercap é bem melhor (manutenção zero). E nem precisa ser supercap, põe um 1000uf x 6,3V segurando somente o pic e a memoria. (Coloca diodos para isolar as alimentações do cap e da fonte).

Pra habilitar o modo desespero como xultz diz :lol: , coloca um opto verificando o sinal ac antes da fonte, e no modo desespero, você desabilita todas funções que consomem corrente, principalmente a impressão.
Acho que segura uns 3 segundo.
FabioSom12
Nibble
 
Mensagens: 94
Registrado em: 26 Nov 2009 14:01

Mensagempor diogo_18sp » 18 Ago 2010 21:28

ola amigo eu fasso deste jeito para salvar as informaçoes na falta de energia, na minha fonte eu pego a tensao continua pulsante de 120 hz que tiro do retificador de onda completa, dai coloco um zener de 5v1 com um capacitor de 10uf a 47uf oque acontece quando desligar a energia a onda pulsante some ANTES do que a tensao continua do circuito dai fico monitorando num pino do pic quando for a zero acontece uma interrupçao dai salvo tudo espero que isto ajude
diogo_18sp
Byte
 
Mensagens: 117
Registrado em: 14 Jan 2008 18:12
Localização: Amparo ,SP

Mensagempor leo_alves_br » 23 Ago 2010 09:24

Olá Cristian posso dar minha sugestão sobre isso?

Aqui eu faço um sistema diferente do que o pessoal sugeriu.
Uso o PIC 18F452 e uma função que ele possui: Low Voltage Detect.

Funciona assim, você configura o LVDCON Register para ligar o flag LVDEN quando a tensão ficar entre 4.2 e 4.45V (esse valor eh configurado).
Depois você vai no INTCON e liga o Peripheral Interrupt, vai no PERIPHERAL INTERRUPT PRIORITY REGISTER 2 e coloca o bit LVDIP para High.
Habilita o PERIPHERAL INTERRUPT ENABLE REGISTER 2 no Bit LVDIE.

Assim sempre que a tensão chegar a este valor especificado o PIC vai gerar uma interrupt, dentro deste interrupt você pode salvar os dados na EEPROM do PIC.

Como a energia elétrica não acaba a todo momento, só algumas vezes, você não vai prejudicar a EEPROM do PIC pelo excesso de gravação.

Não recomendo a gravação via I2C pois corre o risco de falhas na gravação (você tem milesegundos).

Para gravar 5 bytes não precisei modificar nada em minha placa, mas para gravar 40bytes precisei usar um capacitor de 1000uF x 16V para garantir um tempo bom de queda de energia.

Cuidado com o BOR, configure ele para o menor valor possivel...

Até mais
leo_alves_br
Bit
 
Mensagens: 27
Registrado em: 01 Mai 2008 09:32

Re: beckup em caso de falta de energia

Mensagempor Red Neck Guy » 23 Ago 2010 10:12

cristian escreveu:boa tarde .

estou fazendo um pequeno projeto para um amigo onde o pic recebe via serial de um noteiro o valor da cedula e imprime um cupom com data e hora e outros dados

o cara ta preocupado com a falta de energia se ocorrer durante a impressao isso posso resolver pegando o status da impressora ( essa da daruma ) mas a minha preocupaçao é q ao imprimir o pic salva numa 24c512 esses dados para um relatorio futuro , se a energia acabar durante a gravaçao .

como vou saber onde parou ele grava cerca de 16 bytes por cupom entao tenho um indice q vai em sequencia salvar estes dados
pensei numa forma de check-sum pegando o indice atual e somando 16 e no final verificar se foram salvos todos ...sei al algo assim ainda estou pensando

alguem pode me ajudar ???

ja fiz pra salvar toda vez q entrar uma nota ele faz um beckup assim se faltar energia antes de imprimir o cumpom quando ligar o pic ele exibe novamente o valor da nota

o cara nao quer usar bateria


Uma solução:
Cria um bloco de indice para a tua tabela de logs e faz o checksum dele.
Faz esse bloco dobrado e sempre quando for ler ou escrever na fila de logs pega o indice do bloco com o checksum bom. Dessa forma se desligar a placa no meio de uma gravação a tabela tu só perde o último log. Claro que tens que atualizar a tabela no final da escrita na eeprom.
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x