一评肆、介紹
??直流電機(jī)是一種將直流電能轉(zhuǎn)換為機(jī)械能的電動機(jī),因其良好的調(diào)速性能而在電力拖動中得到廣泛應(yīng)用非区,用于驅(qū)動各種設(shè)備瓜挽,如電風(fēng)扇、遙控小車征绸、電動車窗等久橙,也非常適合作為機(jī)器人的行走機(jī)構(gòu)。
??L298N是ST公司生產(chǎn)的一種高電壓管怠、大電流電機(jī)驅(qū)動芯片淆衷,內(nèi)含兩個(gè)H橋的高電壓大電流全橋式驅(qū)動器,可以用來驅(qū)動直流電動機(jī)和步進(jìn)電動機(jī)渤弛、繼電器線圈等感性負(fù)載祝拯;采用標(biāo)準(zhǔn)邏輯電平信號控制;具有兩個(gè)使能控制端她肯。該芯片可以驅(qū)動一臺兩相步進(jìn)電機(jī)或四相步進(jìn)電機(jī)佳头,也可以驅(qū)動兩臺直流電機(jī)鹰贵。
二、組件
★Raspberry Pi 3主板*1
★樹莓派電源*1
★L(fēng)298N模塊*1
★DC3V-6V直流減速電機(jī)TT馬達(dá)*1
★微型數(shù)字直流電壓表頭*1(可選)
★18650可充電鋰電池*2
★面包板*1(可選)
★40P軟排線*1
★跳線若干
三康嘉、實(shí)驗(yàn)原理
(一)砾莱、L298N模塊
L298N雙H橋直流電機(jī)驅(qū)動模塊的引腳可以歸納成電源、控制和輸出等三大類凄鼻,下面是各類引腳的功能說明。
1.電壓類引腳
VCC輸入:L298N芯片的電源正極聚假,范圍可以是5V ~ 35V块蚌,如果需從模塊內(nèi)取電給樹莓派供電,則其范圍為7V~35V膘格。
GND:L298N芯片的電源地峭范,使用的時(shí)候應(yīng)該把樹莓派的GND接到這里,即兩者需要共地瘪贱,否則電機(jī)不轉(zhuǎn)纱控。
+5V輸出:L298N芯片輸出的5V電源,可以給外部設(shè)備供電菜秦,但要求VCC輸入要達(dá)到7V以上甜害。
2.控制類引腳
ENA、ENB:A球昨、B通道的使能端尔店,高電平有效,可以用PWM來實(shí)現(xiàn)調(diào)速主慰,向使能端輸入不同占空比的PWM脈沖信號就可以控制電機(jī)的轉(zhuǎn)速嚣州。使用時(shí),可以接到樹莓派的GPIO上共螺,實(shí)現(xiàn)用程序進(jìn)行控制该肴。
INA、INB藐不、INC匀哄、IND:INA、INB為A通道的控制輸入佳吞,INC拱雏、IND為B通道的控制輸入。
控制方式及直流電機(jī)狀態(tài)表如下:
3.輸出類引腳
OUTA底扳、OUTB為A通道輸出铸抑,為直流電機(jī)等設(shè)備提供電源。
OUTC衷模、OUTD為B通道輸出鹊汛,為直流電機(jī)等設(shè)備提供電源蒲赂。
控制直流電機(jī)的轉(zhuǎn)向和轉(zhuǎn)速實(shí)際是通過給控制類引腳設(shè)置不同的值來實(shí)現(xiàn)的
(二)、直流減速電機(jī)
在了解直流電機(jī)工作原理之前刁憋,先復(fù)習(xí)一下高中幾個(gè)物理知識:
第一.左手定則
通電導(dǎo)線處于磁場中時(shí)滥嘴,所受安培力 F (或運(yùn)動)的方向、磁感應(yīng)強(qiáng)度B的方向 以及通電導(dǎo)體棒的電流I三者方向之間的關(guān)系的定律至耻。
簡而言之若皱,讓磁感線穿過手掌正面,手指方向?yàn)殡娏鞣较虺就牵竽粗阜较驗(yàn)楫a(chǎn)生磁力的方向
第二.右手定則
右手定則走触,是產(chǎn)生感生電動勢,也是發(fā)電機(jī)的原理
讓磁感線穿過掌心疤苹,大拇指方向?yàn)檫\(yùn)動方向互广,手指方向?yàn)楫a(chǎn)生的電動勢方向。
1.直流電機(jī)的原理
直流電機(jī)里邊固定有環(huán)狀永磁體卧土,電流通過轉(zhuǎn)子上的線圈產(chǎn)生安培力惫皱,當(dāng)轉(zhuǎn)子上的線圈與磁場平行時(shí),再繼續(xù)轉(zhuǎn)受到的磁場方向?qū)⒏淖冇容海虼舜藭r(shí)轉(zhuǎn)子末端的電刷跟轉(zhuǎn)換片交替接觸旅敷,從而線圈上的電流方向也改變,產(chǎn)生的洛倫茲力方向不變缝裁,所以電機(jī)能保持一個(gè)方向轉(zhuǎn)動扫皱。
2.直流電機(jī)的種類
2.1有刷電機(jī)
顧名思義,就是有刷子捷绑,主要作用就是讓中間的轉(zhuǎn)子與電源有電氣連接韩脑,還可以轉(zhuǎn)動。
為了讓兩者之間既有接觸粹污,能導(dǎo)電段多;又有轉(zhuǎn)動,實(shí)現(xiàn)電流的變相壮吩,一般的常見做法是在碳刷加一個(gè)彈簧进苍。這樣,換向器與碳刷便有了頻繁的摩擦鸭叙。所以碳刷很容易磨損觉啊,必須經(jīng)常進(jìn)行更換。并且磨損掉的碳渣渣在電機(jī)里面形成了積碳沈贝,需要經(jīng)常清理杠人。
早期電機(jī)都是有刷電機(jī),后來為了解決磨損,有了無刷電機(jī)嗡善。
2.2無刷電機(jī)
無刷電機(jī)中辑莫,換相的工作交由控制器中的控制電路(一般為霍爾傳感器+控制器,更先進(jìn)的技術(shù)是磁編碼器)來完成罩引。
無刷電機(jī)采取電子換向各吨,線圈不動,磁極旋轉(zhuǎn)袁铐。無刷電機(jī)揭蜒,是使用一套電子設(shè)備,通過霍爾元件剔桨,感知永磁體磁極的位置忌锯,根據(jù)這種感知,使用電子線路领炫,適時(shí)切換線圈中電流的方向,保證產(chǎn)生正確方向的磁力张咳,來驅(qū)動電機(jī)帝洪。消除了有刷電機(jī)的缺點(diǎn)。
2.3直流減速電機(jī)
一般直流電機(jī)的轉(zhuǎn)速都是一分鐘幾千上萬轉(zhuǎn)的脚猾,所以一般需要安裝減速器葱峡。減速器是一種相對精密的機(jī)械零件,使用它的目的是降低轉(zhuǎn)速龙助,增加轉(zhuǎn)矩砰奕。減速后的直流電機(jī)力矩增大、可控性更強(qiáng)提鸟。按照傳動級數(shù)不同可分為單級和多級減速器军援;按照傳動類型可分為齒輪減速器、蝸桿減速器和行星齒輪減速器称勋。
齒輪減速器:體積較小胸哥,傳遞扭矩大,但是有一定的回程間隙赡鲜。
蝸輪蝸桿減速機(jī):具有反向自鎖功能空厌,可以有較大的減速比,但是一般體積較大银酬,傳動效率不高嘲更,精度不高。
行星減速器:結(jié)構(gòu)比較緊湊揩瞪,回程間隙小赋朦、精度較高,使用壽命很長,額定輸出扭矩可以做的很大北发,但價(jià)格略貴纹因。
(三)、直流電壓表頭
用于監(jiān)視18650電池組電壓琳拨,及時(shí)掌握電池電壓狀態(tài)瞭恰,便于及時(shí)充電。也可用于手機(jī)鋰電池狱庇、鎳氫電池組和其它電池組的電壓惊畏,以及摩托車、汽車等電瓶的電壓密任,也可用于其它電壓測量用途颜启。
1、本電壓表接線簡單浪讳,常規(guī)用兩根線缰盏,紅接正,黑接負(fù)淹遵,內(nèi)有反接保護(hù)口猜,接反不燒。
2透揣、常規(guī)無需外接工作電源济炎,可以用測量電壓直接工作,測量電壓范圍二線2.4-30V辐真。
3须尚、寬電壓工作,紅色最低測量電壓2.4V侍咱,最大安全承壓可達(dá)40V 耐床,超過40V可能損壞。
4楔脯、在測量10V以下電壓時(shí)咙咽,小數(shù)點(diǎn)后顯示兩位;在測量10V以上電壓時(shí)淤年,小數(shù)點(diǎn)后顯示一位钧敞。
(四)、18650電池組
由于電動機(jī)需要的電流遠(yuǎn)遠(yuǎn)大于樹莓派GPIO的供電能力麸粮,所以必須使用外接電源溉苛,選用大容量的18650電池是個(gè)不錯(cuò)的選擇,許多充電寶和電動車電池組都是使用的這個(gè)弄诲。
同時(shí)愚战,使用電動機(jī)的場景總是移動的情況娇唯,所以電池組可能還要給樹莓派供電。以前購買套裝時(shí)贈送的18650電池寂玲,每次充滿電塔插,只堅(jiān)挺了10分鐘,而且電壓掉得非惩赜矗快想许。這里我選用的某寶SupFire/神火電池,負(fù)極加了保護(hù)芯片的AB5-S断序,39元1顆流纹,充電器還另算錢。不過效果好多了违诗,充滿電后串聯(lián)兩顆電池初始8.23V漱凝,一天一個(gè)電動機(jī)的實(shí)驗(yàn)做下來,還有7.6V诸迟。
四、實(shí)驗(yàn)步驟
??第1步: 連接電路扣典。
樹莓派(name) | T型轉(zhuǎn)接板(BCM) | L298N模塊 |
---|---|---|
GPIO4 | G23 | INA |
GPIO5 | G24 | INB |
GPIO1 | G18 | EMA |
GND | GND | GND |
L298N模塊 | 電池組 | 電壓表頭 | 馬達(dá) |
---|---|---|---|
VCC | + | + | |
GND | - | - | |
OUTC | + | ||
OUTD | - |
這里必須說一下,上面的電路圖是使用電子設(shè)計(jì)自動化軟件Fritzing畫的笛粘,易學(xué)好用,但是必須要學(xué)習(xí)哈薪前,光看是半天搞不懂滴!
特別是元件庫里找不到的電子元件示括,只能自己創(chuàng)建,就需要自己畫SVG圖(Scalable Vector Graphics垛膝,意思為可縮放的矢量圖形)鳍侣,這里我用的是Inkscape,一款外國開發(fā)的開源矢量圖形編輯軟件吼拥。畫圖中的一個(gè)重要經(jīng)驗(yàn)是:在Friting里找到并導(dǎo)出類似的元件SVG圖倚聚,然后在Inkscape里修改,最后又導(dǎo)入Friting里合成凿可。
學(xué)會第一次雖慢惑折,但是以后就難不倒你了,而且畫得很快!
Fritzing下載地址https://fritzing.org/download/
Inkscape下載地址https://inkscape.org/release/inkscape-1.0/
??第2步: 基礎(chǔ)實(shí)驗(yàn)里我只用L298N的B通道控制了一個(gè)電機(jī)惨驶,控制命令也很粗糙白热,后面我會做智能小車的綜合實(shí)驗(yàn),會實(shí)現(xiàn)圖形界面控制和自動循跡粗卜。
??當(dāng)輸入r0 ~ r9屋确,速度由0到快;當(dāng)輸入f0 ~ f9休建,反方向速度由0到快乍恐;當(dāng)輸入b時(shí),電機(jī)制動测砂。
#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
ENB = 18 #使能信號
INC = 23 #信號輸入1
IND = 24 #信號輸入2
GPIO.setwarnings(False) #關(guān)閉警告信息
def setup(enable_pin,in1_pin,in2_pin):
'''初始化引腳'''
GPIO.setmode(GPIO.BCM)
GPIO.setup(enable_pin, GPIO.OUT)
GPIO.setup(in1_pin, GPIO.OUT)
GPIO.setup(in2_pin, GPIO.OUT)
def pwm(enable_pin):
'''初始化PWM(脈寬調(diào)制)'''
pwm = GPIO.PWM(enable_pin, 500)
pwm.start(0)
return pwm
def changespeed(pwm,speed):
'''通過改變占空比改變馬達(dá)轉(zhuǎn)速'''
pwm.ChangeDutyCycle(speed)
def clockwise(in1_pin,in2_pin):
'''馬達(dá)順時(shí)針轉(zhuǎn)的信號'''
GPIO.output(in1_pin, 1)
GPIO.output(in2_pin, 0)
def counter_clockwise(in1_pin,in2_pin):
'''馬達(dá)逆時(shí)針轉(zhuǎn)的信號'''
GPIO.output(in1_pin, 0)
GPIO.output(in2_pin, 1)
def brake(pwm,in1_pin,in2_pin):
'''馬達(dá)制動的信號'''
GPIO.output(in1_pin, 0)
GPIO.output(in2_pin, 0)
changespeed(pwm,100)
#使能信號為高電平茵烈,IN1和IN2都為0或1時(shí)馬達(dá)制動
def loop():
while True:
'''通過輸入的命令改變馬達(dá)轉(zhuǎn)動'''
cmd = input("Command, f/r/b 0..9, E.g. f5 :")
direction = cmd[0]
if direction == "f":
clockwise(INC,IND)
if direction == "r":
counter_clockwise(INC,IND)
if direction == "b": #剎車制動,
brake(ENB_pwm,INC,IND)
continue
speed = int(cmd[1]) * 10 #通過輸入0~9的數(shù)字更改占空比0~90%
changespeed(ENB_pwm,speed)
def destroy():
ENB_pwm.stop()
GPIO.cleanup() # Release resource
if __name__ == '__main__': # Program start from here
try:
setup(ENB,INC,IND) #初始化引腳
ENB_pwm=pwm(ENB) #初始化PWM
loop()
except KeyboardInterrupt: # When 'Ctrl+C' is pressed
destroy()
finally:
destroy()
??實(shí)驗(yàn)結(jié)果示例: