如何實現28BYJ-48步進電機遷移轉變精度及深化剖析

轉是轉了,然則不是覺得有點不太對勁呢?太慢了?別急,我們持續(xù)。依據本章掃尾解說的道理,八拍形式時,步進電機轉過一圈是需求 64 個節(jié)奏,而我們程序中是每一個節(jié)奏繼續(xù) 2ms,那么轉一圈就應當是 128ms,即 1 秒鐘轉 7 圈多,可怎樣看上去它仿佛是 7 秒多才轉了一圈呢?
那么,是時分來理解“永磁式加速步進電機”中這個“加速”的概念了。圖 9-7 是這個28byj-48 步進電機的拆解圖,從圖中可以看到,位于最中間的誰人白色小齒輪才是步進電機的轉子輸入,64 個節(jié)奏只是讓這個小齒輪轉了一圈,然后它帶動誰人淺藍色的大齒輪,這就是一級加速。人人看一下右上方的白色齒輪的構造,除電機轉子和最終輸入軸外的 3 個傳動齒輪多是如許的構造,由一層多齒和一層少齒組成,而每個齒輪都用本人的少齒層去驅動下一個齒輪的多齒層,如許每 2 個齒輪都組成一級加速,一共就有了 4 級加速,那么總的加速比是若干呢?即轉子要轉若干圈最終輸入軸才轉一圈呢?

如何實現28BYJ-48步進電機遷移轉變精度及深化剖析
圖 9-7? 步進電機外部齒輪表示圖

回頭看一下電機參數表中的加速比這個參數吧——1:64,轉子轉 64 圈,最終輸入軸才會轉一圈,也就是需求 64*64=4096 個節(jié)奏輸入軸才轉過一圈,2ms*4096=8192ms,8 秒多才轉一圈呢,是不是跟方才的試驗后果正好吻合了?4096 個節(jié)奏遷移轉變一圈,那么一個節(jié)奏遷移轉變的角度——步進角度就是 360/4096,看一下表中的步進角度參數 5.625/64,算一下就曉得這兩個值是相等的,一切都已吻合了。
關于根本的掌握道理本該到這里就全體完畢了,然則,我們愿望人人都能培育一種“理論是磨練真諦的獨一規(guī)范”的思想方法!回憶一下,步進電機最大的特色是什么?準確掌握遷移轉變量!那么我們是不是應當磨練一下它究竟是不是能準確呢?準確到什么水平呢?怎樣來磨練呢?讓它轉過 90 度,然后量一下準禁絕?也行,然則假如它只差了 1 度乃至不到 1 度,你能精確丈量出來嗎?在沒有精細儀器的狀況很難。我們照樣讓它多轉幾個整圈,看看它最初停下的地位照樣不是本來的地位。對應的,我們把程序修正一下,以便利掌握電機轉過恣意的圈數。

			#include?<reg52.h>?void?TurnMotor(unsigned?long?angle);?void?main(){?TurnMotor(360*25);?//360?度*25,即?25?圈?while?(1);?}?/*?軟件延時函數,延時約?2ms?*/?void?delay(){?unsigned?int?i?=?200;?while?(i--);?}?/*?步進電機遷移轉變函數,angle-需轉過的角度?*/?void?TurnMotor(unsigned?long?angle){?unsigned?char?tmp;?//暫時變量?unsigned?char?index?=?0;?//節(jié)奏輸入索引?unsigned?long?beats?=?0;?//所需節(jié)奏總數?//步進電機節(jié)奏對應的?IO?掌握代碼?unsigned?char?code?BeatCode[8]?=?{?0xE,?0xC,?0xD,?0x9,?0xB,?0x3,?0x7,?0x6?};?//盤算需求的節(jié)奏總數,4096?拍對應一圈?beats?=?(angle*4096)?/?360;?//判別?beats?不為?0?時履行輪回,然后自減?1?while?(beats--){?tmp?=?P1;?//用?tmp?把?P1?口以后值暫存?tmp?=?tmp?&amp;?0xF0;?//用&amp;操作清零低?4?位?tmp?=?tmp?|?BeatCode[index];?//用|操作把節(jié)奏代碼寫到低?4?位?P1?=?tmp;?//把低?4?位的節(jié)奏代碼和高?4?位的原值送回?P1?index++;?//節(jié)奏輸入索引遞增?index?=?index?&amp;?0x07;?//用&amp;操作完成到?8?歸零?delay();?//延時?2ms,即?2ms?履行一拍?}?P1?=?P1?|?0x0F;?//封閉電機一切的相?}</reg52.h>

上述程序中,我們先編寫了一個掌握電機轉過指定角度的函數,這個角度值由函數的方式參數給出,然后在主函數中就可以便利的經過更改挪用時的實踐參數來掌握電機轉過恣意的角度了。我們用了 360*25,也就是 25 圈,當然你也可以隨便改為其它的值,看看是什么后果。我們的程序會履行 25*8=200 秒的工夫,先記下輸入軸的初始地位,然后上電并耐煩等它履行終了,看一下,是不是有誤差?怎樣回事,哪兒出成績了,不是說能準確掌握遷移轉變量嗎?
這個成績其實是出在了加速比上,再來看一下,廠家給出的加速比是 1:64,不論是哪個廠家消費的電機,只需型號是 28BYJ-48,其標稱的加速比就多是 1:64。但實踐上呢?經由我們的拆解盤算發(fā)現:真實精確的加速比并不是這個值 1:64,而是 1:63.684!得出這個數據的辦法也很復雜,實踐數一下每一個齒輪的齒數,然后將各級加速比相乘,就可以得出后果了,實測的加速比為(32/9)*(22/11)*(26/9)*(31/10)≈63.684,從而得出實踐誤差為 0.0049,即約為百分之 0.5,轉 100 圈就會差出半圈,那么我們方才轉了 25 圈,是不是就差了八分之一圈了,也就是 45 度,看一下方才的誤差是 45 度吧。那么依照 1:63.684 的實踐加速比,可以得出轉過一圈所需求節(jié)奏數是 64*63.684≈4076。那么就把下面程序中電機驅動函數里的 4096 改成4076 再試一下吧。是不是看不出涓滴的誤差了?但實踐上誤差照樣存在的,由于下面的盤算后果多是約等得出的,實踐誤差大約是 0.000056,即萬分之 0.56,轉一萬圈才會差出半圈,曾經可以疏忽不計了。

那么廠家的參數為什么會有誤差呢?豈非廠家不曉得嗎?要說明這個成績,我們得回到實踐使用中,步進電機最平日的目標是掌握目的轉過必定的角度,平日多是在 360 度之內的,而這個 28BYJ-48 最后的設計目標是用來掌握空調的扇葉的,扇葉的運動規(guī)模是不會超越 180度的,所以在這種使用場所下,廠商給出一個近似的整數加速比 1:64 曾經足夠準確了,這也是合情合理的。但是,正如我們的程序那樣,我們紛歧定是要用它來驅動空調扇葉,我們可以讓它遷移轉變許多圈來干其余,這個時分就需求更為準確的數據了,這也是我們愿望同窗們都能理解并控制的,就是說我們要能本人“設計”零碎并處理個中發(fā)現的成績,而不要被所謂的“現成的計劃”限制住思緒。

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享