Utilizando microcontroladores para controle de conversor DC-DC personalizado - Parte 2

conversor DC-DC personalizado
Este post faz parte da série Utilizando microcontroladores para controle de conversor DC-DC personalizado. Leia também os outros posts da série:

Olá caros leitores, vamos à segunda parte dessa série de artigos que trata da utilização de microcontroladores para implementar conversor DC-DC. No artigo anterior, falamos de aspectos gerais para uso de um processador digital para controlar uma fonte chaveada baseada em um conversor deles. Além disso, exemplificamos um conversor Buck.

 

Agora que sabemos, de um modo geral, o que precisamos para controlar um "powertrain" desses, vamos fechar essa série fazendo uma implementação prática.

 

Quer dizer projetar uma fonte chaveada, ainda que simples? Sim! E melhor, uma fonte chaveada simples porém com tensão de saída ajustável.

 

Uma das coisas que mais atrai este que vos escreve é desenvolver projetos que possam ser reproduzidos, usando componentes fáceis de achar e de montar. Partindo dessa premissa a minha primeira busca foi pensar em qual microcontrolador seria interessante para demonstrar sua capacidade controlando e atuando sobre um conversor DC-DC? Uma placa que todo mundo use? Sim, Arduino. Confesso que estava há muito tempo sem mexer em um, e também desabituado a programar em C++, mas a ideia de que qualquer pessoa possa reproduzir o setup de teste (ou até fazer um shield)  me chamou a atenção.

 

Então, vamos projetar uma simples fonte chaveada controlada digitalmente (sim, tem um PID digital, mas já falaremos mais sobre ele) por um Arduino, utilizando o ecossistema nativo de desenvolvimento dele e em C++ para provar que é possível, mas antes, um pouco de teoria.

 

 

Conversores Boost

 

Você leitor deve estar se perguntando: "Mas Felipe, você exemplificou o conversor buck no artigo anterior". Concordo com você, mas convenhamos um step-down provê uma tensão de saída igual ou menor que a entrada, logo temos uma centena de circuitos que faz o mesmo, o conversor boost pelo contrário é bem mais interessante de se demonstrar, pois realiza o contrário, ou seja, eleva a tensão de saída a partir da entrada. Além disso um step-up é um circuito que costuma ser uma necessidade, uma vez que elevadores baseados em capacitores e diodos fornecem pouca potência ainda mais comparado com um boost. Logo, se você precisa daquela alta tensão para usar de alimentação de um circuito de gate-driver, mas só tem uma simples fonte de 5V disponível, esse circuito é pra você.

 

Como já citado, um circuito conversor boost fornece uma tensão de saída igual ou maior que a tensão de entrada, seu circuito pode ser demonstrado na figura abaixo.

 

Figura 1 : Circuito básico step-up
Figura 1 : Circuito básico step-up

 

 

Descrever a operação detalhada de um conversor DC-DC boost, está fora do escopo desse artigo, porém vamos revisar seu princípio básico de operação em modo contínuo de condução. Para isso, vamos admitir que o circuito esteja em uma condição inicial em que C1 possua uma tensão inicial VCi, por L1 passe uma corrente inicial ILi, e que o transistor Q1 (comutado por um sinal quadrado, simétrico, e com período ts) esteja em condução no início do período ts. Nesse momento, D1 encontra-se em corte logo podemos considerar que a malha formada por: Vg (bateria), L1, Q1, está isolada do restante do circuito, a corrente em L1 aumenta quase-linearmente carregando, ao passo em que temos idealmente (desconsiderando as perdas no MOSFET Q1)  Vg//L1, logo a tensão em Vg e a tensão VL1 são iguais. Analisemos agora a malha formada por C1 e R1 (que equivale à carga), nesse momento a tensão VCi presente no capacitor é a mesma que aparece na saída do conversor, ou seja, em R1. O capacitor então fica responsável por suprir energia ao conversor enquanto L1 é carregado via Q1. Ao chegar na metade do período ts, a situação muda e com isso Q1 é cortado, assim D1 conduz e conecta L1 e Vg ao restante do circuito. No momento em que Q1 comuta, o indutor L1 transfere a energia acumulada ao capacitor C1 carregando-o,  com a parcela da tensão VL gerada, porém nesse mesmo momento além da tensão VL, temos no mesmo sentido, a tensão do gerador Vg. Para quem gosta de circuitos elétricos, ao observar essa condição, fica fácil perceber que a tensão com a qual se carrega C1 é maior que a tensão da bateria Vg, e assim encerra - se o ciclo e um novo começa.

 

Para o leitor mais atento, é fácil perceber que a tensão VL do indutor L1 que se somará a Vg quando Q1 estiver em corte será maior (até o nível de saturação do núcleo) à medida que mais energia seja armazenada no estado de condução de Q1 para um mesmo período ts, estamos então falando de um trivial gerador de PWM que qualquer microcontrolador de baixo custo hoje possui, incluindo a maioria das placas Arduino. Para finalizar nossa breve explicação, e dispensando a modelagem matemática, o formulário relevante para o projeto de um conversor DC-DC boost em modo contínuo de condução pode ser aproximado por: 

 

BoostBaseEq1

Um belo formulário, sem dúvida, mas vale lembrar que esses modelos são muito bons como ponto de partida para projetar um conversor Boost, uma abordagem mais completa pode ser encontrado em [1].

 

 

O Controle digital

 

Sabemos o que é um conversor boost , porém a teoria acima explicada é perfeita para operação em malha aberta, agora imagine que um valor de D foi escolhido para determinar a tensão de saída dado um valor de R1, agora vamos pensar que num dado momento R1 seja substituído por outro resistor com valor R2. Oras, se esse novo valor for menor e temos D fixo, o capacitor C1 vai transferir menos energia do que L1 transfere a ele o que na prática implica num aumento de tensão até que uma nova condição de equilíbrio ocorra (ou o circuito pare de funcionar). De forma análoga, se R2 for menor que R1, C1 terá que transferir mais energia do que L1 consegue transferir a ele, o que geraria um decaimento da tensão de saída. O mesmo problema ocorre para variações na tensão de entrada, logo a operação em malha aberta é perfeita para condições invariáveis, mas sabemos que por se tratar de uma fonte a mesma precisa operar com tensão constante a diferentes níveis de carga e tensão de entrada, e no nosso caso a situação é ainda pior pois queremos que a tensão de saída seja ajustável, é quando entra o papel de uma parte importante de toda fonte chaveada, o circuito de controle.

 

Para uma fonte com controle analógico, a topologia de um circuito dedicado de controle é a mesma usada em outros circuitos: um elemento sensor, um amplificador de erro com um compensador e um sistema de atuação, nesse caso um gerador de PWM. O popular circuito integrado MC34063 [3] é uma solução de baixo custo para projetar uma fonte boost, seu diagrama pode ser apreciado na figura abaixo:

 

Figura 2 : Esquemático interno MC34063

 

 

Esse controlador é um dos mais simples disponível no mercado  e conta com os já citados blocos. O comparador na verdade contém o amplificador de erro em conjunto com o compensador, veja que o set-point é fixo através de uma tensão de referência interna de 1.25V, logo ajustar a tensão de saída de uma fonte com esse integrado envolve recalcular o divisor resistivo denotado por R1 e R2. O atuador, gerador de PWM, é composto de dois blocos, um oscilador e um latch, e seu ciclo-ativo é ajustado de acordo com o sinal resultante da malha de compensação, para mais informações sobre esse integrado o leitor pode consultar seu datasheet. A figura 3 exibe uma aplicação de uma fonte boost usando esse integrado:

 

conversor-DC-DC-BOOST
Figura 3: Fonte boost com o MC34063

 

Como já dissemos no primeiro artigo, usar um integrado dedicado é uma solução para a construção de uma fonte dessas. Porém substituir o controle analógico por um processador digital nos permite sofisticar na construção da fonte, podemos selecionar a frequência de chaveamento, utilizar algoritmos de controle otimizados e mais, tudo isso apenas reprogramando o processador.

 

Como já citado anteriormente, vamos utilizar uma das queridas pela comunidade maker, as placas Arduino, no caso a variante Arduino Mega (escolhi ela apenas por ser o que tinha em bancada, mas outras placas mais simples podem ser utilizadas). O interessante é que o pequeno processador AVR de 8 bits se mostrou mais que suficiente para realizar essa tarefa, assim vejamos quais recursos vamos precisar para nosso controlador digital, a figura 4 exibe o diagrama de blocos do controlador digital.

 

Figura 4: Diagrama do controlador digital
Figura 4: Diagrama do controlador digital

 

 

O diagrama está bem simplificado (o esquema elétrico também é, não se preocupem) com os blocos mais importantes. Para observar o que ocorre no circuito boost, o Arduino precisa digitalizar o sinal presente no elo de realimentação, para essa tarefa seu conversor A/D é utilizado. O valor desejado (set-point) pode ser ajustado manualmente no código, ou utilizar o mesmo conversor A/D em amostragens intercaladas. Em seguida a CPU AVR será responsável pelo processo, calculando a diferença entre o valor desejado e o corrente, e aplicará digitalmente um compensador tipo-II, basicamente um PI (foi adicionado uma ligeira ação derivativa para melhoria no tratamento de overshoots), ainda o processador de posse do resultado realizará dois processos: o de saturação e o de escala. O atuador para um conversor boost será um gerador de PWM, facilmente configurado no Arduino. Implicitamente, existe um segundo temporizador (atrelado à taxa de amostragem do sistema) que é responsável por aplicar a ação de controle de forma periódica sendo útil caso algum método analítico de ajuste do compensador seja utilizado.

 

 

Projeto da fonte

  

Agora que já falamos sobre o conversor, e sobre nosso controle, vamos às especificações da fonte desejada:

  • Tensão de entrada : 5 [V] com tolerância de +/-20%;
  • Tensao de saída: Ajustável de 5 a 24 [V];
  • Potência de saída: 15 [W];
  • Frequência de chaveamento: 50 [KHz];
  • Ajuste da tensão de saída: por trimpot ou potenciômetro.

 

As especificações foram escolhidas para que seja uma fonte de uso geral, mas que atenda às necessidades de gerar tensões mais altas através de uma simples fonte de 5V (como essas de protoboard). Pode gerar localmente a alimentação de pequenos motores, ou sinais de comunicação no padrão 0 - 10 [V]. A frequência de chaveamento foi escolhida de forma a minimizar o valor do indutor, e ao mesmo tempo prover uma razoável resolução do gerador de PWM do Arduino. Com esse valor, a uma frequência de clock de 16MHz, consegue - se uma resolução de 8 bits. A seguir formulário para cálculo de resolução:

 

ResoluçãoPWM  

 

Utilizando as equações básicas do conversor boost ajustei um pouco o modelo, afim de minimizar o valor de indutância. O chaveador escolhido foi um MOSFET variante IRLZ44N. Esse transistor possui uma capacidade de corrente de mais de 40A e baixo RDSon. Sua principal vantagem é que pode ser levado à saturação com baixo valor de tensão de gate, sendo então diretamente acionado pelo Arduino, dispensando um caro e chato gate-driver. Ufront-end minimo foi colocado entre o Arduino e o MOSFET para limitação de corrente. O Ajuste da fonte pode ser efetuado diretamente na entrada analógica A0 no Arduino, para exemplificar optei por um trimpot multivoltas.

 

O Esquema elétrico completo da fonte é visto na figura 5 abaixo:

 

Figura 5: Esquema elétrico da fonte boost
Figura 5: Esquema elétrico da fonte boost

 

 

Realmente, completo e simples. Veja que o circuito além do conversor, possui apenas a rede de feedback, responsável por realimentar o Arduino com o estado corrente, e o sinal de controle com uma rede de resistores para limitar a corrente RMS que aparece no sinal PWM, e um resistor (R3) para forçar o MOSFET em corte no caso de desconexão do Arduino.

 

 

Firmware de controle

 

Além do projeto do conversor, desenvolver o  firmware de aplicação foi desafiador, pois estou desde 2011 sem fazer uma única linha de código em C++, foi bom para desenferrujar e aproveitar as capacidades da linguagem, a mais usada para desenvolvimento no Arduino. Para realizar a abstração de hardware e ainda obter uma agradável surpresa, criar classes de compensadores é muito mais simples e funcional do que descrever um conjunto de structs. Porém nem tudo foi fácil, o acesso abstraído ao hardware do AVR fornecido pela IDE do Arduino não atendia aos requerimentos de tempo e desempenho que necessitava, algo esperado por ainda que simples, se tratar de um sistema de controle de tempo real.

 

Assim a primeira tarefa é prover um arquivo de abstração de hardware, mas que o opere com o desempenho necessário para atuar no conversor, assim o leitor que abrir os arquivos hal.cpp/.h irá encontrar classes de objetos para instanciar o conversor A/D em modo de alta velocidade garantindo 50000 amostras por segundo. O gerador de PWM configurado na sua forma mais poderosa, sem prescaler e com resolução máxima de 16 bits, além de uma classe para instanciar os timers 0 e 2 como geradores de tick. A interrupção é abstraída do usuário não sendo necessário mexer com os vetores do processador, assim temos um gerador periódico do eventos para executar a malha de controle com precisão, além da leitura do setpoint a uma taxa fixa de 200Hz.

 

Configurado o hardware Arduino, os blocos elementares de um conversor boost estão prontos para operar, ficando o maior esforço de firmware em implementar o compensador. Como já citado trata-se de um tipo-II que nada mais é do que um proporcional-integral. Dada a simplicidade do circuito e a CPU do Arduino, foi usada a conhecida aproximação retangular de primeira ordem, e os cálculos utilizam o formato numérico fracionário afim de evitar overflow das sucessivas multiplicações realizadas. Um esqueleto de um objeto completo do conversor esta feito bastando ser implementado. Todas essas definições podem ser encontradas em digitalboost.cpp/.h.

 

Com esses dois arquivos basicamente qualquer tipo de conversor pode ser criado, assim a aplicação principal simplesmente instancia os objetos de hardware, inicializa um compensador e lê o valor de tensão desejado pelo usuário. A cada 5Hz imprime os valores da tensão setada e da tensão lida pelo conversor. A aplicação de firmware  pode ser vista abaixo:

 

/*
 *						EMBARCADOS
 *
 *		Fonte chaveada Digital baseada em conversor boost
 *		@file   DigitalPowerSupply.ino
 *		@brief  aplicacao principal 
 *		@author FSN
 *
 */



#include "digitalboost.h"



//creates pwm and sensors object:
pwm_out boostPwm(PWM0_BASE_ADDRESS, 16000000);
analog_in boostAnalog(ADC0_BASE_ADRESS);
//Create a tick timer generator:
ticktimer loopTimer(TICK_TIMER0_BASE);
//And instantiate a PID voltage controller:
voltageloop boostController;



void setup()
{
	/* add setup code here */	
	Serial.begin(115200);
	
	//Setup hardware:
	boostPwm.InitPwm(50000);
	boostAnalog.AnalogInit();
	
	//Setup tick timer to tick each 50KHz
	loopTimer.SetTimerTick(16000000, 50000); 	

	//Set PWM base stuff:
	boostPwm.SetPwm(0, PWM_CH_C);
}

void loop()
{
	uint32_t pidtimer = 0;
	uint32_t updatetimer =0;
	uint32_t printtimer = 0;
	
	float targetVoltage = 0.0f;
	int16_t fix_voltage;
	
	//Initialize PID controller:
	boostController.kd = 0.1f;
	boostController.ki = 1.0f;
	boostController.kp = 10.0f;
	boostController.LoopInit();
	
	//Read first voltage:
	targetVoltage = (float)boostAnalog.AnalogGet(BOOST_ANALOG_TARGET_CH) * 210.938e-3f ;
	
	//saturate voltage:
	if(targetVoltage > 27.00f) targetVoltage = 27.00f;
	if(targetVoltage < 5.00f)  targetVoltage = 5.0f;
	
	
	//Read sensor voltage:
	boostController.feedback = boostAnalog.AnalogGet(BOOST_FEED_CH) * 54;
	
	//calculate target voltage in Q7.8:
	fix_voltage = (int16_t)(targetVoltage * 256.0f);
	
	//Pass setpoint:
	boostController.setpoint = fix_voltage;//boostAnalog.AnalogGet(BOOST_ANALOG_TARGET_CH) >> 1;
	
	
	//update timers:
	pidtimer = loopTimer.GetTicks();
	updatetimer = pidtimer;
    printtimer  = updatetimer;
	//run forever:
	for(;;)
	{
		//check for pid loop calculation:
		if(loopTimer.GetTicks() - pidtimer >= 1)
		{
			int16_t result = 0;
			
			//Read sensor voltage:
			boostController.feedback = boostAnalog.AnalogGet(BOOST_FEED_CH)  * 54;
			
			//Run pid loop:
			result = boostController.LoopRun() >> 16;
			
			//saturate value:
			if(result > 160) result =  160;
			if(result < 0)   result =  0;
			
			//scale and manage boost controller:
			boostPwm.SetPwm(result, PWM_CH_C);
			
			//Print each voltage:
			//Serial.print(result >> 8);
			
			//updade timer:
			pidtimer = loopTimer.GetTicks();			
		}
		
		
		//Check for target voltage update each 5ms:
		else if(loopTimer.GetTicks() - updatetimer >= 250)		
		{
			//read target voltage:
			targetVoltage = (float)boostAnalog.AnalogGet(BOOST_ANALOG_TARGET_CH) * 210.938e-3f ;			
			
			//saturate voltage:
			if(targetVoltage > 27.00f) targetVoltage = 27.00f;
			if(targetVoltage < 5.00f)  targetVoltage = 5.0f;			
			
			//calculate setpoint:
			fix_voltage = (int16_t)(targetVoltage * 256.0f);
	
			//Pass setpoint:
			boostController.setpoint = fix_voltage;//boostAnalog.AnalogGet(BOOST_ANALOG_TARGET_CH)  * 54;
			
			//update timer:
			updatetimer = loopTimer.GetTicks();			
		}
		
		
		//print target and setpoint voltages each 1s:
		else if(loopTimer.GetTicks() - printtimer >= 10000)
		{
			float feedVoltage = 0.0f;
			
			feedVoltage = (float)boostAnalog.AnalogGet(BOOST_FEED_CH) * 210.938e-3f;
			
			//Print voltages:
			Serial.print(targetVoltage);
			Serial.println();
			Serial.print(feedVoltage);
			Serial.println();
			
			printtimer = loopTimer.GetTicks(); 	
		}
		
	}
}

 

Bem simples não?

 

 

Resultados

 

Essa é a parte que me surpreendeu, pois resumindo as minhas análises o Arduino deu conta do recado ele corrige o valor da tensão de saída com maestria, seja variando o setpoint ou sofrendo uma perturbação do sistema (variação da tensão de entrada). A seguir vamos ver algumas imagens. A Figura 6 exibe a "aranha" que montei em bancada:

 

Figura 6: Protótipo em teste
Figura 6: Protótipo em teste

 

 

Não ficou lá dos mais bonitos, mas acho que a intenção era exatamente essa, montar um conversor DC-DC digital, com o que se encontra em casa. Apenas o powertrain do conversor não teve outra solução senão montar uma placa, dada o valor de corrente que percorre nesses componentes.

 

Vejamos agora nosso boost "Arduinado" em ação. As figuras 7, 8 e 9 exibem a tensão de entrada de 5 Volts para uma tensão de saída solicitada de 12V, 15V e 24V.

 

Figura 7: Conversor em equilibrio

 

 

Figura 8: Conversor em equilibrio

 

 

Figura 9: Conversor em equilibrio

 

 

Ao leitor atento, peço que dê uma olhada no valor da componente AC presente no sinal, que é mínimo, além do valor de ripple terceira linha de medidas, lembrando que o teste da fonte em equilíbrio foi feita com ela a plena carga. Agora vamos mostrar algumas formas de onda do nosso conversor a 10V. A figura  10 exibe a saída para 10V.

 

Figura 10: Waveform da tensão de saída em equilíbrio

 

Vejamos agora uma resposta em degrau dessa fonte na figura 11, o traço azul corresponde ao sinal de saída da fonte enquanto que o laranja é o valor de degrau gerado pelo usuário.

 

Figura 11: Resposta em degrau da fonte

 

 

Percebam, que a fonte corrige rapidamente a variação e o tempo de zona morta é mínimo. Além disso a porcentagem de sobressinal é inferior a 10% do valor desejado. Uma das coisas mais interessantes nesse tipo de teste é a possibilidade de ver com detalhes a malha de controle buscando o valor desejado pelo usuário, bem como suas etapas. Dica: esse teste pode ser utilizado para melhorias no ajuste do compensador, eu realizei um ajuste baseado no conhecido método Ziegler-Nichols.

 

Além dos gráficos, o que me surpreendeu foi a "elasticidade" dessa fonte. Em média a fonte pode sofrer uma variação de 2,50V para mais ou para menos em relação aos 5V centrais que a tensão de saída se mantém constantes, isso é equivalente a uma faixa de variação de 50% do nominal. Além disso a fonte mostrou uma boa regulação de linha (deixo o teste da regulação de carga para o leitor), cerca de 40mV para cada 1V variado na entrada um excelente resultado para uma fonte controlada por um microcontrolador que muita gente fala que é de "brinquedo".

  

 

Conclusão

 

Nessa pequena série, queríamos mostrar que microcontroladores podem ser utilizados até em campos poucos discutidos por quem desenvolve firmware, como por exemplo, o projeto de fontes que sempre foi algo que ficava a cargo de um integrado dedicado, com pouco ou nenhum acesso para personalização por parte do desenvolvedor. Porém também demonstramos o quanto eletrônica e software podem andar de mãos dadas a ponto de simplificar solução para um problema, no caso utilizar um microcontrolador (e diga - se de passagem, qualquer um) para atuar e configurar um conversor de energia estático, e que essa tarefa não se restringe apenas a topologias complexas munidas de DSP, mas também pode ser realizado na forma mais simples e por pessoas comuns como nós, que enfrentamos desafios diários de como aproximar engenharia e programação. Além disso é gratificante transformar uma plataforma de desenvolvimento tão utilizada pela comunidade em uma resposta para um desafio tido como complexo ou que necessite de mais poder de processamento. Os arquivos aqui desenvolvidos podem ser acessados aqui. O projeto foi desenvolvido utilizando o Atmel Studio com o plugin do Arduino IDE, mas pode ser facilmente portado para a IDE específica do Arduino sem menores problemas. Espero que tenham gostado da série e vamos discutir sobre outras topologias e até onde o Arduino poderia aguentar com controle digital de tempo real. É isso caros leitores, até a próxima.

 

 

Referências

 

RASHID, H. Muhammad - Power Electronics: Circuits, Devices & Applications - Prentice Hall - 2013 - http://www.amazon.com/Power-Electronics-Circuits-Devices-Applications/dp/0133125904

 

Outros artigos da série

<< Utilizando microcontroladores para controle de conversor DC-DC personalizado - Parte 1
Este post faz da série Utilizando microcontroladores para controle de conversor DC-DC personalizado. Leia também os outros posts da série:
NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Felipe Neves
Desenvolvedor de sistemas embarcados apaixonado pelo que faz, divide seu tempo entre trabalhar no Venturus desenvolvendo firmware de tudo quanto é coisa, na Aeolus Robotics se envolvendo com o que há de mais legal em robótica e na Overlay Tech desenvolvendo algumas coisas bem legais para o campo de motion control. Possui mestrado em engenharia elétrica pela Poli-USP e possui interesse em tópicos como: Software embarcado, sistemas de tempo real, controle, robótica móvel e manipuladores, Linux embedded e quase qualquer coisa por onde passe um elétron.

19
Deixe um comentário

avatar
 
17 Comment threads
2 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
11 Comment authors
Edgar Santos Pereira Pinto MarCaio EvangelistaFelipe NevesWeslley M. da MataIsrael Santos Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Israel Santos
Visitante
Israel Santos

Amigo você tem o projeto do conversor buck-boost?

Felipe Barreto
Visitante
Felipe Barreto

Amigo, show de bola este artigo e seu projeto. Sou acadêmico de Engenharia Elétruica na UESC - Universidade Estadual de Santa Cruz, e pretendo montar um conversor DC-DC semelhante. Você teria um esquemático da parte elétrica mais detalhado?

Rhonei Patric
Visitante
Rhonei Patric

Como eu consigo gerar o sinal de PWM a 20kHz com o arduino ? Para controlar a chave mosfet?

Rhonei Patric
Visitante
Rhonei Patric

Boa noite, estou fazendo um trabalho com controle do conversor buck, estou aquisicionando a saída do conversor com o arduino através das entradas analógicas e realizando o controle no simulink através da arduino i/o library. Meu conversor está trabalhando com uma frequência de chaveamento de 20kHz, tenho dúvidas sobre o valor de sample time que devo colocar nos blocos do analog read e do analog write no simulink

Carlos Alberto Da Costa Pinto Neto
Visitante
Carlos Alberto Neto

A mateira é legal, mais tem imagens quebras tambem

Pedro Hassan
Visitante
Pedro Hassan

olá felipe, boa tarde.
Se possível queria tirar uma duvida, as bibliotecas que você usou são essas mesmas indicadas na conclusão da sua publicação?
pois estou usando esses arquivos indicados e quando compilo no ide do arduino ele dá erro diz que algumas variáveis da biblioteca hal.cpp não estão sendo declaradas, eu abro o codigo desta biblioteca e realmente vejo que esssas variaveis não estão sendo declaradas, as variáveis são essas:
DDRF
DDRK
MUX5
DDRE
DDRG
DDRH
DDRL
obs: ja tentei editar o codigo da biblioteca declarando essas variáveis junto com as outras, mas sem sucesso.
Você poderia me dar uma luz?

Rubem Pacelli
Visitante
Rubem Pacelli

Queria conseguir verbalizar o que esse post foi pra mim. Sou engenheiro Eletrônico em formação, na Unifor. Sou apaixonado por assuntos que o meu curso trás, mas principalmente nas área de controle, telecomunicação, processamento digital de sinais e eletrônica de potência (este ultimo, posso falar que é a área que eu sou mais fraco em relação as outras). Na cadeira de Eletrônica de Potência me apaixonei pelo o assunto de fontes chaveadas, devido a enorme utilidade, eficiência e complexidade. Estava louco atrás de um projeto que não fosse demasiadamente complexo pra fazer nessa cadeira, e achei!! Esse projeto é sem… Leia mais »

Felipe Neves
Visitante
Felipe Neves

Rubem, fico muito feliz em saber que o artigo não só serviu como solução, mas também me alegro em saber que ele te ajudou a ter novas visões sobre o mundo da eletronica de potência e espantar o receio que as pessoas costumam ter quanto combinamos três áreas da engenharia tidas como dificeis ou massantes. Sobre o fato do Arduino fazer a parte grossa do processamento, creio que pelo codigo estar em C++ seja de visualização mas complicada, no entanto aqui no embarcados tive a oportunidade de publicar uma série de Digital power com 5 artigos em níveis incrementais, onde… Leia mais »

Edgar Santos Pereira Pinto Mar
Visitante
Edgar Santos Pereira Pinto Mar

Felipe, muito bom. Gostaria de tirar apenas algumas dúvidas com você, pois estou implementando algo parecido.
1) que tipo de indutor você utilizou? Não consigo identificar na foto..
2) no circuito "front-end" da saída do Arduíno, o resistor de 100R é um limitador de corrente e o de 10K um pull down?

Desde já agradeço. Um abraço

trackback

[…] Utilizando microcontroladores para controle de conversores DC-DC personalizados, parte II […]

trackback

[…] Utilizando microcontroladores para controle de conversores DC-DC personalizados, parte II […]