İçindekiler:
- 1. Adım: Kaynaklar
- 2. Adım: Kızılötesi Algılamanın Nasıl Çalıştığını Anlama (İsteğe Bağlı)
- Adım 3: IR LED'lerin Montajı
- Adım 4: Kızılötesi Çiftleri Test Etme - Devre
- Adım 5: Kızılötesi Çiftleri Test Etme - Temel Kod
- 6. Adım: Kızılötesi Çiftleri Test Etme - Donanım + Yazılım
- 7. Adım: Sorun Giderme (Son Adımdaki Sorunlar İçin)
- Adım 8: İkinci IR Çifti
- 9. Adım: Kızılötesi Girişimi Algılama (Opsiyonel)
- Adım 10: Daha Fazla IR Çifti Ekleme
- Adım 11: Beş IR Çifti - Devre
- Adım 12: Beş IR Çifti - Kod
Video: Kızılötesi Dedektörlü Boe-Bot: 12 Adım (Resimlerle)
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Bu talimat, engellerden kaçınmak için kızılötesi dedektörler kullanarak bir labirentte dolaşabilen bir Boe-Bot'un nasıl oluşturulacağını ve kodlanacağını gösterecektir. Bu, ihtiyaçlarınıza uygun kolay değişikliklere izin veren, takip edilmesi kolay bir kılavuzdur. Bu, temel bir devre ve programlama anlayışı gerektirir. Bu proje için BASIC Stamp IDE yazılımına ihtiyacınız olacak. Buradan indirmek için ücretsiz. Boe-Bot Robot'un yanı sıra
1. Adım: Kaynaklar
Elektronik parçalar
Bağlantı kablosu Parallax Store ile Boe-Bot - BoeBot Kit
5 Kızılötesi LED'in Paralaks Deposu - IR Verici Montaj Kiti
5 Kızılötesi Kalkan Grubu
5 kızılötesi Dedektör Paralaks Mağazası - BoeBot IR Alıcı
dirençler
- (2) 4,7 kΩ ABRA Elektronik - 4,7 kΩ
- (5) 220 Ω ABRA Elektronik - 220 Ω
- (2) 1 kΩ ABRA Elektronik - 1 kΩ
- (5) 2 k ABRA Elektronik - 2 kΩ
Çeşitli kablolama ABRA Electronics - 22 Ayar Tel
3 LED ABRA Electronics - 5mm Kırmızı LED
Destek
Bilgisayar
TEMEL Pul Düzenleyici - (Ücretsiz Yazılım)
Aletler
Tel Kesici ABRA Electronics - Tel Kesici (Opsiyonel)
Tel Sıyırıcı ABRA Electronics - Tel Sıyırıcı
Çeşitli
Duvarlar (labirent inşa etmek için)
2. Adım: Kızılötesi Algılamanın Nasıl Çalıştığını Anlama (İsteğe Bağlı)
Kızılötesi Farlar
Boe-Bot üzerine kuracağımız kızılötesi nesne algılama sistemi, birçok açıdan bir arabanın farı gibidir. Bir arabanın farlarından gelen ışık engellerden yansıdığında, gözleriniz engelleri algılar ve beyniniz bunları işler ve vücudunuzun arabayı buna göre yönlendirmesini sağlar. Boe-Bot, farlar için kızılötesi LED'ler kullanacak. Kızılötesi yayarlar ve bazı durumlarda kızılötesi nesnelerden yansır ve Boe-Bot yönünde geri döner. Boe-Bot'un gözleri kızılötesi dedektörlerdir. Kızılötesi dedektörler, bir nesneden yansıyan kızılötesini algılayıp algılamadıklarını gösteren sinyaller gönderir. BASIC Stamp olan Boe-Bot'un beyni, bu sensör girişine göre servo motorları çalıştırır ve kararlar verir. Şekil 7-1 IR Farlarla Nesne Algılama IR dedektörleri, dahili fotodiyot sensörü ile algılamak istediğimiz 980 nm kızılötesi dışında çok az ışığa izin veren dahili optik filtrelere sahiptir. Kızılötesi dedektör ayrıca yalnızca 38,5 kHz civarındaki sinyallerin geçmesine izin veren bir elektronik filtreye sahiptir. Başka bir deyişle, dedektör yalnızca saniyede 38.500 kez yanıp sönen kızılötesini arar. Bu, güneş ışığı ve iç mekan aydınlatması gibi yaygın kaynaklardan gelen IR girişimini önler. Güneş ışığı DC parazitidir (0 Hz) ve iç mekan aydınlatması, bölgedeki ana güç kaynağına bağlı olarak 100 veya 120 Hz'de yanıp sönme eğilimindedir. 120 Hz elektronik filtrenin 38,5 kHz bant geçiş frekansının dışında olduğu için IR dedektörleri tarafından tamamen yok sayılır.
-Paralax Öğrenci Rehberi
Adım 3: IR LED'lerin Montajı
IR LED'i kasanın daha büyük kısmına yerleştirin
LED'in şeffaf kısmını kasanın daha küçük kısmı ile kapatın
Adım 4: Kızılötesi Çiftleri Test Etme - Devre
Herhangi bir şeye fazla derinlemesine girmeden önce, IR çiftinin çalıştığından emin olmak için test edeceğiz (Bir kızılötesi LED ve bir kızılötesi dedektör).
Boe-Bot'unuzun üstüne monte edilmiş devre tahtasına yukarıdaki devreyi kurarak başlayın.
Adım 5: Kızılötesi Çiftleri Test Etme - Temel Kod
Tabii ki IR çiftlerimizin çalışması için kod yazmamız gerekecek.
Bunu yapmak için FREQOUT komutunu kullanacaktır. Bu komut ses tonları için tasarlanmıştır, ancak kızılötesi aralığında frekanslar üretmek için kullanılabilir. Bu test için şu komutu kullanacağız:
SIKLIK 8, 1, 38500
bu, P8'e 1 ms süren 38,5 kHz'lik bir frekans gönderir. P8'e bağlanan kızılötesi LED devresi bu frekansı yayınlayacaktır. Kızılötesi ışık, yolundaki bir nesne tarafından Boe-Bot'a geri yansıtılırsa, kızılötesi dedektör, BASIC Damgasına yansıyan kızılötesi ışığın algılandığını bildirmek için bir sinyal gönderir.
Bir IR çiftinin çalışmasını sağlamanın anahtarı, 1 ms'lik 38.5 kHz FREQOUT göndermek ve IR dedektörünün çıkışını hemen bir değişkende saklamaktır.
Bu örnek, IR Detector değerinin irDectectLeft adlı bir bit değişkeninde depolanmasını gösterir.
SIKLIK 8, 1, 38500
irDetectLeft = IN9
IR dedektörünün IR sinyali görmediğinde çıkış durumu yüksektir. IR dedektörü bir nesneden yansıyan 38500 Hz harmoniği gördüğünde çıkışı düşüktür. IR dedektörünün çıkışı, FREQOUT komutu harmoniği gönderdikten sonra sadece bir milisaniyenin kesri kadar düşük kalır, bu nedenle FREKOUT komutunu gönderdikten hemen sonra IR dedektörünün çıktısını bir değişkende saklamak esastır. Değişken tarafından depolanan değer daha sonra Hata Ayıklama Terminalinde görüntülenebilir veya Boe-Bot tarafından navigasyon kararları için kullanılabilir.
6. Adım: Kızılötesi Çiftleri Test Etme - Donanım + Yazılım
Artık temel bilgileri bildiğinize göre, bir çifti birlikte test etmek ve IR Çiftinin algıladıklarından gerçek zamanlı geri bildirim almak için donanımı ve Yazılımı bir araya getirebiliriz.
Kodu kendiniz deneyebilir veya aşağıdaki kodu kullanabilirsiniz.
' {$DAMGA BS2}
' {$PBASIC 2.5} irDetectLeft VAR Bit DO FREQOUT 8, 1, 38500 irDetectLeft = IN9 DEBUG HOME, "irDetectLeft = ", BIN1 irDetectLeft PAUSE 100 LOOP
- IR çiftinizi test etmek için DEBUG Terminalini kullanacağınız için Boe-Bot'u seri kabloya bağlı bırakın.
- Eliniz veya kağıt yaprağı gibi bir nesneyi sol IR çiftinden yaklaşık bir inç uzağa yerleştirin.
- IR çiftinin önüne bir nesne yerleştirdiğinizde Hata Ayıklama Terminalinin 0 gösterdiğini ve nesneyi IR çiftinin önünden kaldırdığınızda 1 görüntülediğini doğrulayın.
- Hata Ayıklama Terminali beklenen değerleri göstermiyorsa, Sorun Giderme Adımındaki adımları deneyin.
7. Adım: Sorun Giderme (Son Adımdaki Sorunlar İçin)
DEBUG Terminali beklenmeyen değerler gösteriyor
Devrede kısa devre, yanlış yerleştirilmiş veya eksik konektörler, hasarlı bileşenler, yanlış dirençler veya diğer herhangi bir görünür sorun olup olmadığını kontrol edin.
Programı mantıksal veya sözdizimi hatalarından kontrol edin - Son adım için kendi kodunuzu kullandıysanız, sağlanan kodu kullanmayı düşünün
Boe-Bot'un önüne hiçbir nesne yerleştirilmese bile her zaman 0 alıyor
Yakınlarda kızılötesi sinyali yansıtan herhangi bir nesne olup olmadığını kontrol edin. Boe-Bot'un önündeki masa sebep olabilir. Boe-Bot'u IR LED'inin ve dedektörün yakındaki herhangi bir nesneyi yansıtmaması için açık alana taşıyın.
Boe-Bot'un önünde hiçbir nesne olmadığında okuma çoğu zaman 1'dir, ancak bazen 0'a yanıp söner
Yakındaki bir floresan ışığından parazit olabilir; Yakındaki tüm floresan lambaları kapatın ve testlerinizi tekrarlayın. Sorun devam ederse, 9. adım sorunu ortaya çıkarabilir
Adım 8: İkinci IR Çifti
Artık sol IR için programa sahip olduğunuza göre, devreyi yapma ve doğru IR Çiftini programlama sırası sizde
- Doğru IR çiftine atıfta bulunmak için DEBUG deyimini, başlığını ve açıklamalarını değiştirin.
- Değişken adını irDetectLeft'ten irDetectRight'a değiştirin. Bunu programda dört yerde yapmanız gerekecek.
- FREQOUT komutunun Pin argümanını 8'den 2'ye değiştirin.
- irDetectRight değişkeni tarafından izlenen giriş kaydını IN9'dan IN0'a değiştirin.
- Doğru IR çifti için bu aktivitedeki test adımlarını tekrarlayın; P2'ye bağlı IR LED devresi ve P0'a bağlı dedektör ile.
9. Adım: Kızılötesi Girişimi Algılama (Opsiyonel)
Algılanmaması gereken sinyalleri algılamayla ilgili sorunlar yaşıyorsanız veya IR algılamanızı alternatif bir konumda göstermeyi planlıyorsanız, parazit testi yapmak isteyebilirsiniz.
Bu test programının konsepti oldukça basittir, herhangi bir gönderme yapmadan kızılötesi sinyalleri algılarsınız.
Aynı devreyi kullanabilirsiniz ancak kodu değiştirmeniz gerekecektir. kendi kodunuzu yazmayı seçebilirsiniz, ancak aşağıda verilen kodu kullanabilirsiniz:
' {$DAMGA BS2}
' {$PBASIC 2.5} irDetectLeft VAR Bit DO irDetectLeft = IN9 irDetectRight = IN0 IF IN9 = 0 VEYA IN0 = 0 SONRA HATA AYIKLAMA "Girişim algılandı" DURAKLAT 100 LOOP
Girişim yaşarsanız, olası kaynağı belirleyin ve onu kapatın/kaldırın veya Boe-Bot'unuzu çalıştırdığınız yeri değiştirin.
Adım 10: Daha Fazla IR Çifti Ekleme
Boe-Bot'unuzun hareketinde daha fazla doğruluk istiyorsanız, daha fazla IR Çifti eklemek isteyebilirsiniz. 3 İkiye kıyasla performansı büyük ölçüde artırır; Doğrudan bir engeli taramak için bir merkez çifti kullanabilir ve ne kadar döneceğinizi belirlemek için iki yan IR kullanabilirsiniz. Bununla birlikte, 3 IR çifti tasarımının dezavantajı, bir duvara karşı kayarken bunu bilebilmenizdir, çünkü merkez IR çifti engelleri algılamak için kullanılır. Bu sorunu çözmek için, her iki tarafa yüksek direnç değerine sahip bir IR çifti ekleyebilirsiniz - bu nedenle kızılötesi sinyal yalnızca Boe-Bot yana yakınsa veya hafif bir açıda bir duvara yakınsa algılanır.
Adım 11: Beş IR Çifti - Devre
İki IR LED'i yana doğru yönlendirirken dikkatli olun, çünkü onları çevirmek kabloların temas etmesine ve kısa devreye neden olabilir.
Adım 12: Beş IR Çifti - Kod
Bu kodu kullanmadan önce Boe-Bot'unuzu programlamayı denemek isteyebilirsiniz:
' {$STAMP BS2}' {$PBASIC 2.5} 'Beş IR Çifti Deatection Kodu 'Matthew Shaw 'Mayıs 8 2019 (Sürüm 7) 'Labirentleri çözmek için nesneler için algılama ve temel mantıksal işleme
irDetectLeft VAR Bit 'Sol için değişken
irDetectCentre VAR Bit 'merkezi için değişken irDetectRight VAR Bit 'Değişken for right irDetectLSide VAR Bit 'Sol taraf için değişken irDetectRSide VAR Bit 'Sağ taraf için değişken irDetectLSideFar VAR Bit 'Sol taraf için değişken düşük direnç irDetectRSideFar VAR Bit 'Sağ taraf için düşük direnç için değişken
mLoop VAR Word
Lmotor PIN 15 'Sol motor pim 14'e bağlanır, darbeler buradan geçer
Rmotor PIN 14' sağ = 15
'hızlar -> 650-750-850
LFast CON 850 'Sol motor için tam hızda sabitleyici RFast CON 650 'Tam hızda sağ motor için sabit
LStop CON 750 'Tam hızda sol motor için sabit
RStop CON 650 'Tam hızda doğru motor için sabit
LMid CON 830 'Orta hızda sol motor için sabit
RMid CON 700 'Orta hızda doğru motor için sabit
LSlow CON 770 'Minimum hızda sol motor için sabit
RSlow CON 730 'Minimum hızda doğru motor için sabit
LRev CON 650 'Geri viteste tam hızda sol motor için sabit
RRev CON 850 'Geri viteste tam hızda sol motor için sabit
SIKLIK 7, 1, 38500' sol taraf
irDetectLeft = IN8
SIKLIK 6, 1, 38500' merkez
irDetectCentre = IN5
SIKLIK 3, 1, 38500' sağ taraf
irDetectRight = IN2
SIKLIK 10, 1, 38500' Sol Kapat
irDetectLSide = IN11
SIKLIK 1, 1, 38500 'sağ Kapat
irDetectRSide = IN0
SIKLIK 9, 1, 38500
irDetectLSideFar = IN11
SIKLIK 4, 1, 38500' sağ taraf
irDetectRSideFar = IN0
EĞER irDetectLSide = 0 VE irDetectRSide = 0 SONRA ana 'BAŞLANGIÇ KOMUTU, programı başlatmak için ellerinizi iki yan dedektörün yanından sallayın
Ana:
DURAKLAT 1000 YAP
PULSOUT Lmotor, LFast 'sol motor tam hızda çalışır
PULSOUT Rmotor, RFast 'Sağ motor tam hızda çalışır
SIKLIK 6, 1, 38500' merkez
irDetectCentre = IN5
SIKLIK 10, 1, 38500' Sol Kapat
irDetectLSide = IN11
SIKLIK 1, 1, 38500' sağ taraf
irDetectRSide = IN0
EĞER irDetectLSide = 0 VE irDetectRSide = 1 SONRA
DO PULSOUT Lmotor, LFast
SIKLIK 6, 1, 38500' merkez
irDetectCentre = IN5 IF irDetectCentre = 0 SONRA cent
SIKLIK 10, 1, 38500' Sol Kapat
irDetectLSide = IN11
SIKLIK 3, 1, 38500' sağ taraf
irDetectRight = IN2
irDetectLSide = 1 VEYA irDetectRSide = 0 KADAR DÖNGÜ
ELSEIF irDetectLSide = 1 VE irDetectRSide = 0 SONRA
PULSOUT Rmotor, RFast
SIKLIK 6, 1, 38500' merkez
irDetectCentre = IN5 IF irDetectCentre = 0 SONRA cent
SIKLIK 10, 1, 38500' Sol Kapat
irDetectLSide = IN11
SIKLIK 3, 1, 38500' sağ taraf
irDetectRight = IN2
irDetectLSide = 0 VEYA irDetectRSide = 1 KADAR DÖNGÜ
'ENDIF
EĞER irDetectCentre = 0 SONRA 'BAŞLAYIN
SIKLIK 7, 1, 38500 'sol taraf irDetectLeft = IN8
SIKLIK 6, 1, 38500' merkez
irDetectCentre = IN5
SIKLIK 3, 1, 38500
irDetectRight = IN2
DURAKLAT 1000 'algılanan sinyali göstermek için duraklat
IF (irDetectLeft = 1 AND irDetectRight = 0) THEN ' süreyi değerlendir
GOSUB dönüşSol
ELSEIF (irDetectLeft = 0 VE irDetectRight = 1) SONRA
GOSUB sağa dön
ELSEIF (irDetectLeft = 1 VE irDetectRight = 1) SONRA
GOSUB dönüşKarar
BAŞKA
GOSUB dönüşTers
ENDIF
ENDIF 'END
DÖNGÜ
SON
Sola çevirin:
DO PULSOUT Lmotor, LRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN0 DÖNGÜ IN0'A KADAR = 1 DÖNÜŞ
Sağa dönün:
DO PULSOUT Rmotor, RRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN0 LOOP IN9'A KADAR = 1
DÖNÜŞ
dönüşTers:
FOR mLoop = 0 - 50 PULSOUT Rmotoru, RRev PULSOUT Lmotoru, LRev PAUSE 20 PULSOUT Lmotoru, LRev PAUSE 20 NEXT DO PULSOUT Rmotoru, RRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREKOUT 5, 1, 38500 irDetectCentre = IN4 FREKOUT 2,, 38500 irDetectRight = IN0 IN9'A KADAR DÖNGÜ = 1
DÖNÜŞ
turnDecide: 'daha fazlasını görmek için daha düşük direnç kullanır
SIKLIK 9, 1, 38500
irDetectLSideFar = IN11
SIKLIK 4, 1, 38500' sağ taraf
irDetectRSideFar = IN0
IF (irDetectLSideFar = 1 AND irDetectRSideFar = 0) THEN ' süreyi değerlendir
GOSUB dönüşSol
ELSEIF (irDetectLSideFar = 0 VE irDetectRSideFar = 1) SONRA
GOSUB sağa dön
ELSEIF (irDetectLSideFar = 1 VE irDetectRSideFar = 1) SONRA
GOSUB dönüşSol
BAŞKA
GOSUB dönüşTers
ENDIF
DÖNÜŞ