quinta-feira, 26 de março de 2015

Controlando motores dc com Scratch

Esta também não foi uma aula testada com alunos, mas uma exploração do controlo de motores dc através de Scratch.

O motor dc (ou motor de corrente contínua) é  muito vulgar em equipamentos como impressoras, carrinhos de brinquedo a pilhas e outros brinquedos baratos, pelo que é extremamente fácil ter acesso a um.

O controlo deste motores é muito simples: ligam-se os cabos do motor a uma fonte de alimentação contínua (uma pilha, por exemplo) apropriada, de acordo com as caraterísticas do motor usado, e o motor começa a girar. Trocando a polarização da fonte, o motor girará em sentido contrário.

O controlo deste tipo de motor com arduino não é, no entanto, tão simples como seria de supor porque, por um lado, este motor exige mais corrente que aquela que o arduino consegue debitar e, por outro, os motores geram correntes de indução que podem danificar o circuito caso este não esteja devidamente preparado.

Para que a corrente elétrica seja suficiente, a ligação do motor deve ser feita recorrendo a uma fonte de alimentação externa (eu usei uma pilha vulgar de 9V).

E onde entra o controlo do motor? Através de um pequeno componente chamado FET (Field Effect Transistor), da família dos transístores e cuja função é permitir a passagem de corrente entre dois pinos quando um terceiro é ativado. O funcionamento de um transístor pode ser comparado ao de uma torneira de monocomando que, ao ser aberta, deixa passar a água sempre num único sentido. 

O controlo do FET foi feito usando uma das saídas analógicas disponíveis no S4A, o pino 9.

Na verdade, o arduino não tem saídas analógicas na verdadeira acepção da palavra. A saída é sempre 0V ou 5V. As saídas ditas analógicas são de facto saídas PWM, que enviam sinais pulsados de acordo com o valor analógico indicado (entre 0 e 255). A variação da frequência dos impulsos vai resultar em valores eficazes de tensão variáveis. No caso concreto, o motor só será alimentado pela pilha de 9V de acordo com os impulsos gerados no pino de controlo do FET.

Confusos? Experimentando tudo vai parecer mais simples. O díodo colocado aos extremos do motor impede a circulação em sentido contrário de correntes geradas pelo motor (o díodo, que é um componente polarizado, só deixa passar a corrente num sentido).

Para fazer a inversão do motor, usei o L293, um circuito integrado preparado já para controlar motores dc e que nos descomplica bastante a vida (a outra hipótese era conceber um circuito algo complicado com vários díodos).

Ainda tentei fazer um pequeno elevador com o circuito que contruí, mas este tipo de motores, ao contrário dos servo motores, não tem a capacidade de manter a posição quando desliga, pelo que se tornou inviável para essa situação. 


Deixo então a minha proposta de trabalho para controlo de motores dc recorrendo ao Scratch...



...o circuito esquemático do último exercício proposto...




...e um pequeno vídeo com o circuito de comando do motor dc em funcionamento (o gacho está um pouco ridículo, reconheço, mas o objetivo foi tornar possível a perceção da inversão de sentido):






8 comentários:

  1. Estou precisando de ajuda. Consegui fazer o motor funcionar mas não obtive sucesso em controlá-lo com o scratch. Então gostaria de saber, além do pino 9, os dois fios vermelho e azul que estão no esquema, são para serem colocados em qual entrada do Arduíno.
    Obrigada.

    ResponderEliminar
    Respostas
    1. Olá Evelyn! Não sei se terei percebido a questão. Está a falar dos fios azul e vermelho que fazem a alimentação da breadboard? Caso seja isso, tem razão em ter dúvidas - eu costumo identificá-los como GND e 5V mas parece que me esqueci de o fazer nestes slides...enfim, caso seja isso, o fio azul serve para manter todos os pontos da respetiva linha horizontal a 0V (e por isso deve ser ligado à saída GND do arduino) e o fio vermelho serve para manter todos os pontos da respetiva linha horizontal a 5V (e por isso deve ser ligado á saída 5V do arduino). Espero ter esclarecido a questão. Caso ainda assim não consiga resolver o seu problema, não hesite em contactar!

      Eliminar
  2. Coloquei analog 9 na programação e conectei os fios de acordo com o esquema. No Scratch os valores dos analogs estão alterando normalmente mostrando que há comunicação entre o Arduíno e o S4A, entretanto, a programação não altera o funcionamento do motor. Não consigo perceber onde estou errando...

    ResponderEliminar
    Respostas
    1. Por partes:
      1. O MOSFET usado é igual ao do esquema? É importante que tenha a mesma pinagem.
      2. O MOSFET que controla o motor está mesmo ligado à porta digital 9?
      3. Depois do circuito montado o motor roda?
      4. Alterando o valor do bloco "Analog 9" entre 0 e 255, como se comporta o motor - não altera a sua velocidade?
      5. Terá mesmo clicado na bandeirinha do Scratch para atualizar o programa?

      Eventualmente, pode mandar uma foto para o email do projeto arduinonaescola@gmail.com para nós vermos. Boas experiências!

      Eliminar
  3. O MOSFET é o IRF 540 não achei o 520 e disseram-me que este é similar Será que é este o problema?
    2.Sim
    3. Sim
    4. Não
    5.Sim
    Muito obrigada, estou feliz e grata pelo apoio dado.

    ResponderEliminar
  4. Evelyn, sem uma foto do circuito, não me ocorre mais erro possível, a não ser o díodo. Está devidamente polarizado?

    ResponderEliminar
  5. Eu queria ser seu ajudante me liga 84284371

    ResponderEliminar