• Si5351 arduino

    Si5351 arduino

    To many, this will be just another Si VFO project, with nothing to distinguish it from the others. To me though, it was a complete mystery. I have been very adept, my whole life, at studiously avoiding anything to do with digital electronics, computing, coding, and the like.

    This seemed like a strangely non-committal response. He was just trying to appear knowledgeable by giving me a non-answer! This suspicious reaction was quite representative of the way I thought about computers back then. These expensive boxes just sat there, doing nothing, except waiting for instructions. Such a disappointing lack of character! How is one supposed to respect a person or an object that sits quietly in a corner, waiting to be told what do?

    How feckless!

    Ms access inventory and sales database

    Dedicated hardware, however, was different. When you bought a radio receiver, you knew that, on twiddling a few knobs and flicking a few switches, it would receive radio signals. A burglar alarm would alert you to the presence of burglars well in theory, anywayand those remote control cars that RS sold by the gazillion were guaranteed to quietly drive your family nuts in the days after Christmas before work, and school, resumed.

    Computers, on the other hand, promised everything but actually did nothing, until you told them what to do — and even then, there were a myriad of ways in which they could obstinately refuse to comply with your wishes.

    Not for me! And so it was that, throughout my adult years, I deprived myself of exposure to things digital. I am not proud of my incurious nature about many things — though, when I am interested in something, I exhaust myself with the sheer intensity of focus.

    The projects I built ran off anything from a few volts, up to V or even more. What kind of a voltage was that? They came with a surfeit of incomprehensible nomenclature too. Words that sounded like something John Lennon would have made up for a song post Words like NAND.

    I had a small stash of ferrite rods, variable capacitors, resistors, and transistors, and some 9V battery snaps and with that, I had all that I needed. Yes — I was that closed-minded.This Instructable describes the construction, and operation, of a stand-alone frequency synthesiser suitable for use as a signal generator, or for use as the local oscillator in an amateur band transmitter or receiver.

    My prototype was built on a piece of "Vero" board. The Arduino source code is well annotated and contains links to all of the required "libraries". Construction is not critical. The Si breakout board is designed to run off 5 volts and has an I2C interface which makes it easy to connect to an Arduino. The output level from this synthesiser is approximately 3 volts peak-to-peak.

    The second most important component is the rotary encoder which outputs the following two-bit "Gray" code pattern:. The encoder always rests at an indent pattern 11 when the tuning knob is stationary. If the tuning knob is turned CCW counter clock-wise then the pattern sequence between indents is 01, 00, 10, If, however, the tuning knob is turned CW clock-wise then the pattern sequence between indents is 10, 00, 01, This pattern reversal allows us to determine the tuning direction.

    The rotary encoder comes fitted with a single-pole push switch which I use to control the tuning step-size in increments of 10,and Hz. A brief push on the tuning knob increases the tuning step-size. A longer push on the tuning knob causes the step-size to decrease. All mechanical switches suffer from contact bounce which makes for erratic tuning.

    Optimus prime x scared reader

    Instead of "debouncing" each switch with hardware I am using a software integrator. A SPST band-change switch has been included. When the switch is activated it is possible to cycle through each of the amateur radio bands by rotating the tuning knob.

    The tuning knob behaves normally when the switch is deactivated.

    My Projects

    Programming the ATmegaP microcontroller is relatively simple. Apply 9 volts and everything should light up. Even though the breakout board runs off 5 volts, the Si chip itself runs off 3.This page contains some example code for the SiA synthesiser module chip. There are a couple of other SiA libraries on the internet. However they are either incomplete don't go all the way from specifying a frequency, to generating and setting the configuration registersor quite over-complex.

    There's a Linux Si driver but the code is very confusing and anyway it does not seem well-suited to a limited-space microcontroller environment. So, with these C examples I have tried to keep it very simple, just to show what needs to be done to get some output out of the SiA onlyand only the pin MSOP version with 3 outputs. From here, you can build on it, piece by piece, to customise it for your application. So these examples generate a 10MHz signal on the Clk0 output, that's all.

    You can choose any frequency in the range MHz, in the function call. For frequencies under 1MHz, you need to employ the final divider stage in the SiA, which can divide by powers of 2 from 1 to So for example, if you want kHz, then one way to do it is to configure the chip for a frequency of 1.

    Using the division ratios, according to the datasheet, the SiA can then generate low output frequencies from 8kHz to 1MHz.

    For frequencies above MHz, and to the maximum specified frequency of MHz according to the datasheet, some special configuration is required. I haven't attempted to tackle that in this example code. I refer to it often.

    si5351 arduino

    There are quite a lot of mistakes and confusions in both the datasheet and AN but all of the information is actually in there and it can be decyphered. The SiA is confugured using two signals, an I2C bus protocol. You only need to connect these two wires to the AVR processor. It is important to understand the basic synthesis mechanism of the SiA. There are really three stages to it:. The multiplication factor is fractional, not an integer.

    The integer part must be in the range The division ratio is also fractional with bit fractional parts. However for best jitter performance the datasheet recommends using even integers for the division factor. There are THREE "multisynth" divider stages, one for each of the three Clk outputs of the SiA other variants of the SiA have 8 outputs, and various other input arrangements; we aren't considering those here, we're keeping it simple, remember.

    Each Multisynth divider can be fed by either of the two PLL outputs, you choose. Since there are 2 PLLs and 3 outputs, and each output "multisynth" divider can be fed from either of the two PLLs, if you want to set this up for multiple outputs you have to do some tough thinking.

    If you stick to the "even integer" divider, you don't really have THREE independent flexible output frequencies, you have only two. Because two of those outputs are going to have to feed off the same PLL. If there is not a convenient integral relationship between two of the output frequencies, then for one of them you have to abandon the "even integer division" rule for low jitter. Anyway, I'm just saying. All of these things are considerations to take into account.

    But not part of my simple simple example here. It should be easy to use this on any AVR, or on the Arduino platform. Only minor changes would be needed for other microcontrollers.This was a remarkably simple build experience!

    The key is the si… three clocks, MHz, all software controlled, in a tiny 10 pin MSOP package, and all for a few dollars. With the wide range of Arduino breakouts, all sorts of control and monitoring behaviours now become possible — GPS, SWR, power and temperature monitoring for power amplifier stages or linears, sequencing, switching, wifi, bluetooth, packet data links, to name a few. Once you have control of the VFO and BFO in software, controlling other things in a transceiver like band, memories or multiple VFOs, IF filter switching is all just a matter of a few more lines of code.

    I came up with the following additional controls:. A more contemporary way of achieving the same thing is to use a 1-of decoder driven by I2C. Something like this break-out expander. Or this IO expander. That means 4 Arduino digital outputs are necessary to convert 4 bit data values to the display, plus 2 control lines. A common way around this without going to the added complexity of IO expander break-outs is to multiplex a number of pushbuttons switching on a resistive voltage divider, on a single analog input.

    The script reads the pin and interprets a voltage range for each button. I built a rack of 6 momentary on switches on a receiver front panel I prefer pushing down on a spring loaded switch over pushing in on a pushbutton.

    The values I got were quite predictable and narrow in range. In the mapping script I used wide number ranges to allow for DC supply variations or drift. The si clock outputs are square waves. There is some discussion in the forums about the harmonic content of the waveform and the need for low pass filtering. The answer is, it depends on what you are doing with the VFO signal. In the dual conversion multiband receiver I have in mind, all 3 mixers are SBL-1s. I decided that low pass filtering was desirable, and plan to add a 5 element Chebychev LPF and a broad-band 2N amplifier stage on at least the VFO clock.

    Experimenters are using Arduino analog inputs with simple external circuitry to implement the following meters in transceiver projects:. The post describing the VFO is here. A video of the new rig receiver only at this stage is here. Further details in the readme and main file header. Welcome to the world of digital electronics! There are a number of VFO kits out there now too using this synthesizer.In case you are wondering about the custom built modules some of my Si Modules have a Blue LED that is lit when power is applied.

    Kind of cool Juliano Blue! Hans Summers sells a Si kit at very competitive prices to the Adafruit board. Here is the caution: The boards from Hans use a different clock oscillator frequency for reasons of more accurate frequency generation at very low frequency divisions. He has notes on this in his git hub documentation.

    Thus using my sketches and Hans Summers Boards you may get slightly different frequency outputs. I am not sure what you change to fix this as what I was told to do I could not find the lines in the code to fix this. If you have the Summers board then contact him directly! That is it! But wait what takes it out of the minimalist class is the Arduino Nano that not only handles the command of the digital frequency generation of the LO and BFO signals but also performs command control and communications for a whole host of other functions and capabilities.

    Let us now tour our display. The top frequency readout is VFO A, which is not active at this time since Green Dot that would indicate it is in use is not lit. Were VFO A being used for transmitting, then the frequency would appear there.

    Along the right and side is Hz and my call sign There are selectable step rates including the default Hz, but also 1 kHz, 10kHz, kHz and 10 Hz which are sequenced by depressing the encoder knob. My call is to remind me who I am.

    This only appears when you initiate the TUNE function which is a 10 second Hz pulsed tone that is fed into the balanced modulator. The Hz tone is a square wave that must be passed through a three stage RC filter.

    At the very bottom you have the VFO B readout. A and B operate independently so that you can transmit or receive on either VFO. You can download the information from this web site. I do not use GitHub; but the sketches are in Notepad in a text format.

    Allies ww1

    Open up an IDE and paste the into the sketch. In a file folder in the Arduino directory marked Sudden include the sketch and the supporting files -- four of them inclusive of si Under the Arduino directory in the folder libraries you will need additional libraries for the display. If this all seems a mystery to you, STOP and find out what you need to know.

    There are some things that as a personal user you will want to change such as the Splash Screen and have your call sign on the display. There is probably room for 8 spaces but that will make things tight. If you have a two letter call then you would leave three spaces in the code so that the print statement would be display.

    Color TFT Supplier. Initially I had a link above that was from my latest buy of the Color TFT's from my long time supplier.Would you have time to update this Sketch with the new Si Library for stupid people like me I looked into this code and I believe this library is being used here, which is different from the one that Adafruit has put on their site for the Si Skip to content.

    Instantly share code, notes, and snippets. Code Revisions 7 Stars 5 Forks 2. Embed What would you like to do? Embed Embed this gist in your website. Share Copy sharable link for this gist. Learn more about clone URLs. Download ZIP.

    si5351 arduino

    UNO and boards: Encoder on pin 2 and 3. Center pin to GND. Leonardo: Encoder on pin 0 and 1. Change as necessary for your LCD. This comment has been minimized. Sign in to view. Copy link Quote reply.

    Arduino SI5351A VFO

    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Si VFO. Modified by NT7S 25 April This version uses the new version of the Si library from NT7S. The pushbutton goes to pin 11 to set the tuning rate.For a long time I wanted a general purpose signal generator.

    Now Direct Digital Synthesizer hardware is available on a single programmable chip. Even Amazon has them. Silicon Labs makes the Si in several variations. Most commonly available breakout boards though, use the A version with three outputs.

    Connectors are optional, most boards are set up for SMA female jacks. SMA connectors are wonderful but the cables to use them are pricey. My box will be used to check and align receivers so precision impedance control is less important. The data sheet says:. A thin metal gift card box was cut up to form an enclosure for the generator. It is about a quarter inch larger than the usual Altoids tin in all three dimensions.

    I needed the extra volume to fit in a battery and charger removed from a cheap phone power pack. These booster packs usually contain a single cell and it just fits. The display then shows frequency, current port selected, and the output power setting.

    Telegram font style

    Rotating the encoder knob will change the frequency digit under the flashing cursor. Press click the encoder knob to change the digit under the cursor, you can set the cursor to change digits from 1 Hz to 10 MHz. Hold one of the port select buttons down and turn the encoder knob to change output power for that port.

    If any of the above settings are changed, the software waits ten seconds, then copies the current settings into EEPROM. In the event the unit gets confused, it can be restored to last saved settings by cycling the power switch.

    Also it can be returned to default settings by holding down all three port select buttons, while powering up. Sweep is accessed from a separate menu. Press down the encoder knob for more than two seconds a long press and release to enter sweep parameters for the currently selected port.

    The unit sweeps from frequency minus that amount to frequency plus that amount so the total width of sweep is twice the setting. Sweeping is done by reprogramming frequencies in 20 steps between the limits.

    My Projects

    A second long press of the encoder knob will return to the frequency menu. All three ports can be set up but only the port currently selected in the display will be sweeping at any given time. A pulse is available at a phono jack on top of the box to trigger an oscilloscope at start of each sweep iteration. The Si was set to equal drive power on all three outputs. I examined the output on the oscilloscope, channel 1 connected to AM Out, channel 2 to Audio Out with sync taken from Channel 2.

    The result is not encouraging. It does output an amplitude modulated signal but the waveforms are bizarre. This is the best I could capture:. Connecting an audio amp and speaker does show a 1 KHz tone if the phases happen to line up just right. I found that setting any one of the generators to be one Hz off frequency results in a rolling pattern with about a one per second beat note in the speaker.

    si5351 arduino

    This method of faking Amplitude Modulation is certainly not precise or controllable. Setting one of the outputs off frequency by a few Hz does give a useful warbling tone in an AM receiver. Nice work! Looks like you used a Teensy 3. Presume the 2k2 resistors are for level shifting. I am thinking of bringibg out the 3 clocks on my next si transceiver so that it can double as a sig gen for future projects.


    Comments

    Leave a Reply

    Your email address will not be published. Required fields are marked *