АЦП на ATTINY13

Обсуждаем контроллеры компании Atmel.
vigor53
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Вт июн 15, 2021 18:24:25

АЦП на ATTINY13

Сообщение vigor53 »

Здрвствуйте
есть такой вопрос - нужно 2 ацп вывести на один порт при совпадении значений - именно при совпадении на обоих АЦП
При этом реакции на любой ОДИН из АЦП - не должно быть
Взят такой кусок кода :

$regfile = "attiny13.dat"
$crystal = 9600000

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Config Portb.0 = Output
Config Portb.1 = Output
'Config Portb.2 = Output

Start Adc

Do
If Getadc(3) <= 500 Then
Portb.0 = 1
Else
Portb.0 = 0
End If
If Getadc(2) <= 500 Then
Portb.1 = 1
Else
Portb.1 = 0
End If

Loop
End

Пробовал в протеусе - работает но только на 2 порта
А мне нужно на один - любой
Реклама
Аватара пользователя
B@R5uk
Собутыльник Кота
Сообщения: 2896
Зарегистрирован: Сб ноя 13, 2010 12:53:25
Откуда: приходит весна?

Re: АЦП на ATTINY13

Сообщение B@R5uk »

У подавляющего большинства AVR-микроконтроллеров, АЦП если и есть, то один. У него может быть несколько аналоговых входов, которые переключаются внутренним микшером. Так что, когда вам надо считать два показания, то вы не сможете сделать это одновременно. Вам потребуется подключить сначала один аналоговый вход МК через микшер к входу АЦП, считать его показания, затем подключить другой порт, и затем считать уже другие показания.

Далее. На сколько я понял из вашего ОЧЕНЬ невнятного технического задания (далее ТЗ), вам надо вывести специальный сигнал (в цифровом виде?), когда уровни напряжений на двух аналоговых входах МК совпадут. И сразу встаёт куча вопросов!
1) Совпадут с какой точностью? (Всегда есть шумы в сигнале и погрешности преобразования)
2) Совпадут с указанной точностью в течении какого промежутка времени? (Ведь напряжения двух сигналов для сравнения берутся в разные моменты времени)
3) Каков характер сигнала, какова его спектральная составляющая? (Медленно меняющееся напряжение, звуковой сигнал или же вообще какой-нибудь радиосигнал на промежуточной частоте)
4) Какой длительности должен быть сигнал совпадения? (Фиксированной или же равен или пропорционален длительности совпадения в пределах погрешности)

Уточните ваше ТЗ, пожалуйста. И можно будет продолжить обсуждение.
Реклама
vigor53
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Вт июн 15, 2021 18:24:25

Re: АЦП на ATTINY13

Сообщение vigor53 »

Да - спасибо !
Действительно написал несколько сумбурно :(
А задача такова :
Есть 2 напряжения - около 1-1.3в , как бы два потенциометра - регулируем оба с ~5в и когда они достигают (Медленно меняющееся напряжение)- указанных напряжений или менее , на выходе порта появляется лог 1( либо - лог 0)
Длительность выходного импульса (лог1) - в пределах от 0.5 до 1сек ( устанавливается в программе экспериментально ) и возврат в 0 (1)
Важно что бы именно на обоих входах было одинаковое напряжение ( опять же задается в коде программы )
Если на одном 1.3 а на другом к примеру 2.5 - то на выходе порта нет срабатывания
Просто я не могу сказать заранее величину U - но в указанных пределах
Теперь - если потенциометры остались в "нижнем " положении - ничего ( ведь импульс уже прошел)
Если возвращаем к примеру в U = 3в - ничего
Опять понижаем до установленного = импульс на выходе
Напряжения уточню завтра по месту
Можно конечно полать 2 выхода что у меня получилось на элемент И-НЕ и далее на одновибратор
Но ведЬ есть МК :)
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Re: АЦП на ATTINY13

Сообщение parovoZZ »

Компаратор будет и проще, и быстрее.
Реклама
Эиком - электронные компоненты и радиодетали
vigor53
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Вт июн 15, 2021 18:24:25

Re: АЦП на ATTINY13

Сообщение vigor53 »

Извините - задержка
Каким образом ? Я понимаю что компаратор видимо быстрее - как ЭТО организутся в программе
Вы знаете - я только начал изучать этот язык , сделал несколько устройств на нем ( простеньких)
Но вот вдруг - понадобилось нечто подобное
Потому - не сильно меня осуждайте .....

Добавлено after 1 hour 4 minutes 34 seconds:
Уточнил напряжения при которых необходимо срабатывание
Получается так --- от 0.5 в и до 0в на обоих входах - ( есть некоторая разница - но в пределах указанного диапазона)
То есть от 0.5 и ниже -- срабатываем - радуемся и получаем импульс и снова радуемся !
Сложно ? - как для меня - сложно .....
Для меня не сложно вот такое --
https://www.youtube.com/watch?v=pvJB2ORazEw
или такое-
https://www.youtube.com/watch?v=pqlEbz6siq8&t=92s

Добавлено after 26 minutes 38 seconds:
Вложения
Прошивка.zip
(34.92 КБ) 215 скачиваний
Реклама
neid
Прорезались зубы
Сообщения: 228
Зарегистрирован: Пн окт 04, 2010 11:55:41

Re: АЦП на ATTINY13

Сообщение neid »

[uquote="vigor53",url="/forum/viewtopic.php?p=4047864#p4047864"]Пробовал в протеусе - работает но только на 2 порта
А мне нужно на один - любой[/uquote]
Поставь флаг условие, если сработал на одном канале ацп, второй игнорируем и наоборот.
Реклама
Аватара пользователя
musor
Друг Кота
Сообщения: 39197
Зарегистрирован: Сб сен 13, 2014 16:27:32
Откуда: СпиртоГонск созвездия Омега

Re: АЦП на ATTINY13

Сообщение musor »

так это не прокатит дискрет это вам не АНАЛ...
поставте старый добрый сдвоеный компаратор стробируемый +одновибратор...
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
vigor53
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Вт июн 15, 2021 18:24:25

Re: АЦП на ATTINY13

Сообщение vigor53 »

Мудрость(Опыт и выдержка) --- это Вы кому ?
Нет желания помочь ?- Так я Вам и не настаиваю .....
Сделать в железе - для меня не вопрос !
Про - АНАЛ - Вам виднее...
Аватара пользователя
slav0n
Опытный кот
Сообщения: 882
Зарегистрирован: Ср дек 01, 2010 00:38:15
Откуда: Харьков
Контактная информация:

Re: АЦП на ATTINY13

Сообщение slav0n »

vigor53 писал(а):(Медленно меняющееся напряжение)
предложу такой алгоритм:
делаем два аккумулятора для двух входов; за несколько итераций поочередно накапливаем в них значения АЦП; в конце цикла делим аккумуляторы на количество итераций; сравниваем, реагируем и сбрасываем.

можно сделать два массива и бегать по ним указателем, тогда будет вообще непрерывный контроль процесса.
ohmycode!
primuss3.com
Novice user
Мудрый кот
Сообщения: 1704
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

Re: АЦП на ATTINY13

Сообщение Novice user »

Я чёт алгоритм работы не пойму...
Как это-от 0.5 до 0?
Каким должен быть сигнал точно-лог 0,или лог 1, или импульс - положительный или отрицательный?
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Re: АЦП на ATTINY13

Сообщение parovoZZ »

Получается так --- от 0.5 в и до 0в на обоих входах - ( есть некоторая разница - но в пределах указанного диапазона)
То есть от 0.5 и ниже -- срабатываем - радуемся и получаем импульс и снова радуемся !
Сложно ? - как для меня - сложно .....
В AVR 0-ой и 1-ой серии АЦП с компаратором по результату. Просто надо добавить воды. И всё.
vigor53
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Вт июн 15, 2021 18:24:25

Re: АЦП на ATTINY13

Сообщение vigor53 »

Я приложил модель в Протеусе - там все понятно
Зажигаются 2 светодиода - на двух портах ,
-- Как писал -"на элемент 2И-НЕ и далее на одновибратор "
Это можно реализовать на МК ?
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Re: АЦП на ATTINY13

Сообщение parovoZZ »

На МК можно реализовать абсолютно любую логику. Но она будет программной. Если хочется аппаратной реализации, то надо брать ПЛИС или МК с ПЛИС. Например, AVR 0-ой или 1-ой серии, а также серии DA. В них аж 2 ячейки FPGA.
Novice user
Мудрый кот
Сообщения: 1704
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

Re: АЦП на ATTINY13

Сообщение Novice user »

[uquote="vigor53",url="/forum/viewtopic.php?p=4048340#p4048340"]Я приложил модель в Протеусе - там все понятно
Зажигаются 2 светодиода - на двух портах ,
-- Как писал -"на элемент 2И-НЕ и далее на одновибратор "
Это можно реализовать на МК ?[/uquote]
Там же все работает-один порт переключается до определенного значения одного ацп,второй порт-второго ацп,вы можете конкретно описать как должно работать?
И как понимать от 0,5 до 0-может от 0 до 0,5?

Добавлено after 10 minutes 5 seconds:
$regfile = "attiny13.dat"
$crystal = 9600000

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output

Start Adc

Do
If Getadc(3) <= 500 Then Portb.0 = 1 Else Portb.0 = 0
If Getadc(2) <= 500 Then Portb.1 = 1 Else Portb.1 = 0

if portb.0=1 and portb.1=1 then portb.2=1 else portb.2=0
Loop
End
vigor53
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Вт июн 15, 2021 18:24:25

Re: АЦП на ATTINY13

Сообщение vigor53 »

Ну вот - а у меня так получилось:

$regfile = "attiny13.dat"
$crystal = 9600000

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output

Start Adc

Do
'If If Getadc(3)<= 500 Then
'Portb.0 = 1
'Else
'Portb.0 = 0

'End If
'If Getadc(2) <= 500 Then
'Portb.1 = 1
'Else
'Portb.1 = 0
'End If

If Getadc(3) <= 300 And Getadc(2) <= 300 Then
Waitms 100

Portb.2 = 1
Else
Waitms 500
Portb.2 = 0

Осталось сделать чтоб на выходе не постоянно 1 висела , а был импульс = 1сек
И как перевести значкния АЦП в - вольты?
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Re: АЦП на ATTINY13

Сообщение parovoZZ »

И как перевести значкния АЦП в - вольты?
в даташите же формула есть. Или мы даташиты не читаем? Не царское дело?
vigor53
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Вт июн 15, 2021 18:24:25

Re: АЦП на ATTINY13

Сообщение vigor53 »

ATTINY13.pdf
(214.87 КБ) 181 скачивание
У меня может не тот даташит ?
Нет там формулы

Добавлено after 19 minutes 8 seconds:
Получилось сделать импульс - тольк0 мигает 500ms
Надо только один , и при следующем событии опять один

$regfile = "attiny13.dat"
$crystal = 9600000

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output

Start Adc

Do

If Getadc(3) <= 300 And Getadc(2) <= 300 Then
Waitms 100

Portb.2 = 1
Else
Portb.2 = 0
End If

If Portb.2 = 1 Then
Portb.1 = 1
Waitms 500
Portb.1 = 0

End If

Loop
End
NStorm
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Re: АЦП на ATTINY13

Сообщение NStorm »

vigor53, 2021 год на дворе, хватит собирать даташиты по задворкам. Интернет есть же. Последний слабо скачать с официального сайта?
https://ww1.microchip.com/downloads/en/ ... oc2535.pdf

Изображение

Добавлено after 46 seconds:
PS: Вы даже не даташит приложили, а Summary - краткий "обзор".

Добавлено after 1 minute 26 seconds:
А вообще не понятно как перевести диапазон отчетов в диапазон напряжений... ну не знаю. Это со школьной алгебры еще должно быть очевидно самому дойти. "Пропорции" вроде классе в 6ом проходят...
Вложения
attiny13-adc-formula.png
(6.13 КБ) 394 скачивания
vigor53
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Вт июн 15, 2021 18:24:25

Re: АЦП на ATTINY13

Сообщение vigor53 »

Спасибо !
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Re: АЦП на ATTINY13

Сообщение parovoZZ »

Получилось сделать импульс - тольк0 мигает 500ms
Надо только один , и при следующем событии опять один
Какая-то проблема организовать машину состояний (конечный автомат)?
Ответить

Вернуться в «AVR»