USB üzerinden 5 Servomotorun Kontrolü

Bu projemde yine USB üzerinden PIC18F4550’yi kontrol edeceğiz.
Projenin Video görüntüsünü bakıp kafamızda Projeyi ilk önce bir canlandıralım.

Düzeltme:Video’da yanlışlıkla 16F4550 diye geçmişim aslı 18F4550’dir.

Sonra Devreyi PIC18f4550 ile aşağıdaki gibi oluşturalım.

Devreyi tamamladıktan sonra PIC18F4550 ye şu CCS kodlarını derleyip .HEX dosyasını PIC18f4550’ye yazdırıyoruz.

USB_Konfigurasyon.h

#IFNDEF __USB_DESCRIPTORS__
 #DEFINE __USB_DESCRIPTORS__

#include

const char USB_CLASS_SPECIFIC_DESC[] = {
 6, 0, 255, // Usage Page = Vendor Defined
 9, 1, // Usage = IO device
 0xa1, 1, // Collection = Application
 0x19, 0, // Usage minimum
 0x29, 800, // Usage maximum

0x15, 0x00, // Logical minimum (-128)
 0x25, 0xFF, // Logical maximum (127)

0x75, 8, // Report size = 8 (bits)
 0x95, 64, // Report count = 16 bits (2 bytes)
 0x81, 2, // Input (Data, Var, Abs)
 0x19, 0, // Usage minimum
 0x29, 800, // Usage maximum
 0x75, 8, // Report size = 8 (bits)
 0x95, 64, // Report count = 16 bits (2 bytes)
 0x91, 2, // Output (Data, Var, Abs)
 0xc0 // End Collection
 };
 //if a class has an extra descriptor not part of the config descriptor,
 // this lookup table defines where to look for it in the const
 // USB_CLASS_SPECIFIC_DESC[] array.
 //first element is the config number (if your device has more than one config)
 //second element is which interface number
 //set element to 0xFFFF if this config/interface combo doesn't exist
 const int16 USB_CLASS_SPECIFIC_DESC_LOOKUP[USB_NUM_CONFIGURATIONS][1] =
 {
 //config 1
 //interface 0
 0
 };

//if a class has an extra descriptor not part of the config descriptor,
 // this lookup table defines the size of that descriptor.
 //first element is the config number (if your device has more than one config)
 //second element is which interface number
 //set element to 0xFFFF if this config/interface combo doesn't exist
 const int16 USB_CLASS_SPECIFIC_DESC_LOOKUP_SIZE[USB_NUM_CONFIGURATIONS][1] =
 {
 //config 1
 //interface 0
 32
 };
 //////////////////////////////////////////////////////////////////
 ///
 /// start config descriptor
 /// right now we only support one configuration descriptor.
 /// the config, interface, class, and endpoint goes into this array.
 ///
 //////////////////////////////////////////////////////////////////

#DEFINE USB_TOTAL_CONFIG_LEN 41 //config+interface+class+endpoint+endpoint (2 endpoints)

const char USB_CONFIG_DESC[] = {
 //IN ORDER TO COMPLY WITH WINDOWS HOSTS, THE ORDER OF THIS ARRAY MUST BE:
 // config(s)
 // interface(s)
 // class(es)
 // endpoint(s)

//config_descriptor for config index 1
 USB_DESC_CONFIG_LEN, //length of descriptor size ==1
 USB_DESC_CONFIG_TYPE, //constant CONFIGURATION (CONFIGURATION 0x02) ==2
 USB_TOTAL_CONFIG_LEN,0, //size of all data returned for this config ==3,4
 1, //number of interfaces this device supports ==5
 0x01, //identifier for this configuration. (IF we had more than one configurations) ==6
 0x00, //index of string descriptor for this configuration ==7
 0x80, //bit 6=1 if self powered, bit 5=1 if supports remote wakeup (we don't), bits 0-4 unused and bit7=1 ==8
 50, //maximum bus power required (maximum milliamperes/2) (100mA)

//interface descriptor 1
 USB_DESC_INTERFACE_LEN, //length of descriptor =10
 USB_DESC_INTERFACE_TYPE, //constant INTERFACE (INTERFACE 0x04) =11
 0x00, //number defining this interface (IF we had more than one interface) ==12
 0x00, //alternate setting ==13
 2, //number of endpoins, except 0 (pic167xx has 3, but we dont have to use all). ==14
 0x03, //class code, 03 = HID ==15
 0x00, //subclass code //boot ==16
 0x00, //protocol code ==17
 0x00, //index of string descriptor for interface ==18

//class descriptor 1 (HID)
 USB_DESC_CLASS_LEN, //length of descriptor ==19
 USB_DESC_CLASS_TYPE, //dscriptor type (0x21 == HID) ==20
 0x11,0x01, //hid class release number (1.0) (try 1.10) ==21,22
 0x00, //localized country code (0 = none) ==23
 0x01, //number of hid class descrptors that follow (1) ==24
 0x22, //report descriptor type (0x22 == HID) ==25
 USB_CLASS_SPECIFIC_DESC_LOOKUP_SIZE[0][0], 0x00, //length of report descriptor ==26,27

//endpoint descriptor
 USB_DESC_ENDPOINT_LEN, //length of descriptor ==28
 USB_DESC_ENDPOINT_TYPE, //constant ENDPOINT (ENDPOINT 0x05) ==29
 0x81, //endpoint number and direction (0x81 = EP1 IN) ==30
 0x03, //transfer type supported (0x03 is interrupt) ==31
 USB_EP1_TX_SIZE,0x00, //maximum packet size supported ==32,33
 10, //polling interval, in ms. (cant be smaller than 10) ==34

//endpoint descriptor
 USB_DESC_ENDPOINT_LEN, //length of descriptor ==35
 USB_DESC_ENDPOINT_TYPE, //constant ENDPOINT (ENDPOINT 0x05) ==36
 0x01, //endpoint number and direction (0x01 = EP1 OUT) ==37
 0x03, //transfer type supported (0x03 is interrupt) ==38
 USB_EP1_RX_SIZE,0x00, //maximum packet size supported ==39,40
 10 //polling interval, in ms. (cant be smaller than 10) ==41
 };

//****** BEGIN CONFIG DESCRIPTOR LOOKUP TABLES ********
 //since we can't make pointers to constants in certain pic16s, this is an offset table to find
 // a specific descriptor in the above table.

//NOTE: DO TO A LIMITATION OF THE CCS CODE, ALL HID INTERFACES MUST START AT 0 AND BE SEQUENTIAL
 // FOR EXAMPLE, IF YOU HAVE 2 HID INTERFACES THEY MUST BE INTERFACE 0 AND INTERFACE 1
 #define USB_NUM_HID_INTERFACES 1

//the maximum number of interfaces seen on any config
 //for example, if config 1 has 1 interface and config 2 has 2 interfaces you must define this as 2
 #define USB_MAX_NUM_INTERFACES 1

//define how many interfaces there are per config. [0] is the first config, etc.
 const char USB_NUM_INTERFACES[USB_NUM_CONFIGURATIONS]={1};

//define where to find class descriptors
 //first dimension is the config number
 //second dimension specifies which interface
 //last dimension specifies which class in this interface to get, but most will only have 1 class per interface
 //if a class descriptor is not valid, set the value to 0xFFFF
 const int16 USB_CLASS_DESCRIPTORS[USB_NUM_CONFIGURATIONS][1][1]=
 {
 //config 1
 //interface 0
 //class 1
 18
 };

#if (sizeof(USB_CONFIG_DESC) != USB_TOTAL_CONFIG_LEN)
 #error USB_TOTAL_CONFIG_LEN not defined correctly
 #endif
 //////////////////////////////////////////////////////////////////
 ///
 /// start device descriptors
 ///
 //////////////////////////////////////////////////////////////////

const char USB_DEVICE_DESC[USB_DESC_DEVICE_LEN] ={
 //starts of with device configuration. only one possible
 USB_DESC_DEVICE_LEN, //the length of this report ==1
 0x01, //the constant DEVICE (DEVICE 0x01) ==2
 0x00,0x02, //usb version in bcd
 0x00, //class code ==5
 0x00, //subclass code ==6
 0x00, //protocol code ==7
 USB_MAX_EP0_PACKET_LENGTH, //max packet size for endpoint 0. (SLOW SPEED SPECIFIES 8) ==8
 0x11,0x11, //vendor id (0x04D8 is Microchip, or is it 0x0461 ??)
 0x11,0x11, //product id ==11,12 //don't use ffff says usb-by-example guy. oops
 0x00,0x01, //device release number ==13,14
 0x01, //index of string description of manufacturer. therefore we point to string_1 array (see below) ==15
 0x02, //index of string descriptor of the product ==16
 0x00, //index of string descriptor of serial number ==17
 USB_NUM_CONFIGURATIONS //number of possible configurations ==18
 };
 //////////////////////////////////////////////////////////////////
 ///
 /// start string descriptors
 /// String 0 is a special language string, and must be defined. People in U.S.A. can leave this alone.
 ///
 /// You must define the length else get_next_string_character() will not see the string
 /// Current code only supports 10 strings (0 thru 9)
 ///
 //////////////////////////////////////////////////////////////////

//the offset of the starting location of each string. offset[0] is the start of string 0, offset[1] is the start of string 1, etc.
 char USB_STRING_DESC_OFFSET[]={0,4,12};

char const USB_STRING_DESC[]={
 //string 0
 4, //length of string index
 USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
 0x09,0x04, //Microsoft Defined for US-English
 //string 1
 8, //length of string index
 USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
 't',0,
 'm',0,
 'c',0,
 //string 2
 58, //length of string index
 USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
 'U',0,
 'g',0,
 'u',0,
 'r',0,
 ' ',0,
 'Y',0,
 'a',0,
 'l',0,
 'c',0,
 'i',0,
 'n',0,
 ' ',0,
 'w',0,
 'w',0,
 'w',0,
 '.',0,
 'u',0,
 'g',0,
 'u',0,
 'r',0,
 'y',0,
 'a',0,
 'l',0,
 'c',0,
 'i',0,
 'n',0,
 '.',0,
 'd',0,
 'e',0,
 ' ',0
 };
 #ENDIF
 [/code]

Servo_USB.c

[code]
 #include <18F4550.h>
 #device ADC=10
 #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL2,CPUDIV1,VREGEN,NOBROWNOUT // 8MHZ
 #use delay(clock=48000000)
 #byte PORTA = 0xF80
 #byte PORTB = 0xF81
 #byte PORTC = 0xF82
 #byte PORTD = 0xF83
 #byte PORTE = 0xF84

/////////////////////////////////////////////////////////////////////////////
 //
 // Ugur Yalcin tarafindan hazirlanmistir.
 //
 //
 //
 /////////////////////////////////////////////////////////////////////////////
 #define USB_HID_DEVICE TRUE
 #define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT //Ucnokta1'de Kesme transferi aktif
 #define USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT
 #define USB_EP1_TX_SIZE 64 //Ucnokta1 için maksimum alýnacak ve gonderilecek
 #define USB_EP1_RX_SIZE 64 //veri boyutu (64 byte)

#include <pic18_usb.h>
 #include <USB_Konfigurasyon.h>
 #include <usb.c>

//#use fast_io(A)
 //#use fast_io(B)
 //#use fast_io(C)
 //#use fast_io(D)
 //#use fast_io(E)

//Servolarin baglanacagi Pinler
 #bit servo_00 = PORTB.0
 #bit servo_01 = PORTB.1
 #bit servo_02 = PORTB.2
 #bit servo_03 = PORTB.3
 #bit servo_04 = PORTB.4

#define i_usb recibe[0] //
 #define pos_usb recibe[1] //
 #define n 5 // Servo Motor sayisini tutacak olan degisken

#define max_theCount 200// 200*100us=20ms
 #define derecha 25// 25*100us=2,5ms
 #define centro 15// 15*100us=1,5ms
 #define izquierda 5// 5*100us =0,5ms

#define val_timer0 127

int8 theCount=1;
 int8 duty[n];

#INT_TIMER0
 void isr_timer0(){
 delay_cycles(5);
 if (duty[0] >= theCount)// Cada 100us llega aqui de forma cíclica
 {
 servo_00=1;
 }
 else
 {
 servo_00=0;
 #asm
 nop
 #endasm
 }

if (duty[1] >= theCount)
 {
 servo_01=1;
 }
 else
 {
 servo_01=0;
 #asm
 nop
 #endasm
 }

if (duty[2] >= theCount)
 {
 servo_02=1;
 }
 else
 {
 servo_02=0;
 #asm
 nop
 #endasm
 }

if (duty[3] >= theCount)
 {
 servo_03=1;
 }
 else
 {
 servo_03=0;
 #asm
 nop
 #endasm
 }

if (duty[4] >= theCount)
 {
 servo_04=1;
 }
 else
 {
 servo_04=0;
 #asm
 nop
 #endasm
 }
 theCount=theCount+1;
 if (theCount>max_theCount)
 {
 theCount=1;
 }
 else
 {
 delay_us(1);
 #asm
 nop
 #endasm
 }

set_timer0(val_timer0);
 }

/////////////////////////////////////// PRINCIPAL /////////////////////////////////////

void main()
 {
 int k;
 int8 i=0;// es el índice exclusivo de duty[] en la recepción serial
 int1 band=0;
 int8 recibe[2];// Buffer de recepción vía usb
 //int8 envia[2];// Habilitar en caso de necesitar

set_tris_b(0x00);
 set_tris_c(0b10000000);
 set_tris_d(0x00);

PORTB=0x00;
 PORTD=0x00;

port_b_pullups(FALSE);

for(k=0;k<=(n-1);k++)
 duty[k]=centro;//

setup_adc_ports(NO_ANALOGS);
 setup_adc(ADC_OFF);

setup_timer_0(RTCC_DIV_8 | RTCC_8_BIT);

set_timer0(val_timer0);

enable_interrupts(INT_TIMER0);
 enable_interrupts(GLOBAL);

usb_init(); //USB hazirlaniyor
 usb_task();
 output_high(pin_d1); //USB baglantisinin hazirlandigini LED yakip yakip göster

usb_wait_for_enumeration();//esperamos hasta que el PicUSB sea configurado por el host

while (TRUE)
 {
 if(usb_enumerated())
 {
 output_low(pin_d1); // USB baglantisinin kuruldugunu pin_d1 bitini low yap
 output_high(pin_d0); // Sonrada pin_d0 bitini high yapip göster

// USB den gelen veri aliniyor
 if (usb_kbhit(1))
 {
 usb_get_packet(1, recibe, 2);
 duty[i_usb]=pos_usb;
 output_high(pin_d1);
 delay_ms(20);
 output_low(pin_d1);
 }
 }
 }
 }

 

PIC18F4550 Programlama işleminden sonra 5 tane Servomortoru Devremize bağlayıp Donanım kısmını bitiriyoruz.

Evet şimdi geldi sıra Bu Devremizi USB üzerinden Kontrol edecek yazılım kısmına.

Bunun icin C# da aşağıda görülen uygulamayı yazdım.

 

C# ile yazdığım bu uygulamada umng.dll kütüphanesini Projeme Refernce edip, bu umng.dll dosyasındaki Siniflar ve o siniflara ait metodlar ile USB’ye veri gönderip veri almayi sağladım.

Not:isteyen olursa C# kaynak kodlarını paylaşabilirim.

76 Antworten auf „USB üzerinden 5 Servomotorun Kontrolü“

  1. selam, çok hoş bir proje. İsteyene c# kaynak kodlarını paylaşabilirim demişsiniz. Acaba e-mailime yollamanız mümkün müdür?

    Teşekkürler

  2. Emeğinize sağlık. kontrol harika olmuş. c# kaynak kodlarını gönderirmisiniz.

    Devreyi tamamladıktan sonra PIC18F4550 ye şu CCS kodlarını derleyip .HEX dosyasını PIC18f4550′ye yazdırıyoruz. demişsiniz.

    USB_Konfigurasyon.h
    Servo_USB.c ne işe yarıyor. farklı şeylermi. bunları nerelerde kullanacağım.?

  3. CCS derleyicisi ile PIC’e yaptirmak istedigimiz islem komutlarini yazip derleyip .HEX haline getiriyoruz.Sonra bu .HEX haline gelmis dosyayi PIC’e bir yazilim ve bir pic Programmer vasitasiyla kayit ediyoruz.
    USB_Konfigurasyon.h dosyasi, Servo_USB.c dosyasinina yardimci bir dosya.Her ikiside birlestirilebilinir ama ayri ayri olmasi Kod karmasiligini ortadan kaldirmak icin.
    Bu iki Dosyada derleme zamaninda ayni Klosör icinde olacak.CCS derleyici ile Servo_USB.c dosyasini derlerken bu USB_Konfigurasyon.h dosyasida yaninda olacak degilse derleyici hata verir.Bu dosyalari derleme icin kullanacaksin yani derleyip Kodlarimizi .HEX haline getirecegiz…
    C# kodlarinida gönderidm bilginize..

  4. Kaynak Kodu için teşekkür ederim… Ben bu kaynak kodunu 18F2550 ye uygulayacam.
    Sizin bu siteye koyduğunuz kodlardada değişiklik yapmam lazım. Ama derlemeye çalıştığım Servo_USB.c kodlarının 23,24,25. satırlardaki include satırları boş olduğu için usb_init() gibi fonksiyonlarda hata veriyor. Ben usb.h olarak bir tane ekleyip hatanın birisinden kurtuldum ancak diğerlerini bulamadım. USB_Konfigurasyon.h dosyasını Servo_USB.c dosyasının nasıl kullandığını anlamadım.
    Birde şu sorum olacak. Biz HEX dosyasını pic içerisine yazdırdığımızda bilgisayarda driver olarak ne kullanacaz? Teşekkürler…

  5. Kusura kalmayin belirttiginiz satirlar neden eksik cikmis bende anlamadim.
    Neyse o yukardaki satirlari düzelttim.
    USB_Konfigurasyon.h dosyasını Servo_USB.c dosyasının nasıl kullandığını anlamadım demissiniz.
    Satirlar yukarda eksik oldugu icin tabiki fark edemediniz.
    Servo_USB.c icinde USB_Konfigurasyon.h include edilmis durumda.Yani Servo_USB.c derlenirken USB_Konfigurasyon.h dosyasi icindeki kodlardanda yararlaniyor !!

    HEX dosyasini PIC’e yazdiginizda PC ile USB baglantisi kurdugunuzda PC(Windows) otamatik taniyacaktir.Ayreten birsey yapmaniza gerek yok !

  6. Merhabalar Uğur Bey,

    Tez için bilgisayar üzerinden hexapod (18 servo motor) yönetmem gerekiyor. Devreyi kurdum ve kodlarını yazdım ancak bilgisayar üzerinden yönetimi ile ilgili kısımda kaldım. C# ile yazdığınız uygulamanın kaynak kodlarını gönderebilirseniz çok sevinirim. Kodları kendime göre tekrar yazarak sistemi çalışır hale getirmem gerekiyor. projenizin umng.dll dosyasının kullanımı için çok iyi örnek olacağını düşünüyorum.

    Teşekkürler.

  7. Hexapod ‚u PC’denmi kontrol etmek istiyorsunuz?
    Kaynak Dosyalarini gönderdim, isinize yararsa ne mutlu bana.
    kolay gelsin…

  8. uğur abi bu programın uygulamasını yapacagım bana tüm dosyalarını gönderirmisin lütfenn.ödev olarak aldım bu uygulamayı yardımcı olursan sevinirim

  9. Teşekkürler kodlar için. Benim prjede anlamadığım tekyer şurası kaldı. Siz söylemişsiniz bilgisayara takınca direkt tanıyor diye. Ancak bu tanıma işlemi sırasında kullanılan driver internette hazırmı bulunuyor yoksa bunuda sizmi yazdınız. Herhangi bir driver dosyası göremiyorum. Ayrıca ben bu driveri 64 bit windows 7 işletim sisteminde çalıştıracam çalışabilecekmi daha projeyi denemedim. Teşekkürler. Çalışmalarınızda başarılar..

  10. MErhaba,
    çalışmanız ve paylaşımınız için teşekkürler.Ben daha önce paylaşmız oldugunuz c# kodlarını inceledim.Ordada aşagıdaki satırların ne iş yaptıgını ve nasıl değiştirebilcegimizi anlayamadım.

    short VendorID = short.Parse(„1111“, NumberStyles.HexNumber);
    short ProductID = short.Parse(„1111“, NumberStyles.HexNumber);

    Bunlar hakkında bilgi verebilirmisiiniz?.Ayrıca bu çalışmanızdaki koaynak kodlarıda gönderebilirseniz devinirm.teşekkürler.

    1. konfigirasyon.h dosyasiina bakarsaniz orada

      0x11,0x11, //vendor id
      0x11,0x11, //product id
      vendor ve produckt id’lerini tanimladigimiz satirlari görürsünüz.

      Bu konfigrasyon.h dosyasinda belirledigimiz adresleri C# icindede
      short VendorID = short.Parse(“1111″, NumberStyles.HexNumber);
      short ProductID = short.Parse(“1111″, NumberStyles.HexNumber);

      belirtiyoruzki USB ye productId ve VendorID adresli alet varmi kontrol ediyoruz.Eger böyle bir cihaz takiliysa diger methodlarla baglaniyoruz.
      Takiliysa baglanti Methodlarimiz falan calisiyor…!

  11. Hocam paylaşımlarınız iiçin çok tşk ederiz. Sizin gibi ufku açık insanların sayesinde birşeyler öğrene biliyoruz. Eğer mümkünse sizden bir ricam olacak. C# kodlarını istememim yani sıra bu konuda benim gibi yeni olan arkadaşları eğitmek ister misiniz? Eğitim adı altında bölüm oluşturup, neyi nasıl izlememiz ve öğrenmemiz gerektiğini anlatır mısınız? Belki de ekip oluşturup inanılmaz şeyler çıkartabiliriz!!! Sizin fikriniz nedir?

  12. Seyfi kardesim yorumun icin tesekkürler.
    Ben bu islerle Hobi olarak ilgileniyorum esasen ben bir Fabrikada isciyim bunu acikca belirteyim.
    Yani vardiyeli calisan bir Isciyim.
    Egitmek gibi bir kelime bana cok uzak , ziraa kendimi egitecek kadar yeterli görmüyorum.
    Bir ikinciside buraya pek zaman ayiramam.
    Ama tecrübelerimi , bilgilerimi elimden geldigince buraya aktarmaya calisiyorum.Insallah sen ve seningibilerinin isine yararsa bu beni sevindirir.
    Bu projenin C# kodlarini mailine gönderdim.
    saygilarimla

  13. Sizi anlıyorum. Tekrar tekrar çok teşekkür ederim. İnannın sizin için az bir zaman olarak nitelendirdiğiniz zaman, ben ve benim gibi arkadaşlar için ay ifadesine denk gelmektedir. Bu konularda bilgisini paylaşan insanlar nadirdir. Oysa ki herşey paylaşımla çoğalmaktadır. Emin olun hangi konumda ve tecrübede çalışıyor olursanız olun, Bizlerin ustadı konumunuzdasınız. esenliklerle kalınız…

  14. sayın uğur yalçın
    bu proje de diğer projeleriniz gibi çok güzel c# ile yazdığınız arayüz programının kaynak kodlarını
    e-mail adresime gönderirseniz çok memnun olurum saygılarımla
    kamilsorhan@mynet.com

  15. Kardeş. diğer projeyi gönderdin senden Allah razı olsun.Bu projenin PİC c ve C# kodlarını projeyi bir bütün halinde gönderebilirmisin.

  16. sayın uğur bey,
    projenizin kaynak kodlarını aldım çok teşekkür ederim .projeyi henüz denemedim ama bu kodların
    usb konusunu öğrenebilmem için çok faydalı olacağını düşünüyorum.

  17. hocam çalıştığınız bu proje benim bu ara yapmaya çalıştığım projeye yakın ama pıc,c# ve devreyi birleştirme usb ile iletişim konusunda araştırıyorum ama ilerleyemedim bu konuda.Yapacağım proje usbden dc motor kontrolü,bu konuda bana yardımcı olursanız en azından elinizde olan proje kodlarını gönderirseniz sevinirim.özellikle elektronik kısmında devreyi oluşturma konusunda yardım edebilir misiniz, şimdiden çok teşekkür ederim

  18. herşeyden önce paylaşımlarınız için teşekkür ederim ve çalışmalarınızda başarılar dilerim acaba yazılımsal olarak timerlarla 8 kanal pwm üretebilirmiyiz hepsinin duty degeri farklı olarak ayarlanabilecek ben mantıgı tam kuramadım acıkcası yardımcı olursanız sevinirim.Cevaplarınızı bekliyorum…

  19. iyi günler şu anda usb den dc motor kontrolü yapan bi proje hazırlamaya çalışıyorum,c# kodlarını ve devresini gönderebilir misiniz

  20. bizim gibi ingilizce sıkıntısı olan ve gerekli kaynakları internet deryasında bulamayan bulsada anlayamayanlara yardımcı olduğunuz için sizden Allah razı olsun. Kaynak kodlarınızı paylaşmanız çok güzel. bana bir kod öğretenin bin yıl kölesi olurum desem yalan olur ama bana bir kod öğretenin duacısı olurum. elinizde pc den pice bağlı lcd ye yazı, sayı gönderen ve picten okuduğumuz analog yada port giriş değerlerini pc de gösteren projeniz varsa onuda paylaşırsanız çok memnun olurum. Allah Resulü (sav), “faydası olmayan ilimden Allah’a sığınırım“ buyurmuştur. Öğrendiği bilginin insana faydası olmalıdır. Bilgi eyleme, aksiyona dönüşmelidir. İnsan öğrendiği güzel bilgileri hem kendisi yaşamalı, hem de başkalarına da öğretmelidir. Bilgi (ilim) ancak o zaman anlam ve değer kazanır.
    İnsan öğrendiği bilgiyi başkalarına öğretmesinin en etkili ve en güzel yolu ise, yaşayarak, güzel ahlakı lisan-ı hali yani hal, tavır, söz ve davranışları ile anlatmasıdır.
    Allah Resulü bize ömür boyu sürekli öğretmeyi emretmenin yanı sıra; aynı zamanda sürekli öğretmeyi de emretmiştir. Öğretme ise iki şekilde olacaktır. 1 anlatmak ile 2- yaşayarak, hal lisansı ile öğretmek.
    İlim tahsil etmenin faziletleri gibi, ilim öğretmenin faziletine dair de çok büyük müjdeleri vardır Efendimizin (s.a.v.) : “Kıyamet günü, alimlerin mürekkebiyle, şehitlerin kanı tartılır. Alimlerin mürekkebi, şehitlerin kanından üstün gelir.” (keşfül-Hafa,2:3281
    Bir Hadis-i Şerifte;“ilim öğreten ve öğrenen, aynı sevabı kazanırlar .” (Keşfül-Hafa 2:1756) buyuran Allah’ın Rasulü (s.a.v.), başka bir Hadis-i Şeriflerin de de; “Ya ilim öğreten, ya ilim öğrenen, ya dinleyen veya bunları seven ol. Sakın beşincisi olma! Yoksa helak olursun.” buyurmaktadır. (Kefül-Hafa 1:437)
    İlim öğrenmek ve ilim öğretmenin faziletleri hakkında Peygamber Efendimizin, sayılamayacak kadar çok hadisleri ve müjdeleri vardır. Efendimiz (s.a.v.), bize ömür boyunca sürekli öğrenen ve sürekli öğreten olmamızı emretmektedir.

  21. Uğur Hocam. Gerçekten yapmış olduğunuz uygulamalar takdire şayan .. sizi bu konuda tebrik ederim projenin c# kodlarınızıda paylaşmanızı temenni ederim… veya mail adresime göndere bilirmisiniz size ricam.. çalışmalarınızın devamını dilerim ….

  22. Selamlar Uğur;

    Öncelikle eline sağlık diyorum.Projenin c# kodlarını benimle paylaşabilir misin ?

    İyi çalışmalar..

  23. Öncelikle paylaştığınız bilgiler için teşekkür etmek istiyorum.
    C# ile USB üzerinden haberleşen kaynak kodları da göndermeniz mümkün mü?

  24. Yapmakta olduğum hobi projem için çok faydalı bir kaynak oldu, benzer bir servo kontrolü yapmam gerekiyordu ve PWM pinlerimi başka amaçlarla kullandığımdan servoyu timer 1 ile nasıl süreceğim konusunda emin değildim çok teşekkürler.

    + Ek olarak mümkünse C# kaynak kodunuzu da mail adresime gönderebilirseniz çok memnun olurum.
    Teşekkürler

  25. ugur yalçın abim bilişim okuyorum ve bilişim teklonaji temellerinden proje ödevi aldım öretmenim bir robot yapmamı istedi eyer beyenirsede yarışmaya sokucam dedii e-posta adresimi yollardım ama kulanmıyorum size facebook linkimi yollim eklerseniz büyük iyilik yapmış olursunuz şimdiden teşekkürler

    http://www.facebook.com/cengizz6

  26. Merhabalar Uğur Hocam;

    Bende 18f4550 ile bir veri toplama kartı yaptım. USB programı TMCONE ve driver usbapi.dll
    Bilgisayara sürekli olarak USB üzerinden veri alıyoruz. Yalnız devre sıkıntısız çalıştığı 5-6 haftanın sonunda bilgisayarın aygıt yöneticisi cihazı görmez oluyor. Sıkıntı donanımsal mı yazılımsal mı veya bir çakışma mı meydana geliyorda böyle oluyor çok anlayamadım. Sizin bu konuda bir tahmininiz var mı acaba. Birde yukarıdaki projeniz çok güzel olmuş. Banada projenizi bütün halde gönderebilirseniz. Programa kendi kodlarımızı gömerek yukarıda bahsettiğim skıntıyı belki giderebiliriz.
    İyi çalışmalar.

  27. Projenizi izledim bende bu işlerle amotör olarak ilgileniyorum. C# kaynak kodlarını gönderirseniz menmun olacağım
    Selamlar

  28. Çok güzel bir paylaşım olmuş.Teşekkürler.
    Mümkünse benim mail adresimede kaynak kodları gönderebilirmisiniz ?

  29. MRB. c# kodunda umng.dll okuma işlemini nasıl gerçekleştirdiniz. veri gönderebiliyorum fakat okuma işleminde hata veriyor bu işlemi nasıl gerçekleştirdiniz.

    1. Veri okumak icin yine veri gönderiyorum PIC’e.
      Bu veriyi alan PIC, oda PC’ye veri gönderiyor.PC’ye gelen veriyi tekrar C‘ icinde okuma metodu ile alip istedigim bir Texbox veya label icinde gösteriyorum.
      Mantik bu…

  30. İyi günler, iyi çalışmalar;

    Tebrik ediyorum güzel bir çalışma olmuş. Rica etsem gereken kodları bana da gönderebilir misiniz ?

    Teşekkür ederim.

  31. Merhabalar benimde proje konum bu fakat hiçbirşeyi bilmiyorum desem yeridir bana tüm dosyaları ornek olarak gonderebilirmisiniz?tesekkur ederim şimdiden.

  32. Hocam öncelikle merhabalar.Mühendislik son sınıf öğrencisiyim ve bu dönem sonu bitirme projem var.Bitirme projemde usb’den radyo frekans kontrollü bir robot yapacağım.Usb’den kontrol hakkında hiç bir bilgim yok.Makalelerinizi inceledim.Gerçekten çok başarılı.C# ile usb’den çıkış almam konusunda yardımcı olabilirmisiniz? Zaman ayıramazsanız da elinizde hazır bununla ilgili c# ile yazılmış bir arayüz varsa paylaşabilirmisiniz? Şimdiden teşekkürler.

  33. Uğur hocam merhabalar, programı derleyip HEX dosyasını 18f4550 ‚ye yazdırdığımda ve bilgisayara bağladığımda windows „bilinmeyen aygıt“ olarak algılıyor. vendor ID ve product ID 0x00 olarak

    1. Yaptiginiz devrede muhakkak birseyler eksiktir.
      Kondonsatörler uygun degildir, yada Kullandigin Kristal kod icindeki deger ile uygun degildir.

  34. Arkadaslar Dosyalari herkese göndermem imkansiz.
    Diger örneklerede baktiysaniz herkes Kodlari istiyor, herkese göndermem imkaniz, gönderdigim kisilerde diger arkadaslara gönderirlerse sevinirim.

  35. Merhabalar, öncelikle soruma vermiş olduğunuz cevap için teşekkür ederim. Dediğiniz gibi XTL frekansını hatalı seçmişim. Vaktinizi alacağım ama bir sorum daha var. PİC’e veri yazmada hiçbir problem yok. Ancak veri okurken bazen hata veriyor. Kararsız çalışıyor. Bilgisayar tarafında C++ kullandım. Ve programda hata olmadığını tahmin ediyorum. Acaba yine bağlantılarımda mı hata vardır dersiniz? Devre henüz board üzerinde ve extra bir güç kaynağı kullanmadım. İdeal olmayan bağlantılarda gerilim çok fazla düştüğü için mi yazma bazen başarısız oluyor dersiniz? Verdiğiniz cevap için şimdiden çok teşekkürler…

  36. Merhabalar hocam, çalışmalarınız gerçekten çok iyi. Ben bilgisayar proramcılığı okuyan bir öğrenciyim. Ancak Proje ödevi için hocamız bana alanım dışında bir ödev verdi. pic16f877 kullanarak motor kontrolü yapmam gerekiyor. USB üzerinden ve C# kullanmam gerekiyor. C# konusunda iyiyinm ancak USB port kontrolü konusunda pek bir bilgim yok. Ayrıca pic programayı da yeni yeni öğrenmeye başladım. Proje ödevim konusunda yardımcı olursanız çok sevinirim. Bana mail atarak ulaşırsanız çok iyi olur. Şimdiden teşekkürler…

  37. Merhaba Uğur Hocam.. Çalışmalarınızı büyük bir keyifle okudum. Bende pic 16f877 ile servo kontrolü ile az çok uğraşıyorum. Hocam CCS C ile usb port & pic uygulamalarını adım adım anlatan bir bölüm yaparsanız gerçekten güzel bir bilgi kaynağı olacağı inancındayım. Hocam bu servoları bilgisayar kullanmadan direk pic ile Usb Playstation joyistick üzerinden kontol etmek için ne yapmalıyız? Yani USB joyistick ile (analog veya tuşlarla farketmez) pic e komut yollayıp servoları tek hat üzerinden kontrolünü nasıl yaparız. You tube ta gördüm bir brezilyalı vatandaş yapmış gayet güzel çalışıyor. videoda görebilirsiniz.

    http://www.youtube.com/watch?v=t6kjEReuI2s

    Hocam eğer bu devrenin C# kodlarını da gönderirseniz bu şekilde de denemeyi düşünüyorum. İlginiz için çok teşekkür ederim.

  38. Merhaba uğur hocam. gerçekten tam aradığım bir proje çalışması. bende servo motor kontrolünü pic üzerinden yapıyorum. Bilgisayar kontollü usb üzerinden çalışmalarada ağırlık vermeyi düşünürken sizin sitenizi gördüm. Emeğinize sağlık. Hocam rica etsem c# kodlarını bana yollarmısınız. İlginiz için teşekkür ederim

  39. merhaba uğur abi

    bu gerçekten çok güzel bir proje yapmak istiyorum bir sorum olacaktı bu projedeki servo motor sayısını nasıl arttırabiliriz

  40. Uğur Bey merhaba,
    Led için olan devrenizi denedim ancak çalıştıramadım. Dosyada bulunan şema ek olarak 1 numaralı pine 10k 11 31 uçlarına + 12 32 uçlarına gnd ve 18 numaraya 470uf bağladım. Ama pic bir türlü donanımlarda görünmüyor. eksik yada yanlış yaptığım birşey mi var yardımcı olabilir misiniz? teşekkür ederim iyi çalışmalar

    1. Belki Crytsal takili bacaklarda bir hata yapiyor yada ordaki Kondenstorlerde bir yanlislik vardir.Birde onlari kontrol edin!!

  41. Hocam öncelikle merhaba.Sizden 18f4550 ile ilgili bilgi almak istiyorum.En basit led uygulamasını ISIS ta çalıştırıyorum çalışıyor fakat breadboard üzerinde deniyorum olmuyor Pice programı atıyorum okuyorum görüyor problem yok ben bu işi nasıl yapacağım hangi bacaklara ne bağlayacağım.11-12-31-32. bacaklar VDD ve VSS görünüyor herşeyi denedim picin bozuk olma ihtimali var mı bilemiyorum bunu nasıl anlarım ne yapmama gerekiyor yardımcı olursanız sevinirim.

  42. hocam allah razı olsun öncelikle
    hocam merhaba c# kodlarını alabilirmiyiz acaba birde proton ile nasıl yazdırabilirz bu hexi yada yazılmıyorsa adımları yazarmısnız programlarla bitirme projem usb ile step motor kontrolü şimdiden teşekkürler

  43. hocam bu guzel projelerle bizlere çok yardimci oluyorsunuz oncelikle tesekkurler.projeyle ilgili tüm kodları gonderebilir misiniz.projemize çok yarari olacak.iyi calismalar

  44. Uğur Bey merhaba, usb handshaking ve read/write data kodunu gönderebilir misiniz, projenize hayran kaldım. Çok teşekkürler şimdiden.

  45. hocam bu devreyi bana satabilirmisiniz veya ne kadara satarsınız eğerki satmıyorsanızda bana bu projenin detaylı şemasını verebilirmisiniz devre konfigürasyonu ile hocam lütfen acil cevap bekliyorum çok lazım…

  46. MERHABALAR HOCAM KAYNAK KODUNU VE USB_Konfigurasyon.h DERLEDİĞİMDE KOMPLE HATA VERİYOR KULLANDIĞIM COMPİLER CCS COMPİLER 5V MÜMKÜNSE ÇALIŞAN KAYNAK KODLARINI EMAİLİME ATA BİLİR MİSİNİZ ŞİMDİDEN TEŞEKKÜRLER

  47. Çok güzel bir çalışma olmuş.C# kaynak kodlarını mail adresime gönderebilir misiniz?
    Teşekkürler

  48. Sayın hocam kaynak kodları gönderebilirseniz,öğrencilerimle yapacağımız proje için çok faydalı olacaktır.Şimdiden saygılar sunuyorum.

  49. merhabalar
    bu projeyi bende yapmak istiyorum
    18f877 yi kullanarak yapılabilir mi
    birde devreyi bilgisayar ortamında nasıl çalıştırabilrim
    yani proteus da simulasyonunu çalıştırp c# da projeyi derleyerek tamamen sanal ortamda çalışıp çalışmadığını kontrol edebilir miyim
    bu konuda nasıl bir yol izlemem gerekiyor. ilgililerin ve bilgililerin yorumlarını bekliyorum

  50. merhabalar hocam
    projenizi çok beğendim
    bunu yapmak ve bilgisayarda uygulamak istiyorum
    c proteus ve c# dosyalarını gönderebileceğinizi belirtmişsiniz
    rica etsem
    dursun_aydin55@hotmail.com adresine gönderir misiniz
    şimdiden teşekkürler

  51. hocam bu güzel calışmanız ıcın tesekkur ederım buna benzer bı calısma yapmaktayım
    benım projemde ıkı servo motor kontrol edılecek bı motor sağa donerken dığer motor aynı derecede sola donecek bu konuda bana yardımcı olursanız sevınırım projeyle ılgılı kodları gonderbılır mısınız. Tesekkür ederim iyi çalısmalar.

  52. Hocam selamlar;
    kendimi bu konuda geliştirme arzusundayım ve yapmış olduğunuz bu projenin gidişatımda bilgi yönünden gayet olumlu katkısı olabileceğini düşünüyorum. Acaba herhangi bir mahsuru yoksa ve zamanınızı alıp sizi zahmete vermeyeceksem bu projenin kaynak kodlarını sizden temin edebilir miyim?
    Şimdiden teşekkür ederim
    Selam ve Saygılarımla…

  53. merhaba
    bende bir proje yapmak istiyorum
    seri porttan sıcaklı, gerilim ve akım bilgisini okutup ekranda göstereceğim
    bunu seri port haberleşmeyle yapabilirmiyim
    yoksa usb portla mı yapmaak gerekiyor
    bilgi verirseniz sevinirim bir de bu projenin c kodlarını gönderirseniz sevinirim..
    gogo5turk@hotmail.com

  54. Selam arkadaşlar. Uğur Hocamız bilgi, birikim ve tecrübelerini paylaşmak suretiyle ayrıca hocalık yapmakta. Allah kendisinden razı olsun. C# kaynak kodlarını alan arkadaşlar e-posta adresime gönderirlerse sevinirim. Hepinize kolay gelsin.
    aslanhatun@hotmail.com

  55. Merhabalar Uğur bey,bi konu hakkında sizinle görüşmek istiyorum iletişim bilgilerini almamda bi sakınca varmıdır ? sitenizde bulamadım. Teşekkürler

Kommentare sind geschlossen.