Neste tutorial vou ensinar como fazer a interface de relés com microcontroladores stm32f103. Os microcontroladores Stm32 funcionam em lógica TTL de 3,3 volts. Onde os relés elétricos levam no mínimo +5 volts para fazer uma conexão regular. Precisamos de um circuito externo para acionar relés com microcontroladores stm32. Este post é para ensinar o que deve ser usado com o microcontrolador stm32 para acionar vários relés com ele. Existem vários métodos sobre como controlar cargas elevadas com microcontroladores. Alistei esses métodos em outro tutorial. Se você estiver interessado em saber de que forma podemos acionar altas cargas com microcontroladores, basta clicar no botão abaixo para fazer o tutorial.
Métodos para acionar altas cargas com microcontroladores
Os transistores são mais adequados com microcontroladores para acionar relés. Mas se tivermos vários relés em nosso projeto, usar transistor para cada relé não é a melhor escolha. Os transistores individuais não apenas tornam nosso circuito maior, mas também confuso. Felizmente, temos vários CIs disponíveis no mercado que contêm combinações de transistores. Esses CIs são pequenos em tamanho e consomem menos espaço quando comparados a um único transistor independente. ULN2003 e ULN2803 são CIs de combinação de transistores populares disponíveis no mercado. O ULN2003 possui 7 canais de transistor e o ULN2803 possui 8 canais de transistor. Cada canal é composto por um par darlington de 2 transistores. Na configuração Darlington, a corrente amplificada pelo primeiro transistor é ainda amplificada pelo segundo transistor. Podemos concluir que cada canal do ULN2003 e ULN2803 são amplificadores de alto ganho de corrente. Neste projeto vou usar ULN2003 darlington pair ic. O ULN2003 neste projeto funcionará como driver de relé.
ULN2003 como driver de relé
A configuração individual do par darlington no ULN2003 ic é fornecida no lado direito. 3,3 volts dos pinos de saída do microcontrolador stm32 vão para a base do primeiro transistor. O primeiro emissor do transistor é inserido na segunda base do transistor. Portanto, quando o primeiro transistor é ligado instantaneamente, o segundo também é ligado. A corrente começará a fluir de 'Out' para o solo. O diodo no pino 'COM' funciona como um diodo fly back. Ele evita que o circuito receba qualquer fem reversa gerada pelas bobinas do relé. O ULN2003 pode suportar cargas que requerem 50 volts e 500 mA de corrente.
|
|
Circuito de Projeto
Vou ligar e desligar quatro relés com microcontrolador stm32. Quatro botões são usados como entrada para o microcontrolador stm32. Estes quatro botões correspondem a quatro relés de saída. Pressionar cada botão alterará o estado do relé correspondente. Por exemplo, se o relé estiver ligado, pressionar o botão correspondente mudará seu estado para desligado. Podemos dizer que os botões alternam o estado dos relés a cada pressionamento.
O microcontrolador utilizado no projeto é stm32f103c8t6. É construído no núcleo Cortex M3. Os pinos 0,1,2,3 da porta A do microcontrolador stm32 são usados como pinos de saída. O pino nº 0 da porta a está conectado à entrada 1 do driver do relé ULN2003. O pino nº 1 da porta a está conectado à entrada 3, o pino nº 2 está conectado à entrada 5 e o pino nº 3 está conectado ao pino nº 7 do driver de relé ULN2003.
Os botões de entrada são conectados aos pinos 6, 7, 8, 9 da porta B. O microcontrolador Stm32 possui resistores pull up e pull down integrados em cada pino gpio individual. Podemos habilitá-los e desabilitá-los no código. Para nossas entradas de botão, habilitei os resistores pull up associados a cada gpio (Port-B Pin#6,7,8,9). Um lado dos botões de entrada está conectado aos pinos do microcontrolador e o outro lado é comumente aterrado.
Os relés que estou usando no projeto ativam em +9 volts. Conectei a bobina do relé em uma extremidade com saída ULN2003 e na outra +12 volts. O pino COM do relé está aterrado com a potência da carga. O pino Nc do relé está conectado à carga e a outra extremidade da carga está conectada ao fio positivo da potência da carga. Nenhum pino do relé é deixado intocado. O pino de aterramento do ULN2003 é aterrado com fonte de alimentação de 12 volts do relé e com aterramento stm32. Nota O ULN2003 GND deve ser aterrado comumente com a fonte de alimentação stm32 e a fonte de alimentação do relé ULN2003.
Relés com microcontrolador stm32 e driver de relé uln2003
Código do projeto
Stm32cubemx é usado para configuração do microcontrolador. Os pinos de entrada e saída são declarados nele. Os resistores pull up e pull down nos pinos de entrada também são ativados em stm32cubemx. Após a configuração e definições, o código do projeto é criado e importado para keil uvision arm 5 mdk ide. Abaixo da fig estão as configurações finais do stm32 em stm32cubemx.
Configurações Stm32cubemx GPIOS para pinos como entrada e saída
Se você não trabalhou com o configurador de código stm32cubemx e keil uvision mdk arm 5 e você é novato neste campo. Então, tenho um tutorial abrangente de introdução ao stm32 cubemx e keil ide para você. Clique no botão abaixo para tutorial.
Primeiros passos com stm32cubemx e keil arm mdk
O código é escrito e compilado em keil uvision ide. Bibliotecas Stm32 HAL são usadas no projeto. A lógica principal e o cerne do código está no loop while 1. A declaração
if(HAL_GPIO_ReadPin(GPIOB,B6_Pin)==GPIO_PIN_RESET) //Verifica se o botão de entrada foi pressionado
está verificando se o botão está pressionado ou não. A instrução utiliza bibliotecas HAL stm32 para verificar o estado do botão de entrada. O pino nº 6 da porta B é verificado no código acima. GPIO_PIN_RESET significa se o pino está em baixa tensão (0 volts). Quando o botão é pressionado, o chão aparece neste pino. Já a outra extremidade do botão está conectada ao aterramento stm32. Se a afirmação acima for verdadeira, a próxima instrução será executada.
HAL_GPIO_TogglePin(GPIOA,A0_Pin);
A instrução acima é executada logo após a instrução if SE a instrução for verdadeira. Ele alterna o estado do relé. Esta declaração também utiliza bibliotecas HAL stm32. A instrução alterna o estado do pino nº 6 da porta A.
Fazer o circuito acima em uma placa de ensaio é difícil para um projeto DIY. Se você estiver fazendo um projeto DIY na condução do relé stm32. Sugiro que você use uma placa de relé pré-montada em seu projeto. Existem inúmeras placas de relés disponíveis no mercado contendo diferentes números de relés. Placas de relé de 2, 4 e 8 canais estão mais comumente disponíveis no mercado. Essas placas possuem CIs de driver de relé ULN2003 ou ULN2803 instalados nelas. Eles também têm LEDs de status. Leds mostram o status dos relés. Os blocos terminais para cada relé também são muito úteis para fazer conexões com cargas.
O código acima pode ser usado com a placa de relés. As conexões são as mesmas. Só você precisa tornar comuns os aterramentos de energia do relé e de energia stm32.
Placa de relé de 4 ou 8 canais para microcontrolador com driver de relé uln2003 e uln2803
As placas de relé também vêm com optoacopladores e circuitos de transistor único. O código neste projeto pode ser usado com qualquer placa de relé contendo ULN2003, ULN2803, optoacopladores ou transistores individuais como drivers de relé.
Código/Arquivos