Pessoal,

O que mais encontrei nas pesquisas que fiz foi um arduino sendo alimentado por uma bateria de maior tensão, maior que 5 volts, e daí aquele tradicional código e montagem com 2 resistores dividindo a tensão entrando em A0.

Beleza. Meu desenho em anexo mostra o que pretendo. No meu caso vou alimentar um atmega standalone com bateria de 3,7 volts. E minha dúvida é se o mesmo código faria um led acender quando a tensão baixasse para menos que 3 volts. Pois a referência é a tensão máxima e a tensão máxima também estará caindo pois vem da mesma bateria que desejo monitorar.

Faltou desenhar o led. E os 4 volts descritos no código é que a bateria estando bem carregada dá isso...4 volts.

Dá certo ?

Exibições: 303

Anexos

Responder esta

Respostas a este tópico

Minha bateria de 3,7 volts estará sempre conectada a um módulo carregador TP4056. Aí fiz o desenho em anexo. Será que daria para extrair uma referência fixa ? alguém sabe como ?

http://www.tp4056.com/d/tp4056.pdf

Anexos

Bom dia, 

O que é extrair para uma referência fixa? 

Veja o circuito do carregador TP4056 aqui:

https://jgamblog.wordpress.com/2017/01/05/projeto-carregador-de-bat...

O módulo Carregador tem dois Leds:

  • Led Vermelho (esquerda)  – CHRG – Carga :    Quando a bateria esta sendo carregada, o Led acende. Do contrário, o Led apaga-se.
  • Led Azul (direita) – STBY – Espera :     Quando a bateria completa a carga, o led acende. Do contrário, o Led apaga-se.

Pensei aqui, se eu curto-circuitar o mosfet Q1 o módulo TP4056 não vai mais desconectar a bateria se a tensão cair abaixo de 2,4 volts. Se fosse possível aumentar este limite eu poderia usar o pino 1 OD do DW01 para acender meu led indicador de bateria baixa. E manteria a proteção de tensão > 4.3 volts funcionando no TP4056. Será que R5 e/ou R6 mudam os limites 2,4 e 4,3 ? ...pesquisar. Isto porque eu já tenho que mexer no módulo de qualquer maneira para reduzir o resistor R3 (1,2k) para obter uma carga mais lenta da minha bateria.

Boa tarde pessoal.

venho acompanhando este tópico desde o inicio, e vi que vários amigos aqui tentaram ajudar no projeto.

Mas até agora não consegui entender.

Vou explicar:

O Sr. SF, (se não gosta que te chame pelas iniciais, avise), quer construir um projeto usando um Atmega328P, alimentado por uma bateria, que nominalmente fornece 3,7V, conforme desenho

por ele anexado.

Desta mesma bateria usando um divisor resistivo ele usa o ponto central para ser lido por um pino

analógico deste mesmo Atmega328P.

Em seguida ele diz que a quando a tensão da bateria baixar de 3V, ele quer que o Atmega328P acenda um LED

instalado em algum pino.

Então: 

Este Atmega328P  precisará funcionar com um clock( Oscilador) igual ou menor que 10MHz.

Pois o datasheet do Atmega328P informa que para funcionar acima de 10MHz a mínima tensão

de alimentação  é de 4.5 V .

Ref:  SF diz "estou usando arduino UNO R3,"

O UNO roda a 16MHz.

Se a voltagem da alimentação for abaixo deste valor, (O F I C I A L M E N T E), à 16MHz

o Atmega328P não vai funcionar  .

Boa tarde. Por enquanto estou com a montagem feita num arduino UNO R3 porém passarei para uma plaquinha dedicada onde colocarei um atmega328p na versão standalone rodando a 8 Mhz interno. Quando eu estiver alimentando com bateria 3.7 volts terei dois resistores de 100K formando divisor de tensão com o meio entrando em A0. Quando a tensão da bateria cair para 3,6 volts, o meio do divisor também cairá. As duas tensões caindo juntas talvez não fará o código entender uma comparação. Se isso for verdade (acho que é) eu preciso resolver com um ou no máximo dois componentes externos pois acabei me adiantando e já fazendo uma PCI que está aqui a espera da soldagem. Antes de soldar nesta placa eu vou montar novamente na protoboard e guardar o arduino de vez. Porém terei dificuldades para ficar mudando o código pois meu gravador USBasp não está muito legal. Daí eu queria já quase acertar na mosca para fazer talvez 1 modificação no código que eu postei na imagem que deu origem a esta discussão. 

Boa tarde, RV!

   Mais um ponto importante a ser considerado que eu, e talvez outros, não nos havíamos dado conta.

D.T. Ribeiro.

Olá pessoal!

   Estive ( finalmente ) dando uma olhada no datasheet do ATMega328, na parte do conversor A/D e vi uma coisa interessante.

   O ATMega328 tem uma referência de tensão interna! Veja a figra a seguir.

   Isto quer dizer que a idéia inicial do Sérgio pode funcionar sem o uso de uma referência externa, desde que use a referência interna.

   Isto é feito usando a função analogReference() no setup(). Veja em Arduino analogReference <- LINK

   O único problema no UNO é que este valor é um pouco baixo, 1.1 V mas, como o Sérgio disse que não precisa de muita precisão ( Arrggghhh, esta minha frase ficou horrível! ), talvez sirva. No caso, coloca-se analogReference( INTERNAL ) ; no setup().

   Alguns cuidados são necessários, conforme o link acima:

   "After changing the analog reference, the first few readings from analogRead() may not be accurate.

   Alternatively, you can connect the external reference voltage to the AREF pin through a 5K resistor, allowing you to switch between external and internal reference voltages. Note that the resistor will alter the voltage that gets used as the reference because there is an internal 32K resistor on the AREF pin. The two act as a voltage divider, so, for example, 2.5V applied through the resistor will yield 2.5 * 32 / (32 + 5) = ~2.2V at the AREF pin."

   E ainda tem o fato que dá para conferir se fica fixa nesta tensão, mesmo variando a alimentação, pois esta tensão deve estar disponível no pino AREF do ATMega328. É só medir!

   Abraço a todos!

D.T. Ribeiro.

É isso aí, referência interna. A solução pode estar aqui:

https://provideyourown.com/2012/secret-arduino-voltmeter-measure-ba...

Vou desmontar o arduino uno e montar o atmega328p isolado, depois eu volto aqui com os resultados

Boa semana 

Sérgio, 

Eu já conhecia a referência interna de 1.1V do ADC do Atmega328.

Já inclusive fiz testes anos atrás. 

Mas não gostei da estabilidade dessa referência.

Poderá melhorar essa estabilidade inserindo um capacitor de 10 uF no pino AREF. 

Por isso lhe indiquei o Voltage Reference de 1.2V. (LM385-1.2) 

Como disse que não precisa de precisão, talvez atenda a sua necessidade. 

Quando eu estudei esse 1.1V eu me basei aqui:

Esse cara é fera e muito didático:

https://www.gammon.com.au/adc

Lembrando o que eu já tinha postado anteriormente:

Se for usar o 1.1V interno como referência. 

Depois faça um circuito divisor de tensão com resistores, para ser medido com o ADC do Atmega328P. Calcule os valores dos resistores, por exemplo Dividido por 4, pois a bateria carregada pode chegar no 4,2V. No seu programa multiplique por 4, o valor da tensão medida no ADC.

4,2V / 4 = 1,05V   (por exempo, um resistor de 3,3K e um resistor de 1K)

Lembre-se que a tensão maxima a ser medida pelo ADC nunca poderá ser superior à tensão de referência do ADC (essa regra deve ser sempre seguida, com o risco de danificar o ADC interno). 

Faça uma calibração com um Voltimetro posteriormente. 

Complementando

Lembre-se que a tensão maxima a ser medida pelo ADC nunca poderá ser superior à tensão de referência do ADC (essa regra deve ser sempre seguida, com o risco de danificar o ADC interno, se ela não for seguida). 

Mais uma dica que eu acho importante. 

Se for montar o Atmega328 com 3,3V e 8 MHz :

https://learn.sparkfun.com/tutorials/using-the-arduino-pro-mini-33v

RSS

© 2022   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço