Это новая версия конструкции DDS генератора на микроконтроллере ATmega16, которая отличается от предшествующей разработки более компактными размерами. Разработанная печатная плата – односторонняя, но примененные компоненты – со штыревыми выводами (в первой конструкции – smd компоненты). Дополнительно были установлены: светодиод состояния (индикация питания) и выключатель питания.
Принципиальная схема изображена на рисунке ниже.
Рисунок печатной платы
Вид со стороны установки элементов
Внешний вид изготовленной печатной платы
Внешний вид платы с установленными компонентами
Список использованных элементов
Обозначение в схеме |
Номинал |
R1 | 470 Ом |
R2, R6, R8, R10, R12, R14, R16, R18 |
10 кОм |
R3, R21 | 100 кОм |
R4, R5, R7, R9, R11, R13, R15, R17, R19 |
20 кОм |
R20 | 100 Ом |
R22 | 12 кОм |
R23 | 150 Ом |
POT1 | Потенциометр 1 кОм |
POT2 | Потенциометр 47 кОм |
POT3 | Пдстроечный резистор 10 кОм |
C1, С2 | 100 нФ |
C3, С4 | 18 пФ |
Q1 | Кварцевый резонатор 16 МГц |
IC1 | Микроконтроллер Atmel ATMEGA16P |
IC2 | Операционный усилитель LM358N |
BNC1 - BNC2 | Коннектор типа BNC |
S1 - S6 | Кнопки |
LCD Header | 16-выводный коннектор для подключения дисплея |
LCD Module | ЖК модуль на базе контроллера HD44780 |
ISP | Коннектор 2×3 для внутрисхемного программирования |
POWER | Коннектор для подключения питания |
LED1 | Светодиод зеленого цвета свечения, 3 мм |
ON/OFF | Миниатюрный выключатель |
Изменения в программном обеспечении микроконтроллера
Изменения в исходном коде связаны лишь с назначением кнопок подключенных к порту D микроконтроллера:
1.Кнопки «влево» и «вправо»:
#define LEFT 3 //PORTD #define RIGHT 1 //PORTD
2.Кнопки «вниз» и «вверх»
#define DOWN 4 //PORTD #define UP 0 //PORTD
Кроме того для последних версий компилятора AVR-GCC необходимо внести изменения в следующие строчки кода:
struct signal{
volatile uint8_t mode; //signal
volatile uint8_t fr1; //Frequency [0..7]
volatile uint8_t fr2; //Frequency [8..15]
volatile uint8_t fr3; //Frequency [16..31]
volatile uint32_t freq; //frequency value
volatile uint8_t flag; //if 0 generator is OFF, 1 is ON
volatile uint32_t acc; //accumulator
volatile uint8_t ON;
volatile uint8_t HSfreq; //high speed frequency [1...4Mhz]
volatile uint32_t deltafreq; //frequency step value
}SG;
Fuse-биты микроконтроллера ATmega16: HIGH = 0×59, LOW = 0×CF – это соответствует тому, что будут запрограммированы следующие биты: OCDEN, SPIEN, BOOTSZ1, BOOTSZ2, SUT1, SUT0.
Работа генератора была проверена с помощью осциллографа