Picproje Elektronik Sitesi

ENDÜSTRiYEL OTOMASYON => Robotik Sistem Tasarımı => Konuyu başlatan: bbs2006 - 02 Şubat 2016, 21:06:50

Başlık: tb6612fg frenleme
Gönderen: bbs2006 - 02 Şubat 2016, 21:06:50
Merhaba
tb6612fg entegresi ile iki motora frenleme yaptırmak istiyorum.Yazılımda  switch yapısı içine 231 değeri yazdığım zaman frenleme zaman gecikmesi değerine göre işlem gerçekleştiriyor. ancak  input ifadesinden switch yapısına veri geldiği zaman ise motor dur kalk şeklinde çalışıyor. bu konuda bilgisi olan var mı.
yazılım

[/

#include <18f452.h>
#fuses hs,nowdt,noprotect
#use delay(clock=20000000)
#define sol1   pin_d0          //19 nolu pin   pin_b0   yeşil led
#define sol2   pin_d1          //20 nolu pin   pin_b1   yeşil led   
#define sol3   pin_d2          //21 nolu pin   pin_b2   yeşil led
#define orts1  pin_d3          //22 nolu pin   pin_b3   beyaz led
#define orts2  pin_d4          //27 nolu pin   pin_b4   beyaz led
#define sag1   pin_d5          //28 nolu pin   pin_b5   kırmızı led
#define sag2   pin_d6          //29 nolu pin   pin_b6   kırmızı led
#define sag3   pin_d7          //30 nolu pin   pin_b7   kırmızı led
#define sagm_in1   pin_c5      //24 nolu pin  sürücü devre ain1   sag motor için
#define sagm_in2   pin_c4      //23 nolu pin  sürücü devre ain2   sag motor için
#define solm_in1   pin_c6      //25 nolu pin  sürücü devre bin1   sol motor için
#define solm_in2   pin_c7      //26 nolu pin  sürücü devre bin2   sol motor için
#define PWM_A      pin_c2      //17 nolu pin  sag motor pwm girişi 
#define PWM_B      pin_c1      //16 nolu pin  sol motor pwm için
#define stdby      pin_c0
// değişken tanımlaması yapılıyor.

int oku_sen;                 // okunan sensör bilgisi   

int Sag_motor,Sol_motor;



void motor_surme(){
         
                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     Output_low(sagm_in2);              // sürücü 2. giriş L
                     Output_high(solm_in1);             // sürücü 1. giriş H
                     output_low(solm_in2);              // sürücü 2. giriş L
return;}
void motor_ikili_fren(){
         
                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     Output_high(sagm_in2);              // sürücü 2. giriş L
                     Output_high(solm_in1);             // sürücü 1. giriş H
                     output_high(solm_in2);              // sürücü 2. giriş L
return;}







void sag_fren(){

                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     Output_high(sagm_in2);              // sürücü 2. giriş L
                     Output_high(solm_in1);             // sürücü 1. giriş H
                     output_low(solm_in2);              // sürücü 2. giriş L
return;}

void sol_fren(){
                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     output_low(sagm_in2);              // sürücü 2. giriş L
                     Output_high(solm_in1);              // sürücü 1. giriş H
                     Output_high(solm_in2);              // sürücü 2. giriş L
                     
return;}

void motor_sag_ters(){                       //90 derece dönüşte sag motor ters yön
         
                     Output_low(sagm_in1);             // sürücü 1. giriş H
                     Output_high(sagm_in2);              // sürücü 2. giriş L
                     Output_high(solm_in1);             // sürücü 1. giriş H
                     output_low(solm_in2);              // sürücü 2. giriş L
return;}
void motor_sol_ters(){                    //90 derece dönüşte sol motor ters yön
         
                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     Output_low(sagm_in2);              // sürücü 2. giriş L
                     Output_low(solm_in1);             // sürücü 1. giriş H
                     output_high(solm_in2);              // sürücü 2. giriş L
return;}




void main(){               // Ana fonksiyon.
setup_ccp1(ccp_pwm);       //sag motor için kullanılacak
setup_ccp2(ccp_pwm);       //sol motor için kullanılacak
setup_timer_2(T2_DIV_BY_4,124,4);     //Timer2 ayarları yapılıyor.
                                          //zaman=0.0001  Fr=10 Khz. 
                                         
                                         
output_high(stdby);        //motor sürücü entegresi stanby  HIGH olmalı.                                     
                                         
while(True){

oku_sen=input_d();        // d portundan sensör degerleri okunup oku_sen ata.

switch(231)
     
      {
     
      case 231:                                      //0b10000000        SAG
                     {
                     output_b(0b00011000);
                       motor_surme();
                       set_pwm1_duty(50);
                       set_pwm2_duty(50);
                       delay_ms(5000);
                       motor_ikili_fren();
                       set_pwm1_duty(255);
                       set_pwm2_duty(255);
                       delay_ms(1000);
                       sag_fren();
                       set_pwm1_duty(0);
                       set_pwm2_duty(100);
                       delay_ms(5000);
                     break;}
                     //motor_surme();}
                     }}}





code]
Başlık: Ynt: tb6612fg frenleme
Gönderen: pax - 02 Şubat 2016, 21:36:12
frenlemeyi PWM duty oranını sıfır 0 yaparak yapsanız daha İyi olur
Başlık: Ynt: tb6612fg frenleme
Gönderen: bbs2006 - 02 Şubat 2016, 21:45:46
teşekkürler. yazılımda mantık hatası var mı.
Başlık: Ynt: tb6612fg frenleme
Gönderen: pax - 02 Şubat 2016, 22:24:11
Programda amacınız nedir tam anlayamadim ama switch case yapısı hatalı
switch (oku_sen)
  {
       case 231 : // Yapmak istediğiniz
                          break ;
}

şeklinde olmalı


amacınızı tam anlatırsanız daha çok yardımcı Olabilirim
Başlık: Ynt: tb6612fg frenleme
Gönderen: bbs2006 - 03 Şubat 2016, 00:12:36
ben bunu çizgi izleyen robotta yapmak için kullanacağım. normal switch içerisinde input dan gelen bilgiler var. ancak frenleme yaptıracağım zaman bir fren  yapıp bırakıyor.  ancak switch içerisine direk decimal  değeri girdiğimiz zaman frenleme gerçekleşiyor. zaman artııkca frenleme süresi artıyor.
Başlık: Ynt: tb6612fg frenleme
Gönderen: dursuncemal - 03 Şubat 2016, 01:10:36
sadece bir fonksiyon   icin  switch case kulanman cok mantiksiz. 231  muhtemelen sensorden okuyorsun frenleme yaparken 231 degern degisiyor bir daha caseye giremiyorsun. ama sen 231 kendin girersen senin programin surekli case 231 in icide kaliyor ve dogal olarak frenleme yapiyorsun;birde arkadaslarin dedigi gibi programin net okun uyor ne yaptigin anlasilmiyor . program akisini once flow chart olarak ciz kodunu ona gore yaz.
Başlık: Ynt: tb6612fg frenleme
Gönderen: pax - 03 Şubat 2016, 01:28:26

  1- fonksiyonların sonundaki "return"lere gerek yok. fonksiyon kendiliğinden sonlanıyorsa "return"e gerek yok.

  2- Portlarla ilgili yönlendirme komutları yok. giriş çıkış yönlendirmesi. d portu giriş olarak yönlendirilmeli ,  c portu çıkış olarak yönlendirilmeli

  3- switch(231)  switch(oku_sen) ooarak değişmeli

  4- 0b10000000 bu 231 değil 128   olmalı

  5-
     
    void motor_ikili_fren(){
         
                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     Output_high(sagm_in2);              // sürücü 2. giriş L
                     Output_high(solm_in1);             // sürücü 1. giriş H
                     output_high(solm_in2);              // sürücü 2. giriş L
return;}


yerine


void motor_ikili_fren(){
         
                  set_pwm1_duty(0);
                  set_pwm2_duty(0); 
            }


olmalı


6- 



void sag_fren(){

                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     Output_high(sagm_in2);              // sürücü 2. giriş L
                     Output_high(solm_in1);             // sürücü 1. giriş H
                     output_low(solm_in2);              // sürücü 2. giriş L
return;}

void sol_fren(){
                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     output_low(sagm_in2);              // sürücü 2. giriş L
                     Output_high(solm_in1);              // sürücü 1. giriş H
                     Output_high(solm_in2);              // sürücü 2. giriş L
                     
return;}




yerine




void sag_fren(){
                        set_pwm1_duty(0);   
                        }

void sol_fren(){

                    set_pwm2_duty(0);
                        }




7- 



void main()
        {               // Ana fonksiyon.
setup_ccp1(ccp_pwm);       //sag motor için kullanılacak
setup_ccp2(ccp_pwm);       //sol motor için kullanılacak
setup_timer_2(T2_DIV_BY_4,124,4);     //Timer2 ayarları yapılıyor.
                                          //zaman=0.0001  Fr=10 Khz. 
                                         
                                         
output_high(stdby);        //motor sürücü entegresi stanby  HIGH olmalı.                                     
                     
while(True){

oku_sen=input_d();        // d portundan sensör degerleri okunup oku_sen ata.

switch(231)
     
      {
     
      case 231:                                      //0b10000000        SAG
                     {
                     output_b(0b00011000);
                       motor_surme();
                       set_pwm1_duty(50);
                       set_pwm2_duty(50);
                       delay_ms(5000);
                       motor_ikili_fren();
                       set_pwm1_duty(255);
                       set_pwm2_duty(255);
                       delay_ms(1000);
                       sag_fren();
                       set_pwm1_duty(0);
                       set_pwm2_duty(100);
                       delay_ms(5000);
                     break;}
                     //motor_surme();}
                     }}}




yerine de



void main()               // Ana fonksiyon.
                         {               
setup_ccp1(ccp_pwm);       //sag motor için kullanılacak
setup_ccp2(ccp_pwm);       //sol motor için kullanılacak
setup_timer_2(T2_DIV_BY_4,124,4);     //Timer2 ayarları yapılıyor.
                                                                //zaman=0.0001  Fr=10 Khz. 

set_tris_b(0x00) ; // b portu çıış
set_tris_c(0x00);  //  c portu çıkış
set_tris_d(0xff);  // d portu giriş
                                       
                                         
output_high(stdby);        //motor sürücü entegresi stanby  HIGH olmalı.                                     
                     
while(1)
    {

         oku_sen=input_d();        // d portundan sensör degerleri okunup oku_sen ata.

switch(  oku_sen)
     
      {
     
      case 128:                                      //0b10000000        SAG
                     {
                       output_b(0b00011000);
                       motor_surme();
                       set_pwm1_duty(50);
                       set_pwm2_duty(50);
                       delay_ms(5000);
                       motor_ikili_fren();
                       delay_ms(1000);
                       sag_fren();
                       set_pwm2_duty(100);
                       delay_ms(5000);
                       set_pwm1_duty(100);
                   
                       break;}
                     
                     }
           }
}


Başlık: Ynt: tb6612fg frenleme
Gönderen: bbs2006 - 03 Şubat 2016, 12:36:26
Merhaba
Benim tüm yazılım kodları aşağıdaki gibidir. Ayrıca giriş çıkış portununu  yönlendirmeye gerek yoktur. o kendisi yönlendirme yapmaktadır.


#include <18f452.h>
#fuses hs,nowdt,noprotect
#use delay(clock=20000000)
#define sol1   pin_d0          //19 nolu pin   pin_b0   yeşil led
#define sol2   pin_d1          //20 nolu pin   pin_b1   yeşil led   
#define sol3   pin_d2          //21 nolu pin   pin_b2   yeşil led
#define orts1  pin_d3          //22 nolu pin   pin_b3   beyaz led
#define orts2  pin_d4          //27 nolu pin   pin_b4   beyaz led
#define sag1   pin_d5          //28 nolu pin   pin_b5   kırmızı led
#define sag2   pin_d6          //29 nolu pin   pin_b6   kırmızı led
#define sag3   pin_d7          //30 nolu pin   pin_b7   kırmızı led
#define sagm_in1   pin_c5      //24 nolu pin  sürücü devre ain1   sag motor için
#define sagm_in2   pin_c4      //23 nolu pin  sürücü devre ain2   sag motor için
#define solm_in1   pin_c6      //25 nolu pin  sürücü devre bin1   sol motor için
#define solm_in2   pin_c7      //26 nolu pin  sürücü devre bin2   sol motor için
#define PWM_A      pin_c2      //17 nolu pin  sag motor pwm girişi 
#define PWM_B      pin_c1      //16 nolu pin  sol motor pwm için
#define stdby      pin_c0
// değişken tanımlaması yapılıyor.

int oku_sen;                 // okunan sensör bilgisi   
//
int Sag_motor,Sol_motor;
int fren_bekleme=750;              //ikili fren sisteminde fren zamanı


void motor_surme(){
         
                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     Output_low(sagm_in2);              // sürücü 2. giriş L
                     Output_high(solm_in1);             // sürücü 1. giriş H
                     output_low(solm_in2);              // sürücü 2. giriş L
return;}
void motor_ikili_fren(){
         
                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     Output_high(sagm_in2);             // sürücü 2. giriş L
                     Output_high(solm_in1);             // sürücü 1. giriş H
                     output_high(solm_in2);             // sürücü 2. giriş L
return;}

void sag_fren(){

                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     Output_high(sagm_in2);             // sürücü 2. giriş L
                     Output_high(solm_in1);             // sürücü 1. giriş H
                     output_low(solm_in2);              // sürücü 2. giriş L
return;}

void sol_fren(){
                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     output_low(sagm_in2);              // sürücü 2. giriş L
                     Output_high(solm_in1);             // sürücü 1. giriş H
                     Output_high(solm_in2);             // sürücü 2. giriş L
                     
return;}

void motor_sag_ters(){                       //90 derece dönüşte sag motor ters yön
         
                     Output_low(sagm_in1);              // sürücü 1. giriş H
                     Output_high(sagm_in2);             // sürücü 2. giriş L
                     Output_high(solm_in1);             // sürücü 1. giriş H
                     output_low(solm_in2);              // sürücü 2. giriş L
return;}
void motor_sol_ters(){                    //90 derece dönüşte sol motor ters yön
         
                     Output_high(sagm_in1);             // sürücü 1. giriş H
                     Output_low(sagm_in2);              // sürücü 2. giriş L
                     Output_low(solm_in1);              // sürücü 1. giriş H
                     output_high(solm_in2);             // sürücü 2. giriş L
return;}

void main(){               // Ana fonksiyon.
setup_ccp1(ccp_pwm);       //sag motor için kullanılacak
setup_ccp2(ccp_pwm);       //sol motor için kullanılacak
setup_timer_2(T2_DIV_BY_4,124,4);         //Timer2 ayarları yapılıyor.
                                          //zaman=0.0001  Fr=10 Khz. 
                                                                                   
output_high(stdby);        //motor sürücü entegresi stanby  HIGH olmalı.                                     
                                         
while(True){

oku_sen=input_d();        // d portundan sensör degerleri okunup oku_sen ata.

switch(oku_sen)
     
      {
     
      case 128:                                  //0b10000000        SAG
                     {
                       output_b(0b01111111);
                       motor_ikili_fren();
                       set_pwm1_duty(255);
                       set_pwm2_duty(255);
                       delay_ms(fren_bekleme);
                       sag_fren();
                       set_pwm1_duty(0);
                       set_pwm2_duty(50);
                       
                       //motor_surme();
        //********************************************************           
                                       
       //*********************************************************
                      delay_ms(10);
                     break;}   
         
      case 1:                                      //0b00000001
                     {
                     output_b(0b11111110);
                       motor_ikili_fren();
                       set_pwm1_duty(255);
                       set_pwm2_duty(255);
                       delay_ms(fren_bekleme);
                       sol_fren();
                       set_pwm1_duty(50);
                       set_pwm2_duty(0);
                       
                       //sol_fren();
                       //motor_surme();
        //********************************************************           
                                         
        //*********************************************************             
                     // set_pwm1_duty(65);
                     // set_pwm2_duty(0);
                     
        //**********************************************************
                     delay_ms(10);
                     Break;}     
     
     
      case 192:                      //0b11000000                    SAG
                     {
                     output_b(0b00111111);
                     // motor_sag_ters();
                       motor_ikili_fren();
                       set_pwm1_duty(255);
                       set_pwm2_duty(255);
                       delay_ms(fren_bekleme);
                       sag_fren();
                       set_pwm1_duty(0);
                       set_pwm2_duty(50);
                       
                     //motor_surme();
        //********************************************************           
                                         
                   
                   
                   
                     delay_ms(10);
       //*********************************************************
                     
                     break;}   
     
      case 3:                                      //0b00000011
                     {
                     output_b(0b11111100);
                       motor_ikili_fren();
                       set_pwm1_duty(255);
                       set_pwm2_duty(255);
                       delay_ms(fren_bekleme);
                       sol_fren();
                 
                      // motor_sol_ters();
                      //sol_fren();
                      //motor_surme();
        //********************************************************           
                                         
       //*********************************************************             
                     set_pwm1_duty(50);
                     set_pwm2_duty(0);
                     
       //**********************************************************
                     delay_ms(10);
                     Break;}
     
     
     
     
                     
      case 254:                      //0b11111110                   SAG
                     {
                     output_b(0b00000001);
                   
                     motor_surme();
        //********************************************************           
                                         
       //*********************************************************             
                     set_pwm1_duty(15);
                     set_pwm2_duty(80);
                     
       //*********************************************************
                     
                     break;}           //Yol robotun sağında
                     
                     
      case 127:                                              //0b01111111
                    {
                    output_high(pin_b7);
                   
                    motor_surme();
        //********************************************************           
                     
                     
       //*********************************************************             
                     set_pwm1_duty(80);
                     set_pwm2_duty(15);
                     
       //*********************************************************
     
                    Break;}
               
      case 252:                        // 0b11111100             SAG
                     {
                     output_b(0b00000011);
                   
                     motor_surme();
        //********************************************************           
                     
                     
       //*********************************************************             
                     set_pwm1_duty(15);
                     set_pwm2_duty(80);
                     
       //*********************************************************
                     delay_ms(10);
                      break;}
                     
       case 63:                                        //0b00111111
                    {
                    output_b(0b11000000);
                 
                    motor_surme();
        //********************************************************           
                     
                     
       //*********************************************************             
                     set_pwm1_duty(80);
                     set_pwm2_duty(15);
                     
       //*********************************************************
                     delay_ms(10);
                    Break;}
     
       case 248:                            //0b11111000           SAG
                     {
                     output_b(0b00000111);
               
                     motor_surme();
        //********************************************************           
                                         
       //*********************************************************             
                     set_pwm1_duty(20);
                     set_pwm2_duty(65);
                     
       //**********************************************************
               
                     Break;}
     
        case 31:                                      //0b00011111
                     {
                     output_b(0b11100000);
               
                     motor_surme();
        //********************************************************           
                                         
       //*********************************************************             
                     set_pwm1_duty(65);
                     set_pwm2_duty(20);
                     
       //**********************************************************
                     
                     Break;}
     
       case 240:                            //0b11110000           SAG
                     {
                     output_b(0b00001111);
                       motor_ikili_fren();
                       set_pwm1_duty(255);
                       set_pwm2_duty(255);
                       delay_ms(fren_bekleme);
                       sag_fren();
                      set_pwm1_duty(0);
                      set_pwm2_duty(50);
                     
                     // motor_sag_ters();
                     //motor_surme();
        //********************************************************           
                                         
       //*********************************************************             
                     
                     
                     
       //**********************************************************
                    delay_ms(10);
                     Break;}   
   
     case 15:                            //0b00001111
                     {
                     output_b(0b11110000);
                      motor_ikili_fren();
                       set_pwm1_duty(255);
                       set_pwm2_duty(255);
                       delay_ms(fren_bekleme);
                       sol_fren();
                       set_pwm1_duty(50);
                       set_pwm2_duty(0);
                     
                     
                     
                     
                      //sol_fren();
                     // motor_sol_ters();
                    // motor_surme();
        //********************************************************           
                                         
       //*********************************************************             
                    // set_pwm1_duty(50);
                     // set_pwm2_duty(0);
                     
       //**********************************************************           
                    delay_ms(10);
           Break;}
         
      case 224:                             //0b11100000            SAG
                     {
                     output_b(0b00011111);
                    // motor_sag_ters();
                       motor_ikili_fren();
                       set_pwm1_duty(255);
                       set_pwm2_duty(255);
                       delay_ms(fren_bekleme);
                      sag_fren();
                      set_pwm1_duty(0);
                      set_pwm2_duty(50);
                     
                    // motor_surme();
        //********************************************************           
                                         
       //*********************************************************             
                     
                   
                     
       //**********************************************************
                     delay_ms(10);
                     Break;}   
       case 7:                              //0b00000111
                     {
                     output_b(0b11111000);
                     //motor_sol_ters();
                     //motor_surme();
                      // sol_fren();
                     
                      motor_ikili_fren();
                       set_pwm1_duty(255);
                       set_pwm2_duty(255);
                       delay_ms(fren_bekleme);
                       sol_fren();
                       set_pwm1_duty(50);
                       set_pwm2_duty(0);
                     
        //********************************************************           
                                         
       //*********************************************************             
                   
                     
       //**********************************************************           
                     delay_ms(10);
           Break;}   
   
      case 249:                            //0b11111001           SAG
                     {
                     output_b(0b00000110);
               
                     motor_surme();
                   
     
        //********************************************************
                                         
       //*********************************************************             
                     set_pwm1_duty(70);  //70
                     set_pwm2_duty(75);  //75
                     
       //**********************************************************
                    delay_ms(5);
                     Break;}
  case 159:                                   //0b10011111
                    {
                    output_b(0b01100000);
                 
                    motor_surme();
        //********************************************************           
                   
                     
       //*********************************************************             
                     set_pwm1_duty(75);   //75
                     set_pwm2_duty(70);   //70
                     
       //*********************************************************
                     delay_ms(5);
                     Break;}
       
 
      case 243:                              //0b11110011           SAG
                     {
                     output_b(0b00001100);
                     motor_surme();
        //********************************************************           
        //*********************************************************             
                     set_pwm1_duty(65);         //65
                     set_pwm2_duty(70);         //70 
                     
       //*********************************************************
                     
                    delay_ms(5);
                     Break;}
                     
       case 207:                            //0b11001111
                    {
                      output_b(0b00110000);
                      motor_surme();
       
        //********************************************************
        //*********************************************************             
                     set_pwm1_duty(70);             //70
                     set_pwm2_duty(65);             //65
                     
       //*********************************************************
                    delay_ms(5);
                    Break;
                   
                   
                    }
                 
     case 231:                      //Yol ortada      0b11100111
                    {
                     output_b(0b00011000);
                     motor_surme();
        //********************************************************           
                                     
       //*********************************************************             
                     set_pwm1_duty(70);      //eski degeri 70
                     set_pwm2_duty(70);
                     
       //*********************************************************                 
                     delay_ms(5);
                     Break;
                   
                     }
/*
     case 255:                    //0b11111111
         {
         output_b(0b00000000);
         motor_surme();
         set_pwm1_duty(10);
         set_pwm2_duty(10);
         }*/
     default:{}
      }     }}


Başlık: Ynt: tb6612fg frenleme
Gönderen: dursuncemal - 03 Şubat 2016, 17:04:25
programdaki senaryo yu anlayamadim.sensorden bekledigin veri geldiginde durmasi mi gerekiyor? eger dogru tahmin etmisem veriyi esitlige gore degilde buyuk veya kucukture gore karsilastir.
Başlık: Ynt: tb6612fg frenleme
Gönderen: bbs2006 - 03 Şubat 2016, 19:50:38
merhaba
ben 90 derecelik dönüşlere geldiği zaman iki motoru 5 veya 10 msn durdurup sonra saga veya sola fren yaptırıp daha düzgün bir dönüş sağlamak için yaptım. motorların ikisinide durdurma işlemini yapmasam dahi dönme işlemi gerçekleşiyor. ben düz yolda yüksek hızda giderken keskin dönüşlerde sıkıntı yaşanmasın diye önce durdurup sonra dönüş yaptırmak istiyorum.
Başlık: Ynt: tb6612fg frenleme
Gönderen: dursuncemal - 03 Şubat 2016, 20:31:20
switc degerin tuslardan mi geliyor?
Başlık: Ynt: tb6612fg frenleme
Gönderen: bbs2006 - 03 Şubat 2016, 22:07:32
hayır .qtr-8a sensöründen d portuna giriyor.  sensör beyaz gördüyse lojik 0 siyah gördüyse  lojik 1 üretiyor.
Başlık: Ynt: tb6612fg frenleme
Gönderen: pax - 03 Şubat 2016, 23:39:50
Alıntı yapılan: bbs2006 - 03 Şubat 2016, 22:07:32
hayır .qtr-8a sensöründen d portuna giriyor.  sensör beyaz gördüyse lojik 0 siyah gördüyse  lojik 1 üretiyor.

bildiğim ve kullandığım kadarıyla   qtr8a analog sensordür. dijital okunabiliyor mu? analog okumanız gerekmiyor mu?
Başlık: Ynt: tb6612fg frenleme
Gönderen: bbs2006 - 04 Şubat 2016, 00:04:59
evet. zaten qtr-8a analog sensördür. ancak pic 18f4550 entegresinini d portu st özellikli bundan dolayı beyaz çizgiyi  lojik 0 siyah girişleri 1 alıyor. benim çizgi izleyen robotta sıkıntı yok. sadece entegre frenleme işleminde sıkıntı oluyor.
Başlık: Ynt: tb6612fg frenleme
Gönderen: pax - 04 Şubat 2016, 00:08:22
Alıntı yapılan: bbs2006 - 04 Şubat 2016, 00:04:59
pic 18f4550 entegresinini d portu st özellikli bundan dolayı beyaz çizgiyi  lojik 0 siyah girişleri 1 alıyor.

bu konu ile ilgili biraz bilgi verebilir misiniz?
Başlık: Ynt: tb6612fg frenleme
Gönderen: bbs2006 - 04 Şubat 2016, 00:18:27
siz çizgi izleyen robot çalışması yaptınız mı. st(schmitt trigger ) 18f 4550 entegresinin datashettine baktığınız zaman d portunun  ğirişlerinin st özellikli olduğu görünür. aynı zamanda 18f452  16f877 portlarında da var. incelemek lazım. önceden cn70 sensörü  daha kararlı olması için 7414  entegresi kullanılıyordu(bu st özellikli) portun özelliğinden dolayı bu entegreyi kullanmıyoruz. beyaz çizgide  lojik 0 siyah çizgide lojik1 veriyor. siz tb6612fn entegresini kullandınız mı.
Başlık: Ynt: tb6612fg frenleme
Gönderen: pax - 04 Şubat 2016, 00:31:12
     çizgi izleyen yapmıştım ama pic'le yapmadım. arduino nano ,  tb6612fng, ve qtr8a kullandım ve qtr8a 'yı analog okumuştum. çok önceden de bir kere cn70 ve 7414 ikilisini kullanarak yapmıştım.

sizin bahsettiğiniz şekilde hiç yapmadım o yüzden merak ettim .

Başlık: Ynt: tb6612fg frenleme
Gönderen: bbs2006 - 04 Şubat 2016, 00:35:36
bende bunu yeni öğrendim. ama çok güzel bir durum. biz entegrelerin özelliklerini tam bilmiyoruz.  şuan tb6612 fn entegresinde frenleme yaptırmada sıkıntı var.  switch değerine sabit bir deger verdiğim zaman  zamana göre frenleme süresi artıyor veya azalıyor. ancak input degerinden switch değer geldiğinde istenilen şekilde çalışmıyor. bu konuda fikriniz var mı
Başlık: Ynt: tb6612fg frenleme
Gönderen: bc_esd - 04 Şubat 2016, 00:42:53


   switch case yerine if kullanıp denediniz mi?
Başlık: Ynt: tb6612fg frenleme
Gönderen: bbs2006 - 04 Şubat 2016, 10:37:30
Denemedim
Başlık: Ynt: tb6612fg frenleme
Gönderen: bc_esd - 04 Şubat 2016, 14:07:30
Alıntı yapılan: bbs2006 - 04 Şubat 2016, 00:18:27
... st(schmitt trigger ) 18f 4550 entegresinin datashettine baktığınız zaman d portunun  ğirişlerinin st özellikli olduğu görünür. aynı zamanda 18f452  16f877 portlarında da var. incelemek lazım. önceden cn70 sensörü  daha kararlı olması için 7414  entegresi kullanılıyordu(bu st özellikli) portun özelliğinden dolayı bu entegreyi kullanmıyoruz. beyaz çizgide  lojik 0 siyah çizgide lojik1 veriyor. ......

peki burada 1-0 için gerilim eşiği nedir.?

pist üzerinde bu gerilim eşiğini nasıl tutturacaksınız.?   

çünkü çevredeki ışıklardan dolayı pistte parlamalar oluyor,  portun okuyacağı  değerler sizin istediğiniz  değerler olcak mı? 

dijital okumanın (portun dijital algılaması) bu nedenle sakıncası yok mu ?
Başlık: Ynt: tb6612fg frenleme
Gönderen: bbs2006 - 04 Şubat 2016, 14:33:19
devre çalışıyor
hiçibir problem yaok.
benim sadece tb6612fg entegresini switch case yapısında frenleme yaptıramıyorum. switch içerisinde decimal degeri yazdıgım zaman çalışıyor.input dan aldıgı zaman frenleme sıkıntılı. ayrıca pwn ile frenleme yaptırdım. yine aynı sıkıntı.
Başlık: Ynt: tb6612fg frenleme
Gönderen: bc_esd - 04 Şubat 2016, 14:36:39
Alıntı yapılan: bbs2006 - 04 Şubat 2016, 14:33:19
devre çalışıyor
hiçibir problem yaok.
benim sadece tb6612fg entegresini switch case yapısında frenleme yaptıramıyorum. switch içerisinde decimal degeri yazdıgım zaman çalışıyor.input dan aldıgı zaman frenleme sıkıntılı. ayrıca pwn ile frenleme yaptırdım. yine aynı sıkıntı.

ben sizin dediklerinizi anladım sadece kendi merak ettiğim konuları sordum size bilgi edinmek amacıyla .


Alıntı yapılan: bc_esd - 04 Şubat 2016, 14:07:30
peki burada 1-0 için gerilim eşiği nedir.?

pist üzerinde bu gerilim eşiğini nasıl tutturacaksınız.?   

çünkü çevredeki ışıklardan dolayı pistte parlamalar oluyor,  portun okuyacağı  değerler sizin istediğiniz  değerler olcak mı? 

dijital okumanın (portun dijital algılaması) bu nedenle sakıncası yok mu ?
Başlık: Ynt: tb6612fg frenleme
Gönderen: bbs2006 - 04 Şubat 2016, 14:39:30
picin kendi portunun schmitt triger özellidignden dolayı siay ta 1 beyaz da 0 veriyor.
Başlık: Ynt: tb6612fg frenleme
Gönderen: bc_esd - 04 Şubat 2016, 14:53:37


peki bu port kaç volt'tan sonra lojik 1 oluyor?
Başlık: Ynt: tb6612fg frenleme
Gönderen: vatandas30 - 25 Nisan 2017, 22:00:18
aynı motor sürücüden bende kullanıyorum. datasheetinde yazdığı gibi in1,in2,in3 ve in4 uçlarını high yaptığım halde frenleme yaptıramadım.
daha önce motoru geri döndürerek durdurabiliyordum ama bu da dişlilere zarar veriyormuş.
yarışma videolarına bakıyorum, köşelerde tak diye duruyor robotlar.  bu işin sırrı nedir?
Başlık: Ynt: tb6612fg frenleme
Gönderen: Zoroaster - 26 Nisan 2017, 12:33:10
Tak diye durdurmak istiyorsan In1 ve In2 girişlerini 1 yapacaksın.

STBY=1 olacak ve PWM önemli değil.
Başlık: Ynt: tb6612fg frenleme
Gönderen: vatandas30 - 26 Nisan 2017, 15:40:38
denedim ama o şekilde çok küçük bir fren etkisi oluyor.
Başlık: Ynt: tb6612fg frenleme
Gönderen: vatandas30 - 26 Nisan 2017, 15:44:35
tb6612 nin iki çeşidi var int. de gördüğüm. yeşil ve kırmızı. bizdeki yeşil olan. bunlar arasında fark var mı?
Başlık: Ynt: tb6612fg frenleme
Gönderen: Zoroaster - 26 Nisan 2017, 16:56:41
Alıntı yapılan: vatandas30 - 26 Nisan 2017, 15:40:38
denedim ama o şekilde çok küçük bir fren etkisi oluyor.

O zaman ters voltajdan başka seçenek kalmıyor.