Menu

Adskeeper - header widge

728x90

Search This Blog

468x60

Navbar

AdsKeeper - IAB Display Standard Ad Unit

Saturday, April 25, 2020

ATMega32 controlling DC Motor direction via buttons

This is another digital input output of ATMega32. In this example I use a single Port of PORTC accepting the digital input from button, and output the control to DC motor.

I use L293 for controlling the direction, and also driving the motor at higher voltage and higher current at +12 V.

Three input buttons are Forward, Stop and Backward. Motor is controlled by PC0 and PC1 pin on the same port.






Source Code:


/*
 * controllingMotorStartStop.c
 *
 * Created: 4/25/2020 8:00:39 PM
 * Author : aki-technical
 */ 
#include <avr/io.h>
#define F_CPU 16000000UL
#include "util/delay.h"
//Test the  PINC7 
#define forward (PINC&0b10000000)
//Test the PINC6
#define stop    (PINC&0b01000000)
//Test the PINC5
#define backward (PINC&0b00100000)
//OUTPUT DATA FOR MOTOR
#define run_forward 0b11100001
#define run_backward 0b11100010
#define stop_running 0b11100000

int main(void)
{
    DDRC=0b00011111; //PINC7.5 INPUT
    PORTC=0b11100000; //PC7.5 SET TO HIGH
    /* Replace with your application code */
    while (1) 
    {
        if (forward==0)
        {
            PORTC=stop_running;
            _delay_ms(250);
            PORTC=run_forward;
        }
        else if (stop==0)
        {
            PORTC=stop_running;
            _delay_ms(250);
            PORTC=stop_running;
        }
        else if (backward==0)
        {
            PORTC=stop_running;
            _delay_ms(250);
            PORTC=run_backward;
        }
    }
}

Back to main tutorial page ATMega32 tutorials in C with Atmel Studio 7.

4 comments:

  1. if i want to change the speed of the motor, what should i do?

    ReplyDelete
    Replies
    1. Use PWM https://aki-technical.blogspot.com/2020/06/using-adc-of-atmega32-to-adjust-pwm.html

      Delete
  2. This is just the information I am finding everywhere. Thanks for your blog, I just subscribe your blog. This is a nice blog.. Wohnmobilvermietung Freiburg

    ReplyDelete

Adskeep- Standard Ads

336x280

DIY Electronic Projects And Instruments

AdsKeeper - 2091654

Labels

23K256 (1) 24C16B (2) 25AA010A (2) 8051 (7) 93AA46B (1) ADC (36) Analog Comparator (1) Arduino (16) ARM (32) AT89C52 (7) ATMega32 (59) ATMega644P (27) AVR (88) AVR PCB (2) Bootloader (1) CCS PICC (31) Change Notify Interrupt (CNI) (2) DAC (2) DHT11 (5) Display (151) Distance Sensor (3) dot matrix (1) ds1307 (10) DS18B20 (6) ds3231 (1) ds3232 (2) dsPIC (7) dsPIC30F1010 (3) dsPIC30F2010 (8) EEPROM (5) Environment Sensor (6) ESP32 (1) esp8266 (1) Graphical LCD (3) HD44780 (7) I2C (38) ILI9341 (1) Input/Output (82) Interrupt (22) IoT PCB (1) Keil (5) Keypad (16) KS0108 (3) LCD (81) LM35 (4) Master/Slave (2) MAX7221 (1) MCP23017 (8) MCP23S17 (7) MCP4921 (1) MCP4922 (2) Meter (3) MikroC (2) MikroC ARM (1) MikroC dsPIC (3) Module PCB (2) Motor (15) MPLABX (73) Nokia 5110 LCD (4) OLED (2) One-Wire (7) Oscillator (8) PCB (13) PCD8544 (3) PCF8574 (10) PIC (111) PIC12F (3) PIC16 (105) PIC16F628A (3) PIC16F630 (2) PIC16F716 (4) PIC16F818 (11) PIC16F818/819 (3) PIC16F84A (16) PIC16F876A (2) PIC16F877A (9) PIC16F88 (2) PIC16F887 (60) PIC18 (19) PIC18F1220 (5) PIC18F2550 (5) PIC18F4550 (12) PICKit2 (1) PICMicro PCB (4) Pin Change Interrupt (1) PWM (12) RTC (12) SBN0064G (1) Sensor (15) SH1106 (3) Shift Register (14) Shift Registers (16) SN74HC595N (4) Software TWI (2) SPI (41) ST7735 (1) STM32 (29) STM32 Black Pill (1) STM32 Blue Pill (12) STM32 HAL (23) STM32CubeIDE (32) STM32F103C8T6 (9) STM32F103R6 (18) STM32F401CCU6 (1) SysTick (7) temperature sensor (15) TFT (1) TG12864A (1) Thermometer (22) Timer/Counter (32) TM1637 (2) twi (10) UART (10) Ultrasonic (4) Voltmeter (7) WDT (1) XC16 (2) XC8 (96)