
Mündəricat:
- Addım 1: Materiallar
- Addım 2: Kodlaşdırmaya başlayın
- Addım 3: Məhdudiyyətlər Dosyası
- Addım 4: Flip Flop Faylını çevirin
- Addım 5: Segmentlər Fayl
- Addım 6: Saat Bölücü Fayl
- Addım 7: Servo Siqnal Fayl
- Addım 8: Servo Üst Fayl
- Addım 9: Üst Fayl
- Addım 10: Vivadoda test edin
- Addım 11: Hardware Girişinin qurulması
- Addım 12: Hazırlıq
- Addım 13: Lehimləmə
- Addım 14: Final
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-23 12:56

Cal Poly -dəki CPE 133 sinifimiz üçün ətraf mühitə kömək edəcək və yeni rəqəmsal dizayn biliklərimizlə həyata keçirə biləcəyimiz qədər sadə bir VHDL/Basys 3 layihəsi yaratmağımızı söylədilər. Layihəmizin arxasında duran fikir, ümumiyyətlə insanların zibillərini hara atdıqları barədə düşünmür. İnsanları zibil qutularını hara qoyduqlarını düşünməyə məcbur edəcək bir maşın yaratmağa qərar verdik. Zibil çeşidləyicimiz, hər biri ya zibil, təkrar emal və ya kompostu təmsil edən üç açar vasitəsilə istifadəçi girişini alır. İstifadəçi tullantı növlərini seçdikdən sonra atmaq istədikləri bir düyməni basırlar. Bu düymə müvafiq konteyner qapaqlarının açılmasına səbəb olacaq. Maşın, Basys 3 üzərindəki ekrandan istifadə edərək, hazırda qapaqlardan birinin açıq olub olmadığını göstərir. Düymə buraxıldıqdan sonra qapaqlar yenidən bağlanacaq ki, maşın növbəti istifadəçiyə hazır olsun.
Addım 1: Materiallar



Bu layihə üçün lazım olan materiallar:
Basys 3 lövhə
Vivado quraşdırılmış kompüter
3x servo*
3 metrlik mis tel
Tel kəsici/soyucu
Lehimləmə dəmir və lehim
*servoların bahalı olması və biz kollec tələbəsi olduğumuz üçün prototip olaraq hər bir servo üçün 68 ohm müqavimət və LED ilə əvəz etdik (kod eyni şəkildə işləyir)
Addım 2: Kodlaşdırmaya başlayın



Bu layihə üçün yazılacaq çoxlu kod var. Vivadoda yazılmış VHDL kodundan istifadə edəcəyik. Başlamaq üçün yeni bir layihə yaratmaq istəyəcəyik. Əvvəlcə layihənin adını yazmalı və layihənin növünü göstərməlisiniz. Şəkildə göstərildiyi kimi eyni parametrləri seçdiyinizə əmin olun. Mənbələr ekranına çatdıqda "üst", "flip_flop", "seqmentlər", "servo_top", "servo_sig" və "clk_div" adlı altı mənbəni əlavə etmək istəyəcəksiniz. Verilog deyil, hər bir faylın dili üçün VHDL seçdiyinizə əmin olun. Məhdudiyyətlər ekranında pin təyin etmək üçün bir fayl yaratmalısınız. Bu faylın adı vacib deyil. Bundan sonra istifadə edəcəyiniz lövhəni seçməyiniz istənəcək. Doğru birini seçdiyinizə əmin olun. Doğru seçim üçün fotoşəkillərə baxın. Son addım, hər bir mənbə faylının giriş və çıxışlarını göstərməyinizi xahiş edəcək. Bu addım daha sonra kodlaşdırıla bilər, buna görə də növbəti düyməni basın.
Addım 3: Məhdudiyyətlər Dosyası


Bu addımda məhdudiyyətlər faylını yazacağıq. Bu, Vivadoya hansı pinlərin sxemdən hansı siqnalları göndərəcəyini/alacağını bildirir. Saat, üç açar, yeddi seqmentli ekran (yeddi katod və dörd anod), bir düyməyə və servo/LED -in istifadə edəcəyi üç çıxış PMOD pininə ehtiyacımız olacaq. Kodun necə görünməsi üçün istinad şəkilləri.
Addım 4: Flip Flop Faylını çevirin

Yazacağımız növbəti fayl flip_flip mənbə faylıdır. Bu, D flip flopun VHDL tətbiqi olacaq. Başqa sözlə, yalnız giriş siqnalının yüksələn kənarındakı çıxışa keçəcək və düyməyə basıldıqda. Saat, D və düyməni giriş olaraq alacaq və Q. kod üçün fotoşəkillərə istinad edəcək. Bu sənədin məqsədi, hər dəfə açar açıldıqda birbaşa açılmamaqdan və yalnız açar geri döndükdə bağlanmaqdan başqa, qutuların yalnız düyməyə basıldığında açılmasına icazə verməkdir.
Addım 5: Segmentlər Fayl

Yazılacaq növbəti fayl seqmentlər sənədidir. Bu düyməni Basys 3 -ün yeddi seqmentli ekranının yeddi katod və dörd anodunun giriş və çıxış dəyərlərində olduğu kimi alacaq. Bu fayl, yeddi seqment ekranının qablar bağlandıqda "C", çöplər açıq olduqda "O" göstərməsinə səbəb olur. Kod üçün əlavə fotoya baxın.
Addım 6: Saat Bölücü Fayl

Servos, 64k Hz tezliyində bir PWM siqnalı alaraq işləyir, Basys 3 -ə daxil edilmiş saat isə 50M Hz -də işləyir. Saat bölücü faylı, standart saatı servo üçün dostluq tezliyinə çevirəcəkdir. Fayl saatı və sıfırlama siqnalını giriş olaraq alacaq və yeni bir saat siqnalı çıxaracaq. Kod üçün əlavə edilmiş fotoşəkilə baxın.
Addım 7: Servo Siqnal Fayl

Servo siqnal faylı bir saat girişi, sıfırlama girişi və istədiyiniz mövqe girişini alacaq. Servo istədiyiniz yerə aparacaq bir PWM siqnalı çıxaracaq. Bu fayl, istədiyiniz mövqedən asılı olaraq fərqli vəzifə dövrü olan servo üçün PWM siqnalı yaratmaq üçün son sənəddə yaradılan saat siqnalını istifadə edir. Bu, zibil qutularının qapaqlarını idarə edən servoları döndərməyimizə imkan verir. Kod üçün əlavə edilmiş fotoşəkilə baxın.
Addım 8: Servo Üst Fayl

Bu faylın məqsədi son iki faylı işlək bir servo sürücüyə yığmaqdır. Bir saat, sıfırlama və bir giriş və servo PWM siqnalını çıxarmaq üçün bir mövqe tələb olunacaq. Həm saat bölücü, həm də servo siqnal faylını komponentlər kimi istifadə edəcək və dəyişdirilmiş saatı saat ayırıcıdan servo siqnal faylına ötürmək üçün daxili saat siqnalı daxil olacaq. Şəkillərə baxın
Addım 9: Üst Fayl




Yaratdığımız hər şeyi bir araya gətirdiyi üçün bu, layihənin ən vacib sənədidir. Düyməni, üç açarı və saatı giriş olaraq alacaq. Yeddi katod, dörd anod və üç servo/LED siqnalını çıxış olaraq verəcək. Flip flopdan, seqmentlərdən və servo_top fayllarından komponent olaraq istifadə edəcək və daxili keçid və daxili servo siqnalına sahib olacaq.
Addım 10: Vivadoda test edin
Vivadoda sintez, icra və bitsream yazın. Hər hansı bir səhv mesajı ilə qarşılaşsanız, səhv yerini tapın və sonra verilən kodla müqayisə edin. Bütün bu işlər uğurla başa çatana qədər səhvlər üzərində işləyin.
Addım 11: Hardware Girişinin qurulması
Bu addımda, prototipimizdə istifadə etdiyimiz LED avadanlığı yaradacaqsınız. Servo istifadə edirsinizsə, doğru pinlər istifadə edildiyi müddətcə layihə hazır olmalıdır. LED istifadə edirsinizsə, aşağıdakı addımları yerinə yetirin.
Addım 12: Hazırlıq
Teli altı bərabər hissəyə kəsin. Hər bir telin uclarını kifayət qədər soyun ki, lehim yaransın. LEDləri, rezistorları və telləri üç qrupa ayırın. Lehimləmə dəmirini qızdırın.
Addım 13: Lehimləmə


68 ohm rezistorların hər birini müvafiq LED -in mənfi tərəfinə lehimləyin. LED -in pozitiv tərəfinə bir tel, başqa bir tel isə rezistorun tərəfinə apararaq lehimlənməyib. Yuxarıda göstərilən LED ziddiyyətlərindən üçü olmalıdır.
Addım 14: Final

Hər bir müsbət teli müvafiq PMOD pininə və hər bir mənfi bir PMOD pininə daxil edin. İsteğe bağlı olaraq zibil qutularını təmsil etmək və lehim qarışıqlığınızı gizlətmək üçün karton qutular əlavə edin. Tellər düzgün bir şəkildə bağlandıqda və kod səhvsiz lövhəyə düzgün yükləndikdə, maşın istədiyi kimi işləməlidir. Bir şey səhv olarsa, problemi həll etmək üçün əvvəlki addımlara qayıdın. Yeni "zibil sıralayıcı" ilə əylənin.
Tövsiyə:
CPE 133 İkili İkili Onlu Final Layihəsi: 5 Addım

CPE 133 Final Projesi İkili İkili: İkili Nömrələr rəqəmsal məntiq düşünərkən ağla gələn ilk şeylərdən biridir. Bununla birlikdə, İkili Nömrələr yeni başlayanlar üçün çətin bir anlayış ola bilər
Elektron sikkə sıralayıcı: 7 addım (şəkillərlə birlikdə)

Elektron Sikkə Sorteri: Uzun müddət əvvəl, hələ məktəbə getmək mümkün olanda, kifayət qədər sadə bir şəkildə işləyən bir cihaz hazırlamaq üçün maraqlı bir fikir ortaya qoyduq - lazımi miqdarda pul atdıqdan sonra xüsusi bir məhsul buraxacaq. Aça bilmirəm
Microbit ilə Rəng Sıralayıcı Layihəsi Necə Edilir ?: 4 Addım

Microbit ilə Rəng Ayırıcı Layihəsi Necə Edilir ?: Layihənin məqsədləri Proqramı yüklədikdən sonra, mikro: bit LED nöqtə matrisinin bir "ürək" göstərdiyini, servonun 90 ° başlatıldığını görə bilərik. Rəng sensörünə mavi və ya sarı rəngli əşyalar qoyduğumuz zaman, servo fərqli bucaqlara çevriləcək, bəzilərini fərqləndirəcək
M&M rəng sıralayıcı: 3 addım

M&M Color Sorter: Bu layihənin əvvəlində fərqli rəngli konfetləri ayrı bir qabda avtomatik olaraq səmərəli şəkildə sıralamaq üçün yola çıxdıq. Https://howtomechatronics.com/projects/arduino-col saytında bir yazı görəndə ilk olaraq bu fikirdən ilhamlandıq
CPE 133 Metronom: 3 addım

CPE 133 Metronomu: Cal Poly -dəki son layihəmiz üçün bir metronom adlanan bir temp tutma cihazı yaratdıq, musiqi və rəqəmsal dizayn marağı səbəbiylə bu layihəni seçdik. Kodumuzun hazırlanmasında kömək etmək üçün CPE 133 -dəki keçmiş laboratoriyalardan və birgə işlərə kömək etmək üçün onlayn dərslərimizdən istifadə etdik