İçindekiler:

CPE 133 Çöp Sıralayıcısı: 14 Adım
CPE 133 Çöp Sıralayıcısı: 14 Adım

Video: CPE 133 Çöp Sıralayıcısı: 14 Adım

Video: CPE 133 Çöp Sıralayıcısı: 14 Adım
Video: Dept. of Justice Cops #134 - Heist Set Up (Criminal) 2024, Kasım
Anonim
CPE 133 Çöp Sıralayıcısı
CPE 133 Çöp Sıralayıcısı

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

Malzemeler
Malzemeler
Malzemeler
Malzemeler
Malzemeler
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

Kodlamaya Başlama
Kodlamaya Başlama
Kodlamaya Başlama
Kodlamaya Başlama
Kodlamaya Başlama
Kodlamaya Başlama

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ı

Kısıtlamalar Dosyası
Kısıtlamalar Dosyası
Kısıtlamalar Dosyası
Kısıtlamalar 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ı

Flip Flop Dosyası
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ı

Segmentler Dosyası
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ı

Saat Bölücü Dosyası
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ı
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

Servo Üst Dosya
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

En İyi Dosya
En İyi Dosya
En İyi Dosya
En İyi Dosya
En İyi Dosya
En İyi Dosya
En İyi Dosya
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

Lehimleme
Lehimleme
Lehimleme
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

final
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: