锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

STM32控制舵机

时间:2022-09-17 07:00:01 32h连接器

在电子领域,由于其准确性和操作方便,舵机主要用于机器人项目。舵机体积小,非常有效节能。它们提供高扭矩,可以根据电机规格用于提升或推动重物。在本文中,我们将了解舵机以及如何使舵机和舵机 STM32F103C8 板连接。还连接了一个电位器来改变舵轴的位置,并连接了一个 LCD 显示角度值。

电路图和连接

SMT32F103C8 引脚的详细信息

在STM32F103C8 中,我们有 10 个ADC 引脚(PA0-PB1)我们在这里使用其中一个(PA3),读取模拟信号。舵机的轴位置由电位器设置。

此外,STM32 有 15 个PWM 引脚(PA0、PA1、PA2、PA3、PA6、PA7、PA8、PA9、PA10、PB0、PB1、PB6、PB7、PB8、PB9),我们也只使用其中一个引脚向舵机PWM引脚提供脉冲(通常是橙色)。

STM32F103C8与LCD的连接

舵机与STM32F103C8的连接

电位器连接

我们在这里使用两个电位器

1.其中一个和LCD用于改变连接 LCD 对比度 3 引脚连接到中间引脚 LCD 的 V二端分别连接 5V,GND。

2.另一种用于控制模拟电压输入来改变舵机的轴位,中间输出连接STM32的(PA3),两端分别接 3.3V,GND。

程序

还是在Arduino IDE 中编程。

#include //舵机库 #include //LCD 库 //声明LCD 引脚连接到STM32 的哪个引脚 const int rs = PB0, en = PB1, d4 = PB10 , d5 = PB11 , d6 = PC13, d7 = PC14; LiquidCrystal lcd(rs,en,d4,d5,d6,d7); //初始化 LCD int servoPin = PA0; //舵机PWM int potPin = PA3; //电位器ADC输入 Servo servo; // Servo类型 void setup()  {    lcd.begin(16,2); //16*2类型LCD   lcd.setCursor(0,0); ///将光标设置在第一行光标   lcd.print("Hello World"); //LCD显示Hello World   lcd.setCursor(0,1); ///将光标设置在第二行第一列   lcd.print("SERVO WITH STM32"); // SERVO WITH STM32   delay(3000); //延时3秒   lcd.clear(); //清屏   servo.attach(servoPin); // servoPin (即 PA0)作为舵机控制 }  void loop() {   lcd.clear();   int angle; ///声明舵机位置变量   int reading;//声明读取ACD值   reading = analogRead(potPin); //STM32 PA3将模拟电压 (0-3.3) 转换为数字形式   angle = map(reading, 0, 4096, 0, 170);// reading0-4096中的映射次映射到0-170   servo.write(angle); //设置舵机位置   lcd.setCursor(0,0); //设置LCD第一行第一列光标   lcd.print("ANGLE:"); //LCD 显示 ANGLE:   lcd.print(angle); //LCD 显示舵机位置   delay(100); //延时100ms }

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章