Altinkaya: турецкие корпуса для РЭА

DDS генератор на микроконтроллере ATmega16. Второй вариант конструкции

Это новая версия конструкции DDS генератора на микроконтроллере ATmega16, которая отличается от предшествующей разработки более компактными размерами. Разработанная печатная плата – односторонняя, но примененные компоненты – со штыревыми выводами (в первой конструкции – smd компоненты). Дополнительно были установлены: светодиод состояния (индикация питания) и выключатель питания.

Технология правильного хранения аккумуляторов и батареек по рекомендациям FANSO и EVE Energy

DDS генератор на микроконтроллере ATmega16. вариант №2

Принципиальная схема изображена на рисунке ниже.

DDS генератор на микроконтроллере ATmega16. вариант №2
Кликните для увеличения

Рисунок печатной платы

DDS генератор вариант 2: печатная плата
Кликните для увеличения

Вид со стороны установки элементов

Внешний вид изготовленной печатной платы

Внешний вид платы с установленными компонентами

Список использованных элементов

Обозначение
в схеме
Номинал
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.

Работа генератора была проверена с помощью осциллографа

electronics-lab.com

Перевод: Vadim по заказу РадиоЛоцман

На английском языке: DDS Function Generator

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя
Фрагменты обсуждения (только последние 20 сообщений):Полный вариант обсуждения »
  • Большое спасибо,Я ВАС понял,буду дальше ковырять может что при заливке происходит,в любом случае Я Вам очень благодарен что откликнусь на мою беду.
  • Здравствуйте Vadzz!!!Может ВЫ посмотрите ещё раз что с инициализацией дисплея если конечно есть время,сама программа работает,есть на выходе сигнал,на кнопки реагирует,а на экране пусто я понимаю что это время но больше не к кому обратиться ВЫ единственный кто откликнулся,я Вас очень прошу.
  • Приветствую! Завтра (или уже сегодня?!!) гляну, но что? вот вопрос... Fuse-биты верны (JTAG интерфейс отключен в Fuse-битах? бит JTAGEN?)? А с индикатором все нормально? Он исправен? Может инициализация контроллера индикатора не проходит, насколько помню - случаи были. Есть возможность другой (ну т.е. двухстрочный, но другой) индикатор подкинуть?
  • Здравствуйте.JTAG выключен,индикатор другой подкидывал,а стобы-то должны быть,а там нули и на двух выводах +5 постоянки,а точнее 11и12 ножки ЛСД
  • Честно говоря, даже не знаю. Проверял, смотрел... Но не знаю куда копать.
  • Привет Vadzz!Ну ладно,спасибо и на этом,я благодарен вам за то что откликнулись,ешё раз большое спасибо.
  • Привет Vadzz!!!Это снова Я,заменил мегу поставил мега16,залил прошивку соответствующюю,а результат тот же,экран пустой,программа работает сигналы меняются,при подаче напрряжения появляются все сигналы на экран,но ровно на 2-3секунды и затухают может ли программа не понимать кантроллер дисплея?дисплей мелтовский,в схеме есть синал на дисплей RS,а в даташите мелта нет такого сигнала,а есть (A0),у Вас есть какие-нибудь версии?
  • Насколько я знаю некоторые проблемы совместимости дисплеев на контроллере HD44780 и МЭЛТ (которые как-бы тоже на выполнены на совместимом контроллере). В частности, тайминги. Вывод RS (команда/данные) соотвествует выводу А0 для МЭЛТ. Кроме того у нас задействован вывод R/W (чтение данных из индикатора/запись данных в индикатор). Версии? Сравинить параметры дисплеев по даташитам (HD44780 и ваш МЭЛТ), а также подкинуть индикатор на контроллере HD44780
  • Есть хорошая микросхема icl7660s, преобразователь отрицательного напряжения, питание до 12 в. Цена 9 руб. на АлиЭкспрес. В обвязке два электролита по 10 мкф. На много удобней двухполярного БП. [IMG]https://yadi.sk/i/zyw3Xcwe3SQ2AB[/IMG] Подскажите такие фронты у всех? Или это только я такой "талантливый". [IMG]https://yadi.sk/i/tt9Olaq_3SQ2eJ[/IMG] С выхода ЦАП всё хорошо, А на входах и выходах ОУ такая лабуда.Ставил микросхемы трёх разных партий, Без изменений. Синус прекрасный, без искажений.
  • Преобразователь[URL="https://yadi.sk/i/zyw3Xcwe3SQ2AB"]https://yadi.sk/i/zyw3Xcwe3SQ2AB[/URL] фронты [URL="https://yadi.sk/i/tt9Olaq_3SQ2eJ"]https://yadi.sk/i/tt9Olaq_3SQ2eJ[/URL]
  • Спасибо Vadzz,Я попробую этот вариант.
  • Народ, а зачем такие сложности с компиляцией через аврстудию? Это же просто делается Или через Programmers Notepad [WinAVR] открываем Makefile. Да и библиотека для LCD косячная, Суют её во все проекты, сталкивался с ней раньше. хотя лежит же на 3й станице подправленная - там правда надо чуть подправить строку [code]void LCDinit(void)//Initializes LCD { #ifdef LCD_4bit //4 bit part _delay_ms(15); LDP=0x00; LCP=0x00; LDDR|=1<
  • По компиляции (AVR Studio или консоль или Programmers Notepad) - это кому как нравится. Мне как-то проще в студии... А вот о "глючной" библиотеке для LCD не слышал, лично не сталкивался с проблемой инициализации дисплеев... Беру себе на заметку. Спасибо за информацию. Думаю [B]xnikolas[/B] обязательно надо проверить этот вариант...
  • ага, счаз, для LM16xx он же HD44780 эти либы работают, для 20004А - нет, и либа исправленная для 2004 , однозначно не проводит инициализацию HD44780
  • А кто сказал что HD44780 запускаются только в точном соответствии даташиту? Имеется в виду по 4х-битному интерфесу. Лично я нашёл 3 примера когда работают все дисплеи. Вопрос - там несколько инициализаций под каждый контроллер или всё-же одна? P.S. Архив проверили - не работает, я нашёл в чём там ошибка, но в не инициализации. Наверное лучше удалить.
  • в либах обычно инициализация под HD44780 , три раза передается нибл 0х30 , потом идет переключение на 4бит линию, в 2004А нибл передается только один раз . практика...
  • Не буду спорить, но в моей практике выглядит иначе. Если интересно могу предоставить доказательства. Реальное подтверждение.
  • Для двухполярного питания операционников есть готовые модули на XL6007 (или её клон DD1718PA) [url]https://ru.aliexpress.com/item/8W-2-5-15V-to-15V-Dual-Output-power-supply-DC-DC-Step-up-Converter-module/32789671683.html[/url]
  • Дисплей запустили, но с другой библиотекой - так что проблема была не в инициализации. Проблема оказалась в другом. В протеусе смоделировал и заскриншотил: На первом скриншоте библиотека LCD та что была, на втором новая. Графики сверу вниз - EN, RS, D4, D7. Во время передачи RS два раза меняет своё состояние, а судя из даташита на мэлт такое недопустимо.
  • Да Я всё теперь понял,большое спасибо всё работает нормально.
Полный вариант обсуждения »