Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Проблема с adc. Help


Проблема с adc. Help

Сообщений 31 страница 55 из 55

31

Нет, с резистивными кнопками такой фокус не проходил, там разброс был очень большой, порядка 10к шаг. Видимо изначально надо было такой делитель, уходить на мегаомы, но тут есть одна проблема, с такой схемой будет главная проблема - помех, уже радиоприёмник может получиться. :)

0

32

Экран -на клаву, на провод к ADC (критична ДЛИНА), на плату контроллера. СЛОЖНО, но Помогает не бросать всю проделанную работу в корзину.

0

33

Octav написал(а):

Подскажите как примерно  должен выглядеть код двойного измерения с сравнением? Или ссылку на пример? Или может проблема в другом? Примного благодарен.

Здесь

0

34

Sasha_1973, благодарю за ссылку, буду разбираться в материале :cool:

0

35

В общем... Много разного кода перепробовал.... Но результат один и тот же.... В протеусе конечно всё идеально, а вот в реале ложные срабатывания св/диода остались, как видно из видео - загорается нужный св/диод и ещё другой, который должен срабатывать на другую кнопку.

0

36

Octav написал(а):

В общем... Много разного кода перепробовал.... Но результат один и тот же.... В протеусе конечно всё идеально, а вот в реале ложные срабатывания св/диода остались, как видно из видео - загорается нужный св/диод и ещё другой, который должен срабатывать на другую кнопку.

В схеме имеется какой-нибудь дисплей ?
Выводите на него значения АЦП при нажатии кнопок, отменив вывод другой информации.
Можно так же вывести состояния портов вывода (0 или 1).
Картина ошибок будет нагляднее.

Немного кустарно, но всегда пользуюсь таким способом в ходе отладки нежелезного варианта.

Можно терминал использовать...

0

37

Видимо кнопки не самого хорошего качества. Они имеют некоторое сопротивление, которые может меняться в зависимости от силы нажатия.

0

38

Дисплея нет, да и денег жалко на 16х02


Кнопки пробовал разные, конструктивно разные, но ничего не изменилось, не лучше не хуже

У меня больше нет идей...
Кроме, как перевести 10битный ацп в 8ми битный (пересчитав диапазон кнопок под 256), ради эксперимента.... Но есть ли в этом смысл? )))

0

39

Пётр написал(а):

Видимо кнопки не самого хорошего качества. Они имеют некоторое сопротивление, которые может меняться в зависимости от силы нажатия.

Возможно и так, но с какой помойки тогда эти кнопки ? ;)

0

40

Octav написал(а):

Дисплея нет, да и денег жалко на 16х02

Мультиметр тогда хотя бы на вход АЦП.
Мультик-то есть ?

Octav написал(а):

Кнопки пробовал разные, конструктивно разные, но ничего не изменилось, не лучше не хуже

Чудес на свете не бывает (с) не мое
Как-то сам бодался с АЦП, но чтоб настолько...  :huh:

Octav написал(а):

У меня больше нет идей...Кроме, как перевести 10битный ацп в 8ми битный (пересчитав диапазон кнопок под 256), ради эксперимента.... Но есть ли в этом смысл? )))

Разве только ради эксперимента.

0

41

Уже не один делитель представлен был, расскажу про еще один... ;)
http://sa.uploads.ru/t/xwR8H.jpg
Эта схема с пленочной клавиатурой из работающего уже проекта.
Клавиатура вынесена на 6 метров, подключение кабелем UTP.
В 10-бит АЦП при анализе уровня использован разброс +-3 от идеального значения.
Даже в условиях наличия индустриальных помех (здание подъемной машины шахты) работает без сбоев.

0

42

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

0

43

Octav написал(а):

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

А подержать кнопку, пока мультик "думает" ?

Меняется напряжение ?
А какие мысли появляются на фоне "гуляющего" напряжения ?

"Электротехника - наука о контактах. Или его (контакта) нет или он лишний." (с) не мое

0

44

Если подержать кнопку, то показывает именно то значение напряжения, что и должно быть, под которое и был расчёт в коде. Короче с этим всё норм.

Была мысль такая: при не нажатых кнопках напряжение на ацп 4,4в (холостой ход так сказать), при нажатии (на s1) напряжение падает до 0,7вольт, (у s2 напряжение 1,1в), так вот, пока напряжение падает с 4,4в до 0,7в, ацп успевает сделать замер и попадает в момент когда напряжение 1,1в (то есть будто нажали s2) и естественно срабатывает порт (св/диод) кнопки s2.... В принципе нечто подобное было на осцилограмме, когда часто кнопку нажимал. Допустим это так. Тогда прописал в коде задержку на измерение ацп при нажатии и отпускании кнопок. Примерно так это выглядело:

Код:
A=Getadc(3)
If A < 900 Then "если А меньше холостого хода (какая-то кнопка нажата)
Waitms 100 "(разное время пробовал, не только 100)
"далее условие срабатывания портов от конкретных значений"
Waitms 100
End If
Loop 
End

но не помогло
Далее пробовал коды, что советовали, но тоже с места я не сдвинулся

0

45

Octav написал(а):

Была мысль такая: при не нажатых кнопках напряжение на ацп 4,4в (холостой ход так сказать), при нажатии (на s1) напряжение падает до 0,7вольт, (у s2 напряжение 1,1в), так вот, пока напряжение падает с 4,4в до 0,7в, ацп успевает сделать замер и попадает в момент когда напряжение 1,1в (то есть будто нажали s2) и естественно срабатывает порт (св/диод) кнопки s2....

А сделать аппаратно (резисторами) разброс пошире не получается ?
В приведенной мной схеме переключатель работает по коду Грея, как в Аппаратный ШИМ на ATiny24 , только с тремя кнопками.
Если "нажаты" только 1, 2 или 3, то соответственно напряжение на АЦП будет 1,2в, 2,5в и 3.7в (на память).

Неужели это будет "слишком тесно" в вашем случае ?

Отредактировано Nord (2017-01-31 15:19:35)

0

46

Читал и много думал, зачем так изгаляться, только ради освобождения нескольких портов?
Есть два вывода из всего вышесказанного.
1. Если не хватает портов взять МК постарше.
2. Обработка кнопок настолько уже заезженная тема, что найти в сети способы их подключения и обработки не представляет большого труда. Хоть матрицей, хоть линейно.
Я конечно не знаю всех задумок автора, но это моё мнение.

0

47

sva-don написал(а):

Читал и много думал, зачем так изгаляться, только ради освобождения нескольких портов?

Однажды пришлось обрабатывать четыре переключателя, каждый на 9 позиций, все позиции значимые.

Варианты:
1. Использовать расширители портов по I2C.
Задействованы 2 ноги, но появляются три корпуса...
2. Опрашивать переключатели поочередно, как матрицу.
Задействованы 15 (!) ног...
3. Сформировать на переключателях делители для АЦП.
Использованы 4 ноги...

Что выгоднее и проще, как аппаратно, так и программно ? ;)

0

48

Nord написал(а):

Однажды пришлось обрабатывать четыре переключателя, каждый на 9 позиций, все позиции значимые.

Не, это совсем другая задача. Здесь же судя по схеме три кнопки и всё.  :glasses:
Кстати, если есть подозрение, что АЦП меряет не то, то можно засинхронизировать процесс измерения. Собрать ИЛИ на диодах и подать с них сигнал прерывания, в нём и мерять напругу. Только антидребезг убрать простейшей задержкой.

Отредактировано sva-don (2017-01-31 15:51:23)

0

49

ДА!!! ADC походу успевает отработать "кнопку" как в замедленном кино. А именно: Переход от нажатого к НЕ нажатому состоянию И ОБРАТНО!
КНОПОЧКА повидала МНОГОЕ! (БУ?)
Помогут задержки! И многократный (усредненный) замер.
Еще! ЕСЛИ ADC видит AREF (нет нажатия) ПРОПУСКАТЬ цикл "определения номера нажатой кнопки".

Собирать ДИОДАМИ в этой схеме НЕЛЬЗЯ!

Отредактировано Каримов (2017-02-01 05:50:33)

0

50

Проблема в кнопках, хоть я их и менял новые на новые, но проблема именно в них.
Всем огромное человеческое спасибо за помощь.
Узнал очень много нового для себя в плане программирования, ценный опыт   :idea:

0

51

Octav написал(а):

Проблема в кнопках, хоть я их и менял новые на новые, но проблема именно в них.


Нет, проблема в другом, должно работать с любыми кнопками, да хоть проводочками замыкайте, всё равно должно работать. Ищите причину.

0

52

Таки да, хотелось бы увидеть нормальный рабочий вариант схемы, не черкашку, как в #12... ;)
Если не жалко, то и с исходником...

0

53

Чуть позже скину сюда

0

54

Octav написал(а):

Чуть позже скину сюда

И ?...
Двое суток прошло, а народ в неведении... ;)

0

55

Был в командировке))) увеличил время задержки и переписал условие в виде if-elseif. Работает очень хорошо.

Код:
$regfile = "attiny44.dat" 
$crystal = 8000000 
 
 
 
Config Adc = Single , Prescaler = 64 , Reference = Avcc 
 
 
Dim A As Integer 
 
Config Portb.0 = Output 
Config Portb.2 = Output 
Config Porta.7 = Output 

 
Start Adc 
 
Do 
 
A = Getadc(3) 
Waitms 222
 
If A >= 60 And A <= 90 Then 
Reset Portb.0 
Else 
If A >= 200 And A <= 250 Then 
Reset Portb.2 
Else 
If A >= 120 And A <= 160 Then 
Reset Porta.7  
Else
Waitms 222 
Set Portb.0 
set ports.2 
Set porta.7
End If
End If
End If
Loop
End

Отредактировано Octav (2017-03-12 21:51:43)

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Проблема с adc. Help