Consumo alto em sleep

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Consumo alto em sleep

Mensagempor hermes » 22 Nov 2008 22:45

Pessoal,


Um pic 16F877 em sleep está consumindo 2mA num projeto meu...
nao tem nada conectado nele, a nao ser 2 LM35 desligados... tipo, o pic chaveia a alimentação dos sensores e tb os lê...
mas em sleep os sensores estao desligados...desligo ate o AD e nada...
O consumo nao deveria ser da ordem de uA?

Ah, fica rodando o timer1 com um cristal de 32Khz por fora em sleep...mas acho q nao consome tanto assim...

Obrigado.
hermes
Bit
 
Mensagens: 18
Registrado em: 21 Abr 2007 22:46

Mensagempor lpagano » 24 Nov 2008 12:37

hermes,

No datasheet desse PIC está escrito que o Timer1 consome por volta de 20uA.

Portanto veja se realmente ele está entrando em sleep pois 2mA é muito para o sleep.
lpagano
Byte
 
Mensagens: 393
Registrado em: 06 Nov 2006 14:23

Mensagempor Cláudio » 24 Nov 2008 13:21

Dicas do manual:

Para redução de corrente em modo sleep:
- Colocar todos os pinos pra VCC ou terra
- Assegurar que nenhum circuito externo está "drivando" corrente através de um pino de I/O
- Desligar A/D
- Desativar clocks externos
- Considerar corrente dos Pull-ups do portb
- O oscilador do timer1 adiciona 20uA no cálculo
[]´s
Cláudio
_______________________________________
"Quem quer, de verdade, faz. Quem não quer, inventa desculpas.
Avatar do usuário
Cláudio
Byte
 
Mensagens: 110
Registrado em: 17 Out 2006 09:19

Mensagempor hermes » 24 Nov 2008 17:53

Cláudio,

Li isso no manual, porém veja minhas dúvidas:

Para redução de corrente em modo sleep:
- Colocar todos os pinos pra VCC ou terra

Como faço isso??? Pelo q li isso deve ser feito colocando-se os pinos em vcc ou terra externamente...so imagino ser possível definir pinos como saida e impor um desses niveis...

- Assegurar que nenhum circuito externo está "drivando" corrente através de um pino de I/O

Td q tem ligado é um led, 2 lm35, 1 botao no port b e referencia de tensao. qdo entra em sleep as saidas ficam em 0.

- Desligar A/D

Isso eu não fazia... fiz qdo li o manual antes de postar aqui...mas nao deu mta diferença...

- Desativar clocks externos

Como que eu desativo o cristal externo?


- Considerar corrente dos Pull-ups do portb

Sim, sim...me lembrei disso ainda antes de ler o datasheet...nao reduziu mto tb...mas reduziu....

- O oscilador do timer1 adiciona 20uA no cálculo

Quem me dera adicionasse coisas da ordem de dezenas de uA...

Ipagano,

Testei o programa sem a instrução sleep e consumia mais...perto de 70% mais...por isso acho q o sleep tá funcionando.

Resumindo, ainda não sei como baixar esse consumo...

Obrigado e fico no aguardo de mais idéias...[/i]
hermes
Bit
 
Mensagens: 18
Registrado em: 21 Abr 2007 22:46

Mensagempor RobL » 24 Nov 2008 20:38

Obviamente o consumo mínimo anunciado pela Mchip só poderá ser atingido em condições ideais. Nas condições reais temos sempre algo nas portas.
Mas isso nos dá uma sugestão. Por exemplo, se há um drive no qual seu menor consumo será com um dos 3 estados da porta, alto, baixo, ou alta impedância (porta como entrada) antes do sleep temos que colocar a porta em uma desta condição. Da mesma forma como fazemos com os resistores de pullups internos.
Por exemplo para retirar um clock externo, passe antes para um clock interno de 32K. Desconfigure essa entrada de clock, procure setar ela em um dos 3 estados (saída baixo ou alto ou entrada) no qual seja o menor consumo.
Deixar todas as portas como digitais nesse momento (antes do sleep)
Se possível, antes do sleep, passar para o oscilador interno de 32Khz (já sugerido acima) e sair por ele, enfim mudar tudo antes de dormir. Ao acordar reconfigurar tudo e numa sequência estudada para não destruir o hardware. Saia desligando todos os periféricos que seu chip permitir.
Aí dá para reduzir bastante. Dependendo o chip chega fácil a 100uA com penduricalhos e com mais reduções chega a bem menos (dependendo do hardware).
Não sei se a família 18F já tem vários meios de se retirar a alimentação por programa de todos periféricos que possam ser desligados, procedimento muito comum em outros chips como os AVRs.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor otavio luiz » 25 Nov 2008 07:12

Fiz um projeto que precisava de baixo consumo o grande vilão era o BOD, mesmo assim não chegava em 2mA, da em torno de 75uA. Agora fala uma coisa esse consumo é só do micro ou voce esta mendiando antes do regulador pois esse consumo pode ser a corrente quiescente do proprio regulador.
Lembre-se, zona de Fresnel não é nenhuma franquia de puteiro.
Avatar do usuário
otavio luiz
Byte
 
Mensagens: 257
Registrado em: 11 Out 2006 13:56
Localização: Barretos - SP, terra de Peão

Mensagempor hermes » 25 Nov 2008 08:36

Pessoal,

Obrigado pelas dicas.....vou ver oq consigo implementar...

Otávio Luiz, não tem regulador...a alimentação é com pilhas...
hermes
Bit
 
Mensagens: 18
Registrado em: 21 Abr 2007 22:46

Mensagempor Cláudio » 25 Nov 2008 08:57

Hermes,
- Pra forçar o nível lógico em um pino, coloque-o como entrada para não queimá-lo.
- Por "clocks externos", julgo que seja de outros circuitos (CI´s, etc) senão o do oscilador do PIC, que já é desligado com o SLEEP.
- Tenta desligar tudo quanto é treco! WDT, BOD, POR...
- Já trocou de PIC?

Descobre e conta pra gente, rsrs!
[]´s
Cláudio
_______________________________________
"Quem quer, de verdade, faz. Quem não quer, inventa desculpas.
Avatar do usuário
Cláudio
Byte
 
Mensagens: 110
Registrado em: 17 Out 2006 09:19

Mensagempor lpagano » 25 Nov 2008 22:24

hermes,

Ligue o PIC somente com a alimentação e nada nos pinos I/O. Veja o que dá no seu consumo quando ele entra em sleep.

Outra coisa é testar ele com um programa bem simples, ou seja, após a configuração ele já vai para sleep.
lpagano
Byte
 
Mensagens: 393
Registrado em: 06 Nov 2006 14:23

Mensagempor ffcprog » 26 Nov 2008 07:13

por default.
A maioria dos PIC´s, pós reset tem suas portas todas como INPUT.
Experimente o seguinte:
Reset....
Configure o oscilador externo com cristal de 32.768 conforme comentou, e sleep;
Faça a medição de corrente, e observe a corrente.
Depois.
Reset... "utilizando o ck interno"
Configure o oscibits se tiver.
Sleep;
Faça a medição de corrente, e observe a corrente.

Com isto, você irá sanar a duvida de consumo com CK interno e utilizando o oscilador externo do TMR1.

Abraços..
ffcprog
Byte
 
Mensagens: 145
Registrado em: 14 Fev 2007 23:16

Mensagempor hermes » 26 Nov 2008 10:18

Pessoal,

Vo coloca o bixim no proto com e sem sleep e sem nada nos I/O's pra ver o consumo...
Mas no geral, oq da menos consumo para pinos que nao são utilizados? Deixá-los como saida em nível alto, baixo ou alta impedancia?
Obrigado.
hermes
Bit
 
Mensagens: 18
Registrado em: 21 Abr 2007 22:46

Mensagempor Djalma Toledo Rodrigues » 26 Nov 2008 11:45

Ele deve é estar saindo do Sleep através do TImer 1 ou do W dog
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor turuna » 26 Nov 2008 12:42

Desenvolvi um data logger na empresa que trabalho utilizando um pic 16f77 alimentado com baterias de hidreto, percebi que o regulador consumia mais que todo o sistema, para resolver isso coloquei 3 diodos em série para reduzir a tensão, e antes de por o pic em sleep passo todos os ports como entrada, o consumo fica em poucos míseros microamperes(3uA se ñ me engano), o detalhe é que esse consumo baixo só consegui quando antes do sleep os ports estejam todos como entrada........há e toda a eletrônica digital necessário externo ao controlador eeprom, display, sensorres, RTC etc é alimentado por um port do pic e não diretamente ligado ao vcc.

Turuna
turuna
Nibble
 
Mensagens: 97
Registrado em: 10 Mar 2008 12:50

Mensagempor Djalma Toledo Rodrigues » 27 Nov 2008 12:14

Porque não fabricam uC de 6 - 9 - 12 Vdc ?
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22


Voltar para PIC

Quem está online

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

x