RADYO ELEKTRONİK VE ELEKTRİK MÜHENDİSLİĞİ ANSİKLOPEDİSİ Basit robot. Radyo elektroniği ve elektrik mühendisliği ansiklopedisi Radyo elektroniği ve elektrik mühendisliği ansiklopedisi / Radyo kontrol ekipmanı Bu makale basit bir "robot" diyagramı sunmaktadır. Işığa gider ve ışık kaynağı yoksa "Serbest arama" modu etkinleştirilir, yani. robot sürecek ve bir çarpışma durumunda aracı hareket ettirecek ve geri dönecektir. Robotun kalbi bir ATMEL mikrodenetleyicisidir: AT90S2313, ancak bu şirketin başka herhangi birini kullanabilirsiniz, bu mikrodenetleyici program için 2kb belleğe, 15 giriş / çıkış bağlantı noktasına, kullanılabilir güce sahiptir - 4-6V. Motorlar bir "motor sürücüsü" - bir L293D mikro devresi tarafından kontrol edilecektir (yerli analog KR1128KT4A'dır). Bir sensör olarak, SF3-1 fotodirençlerinin alınmasına karar verildi. Robot iki motordan oluşmaktadır. Belirli eylemler için şu şekilde çalışırlar:
Devrede kullanılan radyo elemanları: Mikrodenetleyici AT90S2313 Mikro devre L293D (yerel analog - KR1128KT4A) 2 fotodirenç SF3-1 4MHz'de Kuvars Kapasitörler 22-24pF Sabitleyici 7805 (veya KREN5A) 100 ohm direnç (Opsiyonel) İki motor Güç Vbat - 4 AA pil veya 1 kurma kolu (9V) Güç kaynağı Vm - 1 taç (9V) Devreyi kurduktan sonra mikrodenetleyiciye programı indirmeniz gerekiyor ve robot hazır: /********************************************** **** *** Çip tipi: AT90S2313 Saat frekansı : 4,000000 MHz Bellek modeli: Minik Harici SRAM boyutu : 0 Veri Yığın boyutu: 32 ************************************************ ***** **/#include <90s2313.h> #Dahil etmek #Dahil etmek // çevre birimleriyle çalışmanın rahatlığı için tanımların atanması #DIŞI BAĞLANTI NOKTASINI tanımla #MOTOR_F'yi tanımla 7 #MOTOR_B'yi tanımlayın 6 #TURN_R 5'i tanımla #TURN_L 4'ü tanımla #PID'DE tanımla # LIGHT_R tanımla 0 # LIGHT_L tanımla 1 #define BUMPER_F 2 #tanımla TAMPON_B 3 // Olası sürüş modları enum {DUR, F, FR, FL, B, BR, BL}; //------------------------------------------------ ------------------------------ // Gecikme x 10ms //------------------------------------------------ ------------------------------ geçersiz Gecikme_10ms(işaretsiz grafik) {char ben; için(i=0;i // hareket yönünü seçmek için olasılık tablosu // mevcut hareket yönüne göre imzasız karakter 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}; // geçerli hareket yönü imzasız karakter this_move; //------------------------------------------------ ------------------------------ // Belirli bir yönde hareket için motor kombinasyonunu açın //------------------------------------------------ ------------------------------ geçersiz git (işaretsiz karakter yönü) { anahtar (yön) { durumda DUR: ÇIKIŞ.MOTOR_F=0; ÇIKIŞ.MOTOR_B=0; ÇIKIŞ.TURN_R=0; ÇIKIŞ.TURN_L=0; break; durum F: ÇIKIŞ.MOTOR_F=1; ÇIKIŞ.MOTOR_B=0; ÇIKIŞ.TURN_R=0; ÇIKIŞ.TURN_L=0; break; vaka FR: ÇIKIŞ.MOTOR_F=1; ÇIKIŞ.MOTOR_B=0; ÇIKIŞ.TURN_R=1; ÇIKIŞ.TURN_L=0; break; durumda FL: ÇIKIŞ.MOTOR_F=1; ÇIKIŞ.MOTOR_B=0; ÇIKIŞ.TURN_R=0; ÇIKIŞ.TURN_L=1; break; durum B: ÇIKIŞ.MOTOR_F=0; ÇIKIŞ.MOTOR_B=1; ÇIKIŞ.TURN_R=0; ÇIKIŞ.TURN_L=0; break; durum BR: ÇIKIŞ.MOTOR_F=0; ÇIKIŞ.MOTOR_B=1; ÇIKIŞ.TURN_R=1; ÇIKIŞ.TURN_L=0; break; vaka BL: ÇIKIŞ.MOTOR_F=0; ÇIKIŞ.MOTOR_B=1; ÇIKIŞ.TURN_R=0; ÇIKIŞ.TURN_L=1; break; } } //------------------------------------------------ ------------------------------ // Bir sonraki adımda hareket yönünün olasılık tablosuna göre seçilmesi //------------------------------------------------ ------------------------------ imzasız char next_move(void){ imzasız charpp, i; s = rand()/327; // rastgele bir sayı elde et 0..99 for (i=0;i<7;i++){ // olasılık tablosunda bir eşleşme aranıyor if (p[this_move][i] > pp) break; } this_move = ben; // yeni alınan yönü geçerli yön olarak yazın dönüş(i); } //------------------------------------------------ ------------------------------ // Ön Tampon Kesintisinin İşlenmesi (INT0 = PD2) //------------------------------------------------ ------------------------------ kesme [EXT_INT0] geçersiz ext_int0_isr(void) { if(this_move==FR) git(BL); if(this_move==FL) git(BR); yoksa git(B); Gecikme_10ms(250); // 2.5 x 2 saniye içinde kalkış Gecikme_10ms(250); this_move=B; } //------------------------------------------------ ------------------------------ // Arka tampon kesintisinin işlenmesi (INT1 = PD3) //------------------------------------------------ ------------------------------ kesme [EXT_INT1] geçersiz ext_int1_isr(void) { if(this_move==BR) git(FL); if(this_move==BL) git(FR); yoksa git(F); Gecikme_10ms(250); // 2.5 x 2 saniye içinde kalkış Gecikme_10ms(250); this_move=F; } //------------------------------------------------ ------------------------------ // "Rastgele yürüyüş" //------------------------------------------------ ------------------------------ imzasız karakter yürüyüşü(geçersiz){ // bu döngü "serbest dolaşımı" düzenlerken // ışık sensörlerinden hiçbirinden sinyal gelmiyor while((IN.LIGHT_R) && (IN.LIGHT_L){ git(sonraki_taşı()); // sonraki hareket yönünü al ve Gecikme_10ms(250); // bu yönde 2.5 sn hareket } // bu döngü ışığa doğru hareketi düzenlerken // ışık sensörlerinden en az birinden sinyal var while((IN.LIGHT_R==0) || (IN.LIGHT_L==0){ if((IN.LIGHT_R==0) && (IN.LIGHT_L==0)) git(F); else if(IN.LIGHT_R==0) git(FR); else if(IN.LIGHT_L==0) git(FL); } dönüş (0); } //------------------------------------------------ ------------------------------ // Ana program //------------------------------------------------ ------------------------------ void main (void) { DDRB=0xff; // B bağlantı noktasının tüm satırlarını çıktıya ata PORTB = 0x00; // ve onları düşük olarak ayarla DDRD=0x00; // D bağlantı noktasının tüm satırlarını girişe atayın PORTD=0xff; // dahili yük dirençlerini bağlayın // Harici Kesinti(ler) başlatma // INT0: Açık // INT0 Modu: Düşen Kenar // INT1: Açık // INT1 Modu: Düşen Kenar GIMSK=0xC0; MCUCR=0x0A; GIFR=0xC0; // kesintileri etkinleştir #asm("sei") // ana döngüyü başlat while(1) yürü(); } Programı, üretici yazılımı dosyasını ve robot şemasını sPlan formatında indirin Yayın: cxem.net Diğer makalelere bakın bölüm Radyo kontrol ekipmanı. Oku ve yaz yararlı bu makaleye yapılan yorumlar. En son bilim ve teknoloji haberleri, yeni elektronikler: Trafik gürültüsü civcivlerin büyümesini geciktiriyor
06.05.2024 Kablosuz hoparlör Samsung Müzik Çerçevesi HW-LS60D
06.05.2024 Optik Sinyalleri Kontrol Etmenin ve Yönetmenin Yeni Bir Yolu
05.05.2024
Diğer ilginç haberler: ▪ Dünyanın etrafındaki yörünge halkası Bilim ve teknolojinin haber akışı, yeni elektronik
Ücretsiz Teknik Kitaplığın ilginç malzemeleri: ▪ site bölümü Şarj cihazları, akümülatörler, piller. Makale seçimi ▪ makale Kalkan Tsaregrad kapılarında. Popüler ifade ▪ makale Sakız nedir? ayrıntılı cevap ▪ Makale Hekim-istatistikçi. İş tanımı ▪ makale Hızlı LED yangını (seçenek 3). Radyo elektroniği ve elektrik mühendisliği ansiklopedisi
Bu makaleye yorumunuzu bırakın: Bu sayfanın tüm dilleri Ana sayfa | Kütüphane | Makaleler | Site haritası | Site incelemeleri www.diagram.com.ua |