1.TB6612FNG電機驅動模塊函數
(1)<概述>oop
TB6612FNG是東芝半導體公司生產的一款直流電機驅動器件,它具備大電流MOSFET-H橋結構,雙通道電路輸出,可同時驅動兩個電機。ui
與L298N使用基本一致。並且,相比於L298N的熱耗性和外圍二極管續流電路,其無需外加散熱片,外圍電路簡單,只需接電源濾波電容就可 編碼
以直接驅動電機,利於減少系統尺寸。對於PWM信號輸入頻率範圍,高達100kHz的頻率更是能夠知足咱們的大部分需求。spa
(2)<主要參數>3d
最大輸入電壓 | VM=15V |
最大輸出電流 | Iout=1.2A(平均) |
模式 | 正反轉/短路剎車/停機功能 |
內置電路 | 過熱保護,低壓檢測code |
(3)<模塊接線圖>blog
(對應口能夠在模塊背面看到)ip
解讀:VM直接接電池便可,VCC是內部邏輯供電,通常給3.3V或者5V均可以,模塊的三個GND接任意一個便可,由於都是導通的,STBY置高模塊才能正常 工做。產品
完成上面的工做以後,咱們就能夠開始搭載硬件電路了。
2. LM2596S DC-DC降壓電源模塊
(1)<產品參數>
輸入電壓 | 3.2V~46V |
輸出電壓 | 1.25V~35V |
輸出電流 | 3A之內 |
轉換效率 | 92%之內 |
輸出文波 | <30mV |
開關頻率 | 65kHz |
工做溫度 | -45℃~+85℃ |
尺寸大小 | 43.2mm*21.0mm*14.0mm (長*寬*高) |
筆者用12V電源供電,那接到單片機及電機驅動模塊內部驅動口必須通過降壓到3.3~5V才能夠給正常供電。
話很少說,上圖:
(2)<具體使用>
——能夠看到模塊的正面有一個藍色的長方體,頂部有一個旋鈕,可能比較難操做,咱們用一字形螺絲刀(細一點的)來旋轉上面的旋鈕便可調節輸出電壓。注意降壓模塊的四角,咱們能夠看到 IN- IN+ OUT- OUT+ 的字樣。IN則爲輸入電壓所接腳,OUT則爲輸出電壓所接腳,外部電源就是經過這個模塊於內部電路造成聯繫。
——指示燈亮,模塊正常工做。
——IN+/-接外部電源,用萬用表測量輸出OUT+/-的電壓值達到所須要電壓爲止
——長時間工做建議在2.5A之內的電流使用,同時加上散熱片(10W以上輸出);因爲是降壓模塊,爲了保證輸出穩定,請保持最小1.5V壓差
3.直流減速電機
按照慣例仍是先上圖介紹
(電機參數 ——> 購自平衡小車之家)
因此此次單純控制電機,咱們只需單純引出兩條線接到驅動模塊上
——電路必須依靠軟件的控制前提,因此咱們從軟件入手
1.打開cube,輸入STM32F103C8,點進去進行如圖配置(PWM頻率選取10kHz)
(PA1/PA2爲Output模式)
(打開TIM1通道一,設爲PWM輸出模式)
(注意77和99)(用這個來肯定PWM頻率)
(時鐘樹設定,查表看到TIM1掛載於APB1 timer clocks)
到這,咱們的cube已經配置完畢。
咱們點擊齒輪建立工程
2.關於程序的編寫
int main(void) { /* USER CODE BEGIN 1 */ uint16_t pwm_val = 0; /* USER CODE END 1 */ /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_TIM1_Init(); /* USER CODE BEGIN 2 */ HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1); HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET) ; HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_RESET); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ while (pwm_val < 50) { pwm_val++; __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, pwm_val); HAL_Delay(50); } while (pwm_val) { pwm_val--; __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, pwm_val); HAL_Delay(50); } /* USER CODE END 3 */ } }
其中(1)在main函數中定義一個變量pwm_val用於控制PWM輸出的佔空比。
(2)HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1); //即在while(1)以前使能PWM輸出通道CH1。
(3)HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET) ;
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_RESET); //定義IO
(4)在while(1)中不斷改變PWM輸出的佔空比,控制電機的轉動速度,實現一個電機轉動速度由慢到快再由快到慢的的效果。週期約爲5秒。要注意的是,配置的自動加載參數是99,在while(1) 中,佔空比的變化是範圍是0~50。
3.關於實物的鏈接