AD9833 sinüs sinyal üreteci.

Başlatan onurinci, 02 Kasım 2025, 21:11:41

onurinci

Hocam çokta farklı anlamamışsınız,

yani pot ile frekansı kaydırıyoruz beğendiğimiz konumda potu bırakıyorsunuz, ama TX butonunda Asıl frekansına dönüyor.

butonu bıraktığınızda bir evvel pot ile oynadığınız konuma geri dönüyor.

biz Amatör radyocular bu işleme RIT Remote Increment Tuning diyoruz. Amatör Radyo Lisanında BFO dediğimiz şey gerçek frekansı bozmadan LSB Lower Side Band  ,yani alt yan band buda center frekansında 1500 eksi değere inmek oluyor.

diğeride USB Upper Side Band yani üst yan band buda Center'den 1500 Hz yukarı çıkmak oluyor.ama telsizimiz gönderme moduna geçtiğinde tam Center frekansında olmamız gerekiyor.

yani TX butonu bu amacı güdüyor.

burada herkezin telsizi atomik saat gibi aynı olamayacağı için ana frekansı bozmadan en iyi duyduğumuz yeri potla aramak. bu pot'un Adı RIT yada Clarifier diye geçiyor jargonda..

 hocam hiç acelem yok kafanızın sakin olduğu, bir dönemde bakarsınız.sevgiler.

Pepe

#16
ver post #31

ete

Pepe , Örnek için teşekkür ederim. İşin bu kısmında sorun yok zaten.

Onur, Ben amatör telsizci değilim ve bu nedenle işin tatbikat kısmını senin anlatımından anlayamıyorum.

Bu nedenle adım adım gidelim ben sorayım sen cevapla istersen.
>Diyelimki 500KHz de çalışıyoruz ve AD9833'e 500Khz komutunu verdik ve Out dan çıkan sinyalin 500Khz olarak çıkıyor. Bu sinyali 500.000 Hz olarak düşünelim.
>Şimdi bu sinyali 499.990 Hz yapmak istiyoruz. Bunu Pot'u saat yönünün tersi yönde çevirince yapabileceğim. Ama bu aşamada TX butonu basılı olacakmı olmayacakmı. Çünki sen hep TX butonu bırakılınca diye söze başlıyorsun ama ne zaman basılacağını hiç belirtmiyorsun.
Bir buton bırakılınca normal frekansa dönülecek ise o butona neden ve ne zaman basılıyor onu bilmem lazım.

Sonuç olarak pot ile ayar yaparken TX butonuna basılı olacakmıdır değilse o butona hangi konumda basılacak.

Yeni anlatımda şunu anlıyorum. Sistem Kendi ayar frekansında çalışırken TX butonuna basarak potu çevirdiğim zaman potun konumuna göre hesaplanacak değer üzerinden yeni frekansı çıkışa verecek.
TX butonunu bıraktığım anda eski ayar frekansına dönecek. Olay bu kadar olsa gerek.

Ete

onurinci

hocam selam enerji verdik. butonu hiç ellemiyoruz. örnek potun merkez frekansı 455.000Hz bu pot ile 1500Hz sağ sol kısıtlama olmadan gezebiliyoruz 10 Hz'lik adımlar ile. örnek pot en solda 453.000Hz pot ortada 455.000Hz pot en sağda 456.500Hz .serbestçe kısıtlama olmadan pot ile dolaşıyoruz.

yani toplamda pot ile 3000Hz 10 Hz'lik adımlar ile oynayabiliyoruz ( SPAN )


ne zamanki TX butonuna bastık ve bunu el mikrofonu olarak düşünürsek. yani Pin 0 oldu. Pic merkez frekansı olan 455.000Hz dönecek.

TX butonu bıraktığımız an yani Pin Logic 1 oldu. Potu en son nerede bıraktıysak o değere geri dönecek.

en basit anlatımı bu olabiliyor hocam.

ete

#19
Önceden butonu bırakınca merkez frekansa dönülecek demiştin şimdi ise pot ile serbestce dolaş yukarı aşağı ama butona basınca merkez frekansa dön diyorsun. Bu durumda tx e basınca yada basıp bıraksanda merkez frekansına dönülecek demektir.
Başka açıklama gerekmez. Yanlışda olsa bir şey yapalım sonuca göre düzeltiriz.
Ete

Pepe

#20
ver post #31

ete

Onur ,
Aklıma bir şey daha takıldı.
Başlangıçta sistem ADC değerini okuyup pot konumuna göre bir değer hesaplayıp hesaba uygun frekansı çıkartacak.
TX e basınca Merkez frekansına dönecek sistem. Bu noktada butonu bıraksanda sistem merkez frekansında kalırsa sonrasında hiç bir şekilde pot değerini dikkate almayacaktır. Tekrar potu değerlendiren sisteme dönüş için işlemciye bir ipucu vermek gerekir diye düşünüyorum.
Mesela, Merkez frekansına dönme işini yalnızca TX butonuna basınca yapmış olsa butonu bırakınca tekrar potu değerlendirse ip ucu TX butonu olur.

Bunu bir düşün istersen. Yeniden pot'u dikkate almayı nasıl başlatacağız??

Ete

onurinci

hocam haklısınız biraz zor.ama benim için , eğer birşey yapamayacak olsam , en kötü şöyle bir senaryo oluşturmuştum.

diyelimki Pot ile istenen skalada 10 Hz adımlar ile gezinme işini halledebildik.

ADC bize 256 yada 1023 rakamı sunuyor, TX butonuna basınca Potun Wiper ( orta ucunu ayırıp TL431 gibi bir Referansla 2.5 Voltta tutup Center'de kalmaya zorlamak olacaktı.

gerisi inanın benim içinde bir muamma , aklıma o anki değeri EEpromda saklayıp saklayıp onu okuma fikri geliyor,

ama sizin daha evellki savlarınızda Eepromun pek sağlıklı olmadığı, defalarca yazılmaması gerekliliği idi.

Arduino örneklerine baktım. Pot yerine Encoder kullanmışlar.bir şeyler bulabilirim ümidiyle eşeleniyorum. Encoderli sistem kötü gibi , cihazı her enerji verdiğinizde bir gün evvel bıraktığınız konumu hatırlayamıyor, o yüzden pot mekanik olarak posizyonunu koruyacaktır.

Pepe

En la demostración que subí antes en proteus funciona así cuando se presiona el pulsador no se suma el valor del adc a la frecuencia central  y cuando se suelta se suma el valor del adc afectado de una escala

onurinci

#24
Hi Pepe Many thanks , Simulation Proteus ADC Warning. ANSEL Register ADCS Clock Speed Change.

100 = FOSC/4 , tomorrow real circuit try...

onurinci


Pepe

#26
ver post 31

ete

Pot yerine encoder kullanılması bütün sorunları halleder. Çünki pot gibi bir sabit değer üretmez.
Encoderin sağa yada sola çevrilmesi ile üretilen değerler her tık da 10 Hz olmak üzere ana frekans değerine eklenir veya çıkartılır. Bu artı veya eksi değer butona basılınca sıfırlanır ve otomatikman merkez frekansına dönülmüş olur. Bunu en baştan önerecek idim ancak kullanılan işlemci 12F675 hem pin sayısı ile hemde program hafızası ile sınırlı imkanlara sahip. 16F1825 veya 1827 gibi bir işlemci kullanılır ise her şey mümkün.
Dün akşam biraz hesap kitap meselesi üzerine kafa yordum. Frekans register hesabı PBP ile yapılması imkansız gözüküyor. Yaptığım tespitlerde 10 hz lik artış register hesabında 107 değeri kadar bir eklenti yaratıyor. Bir sonraki 10 Hz yine aynı miktarı gerektiriyor. Bu ip ucunu kullanarak bir şeyler yapılabilir.

Diğer bir yöntem ise bir data tablosu kullanarak bu işi yapmak. Bir yöndeki değer artışı yada eksilişi 1500 Hz olunca bunu 10'a bölersek toplamda 150 adet farklı data gerekiyor. Basic de data tablosu 255 adet data tutabilir. Bize ise 150+150=300 data gerekiyor. BU durumda sola dönüşler için ayrı bir tablo sağa dönüşler için ayrı bir tablo tutularak bu iş yine halledilebilir. Sonuçta yine 150 kademe hesabına dayanıyor işlemler. Bu nedenle ADC den okunan değerin kaç kademeye denk geldiği hesaplanıp ona göre işlem yapmak mümkün.
Pepe bu işle uğraşıyor ama olayı tam olarak anladığını sanmıyorum. Öncelikle similasyonları çok zor çalışıyor. Ya devrede yada yazılan programda bir terslik var. Çalışsa bile bir müddet sonra durup sona erdi deyip kapatıyor. Ters giden bir şey olduğu kesin.
Ancak gördüğüm kadarı ile Proton da frekans hesabı yapılabiliyor. Belkide benim programı yazıp onunda protona çevirmesi ile  bu iş yine halledilebilir. Hatta belkide Proton olarak yazabilirim programı ancak derleme imkanım olmaz onuda Pepe yada proton kullanan birisi yaparsa iş halledilmiş olacak. Çünki doğru pogram pot yada encoder her neyse konumuna göre frekans belirlenip yeniden register hesabı yapılması şeklinde olmalı.

Ete

ete

Pepe,
I ask you to make some changings on your program and re-compile it.

changing-1;
   
   DelayMS 100
   
   '--- Inicialización AD9833 ---
Change DelayMS 100 to DelayMS 200   because 100 ms is not enough.

Changing-2
ADCValue = 512   change this as ADCValue = 511 
Because on mid point of POT you can get 511 only not 512

Changing-3
Frecuencia = 455000 + ((ADCValue - 512) * 1500) / 512
Change also all the 512 to 511 in this formula.

Thats all.

Pls pay attention to your calculation. If you put the Pot to midpoint You should calculate the freq_reg as hex 004A 8C15 and the LSB of the reg should be (8c15h & 3FFFh)+4000h=4C15h
But when I run your program (in simulation) I see the LSB as 64C4h means there is something wrong on your calculation pls. check it.

-May be I can help you to re-arrange the formula,
The real equation is as follows;

Frq_reg=(455000 x 268435456)/25000000

If we make some simplification

Freq_Reg=(455 x 268435.456)/25  or  Freq_Reg=(455000 x 268.435456)/25

In this case your formula should be as follows;

frec = (Frecuencia * 268.435456) / 25
Check it pls.

Ete

Pepe

#29
ver post #31

Powered by EzPortal
▲