İSMED Şeker Fabrikası Projesi ( FPGA ile yapıldı )

 2019 Yılının Aralık ayında bitirdiğim proje FPGA ile tamamlanmıştır. Bu proje amacı fabrikadaki şekerlerin paketlenmesi için kullanılmıştır. 



Şekil 1: Çalışma grafiği

Şekil1 de görüldüğü gibi start veriliğinde motor hareketi ile palet hareket edecek ve servo motor kol yardımı ile kutuları palete itecektir. palet yolunda bulunan proximity sensor ile kutu içinde ne kadar malzeme olmasını sayarak belirleyecektir. ( bu örnekte 3 şeker paketi olarak belirlendi ) Belirlenen sayı adedi kadar palet yardımı ile kutuya atıldığında başlangıç durumuna gelecektir


b1 : sayıcı proximity
b2 : servo motorunun palete atacağı şekerin o durumda olup olamaması durumunu gosteren proximity






Şekil 2 : Servo motorun çalışması için Pulse genişliği



Servo motor 20ms ( 50hz ) periyodunda çalışır. Bu 20ms periyotta 1 ms genişliğinde pulse uygulanırsa 0 derece , 1.5 ms için 90 derece , 2ms için ise 180 derece hareket eder. Bu bilgiyi FPGA programlarken kullanacağız.




Servo Motor Dönüş Hızı
Biz programımızı servo motorun bir tam devrini 5 ms'de tamamlayacak şekilde ayarladık. Programımızda
Motor hız(s) = ((dcycle_max- dcycle_min)*period) / duty_in denklemini kullanırsak,

Duty_in= ((150000-50000)*20 ms)/5 s= 400 olarak  hesaplarız.


•Kontrol sinyalimizin Duty Cycle'ı 1ms ile 3ms olması gerekecek. Bundan dolayı programımızda dcycle_max ile dcycle_min adında iki sabit tanımlayacağız


dcycle_max=Pulse genişliğimizin alacağı maksimum değeri gösterecek.
(3ms/clock period=3 ms/ 20 ns=150000)


dcycle_min=Pulse genişliğimizin alacağı minimum değeri gösterecek.
(1ms/clock period=1 ms/ 20 ns=50000)


Duty Cycle : Görev döngüsü Elektronikte sistemin aktif olduğu zaman süresinin toplam süreye olan oranıdır.








Şekil 3 Similasyon



VHDL Kodu :



















VHDL Test Kodu :





































Yorumlar

Bu blogdaki popüler yayınlar

STM32F4 Discovery İnterupt Buton ( STM32 CUBE MX / IDE ) ve ATOLİC

Analog PID ile Encoderlı Motorun Hız Kontrolu