Обсуждаем контроллеры компании Atmel.
Ответить

АЦП на ATTINY13

Вт июн 15, 2021 18:35:43

Здрвствуйте
есть такой вопрос - нужно 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 порта
А мне нужно на один - любой

Re: АЦП на ATTINY13

Вт июн 15, 2021 21:06:34

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

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

Уточните ваше ТЗ, пожалуйста. И можно будет продолжить обсуждение.

Re: АЦП на ATTINY13

Вт июн 15, 2021 21:27:19

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

Re: АЦП на ATTINY13

Вт июн 15, 2021 23:12:47

Компаратор будет и проще, и быстрее.

Re: АЦП на ATTINY13

Ср июн 16, 2021 14:13:50

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

Добавлено 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 KiB) Скачиваний: 194

Re: АЦП на ATTINY13

Ср июн 16, 2021 14:44:55

Пробовал в протеусе - работает но только на 2 порта
А мне нужно на один - любой

Поставь флаг условие, если сработал на одном канале ацп, второй игнорируем и наоборот.

Re: АЦП на ATTINY13

Ср июн 16, 2021 14:58:07

так это не прокатит дискрет это вам не АНАЛ...
поставте старый добрый сдвоеный компаратор стробируемый +одновибратор...

Re: АЦП на ATTINY13

Ср июн 16, 2021 15:39:03

Мудрость(Опыт и выдержка) --- это Вы кому ?
Нет желания помочь ?- Так я Вам и не настаиваю .....
Сделать в железе - для меня не вопрос !
Про - АНАЛ - Вам виднее...

Re: АЦП на ATTINY13

Ср июн 16, 2021 16:46:43

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

можно сделать два массива и бегать по ним указателем, тогда будет вообще непрерывный контроль процесса.

Re: АЦП на ATTINY13

Ср июн 16, 2021 17:01:40

Я чёт алгоритм работы не пойму...
Как это-от 0.5 до 0?
Каким должен быть сигнал точно-лог 0,или лог 1, или импульс - положительный или отрицательный?

Re: АЦП на ATTINY13

Ср июн 16, 2021 17:17:39

Получается так --- от 0.5 в и до 0в на обоих входах - ( есть некоторая разница - но в пределах указанного диапазона)
То есть от 0.5 и ниже -- срабатываем - радуемся и получаем импульс и снова радуемся !
Сложно ? - как для меня - сложно .....

В AVR 0-ой и 1-ой серии АЦП с компаратором по результату. Просто надо добавить воды. И всё.

Re: АЦП на ATTINY13

Ср июн 16, 2021 17:27:32

Я приложил модель в Протеусе - там все понятно
Зажигаются 2 светодиода - на двух портах ,
-- Как писал -"на элемент 2И-НЕ и далее на одновибратор "
Это можно реализовать на МК ?

Re: АЦП на ATTINY13

Ср июн 16, 2021 20:23:07

На МК можно реализовать абсолютно любую логику. Но она будет программной. Если хочется аппаратной реализации, то надо брать ПЛИС или МК с ПЛИС. Например, AVR 0-ой или 1-ой серии, а также серии DA. В них аж 2 ячейки FPGA.

Re: АЦП на ATTINY13

Ср июн 16, 2021 21:36:30

Я приложил модель в Протеусе - там все понятно
Зажигаются 2 светодиода - на двух портах ,
-- Как писал -"на элемент 2И-НЕ и далее на одновибратор "
Это можно реализовать на МК ?

Там же все работает-один порт переключается до определенного значения одного ацп,второй порт-второго ацп,вы можете конкретно описать как должно работать?
И как понимать от 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

Re: АЦП на ATTINY13

Чт июн 17, 2021 09:21:16

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

$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сек
И как перевести значкния АЦП в - вольты?

Re: АЦП на ATTINY13

Чт июн 17, 2021 09:43:01

И как перевести значкния АЦП в - вольты?

в даташите же формула есть. Или мы даташиты не читаем? Не царское дело?

Re: АЦП на ATTINY13

Чт июн 17, 2021 10:52:25

ATTINY13.pdf
(214.87 KiB) Скачиваний: 155
У меня может не тот даташит ?
Нет там формулы

Добавлено 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

Re: АЦП на ATTINY13

Чт июн 17, 2021 10:56:14

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 KiB) Скачиваний: 351

Re: АЦП на ATTINY13

Чт июн 17, 2021 11:13:55

Спасибо !

Re: АЦП на ATTINY13

Чт июн 17, 2021 12:31:35

Получилось сделать импульс - тольк0 мигает 500ms
Надо только один , и при следующем событии опять один

Какая-то проблема организовать машину состояний (конечный автомат)?
Ответить