STM32f4日記3之diy小車實驗(小車實驗一:驅動小車轉圈,直走,倒走)

STM32f4日記3之diy小車實驗(小車實驗一:驅動小車轉圈,直走,倒走)
//
板子:stm32f407zgt6正點原子迷你版
//
如果你覺得對你有幫助,請點贊同,這對我很重要,謝謝。
//
一、器材介紹
器材:小車基本結構:底盤,電機,兩個輪子,一個萬向輪,固定螺絲,有機玻璃等等
在這裏插入圖片描述
電機驅動採用L298N(TB6612FNG也可,不過本實驗暫時不講)
在這裏插入圖片描述
二、核心模塊L298N的講解
首先講解L298N模塊的基本使用(只講用法,原理不講,有興趣的自行查找)
L298N模塊是最常見的電機驅動模塊,淘寶上售價10元
可將6~30v電壓轉換成左右兩橋5v輸出,若摘除跳線帽還可爲單片機提供5v供電
//
產品參數:
1.驅動芯片:L298N 雙 H 橋直流電機驅動芯片
2.驅動部分端子供電範圍 Vs:+5V~+30V ; 如需要板內取電,則
供電範圍 Vs:+6V~+30V
3.驅動部分峯值電流 Io:2A
4.邏輯部分端子供電範圍 Vss:+5V~+7V(可板內取電+5V)
5.邏輯部分工作電流範圍:0~36mA
6.控制信號輸入電壓範圍(IN1 IN2 IN3 IN4):
低電平:-0.3V≤Vin≤1.5V
高電平:2.3V≤Vin≤Vss
7.使能信號輸入電壓範圍(ENA ENB):
低電平:-0.3≤Vin≤1.5V(控制信號無效)
高電平:2.3V≤Vin≤Vss(控制信號有效)
8.最大功耗:20W(溫度 T=75℃時)
9.存儲溫度:-25℃~+130℃
10.驅動板尺寸:55mm45mm33mm(帶固定銅柱和散熱片高度)
12.邏輯部分板內取電接口。































圖中綠色端子爲電機驅動輸出端與驅動電源輸入端(螺絲刀可以擰緊擰鬆自主調節):12V輸入(實際上6v就可)端(可用4節1.5v電池組供電),GND端,5v輸出端

排針處爲電機控制邏輯輸入端:IN4 IN3 IN2 IN1 控制電機輸出端
ENA,ENB爲pwm波使能端

左右兩邊的兩個綠色端子是電機電壓輸出端口,左邊使能左電機,右邊使能右電機

三、硬件連接
下面講述硬件連接:
1.將電池組(4節1.5v電池)的正極連L298N的12V輸入
2.電池組負極連接L298N的GND
此時若L298N的小燈亮起說明連接成功
3.L298N左右兩橋的共四個OUT口分別接在左右電機兩端
4.L298N的GND接開發板的GND,共地,此時邏輯值1,0才生效這一步非常重要
5.將開發板的各個IO口接到L298N電機控制邏輯輸入端
6.給燒錄好程序的單片機上電即可使得小車開始工作







四、單片機代碼編寫
代碼講解:
ENA接高電平使能左電機
ENB接高電平使能右電機
IN1,IN2分別輸入高電平1跟低電平0,左電機正轉
IN1,IN2分別輸入低電平0跟高電平1,左電機反轉
IN3,IN4分別輸入高電平1跟低電平0,右電機正轉
IN3,IN4分別輸入低電平0跟高電平1,右電機反轉






代碼功能:PF0,2,6,7爲高電平
PF8,4爲低電平

連接:
PF0接ENA
PF6,4接IN1和IN2
PF2接ENB
PF7,4接IN3和IN4



以下是car.c裏面代碼

void CAR_Init(void)
{
   
       	 
  GPIO_InitTypeDef  GPIO_InitStructure;

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);

  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_8|GPIO_Pin_2|GPIO_Pin_7|GPIO_Pin_4|GPIO_Pin_0;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_Init(GPIOF, &GPIO_InitStructure);
	
	GPIO_SetBits(GPIOF,GPIO_Pin_6);
GPIO_ResetBits(GPIOF,GPIO_Pin_8);
	GPIO_SetBits(GPIOF,GPIO_Pin_2);
	GPIO_SetBits(GPIOF,GPIO_Pin_0);
GPIO_ResetBits(GPIOF,GPIO_Pin_4);
	GPIO_SetBits(GPIOF,GPIO_Pin_7);
}

下面是car.h裏面代碼

#ifndef __CAR_H
#define __CAR_H
#include "sys.h"


void CAR_Init(void);//³õʼ»¯		 				    
#endif

以下是主函數裏代碼

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "car.h"


int main(void)
{
   
    
 
	delay_init(168);		 
	CAR_Init();		      

while(1)
{
   
   
	GPIO_ResetBits(GPIOF,GPIO_Pin_8);  
	GPIO_SetBits(GPIOF,GPIO_Pin_6);   
	GPIO_SetBits(GPIOF,GPIO_Pin_2);
	GPIO_SetBits(GPIOF,GPIO_Pin_0);
GPIO_ResetBits(GPIOF,GPIO_Pin_4);
	GPIO_SetBits(GPIOF,GPIO_Pin_7);

}
}

五、其他如轉圈,倒走
只要將單片機IO口接線換個位置(或者少接幾跟)就能實現
希望讀者自行探索

六、思考
PWM制波能調節小車速度而且還能與紅外線尋跡,避障等模塊一起使用,那怎麼連接硬件,修改程序能達到那樣的效果呢
這些內容下一期會出,喜歡的朋友可以專注一下作者

作者:shawn
可諮詢QQ:965798711
2020.1.17
15:08
All rights reserved



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章