- O que é um motor DC?
- Componentes necessários
- Diagrama de circuito
- Programando Atmega16 para controle de motor DC
Os motores DC são os motores mais amplamente usados. Esses motores podem ser encontrados em quase todos os lugares, desde pequenos projetos até robótica avançada. Anteriormente, fizemos interface com o DC Motor com muitos outros microcontroladores como Arduino, Raspberry pi e o usamos em muitos projetos robóticos. Hoje aprendemos a controlar o motor DC com o Microcontrolador AVR Atmega16. Mas antes de prosseguir, vamos saber mais sobre o motor DC.
O que é um motor DC?
Motor DC é um dispositivo que transforma energia elétrica em energia mecânica. Especificamente, um motor DC usa corrente DC para converter energia elétrica em energia mecânica. O princípio básico do motor é a interação entre o campo magnético e a corrente para produzir uma força dentro do motor que ajuda o motor a girar. Assim, quando a corrente elétrica passa por uma bobina em um campo magnético, uma força magnética é gerada, a qual produz um torque resultando no movimento do motor. A direção do motor é controlada pela reversão da corrente. Além disso, sua velocidade pode ser variada variando a tensão fornecida. Como os microcontroladores têm pinos PWM, eles podem ser usados para controlar a velocidade do motor.
Neste tutorial, a operação do motor DC será demonstrada com Atmega16. O driver do motor L293D será usado para inverter a direção da corrente e, portanto, a direção do movimento. O driver do motor L293D usa a configuração do circuito H-Bridge que fornece a corrente necessária para o motor. Dois botões são usados para selecionar a direção do motor. Um dos botões é usado para selecionar a rotação no sentido horário e o outro é usado para selecionar a operação anti-relógio do motor DC.
Componentes necessários
- Motor DC (5V)
- Motorista L293D
- Atmega16 Microcontrolador IC
- Oscilador de cristal de 16 MHz
- Dois capacitores 100nF
- Dois capacitores 22pF
- Botão de apertar
- Jumper Wires
- Tábua de pão
- USBASP v2.0
- Led (qualquer cor)
Diagrama de circuito
Programando Atmega16 para controle de motor DC
Aqui, o Atmega16 é programado usando USBASP e Atmel Studio7.0. Se você não sabe como programar Atmega16 usando USBASP, visite o link. O Programa Completo é dado no final do projeto, basta carregar o programa no Atmega16 e usar os dois Botões para girar o motor DC no sentido horário e anti-horário.O motor DC é conectado usando o driver de motor L293D. O motor DC irá girar em duas direções quando o respectivo botão for pressionado. O único botão será usado para girar o motor CC na direção do relógio e o outro botão será usado para girar o motor CC no sentido anti-horário. Em primeiro lugar, defina a frequência da CPU do microcontrolador e inclua todas as bibliotecas necessárias.
#define F_CPU 16000000UL #include #include
Em seguida, use uma variável para controlar o status do botão pressionado. Esta variável será usada para definir a direção do motor.
int i;
Selecione o modo de entrada / saída de GPIO usando o registro de direção de dados. Inicialmente, torne a saída do pino do motor tão baixa para evitar a partida do motor sem pressionar o botão.
DDRA = 03; PORTA & = ~ (1 << 1); PORTA & = ~ (1 << 0);
Verifique se 1 st de botão é pressionado conectado a PORTA4 de ATmega16 e armazenar o estado do botão de pressão na variável.
if (! bit_is_clear (PINA, 4)) { i = 1; PORTA & = ~ (1 << 1); _delay_ms (1000); }
Da mesma forma, verifique se o 2º botão está pressionado conectado ao PORTA5 do Atmega16 e armazene o status do botão na variável.
senão if (! bit_is_clear (PINA, 5)) { i = 2; PORTA & = ~ (1 << 0); _delay_ms (1000); }
Se o status do 1 st botão for verdade, então girar motor DC em Relógio direção sábia e se o estado do segundo botão for verdade, então girar motor DC em anti-relógio sábio.
if (i == 1) { PORTA - = (1 << 0); PORTA & = ~ (1 << 1); } else if (i == 2) { PORTA - = (1 << 1); PORTA & = ~ (1 << 0); }
Você pode conectar os pinos do motor a qualquer pino GPIO, dependendo do GPIO usado. Também é importante usar o Motor Driver IC para diminuir a carga no microcontrolador, pois os microcontroladores não são capazes de fornecer a corrente necessária para operar motores CC. Para mais detalhes e outros projetos baseados em motores DC, visite o link fornecido.
O código completo e o vídeo de demonstração são fornecidos abaixo.