yahboom
HomeLearn
Solution
Blog
Online Store
About Us
EN/中文
520 Motor📖
1.About motor
  • About motor
2.ROS robot control board drive
  • 2.1 Control motor
  • 2.2 Timer captures encoder data
  • 2.3 PID control robot car
  • 2.4 Kinematic Analysis-Mecanum wheel structure
  • 2.5 Kinematic Analysis-Ackerman structure
  • 2.6 Kinematic Analysis-4WD structure
3.STM32 Self-balancing car tutorials
Get started quickly
  • 03.P, PI, PD controller theory
  • 01.Balancing car assembly
  • 02.Get started quicklyy
  • 03.Balance car interface description
  • 04.Common Problem Analysis
  • 05.Balance Car V2 Library Function Development Manual
Environment construction and development
  • 01.MDK-ARM installation
  • 02.STM32CubeIDE installation
  • 03.Common driver installation
  • 04.Download the program
  • 05.MDK-ARM project usage
  • 06.Program simulation
Robot car PID control course
  • 01.PID basic concept
  • 02.PID example analysis
  • 04.Position PID
  • 05.Incremental PID
  • 06.Cascade PID
  • 07.Balance principle of car
  • 08.Car upright control (PD)
  • 09.Car speed ​​control (PI)
  • 10.Car steering control (PD)
  • 11.Got angle and angular velocity (DMP algorithm)
  • 12.Got angle and angular velocity (Kalman filter algorithm)
  • 13.Got angle and angular velocity(Complementary filter algorithm)
Robot car basic course
  • 01.Car parameter adjustment
  • 02.Ultrasonic obstacle avoidance
  • 03.Ultrasonic follow
  • 04.Bluetooth remote control
  • 05.Load balance
Robot car LQR control
  • Robot car LQR control
Circuit design
  • 01.Overall circuit design
  • 02.STM32 minimum system
  • 03.Serial port circuit design
  • 04.Power circuit design
  • 05.MPU6050 Circuit Design
  • 06.Motor drive circuit design
Mathematical model
  • Balance car mathematical model
4.4-channel motor drive module
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
5.2-channel motor drive module
For MSPM0G3507
  • 1.AT8236 drive tutorials
  • 2.TB6612 drive tutorials
For MSPM0G3519
  • 1.AT8236 drive tutorialsnew
  • 2.TB6612 drive tutorialsnew
Download
  • Model File
  • Annex_ROS_robot_board
  • Annex_STM32_balancing_car
  • Annex_4channel_motor_drive
  • Annex_2channel_motor_drive
Download ZIP

Welcome to 520 Motor repository

02.Ultrasonic obstacle avoidance

Ultrasonic obstacle avoidance

Ultrasonic obstacle avoidanceHardware connectionDistance measurement principleMain codeProgram flow chartExperimental phenomenon

The tutorial mainly demonstrates the obstacle avoidance function of the balance car combined with the ultrasonic module.

xxxxxxxxxx
The tutorial only introduces the standard library project code

Hardware connection

Ultrasonic moduleSTM32F103RCT6
VCC5V
TRIGPA0
ECHOPA1
GNDGND

Distance measurement principle

The ultrasonic module is mainly responsible for obtaining the distance between the obstacle and the car to achieve the obstacle avoidance function.

image-20230926100744843

Trigger ranging signal

The TRIG pin sends a high level signal for more than 10us.

xxxxxxxxxx
The ultrasonic module will automatically send 8 40KHz square waves and automatically detect whether there is a signal return

Receive echo signal

If there is a signal return, the ECHO pin will output a high level. The duration of the high level is the time from the ultrasonic wave transmission to the return.

Distance conversion

Distance=Thigh∗Vspeed2
xxxxxxxxxx
T: high level time of echo signal
V: sound speed (approximately equal to 340m/s)

Main code

The tutorial mainly explains the code for obstacle avoidance. For detailed code, please refer to the corresponding project file.

APP_avoid

Control the direction of the car's movement according to the distance detected by ultrasonic wave.

​x
void APP_avoid(void)
{
    if(g_distance<250)
    {
        Move_X = -10;
        my_delay(1);

        Move_X = 0;
        Move_Z = 400;
        my_delay(2);
    }
    else
    {
        Move_X = 15;
        Move_Z = 0;
    }
}

Judge whether the distance is less than 25cm. If so, perform the backward and rotation actions; if greater than or equal to 25cm, the car moves forward.

Program flow chart

Briefly introduce the process of function implementation:

image-20240902165359074

Experimental phenomenon

Software code

The U_avoid.hex file generated by the project compilation is located in the OBJ folder of the U_avoid project. Find the U_avoid.hex file corresponding to the project and use the FlyMcu software to download the program into the development board.

xxxxxxxxxx
Product supporting materials source code path: Attachment → Source code summary → 4.Balanced_Car_base → 02.U_avoid

Experimental phenomenon

After the program is started, press KEY1 according to the OLED prompt to start the balance car obstacle avoidance function: OLED will display the distance to the obstacle in front and the inclination of the balance car in real time!

The program has voltage detection. If the voltage is less than 9.6V, the low voltage alarm will be triggered and the buzzer will sound.
Common situations for triggering voltage alarms:
1. The power switch of the development board is not turned on, and only the Type-C data cable is connected for power supply
2. The battery pack voltage is lower than 9.6V and needs to be charged in time
Car parameter adjustment
Ultrasonic follow

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

Copyright © 2017-2026 Yahboom. All Rights Reserved.

EN/中文