Easy-to-use higher frequency clock generator - Page 1
Forum section: electronics / beginners

author: coaxialgamer
author_rank: Contributor
timestamp: August 23, 2019, 04:31:19 pm
content: I'm working on a small project for which I need to generate a clock signal.I'd typically use a 555 timer, but I need higher frequencies, approaching 10mhz. So that's not going to cut it.I'm sure there are great options out there for this kind of circuit. However, I'm far from an expert in electronics, and I mostly need something that's easy to use ("programmed" externally, like a 555).I'd really like to be able to adjust the output frequency, which is why I don't really want to use a simple crystal oscillator.Jitter isn't too much of a concern, but I do need an LVCMOS output to work with the discrete 74 series chips I'll be using.What options do I have here?Again, I'm a noob here, so feel free to point out if I'm ignoring something obvious.

author: radiolistener
author_rank: Super Contributor
timestamp: August 23, 2019, 06:41:18 pm
content: you can use si5351 synthesizer module. It allows to make up to 3 output frequencies from 2 PLL's. You can setup it with some cheap microcontroller such as STM32F103 blue pill or some arduino. It allows to get any frequency from 5 kHz to 200 MHzhttps://www.aliexpress.com/item/32817431908.htmlIf you needs just fixed 10 MHz, you can use Crystal Oscillator, jut put proper power supply and get 10 MHz output:https://www.aliexpress.com/item/32949421823.html

author: coaxialgamer
author_rank: Contributor
timestamp: August 23, 2019, 06:57:20 pm
content: Will I need to incorporate this MCU into my actual design, or can I program it once and forget about it?

author: rdl
author_rank: Super Contributor
timestamp: August 23, 2019, 07:05:41 pm
content: You can make one from a couple of logic gates and a few other parts. Just search for "logic gate oscillator".

author: Gyro
author_rank: Super Contributor
timestamp: August 23, 2019, 07:07:14 pm
content: Quote from: coaxialgamer on August 23, 2019, 06:57:20 pmIf you look on ebay, you can also find controllers - eg. pre-programmed Arduinos to to take the hassle out of the user interface.eg:https://www.ebay.co.uk/itm/VFO-DIY-ARDUINO-PROGRAMMING-CODE-UPLOAD-SI5351-AD9850-AD9851-OTHERS-for-Hams/183786465985?hash=item2aca86eac1:g:pJQAAOSwEVlcBVnH

author: radiolistener
author_rank: Super Contributor
timestamp: August 23, 2019, 07:07:55 pm
content: yes, you will need to program it each time after power up. Technically you can use factory programmed chips, but this is relevant for large amount production. For amateur projects it's more easy to get default chip and program it with MCU.For example, you can use this blue pill module and ST-Link USB programmer to flash it:https://www.aliexpress.com/item/32963983251.html

author: magic
author_rank: Super Contributor
timestamp: August 23, 2019, 07:30:19 pm
content: Check out those partshttps://para.maximintegrated.com/en/results.mvp?fam=silioscOne of them is programmable with external resistors (not sure if flexible enough for you), others are "program once by I2C and forget". DS1085 and DS1085L seem to be the most flexible of the I2C types, followed by DS1086/L.If you use Linux with open source drivers, I2C programing can be done with a VGA/DVI/HDMI port and a right cable

author: radiolistener
author_rank: Super Contributor
timestamp: August 23, 2019, 07:43:55 pm
content: I painted schema on how to wire together si5351 module with STM32 blue-pill:As you can see, there is nothing difficult. In order to flash STM32 MCU, disconnect it from power supply and connect to ST-Link V2 programmer, connect it to USB and flash file from attachment (I made 10 MHz setup on CH0 for you).In order to flash, you will needs to download STM32 ST-LINK Utility:https://www.st.com/en/development-tools/stsw-link004.htmlAfter that just wire it with si5351 module and connect 5V power supply. You can use also 3.3 V power supply, just put it on 3.3 pin. That's itI also added picture with schema into archive with flash firmware.

author: coaxialgamer
author_rank: Contributor
timestamp: August 23, 2019, 07:56:30 pm
content: About these I2C devices, more generally: you'd typically program them using a general-purpose microcontroller, correct?I saw the binary file you wrote (thanks), but assuming I settled on something else I2C, would I need to write code for that? Is there pre-existing software to do handle it? Where can I find ressources on the subject?I'm not adverse to learning about any particular MCU, I just don't quite know where to look is all.

author: coaxialgamer
author_rank: Contributor
timestamp: August 23, 2019, 07:57:04 pm
content: Thanks, that chip which uses external resistors might just do. I'll look into it.

author: radiolistener
author_rank: Super Contributor
timestamp: August 23, 2019, 08:11:52 pm
content: Quote from: coaxialgamer on August 23, 2019, 07:56:30 pmyesQuote from: coaxialgamer on August 23, 2019, 07:56:30 pmI'm using complicated environment, it will be hard for you to start with it. But there is exists much more easier environment, for example you can start here:https://circuitdigest.com/microcontroller-projects/getting-started-with-stm32-development-board-stm32f103c8-using-arduino-ideIn short, you will needs to calculate XTAL (25 MHz) multiplier and divider in form of a+b/c and then send it to si5351 registers through i2c port. And also send some control registers settings in order to enable CH0 and select proper clock source. Thats itFor example in binary firmware that I made for 10 MHz (in attachment above) I used:- PLL multiplier: { a=36, b=0, c=1 }- divider { a=90, b=0, c=1 }It leads to PLL frequency 25 MHz * (36 + 0/1) = 25 * 36 = 900 MHzAfter divider we will get 900 MHz / (90 + 0/1) = 900 / 90 = 10 MHzThe output of si5351 is very clean and very stable. You will not be able to get so clean and stable signal with circuits like 555 or something like that.

author: tggzzz
author_rank: Super Contributor
timestamp: August 23, 2019, 08:20:24 pm
content: Quote from: coaxialgamer on August 23, 2019, 04:31:19 pmOne solution to thatminimalspec is a 74lvc1g14 with a resistor between output and input, and a capacitor from the input to ground. Use a variable R or C to change the frequency.