Telsiz rölesi uyarı sesi

Başlatan onurinci, 18 Ekim 2014, 01:14:38

onurinci

Hocam saygılar.

Bir Adet Amatör telsiz rölemiz var,bu dağda olduğu için ,
rüzgar enerjisi ve güneş enerjisi ile çalışmaktadır.

aküler 11.5 volt'a geldiğinde ikaz vererek karşı tarafa akülerin
bitme sınırına yaklaşıldığını sistemi neşgul etmemeleri için,
telsiz sesine mors kodunda Dah Di Dah yolluyoruz.

bir opamp'lı komparatör'ümüz var bu aküyü gözlemliyor ve
11.5 volta geldiğinde logic 0 oluyor,normal kabul edilebilir
akü voltajlarında ise logic 1'de duruyor.

TX key'ide normal beklemede logic 1'de bekliyor
Logic 0 olursa gönderme işlemi gerçekleşiyor.

mini bir program yazmaya çalıştım yine aksak timur.....

hatalı program şöyle çalışmaktadır...

komparator 0 oldu ve aynı anda TX key'ide 0 oldu ve bize mors formatında
Dah Di Dah sesini dinletiyor. tamam fakat bunu sürekli yolluyor bir müddet
sonra sıkıntı oluyor.damla işkencesi gibi

isteğimiz komparatör 0 ve TX 0 ise bize bir kereye mahsus mors yollasın.

TX key'i tekrar bırakılıp basıldığında bu döngü tekrarlansın.
yani her TX bir kere mors,bu arada komparator logic 1' ise
mors yollamasın.

hocam umarım anlatabilmişimdir.

[@ Device PIC12F675,WDT_OFF,PWRT_ON,PROTECT_ON, CPD_ON,MCLR_OFF,BOD_OFF,INTRC_OSC_NOCLKOUT
DEFINE OSC 4
DEFINE OSCCAL_1K 1

TRISIO= %000011 : GPIO= 0
CMCON= 7 : ANSEL= 0
OPTION_REG.7= 0 : WPU= %000011

Battery var GPIO.0      ' Input Equipment CTCSS Decode (+)
Beep    VAR GPIO.4    ' GPIO = Beep Output
TX      var GPIO.1      ' TX Keying input

Start:   

IF GPIO.0= 0 and GPIO.1 = 0 THEN
  WHILE Battery= 1

  WEND


    PAUSE 500
    FREQOUT Beep,500,850   ' Send freq. 850Hz. for 500m seconds
    pause 100
    FREQOUT Beep,250,850   ' Send freq. 850Hz. for 250m seconds
    pause 100
    FREQOUT Beep,500,850   ' Send freq. 850Hz. for 500m seconds
    pause 1000

ENDIF
     GOTO Start
/code]

isis simulasyon  http://s3.dosya.tc/server28/jnDvOp/Battery.rar.html

ete

#1
Basit bir konu ama nedense zor tarafından halletmeye çalışıyorsun.
Anlamadığım bir şey var;
IF GPIO.0= 0 and GPIO.1 = 0 THEN
  WHILE Battery= 1:  WEND
KOmut satırında Battery zaten GPIO.0 pinidir. While kısmına gelebilmen için GPIO.0=0 olması gerekiyor.
Sence o anda Battrey ucu yani GPIO.0=1 olma ihtimali varmıdır? Bence yok. Gereksiz bir komut oradaki.
Bu işler için bir işaretçi kullanılır. Örneği aşağıdadır. Bu program bu işi bir kereliğine yaptırır. Ancak bir müddet sonra yeniden yapması istenirse VER=0 yapılması gerekir. Bunuda ya TX key ile yada Battery ucu 11,5V tu aşınca yaptırmak mümkün olabilir.
Mesela;
IF BATTERY=1 or TX=1 then VER=0 gibi.

Ete

'@ Device PIC12F675,WDT_OFF,PWRT_ON,PROTECT_ON, CPD_ON,MCLR_OFF,BOD_OFF,INTRC_OSC_NOCLKOUT
@ __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF
DEFINE OSC 4
DEFINE OSCCAL_1K 1

TRISIO= %00000011 : GPIO= 0
CMCON= 7 : ANSEL= 0
OPTION_REG.7= 0 : WPU= %00000011

Battery var GPIO.0      ' Input Equipment CTCSS Decode (+)
Beep    VAR GPIO.4    ' GPIO = Beep Output
TX      var GPIO.1      ' TX Keying input
VER     VAR BIT
Pause 200  'açılış gecikmesini daima veriniz.
Start:   

WHILE BAttery=0
    WHILE TX=0
      IF VER=0 THEN
         PAUSE 500
         SOUND BEEP,[116,42]
         pause 100
         SOUND BEEP,[116,21]
         pause 100
         SOUND BEEP,[116,42]
         BEEP=0
         pause 1000
         ver=1
       endIF   
    WEND
    VER=0   
WEND
     GOTO Start



onurinci

hocam verdiğiniz kod parçası benim isteğim dışında çalışıyor.GPIO.0 bataryayı kontrol ediyor eğer bu pin logic 1 ise beep yollamaması icap ediyor,burada aranan şart GPIO.0 logic 0 yani low ise beeb gönderme şartı aranıyor.ayrıca bir kere beep yollasın bir daha yollamasın konusunu anlatmayı başaramamışım herhalde ,TX keyi olan GPIO.1 pini normalde logic 1'de yani high durumda,bu ne zaman low!a çekildi beep yollayacak ve bu pin her low olduğunda bu tekrarlanacak. ancak aküyü kontrol eden pin olan GPIO.0 0  ise yani low ise beep yollayacak ,eğer bu pin logic 1 ise beep falan yollamayacak .orayı AND,lememin nedeni bu idi.sisin kodu simule ettim akü pin'ini kaale almıyor yokmuş gibi davranıyor,ayrıca çipi resetlemeden bir daha beep yollamıyor.hocam sizin bir iki yaş altınızım ifade etmekte güçlük çekiyor olabilirim.
saygılar.

ete

#3
Yanlış anlamışım sanırım.
Normal şartlarda aşağıdaki komut bunu halletmesi gerekir. Hallediyorda. Simule de denedim sorunsuz çalışıyor.
WHILE Battery=0 and TX=0
   ....
   ..
WEND
While komutu burada 2 şarta bağlı olarak çalışıyor. Şartlardan biri bile yerine gelmez ise program ya bu döngüye girmez yada döngü içinde iken hemen döngüden çıkar. Böylece istenilen yerine getirilmiş olur.

Çıkan seside beğenmedim yerine sound kullandım. Şimdi daha güzel.
Süreleri e ses frekansını tutturdum sanırım. Zira SOUND komutunda nota değeri 112 yaklaşık 850 Hz lik bir frekans üretir.Skopla bakabilirsin. Duration denilen parametre ise 12ms lik artışlarla 0-255 arasında değer alır. 500/12=41,6=42 olarak verdim. Benzer şekilde 250 ms lik süreyi de yarısı olan 21 olarak verdim. Her şey güzel gözüküyor ama dene bakalım sonuç ne çıkacak.
Dosyalar ilişiktedir.

Ete


onurinci

hocam iyi pazarlar ,öncelikle simulasyon dahi olsa sesi duyunca bayıldım.normal devrede ne kadar filitre var ise denedim harmoniklerden kurtulamadım.

GPIO.0 şartı yerine gelmiş
GPIO.1 şartı ise beep'i sürekli yolluyor.bu sadece bir kerelik olmalı ,istenen amaçta bu zaten sistemi dinleyenlerin rahatsız olmalarını engellemek.

hocam en basitinden şöyle düşünelim,telsizimizin bir gönderme butonu var buna TX key'i diyoruz,halk tabirinde mandal,polis telsizi gibi düşünürsek memur mandala bastığında önce bir melodi gidiyor ve konuşmaya devam ediyor ancak tekrar mandala basmaz ise melodi yok.yani her mandal tek melodi.arzu edilen şart ise GPIO.0 1 ise logic high pozisyonunu koruyorsa melodi olmayacak.

ete

#5
Anladım birisi TX butonuna basmış ise bir kereliğine Ses alacak TX tekrardan HIGH oluncaya kadar ses gelmeyecek demek istiyorsun sanırım.
Toparlarsak, mandal yapınca ses bir kereliğine verilecek ve mandal yeniden bırakılıncaya kadar ses gelmeyecek.
Mandalı bırakıp yeniden basarsa yeniden ses bir kereliğine gelecek.

Bu şekilde çalışan dosyalar ile eskilerini değiştirdim. Benim ilk mesajdakini de değiştirdim.

Ete

onurinci

Hocam harikasınız

tam arzu ettiğim gibi olmuş,klavyenize sağlık

üstelik'te bonus olarak Sound komutunuda kavraradım.

Sağlıklar diliyorum

ete

Teşekkür ederim. Merak ettiğim bir şey var sound komutu orada nasıl çalışacak acaba.
Freqout komutunu gerçek devrede denemiş isen farkı anlayacaksın mutlaka bir dene ve sonucu bildir lütfen.

Ete

otansev

Çok güzel ve kullanışlı bir proje oldu.
Emegi geçenlerin eline sağlık.Bu arada Onur bey hangi repetaer da kullanacaksınız mahsuru yoksa ve sizin işaret nedir ?Merakımı mazur görün
73 de TA1AMO
TA1MK

onurinci

@otansev
Bozcaada (Tenedos) için Link yapıyoruz,Ada ile Tekirdağ rölesini link'leyebilmek amacımız.
Alt yapı bitti,ve hiç bilmediğimiz ve ülkemizde emekleme döneminde olan güneş enerjisi kaldı.

Engin TURAN

TA2GC / ISTANBUL

73'ler

otansev

Emeği geçenlere teşekküler,
Kolay gelsin.
73 de TA1AMO
TA1MK

onurinci

hocam bu gün deneme şansım oldu.
Freqout berbat bir ses veriyordu eski commodore bilgisayar gibi idi.scopta baktım tam kare dalga. ben bunu bir pwm filitresi ile yumuşatarak kullanmış idim,abuk sabuk bir üçgen dalgaya benzedi.

sizin yönteminiz harika ses verdi,port'tan seri olarak  330nf ve 5k1 direnç ile çıkış yaptım,scopta baktım sanki sinuse oldukça yanaştı.

sizin verdiğiniz değerleri değiştirerek oynadım biraz, örnek 127 yapınca öyle bir oktava denk geliyorki kulak tırmalıyor.en nihayi sesin sizin hesaplamalarınızın neticesindeki olduğuna karar verdim onu yükledim hocam .

saygılar..

Powered by EzPortal