步驟1:電路組件
IC1-7805,5V穩壓器
IC2-ATmega328微控制器
IC3- LM1117-33,3.3電壓調節器
IC4-HT12E,2 12串聯編碼器
IC5-HT12D,2 12串聯解碼器
IC6-L293D,雙H橋式電動機驅動器
LED1和4-5mm LED
電阻器(全部1/4瓦,碳含量為5%):
R1-1兆歐
R2-10千歐
R3-750千歐
R4-R7-220歐姆
R8-47千歐
電容器:
C1,C2-22pF陶瓷盤
C3-0.1μF陶瓷盤
C4-0.33μF陶瓷盤
C5-10μF,16V電解
其他:
CON1,CON3-2針連接器
CON2-6針連接器
X TAL 1-16MHz晶體
TX1-433MHz發射器模塊
RX1-433MHz接收器模塊
M1,M2 -直流減速電機,100rpm
S1,S2-開/關開關
電池1-9V PP3電池
電池2-4.5V, 1.5Ah鉛酸電池
ANT.1,ANT.2-17厘米長的單股線天線
-ADXL335 3軸加速度計
第2步:這是什么?
ATmega328
ATmega328是Atmel的單芯片微控制器,屬于mega AVR系列。基于Atmel 8位AVR RISC的微控制器結合了具有讀寫功能的32kB ISP閃存,1kB EEPROM,2kB SRAM,23個通用I/O線,32個通用工作寄存器,三個靈活的定時器/計數器,以及比較模式,內部和外部中斷,串行可編程USART,面向字節的2線串行接口,SPI串行端口,10位A/D轉換器,帶有內部振蕩器的可編程看門狗定時器和5個軟件可選的電源-節能模式。設備工作在1.8至5.5伏之間它實現了接近每MHz 1 MIPS的吞吐量。 ATmega328p可以替代ATmega328p。
ADXL335
這是一個完整的三軸加速度測量系統。 ADXL335的最小測量范圍為±3g。它包含一個多晶硅表面微機械傳感器和信號調理電路,以實現開環加速度測量架構。輸出信號是與加速度成比例的模擬電壓。加速度計可以測量傾斜感應應用中的靜態重力加速度,以及由于運動,沖擊或振動而產生的動態加速度。
該傳感器是一個多晶硅表面微加工結構,位于頂部硅晶片。多晶硅彈簧將結構懸掛在晶片表面上方,并提供抵抗加速力的能力。使用由獨立的固定板和連接到運動物體上的板組成的差分電容器來測量結構的撓度。固定板由180°異相方波驅動。加速度會使移動的質量偏轉并使差動電容器不平衡,從而導致傳感器輸出的幅度與加速度成比例。然后使用相位敏感的解調技術確定加速度的大小和方向。
L293D
這是一個16引腳DIP封裝電機驅動器IC(IC6),具有四個輸入引腳和四個輸出引腳。全部四個輸入引腳連接到解碼器IC(IC5)的輸出引腳,四個輸出引腳連接到機器人的直流電動機。啟用引腳用于啟用IC6兩側的輸入/輸出引腳。
編碼器(HT12E)和解碼器(HT12D)IC
212編碼器是用于遠程控制系統應用的一系列CMOS LSI。它們能夠編碼由N個地址位和12 N個數據位組成的信息。每個地址/數據輸入可以設置為兩個邏輯狀態之一。接收到觸發信號后,已編程的地址/數據將與標頭位一起通過RF或紅外傳輸介質進行傳輸。選擇HT12E上的TE觸發或HT12D解碼器上的數據(DIN)觸發的能力進一步增強了212系列編碼器的應用靈活性。 HT12D還為紅外系統提供38kHz的載波。
發射器
發送器由ATmega328微控制器(IC2),ADXL335加速度計,HT12E編碼器(IC4)和433MHz RF發送器模塊(TX1)組成。在該電路中,來自ADXL335引腳(x,y)的兩個模擬輸出與微控制器的輸入引腳(23,24)連接。模擬信號通過微控制器轉換為數字信號。來自微控制器的引腳16、17、18和19的數字輸出直接發送到編碼器IC4的引腳13、12、11和10。此數據通過RF模塊TX1進行編碼和傳輸。
接收器
接收器部分由433MHz射頻接收器模塊(RX1),HT12D解碼器(IC5)和L293D電機驅動器(IC6)組成,用于運行電機。此處,接收器模塊RX1接收發送的信號,該信號由解碼器IC解碼以獲得相同的數字輸出。 IC6的四個輸出驅動兩個電動機。機器人按照發射器中加速度計的傾斜方向移動。
步驟3:方框圖
步驟4:發射器和接收器電路
前兩個圖像是接收器電路的布局,其他兩個圖像是發射器電路的布局。/p》
步驟6:軟件程序
該軟件程序是用Arduino編程語言編寫的。我借助Arduino IDE 1.0.5和Arduino Uno板編寫了一個新的ATmega328微控制器。
首先,您必須將引導加載程序代碼加載到微控制器中。為此,通過選擇文件→示例→Arduino ISP,我將Arduino Uno用于IDE中給出的系統內編程(ISP)。將引導程序上傳到微控制器后,即可上載該項目的pose.ino代碼。
步驟7:源代碼
const int ap1 = A0;
const int ap2 = A1;
int sv1 = 0;
int ov1 = 0;
int sv2 = 0;
int ov2 = 0;
void setup()
{//以9600 bps初始化串行通信:
Serial.begin(9600);
pinMode(13,OUTPUT);
pinMode(12,OUTPUT);
pinMode(11,OUTPUT);
pinMode(10,OUTPUT);
}
void loop()
{AnalogReference(EXTERNAL);//將3.3v連接到AREF
//讀取模擬值:
sv1 = AnalogRead(ap1);
ov1 = map(sv1,0,1023,0,255);
delay(2);
sv2 = AnalogRead(ap2);
ov2 = map(sv2,0,1023,0,255);
延遲(2);
Serial.print(“ Xsensor1 =”);
Serial.print(SV1);
Serial.print(“ \ t output1 =”);
Serial.println(OV1);
Serial.print(“ Ysensor2 =”);
Serial.print(sv2);
Serial.print(“ \ t output2 =”);
Serial.println(OV2);
if(analogRead(ap1)《514 && analogRead(ap2)《463)//用于向后移動
{
digitalWrite(13,HIGH);
digitalWrite(12,LOW);
digitalWrite(11,HIGH);
digitalWrite(10,LOW);
}
else
{
if(analogRead(ap1)《486 && analogRead(ap2)》 508)//左打開
{
digitalWrite(13,LOW);
digitalWrite(12,HIGH);
digitalWrite(11,HIGH);
digitalWrite(10,LOW);
}
其他
{
if(analogRead(ap1)》 512 && analogRead(ap2)》 560)//用于轉發
{
digitalWrite(13,LOW);
digitalWrite(12,HIGH);
digitalWrite(11,LOW);
digitalWrite(10,HIGH);
}
else
{
if(analogRead(ap1)》 550 && analogRead(ap2)》 512)//右打開
{
digitalWrite(13,HIGH);
digitalWrite(12,LOW);
digitalWrite(11,LOW);
digitalWrite(10,HIGH);
}
否則
{
digitalWrite(13,HIGH);
digitalWrite(12,HIGH);
digitalWrite(11,HIGH);
digitalWrite(10,HIGH);
}
}
}
}
}
步驟8:測試
安裝此處所示PCB上的所有組件,以最大程度地減少組裝錯誤。將接收器PCB和4.5V電池固定在機器人的機箱上。在機器人的后側固定兩個電機以及車輪,在前側固定一個腳輪。將主代碼上傳到微控制器后,將其從Arduino Uno板上移除,然后將其插入到組裝好的發送器PCB中。
現在,打開發送器和接收器電路中的電源。將變送器電路連接到您的手(或手套)上,然后向前,向后和側向移動您的手。機器人的運動方向在表I中給出。如果您保持手掌水平并平行于地球表面,則機器人將停止運轉。
為進行故障排除,請首先驗證各個測試點的電壓是否符合表1所述。
-
微控制器
+關注
關注
48文章
7627瀏覽量
151800 -
機器人
+關注
關注
211文章
28597瀏覽量
207832 -
手勢控制
+關注
關注
4文章
44瀏覽量
21790 -
ATmega328
+關注
關注
1文章
37瀏覽量
21031
發布評論請先 登錄
相關推薦
評論