0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

用STM32F103C8控制伺服馬達的電路連接及代碼說明

芯情觀察猿 ? 來源:芯情觀察猿 ? 作者:芯情觀察猿 ? 2022-07-04 10:28 ? 次閱讀

伺服馬達(Servo motor)憑準確、小型、高效,易用在機器人領(lǐng)域應用廣泛,其高扭矩特性非常適合升降重物。本項目用電位器改變馬達轉(zhuǎn)子位置,用STM32F103C8(藍丸)控制伺服馬達,用LCD顯示角度值。

項目BOM表及電路連接

項目BOM表如下:

1、STM32F103C8藍丸板 x1

2、伺服馬達(SG90) x1

3、LCD(16x2) x1

4、電位器 x2

5、面包板 x1

6、跳線 若干


pYYBAGLCUFKAP7dRAACkYYRGUkM70.jpeg?source=d16d100b

?

STM32F103C8有10路ADC引腳(PA0-PB1),本項目使用PA3作為analogread(),通過電位器設定馬達的位置。在STM32引腳的15 PWM引腳中(PA0, PA1, PA2, PA3, PA6, PA7, PA8, PA9, PA10, PB0, PB1, PB6, PB7, PB8, PB9),我們只使用其中的一個引腳,為伺服馬達的PWM引腳(該引腳通常帶有顏色)提供脈沖信號。

STM32F103C8與LCD的連接如下:

STM32F103C8 LCD

GND VSS

+5V VDD

電位器中心PIN V0

PB0 RS

GND RW

PB1 E

PB10 D4

PB11 D5

PC13 D6

PC14 D7

+5V A

GND K


伺服馬達與STM32F103C8的連接如下:

STM32F103C8 伺服馬達

+5V RED (+5V)

PA0 ORANGE (PWM pin)

GND BROWN (GND)


poYBAGLCUFKAe1HgAAC4_QBAFKY58.jpeg?source=d16d100b

?

本項目使用兩個電位器:

(1)右邊的用來改變LCD對比度。左邊接5V電源,右邊接地,中間引腳與LCD的V0連接。

(2)左邊的用來模擬輸入電壓的大小,以改變伺服馬達轉(zhuǎn)子的位置。左邊引腳接3.3V電源,右邊接地,中間連接與的STM32板子的PA3引腳。

編程及代碼說明

如果電腦安裝了Arduino IDE,連接上USB接口,就可以像使用Arduino一樣,對STM32F103C8進行編程了,無須使用FTDI編程器。


首先,載入馬達和LCD函數(shù):

#include

#include


其次,聲明LCD顯示器引腳并初始化。同時還要聲明其他幾個用于PWM和電位器的變量:

const int rs = PB0, en = PB1, d4 = PB10 , d5 = PB11 , d6 = PC13, d7 = PC14;

LiquidCrystal lcd(rs,en,d4,d5,d6,d7);

int servoPin = PA0;

int potPin = PA3;


這里,我們創(chuàng)建了伺服變量,并將其賦予前述聲明的PWM引腳。

Servo servo;

servo.attach(servoPin);


然后,從ADC引腳——PA3讀取模擬值,將模擬電壓(0-3.3)轉(zhuǎn)換成數(shù)字形式(0-4095)。

analogRead(potPin);

該ADC為12位,我們需要獲得的0-170模擬值,要將其均分為(0-4096)數(shù)字形式。

angle = (reading/24);


下面指令使伺服馬達以給定的角度旋轉(zhuǎn)轉(zhuǎn)軸:

servo.write(angle);

完整的代碼如下:

//INTERFACE SERVO WITH STM32

//CIRCUIT DIGEST

#include //including servo library

#include //including LCD display library

const int rs = PB0, en = PB1, d4 = PB10 , d5 = PB11 , d6 = PC13, d7 = PC14; //declaring pin names and pin numbers of lcd

LiquidCrystal lcd(rs,en,d4,d5,d6,d7);//setting lcd and its paramaters

int servoPin = PA0; //declare and initialize pin for servo output PWM

int potPin = PA3; //potentiometer ADC input

Servo servo; // creating variable servo with datatype Servo

void setup()

{

lcd.begin(16,2); //setting lcd as 16x2

lcd.setCursor(0,0); //setting cursor at first row and first column

lcd.print("CIRCUIT DIGEST"); //puts CIRCUIT DIGEST in LCD

lcd.setCursor(0,1); //setting cursor at second row and first column

lcd.print("SERVO WITH STM32"); //puts SERVO WITH STM32 in LCD

delay(3000); // delays for 3 seconds

lcd.clear(); //clears lcd display

servo.attach(servoPin); //it connects pin PA0 with motor as control feedback by providing pulses

}

void loop()

{

lcd.clear(); //clears lcd

int angle; //declare varible angle as int

int reading; //declare varible reading as int

reading = analogRead(potPin); //read analog value from pin PA3

angle = (reading/24); //it divides ADC the value according to max angle 170 deg

servo.write(angle); //it puts angle value at servo

lcd.setCursor(0,0); //setting cursor at first row and first column

lcd.print("ANGLE:"); //puts ANGLE in LCD

lcd.print(angle); //puts value at angle

delay(100); //delay in time

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • lcd
    lcd
    +關(guān)注

    關(guān)注

    34

    文章

    4385

    瀏覽量

    166709
  • 伺服馬達
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    7673
  • 電路連接
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    6663
  • STM32F103C8
    +關(guān)注

    關(guān)注

    1

    文章

    23

    瀏覽量

    8062
收藏 人收藏

    評論

    相關(guān)推薦

    19.4-STM32接收數(shù)據(jù)-狀態(tài)顯示在屏幕 openMV尋跡與小車控制 Openmv+STM32F103C8T6視覺巡線小車

    19.4-STM32接收數(shù)據(jù)-狀態(tài)顯示在屏幕 openMV尋跡與小車控制 Openmv+STM32F103C8T6視覺巡線小車
    的頭像 發(fā)表于 08-20 11:12 ?655次閱讀
    19.4-<b class='flag-5'>STM32</b>接收數(shù)據(jù)-狀態(tài)顯示在屏幕 openMV尋跡與小車<b class='flag-5'>控制</b> Openmv+<b class='flag-5'>STM32F103C8</b>T6視覺巡線小車

    STMC32F103C8T6核心板原理圖

    STM32F103C8T6原理圖
    發(fā)表于 07-15 11:47 ?2次下載

    STM32F103xC,STM32F103xD,STM32F103xE中文資料

    電子發(fā)燒友網(wǎng)站提供《STM32F103xC,STM32F103xD,STM32F103xE中文資料.pdf》資料免費下載
    發(fā)表于 06-17 14:12 ?1次下載

    STM32為什么首選F103C8T6?

    STM32F103C8T6是STMicroelectronics(ST)推出的一款基于ARMCortex-M3內(nèi)核的32位微控制器單片機(MCU)。它具有一系列優(yōu)勢和廣泛的應用場景。這里就來介紹一下
    的頭像 發(fā)表于 05-18 08:04 ?3855次閱讀
    學<b class='flag-5'>STM32</b>為什么首選<b class='flag-5'>F103C8</b>T6?

    STM32f103c8板子不能多次下載程序的原因?

    STM32f103c8 做的開發(fā),第一次嘗試用stm32cubemx 圖形化做片子的一些初始化,按照教程把所有東西配置完之后,下載到片子里邊,程序是正常執(zhí)行了,燈的閃爍,常亮什么的都很
    發(fā)表于 04-28 08:14

    STM32F103C8cubemx創(chuàng)建工程開啟RTC則USB不正常是哪里的問題?

    STM32F103C8cubemx創(chuàng)建工程,開啟USB存儲器、fatfs、freertos,默認編譯后可以發(fā)現(xiàn)U盤,PC13燈閃爍(freertos的任務)如果開啟RTC,則不能設別設備,PC13的燈也不閃,請幫我看看問題在哪?
    發(fā)表于 04-24 07:31

    請問STM32F103C8如何做成USB轉(zhuǎn)SPI的接口芯片?

    STM32F103C8如何做成USB轉(zhuǎn)SPI的接口芯片?
    發(fā)表于 04-23 08:01

    STM32F103C8使用CUBEMX5.2,生成的USB HID工程編譯出錯怎么解決?

    STM32F103C8使用CUBEMX5.2,選擇Custom Human Interface Device Class(HID),生成工程后直接編譯盡然有錯誤在usbd_conf.c里有這么一個
    發(fā)表于 04-22 06:45

    為什么我程序都能下載到stm32f103zet6上,卻不能下載到stm32f103c8上?

    為何我程序都能下載到stm32f103zet6上,卻不能下載到stm32f103c8上?需要改變什么配置嗎?
    發(fā)表于 04-17 06:42

    STM32F103C8下載程序過程中中斷,然后上電運行MCU,此時MCU在跑哪一段代碼

    STM32F103C8下載程序過程中中斷,然后上電運行MCU,此時,MCU在跑哪一段代碼?有哪些外設在工作?多謝
    發(fā)表于 03-29 08:05

    USB轉(zhuǎn)TTL線怎么把程序燒寫到stm32f103C8T6中

    USB轉(zhuǎn)TTL線怎么把程序燒寫到stm32f103C8T6中? 將程序燒寫到STM32F103C8T6芯片中需要使用USB轉(zhuǎn)TTL線連接計算機和開發(fā)板,并使用適當?shù)能浖磉M行編程和燒
    的頭像 發(fā)表于 01-31 15:46 ?6667次閱讀

    stm32f103c8t6讀內(nèi)部溫度

    STM32F103C8T6是一款32位的Cortex-M3內(nèi)核微控制器,它擁有豐富的外設資源和強大的計算能力,可以廣泛應用于各種嵌入式系統(tǒng)中。其中一個重要的功能是能夠使用內(nèi)部傳感器來讀取芯片的溫度
    的頭像 發(fā)表于 01-08 13:48 ?2919次閱讀

    stm32f103c8t6怎么連接噪聲傳感器

    連接噪聲傳感器到STM32F103C8T6需要以下步驟: 確定傳感器和STM32F103C8T6之間的連接接口。噪聲傳感器通常使用模擬信號輸出,可以將其
    的頭像 發(fā)表于 12-21 16:10 ?1234次閱讀

    2片AD7794能否直接和STM32F103C8的SPI口直接相連?

    ADI專家,求助關(guān)于AD7794的應用問題,用于采集熱電偶信號的。 1、有沒有AD7794的應用參考電路? 2、2片AD7794能否直接和STM32F103C8的SPI口直接相連?(SCLK
    發(fā)表于 12-21 06:29

    在GD32F103移植STM32F103代碼

    使用相同F(xiàn)LASH和管腳數(shù)量相同的芯片,例如GDF103C8T6移植STM32F103C8T6程序。雖然兩個款芯片的寄存器地址以及架構(gòu)基本相同。但是需要注意的是GD32F10x主頻是108兆,但是
    的頭像 發(fā)表于 12-15 13:37 ?1454次閱讀
    在GD32<b class='flag-5'>F103</b>移植<b class='flag-5'>STM32F103</b><b class='flag-5'>代碼</b>