Saturday, November 14, 2015

Simpleceiver ~ Part 10

The Arduino Pro-Mini and the AD9850

Now we will explore the Arduino Pro-Mini driving the AD9850 DDS Board to provide the Local Oscillator injection frequency for the Direct Conversion Receiver and later with a one line code change will provide the required injection frequency when the Simpleceiver is converted to a full fledged Super-heterodyne. The Intermediate Frequency (IF) was chosen to be 12.096 MHz largely in part because I had a stock of 12.096 MHz crystals. But there is a method to the madness because with a 5.0 MHz VXO or standard LC 5.0 MHz VFO you can also operate the Super-het on 40 Meters. (Keep in mind 7 +5 =12 where the LO is now below the incoming frequency. In practice high side mixing is better because of harmonic issues but will work nonetheless on the low side). A separate crystal oscillator operating at 12.096 MHz will provide the BFO injection frequency.
There is a lot of code floating around for driving the AD9850 with an Arduino; but one in particular I have found to be quite robust and that is the code available from Rich, AD7C. Here is a link to the code I used which is a modified version of AD7C's. Note my pin wiring (and sketch) is slightly different than what is shown in the original AD7C sketch. --he used pins 7,8,9 and 10. I used Pins 4, 5, 6 and 7. All important is that you do not change pins 2 and 3 which feed the encoder--these are the interrupt pins and they are cast in stone. [See my wiring diagram below.] Also note that my version of the sketch is in notepad so all you need to do is copy the sketch and drop that into an Arduino IDE. BUT depending upon which version of Arduino IDE you are using you may have to make other code modifications as some of the libraries such as you would use for the LCD are IDE dependent. What will work for an LCD display in an earlier version like Arduino 1.0.5 will not work in Arduino IDE 1.6.3 and higher.

  • Caution: Create a  Sub-directory in your Arduino directory marked Simpleceiver and include the .ino sketch plus the rotary.h and rotary.cpp files. You must also have in the Arduino library folder the LiquidCrytsal_I2C libraries. If this is Greek to you then go back and start with square one on how to deploy the Arduino.

Not to worry! When you purchase an LCD display make certain you know its I2C address. The most common address is 0x27 but some are 0x3F and Adafruit uses A0. Now most of my code is written with IDE 1.0.5 but the most current IDE is 1.6.4. You will have to do some additional code changes if you are using a later IDE. There is a link on my website that tells you how to do that. Look under the listing N6QW Projects and it is the last item marked "LCD's and Arduino 1.6.3". Those software programmers sure make it tough for the ham homebrewers.
The AD9850 is an easy device to interface to the Arduino as there are but 4 connections in addition to +5VDC and ground. The Arduino has an on board regulator which supplies the 5 VDC for the AD9850 as well as 5 VDC for the display.  My power source to the Arduino/AD9850 is a simple 9 Volt 1 Amp regulator (LM7809--TO-220 type) that connects to the 12 VDC rail.

The display is operated from the I2C protocol which comes with the Arduino architecture. Four wires are all that is needed and include the SDA (Data on Pin A4) and SCL (Clock on Pin A5) and the other two are + 5VDC and Ground. That said you do need what is called an I2C backpack which is a small interface board which takes those 4 lines and converts them to 16 lines to connect to the standard parallel LCD. In a sense the I2C backpack is a serial to parallel convertor.

Depending on whose Pro-Mini you purchase Pins A4 and A5 can be on one end of the board or on the top of the board. Try to avoid the top of the board version as getting wiring to the top of the board is not convenient. Now if this is the first time anyone has used a Pro-Mini you will also need to have USB to Serial convertor board so that you can interface and write code to the Pro-Mini. This is a one time purchase (about $6 USD) but can be reused for loading code on any Pro-Mini. Loading code on a Pro-Mini is a bit arcane. After connecting Pro-Mini to the convertor assembly and the USB end to the computer PRESS and Hold the reset button located on the Pro-Mini and then proceed to load the code. When a message appears at the bottom of the computer screen telling how large is the program quickly let go of the reset button and the code will load. The reason for the Pro-Mini --cheap!

 Construction Notes

When I build a Digital Local Oscillator whether it is the AD9850 or Silicon Labs Si5351 I like to use a small piece of through hole prototype board. This type of board facilitates the use of pin headers and in line sockets. For interconnect wiring on the underside of the board I use #30 wire wrap wire and solder all connections. Typically these small prototype boards have board mounting holes in each corner which then enables using small aluminum type pillars to provide a means of elevating the boards so the wiring is not shorted to ground and facilitates mounting the board to the main chassis. The parts and pieces I typically use are shown below. I bought ten such prototype boards for $5 delivered from China thus quite a bargain. The pin headers and in line sockets I get from Jameco Electronics.

With this final piece covering the Arduino/AD9850 you are now ready to start building the Smpleceiver Direct Conversion Receiver.

Pete N6QW