domingo, 21 de maio de 2017


Uso do controlador


Controlador de motor de passo A4988
Diagrama mínimo de conexões para o modo de passo cheio.

Conexões de alimentação

O controlador necessita de uma alimentação lógica (3 a 5,5V) conectada nos pinos VDD e GND, e uma alimentação para o motor (8 a 35V) conectada aos pinos VMOT e GND. Estas alimentações devem ter capacitores de desacoplamento próximos à placa e que devem ser capazes de fornecer as correntes esperadas (picos de até 4A para a alimentação do motor).
Nota: Esta placa utiliza capacitores cerâmicos de baixa ESR sucetíveis a destruição por picos de tensão LC, especialmente quando utilizando cabos de alimentação maiores do que alguns centímetros. Sob certas condições estes picos podem exceder a voltagem máxima de 35V permitida para o A4988, causando danos permanentes, mesmo com voltagens de alimentação tão baixas quanto 12V. Um modo de proteger o controlador contra estes picos é colocar um capacitor eletrolítico grande (> 50 µF) entre os pinos VMOT e GND tão próximo à placa quanto possível.

Conexões do motor

Motores de passo com 4, 6 e 8 cabos podem ser controlados pelo A4988 se estiverem conectados corretamente. Veja as perguntas frequêntes na página do fabricante para maiores detalhes.
Nota: Conectar ou desconectar um motor de passo enquanto o controlador está alimentado pode destruir o controlador.

Tamanho do passo (e do micropasso)

Motores de passo normalmente têm um tamnaho de passo específico (e.g. 1,8º ou 200 passo por revolução), que se aplicam a passos cheios. Um controlador de micropassos como o A4988 permite resoluções maiores através alocações em passos intermediários, o que é alcançado energizando as bobinas com níveis intermediários de corrente. Por exemplo, controlando um motor em modo de um quarto de passo fará com que um motor de 200 passos por revolução tenha 800 micropassos por revolução utilizando 4 níveis deiferentes de corrente..
Os seletores de entrada de resolução (tamanho do passo) MS1,MS2 e MS3 permitem selecionar entre os cinco niveis possíveis de acordo com a tabela abaixo. MS1 e MS3 têm resistências de rebaixamento de 100kΩ e o MS2 de 50kΩ. Desse modo, deixando estes pinos desconectados habiltará o funcionamento em modo de passo cheio. Para que os modos de micropasso funcionem corretamente o limite de corrente deve ser rebaixado de modo que os limitadores de corrente sejam habilitados. Caso contrário níveis intermediários de corrente não serão mantidos corretamente e motor funcionará efetivamente em modo de passo cheio.
MS1 MS2 MS3 Resolução de micropasso
Low Low Low passo cheio
High Low Low meio passo
Low High Low um quarto de passo
High High Low um oitavo de passo
High High High um dezesseisavos de passo

Entradas de controle

Cada pulso na entrada STEP corresponde a um micropasso do motor na direção selecionada pelo pino DIR. Note que os pinos STEP e DIR não são direcionados internamente para nenhuma voltagem e você não deve deixar que flutuem em sua aplicação. Se você deseja apenas um sentido de rotação você pode conectar DIR a VCC ou a GND diretamente. O chip tem três diferentes entradas de controle para seus principais estados de alimentação: RST, SLP, e EN. Para detalhes sobre estes status veja o datasheet. Note que o pino RST é flutuante, caso não necessite utilizá-lo você pode conactá-lo ao pino adjacente SLP no PCB.

Limitação de corrente

Para alcançar velocidades de passos mais altas a alimentação do motor é tipicamente muito mais alta do que o que seria permitido sem limitação ativa de corrente. Por exemplo, um motor de passo típico poderia estar classificado para correntes de 1A com uma resistência de bobina de 5Ω, o que indicaria uma alimentação máxima de 5V. Utilizar um motor destes com 12V permitiria maiores velocidades de passo, mas a corrente deve ser ativamente limitada para menos de 1A para prevenir danos.
O A4988 suporta esta esta limitação de corrente, e o potenciômetro de ajuste na placa pode ser utiizado para determinar o limite de corrente. Um dos modos de ajustar este limite de corrente é colocar o controlador a toda velocidade em modo de passo cheio e medir a corrente através de uma das bobinas sem ajustar a entrada de STEP. Como as duas bobinas estão sempre limitadas em 70% em modo de passo cheio, a corrente medida será 0,7 vezes o limite de corrente deste motor. Note que o limite de corrente depende da voltagem em VDD.
Outro modo de ajustar o limite é medir a voltagem no pino "ref" e calcular o limite de corrente resultante (os resistores de senso de corrente são de 0,05Ω). A voltagem no pino ref pode ser acessada em uma via marcada com um círculo na parte posterior do circuíto.

Considerações sobre dissipação de potência

O CI A4988 tem uma taxa máxima de corrente de 2A por bobina, mas a corrente real que você pode fornecer ao motor depende da capacidade de manter o chip refrigerado. A placa do circuíto impresso foi desenvolvida para drenar calor do chip mas para fornecer mais do que 1A por bobina um dissipador de calor ou outro método de refrigeração é necessário.
Este produto pode se aquecer o suficiente para produzir queimaduras antes que o chip se superaqueça. Tome cuidado quando estiver manusenado este item e outros componentes ligados a ele.
Note que medir a corrente drenada na alimentação não necessariamente fornece uma medida da corrente na bobina. Como a voltagem de entrada do controlador pode ser significativamente mais elevada (o controlador e a bobina atuam como um rebaixador da alimentação). Além disso, se a voltagem de alimentação for muito alta comparada àquela necessária para o motor o duty cycle será muito lento, o que também acarreta em diferenças significativas entre as correntes médias e RMS.

Esquema


Controlador de motor de passo A4988
 Controle de motor DC com N555 ou L555

Esse circuito é um simples controlador de motor DC usando um circuito integrado  NE555. Esse controle de velocidade de motor DC utiliza um temporizador 555 que  controlar a aceleração do motor e uma chave  muda seu sentido de rotação. Um circuito eletrônico PWM com base no temporizador NE555 é o coração deste projeto de fácil construção e baixo custo.
Controle de Motor DC com PWM


Controle de Motor DC com PWM – Via
O 555 é ligado como um multivibrador astável, cujo ciclo de trabalho pode ser ajustado através da variação de R1 que é um Potenciômetro ou trimpot. A saída de IC1 (555) é acoplado à base do transístor Q1 (BD139) , que aciona o motor de acordo com o sinal de PWM disponível na sua base.

Controle de Motor DC com PWM


A mudança de direção do motor DC é feita usando a chave S1 DPDT que na aplicação apenas alterna a polaridade aplicada ao motor e com isso fazendo a inversão de sentido da rotação. Esse método de inversão de rotação pode não funcionar em alguns motores.
A alimentação é feita em 12Volts DC, Vm é a fonte de alimentação separada para o motor e seu valor depende da tensão nominal do motor. O VCEO máximo  do BD139 é de 80Volts e assim Vm não deve ser superior a 80 Volts. Já o coletor do BD139 pode trabalhar com correntes de até 1.5 Ampere, com isso você não deve usar um motor que consuma mais de 1,5 amperes de corrente.
Para valores superiores de tensão e corrente você deve usar outro transistor, mas todo cuidado deve ser tomado, pois um transistor em curto pode causar danos em todo o circuito. Um dissipador de calor é necessário para o BD139, quanto mais corrente no motor, mais dissipação ele necessita.

sexta-feira, 19 de Maio de 2017

  Print dos dados sensor DHT11 no LCD

Componentes necessários:

- Protobord
- Potenciômetro
- LCD 12 x 2
- Sensor de umidade e temperatura DHT11
- Fios
 //Projeto 11 - Print dos dados sensor DHT11 no LCD  
 //Este código é de domínio público  
   
 #include <LiquidCrystal.h> //Inclui a biblioteca do LCD  
 #include <dht.h>  
 #define dht_dpin A1 //Pino DATA do Sensor ligado na porta Analogica A1  
   
 dht DHT; //Inicializa o sensor   
 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Configura os pinos do Arduino para se comunicar com o LCD  
   
 void setup(){  
  lcd.begin(16, 2);        //Inicia o LCD com dimensões 16x2(Colunas x Linhas)  
  lcd.setCursor(0, 0); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD  
  lcd.print("Umidade");  
  lcd.setCursor(0, 1); //Posiciona o cursor na primeira coluna(0) e na segunda linha(1) do LCD  
  lcd.print("Temperatura");  
 }  
    
 void loop(){  
  DHT.read11(dht_dpin); //Lê as informações do sensor  
    
  lcd.setCursor(12, 0); //Posiciona o cursor na décima quarta coluna(13) e na primeira linha(1) do LCD  
  lcd.print(DHT.humidity); //Escreve o valor atual da variável de contagem no LCD  
    
  lcd.setCursor(12, 1); //Posiciona o cursor na décima quarta coluna(13) e na segunda linha(1) do LCD  
  lcd.print(DHT.temperature); //Escreve o valor atual da variável de contagem no LCD   
  delay(2000);  
 }  

sexta-feira, 19 de MAIO de 2017

Sensor ultrasônico e LCD

Componentes necessários:

- Protobord
- Potenciômetro
- LCD 12 x 2
- Sensor Ultrasônico HC-SR04
- Fios

 //Projeto 13 - Sensor ultrasônico e LCD  
 //Este código é de domínio público  
   
 #include <LiquidCrystal.h> //Inclui a biblioteca do LCD  
 #include "Ultrasonic.h"  
   
 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Configura os pinos do Arduino para se comunicar com o LCD  
   
 int trig = 9;  
 int echo = 8;  
 Ultrasonic ultrasonic(trig,echo);  
   
 void setup() {  
  lcd.begin(16, 2);        //Inicia o LCD com dimensões 16x2(Colunas x Linhas)  
  lcd.setCursor(0, 0); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD  
  lcd.print("Distancia");  
  lcd.setCursor(14,0);  
  lcd.print("CM");  
 }  
   
 void loop(){  
  lcd.begin(16, 2);        //Inicia o LCD com dimensões 16x2(Colunas x Linhas)  
  lcd.setCursor(0, 0); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD  
  lcd.print("Distancia");  
  lcd.setCursor(14,0);  
  lcd.print("CM");  
  lcd.setCursor(10, 0); //Posiciona o cursor na décima primeira coluna(13) e na primeira linha(0) do LCD  
  lcd.print(ultrasonic.Ranging(CM));  
  delay(1000);  
  lcd.clear();  
 }  

sábado, 20 de Maio de 2017

  LED IR captando sinal

Componentes necessários:

- Protobord
- Receptor IR
- Fios
 //Projeto 17 - LED IR captando sinal  
 //Este código é de domínio público   
   
 #include <IRremote.h>  
   
 int RECV_PIN = 2;     //Declarando o pino 2 como RECV_PIN  
 IRrecv irrecv(RECV_PIN);  //  
 decode_results results;  
   
 void setup(){  
  Serial.begin(9600);  
  irrecv.enableIRIn();   // Inicializa o receptor  
 }  
   
 void loop() {  
  if (irrecv.decode(&results)) { //Se algum valor for lido, será imprimido  
   Serial.println(results.value, BIN); //Pode trocar BIN para DEC, HEX...  
   irrecv.resume();    //Limpa da memória o valor lido  
  }  
 }  
   

sexta-feira, 19 de Maio de 2017

  Servo motor com Potenciômetro

Componentes necessários:

- Protobord
- Potenciômetro
- Servo Motor
- Fios
 //Projeto 16 - Servo motor com Potenciômetro  
 //Este código é de domínio público  
   
 #include <Servo.h>   
    
 Servo servo1; //Cria o objeto Servo  
    
 void setup(){   
  servo1.attach(5); //Envia pelo pino 5 os valores dos ângulos  
 }   
    
 void loop(){   
  int angulo = analogRead(0); //lê o valor do potenciômetro  
  angle=map(angle, 0, 1023, 0, 180); //mapeia os valores lidos, convertendo entre 0 e 180 graus  
  servo1.write(angle); // envia o ângulos para o servo  
  delay(15);  
 }