Терентенко Андрей Опубликовано 16 января, 2019 Поделиться Опубликовано 16 января, 2019 Добрый день! Имею следующую ситуацию : на базе PIC16f676 создал приблуду для "управления нештатной магнитолой с руля", а именно сигнал с руля это 4,8в и в зависимости от нажатой кнопки падает дискретной до 0.8в мк с помощью АЦП отслеживает на магнитолу паралельно кнопкам кинул оптрони которыми управляет МК. Питание от LM с фильтрующими конденсаторами. При тестових прогонах всё работало как надо (программно реализовано защиту от дребезга аж на 0.1 сек в поисках решений) и в машине и от штатного БП . Но заметил закономерность сейчас на улице - 2 и при первом запуске минут 5, МК "шумит" несоотвецтвует нажатия на руле кнопке на магнитоле ! Сигнал с руля смотрел стабильный без дребезга , притом когда тестил вынес магнитолу подключил всё работало гуд но пока устанавливал закручивал она остыла и начинались эти тацы . Кто что подскажет? МК или ЛМ могут так реагировать на температуру ? Прошу прощения у модераторов за повторение теми (может в этом разделе будет актуальней) 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
artos5 Опубликовано 16 января, 2019 Поделиться Опубликовано 16 января, 2019 А схему устройства можно показать? Как у вас вывод VREF задействован? 0 Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ? Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
Терентенко Андрей Опубликовано 17 января, 2019 Автор Поделиться Опубликовано 17 января, 2019 (исходник проект в протеусе печатка остались на ноуте на роботе) набросал схему от руки , VREF- никак просто весит в воздухе ! Наверное нужно так как на втором фото ? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
Терентенко Андрей Опубликовано 17 января, 2019 Автор Поделиться Опубликовано 17 января, 2019 (изменено) исходник проект в протеусе печатка остались на ноуте на роботе) набросал схему от руки , VREF- никак просто весит в воздухе (перепроверил в исходнике ) banksel ADCON1 ; переходим в регистр ADCON1 movlw b'00110000' ; vcfg-0-VDD movwf ADCON1 ; -//- ) ! или не так понял ? Изменено 17 января, 2019 пользователем Терентенко Андрей 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
artos5 Опубликовано 18 января, 2019 Поделиться Опубликовано 18 января, 2019 Нет, на vref нужно повесить ион . Например mcp1525. И переделать инициализацию модуля АЦП. И нужно также применять хорошие резисторы в цепи делителя. 0 Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Терентенко Андрей Опубликовано 18 января, 2019 Автор Поделиться Опубликовано 18 января, 2019 Спасибо ! буду пробовать переделать ! Но мне наверное больше подойдёт 1541+ минимальный делитель, (максимальное измеряемое напряжение 4.85V а опорное с MCP1541= 4.098V ) + переделка АЦП вычислений под делитель... И всё же не могу понять почему если в МК есть возможность привязаться к VDD как опорному почему такие проблемы там градация между кнопками почти в 1V (как на меня не мега точность при 10 разрядах) , и почему оно так реагирует на температуру или я неправильно понимаю причину проблемы? может запитать чем то более стабильным и ровным..? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
artos5 Опубликовано 18 января, 2019 Поделиться Опубликовано 18 января, 2019 Да, 1541 тоже хороший ион . 0 Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ? Ссылка на комментарий Поделиться на другие сайты Поделиться
my504 Опубликовано 18 января, 2019 Поделиться Опубликовано 18 января, 2019 46 минут назад, Терентенко Андрей сказал: Спасибо ! буду пробовать Господа, вы вообще что тут обсуждаете? Какой, туды его в качель, ИОН? Как вообще формируется сигнал на руле? Почему на схеме с руля идет только один проводник? Откуда руль получает питание для формирования сигнала? 1 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
Терентенко Андрей Опубликовано 18 января, 2019 Автор Поделиться Опубликовано 18 января, 2019 Стоит штатная магнитола с неё на руль идёт питание подсветка кнопок на руле + сами кнопки ! С руля возвращается на магнитолу для управления ею (от 4.8 до 0.75) в зависимости от нажатой кнопки на руле ! В магнитоле есть канал для подключения телефона (при замыкании определённых контактов в шлейфе магнитола переходит в режим телефон) к нему подключёна периферия которой и должен управлять МК. сигнал с руля берёста в разъёме магнитолы, питание МК (+-12) тоже с магнитолы . Штатная магнитола работает в штатном режиме и управляться с руля тоже, при зажатии клавиши на руле и удержании более минуты МК оптроном замыкает и переводит магнитолу в режим телефон (в этом режиме магнитола не реагирует на команды с руля кроме звука +- а мк управляет схемой подключённой к каналу телефона ) 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
my504 Опубликовано 18 января, 2019 Поделиться Опубликовано 18 января, 2019 (изменено) Вся история с аналоговым интерфейсом кнопок состоит в том, что делитель напряжения на кнопках выполняется по ратиометрической схеме. Сиречь, когда опорное напряжение АЦП и является питанием делителя оных кнопок. Таким образом, на величину опорного напряжения становится БОЛТ ПОЛОЖИТЬ. АЦП измеряет не напряжение, а КОЭФФИЦИЕНТ ДЕЛЕНИЯ в аналоговом делителе кнопок. Никакого ИОН там не требуется. Идея с тем, чтобы задействовать входы опорного напряжения не имеет никакого смысла еще и потому, что эти входы придется подключить к АЦП в качестве опоры (в соответствующем регистре), иначе АЦП их проигнорирует. Но это так, лирическое отступление. Что касается линии сигнала, то ИМЕННО НА ДЕЛИТЕЛЬ должны идти ТРИ ВЫДЕЛЕННЫХ проводника - общий, питание, сигнал - (причем их желательно свить, поместить в экран, который соединить с общим АНАЛОГОВЫМ проводником схемы (в районе пина AVss, либо просто Vss, если отдельного вывода AVss у МК не предусмотрено). Никакие другие "общие" проводники и уж тем более "масса" для этого не пригодны от слова СОВСЕМ. Изменено 18 января, 2019 пользователем my504 0 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
Терентенко Андрей Опубликовано 18 января, 2019 Автор Поделиться Опубликовано 18 января, 2019 11 минуту назад, my504 сказал: Никакого ИОН там не требуется. Это радует! А то я тут уже два часа про ИОН читаю МК вместе с схемой размещены в нутри самой магнитолы длина проводов не более 4 см . Основной вопрос почему (шум, дребезг, шайтан ...) только на холодную если снять магнитолу и подержать в помещении или когда в салоне малость потеплеет то работает как швейцарские часы !!! А на холодную вот такая ерунда !!!!!!! 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
my504 Опубликовано 18 января, 2019 Поделиться Опубликовано 18 января, 2019 Я не понимаю как выполнена топология шин от руля к магнитоле, где размещена плата с МК. Нужен не тот рисунок, что Вы привели выше, а указание на принадлежность земель и питаний участков схемы. Что откуда берется и куда идет, включая провода на руль и от руля. И то, что Вы видите никакого отношения к дребезгу не имеет. Кроме всего прочего, измерения АЦП должны идти сплошным потоком в кольцевой буфер. После каждого измерения нужно находить среднее значение буфера. Оно и будет собственно отфильтрованным значением подлежащем анализу на предмет определения нажатия. Длина буфера должна быть выбрана такой, чтобы достаточно быстро реагировать на кнопку. Ну, положим, 10...30 мс. Количество измерений в буфере, например, - 16. То есть каждое преобразование должно идти с интервалом 10 мс/16= 525 мкс. Как то так. 0 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
artos5 Опубликовано 18 января, 2019 Поделиться Опубликовано 18 января, 2019 41 минуту назад, my504 сказал: Никакого ИОН там не требуется. Ну, ну расскажите. 4 минуты назад, Терентенко Андрей сказал: Основной вопрос почему (шум, дребезг, шайтан ...) только на холодную если снять магнитолу и подержать в помещении или когда в салоне малость потеплеет то работает как швейцарские часы !!! А на холодную вот такая ерунда !!!!!!! Кстати , эту проблему можно исправить программно . Только конечно если обвязка позволит. 4.8в формируется через делитель? Или питание там 4.8в . Если 4.8в через делитель , то можно использовать как калибровку при перепадах температуры . Так как при изменении температуры меняется сопротивление и соответственно напряжение . Программно нужно делать пересчет , чтобы компенсировать "уплывание" напряжения . 0 Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ? Ссылка на комментарий Поделиться на другие сайты Поделиться
my504 Опубликовано 18 января, 2019 Поделиться Опубликовано 18 января, 2019 Только что, artos5 сказал: Ну, ну расскажите. А тут и рассказывать нечего. Без ратиометрии эта приблуда работать нормально не будет. А ратиометрии не требуется конкретная опора. Нужна лишь стабильность на интервале преобразования. Но ИОН не гарантирует низкий шум. Поэтому он тут не пришей, ни пристегни. 0 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
artos5 Опубликовано 18 января, 2019 Поделиться Опубликовано 18 января, 2019 2 минуты назад, my504 сказал: Кроме всего прочего, измерения АЦП должны идти сплошным потоком в кольцевой буфер. После каждого измерения нужно находить среднее значение буфера. Оно и будет собственно отфильтрованным значением подлежащем анализу на предмет определения нажатия. Длина буфера должна быть выбрана такой, чтобы достаточно быстро реагировать на кнопку. Ну, положим, 10...30 мс. Количество измерений в буфере, например, - 16. То есть каждое преобразование должно идти с интервалом 10 мс/16= 525 мкс. Усреднение обязательно нужно делать . Можно и каждых 50мс усреднять по 20-40 значений , этого будет достаточно. 0 Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ? Ссылка на комментарий Поделиться на другие сайты Поделиться
my504 Опубликовано 18 января, 2019 Поделиться Опубликовано 18 января, 2019 (изменено) 11 минуту назад, artos5 сказал: Можно и каждых 50мс усреднять по 20-40 значений 50 мс - это многовато. Могут успевать сформироваться промежуточные значения при росте выходного сигнала фильтра. И 20-40 тоже неудобно. Потребуется деление. значит либо 16, либо 32. ЗЫ. Кстати. Фильтрация сигнала с аналогового делителя кнопок - это не совсем тривиальная задача. Выход КИХ ФНЧ (с прямоугольным окном), коим и является простое усреднение, дает задержку в половину длины буфера. Ответом на функцию Хевисайда (единичный перепад) будет линейный рост выходного сигнала вплоть до заполнения буфера. а теперь подумайте что с этим делать... Изменено 18 января, 2019 пользователем my504 0 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
artos5 Опубликовано 18 января, 2019 Поделиться Опубликовано 18 января, 2019 Ну , я антидребезг всегда делаю на значении 50мс. Когда делал опрос при помощи АЦП , то делал по моему около 50мс. За этот период 40 опросов и выдача усредненного результата . Можно применить ещё и чуток другой метод: 5 опросов и выдача самого среднего значения. Например так: 100 110 130 120 130 После фильтра = 120 Или выдача максимально одинакового значения: После такого фильтра: = 130 0 Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ? Ссылка на комментарий Поделиться на другие сайты Поделиться
my504 Опубликовано 18 января, 2019 Поделиться Опубликовано 18 января, 2019 Это все вырванный из реальных условий пример. Я выше изложил проблему. Решите ее... 0 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
artos5 Опубликовано 18 января, 2019 Поделиться Опубликовано 18 января, 2019 15 минут назад, my504 сказал: Кроме всего прочего, измерения АЦП должны идти сплошным потоком в кольцевой буфер. После каждого измерения нужно находить среднее значение буфера. Оно и будет собственно отфильтрованным значением подлежащем анализу на предмет определения нажатия. Длина буфера должна быть выбрана такой, чтобы достаточно быстро реагировать на кнопку. Ну, положим, 10...30 мс. Количество измерений в буфере, например, - 16. То есть каждое преобразование должно идти с интервалом 10 мс/16= 525 мкс. Как то так. Этого автору топика скорее всего (с долей вероятности 95%) будет недостаточно для решения его проблемы. Ему нужно кроме усреднения ввести самокалибровку . И ион лишним кстати не будет зря вы забраковали мое предложение (хотя для кнопок возможно ион и избыточен). 0 Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Терентенко Андрей Опубликовано 18 января, 2019 Автор Поделиться Опубликовано 18 января, 2019 а можно кусок кода как усреднить в ассемблере ? У меня там немного примитивно всё Скрытый текст ;=============================================== ;програми контроля напряжения на руле ;=============================================== Prov_V CLRF FL_KNOPKA ; очистка флагов кнопок перед измерениэм banksel ADCON0 ; переходим в регистр ADCON0 nop movlw b'10001101' ; правое виравнивание включаем модуль АЦП, , AN1 - вход movwf ADCON0 ; -//- call del_20mcs bsf ADCON0,1 ; включаем преобразование АЦП btfsc ADCON0,1 ; ожидаем завершения goto $-1 ; преобразования CLRF ANALIZ_H MOVF ADRESH,0 ; Загрузили измеренное значение в регистр MOVWF ANALIZ_H ;------------------------------------------------------------------------------ BTFSS ANALIZ_H,0 ; измеренное значение в регистр H = 0 (0) GOTO P_X_0 ; бит0=0 на пп проверки бита1 BTFSC ANALIZ_H,1 ; измеренное значение в регистр H = (0) 0 GOTO P_1_1 ; бит 1 =1 P_0_1 ;--- бит 1=0 бит 0=1 bsf STATUS,RP0 ; вибор банка 1 CLRF ANALIZ_L MOVF ADRESL,0 ; Загрузили измеренное значение в регистр MOVWF ANALIZ_L bcf STATUS,RP0 ; вибор банка 0 ADDLW D'87' ; Добавили число 87 (проверка напряжениэ више 2.07v (425)) BTFSS STATUS,C GOTO B_1 B_2 bsf FL_KNOPKA,1 ; флаг "кнопка (>) нажата" return B_1 bsf STATUS,RP0 ; вибор банка 1 CLRF ANALIZ_L MOVF ADRESL,0 ; Загрузили измеренное значение в регистр MOVWF ANALIZ_L bcf STATUS,RP0 ; вибор банка 0 ADDLW D'199' ; Добавили число 199 (проверка напряжениэ више 1.52v (425)) BTFSC STATUS,C GOTO A_ret bsf FL_KNOPKA,2 ; флаг "кнопка (+) нажата" return A_ret bsf FL_KNOPKA,3 ; флаг "кнопка (0) нажата" return ;------------------------------------------------------------------------------ P_1_1 ; пп проверки при бит 1=1 бит 0=1 bsf STATUS,RP0 ; вибор банка 1 CLRF ANALIZ_L MOVF ADRESL,0 ; Загрузили измеренное значение в регистр MOVWF ANALIZ_L bcf STATUS,RP0 ; вибор банка 0 ADDLW D'103' ; Добавили число 103 (проверка напряжениэ више 1.52v (773)) BTFSS STATUS,C GOTO pysto ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ bsf FL_KNOPKA,4 ; флаг "кнопка (p) нажата" return ;========================================================================================================================================= P_X_0 ; пп проверки бита1 при бит0=0 BTFSC ANALIZ_H,1 ; измеренное значение в регистр H = (0) 0 GOTO P_1_0 ; бит 1 =1 P_0_0 ;--- бит 1=0 бит 0=0 bsf STATUS,RP0 ; вибор банка 1 CLRF ANALIZ_L MOVF ADRESL,0 ; Загрузили измеренное значение в регистр MOVWF ANALIZ_L bcf STATUS,RP0 ; вибор банка 0 ADDLW D'87' ; Добавили число 87 (проверка напряжениэ више 1v (204)) BTFSS STATUS,C GOTO A_1 bsf FL_KNOPKA,2 ; флаг "кнопка (+) нажата" return A_1 bsf STATUS,RP0 ; вибор банка 1 CLRF ANALIZ_L MOVF ADRESL,0 ; Загрузили измеренное значение в регистр MOVWF ANALIZ_L bcf STATUS,RP0 ; вибор банка 0 ADDLW D'179' ; Добавили число 179 (проверка напряжениэ више 0.37v (76)) BTFSS STATUS,C GOTO pysto ;на пп "пусто" bsf FL_KNOPKA,5 ; флаг "кнопка (-) нажата" return ;------------------------------------------------------------------------------ P_1_0 ;--- бит 1=1 бит 0=0 bsf STATUS,RP0 ; вибор банка 1 CLRF ANALIZ_L MOVF ADRESL,0 ; Загрузили измеренное значение в регистр MOVWF ANALIZ_L bcf STATUS,RP0 ; вибор банка 0 ADDLW D'104' ; Добавили число 104 (проверка напряжениэ више .0v (773)) BTFSS STATUS,C GOTO A_2 bsf FL_KNOPKA,4 ; флаг "кнопка (p) нажата" return A_2 bsf STATUS,RP0 ; вибор банка 1 CLRF ANALIZ_L MOVF ADRESL,0 ; Загрузили измеренное значение в регистр MOVWF ANALIZ_L bcf STATUS,RP0 ; вибор банка 0 ADDLW D'225' ; Добавили число 225 (проверка напряжениэ више .v (542)) BTFSS STATUS,C GOTO B_2 bsf FL_KNOPKA,6 ; флаг "кнопка (<) нажата" return pysto ;на пп "пусто" bsf FL_KNOPKA,7 ; флаг НЕ нажатих кнопок return а защита от "дребезга " состоит в задержке 0.1 сек (проверки условия флага сработавшей кнопки) с выходом если условие не выполнено (кнопка скорее будет не нажата чем нажата ) но увы в протэусэ и теории это так а на практике нет! 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
snn_krs Опубликовано 18 января, 2019 Поделиться Опубликовано 18 января, 2019 Если в схеме есть электролиты, попробуйте заменить на тантал. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
artos5 Опубликовано 18 января, 2019 Поделиться Опубликовано 18 января, 2019 27 минут назад, Терентенко Андрей сказал: а можно кусок кода как усреднить в ассемблере ? Не знаю как на ассемблере , но на си выглядит так: Цитата int filtr(int data, int filtr){ Int filtr_cnt, data_buff; data_buff+=data; if(++filtr_cnt>filtr)data=filtr_cnt=0; return data_buff/filtr; } Ps: может быть с ошибками , на скорую и с телефона написал. Но суть ясна . 0 Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Терентенко Андрей Опубликовано 18 января, 2019 Автор Поделиться Опубликовано 18 января, 2019 здесь речь скорее идёт не о единичных "проскоках" а о закономерносте! притом повторюсь сигнал с руля стабилен без изменений чётко в пределах 0.05V колебания! Впечатление что МК просто те так считает в этот период ! при стабильном сигнале с руля может выдавать команду на один с оптронов постоянно как будто зажата какая то кнопка на руле или при нажатии одной кнопки срабатывает другая ..... и всё это пока не нагрета (проработала минут 5+- ) схема (LM8705 + PIC16f676 +PC817) всё на одной плате. 2 минуты назад, artos5 сказал: Не знаю как на ассемблере , но на си выглядит так В том то и проблема что + - в ассемблере как раз плюнуть умножить пол беды а делить целая наука, ну по крайней мере для меня ! Ех знал бы СИ подпелил бы на ардуинке и не морочил бы вам голову 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 18 января, 2019 Поделиться Опубликовано 18 января, 2019 28 минут назад, Терентенко Андрей сказал: У меня там немного примитивно всё у вас там бред какойто написан... начиная с настройки АЦП: movlw b'10001101' ; правое виравнивание включаем модуль АЦП, , AN1 - вход movwf ADCON0 ; -//- начнем с того что комментарий не соответствует включенному каналу АЦП ну да бог с ним, нахрена вообще правое выравнивание в задаче определения "трех кнопок" , для этого 8бит АЦП выше крыши и на порядок упрощает сам код обработки, самое главное не настроено тактирование АЦП по дефолту оно у вас в запредельном режиме работает. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Терентенко Андрей Опубликовано 18 января, 2019 Автор Поделиться Опубликовано 18 января, 2019 (изменено) 49 минут назад, IMXO сказал: не настроено тактирование АЦП banksel ADCON1 ; переходим в регистр ADCON1 movlw b'00110000' ; RC- генератор, movwf ADCON1 ; -//- в шапке при инициализации контролера ! 49 минут назад, IMXO сказал: комментарий не соответствует включенному каналу АЦП в процессе создания печатки изменил с АN1 на АN3 комментарий не поправил ! 49 минут назад, IMXO сказал: нахрена вообще правое выравнивание в задаче определения "трех кнопок" , для этого 8бит АЦП выше крыши и на порядок упрощает сам код обработки Да потому что я профи в в этом ! Скорей от глупости точнее от незнания ассемблер и пик знаю на уроне "поморгать светодиодом" ну если так можно сказать ну как мой воспальонний мозг допЁр реализовать задуманное так и написал почитал примеры там 10бит было вот по аналогии и ... Изменено 18 января, 2019 пользователем Терентенко Андрей 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.