yahboom
HomeLearn
Solution
Blog
Online Store
About Us
EN/中文
Motor with Encoder📖
1.Introduction
  • 1.Introduction
2.2-channel motor drive module tutorials
For Arduino
  • 1.AT8236 drive tutorials
For STM32
  • 1.AT8236 drive tutorials
For MSPM0G3507
  • 1.AT8236 drive tutorials
  • 2.TB6612 drive tutorials
For MSPM0G3519
  • 1.AT8236 drive tutorialsnew
  • 2.TB6612 drive tutorialsnew
3.4-channel motor drive module tutorials
Introduction and Debug
  • 1.Introduction to 4-channel motor drive board
  • 2.Control command
  • 3.Motor introduction and usage
  • 4.PC host
IIC communication
  • For Arduino
  • For ESP32
  • For Jetson NANO
  • For MSPM0G3507
  • For MSPM0G3519new
  • For PICO2
  • For RDK X5
  • For RPi5
  • For STM32
USART communication
  • For Arduino
  • For ESP32
  • For Jetson NANO
  • For MSPM0G3507
  • For MSPM0G3519new
  • For PICO2
  • For RDK X5
  • For RPi5
  • For STM32
Download
  • Annex_2-channel motor drive module tutorials
  • Annex_4-channel motor drive module tutorials
Download ZIP

Welcome to Motor with Encoder repository

1.AT8236 drive tutorials

stm32f103c8t6

1. Preparation

Connect the motor drive board and stm32 according to the wiring diagram, connect the battery to the power input interface on motor drive module.

stm32f103c8t6接线图

Note: The motor interface wire sequence of the dual motor drive board should correspond to the motor pin! Otherwise, the motor drive plate will be damaged

Note: The motor interface wire sequence of the dual motor drive board.

image-20230215160150782

2. Code
x
#include "stm32f10x.h"
#include "delay.h"
#include "gpio.h"
#include "moto.h"
#include "pwm.h"
#include "adc.h"
#include "usart.h"
#include "encoder.h"
 
int main(void)
 {  
     u16 encoder_A,encoder_B;
     int Velocity_PWM1,Velocity_PWM2;
     u16 adcx;
     float vcc;
   SystemInit(); //Configure the system clock as 72Mhz
   delay_init();    //Delay function initialization
   uart_init(9600);     //Serial port initialization
     
   adc_Init();              //ADC1 initialization 
     
   PWM_Int(7199,0);      //Initialize pwm output72000 000 /7199+1=10000 
   Encoder_Init_Tim2();
   Encoder_Init_Tim4();
  while(1)
    {
//      moto(0);                //moto=0Forward rotation
//      moto(1);                //moto=1Reversal rotation

        adcx=Get_adc_Average(ADC_Channel_2,10);  //Get the value of ADC
        vcc=(float)adcx*(3.3*11/4096);           //Find the current voltage
        encoder_A=Read_Encoder(2);
        encoder_B=Read_Encoder(4);               //Read encoder value
        Velocity_PWM1=Velocity_A(encoder_A);
        Velocity_PWM2=Velocity_B(encoder_B);
        Set_PWM(Velocity_PWM1,Velocity_PWM2);
        printf("µ±Ç°µçѹ=%6.2f V  Encoder_A = %d  Encoder_B=%d\r\n",vcc,encoder_A,encoder_B);//Print the current working voltage and speed  
    }
 }


3.Experimental result

Write the code into the stm32 core board, the motor starts start to rotate.

Open the serial port software such as the serial port debugging assistant, set the baud rate to 9600, and you can see the current voltage value of the serial port output, and the speed of the encoded value of motor.

AT8236 drive tutorials
AT8236 drive tutorials

COMPANY

  • About us
  • Team Style
  • Blog

LEARNING & EXPLORATION

  • Tutorials
  • Edge AI hardware
  • Educational robots
  • Embedded intelligent hardware

WHERE TO BUY

  • Yahboom Online Store
  • Amazon
  • Alibaba
  • AliExpress
  • Mercado

TECHNOLOGY SUPPORT

  • Email: support@yahboom.com

BE A DISTRIBUTOR

  • Email: sales@yahboom.com
QR Code
QR Code

Copyright © 2017-2026 Yahboom. All Rights Reserved.

EN/中文