АЦП на ATTINY13
АЦП на ATTINY13
Здрвствуйте
есть такой вопрос - нужно 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 порта
А мне нужно на один - любой
есть такой вопрос - нужно 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
У подавляющего большинства AVR-микроконтроллеров, АЦП если и есть, то один. У него может быть несколько аналоговых входов, которые переключаются внутренним микшером. Так что, когда вам надо считать два показания, то вы не сможете сделать это одновременно. Вам потребуется подключить сначала один аналоговый вход МК через микшер к входу АЦП, считать его показания, затем подключить другой порт, и затем считать уже другие показания.
Далее. На сколько я понял из вашего ОЧЕНЬ невнятного технического задания (далее ТЗ), вам надо вывести специальный сигнал (в цифровом виде?), когда уровни напряжений на двух аналоговых входах МК совпадут. И сразу встаёт куча вопросов!
1) Совпадут с какой точностью? (Всегда есть шумы в сигнале и погрешности преобразования)
2) Совпадут с указанной точностью в течении какого промежутка времени? (Ведь напряжения двух сигналов для сравнения берутся в разные моменты времени)
3) Каков характер сигнала, какова его спектральная составляющая? (Медленно меняющееся напряжение, звуковой сигнал или же вообще какой-нибудь радиосигнал на промежуточной частоте)
4) Какой длительности должен быть сигнал совпадения? (Фиксированной или же равен или пропорционален длительности совпадения в пределах погрешности)
Уточните ваше ТЗ, пожалуйста. И можно будет продолжить обсуждение.
Далее. На сколько я понял из вашего ОЧЕНЬ невнятного технического задания (далее ТЗ), вам надо вывести специальный сигнал (в цифровом виде?), когда уровни напряжений на двух аналоговых входах МК совпадут. И сразу встаёт куча вопросов!
1) Совпадут с какой точностью? (Всегда есть шумы в сигнале и погрешности преобразования)
2) Совпадут с указанной точностью в течении какого промежутка времени? (Ведь напряжения двух сигналов для сравнения берутся в разные моменты времени)
3) Каков характер сигнала, какова его спектральная составляющая? (Медленно меняющееся напряжение, звуковой сигнал или же вообще какой-нибудь радиосигнал на промежуточной частоте)
4) Какой длительности должен быть сигнал совпадения? (Фиксированной или же равен или пропорционален длительности совпадения в пределах погрешности)
Уточните ваше ТЗ, пожалуйста. И можно будет продолжить обсуждение.
Re: АЦП на ATTINY13
Да - спасибо !
Действительно написал несколько сумбурно
А задача такова :
Есть 2 напряжения - около 1-1.3в , как бы два потенциометра - регулируем оба с ~5в и когда они достигают (Медленно меняющееся напряжение)- указанных напряжений или менее , на выходе порта появляется лог 1( либо - лог 0)
Длительность выходного импульса (лог1) - в пределах от 0.5 до 1сек ( устанавливается в программе экспериментально ) и возврат в 0 (1)
Важно что бы именно на обоих входах было одинаковое напряжение ( опять же задается в коде программы )
Если на одном 1.3 а на другом к примеру 2.5 - то на выходе порта нет срабатывания
Просто я не могу сказать заранее величину U - но в указанных пределах
Теперь - если потенциометры остались в "нижнем " положении - ничего ( ведь импульс уже прошел)
Если возвращаем к примеру в U = 3в - ничего
Опять понижаем до установленного = импульс на выходе
Напряжения уточню завтра по месту
Можно конечно полать 2 выхода что у меня получилось на элемент И-НЕ и далее на одновибратор
Но ведЬ есть МК
Действительно написал несколько сумбурно
А задача такова :
Есть 2 напряжения - около 1-1.3в , как бы два потенциометра - регулируем оба с ~5в и когда они достигают (Медленно меняющееся напряжение)- указанных напряжений или менее , на выходе порта появляется лог 1( либо - лог 0)
Длительность выходного импульса (лог1) - в пределах от 0.5 до 1сек ( устанавливается в программе экспериментально ) и возврат в 0 (1)
Важно что бы именно на обоих входах было одинаковое напряжение ( опять же задается в коде программы )
Если на одном 1.3 а на другом к примеру 2.5 - то на выходе порта нет срабатывания
Просто я не могу сказать заранее величину U - но в указанных пределах
Теперь - если потенциометры остались в "нижнем " положении - ничего ( ведь импульс уже прошел)
Если возвращаем к примеру в U = 3в - ничего
Опять понижаем до установленного = импульс на выходе
Напряжения уточню завтра по месту
Можно конечно полать 2 выхода что у меня получилось на элемент И-НЕ и далее на одновибратор
Но ведЬ есть МК
Re: АЦП на ATTINY13
Компаратор будет и проще, и быстрее.
Re: АЦП на ATTINY13
Извините - задержка
Каким образом ? Я понимаю что компаратор видимо быстрее - как ЭТО организутся в программе
Вы знаете - я только начал изучать этот язык , сделал несколько устройств на нем ( простеньких)
Но вот вдруг - понадобилось нечто подобное
Потому - не сильно меня осуждайте .....
Добавлено 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:
Каким образом ? Я понимаю что компаратор видимо быстрее - как ЭТО организутся в программе
Вы знаете - я только начал изучать этот язык , сделал несколько устройств на нем ( простеньких)
Но вот вдруг - понадобилось нечто подобное
Потому - не сильно меня осуждайте .....
Добавлено 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 скачиваний
- Реклама
Re: АЦП на ATTINY13
[uquote="vigor53",url="/forum/viewtopic.php?p=4047864#p4047864"]Пробовал в протеусе - работает но только на 2 порта
А мне нужно на один - любой[/uquote]
Поставь флаг условие, если сработал на одном канале ацп, второй игнорируем и наоборот.
А мне нужно на один - любой[/uquote]
Поставь флаг условие, если сработал на одном канале ацп, второй игнорируем и наоборот.
- musor
- Друг Кота
- Сообщения: 39197
- Зарегистрирован: Сб сен 13, 2014 16:27:32
- Откуда: СпиртоГонск созвездия Омега
Re: АЦП на ATTINY13
так это не прокатит дискрет это вам не АНАЛ...
поставте старый добрый сдвоеный компаратор стробируемый +одновибратор...
поставте старый добрый сдвоеный компаратор стробируемый +одновибратор...
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Re: АЦП на ATTINY13
Мудрость(Опыт и выдержка) --- это Вы кому ?
Нет желания помочь ?- Так я Вам и не настаиваю .....
Сделать в железе - для меня не вопрос !
Про - АНАЛ - Вам виднее...
Нет желания помочь ?- Так я Вам и не настаиваю .....
Сделать в железе - для меня не вопрос !
Про - АНАЛ - Вам виднее...
- slav0n
- Опытный кот
- Сообщения: 882
- Зарегистрирован: Ср дек 01, 2010 00:38:15
- Откуда: Харьков
- Контактная информация:
Re: АЦП на ATTINY13
предложу такой алгоритм:vigor53 писал(а):(Медленно меняющееся напряжение)
делаем два аккумулятора для двух входов; за несколько итераций поочередно накапливаем в них значения АЦП; в конце цикла делим аккумуляторы на количество итераций; сравниваем, реагируем и сбрасываем.
можно сделать два массива и бегать по ним указателем, тогда будет вообще непрерывный контроль процесса.
ohmycode!
primuss3.com
primuss3.com
-
Novice user
- Мудрый кот
- Сообщения: 1704
- Зарегистрирован: Вт янв 05, 2016 10:14:25
- Откуда: поселок Мелеуз
Re: АЦП на ATTINY13
Я чёт алгоритм работы не пойму...
Как это-от 0.5 до 0?
Каким должен быть сигнал точно-лог 0,или лог 1, или импульс - положительный или отрицательный?
Как это-от 0.5 до 0?
Каким должен быть сигнал точно-лог 0,или лог 1, или импульс - положительный или отрицательный?
Re: АЦП на ATTINY13
В AVR 0-ой и 1-ой серии АЦП с компаратором по результату. Просто надо добавить воды. И всё.Получается так --- от 0.5 в и до 0в на обоих входах - ( есть некоторая разница - но в пределах указанного диапазона)
То есть от 0.5 и ниже -- срабатываем - радуемся и получаем импульс и снова радуемся !
Сложно ? - как для меня - сложно .....
Re: АЦП на ATTINY13
Я приложил модель в Протеусе - там все понятно
Зажигаются 2 светодиода - на двух портах ,
-- Как писал -"на элемент 2И-НЕ и далее на одновибратор "
Это можно реализовать на МК ?
Зажигаются 2 светодиода - на двух портах ,
-- Как писал -"на элемент 2И-НЕ и далее на одновибратор "
Это можно реализовать на МК ?
Re: АЦП на ATTINY13
На МК можно реализовать абсолютно любую логику. Но она будет программной. Если хочется аппаратной реализации, то надо брать ПЛИС или МК с ПЛИС. Например, AVR 0-ой или 1-ой серии, а также серии DA. В них аж 2 ячейки FPGA.
-
Novice user
- Мудрый кот
- Сообщения: 1704
- Зарегистрирован: Вт янв 05, 2016 10:14:25
- Откуда: поселок Мелеуз
Re: АЦП на ATTINY13
[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
Зажигаются 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
Re: АЦП на ATTINY13
Ну вот - а у меня так получилось:
$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сек
И как перевести значкния АЦП в - вольты?
$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
в даташите же формула есть. Или мы даташиты не читаем? Не царское дело?И как перевести значкния АЦП в - вольты?
Re: АЦП на ATTINY13
У меня может не тот даташит ?
Нет там формулы
Добавлено 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
Нет там формулы
Добавлено 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
vigor53, 2021 год на дворе, хватит собирать даташиты по задворкам. Интернет есть же. Последний слабо скачать с официального сайта?
https://ww1.microchip.com/downloads/en/ ... oc2535.pdf

Добавлено after 46 seconds:
PS: Вы даже не даташит приложили, а Summary - краткий "обзор".
Добавлено after 1 minute 26 seconds:
А вообще не понятно как перевести диапазон отчетов в диапазон напряжений... ну не знаю. Это со школьной алгебры еще должно быть очевидно самому дойти. "Пропорции" вроде классе в 6ом проходят...
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 скачивания
Re: АЦП на ATTINY13
Спасибо !
Re: АЦП на ATTINY13
Какая-то проблема организовать машину состояний (конечный автомат)?Получилось сделать импульс - тольк0 мигает 500ms
Надо только один , и при следующем событии опять один


