蒙器M&H-08控制器

M&H-08控制器採用了的ARM7核心是通用的32 位微處理器,它具有高性能和低功耗的特性。ARM 結構是基於精簡指令集計算機(RISC)原理而設計的。指令集和相關的解碼機制比複雜指令集計算機(傳統51單片機)要簡單得多。這樣使用一個小的、廉價的處理器核就可實現很高的指令吞吐量和實時的回響各種外部硬體。

基本介紹

  • 中文名:蒙器M&H-08控制器
  • 屬性:新型32位ARM7主機板
  • 特點::運算速度快,程式容量大
  • 軟體環境::MiniRobot軟體
M&H-08控制器簡介,特點,數據存儲器,信號輸入通道,DO輸出通道,機輸出通道,串列接口,USB接口,快速入門,

M&H-08控制器簡介

M&H-08控制器為新型32位ARM7主機板,如下圖所示:
特點:運算速度快,程式容量大,接口齊全,穩定可靠。
軟體環境:MiniRobot軟體(一種標準C語言,支持指針和結構等)進行程式開發。
下載方式:兼容USB口和串口下載。

特點

M&H-08控制器使用了3級流水線技術,處理和存儲系統的所有部分都可連續工作。通常在執行一條指令的同時對下一條指令進行解碼,並將第三條指令從存儲器中取出。因此其速度大約是普通處理器的3倍。
M&H-08控制器使用了一個被稱為Thumb 的獨特結構化策略, Thumb是一種“超精簡指令集”。其指令集約為標準代碼兩倍的密度,卻仍然保持性能上的優勢,這些優勢是傳統16 位處理器所不具備的。因此使用Thumb程式大小僅為標準代碼的3/4,但其性能卻相當於16 位處理器系統的性能的160%。
M&H-08控制器使用128MHz的主頻, AVR處理器系統的4倍,因此,更適合高速的處理套用。

數據存儲器

M&H-08控制器含有256K位元組的Flash 存儲器系統。該存儲器可用作代碼和數據的存儲。存儲器至少可擦除/編程100,000 次,保存數據的時間長達20年。該存儲器至少可以存儲約1萬行的C代碼。其容量約為AVR處理器系統的10倍。另外加上32K位元組的數據存儲器,因此非常適合實現更複雜,更龐大的套用。

信號輸入通道

M&H-08控制器集成了14路高速信號採集通道,可以兼容數位訊號和模擬信號,每路精度為10位,因此可以分辨3毫伏特的輸入電壓變化。14路數據通道均為高速數據採集通道,每秒可以採集40萬次輸入信號。

DO輸出通道

M&H-08控制器包含了6路最大電流為0.5A的數位訊號輸出通道,可直接驅動蜂鳴器,繼電器以及其他的輸出設備

機輸出通道

M&H-08控制器集成了兩路大功率電機驅動輸出,最大電壓約為40V,最大瞬間電流約為40A。並且使用獨立的電源供電,避免了大功率電機對主機板的電磁干擾。

串列接口

M&H-08控制器具有標準串列通信接口,進行數據採集和程式下載。並且可以連線攝像頭、指南針等高級模組。

USB接口

M&H-08控制器具有的USB接口,可以非常方便的下載程式和進行數據採集,適合大多數沒有串口的筆記本電腦使用。
第二章

快速入門

所需設備
所需設備如下表所示:
M&H-08控制器
USB線或串口線
7.2V鋰電池
使用手冊
工具
電腦
2.2.安裝軟體
安裝前,請在光碟中按順序安裝如下軟體:
.NET Framework 2.0
M&H-08MiniRobot
這些軟體可以運行在Windows 98,Me,2000,XP等系統上,不能在Windows 95、Mac OS或linux上安裝。
2.3.安裝USB驅動
使用USB連線埠下載程式前請按以下步驟安裝:
A: 打開控制器主機板電源
主機板電源插槽
主機板電源開關
B:用USB線連線電腦和控制器。
USB接口
C:打開控制器主機板電源,您會見到電腦右下角彈出一個找到新硬體的提示框,如下圖所示:
D:彈出找到新硬體嚮導後,請選擇紅色框中的選項。然後點擊下一步。
在隨後的對話框中,請選擇“列表或指定位置安裝”,然後點擊下一步。
在隨後的對話框中,請選擇“請選擇您的搜尋和安裝路徑選項”中的“在這些位置上搜尋最佳驅動程式”選項,再選擇“在搜尋中包括這個位置”選項。最後點擊瀏覽按鈕,輸入USB驅動程式路徑,您可以在光碟上或者M&H-08 MiniRobot安裝目錄下找到這個驅動程式。設定完成後,請點擊下一步。
彈出如下對話框,表示USB驅動安裝完成。您可以開始進行模組編輯了。
2.4. 啟動程式
請雙擊 這個圖示,啟動M&H MiniRobot軟體。在彈出的啟動對話框中選擇“EasyC代碼編輯器for M&H-08控制器”,點擊確定。
如下圖將顯示編寫代碼。
2.5.下載程式
使用USB下載或串口下載程式,我們建議您使用USB,這樣既方便又快速。請打開控制器主機板電源,然後,點擊“選單”---“下載”或者工具條上的“下載”按鈕,啟動下載。在下載過程中,請不要拔去USB線,以防意外的程式下載終止。下載完成時,請拔去USB連線線,然後按控制器主機板上的運行按鈕,就能看到在螢幕上顯示“M&H”字樣。
第三章 M&H-08控制器詳細說明
M&H-08控制器可直接安裝各類感測器,無需疊加任何擴展卡。
M&H-08控制器常用設備,如圖所示 :
{指示燈,運行和復位按鈕,主機板電源和大功率電源接口,信號輸入接口(模擬口和數字口輸入接口),電機輸出接口,DO信號輸出接口,USB接口,串列接口。}
顯示屏
指示燈
6個信號輸入口和6個數字輸出口
復位按鈕
運行按鈕
大功率電源開關
8個信號輸入口
大功率電源插槽
主機板電源開關
串口下載口
指南針接口
USB下載口
主機板電源插槽
復位按鈕
大功率電源插槽
電機2插槽
電機1插槽
3.1.運行和復位按鈕
主機板上有兩個按鈕,其中一個是運行按鈕,一個是復位按鈕。
運行程式使用運行按鈕,中斷程式使用復位按鈕。
當用串口下載程式時,先按住運行按鈕,然後按一下復位按鈕,最後放掉運行按鈕即可。
3.2 電源接口
M&H-08控制器的主機板電源和大功率電機驅動卡的電源是分別供電的。主機板電源接口有防反接保護,即使反接也不會燒壞主機板。但是大功率電源沒有防反接保護,在使用時需要特別小心。
3.3 信號輸入接口
M&H-08控制器集成了14路信號採集通道,可以兼容數位訊號和模擬信號,每路精度為10位, 連線電路請參考以下電路:其中S標記為信號輸入。
3.4 電機輸出接口
大功率電機輸出接口共有兩路,每路允許最大電壓達到40V,最大電流達到40A。
使用M&H-08 MiniRobot(一種標準C語言),只需調用庫函式SetMoto(char Channel, signed char Speed)即可設定電機速度和方向。
3.5 DO信號輸出接口
輸出電壓大於4V,電流不大於0.5A。
當驅動繼電器時,直接連線繼電器將導致主機板損壞,您可參考以下電路來改裝普通的繼電器,僅僅是在繼電器的線圈出並聯了一個二極體,並且請注意二極體的正負極(反接可能導致主機板損壞)。
您還可以使用M&H-08 MiniRobot(一種標準C語言),調用庫函式SetDO(char Channel, char State)即可設定數字輸出。
3.6 USB接口
當您編寫完程式後,請按照以下步驟下載程式:
第一:確保您的控制器與電腦間通過附屬檔案中的USB線正確連線。
第二:打開控制器主機板電源
第三:點擊“下載”按鈕或選單欄上的“編譯”—“下載”即可。
注意:在此過程中請勿按動運行和復位按鈕,或中斷電源,否則USB下載將意外終止,這可能導致USB固件損壞,在此情況下,您還是可以通過串列連線埠進行修復操作,方法是點擊選單“編譯”—“下載固件”然後選擇合適的串列連線埠波特率,並且可以修復字型檔丟失等錯誤,注意此過程將持續約4分鐘左右。
除了USB接口,您也可以使用串列連線埠下載程式。方法是點擊選單“編譯”—“設定”。如圖:如果使用串列連線埠,波特率推薦選用38400。如果使用USB,則無需設定波特率
設定完成後。請按照以下步驟下載程式:
第一:確保您的控制器與電腦間通過附屬檔案中的串口線正確連線。
第二:打開控制器電源
第三:點擊“下載”按鈕或選單欄上的“編譯”—“下載”。
第四:按住運行按鈕不放,然後按一次復位按鈕,最後放掉運行按鈕。
串口下載可能需要30秒左右,這取決於您的程式大小和波特率的快慢。
第四章 M&H-08控制器軟體編程指南
4.1 螢幕顯示函式
printf函式的定義:int printf(const char *fmt,…);
如果要在螢幕上顯示“M&H”,參考程式如下:
/*主函式,每個c語言必須有一個主函式*/
void main()
{
/*在螢幕上顯示“M&H”字樣*/
printf("M&H ");
}
“ ”空格代表清屏,
如果要在螢幕上顯示一個動態的數字,例如一個變數或者一個感測器的讀數,參考程式如下:
/*主函式,每個c語言必須有一個主函式*/
void main()
{
/*定義一個變數,名稱為i,整型變數(即是整數的,沒有小數點的數字)*/
int i=0;
/*不斷的循環,重複執行{}之間的程式代碼*/
while(1)
{
/*變數i加1,然後再保存到變數i中*/
i=i+1;
/*將變數i顯示到螢幕上,其中空格是清屏*/
printf("value=%d ",i);
}
}
最終,您將會看到螢幕上動態的顯示一個不斷累加的數字。您是否發現了一個奇怪的問題,“%d”為何沒有被顯示出來, “%d”表示在這個位置需要顯示一個十進制的整數,這個整數就是逗號後面的變數i。如果您要顯示兩個變數,參考程式如下:
void main()
{
/*定義兩個變數,名稱為i,j,整型變數(即是整數的,沒有小數點的數字)*/
int i=0;
int j=0;
/*不斷的循環,重複執行{}之間的程式代碼*/
while(1)
{
/*變數i加1,然後再保存到變數i中*/
i=i+1;
/*變數j加2,然後再保存到變數j中*/
j=j+2;
/*將變數i,j顯示到螢幕上,空格的作用是清屏*/
printf("valuei=%d, valuej=%d ",i,j);
}
}
注意事項:由於在螢幕上顯示文字和圖象所需時間大概為幾十毫秒,因此在您需要高速處理數據的時候,請儘量避免使用螢幕顯示程式。
4.2設定電機函式
M&H-08控制器提供了3種函式來控制電機,如下表所示:
/*啟動電機,左右輪運行函式,iVL為直線速度,iVR為旋轉速度*/
void Drive(signed char iVL, signed char iVR);
/*停止電機運行*/
void Stop(void);
/*啟動電機,Channel為電機編號,MF MOS電機驅動器使用1或2, Speed為電機速度,-90到90之間*/
void SetMoto(char Channel,singed char Speed)
建議使用SetMoto這個函式,因為其功能最強, Drive和Stop都可以用此函式代替,這樣,您只需記住一個函式的用法即可。
驅動電機,參考程式如下:
void main()
{
While(1)
{
/*機器人正轉一秒然後反轉一秒*/
SetMoto(1,90);
SetMoto(2,90);
wait(1.0);
SetMoto(1,-90);
SetMoto(2,-90);
wait(1.0);
}
}
SetMoto 函式中,“1”和“2”分別表示M&H-08控制器兩個電機輸出通道,分別表示左電機和右電機,來控制電機的功率和旋轉方向。
注意事項:.螢幕顯示會影響到電機輸出的方向信號,所以請儘量避免同時使用電機和螢幕。
4.3 模擬口函式
M&H-08控制器通過感測器將各種物理化學信號轉化為電信號,輸入到控制器的模擬輸入口。使用模擬口的感測器如下:電子複眼、光電開關、紅外測距、紅外測障、地面灰度、聲音感測器和碰撞開關等。
讀取模擬口的函式定義:
/*讀取模擬輸入口的讀數,iCh為通道,返回0-1023*/
int AI(unsigned char iCh);
參考程式如下:
/*主函式,每個c語言必須有一個主函式*/
void main()
{
/*定義變數*/
int i=0;
/*循環14次,每隔一秒鐘顯示一個通道的值*/
for (i=0 ; i<14 ; i++)
{
/*清屏,並顯示AI(讀取的通道) = 讀取值*/
printf("AI(%d) = %d ",i,AI(i));
/*延時1秒*/
wait(1.0);
}
}
感測器連線模組需要在程式開頭處放置一些全局變數,數量的多少取決於您所接感測器數量。
如果要讀取連線埠1上的地面灰度感測器,參考程式如下:
int GROUND;
GROUND = AI(1);
如果要實現一個簡易的數字萬用表的功能,即將得到模擬口數據轉換為電壓並顯示到螢幕上,參考程式如下:
void main()
{
float voltage=0.0;
while(1)
{
/*電壓轉換*/
voltage=AI(0)*3.3/1023;
/*清屏,顯示轉換的電壓值*/
printf("voltage=%fV ",voltage);
}
}
注意事項:為了保證M&H-08控制器的輸入口的可靠穩定,硬體上加上了模擬口電壓保護,即超過5V電壓加到模擬口上短時間內不會損壞控制器。
4.5 設定DO函式
如果要在DO口的安裝一個發光二極體(注意:發光二極體需要串聯一個470-2K歐姆的電阻以防止燒壞),參考程式如下:
/*全局變數,發光二極體所接的DO連線埠*/
int DOPORT = 1;
void main()
{
while (1)
{
/*點亮發光二極體*/
SetDO(DOPORT,1);
/*延時0.5秒*/
wait(0.5);
/*熄滅發光二極體*/
SetDO(DOPORT,0);
/*延時0.5秒*/
wait(0.5);
}
}
您可以編寫程式,實現連續可調亮度的檯燈等功能。讓發光二極體以特定頻率不斷閃爍,頻率高到人眼無法發覺它的閃爍,然後,控制每一次閃爍時點亮和熄滅的時間比例,就能控制它的亮度。實際上,這種控制方式還用在電機驅動上,這就是通常說的PWM控制原理。如果您要控制發光二極體的亮度,參考程式如下:
/*全局變數,發光二極體所接的DO連線埠*/
int DOPORT = 1;
void main()
{
int i;
int LightOn= 0;
int FecTime=10000;
int DPWM = 10;
int inv=0;
while (1)
{
SetDO(DOPORT,1);/*點亮發光二極體*/
for(i = 0;i<LightOn;i++){}/*延時等待,時間間隔為LightOn*/
SetDO(DOPORT,0);/*熄滅發光二極體*/
for(i = 0;i<(FecTime-LightOn);i++){}/*延時等待,時間間隔為FecTime-LightOn*/
if( inv == 0)
{
LightOn=LightOn+DPWM; /*增加點亮的時間*/
}
else
{
LightOn=LightOn-DPWM; /*減少點亮的時間*/
}
if(LightOn>FecTime)
{
inv=1; /*如果點亮時間到達最大,則需要減少點亮時間*/
}
else if(LightOn<0)
{
inv=0; /*如果點亮時間到達最小,則需要增加點亮時間*/
}
}
}
4.5 讀取指南針函式
M&H-08控制器通過串口讀入指南針的數據。
讀取指南針的函式:Compass_Degree(),其顯示數值範圍是0—360度。套用指南針時,程式開頭處必須先要初始化串列連線埠波特率為9600,參考程式如下:
void main()
{
int sci_1;
/*初始化串口,使用指南針前必須調用該函式*/
SCI_Set(0,9600,0,8,1 );
while(1)
{
/*讀取指南針的數據*/
sci_1=Compass_Degree();
/*顯示出來*/
printf("compass=%d ",sci_1);
}
}
附錄1 庫函式定義及說明
//啟動電機,左右輪運動函式,iVL為直線速度,iVR為旋轉速度
void Drive(signed char iVL, signed char iVR);
//電機停止運行
void Stop(void);
//設定電機,Channel為電機編號(或)。speed為電機速度,範圍為-100到100之間
void SetMoto(char Channel, signed char Speed);
//在螢幕上輸出文字。例如:printf("value=%d ",val);
int printf(const char *fmt, ...);
//讀取模擬口通道的輸入。iCh為通道號0-13。返回0-1023
int AI(unsigned char iCh);
//設定DO數字輸出,DO為通道號(0-5),state為狀態,為高電平,為低電平
void SetDO(char DO,char State);
//串口設定函式。請使用如下設定:SCI_Set(0,9600,0,8,1)
void SCI_Set(char iPort,unsigned int iBaud,char iCHK, char iData, char iStop);
//使用串口傳送單個位元組數據。iPort為接收連線埠號,設為0。data為單個位元組的數據0-255
void SCI_Send(char iPort, unsigned char data);
//串口接收函式,從串口讀取一個數據。iPort為接收連線埠號,設為0
int SCI_Receive(char iPort);
//延時等待毫秒,del為等待時間,單位為毫秒
void DelayMs(unsigned long del);
//延時等待,fTime為等待時間,單位為秒
void wait(float fTime);
//紅外線測障感測器函式。DO_out為紅外發射頭接上的數字輸出口,AI_in為紅外接收頭接上的模擬輸入通道號
int ir_detector(int DO_out,int AI_in);
//讀取麥克風的監測結果,ch為麥克風接上的模擬輸入通道號(0-23)
int microphone(char ch);
//清屏。number為1表示用黑色清屏,0表示用白色清屏
void CLRVLCD(unsigned char number);
//繪製Buf緩衝區中的數據到螢幕上
int PrintfVLCD(unsigned char *Buf);
//在螢幕上繪製一個像素點,x,y為坐標點,color為1表示繪製黑色點,color為0表示繪製白色點
void PutPixelVLCD(unsigned char X, unsigned char Y, char Color);
//將記憶體的緩衝區複製到螢幕緩衝區上
void CpyVLCDToLCD(void);
//繪圖函式,畫直線,color: 1指定黑,0指定白
void DrawLine(int x1,int y1,int x2,int y2,int color);
//繪製矩形.(top,left)表示矩形頂點的坐標,width表示矩形的寬度,height表示矩形的高度,color 1指定黑,0指定白
void DrawRect(int top,int left,int width,int height,int color);
//畫圓弧.x,y表示圓心坐標,r表示圓半徑,startAngle表示啟示角度,sweepAngle表示終止角度,color 1指定黑,0指定白
void DrawArc(int x,int y,int r,int startAngle,int sweepAngle,int color);
//讀取指南針,返回0-358。該函式使用前需要調用初始化串口函式
int Compass_Degree();
//數學函式:返回長整型變數的絕對值。
long labs(long val);
//數學函式:返回整型變數的絕對值。
int abs(int val);
//數學函式:返回浮點型變數的絕對值。
double fabs(double val);
//數學函式:返回雙精度變數val平方根
double sqrt(double val);
//數學函式:返回自然數e的val次方
double exp(double val);
//數學函式:返回log(val)
double log(double val);
//數學函式:返回log10(val)
double log10(double val);
//數學函式:返回val的正弦值。角度value 必須用弧度表示。乘以π/180 將角度轉換成弧度。
double sin(double val);
//數學函式:返回val的餘弦值。角度value 必須用弧度表示。乘以π/180 將角度轉換成弧度。
double cos(double val);
//數學函式:返回val的正切值。角度value 必須用弧度表示。乘以π/180 將角度轉換成弧度。
double tan(double val);
//數學函式:返回val的反正弦值。
double asin(double val);
//數學函式:返回val的反餘弦值。
double acos(double val);
//數學函式:返回val的反正切值。
double atan(double val);
//數學函式:返回val指定角度的雙曲正弦值。角度value 必須用弧度表示。乘以π/180 將角度轉換成弧度。
double sinh(double val);
//數學函式:返回val指定角度的雙曲餘弦值。角度value 必須用弧度表示。乘以π/180 將角度轉換成弧度。
double cosh(double val);
//數學函式:返回val指定角度的雙曲正切值。角度value 必須用弧度表示。乘以π/180 將角度轉換成弧度。
double tanh(double val);
//數學函式:返回正切值為兩個指定數字的商的角度。返回值為笛卡爾平面中的角度,該角度由X 軸和起點為原點(0,0)、終點為(x,y) 的向量構成。
double atan2(double y, double x);
//數學函式:返回大於或等於其數字參數的最小整數.例如:ceil(45.998)返回
double ceil(double val);
//數學函式:返回小於或等於指定數字的最大整數。例如:Floor(2.10)返回
double floor(double val);
//數學函式:返回val變數分割成整數部分和小數部分。例如:x = 123.456;frc_part = modf (x, &int_part);結果為frc_part=123,int_part=0.456
double modf(double val, double *n);
//數學函式:The fmod function calculates the floating-point remainder f of x / y such that x = i * y + f, where i is an integer, f has the same sign as x, and the absolute value of f is less than the absolute value of y.
double fmod(double x, double y);
//數學函式:返回指定數字的指定次冪。數字x 的y 次冪
double pow(double x, double y);
附錄2 技術參數
核心 CPU ARM7,32位
程式存儲器 256k位元組,其中128k字型檔,32KUSB固件,用戶可用96k
數據存儲器 32k用戶全部可用
流水線 3級流水線
時鐘 128MHz
指令 Thumb是一種“超精簡指令集
接口 數據輸入通道 14路高速,2.5us每通道每次,兼容數字和模擬信號
DO信號輸出 6路,0.5A每路
大功率電機通道 2路,瞬間電流<40A每路,耐壓<40V
指南針 串口讀入 每秒27次
下載口 USB口/串口下載 兼容

相關詞條

熱門詞條

聯絡我們