ENSIKLOPEDIA ELEKTRONIK RADIO DAN KEJURUTERAAN ELEKTRIK Robot ringkas. Ensiklopedia elektronik radio dan kejuruteraan elektrik Ensiklopedia elektronik radio dan kejuruteraan elektrik / Peralatan kawalan radio Artikel ini membentangkan gambar rajah "robot" ringkas. Dia pergi ke cahaya, dan jika tiada sumber cahaya, maka mod "Carian percuma" diaktifkan, i.e. robot akan memandu, dan sekiranya berlaku perlanggaran, pandu keluar dan berpusing. Jantung robot adalah mikropengawal ATMEL: AT90S2313, tetapi anda boleh menggunakan mana-mana syarikat ini yang lain, mikropengawal ini mempunyai memori 2kb untuk program ini, 15 port input / output, kuasa tersedia - 4-6V. Enjin akan dikawal oleh "pemandu enjin" - litar mikro L293D (analog domestik ialah KR1128KT4A). Sebagai sensor, ia telah memutuskan untuk mengambil photoresistors SF3-1. Robot itu terdiri daripada dua motor. Berikut ialah cara mereka akan berfungsi untuk tindakan tertentu:
Unsur radio yang digunakan dalam litar: Pengawal mikro AT90S2313 Litar mikro L293D (analog domestik - KR1128KT4A) 2 fotoperintang SF3-1 Kuarza pada 4MHz Kapasitor 22-24pF Penstabil 7805 (atau KREN5A) 100 ohm perintang (Pilihan) dua motor Power Vbat - 4 bateri AA, atau 1 crown (9V) Bekalan kuasa Vm - 1 mahkota (9V) Selepas memasang litar, anda perlu memuat turun program ke mikropengawal dan robot sedia: /************************************************ **** *** Jenis cip : AT90S2313 Kekerapan jam : 4,000000 MHz Model ingatan: Kecil Saiz SRAM luaran: 0 Saiz Timbunan Data : 32 *************************************************** ***** **/#include <90s2313.h> #sertakan #termasuk // penugasan definisi untuk kemudahan bekerja dengan peranti peranti #define OUT PORTB #define MOTOR_F 7 #define MOTOR_B 6 #define TURN_R 5 #define TURN_L 4 #define DALAM PIND #define LIGHT_R 0 #define LIGHT_L 1 #define BUMPER_F 2 #define BUMPER_B 3 // Mod pemanduan yang mungkin enum {BERHENTI, F, FR, FL, B, BR, BL}; //------------------------------------------------ ------------------------------ // Lengah t x 10ms //------------------------------------------------ ------------------------------ batal kelewatan_10ms(tak bertanda t) {char i; untuk(i=0;i // jadual kebarangkalian untuk memilih arah pergerakan // berdasarkan arah pergerakan semasa aksara tidak bertanda p[7][7] = {14, 43, 57, 71, 86, 93, 100, 7, 43, 71, 100, 100, 100, 100, 7, 50, 93, 100, 100, 100, 100, 7, 50, 57, 100, 100, 100, 100, 29, 29, 29, 29, 57, 79, 100, 36, 36, 36, 36, 71, 93, 100, 36, 36, 36, 36, 71, 79, 100}; // arah pergerakan semasa unsigned char this_move; //------------------------------------------------ ------------------------------ // Hidupkan gabungan motor untuk pergerakan ke arah tertentu //------------------------------------------------ ------------------------------ void go(arah aksara tidak ditandatangani){ suis (arah) { kes STOP: KELUAR.MOTOR_F=0; KELUAR.MOTOR_B=0; KELUAR.TURN_R=0; KELUAR.TURN_L=0; memecahkan; kes F: KELUAR.MOTOR_F=1; KELUAR.MOTOR_B=0; KELUAR.TURN_R=0; KELUAR.TURN_L=0; memecahkan; kes FR: KELUAR.MOTOR_F=1; KELUAR.MOTOR_B=0; KELUAR.TURN_R=1; KELUAR.TURN_L=0; memecahkan; kes FL: KELUAR.MOTOR_F=1; KELUAR.MOTOR_B=0; KELUAR.TURN_R=0; KELUAR.TURN_L=1; memecahkan; kes B: KELUAR.MOTOR_F=0; KELUAR.MOTOR_B=1; KELUAR.TURN_R=0; KELUAR.TURN_L=0; memecahkan; kes BR: KELUAR.MOTOR_F=0; KELUAR.MOTOR_B=1; KELUAR.TURN_R=1; KELUAR.TURN_L=0; memecahkan; kes BL: KELUAR.MOTOR_F=0; KELUAR.MOTOR_B=1; KELUAR.TURN_R=0; KELUAR.TURN_L=1; memecahkan; } } //------------------------------------------------ ------------------------------ // Memilih arah pergerakan dalam langkah seterusnya mengikut jadual kebarangkalian //------------------------------------------------ ------------------------------ unsigned char next_move(void){ unsigned charpp, i; pp = rand()/327; // dapatkan nombor rawak 0..99 untuk (i=0;i<7;i++){ // mencari padanan dalam jadual kebarangkalian jika (p[this_move][i] > pp) pecah; } this_move = i; // tulis arah baru yang diterima sebagai arah semasa pulangan(i); } //------------------------------------------------ ------------------------------ // Mengendalikan Gangguan Bampar Hadapan (INT0 = PD2) //------------------------------------------------ ------------------------------ sampuk [EXT_INT0] void ext_int0_isr(void) { if(this_move==FR) go(BL); if(this_move==FL) go(BR); lain pergi (B); Kelewatan_10ms(250); // berlepas dalam masa 2.5 x 2 saat Kelewatan_10ms(250); this_move=B; } //------------------------------------------------ ------------------------------ // Mengendalikan gangguan bampar belakang (INT1 = PD3) //------------------------------------------------ ------------------------------ sampuk [EXT_INT1] void ext_int1_isr(void) { if(this_move==BR) go(FL); if(this_move==BL) go(FR); lain pergi (F); Kelewatan_10ms(250); // berlepas dalam masa 2.5 x 2 saat Kelewatan_10ms(250); this_move=F; } //------------------------------------------------ ------------------------------ // "Berjalan rawak" //------------------------------------------------ ------------------------------ unsigned char walk(void){ // gelung ini mengatur "perjalanan bebas" manakala // tiada isyarat daripada mana-mana penderia cahaya manakala((IN.LIGHT_R) && (IN.LIGHT_L)){ go(next_move()); // dapatkan arah pergerakan seterusnya dan Kelewatan_10ms(250); // bergerak ke arah ini 2.5 saat } // gelung ini mengatur pergerakan ke cahaya sambil // terdapat isyarat daripada sekurang-kurangnya satu daripada penderia cahaya manakala((IN.LIGHT_R==0) || (IN.LIGHT_L==0)){ if((IN.LIGHT_R==0) && (IN.LIGHT_L==0)) go(F); else if(IN.LIGHT_R==0) go(FR); else if(IN.LIGHT_L==0) go(FL); } pulangan(0); } //------------------------------------------------ ------------------------------ // Program utama //------------------------------------------------ ------------------------------ tidak sah utama (tidak sah) { DDRB=0xff; // tetapkan semua baris port B kepada output PORTB = 0x00; // dan letakkannya rendah DDRD=0x00; // tetapkan semua baris port D kepada input PORTD=0xff; // sambungkan perintang beban dalaman // Permulaan Gangguan Luaran // INT0: Hidup // Mod INT0: Falling Edge // INT1: Hidup // Mod INT1: Falling Edge GIMSK=0xC0; MCUCR=0x0A; GIFR=0xC0; // dayakan gangguan #asm("sei") // mulakan gelung utama sambil(1) berjalan(); } Muat turun program, fail perisian tegar dan gambar rajah robot dalam format sPlan Penerbitan: cxem.net Lihat artikel lain bahagian Peralatan kawalan radio. Baca dan tulis berguna komen pada artikel ini. Berita terkini sains dan teknologi, elektronik baharu: Kulit tiruan untuk emulasi sentuhan
15.04.2024 Petgugu Global kotoran kucing
15.04.2024 Daya tarikan lelaki penyayang
14.04.2024
Berita menarik lain: ▪ Kereta Xiaomi berjalan pada HyperOS ▪ Terdapat angin yang cukup untuk tenaga untuk semua orang ▪ Tenaga buruh paling murah bukan orang Cina, tetapi robot ▪ Trypillians hampir tidak makan daging Suapan berita sains dan teknologi, elektronik baharu
Bahan-bahan menarik Perpustakaan Teknikal Percuma: ▪ bahagian laman web Fakta menarik. Pemilihan artikel ▪ artikel Peniten Magdalene. Ungkapan popular ▪ artikel Siapa yang melakukan pemindahan jantung manusia pertama dan bila? Jawapan terperinci ▪ artikel Seorang pekerja pangkalan kedai buku, pengumpul. Arahan standard mengenai perlindungan buruh ▪ artikel Tag elektronik. Ensiklopedia elektronik radio dan kejuruteraan elektrik ▪ artikel Penstabil linear, 5 amp. Ensiklopedia elektronik radio dan kejuruteraan elektrik
Tinggalkan komen anda pada artikel ini: Semua bahasa halaman ini Laman utama | Perpustakaan | artikel | Peta Laman | Ulasan laman web www.diagram.com.ua |