LusoRobótica - Robótica em Português

Electrónica => Electrónica Geral => Tópico iniciado por: beirao em 26 de Dezembro de 2010, 15:11

Título: Monitorização de baterias (tensão, corrente)
Enviado por: beirao em 26 de Dezembro de 2010, 15:11
Boas pessoal,

No meu projecto (um kartcross eléctrico) vamos utilizar 4 baterias de chumbo-ácido (12V 75Ah) (foi o patrocinio que arranjámos e foi muito bom! Iões de lítio é bom.. até no preço:P)

A ideia é fazer o seguinte: ter um circuito que faça a comutação entre série e paralelo. Temos um interruptor, e já fizemos um circuito com relés para comutar entre série e paralelo as quatro baterias (série para alimentar os motores a 48V, e paralelo para carregar as baterias). Agora, a minha ideia é meter isso tudo numa caixa e ter 3 saídas: 48V para os motores, 12V para outras electrónica que possa surgir, 5V para sensores, microprocessador, etc. Eu queria meter uns displays para mostrar a tensão e a corrente em cada uma dessas saídas. O que aconselham? Usar um condicionamento de sinal (um ampop para diminuir de, por exemplo 48V para 5V, ou um divisor de tensão ou outra coisa) + ADC + Conversor digital/BCD em cada saída? Ou meter um microprocessador que irá ler todas estes valores analogicos e assim abdico dos CI dos ADC´s e dos conversores? O que acham melhor?

Obrigado! ;)
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: metRo_ em 26 de Dezembro de 2010, 15:41
Eu iria para um processador, tens por exemplo a serie Attiny da AVR ou da microchip tambem tens uns pequenos que para o que queres servem, são baratos e gastam poucos. Para poderes medir a tensão no micro se calhar o melhor é um transformador.
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: beirao em 26 de Dezembro de 2010, 17:37
Eu iria para um processador, tens por exemplo a serie Attiny da AVR ou da microchip tambem tens uns pequenos que para o que queres servem, são baratos e gastam poucos. Para poderes medir a tensão no micro se calhar o melhor é um transformador.

Sim, caso use microprocessador vou optar pela microchip... tem pic´s "simples" que servem bem para o que pretendo ;)

Hum.. Pois, não sei bem como medir a tensão, isto porque estamos a falar de correntes muito altas quando o kart estiver à velocidade máxima (2 x motores de 2kW).. Secalhar o transformar até acaba por ser uma boa opção :)
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: metRo_ em 26 de Dezembro de 2010, 17:54
Só não sei se o transformador será muito linear, mas é uma questão de testares.
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: beirao em 26 de Dezembro de 2010, 17:57
Só não sei se o transformador será muito linear, mas é uma questão de testares.

Mas será que não posso utilizar, por exemplo, um divisor de tensão? TEORICAMENTE iria funcionar, não? A corrente estava limitada pela resistências, mesmo que não haja mais nenhuma carga a consumir corrente.. certo?
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: metRo_ em 26 de Dezembro de 2010, 18:02
Sim, o divisor de tensão também será uma boa opção, alias para mim é tão boa como a do transformador, não estou a ver as vantagens de uma ou de outra a não ser que uma possa consumir mais corrente que outra ou assim, tenta usar um simulador, tipo multisim e vê +- como se comportam.
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: Sérgio_Sena em 26 de Dezembro de 2010, 20:47
Não há necessidade de transformadores para medir essas tensões. E se os usassem, iam ter problemas pois o transformador funciona em tensões alternantes. E vocês têm tensões continuas.

# Usem divisores de tensão, de alta impedância, seguidos de um buffer ampop a alimentar o AD do microcontrolador.
Isto para medir as vossas tensões todas.

# reguladores de tensão preparados para sistemas automotivos, que suportam picos e ruideiras ::
MCP1790
LM2940 max 60V @ 1 A
LM2936 max 60V
LM9076

# não poupem nas filtragens das alimentações e de todos os sinais que vão entrar na PCB.

# observem as ligações de GND, formar estrala na fonte

# usar cabos blindados, com a malha a ligar na estrela GND

# usem MOSFET/IGBTs de potência, para comutar as linhas de tensão. São bastante mais rápidos que os relés, e podem ser comutados digitalmente. Usar dissipador, claro. Bem como Snubbers por causa das reactâncias dos motores.


# ... pensem naquilo que não vêm. Pensem no improvavel.

Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: beirao em 26 de Dezembro de 2010, 23:21
Viva,

Obrigado pelas dicas! ;)

So uma coisa: "Divisores de tensão, de alta impedância,..." Queres dizer com isto o quê? Valores altos de resistencia para termos menos consumo de corrente? (e sim, um buffer antes do PIC é crucial)

Obrigado!
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: metRo_ em 26 de Dezembro de 2010, 23:42
o buffer é necessário para teres uma impedância na entrada do ADC baixa.
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: beirao em 26 de Dezembro de 2010, 23:51
o buffer é necessário para teres uma impedância na entrada do ADC baixa.

Sim, trivial :) Por isso é que perguntei o que o asena queria dizer com "divisores de tensão, alta impedância,.." falava do buffer?

Outra coisa.. dicas para medir a corrente que os motores estão a consumir? :)
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: metRo_ em 27 de Dezembro de 2010, 00:25
Eu suponho que seja utilizar divisor de tensão alta impedância para consumir pouca corrente e depois para fazer o ajuste de impedâncias usas o buffer.

Para medir corrente há os muito conhecidos LEM (http://www.lem.com/), pelo menos na minha faculdade sensor de corrente diz-se LEM até enjoa!!! LOOL Têm a vantagem de ser não intrusivos, aliás lá no site, tem categorias como battery monitoring ou automotive.
A Allegro MicroSystems também tem mas acho que só intrusivos.
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: beirao em 27 de Dezembro de 2010, 00:29
Para medir corrente há os muito conhecidos LEM (http://www.lem.com/), pelo menos na minha faculdade sensor de corrente diz-se LEM até enjoa!!! LOOL Têm a vantagem de ser não intrusivos, aliás lá no site, tem categorias como battery monitoring ou automotive.
A Allegro MicroSystems também tem mas acho que só intrusivos.

Eu tava a ver os da Allegro.. mas vou ver esses também! Obrigado! :)
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: Njay em 27 de Dezembro de 2010, 00:40
Os Allegro também são não-intrusivos (medem o campo magnético que se forma em torno do conductor) e acho que substancialmente mais baratos que os LEM, embora seja preciso fazer um circuito à volta.

Hum.. Pois, não sei bem como medir a tensão, isto porque estamos a falar de correntes muito altas quando o kart estiver à velocidade máxima (2 x motores de 2kW).

A corrente máxima que vais ver deve ser quando o kart estiver parado. E esta, hein ;)?

Sena, então e se a tensão das baterias fosse perto ou mais de 60V, e precisasses de baixar a tensão antes de ela entrar nesses reguladores, que método escolherias? Vou precisar de fazer uma coisa destas para um projecto.
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: beirao em 27 de Dezembro de 2010, 00:44
Os Allegro também são não-intrusivos (medem o campo magnético que se forma em torno do conductor) e acho que substancialmente mais baratos que os LEM, embora seja preciso fazer um circuito à volta.

Qual a desvantagem de utilizar um intrusivo? Irá "colocar" muito ruído na alimentação dos motores?

Hum.. Pois, não sei bem como medir a tensão, isto porque estamos a falar de correntes muito altas quando o kart estiver à velocidade máxima (2 x motores de 2kW).

A corrente máxima que vais ver deve ser quando o kart estiver parado. E esta, hein ;)?

Hum.. Quando estiver parado? Porque dizes isso? Supostamente, se "disser" ao controlador do motor para estar a 0 rpm, ele não vai consumir corrente... ou nao? (agora deixaste-me a pensar...:P )
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: Njay em 27 de Dezembro de 2010, 00:54
O intrusivo é uma resistência (com um valor muiiiito baixinho), e na verdade há muitos controladores comerciais que funcionam assim.

Pronto, vou re-frasear... é quando estiver a arrancar, desde o momento "zero" (aqui está parado :p :)). E também quando estiver a subir devagar. Por isso tem que levar limitador de corrente (geralmente é o controlador que o faz). O que é que num motor limita a corrente?
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: metRo_ em 27 de Dezembro de 2010, 01:14
No arranque aponta sempre para 3* a corrente nominal, podes limitar a corrente fazendo um controlador de corrente mas ai a aceleração também será muito mais baixa.
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: Sérgio_Sena em 27 de Dezembro de 2010, 15:29
Sena, então e se a tensão das baterias fosse perto ou mais de 60V, e precisasses de baixar a tensão antes de ela entrar nesses reguladores, que método escolherias? Vou precisar de fazer uma coisa destas para um projecto.


Usaria uma DCDC feita com um ATTiny ou PIC10, em modo BUCK, para me baixar para os 48v ou 12v.
Estas são simples de fazer, pois basta o micro+impedância+mosfet+(electronica passiva pouca).

Depois usaria sempre um Regulador Linear para limpar a ruideira.

Para alimentar o micro directo da entrada, usava um NPN com ZENER 5.6V na base, para ter ~5V no micro.


É mais ou menos isto que procuras?
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: Njay em 27 de Dezembro de 2010, 19:37
Pois, a outra alternativa era um DC-DC com transformador. Mas não me sinto nada à vontade com transformadores na "vida real".

Uma das "dificuldades" é arranjar transístores para estas tensões e potências, a generalidade vai até cerca de 45-65V.

Citar
No arranque aponta sempre para 3* a corrente nominal (...)

Eh pah, isso é um bocado relativo...
Controle de corrente acho que devia ter sempre, para proteger as baterias, elas têm um limite máximo de descarga.
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: Sérgio_Sena em 27 de Dezembro de 2010, 20:58
No arranque aponta sempre para 3* a corrente nominal, podes limitar a corrente fazendo um controlador de corrente mas ai a aceleração também será muito mais baixa.


Muito subjectivo. A corrente máxima depende do enrolamento do motor em STALL = BLOQUEADO sem rodar.

Travem o motor, alimentem e meçam a corrente de Stall, que é a corrente máxima que vão ter.
Também há a corrente em vazio, que é quando o motor roda sem carga.

Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: beirao em 28 de Dezembro de 2010, 19:38

Obrigado a todos pelas dicas! Para a semana já conta ter aqui o esquema e isto a funcionar :)

Só mais uma pergunta.. eu quero mostrar o valor da tensão e corrente em displays.. mas para usar os habituais displays de 7 segmentos (mesmo que num conjunto de 2 ou 3) terei de usar uma resistência para cada segmento... visto ter 3 saídas, dois valores por saída, 3 bcd de 7 segmentos por saida.. dá 126 resistências! Não sabem indicar nenhum display que me possa ser útil ao invés de usar tanta resistência? não queria usar LCD.. e já pesquisei mas não encontrei nada de especial.. alguém conhece algo que me pode ajudar? Agradeço :)
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: Sérgio_Sena em 28 de Dezembro de 2010, 21:49
 :o oi?  ;D

Então e a multiplexagem no TEMPO dos digitos?
No teu pior caso, com 6 sinais e 3 digitos para cada um deles, tens um total de 18 digitos para mostrar. Soma um para teres um numero redondo de 20. É preferivel fazer duas linhas de 10, por causa da multiplexagem.

Em paralelo os ligas, e colocas um Bipolar/Mosfet para ligar o digito. Assim, só precisas de 7 resistências  :)

Para teres um varrimento de ~50Hz para o ecrã completo, ~20ms, tens que ter cada display ligado ~1ms (1000Hz) * 20 = ~20ms.

Como vai haver diminuição de brilho, tens que reduzir o valor das resistências. Não descurando a datasheet do 7-SEG, podes dar correntes seguras de 80~100mA, ou mais! Mas tens que respeitar o que lá está dito relativamente à corrente máxima e duty-cycle.


Depois, para não estares a ocupar 7+18 pinos para este sistema todo, podes usar um Shift-Register e usas DATA+CLOCK+STROBE. 3 pinos em vez de 25!  :)


Os meus €0.02



PS: ou então usas o MAX7219, MAX7221 (http://www.maxim-ic.com/datasheet/index.mvp/id/1339)  ;D
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: Sérgio_Sena em 28 de Dezembro de 2010, 22:56
Pois, a outra alternativa era um DC-DC com transformador. Mas não me sinto nada à vontade com transformadores na "vida real".
Uma das "dificuldades" é arranjar transístores para estas tensões e potências, a generalidade vai até cerca de 45-65V.

Vê lá este fabricante. Dentro desse estilo, há mais fabricantes.
http://www.icetransformers.com/index.php?option=com_content&task=view&id=19&Itemid=46 (http://www.icetransformers.com/index.php?option=com_content&task=view&id=19&Itemid=46)
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: beirao em 30 de Dezembro de 2010, 00:00

Obrigado asena!

Foi uma pergunta parva, mas depois de algumas noites mal dormidas, e quando comecei a pensar nisto, tinha chegado às 25 linhas mas continuava a não gostar muito da solução... e depois coloquei aqui a questão "crua" ´!
Aliás, para reduzir um pouco, não tanto quanto o shift register claro, posso usar um conversor digital/bcd, mas também só poupo  linhas (passo de 7 linhas para o bcd para 4).. Obrigado!
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: beirao em 30 de Dezembro de 2010, 18:12

Asena,

Tou a fazer isto com um PIC. Tou a fazer um varrimento de cerca de 1kHz como referiste.. (nomeadamente 900, porque fiz a conta para 18 e não para 20 como disseste:P ). Mas passa-se o seguinte: eu meti este tempo (1/900Hz) num timer com uma interrupção... de cada vez que tenho uma interrupção, ele le o valor analogico que tenho num pin e depois manda para o bcd.. mas o que se passa é que ele volta a "interromper" antes de mandar para o bcd.. ou seja, o meu PIC leva mais tempo a ler o ADC, e converter para o bcd do que o tempo de varrimento. Tou com um Fosc de 4MHz. Achas que aumento o Fosc ou sugeres outra alteração?

Obrigado!
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: Sérgio_Sena em 30 de Dezembro de 2010, 19:21
Esse Fosc é directo do oscilador, ou já é o alimentado ao CPU (dividido por 4)?
Se for do oscilador, então multiplica isso com o PLL, e ficas com 4megas no CPU, mais à vontade.



No entanto... acho que o método poderá não ser o mais correcto. Vamos analisar de outra maneira (há várias)::

# precisas de ler o analógico, a cada ~1ms?  é que o olho humano não vai conseguir detectar as variações tão rápidas.

# as interrupções são para detectar que tipo de interrupção aconteceu, activar Flags correspondentes e sair rapidamente. Mais que isto é perder tempo e bloquear o MAIN. O programa só está nos vectores de interrupção, se for obrigado. Os outros trabalhos não têem nada a ver com interrupções, apesar de poderem ser MANDADOS pela interrupção.

-> ou crias uma máquina de estados na MAIN ou então fazes todos os passos com IF Flag THEN. Não pode (deve) haver WHILE a empatar.


# Faz uma conversão/mostra, a cada ex.: ~100ms. Cria um contador dentro da interrupção que, ao fim de ~100 ticks, te activa uma flag a dizer que há autorização para haver conversão/mostra.

# Chegando à MAIN, vais analisar quais as flags que estão autorizadas, e executas essas funções.
Nesse caso, dás arranque à conversão. O final da conversão permite-te entrar noutro patamar desse IF Flag, que te converte/manda para BCD, por exemplo.

# paralelamente, tens a multiplexagem dos digitos a acontecer a cada ~1ms.

# desta forma até podes reduzir a velocidade do clock, embora não havendo necessidade de poupar a energia, dá-lhe velocidade.


Este tipo de programação de MAIN, é à-la-Autómato. Onde o programa está constantemente a varrer as funções, e nunca fica bloqueado em nenhuma.
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: beirao em 31 de Dezembro de 2010, 15:03

Obrigado pela resposta, asena!

Eu tive a ver o que podia fazer, e aumentei o clock (tinha um clock de 4MHz e meti um de 16MHz).
Apesar de com este clock poder fazer a conversao em cada 1ms, tens razão, nao há necessidade, e tou a fazer a cada 100ms.
Tou a simular isto no Proteus, e fiz uma especie de maquina de estados.. ou seja, tenho um timer que conta 1ms, ao fim de cada 1ms executa uma interrupção e incremento o "numero do display" para saber em que display vou colocar o proximo numero. Depois, no main, tenho um switch case, que para cada display coloca la o numero correspondente. Executo as mesmas instruções para cada display, mas ha 6 displays que estao sempre a piscar... ja fiz debug, ja revi o codigo, e tenho tudo (aparantemente certo), até porque executo as mesmas instruções para cada display, tal como já disse. Achas que pode ser do software de simulação?

Obrigado!
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: senso em 31 de Dezembro de 2010, 16:02
O proteus ja esta mais que provado que a simular micros metade das vezes nao funciona e na outra metade da resultados errados.
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: beirao em 31 de Dezembro de 2010, 17:19
O proteus ja esta mais que provado que a simular micros metade das vezes nao funciona e na outra metade da resultados errados.

Pois, nisso tens razao! é com micros e com ampops (com ampops ja notei alguns erros!). 2f já testo o circuito todo numa bread e já vejo se está certo ou nao!
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: Sérgio_Sena em 01 de Janeiro de 2011, 12:26
Eu tive a ver o que podia fazer, e aumentei o clock (tinha um clock de 4MHz e meti um de 16MHz).
Apesar de com este clock poder fazer a conversao em cada 1ms, tens razão, nao há necessidade, e tou a fazer a cada 100ms.
Tou a simular isto no Proteus, e fiz uma especie de maquina de estados.. ou seja, tenho um timer que conta 1ms, ao fim de cada 1ms executa uma interrupção e incremento o "numero do display" para saber em que display vou colocar o proximo numero. Depois, no main, tenho um switch case, que para cada display coloca la o numero correspondente. Executo as mesmas instruções para cada display, mas ha 6 displays que estao sempre a piscar... ja fiz debug, ja revi o codigo, e tenho tudo (aparantemente certo), até porque executo as mesmas instruções para cada display, tal como já disse. Achas que pode ser do software de simulação?

Eu não me fio no Proteus, por isso não o uso. Está sempre a dar barraca.

Nesse caso, como é muito curta, podes autorizar a que a rotina de varrimento do display esteja na interrupção.
Tens é que criar um array de informação, onde estejam sempre os dados correctos.

Esse array é alimentado na MAIN, pelas medições e cálculos, e é lido no varrimento.


A prioridade é no varrimento. Os mostradores não podem piscar ou notar-se flickering.
Sem prioridade, executas tudo o resto no MAIN.



Atenção :::  esta explicação, para este caso particular. Cada caso é um caso.
Título: Re: Monitorização de baterias (tensão, corrente)
Enviado por: Njay em 01 de Janeiro de 2011, 14:24
(...)
Este tipo de programação de MAIN, é à-la-Autómato. Onde o programa está constantemente a varrer as funções, e nunca fica bloqueado em nenhuma.

Já agora deixo um link sobre algo que já escrevi sobre isso:

Como fazer várias coisas ao mesmo tempo (http://troniquices.wordpress.com/2010/05/24/arduino-a-fazer-varias-coisas-ao-mesmo-tempo/)