Voltage controlled AVR LFO with variable symmetry

Voltage controlled AVR LFO: Front view
Voltage controlled AVR LFO: Front view

This is an old project dated back to December 2017. It was intended to learn some basics about the hard- and software of the ATMEGA series from AVR. It is kept simple. Just three analog inputs, one interrupt input and PWM output with filter are used. It is up to you what software you want to run on it. Here I made a simple voltage controlled VCO with variable symmetry. Speed, waveform and symmetry are voltage controlled. So you can change the triangle from ramp up to triangle to ramp down. Or make one halve of the sine very small. See screenshots below. This software was mainly written to test the hardware. To my surprise it worked sufficiently well for a LFO. So I leave it as is for the moment. No fancy accumulation with fixed point arithmetic and increment interpolation. Of course there is a lot room for improving the software. I know.

Specs and features

  • Voltage control for speed, waveform, symmetry
  • Bipolar and unipolar output
  • Square, triangle, sine, ramp up, ramp down waveform
  • 20MHz crystal
  • 19.5kHz PWM 10bit resolution
  • Runs on +/-15V and +/-12V
  • Power consumption around 30mA positive, 5mA negative rail

The documentation and the Gerber files for download can be found in my website.

Voltage controlled AVR LFO: schematic 01
Voltage controlled AVR LFO: schematic 01
Voltage controlled AVR LFO: schematic 02
Voltage controlled AVR LFO: schematic 02
Voltage controlled AVR LFO: back
Voltage controlled AVR LFO: back
Voltage controlled AVR LFO: Populated PCB
Voltage controlled AVR LFO: Populated PCB
Voltage controlled AVR LFO: Screenshot waveform
Voltage controlled AVR LFO: Screenshot waveform
Voltage controlled AVR LFO: Screenshot waveform
Voltage controlled AVR LFO: Screenshot waveform
Voltage controlled AVR LFO: Screenshot waveform
Voltage controlled AVR LFO: Screenshot waveform
Voltage controlled AVR LFO: Screenshot waveform
Voltage controlled AVR LFO: Screenshot waveform
Voltage controlled AVR LFO: Screenshot waveform
Voltage controlled AVR LFO: Screenshot waveform
Voltage controlled AVR LFO: Screenshot waveform
Voltage controlled AVR LFO: Screenshot waveform
Voltage controlled AVR LFO: Screenshot waveform
Voltage controlled AVR LFO: Screenshot waveform
Voltage controlled AVR LFO: Screenshot waveform
Voltage controlled AVR LFO: Screenshot waveform
Voltage controlled AVR LFO: Screenshot waveform
Voltage controlled AVR LFO: Screenshot waveform

Pitch to voltage converter

Pitch to voltage converter: Front view
Pitch to voltage converter: Front view

This is the software driven replacement for my all hardware pitch to voltage converter from my Shakuhachi to Synth project. The software driven approach has the advantage of easily adaption for different frequency ranges. In my case it is the range of the Shakuhachi. To change the range just adapt the software. It is completely temperature independent. The needed input is a pulse train derived from your original signal. You can use my Signal to Trigger converter to provide the pulse train. An offset voltage is added to the V/Oct output to fit the needs of your VCO (Synthesizer).

Specs and features

  • Software driven pitch to voltage converter
  • 12bit resolution
  • V/Oct output
  • Offset CV Fine and coarse adjustment
  • Runs on +/-15V and +/-12V
  • Power consumption around 45mA positive rail, 15mA negative rail

The documentation and the Gerber files for download can be found in my website.

Pitch to voltage converter: Microprocessor board
Pitch to voltage converter: Microprocessor board
Pitch to voltage converter: Control board
Pitch to voltage converter: Control board

The incoming pulse train is feed to the microprocessor. IC1 (301-F) prevents the microprocessor from negative inputs. Zener D2 prevents from overvoltage. The trigger starts an internal timer of the microprocessor in input capture interrupt mode. The ticks are counted and the count is then looked up in a table. The lookup table provides the values for the V/Oct conversion. The read value is the send to the DAC MCP4921 which is follwed by a low pass (IC1A, 301-B)). IC2A (301-F) adds the offset voltage and IC2B (301-F) corrects the phase.

Pitch to Voltage converter: Populated PCB's
Pitch to Voltage converter: Populated PCB’s
Pitch to Voltage converter: Side view
Pitch to Voltage converter: Side view

Clock Divider with prime numbers

Clock Divider with prime numbers

Clock Divider with prime numbers

This clock divider divides the incoming clock signal down to the prime numbers /11, /13, /17, …. /31. The output is a 5V positive pulse. The length of the incoming pulse is kept. The trigger is on the rising edge of the incoming signal. The reset input can be used for syncing with other clocks. All outputs are buffered and brought out parallel with LED signaling the pulse.
Specs and features
• Regular input clock/square wave +5V
• Input signal divided by prime numbers
• Output +5V pulse with the length of the input signal (pulse)
• Runs with +15V/-15V or +12V/-12V (with minor changes)

The documentation for download can be found in my website.

Clock Divider with prime numbers, schematic

Clock Divider with prime numbers, schematic

Most work is done by the microprocessor. The micro takes care of the input and output timing. All outputs are independently buffered. The clock is made visible with LED.

Clock Divider with prime numbers, populated PCB

Clock Divider with prime numbers, populated PCB

Clock Divider with prime numbers, rear view

Clock Divider with prime numbers, rear view

Leap 42.3 broken AVR toolchain after update

After a recent update the AVR Toolchain did nor longer work. It turned out that some links are missing. You can repair that easily. Login as root and then goto:

cd /opt/cross/avr

Now set the limks:

ln -s /usr/avr/sys-root/include include
ln -s /usr/avr/sys-root/lib lib
ln -s /usr/avr/sys-root/man man
ln -s /usr/avr/sys-root/share share
The toolchain should work again.