segunda-feira, 24 de outubro de 2011

Código do Arquivo: Motor.h

Este código deve ser "colado" no bloco de notas, e salvo com o nome "Motor" e a extensão ".h" ao invés de ".txt". Lembre-se de salvar o arquivo na pasta do arquivo de código do teste de motores.

Código Abaixo:


 /* *******************************************************************************************
  Funcao para conversao do valor de potencia do motor de decimal para porcentual
********************************************************************************************/
int calcularPotencia(int potencia)
{
  return ( (float)potencia / 100 * 255 ) ;
}


/* *********************************************************************************************
  Funcao de controle do motor
*********************************************************************************************
*/
int motor(boolean sentidoHorario, int potenciaSaida, int pinoHorario, int pinoAntiHorario, int potenciaAtual)
/*
  sentidoHorario: 1 = Horario, 0 = Anti Horario
  potencia: Potência a ser colocado o motor, vai de 0(%) a 100(%)
  pinoHorario: pino digital (com PWM) para rotacao sentido horario do motor
  pinoAntiHorario: pino digital (com PWM) para rotacao sentido horario do motor
*/
{
  potenciaSaida = calcularPotencia(potenciaSaida);


  int x = 0, pino = 0;


  if( potenciaAtual <= potenciaSaida)
  {
    for(x=potenciaAtual+1; x<=potenciaSaida; x++)
    {
      analogWrite( (pino = (sentidoHorario?pinoHorario:pinoAntiHorario) ) , x);
    }
  }
  else
  {
    for(x=potenciaAtual-1; x>=potenciaSaida; x--)
    {
      analogWrite( (pino = (sentidoHorario?pinoHorario:pinoAntiHorario) ) , x);
    }
  }
  return (x);
}

Codigo de Exemplo do Controle dos Motores


// O arquivo abaixo (Motor.h) deve esta na mesma pasta desse arquivo (TesteMotor.pde)
#include "Motor.h"


// Funcao setup()
void setup()
{
  //Seta os pinos dos motores para saida
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(6, OUTPUT);
}


int potenciaSaidaMotor1 = 70;      // Em porcentual
int potenciaSaidaMotor2 = 60;      // Em porcentual
boolean direcaoMotor1 = 0;         // 0 = Anti horario
boolean direcaoMotor2 = 1;         // 1 = horario


// Atencao: todos os pinos abaixo devem ser PWM, para controle da velocidade do(s) motor(es)
int pinHorarioMotor1 = 11;
int pinAntiHorarioMotor1 = 10;
int pinHorarioMotor2 = 9;
int pinAntiHorarioMotor2 = 6;
  
// Exemplo de acionamento dos motores (1 - Motor da Direita e 2 - Motor da Esquerda)
void loop()
{
  int static motor1 = 0;          // Potencia inicial/atual do motor1
  int static motor2 = 0;          // Potencia inicial/atual do motor2
   
  /*
    O exemplo abaixo movimenta o motor direito no sentido Anti horario com potencia de 70% e
      movimenta o motor esquerdo no sentido horario com potencia de 60%.
    O sentido anti horário no motor da direita, efetua o movimento para frente e o sentido horario
      no motor da esquerda, tambem efetua o movimento para a frente. Como as velocidades finais 
      são ligeiramente diferentes (70% e 60% da potência dos motores), o robo ira efetuar uma 
      curva em parabola para a esquerda.
  */  
  
  // Funcao para acionar o motor 1 - direito
  motor1 = motor(direcaoMotor1, potenciaSaidaMotor1, pinHorarioMotor1, pinAntiHorarioMotor1, motor1);
  // Funcao para acionar o motor 2 - esquerdo
  motor2 = motor(direcaoMotor2, potenciaSaidaMotor2, pinHorarioMotor2, pinAntiHorarioMotor2, motor2);
  delay(2000);
}

sábado, 15 de outubro de 2011

Simulador para Arduino

Olá,

Não deixe de baixar o simulador (OpenSource) do Arduino Fritzing. Muito bom, principalmente para quem ainda esta sem a placa para testar.

Ele simula o circuito de testes na placa de protótipo, tem editor de programação e cria a PCI (Placa de circuito impresso).

Estou criando um circuito sensor de linha com LDR, usando o simulador. Em breve publico o esquemático, PCI e resultados. Me parece, a princípio, ser mais sensível do que o circuito com LED IR.

Abraços.




Transmissão e Rodas

Olá,

A transmissão da força do motor as rodas, não necessariamente precisar ser com correntes, a Ferreira Costa (em frente a Unijorge), tem uma divisão de correia e polias, uma de rodízios e uma de eixos lisos ou rosqueados.


ATENÇÃO: Ponte H a relé (ou relay. Relê nunca!)

Olá,

Quem não montou ainda a Ponte H a relé, segue abaixo lista de material: (Atenção para adquirir Relés de 5 Volts de Entrada (Controle).

4 Relés de 5V entrada, 10A de saída, NA (Normalmente Aberto, isso é importante.)
4 Transistores, BC 546 ou BC 547 ou BC 548 (Tipo NPN).
4 Diodos retificadores (1N4007)
4 LED´s para sinalização (3mm ou 5 mm) vermelhos.
4 Resistores para controle de corrente dos Led´s de 390 Ohms por 1/4 Watt.
4 Resistores de PullDown de 10K Ohms por 1/4 Watt.
2 Bornes de 4 pinos KRE-4 (pequeno).
3 Bornes de 2 pinos KRE-2 (pequeno).
1 Placa de Fenolite ou similar para circuito impressor, de 10cm x 10cm.
1 Percloreto para corroer a placa, 100g.
2 Metros de fio 22AWG (Vermelho, Preto e Verde).

Observação: Esta configuração, é para controle de 2 motores.