Статьи » Разработки
Добавить статью

Минимальная обвязка Atmega328p

2021-04-18 в 01:28 (последнее изменение 2024-03-08 в 21:40)

В своих проектах где использую микроконтроллер я использую Atmega328p. Почему? Мне с ним удобно работать. Это тоже самое что Arduino UNO, Nano и Micro. Можно в Arduino IDE сделать быстро код и зашить все в свое устройство. И не обязательно иметь USB разъем для этого. Можно использовать внутрисхемное программирование. Разъем для этого называется ICSP. Это экономит место и финансы при сборке.

Я себе один раз разработал схему минимальной обвязки Atmega328p. И во всех своих проектах ее использую. Этого вполне достаточно чтобы контроллер работал, долго работал.

Сама схема обвязки Atmega328p. Или простая схема Arduino UNO.

обвязка atmega328p

Схема содержит все обязательные элементы для работы в виде Arduino платы.
Имеется кварцевый резонатор на 16 МГц. Рядом с ним конденсаторы на 22 пФ. Контрольный светодиод подключен к 13 пину Arduino (как и в оригинале) и служит знаком о том что программа записалась корректно. Такой пункт обязателен в коммерческих устройствах. Я его в программе включаю и выключаю с периодичностью в 1 секунду.

Код

#define CONTROL_LED_PIN  13;      // номер выхода, подключенного к светодиоду

int ledState = LOW;             // этой переменной устанавливаем состояние светодиода
long previousMillis = 0;        // храним время последнего переключения светодиода
long interval = 1000;             // интервал между включение/выключением светодиода (1 секунда)

void setup() {
  pinMode(CONTROL_LED_PIN, OUTPUT);      // задаем режим выхода для порта, подключенного к светодиоду
}

void loop()
{
  unsigned long currentMillis = millis();

  //проверяем не прошел ли нужный интервал, если прошел то
  if (currentMillis - previousMillis > interval) {
    // сохраняем время последнего переключения
    previousMillis = currentMillis;

    // если светодиод не горит, то зажигаем, и наоборот
    if (ledState == LOW)
      ledState = HIGH;
    else
      ledState = LOW;

    // устанавливаем состояния выхода, чтобы включить или выключить светодиод
    digitalWrite(CONTROL_LED_PIN, ledState);
  }
}

Пин reset подтянут к плюсу питания. Он используется для реализации возможности внутрисхемного программирования. Когда начинаем процесс записи прошивки, программатор (другая Ardunio UNO или Nano) подает на этот пин низкий уровень что в свою очередь останавливает выполнение программы.

Имеется конденсатор 100нФ (0,1мкФ) размещенный в цепи питания непосредственно возле микроконтроллера, ближе к 4 и 6 выводу VCC Atmega328p, помогут бороться с высокочастотными выбросами по питанию (которые, кстати, может генерировать сам микроконтроллер).

Плюс питания у меня еще подключен и к выводу 18 Atmega328p. Это вход для питания аналоговой части микроконтроллера.

Вывод 20 является входом для опорного напряжения АЦП. Он необходим если в вашем проекте необходимо брать за основу не напряжение питания микроконтроллера (для плат Arduino UNO это 5В), а какое-либо другое напряжение. Считаю что если он не используется в проекте, будет не лишним соединить с общий контактом через конденсатор 100нФ (0,1мкФ). Если мы используем опорное напряжение отличное от напряжения питания контроллера, необходимо использовать в скетче команду:

Код
analogReference(EXTERNAL); // использование AREF для опорного напряжения

Пока на этом все, если буду новые мысли, буду вносить правки. А если у вас есть предложения, пишите в комментариях.
Разработка и копирование печатных плат


Не пропустите обновления! Подписывайтесь на нашу группу Вконтакте.
Так же у нас есть Telegram канал.
Вам понравился наш материал? Поделитесь с коллегами!

Просмотров: 7353. Оценка статьи: 4.0 из 5. Уже оценило 6 читателей

Об авторе - Администратор

More by Администратор

Всего комментариев: 2
zix07
zix07 2024-01-04 22:21
Здравствуйте. Есть вопросы. Где заказываете atmega328p? Вот смотрю на всем известном сайте, вижу ATMEGA328P-AU QFP-32 есть еще в корпусе DIP-28.
Где берете обвязку, например, кварц на 16МГц? Если можно ссылку на проверенного продавца. Заранее спасибо. И не понятно по схеме, куда С3 включать?

Ответ Автора: C3 подключается параллельно питанию.
Кварц можно купить где угодно либо вытащить из любой платы, главное чтобы был на 16 МГц.
dgorg
dgorg 2023-02-08 20:43
Да интересно но цены сейчас на голый камень такие же как и на платку с Ардуиной и все уже распаяно.

Ответ Автора: Это актуально для случаев самостоятельно разработки устройств. Когда в свой проект нужно впихнуть ардуинку, но чтобы было уже все красиво на одной плате вся обвязка.
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]