CCS C PWM sinyali değerine göre port çıkışı alma yardım

Başlatan poyraz4224, 02 Ağustos 2023, 16:42:59

poyraz4224

Herkese merhaba bir adet pot ile pwm sinyali üretiyorum. Bu PWM sinyali ile DC motor sürüyorum buraya kadar sorun yok çalışıyor, fakat DC motor belli bir voltaj değerinin altına düşünce istediğim bir portun çıkış 1 vermesini istiyorum ve burada tıkandım yapamadım konu ile alakalı üstadlarımız yardımcı olursa sevinirim teşekkürler.

#include <16F877A.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#device ADC = 10
#use delay(clock = 8000000)
#use fast_io(B)
#use fast_io(C)

unsigned int16 i=0 ;
void main(){
  port_b_pullups(TRUE);                  
  output_b(0);                          
  set_tris_b(7);                        
  output_c(0);                            
  set_tris_c(0);                        
  setup_adc(ADC_CLOCK_DIV_32);      
  setup_adc_ports(AN0);                
  set_adc_channel(0);                  
  setup_timer_2(T2_DIV_BY_16, 255, 1);  
  delay_ms(100);                        
  while(TRUE){
    i = read_adc();                    
    if(input(PIN_B6) == 1)            
      set_pwm2_duty(i);              
    if(input(PIN_B7) == 1)              
      set_pwm2_duty(i);                  
    delay_ms(10);                        
    if(input(PIN_B0) == 0){              
      if(input(PIN_B6) == 0){          
        output_b(0);                    
        setup_ccp1(CCP_OFF);            
        setup_ccp2(CCP_OFF);            
        output_c(0);                    
        delay_ms(100);                
        setup_ccp2(CCP_PWM);            
        output_high(PIN_B6);          
        output_high(PIN_B3);            
        }}
    if(input(PIN_B1) == 0){              
      if(input(PIN_B7) == 0){          
        output_b(0);                    
        setup_ccp1(CCP_OFF);          
        setup_ccp2(CCP_OFF);            
        output_c(0);                    
        delay_ms(100);                  
        setup_ccp2(CCP_PWM);          
        output_high(PIN_B7);            
        }}
        
  
        
        
    if(input(PIN_B2) == 0){            
      setup_ccp1(CCP_OFF);              
      setup_ccp2(CCP_OFF);            
      output_c(0);                      
      output_b(0);}                      
  }
  
}

mehmet

Motor üzerindeki gerilimi ölçüp buna
göre mi adc değeri okuyacaksınız?

CCS C bilmiyorum, devre konusunda
yardım edebilirim.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

sifirzero

merhaba voltaj degerini belirtmemissin galiba. yada ben goremedim
sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

poyraz4224

Alıntı yapılan: mehmet - 03 Ağustos 2023, 14:06:38Motor üzerindeki gerilimi ölçüp buna
göre mi adc değeri okuyacaksınız?

CCS C bilmiyorum, devre konusunda
yardım edebilirim.

Hayır pot ile motorun voltajını ayarlıyorum örnek veriyorum 12v luk motor 5 volt ve altına düşünce işlemcinin istediğim bir portunu lojik 1 yada sıfır yapmak istiyorum

poyraz4224

Alıntı yapılan: sifirzero - 03 Ağustos 2023, 19:26:48merhaba voltaj degerini belirtmemissin galiba. yada ben goremedim
Merhaba Voltaj değeri 0 ile 110 volt arası olacak. Aslında motor değil de elektro manyetik mıknatıs süreceğim elektro manyetik mıknatısa 0 ile 110 voltluk bir gerilim uyguluyorum. Takıldığım kısım mıknatısın gerilimi 30 voltun altına düşünce istediğim bir portun 0 yada 1 olmasını istiyorum. aşağıdaki devre bu şekli ile çalışıyor. Butonlar mıknatısın polaritesini değiştirmek ve gerilimi kesmek için.

https://hizliresim.com/gsi5v9v


necati

[email]entegreterbiyecisi@yahoo.com[/email]

sifirzero

degisemesi gereken voltaji girmemissin. 30v taki degerde lojik 1 veya sıfir yapacaksin ya o degeri girmemissin
sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

JOKERAS

sifirzero 'nun dediği gibi İki Adc kanalı olmalı.Biri ile Giriş gerilimini dedetkte
(UVLO (UNDER VOLTAGE LOCK OUT)) edeceksiniz.

Diğer Adc kanalı ile de Pwm'i kontrol edeceksiniz.

0-110 Power hattına 3 adet seri direnç ve bir tane de Şaseye, direnç değerlerini 110Voltta Max 5Volt çıkış verecek şekilde  gerilim bölücü yapın ve Adc kanalına girip bunu ölçün.
30 Volta denk gelen değeri sorgulayıp Led'i yakın Pwm'i susturun.

Yalnız burada şöyle bir sıkıntı olabilir.
Gerilim tekrar 30 voltu geçtiği anda Pwm değeriniz eski değer veya çöp değer vs ise Bobin aşırı şekilde sürülmüş olacak.Bunun sonucunda Giriş geriliminizde çökme meydana gelir.
Bu çökme Tüm sistemin sapıtmasına sebep olabilir.

Onun için Bobini her yeni sürmede Soft Start, yani 0'dan belirlenmiş değere kadar Artan bir Pwm ile sürmek icab edebilir.