Sunday, August 24, 2014

Minima - Planned Panel

Some design progress

Along with my Minima LAB modules (see previous post) I plan to actually build a Minima Transceiver.

This is what I think the front panel will look like. It will be created on brushed double sided copper clad PCB material with nomenclature applied via the Toner Transfer Method. A light protective layer of shellac (or varnish) will be applied.

The rest of the chassis will be double sided copper clad PCB material also.

I take inspiration from Dave's - AA7EE wonderful Chassis that he has built for his projects. His blog is a must-see! . . . I can only hope to be maybe 10% as artful.

My Minima - Planned Panel
Note: A front panel PTT Button may not be necessary depending on the Mic/Phone/Headset used. But, when the switch is absent within the Mic, the panel PTT can be used.

The Reset Button will be mounted on the back of the chassis.


Wednesday, August 20, 2014

Minima - Split Operation

For the last few days I have been finalizing the last little bits of code necessary to implement "Split Operation".  I had a bug that just eluded my understanding, I just could NOT see the "forest" for the "trees".

To get another set of eyes on it, I ask Jeff - KO7M to take a look. I sent him the code files and we chatted a few minutes before he left work and was heading home. AND THEN, WHILE DRIVING home we chatted some more on his cell, he was debugging the Sketch from memory !

I guess that is one of the great skills he learned when doing similar software consulting for many years at Microsoft.

I do not know how he does it. As always, he zeroed right in to the problem, we found the fault and I had a solution before he got home.

A few minutes to rewrite a few line, and the problem was solved.

So now, "Split Operation" works on the Minima using my "Alternate Tuning Method". See previous posts for details.

While in "Split Mode" the "A:" VFO is displayed as "a:", similar for "B:" is "b:".

The Displayed VFO is always Receive frequency, while the "other" VFO is used for Transmit.  Regardless, the system will only allow Transmit within the Ham Bands.

Thanks, Jeff !


Saturday, August 16, 2014

Minima - My Audio Chain

My Minima Build is still progressing slowly, I have received the audio modules back form and now doing a trial mock-up (fit) with the Audio Mother Board.

As with all of my Minima Build, it is being produced in modules, so that they can be replaced with other experimental circuits. This is NOT the most economical or desirable building technique for producing a working radio. But, for my LAB experiments this is the most flexible.
My Minima - Audio Modules
From far to near, the modules are:
  • Side Tone Oscillator
  • Mic Pre-Amp
  • Relay Control
  • Receiver Audio Pre-Amp
  • Audio Power Amp
  • Power Supply and Regulator
Each of the module's PCB are about 1 inch square and the cost for each is about $5 (for 3 copies) at  I am looking for shorter header or sockets for the final assembly.

The Audio Mother Board has all of the I/O to support the modules.

Unfortunately, OSHPark is trying out some new faster production processes which my board were a part of, the silk screen image as received was not clipped at the copper pads, as it should have been.  OSHPark is now in the process of  producing new replacement boards.


Minima - One Builders Success

John - MI0DFG
For the last few months I have been working with John - MI0DFG while programming and testing new operational options for the Minima Transceiver Controller.

John is an avid Hardware Builder and he has produced some very impressive Homebrew equipment. My Minima hardware build is still in progress. While developing the Alternate Tuning Method for the Minima, John has been willing to test a few of my program modification.

Because John is 8 time zones away, we have been communicating via e-mail, and only recently via skyp.

John has provided photos of his build which includes the RF386 Power Amp - very impressive! 

Jeff - KO7M and I put them together into this Video.

The build is very impressive, and the resulting receiver audio performance is also impressive.

Thanks, John and Farhan.

Note: Permission was granted to make and publish this video. Although inconvenienced, NO electrons were harmed and were returned to their origin during the filming and audio recording :-)


Wednesday, August 13, 2014

Git and GitHub - For Sotfware Development

Beware, this post may be contagious.

My confession: over the last few weeks I have become a "Git and GitHub Junkie" !

During my work career I have used several Software Development Tools. Most have had some sort of Revision Control, the simplest is no control at all, where files are backed up by the user. Others automate the process, and provide tools to allow the user to see the difference between revisions. In general, most just document the time line of a software project and provide a snap shot of the project when requested. That is, they provide a one dimensional view of a software project.

As an analogy comparison, Git and GitHub provides a three dimensional view or "branches" to a software project. Where simultaneous branches are used for; Development, Experimentation, Patches, HotFixes, and Deployment,  all from within one software project environment. When complete, branches can be merged to update the project, history is maintained for project completeness.

The "GitHub" is the network accessible repository, where others can access your published project.

The "Git"  is the local environment on your computer, where the actual work is typically done. There are command-line and GUI window operations to control the local software development, and which all work with most program development/editor tools.

When necessary, local Git Tools provide means to transfer status and data to-or-from the networked "GitHub". Internally and during transfers, Git and GitHub protects the data from corruption and miss handling with sophisticated cryptographic methods. The use of cryptographic methods is NOT for obscuration nor security, but is simply used to maintain data integrity. What goes into the network or local repository, will come out exactly as it went in.

Each view of a project is call a "branch", Git provides (almost) simultaneous views of a software project. For the developer, a simple command switches between branches.

Typical Local Developer commands are as follows, my linux command-line alases are shown within parentheses, "()":
  • List the current branches = (gbr), git branch 
  • Switch branches = (gco ...), git checkout <branch name>
  • Create a new branch (clone of current) = (gco -b ...), git checkout -b <a new branch name>
  • Save current branch edits = (gci ...), git commit -a -m "A quick note that is saved in history"
  • Merge another branch with the current = (gmg ...), git merge <other branch name>
  • Get current status = (gst), git status 
  • Upload to the GitHub = (gpu ...), git push --all
  • To get Help = git --help

There are other commands that do more sophisticated things, but the basics as listed above will do most things for a new user.

Branches can be named anything, but typical branch names are: "Release", "Dev" (development), "HotFix", "Exp" (experimental). These are then divided into yet other branches to support actual development effort.

For example; When HotFix1234 is finished, it would be merged into HotFix, which could be merged into Dev, and which would ultimatly be merged into Release at the appropriate time. Note: Multiple HotFixNN's could be worked on at the same time, if they effect different sections of code, they will merge without conflicts, otherwise the conflicts will need to be resolved during the merge process. Tools are available to assist with conflict resolution.

My GitHub repository is, over time more software projects will be included.

My current Git software project is "Minima - Alternate Tuning Method" (see previous posts).

Yes,  . . . I am a Git and GitHub Junkie,  . . . and with help,   I am finally willing to admit it !!


Wednesday, August 6, 2014

Minima - My Button Help Text

UPDATED: Aug 8, 2014 15:49
UPDATED: Aug 9, 2014 16:51
UPDATED: Aug 10, 2014 17:05
UPDATED: Aug 17, 2014 02:03
UPDATED: Aug 20, 2014 22:01
UPDATED: Aug 29, 2014 13:02
UPDATED: Sep 23, 2014 10:04 

My Minima Controller Alternate Tuning Method Help Text

Tuning Knob Operations, used for both Frequency and RIT

   Tuning POT = Incremental Near Center
   Tuning POT = Auto Increment Near Extremes
   Tuning POT = Faster Auto Increment At Extremes

Button Operations

   Btn1 is the original Minima FN Button
   Btn2-Btn7 are added, see:

   Btn1 Single_Press = Toggles: RIT Mode ON/OFF 
   Btn1 Double_Press = Swap A/B VFO's, Cancels any Pending Edit-IF-Freq 
   Btn1   Long_Press = VFO Copy, A>B or B>A
   Btn2 Single_Press =  Left, Move Frequency Cursor 
   Btn3 Single_Press = Right, Move Frequency Cursor
   Btn4 Single_Press = Select: USB, LSB, or Auto USB (default) 
   Btn4 Double_Press = Loads User-Preferences from Non-Volatile Memory
   Btn4   Long_Press = Saves User-Preferences  to  Non-Volatile Memory
   Btn4  Alt_PressFN = Toggles: Split Operation ON/OFF
   Btn4  Alt_PressLF_CUR = Starts CW Macro MSG1, Key down to abort
   Btn4  Alt_PressRT_CUR = Starts CW Macro MSG2, Key down to abort
   Btn5 Single_Press =   Up, Change HAM Band (saves current Freq and SSB Mode) 
   Btn6 Single_Press = Down, Change HAM Band (saves current Freq and SSB Mode)
   Btn7 Single_Press = Toggles: Tune/Cursor-Move Mode
   Btn7 Double_Press = Toggles: Menu Mode
   Btn7   Long_Press = Display, and Edit IF-Freq, Saves IF-Freq
   Btn7  Alt_PressLF = Toggles: Tune 2500Hz Mode ON/OFF
   Btn7  Alt_PressLF_CUR = Starts QRSS Beacon Macro MSG1, Key down to abort
   Btn7  Alt_PressRT_CUR = Starts QRSS Beacon Macro MSG2, Key down to abort

       "Alt_PressFN" = First press a BtnN (while holding) quickly press FN and
                          release FN, then release BtnN

       "Alt_PressLT" = First press a BtnN (while holding) quickly press LEFT and
                          release LEFT, then release BtnN

       "Alt_PressRT" = Similar to LEFT
       "Alt_PressLT_CUR" = First press a BtnN (while holding) quickly press LEFT-Cursor and
                          release LEFT-Cursor, then release BtnN

       "Alt_PressRT_CUR" = Similar to LEFT-Cursor

IF Frequency Adjustment (Dial Calibration)

    1. Select a Sideband
    2. Adjust VFO Display to the expected Zero Beat Frequency of a Standard
    3. Long-Press btn7
    4. Zero Beat, adjust as necessary with the Cursor and Dial, or the RIT
    5. To Complete Calibration, Long-Press btn7 (or, to abort IF CAL - Double-Press FN)
    6. To Save to Non-Volatile Memory Double-Press btn4
    7. Do the same for the other Sideband


   The Current Saved/Loaded User-Preference Include:

       The Current Band, Frequency and Sideband Selection
       The Last Frequency and Sideband used within each Ham Bands
       USB and LSB IF-Freq Adjustments
       The Current VFO "A/B" (or "I" if in  IF-Freq Edit Mode)

   Excluded from User-Preferences Save/Load are:

       Cursor Position

   The goal of saved User-Preferences is to return the Receiver
   to a previously saved configuration at the next Power-ON or Processor Reset.

Factory Reset = Holding any Button at Power-ON or Processor Reset.

   Note: previously saved User-Preference can be re-loaded with another
   Power-ON, Reset, or with the Load Button.

Error and Status Messages

   Load Fail = The internal Non-Volatile ID does not match the current Rev
   of the Save/Load code, please re-save User-Preferences.

   Load Fail CSum = The internal Check-Sum of the Non-Volatile Memory does
   not match as expected, please re-save User-Preferences.

   Loading nnnB = This is the size of the User-Preferences Loaded
      from Non-Volatile Memory.

   Storing nnnB = This is the size of the User-Preferences Saved
      to Non-Volatile Memory.

Note: When the IF Frequency is Set to Zero, the Controller can be used as a handy signal source. The software is available at:

The Development (Dev) Respository is available at:

This list will be updated as the Controller Software changes.


Tuesday, August 5, 2014

Minima - Software Progress 2

Current State

Updated: Aug 7, 2014 11:26
Updated: Aug 9, 2014 18:32
Updated: Aug 14, 2014 18:20
Updated: Aug 20, 2014 21:59
Updated: Sep 1, 2014 06:44
Updated: Sep 23, 2014 10:12

See the next post for help text, and here for a users successful build.

The additional functions that my Minima Alternate Tuning Method Repository provides are as following.
  • High resolution, plus/minus 1Hz Tuning (thanks to Jeff - KO7M).
  • Near Normal Dial Tuning Method as found on most Dial Radio system.
  • Support for six additional buttons
  • Tuning Cursor positioning via Left/Right push buttons.
  • Automatic (original) or Manual Selection of Sideband via push button.
  • Ham Band Switching via Up and Down push buttons
  • Nine Ham Band Memories, with Frequency and Sideband Saved
  • Two Memories for each Band, implemented and saved as "A" and "B" VFO
  • RF386 Power Amplifier Filter Selection via generated clock pulses on PD7 (pin13).  Note: It works now, with new revised timing pulses.
  • Tuning by 2500Hz Steps (similar to FT-817, mode set via button 7)
  • Re-Center Tuning Knob while any Button, Key, or PTT is pressed, without changing the Freq
  • RIT Mode, implemented as +-990Hz in 10Hz Steps
  • Limit TX to within the Ham Bands (currently, the user must control Sidebands out side of the Ham Bands)
  • Include Jeff -KO7M Si570 Driver "Tuning Click Fix"
  • Frequency Dial Calibration via IF Frequency Adjustment
  • IF Configuration and Adjustments
  • On demand, save user specified Band Memories into non-volatile memory, and retrieved on power up.
  • Factory Reset - By Holding any Button at Power-ON or Processor Reset
  • Split, Cross-Band or In-Band operations; Transmit on "A" VFO and Receive on "B" VFO (Note: I need to check the Regulations to see if Split operations is legal on HF?)
  • Automatic CW ID and/or CW CQ Calling Memories.
  • Two CW Macros and Two QRSS Macros Beacon
  • User Preference Menu Edit Mode
The software can be access at:

Some Plans

Additional functions that are currently being planned, are:
  • Implement option for UK Band Limits and Default Frequencies

Long Term Plans

Some longer term implementation ideas include:
  • Implement WSPR, and PropNET Transmit Beacon modes.
  • Limits imposed on modes, based on Band Plans, i.e., SSB Transmit only in phone section. A "digital" mode could allow computer controlled transmit via a sound card on Upper Sideband.
  • etc, etc

Monday, August 4, 2014

Minima - RIT Funciton

I have implemented the RIT funciton for my Minima Controller. It works extremely well.

When RIT (FN) mode is ON, the display shows:
  • A:03.985000+000
  • LSB  RX RDY 
Where the RIT is the three digits to the right. During Transmit, the RIT digits are removed, as:
  • A:03.985000
  • LSB  TX RDY 
While in the RIT mode, turning the tuning knob changes just the RIT digits, +-990Hz in 10Hz steps.

For testing I used 3.985MHz so that the addition of the LO at 20MHz can be heard on my HF receiver as 23.985MHz. And, the default frequency on my Alternate Tuning Method Minima Controller for 80m is 3.985MHz.

RIT can be turned ON/OFF with a simple press of the FN button.


Sunday, August 3, 2014

Minima - Software Progress

With a now working Minima Controller board (see previous post), I can continue software development and test.

I have just added the following functions to my Minima GitHub Repository:
  • Tuning by 2500Hz Steps (mode set via button 7)
  • Re-Center Tuning Knob while any button is pressed, without changing the Freq

I now have working, but not officially published:
  • RIT is working as expected (tested via the Si570 RF output)
  • Limit TX to within the Ham Bands (currently, the user must control Sidebands out side of the Ham Bands)

The above new functions are added to the current list:
  • High resolution, plus/minus 1Hz Tuning (thanks to Jeff - KO7M).
  • Near Normal Dial Tuning Method as found on most Dial Radio system.
  • Tuning Cursor positioning via Left/Right push buttons.
  • Automatic (original) or Manual Selection of Sideband via push button.
  • Ham Band Switching via Up and Down push buttons
  • Nine Ham Band Memories, with Frequency and Sideband Saved
  • RF386 Power Amplifier Filter Selection via generated clock pulses (Note: Not a lot of testing has been done on this yet)
More clean up and testing is needed.


Minima - Good Progress

After a long late night working with Jeff - KO7M,  trying to fix my Minima Controller board, I finally gave up and went to bed.

About two hours of trying to sleep it dawned on me what was wrong, I got up and fixed the problem within a few minutes - Progress.

The initial problem was I had inadvertently ordered and installed the wrong Atmega328 part. The part that I installed is the "Atmega328-MU" and the desired part is the "Atmega328P-MU", the internal ID's were different, which confused me,  the Arduino IDE, and Avrdude. After modifying a few files, all worked as expected. I set "fuses", downloaded the bootloader, and downloaded the Minima Sketch. All is well.

The "P" in the product number indicate a "picopower" device, which is what all of the Minima builders are using. Actually, the builders are using the "Atmega328P-PU", the "P" in  "-PU" designates a Dual-Inline-Plastic package. Because I am building my Minima with very small parts, I am using the "-MU" package.

To avoid having a special configuration for my Minima build, I plan on ordering the correct "-MU" part.

Thanks to all those that have provided Comments, e-mails, and Assistance with this problem, a special thanks goes to Jeff for staying up very late at night on a Chat window.

Note: This morning, I also recovered my original damaged Minima Controller board, using the same strategy. Now I have two !!

UPDATE: Aug 3, 2014 22:26

For future reference, I used the following to "jump start" my new raw Atmega328-MU:
  • I changed the ID for the m328p to "m328" in the "/etc/avrdude.conf" file
  • avrdude -F -b 19200 -c usbtiny -p m328 -v -e -U efuse:w:0x05:m -U hfuse:w:0xDE:m -U lfuse:w:0xFF:m
  • See:
  • Used Arduino IDE to download the UNO bootloader
  • Changed the ID for the m328 in the "avrdude.conf" file, back to the original
  • Used the Arduion IDE to download a Sketch
  • Note: Arduino IDE does not use /etc/avrdude.conf, it uses its own conf file.

Saturday, August 2, 2014

Minima - Very Little Progress

The lack of posting on my part does not mean that I have not be very actively working on my Minima Controller.

I received from the replacement boards for my damaged Minimal Controller. I loaded the board with as few components as necessary to install the bootloader and verify the microprocessor's operation.

That is were I have been STUCK for the last few days.

The "out of the box" ATMEGA328P-MU does not contain a bootloader and does not appear to be able to converse with my USBTinyISP for installing the bootloader.

The Original Board with
Microprocessor and Crystal
The "-MU" version for the microprocessor solders directly to the PCB, along with its attending (and very small) crystal. The processor works or it doesn't, trouble shooting is very difficult because each can NOT be easily replaced with known good parts, and a short under the part means it removal just for the inspection.

For the new board, I have replaced each part with "package fresh" parts, but with the same results. If I had used the much larger DIP version of the microprocessor, this would have been a no-brainer repair. The DIP version would have been removed and then place into an Arduino-UNO and programmed as per the documentation.

But I still like the challenge of using the very smallest parts that are available, and this has been a challenge.

My original Minima Controller exhibited a similar "brain dead" behaviour when I first turned it ON. But while stumbling around trying different things, it some how got into the correct state and accepted the bootloader. I do not know or understand the events that lead to success.

The ATMEGA328 has what are called "fuses" to configure its operational states. These fuses once set, stay set, and affects further operation. One of the fuses configurers the Clock, which is necessary to run at 16MHz from the crystal, otherwise the Clock runs at a much slower speed via an internal RC clock.  I suspect that my new microprocessors are running a the slow speed and therefore unable to accept my bootloader from the Arduino IDE.
The previous board was damage, but with the aid of the microscope and some very intense micro soldering, I think I have repaired the damage. But alas, the newly installed replacement processor is behaving exactly as that of the new board (at least the two board are consistent). I just need to find the "Magic" that will allow them to accept the bootloader.

Jeff - KO7M, has been providing suggestions to help with my problem. So far nothing has worked.

Once the bootloader is accepted, programming the Minima Controller via the Arduino IDE is a breeze.

Hopefully, good news will follow.