LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: dvdt em 07 de Janeiro de 2015, 13:03

Título: Sleep mode (e apresentaçao de futuro projecto)
Enviado por: dvdt em 07 de Janeiro de 2015, 13:03
Estou a começar a desenvolver um projecto, agora que penso vou ter umas ferias jeitosas.
Neste projecto, que eu não quero desvendar ate ter algo que funcione, queria implementar um atmega328, ou ate mesmo um attiny13 (ao usar o attiny era ligado diretamente á pilha 2.7v<3,7v<5,5v)), tudo depende  do decorrer do projecto que vai ter que estar muito tempo ligado e a sua alimentação vai ter que ser remota (possivelmente usando cr123 lion).
 A minha ideia era, usar a função sleep para poupar energia e depois"acordar" o cpu usando um sensor, vamos imaginar que seja um botão (mas não é), correr o programa durante cerca de 30 segundos e voltar a entrar em sleep.

Nunca usei esta função, dai querer saber se esta funciona para este tipo de projecto e qual os procedimentos para usar a mesma.
Título: Re: Sleep mode (e apresentaçao de futuro projecto)
Enviado por: KammutierSpule em 07 de Janeiro de 2015, 13:28
Não queres aproveitar as "férias jeitosas" para aprender e considerar usar outra arquitectura sem ser "atmega"? :)
.. possivelmente uma mais adequada para funcionar a pilhas e melhores consumos em sleep.
Título: Re: Sleep mode (e apresentaçao de futuro projecto)
Enviado por: dvdt em 07 de Janeiro de 2015, 13:35
Dá ai sugestões, para eu considerar. Tenho que ler dados por serial também por isso essa parte nao pode ser muito dificil
Título: Re: Sleep mode (e apresentaçao de futuro projecto)
Enviado por: metRo_ em 07 de Janeiro de 2015, 13:38
Por acaso nunca tive necessidade de utilizar atmega em aplicacoes low power mas eu aconcelhava a veres os xmega ou assim, se nao quiseres sair da atmel, pois estes ja possuem a possiblidade de usar um rtc para esse tipo de aplicacoes, isto e, um relogio com uma frequencia mais baixa e que consome menos.

No caso dos atmega, da para sair de sleep com o timer? ou tem que ser sempre uma interrupcao externa?
Título: Re: Sleep mode (e apresentaçao de futuro projecto)
Enviado por: dvdt em 07 de Janeiro de 2015, 13:51
Pelo que percebi pode se usar os interrupts, pelo menos quando se esta a usar um arduino que foi o que apareceu no topo da pesquisa no google Exemplo para o arduino (http://playground.arduino.cc/Learning/ArduinoSleepCode)
O datasheet do Attyni13 (http://www.atmel.com/images/doc2535.pdf) mostra que o consumo a 1.8v em Power down mode é < 0.1 µA at 1.8V mas nao posso usar lo a 1.8v vai ter que interagir com um tal sensor serial a 3,3v, que eu tambem vou querer desligar quando o cpu entra em sleep
Título: Re: Sleep mode (e apresentaçao de futuro projecto)
Enviado por: metRo_ em 07 de Janeiro de 2015, 14:04
de que modos o attiny sai de sleep?
Título: Re: Sleep mode (e apresentaçao de futuro projecto)
Enviado por: dvdt em 07 de Janeiro de 2015, 14:08
Como assim metRo_?
Queres saber isto?
Citar
Idle mode enables the MCU to wake up from external triggered interrupts as well as internal
ones like the Timer Overflow. If wake-up from the Analog Comparator interrupt is not required,
the Analog Comparator can be powered down by setting the ACD bit in the Analog Comparator
Control and Status Register – ACSR. This will reduce power consumption in Idle mode. If the
ADC is enabled, a conversion starts automatically when this mode is entered.
 Power-down Mode
When the SM[1:0] bits are written to 10, the SLEEP instruction makes the MCU enter Powerdown
mode. In this mode, the Oscillator is stopped, while the external interrupts, and the Watchdog
continue operating (if enabled). Only an External Reset, a Watchdog Reset, a Brown-out
Reset, an external level interrupt on INT0, or a pin change interrupt can wake up the MCU.
Low Level Interrupt
A low level interrupt on INT0 is detected asynchronously. This implies that this interrupt can be
used for waking the part also from sleep modes other than Idle mode. The I/O clock is halted in
all sleep modes except Idle mode.
Note that if a level triggered interrupt is used for wake-up from Power-down, the required level
must be held long enough for the MCU to complete the wake-up to trigger the level interrupt. If
the level disappears before the end of the Start-up Time, the MCU will still wake up, but no interrupt
will be generated. The start-up time is defined by the SUT and CKSEL fuses as described in
“System Clock and Clock Options” on page 23.
If the low level on the interrupt pin is removed before the device has woken up then program
execution will not be diverted to the interrupt service routine but continue from the instruction following
the SLEEP command.
Título: Re: Sleep mode (e apresentaçao de futuro projecto)
Enviado por: metRo_ em 07 de Janeiro de 2015, 15:28
Nao diz nada referente ao xtal externo? Se desliga se nao? Ele diz que no idle mode consegue acordar usando o timer mas o mesmo nao acontece no powerdown mode que foi o que referiste anteriormente como tendo um muito baixo consumo.
Título: Re: Sleep mode (e apresentaçao de futuro projecto)
Enviado por: dvdt em 07 de Janeiro de 2015, 15:38
Opa para eles o idle é o estado normal e o power-down é o "sleep mode". O que eu vou tentar fazer quando tiver o material todo em mao é tentar fazer é um reset, ele vai correr o programa e depois x tempo depois entrar em sleep. Penso que seja o modo mais viavel
Título: Re: Sleep mode (e apresentaçao de futuro projecto)
Enviado por: senso em 07 de Janeiro de 2015, 16:26
Tens milhentos chips, muitos mais orientados para o ultra low power, um cortex Mx seja qual for, á partida consumirá menos que um atmega, simplesmente porque são feitos em processos mais recentes e mais pequenos.
Título: Re: Sleep mode (e apresentaçao de futuro projecto)
Enviado por: dvdt em 07 de Janeiro de 2015, 16:29
Ok para verificar se o conceito funciona, vou usar atmega, depois logo se ve o rendimento do mesmo. Mas em todo o projecto nao vai ser o chip que vai consumir mais no meio de tudo

Título: Re: Sleep mode (e apresentaçao de futuro projecto)
Enviado por: LuísR.A. em 08 de Janeiro de 2015, 03:33
Se consumo é assim tão problemático porque não usas um MSP430 da série com FRAM?  ::)
Título: Re: Sleep mode (e apresentaçao de futuro projecto)
Enviado por: Sérgio_Sena em 08 de Janeiro de 2015, 09:36
Opa para eles o idle é o estado normal e o power-down é o "sleep mode". O que eu vou tentar fazer quando tiver o material todo em mao é tentar fazer é um reset, ele vai correr o programa e depois x tempo depois entrar em sleep. Penso que seja o modo mais viavel


Energy Micro, EFM32, Gecko microcontrollers sao os ganhadores em termos de energia, consumos e modos de optimizacao.
Cores ARM Cortex M0+/M3/M4.

Ultimamente tive que pesquisar o mercado ah procura de novos micros low-power e das marcas todas, sao estes que sobresaem.
Nem a TI com os novos FRAM que soh estao a dar problemas de programacao e leakage. Estamos a usa-los aqui noutro projecto e vao ser abandonados.

Adoptamos core ARM Cortex com os EFM32 e nao vamso voltar atras, as vantagens estao a ser enormes.

Título: Re: Sleep mode (e apresentaçao de futuro projecto)
Enviado por: StarRider em 08 de Janeiro de 2015, 09:54
Nem a TI com os novos FRAM que soh estao a dar problemas de programacao e leakage

So ... what else is new ?  ;)

Depois do falhanço com o Stellaris era de esperar que a TI tivesse algum cuidado neste campo pois a
reputação da marca no que toca a MCUs anda pelas ruas da amargura.

Abraços,
PA
Título: Re: Sleep mode (e apresentaçao de futuro projecto)
Enviado por: LuísR.A. em 08 de Janeiro de 2015, 12:38
ooooh por acaso nao sabia sobre isso dos FRAM. Que se ha-de fazer com a TI :X
Ha sempre os MSP430 antigos

De ARM sei que a ST tem as familias L1 e L0 para baixo consumo. Não me lembro bem é que core são
Título: Re: Sleep mode (e apresentaçao de futuro projecto)
Enviado por: senso em 08 de Janeiro de 2015, 12:59
Com os MSP tens o problema do brown-out que passa-se e corrempe a flash, muita gente usa brown-outs exteriores ligados ao pino de reset, se o tempo de subida da tensão de alimentação vs reset não estiver dentro de uma certa gama dá raia.