İçindekiler:
- Adım 1: Malzemeler
- Adım 2: Kodlamaya Başlamak
- Adım 3: Kısıtlama Dosyası
- Adım 4: Flip Flop Dosyası
- Adım 5: Segmentler Dosyası
- Adım 6: Saat Bölücü Dosyası
- Adım 7: Servo Sinyal Dosyası
- Adım 8: Servo Üst Dosya
- 9. Adım: En İyi Dosya
- Adım 10: Vivado'da Test Etme
- Adım 11: Donanım Tanıtımı Oluşturma
- Adım 12: Hazırlık
- Adım 13: Lehimleme
- Adım 14: Final
Video: CPE 133 Çöp Sıralayıcısı: 14 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Cal Poly'deki CPE 133 sınıfımız için çevreye yardımcı olacak ve yeni dijital tasarım bilgimizle uygulayabileceğimiz kadar basit bir VHDL/Basys 3 projesi oluşturmamız söylendi. Projemizin arkasındaki fikir, genel olarak insanların çöplerini nereye atacaklarını düşünmemeleri. İnsanları çöplerini nereye koyacaklarını düşünmeye zorlayacak bir makine yaratmaya karar verdik. Çöp sıralayıcımız, her biri çöp, geri dönüşüm veya kompostu temsil eden üç anahtar aracılığıyla kullanıcı girdisini alır. Kullanıcı atmak istediği atık türünü seçtikten sonra bir düğmeye basar. Bu düğme, karşılık gelen kap kapaklarının açılmasına neden olacaktır. Makine ayrıca kapaklardan herhangi birinin açık olup olmadığını belirtmek için Basys 3'teki ekranı da kullandı. Düğme bırakıldığında kapaklar tekrar kapanacak ve makine bir sonraki kullanıcı için hazır olacaktır.
Adım 1: Malzemeler
Bu proje için gerekli malzemeler şunlardır:
Basys 3 kurulu
Vivado yüklü bilgisayar
3x servo*
3 metre bakır tel
Tel Kesici/Sıyırıcı
Havya ve lehim
*servolar pahalı olduğu ve biz üniversite öğrencileri olduğumuz için prototip olarak her servo için 68 ohm'luk bir direnç ve LED kullandık (kod aynı şekilde çalışır)
Adım 2: Kodlamaya Başlamak
Bu proje için yazılacak çok kod var. Vivado ile yazılmış VHDL kodunu kullanacağız. Başlamak için yeni bir proje oluşturmak isteyeceğiz. Önce projeye isim verecek ve proje tipini belirteceksiniz. Resimdekiyle aynı ayarları seçtiğinizden emin olun. Kaynaklar ekranına geldiğinizde "top", "flip_flop", "segments", "servo_top", "servo_sig" ve "clk_div" adlı altı kaynak eklemek isteyeceksiniz. Her dosyanın dili için Verilog'u değil, VHDL'yi seçtiğinizden emin olun. Kısıtlamalar ekranında pin ataması için bir dosya oluşturmalısınız. Bu dosyanın adı önemli değil. Daha sonra kullanacağınız tahtayı seçmeniz istenecektir. Doğru olanı seçtiğinizden emin olun. Doğru seçim için referans fotoğraflar. Son adım, her kaynak dosyanın giriş ve çıkışlarını belirtmenizi isteyecektir. Bu adım daha sonra kodlanabilir, bu nedenle ileriyi tıklayın.
Adım 3: Kısıtlama Dosyası
Bu adımda kısıtlamalar dosyasını yazacağız. Bu, Vivado'ya hangi pinlerin devreden hangi sinyalleri göndereceğini/alacağını söyler. Saate, üç anahtara, yedi segmentli ekrana (yedi katot ve dört anot), bir düğmeye ve servo/LED'in kullanacağı üç çıkış PMOD pinine ihtiyacımız olacak. Kodun nasıl görünmesi gerektiğine ilişkin referans fotoğraflar.
Adım 4: Flip Flop Dosyası
Yazacağımız bir sonraki dosya flip_flip kaynak dosyasıdır. Bu, bir D flip flop'un VHDL uygulaması olacaktır. Başka bir deyişle, girişini yalnızca saat sinyalinin yükselen kenarında ve düğmeye basıldığında çıkışa iletecektir. Girdi olarak saat, D ve butonunu alacak ve Q çıktısını alacaktır. kod için fotoğraflara referans verecektir. Bu dosyanın amacı, anahtar her çevrildiğinde doğrudan açılıp sadece anahtar geri çevrildiğinde kapanmak yerine, kutuların yalnızca düğmeye basıldığında açılmasına izin vermektir.
Adım 5: Segmentler Dosyası
Yazılacak bir sonraki dosya, segmentler dosyasıdır. Bu, Basys 3'ün yedi segmentli ekranının yedi katot ve dört anot için giriş ve çıkış değerlerinde olduğu gibi düğmeyi alacaktır. Bu dosya, yedi bölümlü ekranın, kutular kapalıyken bir "C" ve kutular açıkken bir "O" göstermesine neden olur. Kod için ekteki fotoğrafa bakın.
Adım 6: Saat Bölücü Dosyası
Servolar, 64k Hz frekanslı bir PWM sinyali alarak çalışır, Basys 3'te yerleşik saat ise 50M Hz'de çalışır. Saat bölücü dosyası varsayılan saati servo için uygun bir frekansa dönüştürecektir. Dosya, saati ve bir sıfırlama sinyalini giriş olarak alacak ve yeni bir saat sinyali çıkaracaktır. Kod için ekteki fotoğrafa bakın.
Adım 7: Servo Sinyal Dosyası
Servo sinyal dosyası bir saat girişi, bir sıfırlama girişi ve istenen bir konum girişi alacaktır. Servoyu istenen konuma götürecek bir PWM sinyali verecektir. Bu dosya, istenen konuma bağlı olarak farklı görev döngülerine sahip servo için bir PWM sinyali oluşturmak için son dosyada oluşturulan saat sinyalini kullanır. Bu da çöp bidonlarının kapaklarını kontrol eden servoları çevirmemizi sağlıyor. Kod için ekteki fotoğrafa bakın.
Adım 8: Servo Üst Dosya
Bu dosyanın amacı, son iki dosyayı işlevsel bir servo sürücüde derlemektir. Giriş olarak bir saat, bir sıfırlama ve bir konum alacak ve servo PWM sinyalini verecek. Bileşenler olarak hem saat bölücüyü hem de servo sinyal dosyasını kullanacak ve değiştirilmiş saati saat bölücüden servo sinyal dosyasına geçirmek için dahili bir saat sinyali içerecektir. Fotoğraflara bakın:
9. Adım: En İyi Dosya
Bu, birlikte yarattığımız her şeyi sardığı için projenin en önemli dosyasıdır. Giriş olarak düğmeyi, üç anahtarı ve saati alacaktır. Çıktı olarak yedi katot, dört anot ve üç servo/LED sinyali verecektir. Bileşen olarak flip flop, segmentler ve servo_top dosyalarını kullanacak ve dahili bir anahtara ve dahili servo sinyaline sahip olacaktır.
Adım 10: Vivado'da Test Etme
Vivado'da Synthesis'i çalıştırın, uygulayın ve bitsream yazın. Herhangi bir hata mesajıyla karşılaşırsanız, hata konumunu bulun ve verilen kodla karşılaştırın. Tüm bu çalıştırmalar başarıyla tamamlanana kadar herhangi bir hata üzerinde çalışın.
Adım 11: Donanım Tanıtımı Oluşturma
Bu adımda prototipimizde kullandığımız LED donanımını oluşturacaksınız. Servolar kullanılıyorsa, doğru pinler kullanıldığı sürece proje çalışmaya hazır olmalıdır. LED kullanıyorsanız aşağıdaki adımları izleyin.
Adım 12: Hazırlık
Teli altı eşit parçaya kesin. Her bir tel parçasının uçlarını lehimlemenin gerçekleşmesi için yeterince soyun. LED'leri, dirençleri ve kabloları üç gruba ayırın. Havyayı ısıtın.
Adım 13: Lehimleme
68 ohm'luk dirençlerin her birini karşılık gelen LED'lerinin negatif tarafına lehimleyin. LED'in pozitif tarafına bir tel ve rezistörün led'e lehimlenmemiş tarafına başka bir tel lehimleyin. Yukarıda resmedilen LED mekanizmalarından üçüne sahip olmalısınız.
Adım 14: Final
Her bir pozitif kabloyu karşılık gelen PMOD pimine ve her bir negatif kabloyu da bir toprak PMOD pimine takın. İsteğe bağlı olarak, çöp kutularını temsil etmek ve lehimleme karışıklığınızı gizlemek için karton kutular ekleyin. Kablolar doğru şekilde takıldığında ve kod panoya hatasız bir şekilde yüklendiğinde, makine istendiği gibi çalışmalıdır. Bir şeyler ters gidiyorsa, sorunu gidermek için önceki adımlara dönün. Yeni "çöp ayırıcınız" ile iyi eğlenceler.
Önerilen:
Modkit for Vex'te Renk Sıralayıcısı Nasıl Kodlanır: 7 Adım
Vex için Modkit'te Renk Sıralayıcısı Nasıl Kodlanır: Herkese merhaba, Bu eğitimde Modkit for Vex'te bir renk topu sıralayıcısını nasıl kodlayacağınızı öğreneceksiniz, umarım yaparsınız ve eğlenirsiniz! Lütfen bana oy verin!
CPE 133 Nihai Proje Ondalık Sayıdan İkiliye: 5 Adım
CPE 133 Final Projesi Ondalıktan İkiliye: İkili Sayılar, dijital mantık denilince akla gelen ilk şeylerden biridir. Ancak Binary Numbers, yeni başlayanlar için zor bir kavram olabilir. Bu proje, ikili sayılar konusunda hem yeni hem de deneyimli olanlara yardımcı olacaktır
Arduino MIDI Ritim Bölüm Sıralayıcısı: 8 Adım (Resimlerle)
Arduino MIDI Ritim Bölümü Sıralayıcısı: İyi bir yazılım davul makinesine sahip olmak bugün kolay ve ucuz ama bir fare kullanmak benim için eğlenceyi öldürüyor. Bu nedenle, başlangıçta 12 farklı davul elemanını tetikleyebilen saf 64 adımlı donanım MIDI davul sıralayıcı olarak amaçlanan şeyin farkına vardım
Renk Sıralayıcısı: 6 Adım
Renk Sıralayıcısı: Bu Renk Sıralayıcılarının hedefi, m&ms'leri renklerine göre farklı yığınlara taşımaktır
CPE 133 Metronom: 3 Adım
CPE 133 Metronom: Cal Poly'deki final projemiz için metronom adı verilen bir tempo tutma cihazı yarattık, ilgi müziği ve dijital tasarımı nedeniyle bu projeyi seçtik. Kodumuzu tasarlamaya yardımcı olması için CPE 133'teki geçmiş laboratuvarları ve işbirliğine yardımcı olacak çevrimiçi öğreticileri kullandık