1- Giriş:
Bu örnekte 4 adet servo motoru paralel olarak FPGA ile nasıl kontrol edebileceğimizi göreceğiz.
Servo motorların nasıl çalıştığını bilmiyorsanız sorun değil. Aşağıdaki makaleyi okumanızı tavsiye ederim.
http://www.elektroboard.com/v2/modules/smartsection/item.php?itemid=2
2- Uygulama:
4 servo motor için 4 tane farklı konum belirlenmiştir. Düğmelere basmak servo motorun önceden tanımlı bir yöne dönmesini sağlamaktadır. Herhangi bir düğmeye basılmadığında ise orta konuma gelmektedir. Aşağıda servo motorları paralel olarak kontrol eden kodu bulabilirsiniz:
- module servo_denetleyici(SAAT,SERVO1,SERVO2,SERVO3,SERVO4,DUGME1,DUGME2,DUGME3);
- input SAAT;
- output SERVO1;
- output SERVO2;
- output SERVO3;
- output SERVO4;
- input DUGME1;
- input DUGME2;
- input DUGME3;
- reg [30:0] sayac1;
- reg [30:0] sayac2;
- reg servom1;
- always @ (posedge SAAT) begin
- if(DUGME1) begin
- if(sayac1 < 50000) begin
- sayac1 <= sayac1 + 1;
- servom1 <= 1;
- end
- else if(sayac1 == 1000000) begin
- sayac1 <= 0;
- servom1 <= 0;
- end
- else begin
- sayac1 <= sayac1 + 1;
- servom1 <= 0;
- end
- end
- else if(DUGME2) begin
- if(sayac1 < 60000) begin
- sayac1 <= sayac1 + 1;
- servom1 <= 1;
- end
- else if(sayac1 == 1000000) begin
- sayac1 <= 0;
- servom1 <= 0;
- end
- else begin
- sayac1 <= sayac1 + 1;
- servom1 <= 0;
- end
- end
- else if(DUGME3) begin
- if(sayac1 < 100000) begin
- sayac1 <= sayac1 + 1;
- servom1 <= 1;
- end
- else if(sayac1 == 1000000) begin
- sayac1 <= 0;
- servom1 <= 0;
- end
- else begin
- sayac1 <= sayac1 + 1;
- servom1 <= 0;
- end
- end
- else begin
- if(sayac1 < 75000) begin
- sayac1 <= sayac1 + 1;
- servom1 <= 1;
- end
- else if(sayac1 == 1000000) begin
- sayac1 <= 0;
- servom1 <= 0;
- end
- else begin
- sayac1 <= sayac1 + 1;
- servom1 <= 0;
- end
- end
- end
- assign SERVO1 = servom1;
- assign SERVO2 = servom1;
- assign SERVO3 = servom1;
- assign SERVO4 = servom1;
- endmodule
3- Son:
Gördüğünüz gibi 4 adet servo motoru aynı yöne aynı anda döndürmek çok işlevsel değil. Aslında bu kodun yazılma amacı ileride Haktan Canlı arkadaşım ile yapacağım robot kol için bir temel oluşturmaktı. Robot kol uygulamasında servo motorların hareketi FPGA’de tanımladığım bir bellekteki pozisyonlara göre yapılacak. Robot kolu yaptığımızda sitemden paylaşacağım tabi. Umarım işinize yarar. İyi çalışmalar.