• 方案介紹
    • 20.3-使用兩個(gè)通道進(jìn)行電磁循跡
  • 推薦器件
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

20.3-使用兩個(gè)通道進(jìn)行電磁循跡 STM32電磁小車(chē) 電磁循跡算法 歸一化處理

2024/08/23
4882
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

20.3-使用兩個(gè)通道進(jìn)行電磁循跡 智能車(chē)競(jìng)賽 電磁桿原理圖 電磁循跡小車(chē) 智能車(chē)電磁組 STM32電磁小車(chē) 電磁循跡小車(chē) 電磁循跡算法 智能車(chē)環(huán)島 智能車(chē)比賽規(guī)則 歸一化處理 差比和計(jì)算 PID算法

功能介紹放開(kāi)頭, 使用便捷無(wú)需愁。
這是全網(wǎng)最詳細(xì)、性?xún)r(jià)比最高的STM32實(shí)戰(zhàn)項(xiàng)目入門(mén)教程,通過(guò)合理的硬件設(shè)計(jì)和詳細(xì)的視頻筆記介紹,硬件使用STM32F103主控資料多方便學(xué)習(xí),通過(guò)3萬(wàn)字筆記、12多個(gè)小時(shí)視頻、20多章節(jié)代碼手把手教會(huì)你如何開(kāi)發(fā)和調(diào)試。讓你更快掌握嵌入式系統(tǒng)開(kāi)發(fā)。
V3.3.0-STM32智能小車(chē)
視頻: https://www.bilibili.com/video/BV16x4y1M7EN/?spm_id_from=333.337.search-card.all.click添加鏈接描述
V3:HAL庫(kù)開(kāi)發(fā)、功能:PID速度控制、PID循跡、PID跟隨、遙控、避障、PID角度控制、視覺(jué)控制、電磁循跡、RTOS等功能。

20.3-使用兩個(gè)通道進(jìn)行電磁循跡

我們知道了V1和V4的電壓值、這個(gè)電壓值正比于 電感垂直放置在磁導(dǎo)線(xiàn)的距離,那么我們很容易就容易想到 使用二者差值表示小車(chē)偏轉(zhuǎn)方向和大小。

比如一次測(cè)量: V4:0.63 V1 :0.50 那么用 V4-V1 = 0.63-0.50=0.13 大于零表示往V4方向偏,0.13表示偏轉(zhuǎn)大小

但是這個(gè)計(jì)算方法有個(gè)壞處,我們舉例,假設(shè)小車(chē)位置不變,但是因?yàn)橘惖谰€(xiàn)長(zhǎng)度,電磁信號(hào)不同等原因,所以信號(hào)會(huì)整體發(fā)生變化,我們假設(shè)電壓都提升10%,那么就是

V4: 0.63*1.1= 0.693

V1:0.50*1.1= 0.55

0.693 - 0.55 = 0.143

發(fā)現(xiàn) 0.143 和之前的0.13 還是有變化的。

那么嘗試換個(gè)計(jì)算方法 使用差比和計(jì)算方法:(a-b)/(a+b) 計(jì)算:V4:0.63 V1 :0.50、然后(0.63-0.50)/(0.63+0.50) 結(jié)果是:0.13/1.13=

0.11504

(a-b)/(a+b) 計(jì)算:( 0.693-0.55)/(0.693+0.55):0.143/1.243 = 0.11504

這樣發(fā)現(xiàn)值就是相同的。

在這里插入圖片描述

歸一化處理:

進(jìn)行歸一化處理的原因是:是根據(jù)電感值在對(duì)應(yīng)賽道到的最大值max,把根據(jù)這個(gè)max,然后再根據(jù)采集值value,使用value/max * 100 這個(gè)公式計(jì)算數(shù)據(jù)處理到對(duì)應(yīng)0-100的值,這樣的好處的是:在更換賽道后,測(cè)量新的賽道的最大值,改變max值即可,有較強(qiáng)適應(yīng)性。
在這里插入圖片描述

float g_fVoltageMax[4]={2.89,2.89,2.89,2.89};//用于歸一化的最大ADC電壓采集值 不同賽道要獲得更好循跡效果 需要重新采集這個(gè)值
int   g_iVoltageGuiYi[4];//這個(gè)是四個(gè)通道歸一化的結(jié)果,用0-100表示每個(gè)通道電壓大小

使用歸一化的公式進(jìn)行計(jì)算
在這里插入圖片描述

	/**歸一化處理**/  
	for(int i=0;i<4;i++)
	{
		if(g_fVoltage[i] > g_fVoltageMax[i]) g_fVoltage[i] = g_fVoltageMax[i];//進(jìn)行限幅
		g_iVoltageGuiYi[i] = g_fVoltage[i]/g_fVoltageMax[i]*100;//進(jìn)行歸一化計(jì)算轉(zhuǎn)化到0-100
	}

進(jìn)行差比和計(jì)算:

使用差比和原因: 可以直觀反映小車(chē)偏離方向和程度,通過(guò)正負(fù)反映小車(chē)偏移方向,通過(guò)絕對(duì)值大小反映偏移程度。

定義兩個(gè)變量

float g_fVoltageOuter;//電感桿外面兩個(gè)電感差比和值 電感4和電感1 
float g_fVoltageInterior;//電磁桿中間兩個(gè)電感差比和值 電感2和電感3

在這里插入圖片描述
使用差比和計(jì)算公式進(jìn)行

注意使用放置截?cái)?使用(float) 進(jìn)行轉(zhuǎn)化

	/*差比和值表示小車(chē)的偏差 差比和計(jì)算公式 (a-b)/(a+b)這個(gè)值表示小車(chē)的偏差  */
	/* 下面是使用歸一化的值進(jìn)行差比值計(jì)算*/
	/*增加(float)的原因是轉(zhuǎn)化成浮點(diǎn)數(shù),防止整數(shù)除法時(shí)候出現(xiàn)截?cái)喱F(xiàn)象*/
	g_fVoltageOuter = (float)((g_iVoltageGuiYi[3]-g_iVoltageGuiYi[0])/(float)(g_iVoltageGuiYi[3]+g_iVoltageGuiYi[0] +1));//外面兩個(gè)電感差比和值 電感4和電感1 "-1"是因?yàn)橐蛿?shù)組索引對(duì)應(yīng)
	g_fVoltageInterior = (float)((g_iVoltageGuiYi[2]-g_iVoltageGuiYi[1])/(float)(g_iVoltageGuiYi[2]+g_iVoltageGuiYi[1] +1));//里面兩個(gè)電感差比和值 電感2和電感3

利用差比和值進(jìn)行循跡:

根據(jù)差比和值正負(fù)和絕對(duì)值大小進(jìn)行調(diào)整運(yùn)動(dòng)方向

	/*利用差比和值進(jìn)行循跡*/
	if(0.75 > g_fVoltageOuter > 0.5)
	{
		motorPidSetSpeed(1,0.8);//左邊運(yùn)動(dòng) 這個(gè)值可能需要根據(jù)自己軌道特點(diǎn)調(diào)整
	}
	else if(0.75 <= g_fVoltageOuter)// 檢測(cè)小車(chē)位置到更加右偏了
	{
		motorPidSetSpeed(1.2,0.2);//更向左邊運(yùn)動(dòng) 這個(gè)值可能需要根據(jù)自己軌道特點(diǎn)調(diào)整
	}
	else if(-0.75 < g_fVoltageOuter < -0.5)
	{
		motorPidSetSpeed(0.8,1);//右邊運(yùn)動(dòng) 這個(gè)值可能需要根據(jù)自己軌道特點(diǎn)調(diào)整
	}
	else if( -0.75 >= g_fVoltageOuter)// 檢測(cè)小車(chē)位置到更加左偏了
	{
		motorPidSetSpeed(0.2,1.2);//更向右邊運(yùn)動(dòng) 這個(gè)值可能需要根據(jù)自己軌道特點(diǎn)調(diào)整
	}
	else{		
		motorPidSetSpeed(1,1);//前運(yùn)動(dòng)	
	}
		

在這里插入圖片描述

顯示屏幕方便調(diào)試:

調(diào)整把上面的一些數(shù)據(jù)顯示在OLED,其實(shí)這部應(yīng)該先做,先把一些計(jì)算的結(jié)果顯示在OLED上,這樣方便調(diào)試

	sprintf((char*)OledString, "O:%.2f  I:%.2f  ", g_fVoltageOuter,g_fVoltageInterior);//顯示差比和值 O: 這個(gè)是外面兩個(gè)差比和值計(jì)算結(jié)果 I:這個(gè)
	OLED_ShowString(0,1,OledString,12);//這個(gè)是oled驅(qū)動(dòng)里面的,是顯示位置的一個(gè)函數(shù),
	
	sprintf((char*)OledString, "G1:%d  G2:%d   ", g_iVoltageGuiYi[0],g_iVoltageGuiYi[1]);//顯示歸一化后的數(shù)據(jù) G1:電感1差比和值 G2 :電感2差比和值
	OLED_ShowString(0,2,OledString,12);//這個(gè)是oled驅(qū)動(dòng)里面的,是顯示位置的一個(gè)函數(shù),
		
	sprintf((char *)OledString,"G3:%d  G4:%d   ",g_iVoltageGuiYi[2],g_iVoltageGuiYi[3]);//顯示歸一化后的數(shù)據(jù) G3:電感3差比和值 G4:電感4差比和值
	OLED_ShowString(0,3,OledString,12);//這個(gè)是oled驅(qū)動(dòng)里面的,是顯示位置的一個(gè)函數(shù),
	
	sprintf((char *)OledString,"v1:%.2f v2:%.2f ",g_fVoltage[0],g_fVoltage[1]);//顯示 1、2 電壓值  V1:電感1值 V2:電感2值
	OLED_ShowString(0,4,OledString,12);//這個(gè)是oled驅(qū)動(dòng)里面的,是顯示位置的一個(gè)函數(shù),
	
	sprintf((char *)OledString,"v3:%.2f v4:%.2f ",g_fVoltage[2],g_fVoltage[3]);//顯示3、4 電壓值   V3;電感3值 V4:電感4值
	OLED_ShowString(0,5,OledString,12);//這個(gè)是oled驅(qū)動(dòng)里面的,是顯示位置的一個(gè)函數(shù),
	

在這里插入圖片描述

一些實(shí)際照片效果

把小車(chē)放置到通有正弦交流信號(hào)的軌道上:

小車(chē)放置到遠(yuǎn)離信號(hào)發(fā)生器位置直道上
在這里插入圖片描述
把小車(chē)放置到軌道中間,然后觀察O: 的數(shù)值(就是g_fVoltageOuter 顯示的變量) 應(yīng)該在0.00的左右。

然后G1:數(shù)值(g_iVoltageGuiYi[0]數(shù)值顯示位置)和G4:數(shù)值(g_iVoltageGuiYi[3]的數(shù)值)應(yīng)該大致相同
在這里插入圖片描述
讓軌道位于小車(chē)的左下方然后觀察三個(gè)數(shù)值大小

O:應(yīng)該是大概0.70-0.99比較大的值

G1:應(yīng)該是大概0-30左右

G4:應(yīng)該是70-100左右

在這里插入圖片描述
下面我們讓軌道位于小車(chē)右邊

O:的值在大概-0.80- -1左右

G1:的值大概70-100左右

G4的值大概0-30左右

在這里插入圖片描述

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
NRF52840-QIAA-R7 1 Nordic Semiconductor Telecom Circuit, 1-Func, PBGA73, AQFN-73
$7.48 查看
DSC1001CI5-032.7680 1 Microchip Technology Inc OSC MEMS 32.768MHZ CMOS SMD

ECAD模型

下載ECAD模型
$1.71 查看
SN74HC595DWR 1 Texas Instruments 8-bit shift registers with 3-state output registers 16-SOIC -40 to 85

ECAD模型

下載ECAD模型
$0.87 查看
意法半導(dǎo)體

意法半導(dǎo)體

意法半導(dǎo)體(ST)集團(tuán)于1987年6月成立,是由意大利的SGS微電子公司和法國(guó)Thomson半導(dǎo)體公司合并而成。1998年5月,SGS-THOMSON Microelectronics將公司名稱(chēng)改為意法半導(dǎo)體有限公司。意法半導(dǎo)體是世界最大的半導(dǎo)體公司之一,公司銷(xiāo)售收入在半導(dǎo)體工業(yè)五大高速增長(zhǎng)市場(chǎng)之間分布均衡(五大市場(chǎng)占2007年銷(xiāo)售收入的百分比):通信(35%),消費(fèi)(17%),計(jì)算機(jī)(16%),汽車(chē)(16%),工業(yè)(16%)。 據(jù)最新的工業(yè)統(tǒng)計(jì)數(shù)據(jù),意法半導(dǎo)體是全球第五大半導(dǎo)體廠商,在很多市場(chǎng)居世界領(lǐng)先水平。例如,意法半導(dǎo)體是世界第一大專(zhuān)用模擬芯片和電源轉(zhuǎn)換芯片制造商,世界第一大工業(yè)半導(dǎo)體和機(jī)頂盒芯片供應(yīng)商,而且在分立器件、手機(jī)相機(jī)模塊和車(chē)用集成電路領(lǐng)域居世界前列.

意法半導(dǎo)體(ST)集團(tuán)于1987年6月成立,是由意大利的SGS微電子公司和法國(guó)Thomson半導(dǎo)體公司合并而成。1998年5月,SGS-THOMSON Microelectronics將公司名稱(chēng)改為意法半導(dǎo)體有限公司。意法半導(dǎo)體是世界最大的半導(dǎo)體公司之一,公司銷(xiāo)售收入在半導(dǎo)體工業(yè)五大高速增長(zhǎng)市場(chǎng)之間分布均衡(五大市場(chǎng)占2007年銷(xiāo)售收入的百分比):通信(35%),消費(fèi)(17%),計(jì)算機(jī)(16%),汽車(chē)(16%),工業(yè)(16%)。 據(jù)最新的工業(yè)統(tǒng)計(jì)數(shù)據(jù),意法半導(dǎo)體是全球第五大半導(dǎo)體廠商,在很多市場(chǎng)居世界領(lǐng)先水平。例如,意法半導(dǎo)體是世界第一大專(zhuān)用模擬芯片和電源轉(zhuǎn)換芯片制造商,世界第一大工業(yè)半導(dǎo)體和機(jī)頂盒芯片供應(yīng)商,而且在分立器件、手機(jī)相機(jī)模塊和車(chē)用集成電路領(lǐng)域居世界前列.收起

查看更多

相關(guān)推薦

方案定制

去合作
方案開(kāi)發(fā)定制化,2000+方案商即時(shí)響應(yīng)!