Sudah lama tidak utak atik rangkaian RF jadi ingin nostalgia, teringat dulu waktu masih punya call sign YD6DEK, main di 100m (am), 80m (SSB) dan 2m (FM).. tiba2 jadi ingin membuat sendiri 80m SSB receiver..
receiver di design untuk bisa cover 2MHz – 7.5Mhz… harusnya ini sudah bisa cover 100m, 80m dan 40m? setelah membuka stok komponen yang ada maka dipilihlah frekwensi IF sebesar 8MHz (saya punya stok cukup banyak crystal 8MHz untuk ladder filter nanti)
oleh karena itu saya perlu VCO dengan range
2 + 8 = 10 MHz
7.5 + 8 = 15,5 MHz
lets start dengan VCO (mungkin nanti saya coba dengan Direct Digital Synthesizer .. import chips :(?)
mendesign VCO yang bisa lock di 10MHz-15.5MHz tidak mudah karena range ini cukup lebar.. setelah mencoba dengan beberapa rangkain VCO dengan BJT, MOSFET serta bereksperiment dengan banyak coil, ternyata pemanfaatan IC TTL 74HC04 memberikan hasil yg memuaskan (lihat skema di berikut)
untuk PLL saya menggunakan IC LM7001 ic ini sudah lawas tapi murah meriah dan ternyata saya masih menyimpan beberapa unit ini, mungkin next time saya coba dengan FLL yang di bangun dari ATMega8 (lihat gambar berikut)
IC PLL LM7001 di control oleh Microcontroller ATMega8 melalui 3 pin dengan mode SPI, 3 buat push button menjadi sarana pengaturan frekwensi UP, DOWN, STORE. UP/DOWN menaikan/menurunkan frekwensi 1 KHz, STORE menyimpan di EEPROM frekwensi terakhir. Untuk detil LM7001 dan chip lainnya silahkan di baca/download datasheet nya pada link di akhir tulisan ini.
‘*******************************************************************************‘ 80M VCO
‘ PLL LM7001
‘ ATMega8
‘ 16×2 LCD
‘ 10MHz IF Freq
‘*******************************************************************************
$regfile = “m8def.dat”
$crystal = 8000000 $swstack = 32
$hwstack = 32
$framesize = 32 Declare Sub Send_command(byval Pmode As Word , Byval Value As Word )
Declare Sub Init_pll
Declare Sub Incr_pll
Declare Sub Decr_pll
Declare Sub Store_pll
Declare Sub Dsp_freq ‘*******************************************************************************
‘ config pin
‘******************************************************************************* Config Lcdmode = Port
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
Config Lcd = 16 * 2 Config Portd = Output
Config Portd.5 = Output
Config Portd.6 = Output
Config Portd.7 = Output Config Pinb.0 = Input
Config Pinb.1 = Input
Config Pinb.2 = Input Cen Alias Portd.7
Clk Alias Portd.6
Dat Alias Portd.5 ‘*******************************************************************************
‘ Variable
‘******************************************************************************* Dim I As Word
Dim J As Byte
Dim Pmode As Word
Dim Button As Byte
Dim Freq As Word
Dim Efreq As Eram Word At &H10
Dim Sfreq As Word
Dim Dfreq As Word
Dim Sdfreq As String * 5 ‘*******************************************************************************
‘ main program
‘*******************************************************************************
Initialization: Waitms 100
Reset Cen
Reset Clk
Reset Dat Set Portb.0
Set Portb.1
Set Portb.2 Deflcdchar 0 , 32 , 32 , 32 , 32 , 32 , 32 , 31 , 32 Deflcdchar 0 , 31 , 31 , 32 , 17 , 27 , 27 , 31 , 31 ‘ antenna symb
Deflcdchar 1 , 31 , 31 , 31 , 30 , 29 , 11 , 23 , 31 ‘ memory
Deflcdchar 2 , 14 , 16 , 12 , 2 , 30 , 9 , 9 , 9 ‘ S/N Deflcdchar 4 , 32 , 32 , 32 , 32 , 32 , 32 , 31 , 32 ‘ S1
Deflcdchar 5 , 32 , 32 , 32 , 32 , 1 , 31 , 31 , 32 ‘ S2
Deflcdchar 6 , 32 , 32 , 32 , 7 , 31 , 31 , 31 , 32 ‘ S3
Deflcdchar 7 , 1 , 7 , 31 , 31 , 31 , 31 , 31 , 32 ‘ S4 Cls : Cursor Off
Locate 1 , 1 : Lcd “80m RX SSB V1.0 “
Locate 2 , 1 : Lcd “Jalapindai 2010 “
Waitms 10 Main: ‘ Pmode = 704
‘ Pmode = 896 Cls
Locate 1 , 1 : Lcd ” KHz”
Locate 2 , 1 : Lcd ” jalapindai.com “
Call Init_pll
Call Dsp_freq Do
Button = Pinb And &H07
Select Case Button
Case 3 : Call Store_pll
Case 5 : Call Decr_pll
Case 6 : Call Incr_pll
End Select Loop Goto Main End ‘*******************************************************************************
‘ Init PLL
‘*******************************************************************************
Sub Init_pll Freq = Efreq
If Freq = 65535 Then
Freq = 10000
End If Call Send_command(704 , Freq)
Call Dsp_freq
Locate 1 , 1 : Lcd Chr(1)
Locate 1 , 2 : Lcd Chr(0) End Sub ‘*******************************************************************************
‘ Incr_PLL
‘*******************************************************************************
Sub Incr_pll Incr Freq
If Freq > 14500 Then
Freq = 14500
End If
Call Send_command(704 , Freq)
Call Dsp_freq
Locate 1 , 1 : Lcd ” “ End Sub ‘*******************************************************************************
‘ Decr_PLL
‘*******************************************************************************
Sub Decr_pll Decr Freq
If Freq < 10000 Then
Freq = 10000
End If
Call Send_command(704 , Freq)
Call Dsp_freq
Locate 1 , 1 : Lcd ” “ End Sub ‘*******************************************************************************
‘ Store PLL
‘*******************************************************************************
Sub Store_pll If Sfreq <> Freq Then
Efreq = Freq
Sfreq = Efreq
End If Locate 1 , 1 : Lcd Chr(1)
Waitms 50
End Sub ‘*******************************************************************************
‘ Display PLL
‘*******************************************************************************
Sub Dsp_freq Dfreq = Freq – 8000
Sdfreq = Str(dfreq)
Sdfreq = Format(sdfreq , “0.000”)
Locate 1 , 8 : Lcd Sdfreq
Waitms 50 End Sub ‘*******************************************************************************
‘ Send Command
‘*******************************************************************************
Sub Send_command(byval Pmode As Word , Byval Value As Word) Set Cen
Waitus 20 ‘ Shiftout Dat , Clk , Cmode , 3 , 24 , 10 ‘bit 0 to 13 (N value)
For I = 0 To 13
If Value.i = 1 Then
Set Dat
Else
Reset Dat
End If
Waitus 10 Set Clk
Waitus 10
Reset Clk
Waitus 10
Next I ‘bit 14-23 (mode)
For I = 0 To 9
If Pmode.i = 1 Then
Set Dat
Else
Reset Dat
End If
Waitus 10 Set Clk
Waitus 10
Reset Clk
Waitus 10
Next I Waitus 20
Reset Cen End Sub
Datasheet Link
Maaf pak ganggu, mungkin ini ada hubungannya atau tidak dgn artikel anda, tapi saya betul 2 perlu bantuan. Saya punya digital tuner FM(radio) sedang bermasalah, dia tidak bisa terima gelombang stasiun radio radio FM di frekuensi centernya. sbg misal ada stasiun tradio dgn frek. 100.7 Mhz justru pada frek .itu suara tak keluar kalau diatas atau dibawahnya sedikit baru keluar suara tapi suara tidak bagus dan mono pastinya.Apakah ini ada hub. dgn IC LM 7001 yg rusak atau pada rank. demodulator FM-nya yaitu IC IC BA 1332? Mohon petunjuknya. TerimaKasih
IC LM7001 adalah PPL IC yang biasanya bekerja mengendalikan osilator lokal, frekwensi osilator lokal ini di campurkan dengan frekwensi yg di terima dengan selisih 10.7 MHz untuk membentuk frekwensi antara (IF), sedangkan IC BA1332 adalah IC FM detectordan stereo encoder. Untuk masalah anda pastikan dahulu bahwa frekwensi osilator lokal sudah tepat pada + atau – 10.7MHz dari frekwensi yg ingin di tangkap. misalnya untuk menerima 100.7Mhz perlu osilator lokal pada frekwensi 90.0 MHz atau 111.4 MHz, bila ini sudah benar, baru kita pastikan IC decoder nya, periksa di pin 12 BA1332 ada frekwensi 19KHz..
Pingback: 80m SSB Transmitter using MC3362, DDS AD9835 Local Oscillator, 10 MHz Crystal Filter « Diankurniawan's Blog
Numpang baca ya boss,…
Untuk chassing cuantik buanget beli di mana boss, itu lho alumunium-nya.
Silahkan dibaca mas srundeng, chassing saya beli di Jaya Plaza Bandung.
Hello,
Very impressive works, can you send me ATMEGA8 dource or hex code for development if possible?
73’s de TA2LJ Hakan Guner
Hello Hakan,
send me an email to dian_kurnia@yahoo.com,
i will send you back the hex and code
Hi again,
Thanks for your promt reply:) I checked your page recently. I will be pleased if you send me the source and/or hex code for LM7001 + 74HC04.
My mail: hkngnr@yahoo.com.tr
Thanks in advance and 73’s de TA2LJ
Hakan GUNER
Hi Hakan,
sory for my late answer, please check/visit this following post, https://diankurniawan.wordpress.com/2010/06/25/low-cost-simple-wide-band-vco-lm7006-74hc04/
i hope this will help you
regards
Dian Kurniawan
Bang Dian beli LM7001 di mana ya and harganya brp?
saya beli di bandung, di JayaPlaza.. dulu harganya rp 15rb
OM Dian,
saya tertarik dengan low cost & simpe wide band VCO using LM7001 + &$HC04.
Buat saya sih tidak perlu lebar. Yang saya butuhkan kestabilan. Saya membuat ararinha untuk 15m band, IF 10 MHz, dengan VFO 11.0-11.45.
Saya ingin dengan bantuan PLL, saya bisa bermain digital mode.
apakah ada skema rangkaian detailnya?
de yc0nho
om…boleh donk dikirim heksa atmega8nya ke email aku…. Mu belajar fm 60-80mhz tp bngung g ad yg ngajarin,,,,,,,,kbetulan aku lewat blogny om….buatku sgt menarik ,,,,,,,,,
Terima kasih mas Latif,
maaf telat menjawab, untuk FM 60-80 sebaiknya pake VCO biasa (bjt/fet) + LM7001 sebagai PLLnya, utk hex nya boleh saya email atau saya upload disini
Salam
Dian Kurniawan
Met siang om diankurniawan, salam kenal nama sy Rian Kurnia, saya pemula terutama ic programer tertarik sekali ingin mencoba bikin PLL sendiri, boleh sharing hexa nya om untuk di FM freq 70-80Mhz , boelh ke email sy rian.kurnia@dss-tbk.com, sukses selalu buat om diankurniawan
Om Dian,apa IC TTL 74HC04 bisa diganti/sama dengan 74HC00 ?
Trims
Itok
pada prinsipnya bisa selama inverter secara logic, tapi mengenai perfomance mungkin agak sedikit berbeda.. saya belum membandingkan
Salam sejahtera buat Om Dian…..
Om, saya newbie…dan saya sedang membuat am 80 meter dengan menggunakan pll MC145162P dengan mikrokontroler Atmega8…
Om, bisa dibantu dikirimkan hex file untuk Atmeg8 tersebut. Saya akan gunakan pada pll 80 meter seperti di blog Om Dian..
bisa kirim ke email saya ya Om…
Terimakasih dan saya tunggu balasannya…
Mohon maaf telat membalas,
code nya saya tampilan di artikelnya ya
salam
Dian Kurniawan
pak dian,
bila ingin bekerja di frek 40m band apa saja yang harus dirubah ya?
utk osc mungkin di bagian coil 5uh bisa dirubah.
lalu utk frek kerja nya bagimana pak?
apakah ada batasan dari program uC nya?
bagian mana yang harus dirubah ya?
Inti rangkaian ini sebenarnya adalah LC osilator dengan memanfaatkan transistor logic didalam IC TTL sebagai penguat umpan balik, yang kemudian di kendalikan oleh IC PLL (LM7001).
VCO ini saya desain untuk freq kerja 10-14.5MHz, silahkan dipilih frekwensi antara (IF) nya yang sesuai untuk kebutuhan cover 40m, akan tetapi bila menggunakan direct method VCO harus di turunkan frekwensi-nya sesuai dengan band yg diinginkan. Frekwensi resonan tidak dapat melebihi frekwensi kerja IC TTL.
Program dirancang dengan tujuan yang sama untuk mengendalikan frekwensi VCO dari 10-15MHz dengan step 1KHz. Bila ingin digunakan pada frekwensi lain silahkan modifikasi nilai data yang di kirimkan pada IC PLL (LM7001). Silahkan modifikasi nilai variable Freq pada rutin ini_pll, incr_pll dan dec_pll. Nilai Freq ini bila dikalikan dengan 1000 langsung menunjukkan nilai frekwensi yang dikendalikan.
semoga bermanfaat
fast response! many thanks..
pak dian, untuk mengoperasikan uC nya pakai kristal sendiri atau bisa numpang ke kristal pll ya? kalau mau terpisah pakai kristal berapa mhz pak? 8mhz sesuai program(cmiiw) atau bisa pakai 16mhz? saya ada beberapa kristal bekas 16 dan 12mhz.
thanks,
Met malam mas, mas dian mau tanya kalau nilai ini apa yah? 65535 freq kah? rumusnya seperti apa? makasih sebelumnya..
65535 atau hexa nya FFFF adalah nilai default blank eeprom (16 bit), maksudnya kalau eeprom nya belum pernah save satu nilai pun (blank) maka pada saat restart akan masuk ke freq 10000
Terima kasih mas dian atas jawabanya! oh iya kalo mau tanya lagi code ini untuk merubah freq 88-108Mhz bisa gak mas? terus apa yang di rubah pada source code ini? maf yah mas sebelumnya banyak tanya. jadi saya punya tuner FM tapi pengen dikendalikan pakai PLL.
oh iya mas dian punya source codenya gak? terima kasih
source code ada diatas tinggal di sesuaikan nilai nya saja, utk FM sesuaikan dengan frekwensi IF dan sesuaikan step nya, tapi untuk mudahnya lihat database nya dulu jadi faham untuk mengubah source code nya
om Dian, output RFdari pll ini yang diumpankan ke exiter SSB di bagian mana ya om??? maaf agak oot ni,…
outputnya masuk ke mixer untuk LO, tapi sebaiknya di buffer dulu dengan satu transistor
Pak sorcodenya di komplie kok error seperti ini kesalahan dimana ya mas : Error : 242 Line : 140 Source variable does not match the target variable [ 0|DFREQ – 8000] , in File : D:\2TOI\PLL dg Atmega 8\PLL.bas
itu bug karena copy paste saja, coba hapus line tsb dan ketik lagi dgn code yg sama..
Pak, itu kalau mau ngasih indikator Locked/Unlocked nya dimana ya?
trimakasih
setahu saya LM7001 tidak memiliki indicator lock, tapi sejauh yg saya gunakan, selalu berhasil lock dengan baik
maaf om program yang di pakai untuk compile menggunakan software apa ya? terimakasih
utk program ini menggunakan BASCOM
Bagus x homebrew nya klau buat 7.000-11.000 Mhz .buat ngebrik 7 ama 11 bisa kang.kira 2 brapa? Aditia hp.08994811333
saat ini kita sedang mendesain yg all band, atau mono band..
mohon maaf ini dolar terus naik turun jadi berubah2 terus desain kita
OM dian, bisakah lm7001 nya diganti dengan lc72131 ? apa ada yang perlu dirubah dari coding diatas ? terimakasih
LM7001 dan LC72131, struktur format datanya berbeda walau mirip, silahkan di sesuaikan dengan datashet nya
Salam kenal om dian setelah sekian lama saya cari blog yang saya cari ahirnya ketemu juga disini .saya sangat tertarik sekali dan ingin mencoba bikin pll yang mungkin bisa saya aplikasikan pada tuner fm yang range frekwensinya 70-110mhz.kalo berkenan saya minta bantuan file hexnya dikirim ke emailku afixnet12@gmail.com.terimakasih
Salam kenal pak dian kurniawan blognya sangat menarik .saya ingin mencoba bikin pll seperti diatas akan saya aplikasikan buat tuning tuner fm.range frek 70-110mhz terus yg saya mau tanyakan apa aja yang perlu rubah.dan kalo bisa saya minta bantuan file hexnya bisa dikirim ke afixnet12@gmail.com terimakasih
Gan, tlg minta coding c (cavr) untuk pll fm untuk brik2kan, trims
azahraaptriwida@gmail.com
maaf saya belum membuat fm brik2an
Artikel yang sangat menarik…
maaf om boleh tanya ya :
1. pmode = 704 atau pmode = 896 , angka pmode tsb diperoleh dari mana ya?
2. pada perintah : If Value.i = 1 , penjelasannya gimana ya?
maaf pertanyaan orang baru belajar om, terima kasih banyak….
silahkan di buka datasheet IC LM7001, berapa nilai register yg harus di feeding ke IC tsb terkait frequency lock yg diinginkan
Ok om, paham…terima kasih banyak…
sama2