АУДИО Аналоговый компаратор attiny2313 как АЦП

Mark_gresh

✩✩✩✩✩✩✩
28 Янв 2026
23
1
Здравствуйте. Я использую attiny2313 (ибо много ног), и его главная проблема - нету АЦП, только компаратор. Использовать внешний АЦП не могу, т.к. мне нужен только 1 канал, а не 16, как во внешних АЦП. И бюджет у меня на проект не больше 500₽ Есть какая-то схема с RC-цепью, но я про неё особо ничего не понял, и там сложная формула - тини замучается вычислять натуральный логарифм, а ведь это нужно минимум 6 тысяч раз в секунду. Какие есть другие схемы, или эта без логарифма?
 

bort707

★★★★★★✩
21 Сен 2020
3,432
986
Использовать внешний АЦП не могу, т.к. мне нужен только 1 канал, а не 16, как во внешних АЦП.
Не вижу в чем проблема использовать только 1 канал, даже если их 16. Или можно как АЦП использовать другой контроллер, например тини13.

А вообще это ваш косяк ещё на этапе проектирования. Надо было выбирать МК с АЦП, раз вы знали, что он вам понадобится.
 

viktor1703

★★★★✩✩✩
9 Дек 2021
805
204
Я использую attiny2313
Это принципиально использовать attiny2313, или имеется возможность использовать другой микроконтроллер, в смысле место не ограничено?
Использовать внешний АЦП не могу, т.к. мне нужен только 1 канал, а не 16
Вы поиском пробоваль на алике? Ч вот сейчас глянул, так там не только 16-ти канальные есть, но и двухканалтнве, и даже, однокональные имеются, и цена до 500 рублей, чуть ли не за килограмм.
 

bort707

★★★★★★✩
21 Сен 2020
3,432
986
Да где больше-то?
Сравните размер корпуса по габаритам пинов
Аттини2313 в SO20 - 12.8 х 10 мм
Атмега в QFP32 - 9 х 9 мм

И, кстати, атмег88 валом на Али по цене доллар с доставкой
 

bort707

★★★★★★✩
21 Сен 2020
3,432
986
Здравствуйте. Я использую attiny2313
@Mark_gresh, читаю ваши темы одну за другой - сначала про выбор контроллера, потом про проблемы с I2c, теперь вот эту... и не оставляет ощущение что вы как в потемках бродите... или просто взялись не за свое дело.
Может стоит рассказать тут о сути вашего проекта, чтобы помогающие могли вам давать более осмысленные советы?
 
  • Лойс +1
Реакции: microsystems

bort707

★★★★★★✩
21 Сен 2020
3,432
986
больше не будуничего спрашивать.
А зря.
Вы уже сделали глупость, когда выбрали неподходящий контроллер - а теперь не можете с ним справится. А подошли бы к выбору с большим вниманием - сейчас бы не было этих проблем.

Выбирайте себе задачу не по плечу. Если у вас немного опыта, то не пытайтесь сразу создать устройство, которое будет и компактное, и дешевое, и эффективное, да еще и пригодное к выпуску большими партиями. Так не бывает и у вас ничего не выйдет. Начните с прототипа, на готовой плате, и с распространенным контроллером. Возьмите, например, Нано. Когда схема и код будут отлажены и устройство заработает - приступайте к разработке компактной платы с "голым контроллером" Атмега88.
 
Изменено:

Mark_gresh

✩✩✩✩✩✩✩
28 Янв 2026
23
1
и пригодное к выпуску большими партиями
Я об этом и мечтать не могу. Если большими партиями, то это дешёвые и одноразово записываемые МК типа Падаук.
Вы уже сделали глупость, когда выбрали неподходящий контроллер - а теперь не можете с ним справится. А подошли бы к выбору с большим вниманием - сейчас бы не было этих проблем.
Это был один из самых дешёвых и с большим ноговым запасом МК, и к тому же популярный примерно на уровне аттини10. У меня полно идей, но само собой реализовывать не все буду. И поэтому пока только проверяю, для чего из этого он подходит, для чего - нет. И2Ц я спрашивал для автокормушки (она почти готова), текущий вопрос я задал для рации, но теперь понял, что лучше её собрать аналоговыми радиодеталями. К тому же, я очень тупой пятиклассник, который плохо разбирается в микросхемах, поэтому и задаю такие идиотские вопросы. Извините, что вызывал беспокойство.
 
  • Лойс +1
Реакции: bort707

poty

★★★★★★★
19 Фев 2020
3,624
1,029
@Mark_gresh, что это за применение в "рации", где нужно АЦП с 6000 отсчётами в секунду? Какая разрядность нужна?
Компаратор можно использовать для измерения величин, но есть ограничения по частоте.
Самодельный АЦП хороший путь, но нужно понимать что делаешь и вряд ли выйдет дешевле. Опять же будет компромисс: либо будет использовано много ног, либо много извращений в коде.
Одно-двухканальные АЦП есть, есть и недорогие: TLC549IP, MCP3201, MS5358, PCM1808PWR... Стандартные цифровые интерфейсы облегчают их использование.
 

Esteriman

✩✩✩✩✩✩✩
4 Июн 2025
41
1
Рабочий код для ATTiny2313 и схема подключения к компаратору для измерения входного напряжения. Точность невысокая!
C++:
// ATTiny2313
// компаратор
// 12-я нога AIN0 — RC-цепочка
// 13-я нога AIN1 — измеряемый сигнал
// 14-я нога PB2 — выход вкл. заряда конденсатора

#include <avr/io.h>
#include <avr/interrupt.h>

const byte conCh = 2; // линия зарядки конденсатора
uint32_t t=micros();
const uint32_t maxChrgTime=100000; // время тайминга для АЦП

void setup () {
  ACSR |= 0x03; // вкл компаратор
  DIDR |= 0x3; // выключить цифровой буфер на пинах компаратора
  DDRB |= (1 << conCh);// включаем pb2 на выход
  PORTB &= ~(1 << conCh);// выключить линию зарядки
}

uint32_t a;
void loop () {
  // старт АЦП
  t = micros (); // сбросить счетчик времени заряда
  PORTB |= (1 << conCh); // вкл зарядку конденсатора
  do { } // ждем прерывания или тайминга
  while ((ACSR & (1 << 5))==0) || (micros()-t>=maxChrgTime);
  t = micros () - t; // время зарядки конд.
  PORTB &= ~(1 << conCh); // выкл зарядку конд.
  delayMicroseconds (16000); // задержка для разряда емкости
  a = approx(t); // результат измерения
}

/* Аппроксимация измеренных значений
*************************************/
const byte numP = 18; // количество точек аппроксимации
const uint16_t mkV[numP] =   { 11,  34,  51,  69,  87, 105, 124, 143, 163,  182,  202,  225,  245,  268,  290,  313,  338,  362 };
const uint16_t realV[numP] = {  0, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800 };
uint32_t approx (uint32_t n) {
  byte i;
  for (i=1; i<=numP; i++) if (mkV[i] > n) break;
  n = map (n, mkV[i-1], mkV[i], realV[i-1], realV[i]);
  return n;
}
image_2026-04-14_201351499.png
 
Изменено: