1.雙軸搖桿傳感器
PS2雙軸按鍵游戲搖桿模塊采用PS2游戲手柄上金屬按鍵搖桿電位器、模塊特設二路模擬輸出和一路數字輸出接口、輸出值分別對應(×、Y雙軸偏移量、其類型為模擬量、按鍵表示用戶是否在z軸上按下、其類型為數字開關量、模塊集成電源指示燈、可顯示工作狀態、坐標標識符清晰簡明、準確定位、用其可以輕松控制物體(如二自由度舵機云臺)在二維空間運動、因此可以通控制器編程、傳感器擴展板插接、完成具有創意性遙控互動作品。
硬件接口:
GND – GND
+5V – +5v
VRX – x方向模擬量
VRY – y方向模擬量
SW --按鍵狀態
![watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70#pic_center](https://file.elecfans.com//web2/M00/46/31/poYBAGKQzauALg_OAARKk6pbMJI989.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70#pic_center)
2.720空心杯電機
空心杯電機轉速快,體積小,搭配螺旋槳適合用于遙控器飛機模型制作DIY電子科技制作,接線簡單,是做微型四軸飛行器的配件。使用簡單:空心杯電機,欽鐵硼強磁性能更穩定。
![pYYBAGKQxeuAcgcoAAYtM_KFSZE412.png](https://file.elecfans.com/web2/M00/46/30/pYYBAGKQxeuAcgcoAAYtM_KFSZE412.png)
![pYYBAGKQxiWALG2wAAKNkd_7vQk226.png](https://file.elecfans.com/web2/M00/46/30/pYYBAGKQxiWALG2wAAKNkd_7vQk226.png)
3.電機驅動模塊
(1) MOS場效應管驅動模塊采用原裝進口雙MOS并聯有源輸出,內阻更低,電流大,功率強,常溫下15A,400W,滿足了大多數設備的使用;
(2) 寬電壓,支持PWM;1:工作電壓:DC 5V–36V;
(3) 觸發信號源:數字量高低電平(DC3.3v–20V),可以接單片機IO口,PLC接口,直流電源等,可以接PWM信號,信號頻率0–20KHZ支持。
(4) 輸出能力:直流DC 5V–36V,常溫下持續電流15A,功率400W!輔助散熱條件下,最大電流可達30A。
(5) 應用:輸出端可以控制大功率的設備,電機,燈泡,LED燈帶、直流馬達、微型水泵、電磁閥等,可以輸入PWM,控制電機轉速,燈自亮度等。
![pYYBAGKQxoqAPleeAAP8DAdCvT8921.png](https://file.elecfans.com/web2/M00/46/30/pYYBAGKQxoqAPleeAAP8DAdCvT8921.png)
4.軟設計
4.1 PWM模式
脈沖寬度調制(PWM):沖寬度調制是一種模擬控制方式,根據相應載荷的變化來調制晶體管基極或MOS管柵極的偏置,來實現晶體管或MOS管導通時間的改變,從而實現開關穩壓電源輸出的改變。這種方式能使電源的輸出電壓在工作條件變化時保持恒定,是利用微處理器的數字信號對模擬電路進行控制的一種非常有效的技術。廣泛應用在從測量、通信到功率控制與變換的許多領域中。
脈沖寬度調制(PWM)是一種對模擬信號電平進行數字編碼的方法。通過高分辨率計數器的使用,方波的占空比被調制用來對一個具體模擬信號的電平進行編碼。PWM信號仍然是數字的,因為在給定的任何時刻,滿幅值的直流供電要么完全有(ON),要么完全無(OFF)。電壓或電流源是以一種通(ON)或斷(OFF)的重復脈沖序列被加到模擬負載上去的。通的時候即是直流供電被加到負載上的時候,斷的時候即是供電被斷開的時候。只要帶寬足夠,任何模擬值都可以使用PWM進行編碼。
STM32芯片本身自帶PWM模式,該模式可以產生一個由TIMx_ARR寄存器確定頻率、由TIMx_CCRx寄存器確定占空比的信號。在TIMx_CCMRx寄存器中的OCxM位寫入’110’(PWM模式1)或’111’(PWM模式2),能夠獨立地設置每個OCx輸出通道產生一路PWM。必須設置TIMx_CCMRx寄存器OCxPE位以使能相應的預裝載寄存器,最后還要設置TIMx_CR1 寄存器的ARPE位, (在向上計數或中心對稱模式中)使能自動重裝載的預裝載寄存器。僅當發生一個更新事件的時候,預裝載寄存器才能被傳送到影子寄存器,因此在計數器開始計數之前,必須通過設置TIMx_EGR寄存器中的UG位來初始化所有的寄存器。OCx的極性可以通過軟件在TIMx_CCER寄存器中的CCxP位設置,它可以設置為高電平有效或低電平有效。 TIMx_CCER寄存器中的CCxE位控制OCx輸出使能。
4.2 PWM模式配置步驟
1.配置定時器基本功能(定時器基本功能,設置預分頻系統,設置周期時間)---》2.設置定時器PWM模式(PWM1模式1和PWM1模式2) ---》3.設置占空比---》4.設置占空比---》5.開啟定時器;
/*****************PWM波輸出*****************
**形參:u16 psc -- 預分頻系數
** u16 arr -- PWM一個周期時間
** u16 ccr -- 占空比
**例:Tim3_CH1_PWM(72,1000,200)
**PWM的周期時間:1000us
**占空比:200/1000*100%=20%
**高電平時間:200US,低電平時間為800us
*********************************************/
void Tim3_CH1_PWM(u16 psc,u16 arr,u16 ccr)
{
//1.開時鐘
RCC->APB1ENR|=1<<1;//TIM3
RCC->APB1RSTR|=1<<1;//開復位時鐘
RCC->APB1RSTR&=~(1<<1);//關復位
RCC->APB2ENR|=1<<2;//PA
/*2.配置GPIO口*/
GPIOA->CRL&=0xf0ffffff;
GPIOA->CRL|=0x0B000000;//復用推挽輸出
/*3.配置核心寄存器*/
TIM3->CNT=0;//清空計數器中的值
TIM3->PSC=psc-1;//預分頻系數
TIM3->ARR=arr;//重裝載值
TIM3->CR1|=0x1<<7;//自動重裝載預裝載允許位
TIM3->CCMR1&=~(0x3<<0);//OC1配置為輸出
TIM3->CCMR1|=0x1<<3;//輸出比較1預裝載使能
TIM3->CCMR1|=0x6<<4;//PWM模式1,CNTCCER&=~(1<<1);//有效電平為高電平
TIM3->CCR1=ccr;
TIM3->CCER|=1<<0;//輸出使能
TIM3->CR1|=1<<0;//使能TIM3
}
為有效電平>
4.2 ADC1規則通道采集遙控值
STM32本身自帶ADC功能,有兩個12位的ADC。一種逐次逼近型模擬數字轉換器。它有多達18個通道,可測量16個外部和2個內部信號源。各通道的A/D轉換可以單次、連續、掃描或間斷模式執行。 ADC的結果可以左對齊或右對齊方式存儲在16位數據寄存器中。
● 12位分辨率
● 轉換結束、注入轉換結束和發生模擬看門狗事件時產生中斷
● 單次和連續轉換模式
● 從通道0到通道n的自動掃描模式
● 自校準
● 帶內嵌數據一致性的數據對齊
● 采樣間隔可以按通道分別編程
● 規則轉換和注入轉換均有外部觸發選項
● 間斷模式
● 雙重模式(帶2個或以上ADC的器件)
/****************ADC規則通道配置*******************
**
**硬件接口:PB0 --ADC1_CH8
**
*****************************************************/
void ADC_Regular_Channel(void)
{
/*1.開時鐘*/
RCC->APB2ENR|=1<<3;//PB時鐘
RCC->APB2ENR|=1<<9;//ADC1時鐘
RCC->APB2RSTR|=1<<9;//ADC1復位
RCC->APB2RSTR&=~(1<<9);//取消復位
/*2.配置GPIO口*/
GPIOB->CRL&=0xFFFFFFF0;//配置為模擬輸入
/*配置ADC工作頻率*/
RCC->CFGR&=~(0x3<<14);//清除原來寄存器中的值
RCC->CFGR|=0x2<<14;//ADC工作頻率:72MHZ/6=12MHZ
/*3.ADC核心寄存器配置*/
// ADC1->CR1&=~(0xF<<16);//獨立模式
// ADC1->CR1&=~(1<<8);//關閉掃描模式
ADC1->CR2|=1<<23;//采集內部溫度數據
ADC1->CR2|=1<<20;//使用外部事件啟動轉換
ADC1->CR2|=0x7<<17;//選擇SWSTART事件轉換通道
// ADC1->CR2&=~(1<<11);//右對齊
// ADC1->CR2|=1<<1;//連續轉換模式
ADC1->SMPR1|=0x7<<18;//設置內部溫度采樣時間,通道16
ADC1->SMPR2|=0X7<<24;//通道8采樣時間
ADC1->SQR1&=~(0xF<<20);//設置單次轉換的通數量為1個
ADC1->CR2|=1<<0;//開啟ADC
ADC1->CR2|=1<<3;//初始化校準寄存器
while(ADC1->CR2&1<<3);//等待初始化完成
ADC1->CR2|=1<<2;//開始校準
while(ADC1->CR2&1<<2);//等待校準完成
}
/*******************獲取規則通道轉換*****************
**
**形參:u8 chx ---需要轉換的通道號(0~17)
**返回值:轉換成功的數據(12位)
**
******************************************************/
u16 ADC1_GetRegular_Channel_Data(u8 chx)
{
u16 dat;
ADC1->SQR3&=~(0x1F<<0*5);//清除第一轉換序列中的值
ADC1->SQR3|=chx<<0*5;//設置需要轉換的通道號
ADC1->CR2|=1<<22;//開啟轉換規則通道
while(!(ADC1->SR&1<<1)){}//等待規則通道轉換完成
dat=ADC1->DR;
return dat;
}
主函數
int main()
{
int data=0;
float data2=0;
Usartx_Init(USART1,115200,72);
TIMx_Init(TIM2,72,20*1000);
TIM3_CHx_PWM(1,3600,data);//1屏,周期50ms(20khz)
ADC_Regular_Channel();//規則通道初始化
while(1)
{
data=ADC1_GetRegular_Channel_Data(8);//完成規則通道轉換
data-=2054;
data2=data*1.0/4095*3600;
TIM3->CCR1=data2;
}
}
![pYYBAGKQzIWAEx01AAaYnLwOnHk768.png](https://file.elecfans.com/web2/M00/46/31/pYYBAGKQzIWAEx01AAaYnLwOnHk768.png)
審核編輯:湯梓紅
-
傳感器
+關注
關注
2553文章
51448瀏覽量
756913 -
PWM
+關注
關注
114文章
5201瀏覽量
214959 -
電機
+關注
關注
142文章
9093瀏覽量
146472
發布評論請先 登錄
相關推薦
基于ARM的空心杯電機控制設計
空心杯電機原理_空心杯電機特性
![<b class='flag-5'>空心</b><b class='flag-5'>杯</b><b class='flag-5'>電機</b>原理_<b class='flag-5'>空心</b><b class='flag-5'>杯</b><b class='flag-5'>電機</b>特性](https://file.elecfans.com/web1/M00/A7/78/pIYBAF2ERWCACVynAABhDEciBq8601.jpg)
評論