Помогите, пожалуйста, посчитать схему.

kostyamat
Offline
Зарегистрирован: 16.11.2017

Суть в чем: Делаю внешние радиоуправление китайской магнитолой. Магнитола имеет два входа KEY1 KEY2, которые подключаются к резистивным кнопкам автомобильного руля.

Идея была эмулировать нижний резистор делителя напряжения ШИМ-ом от атмега328. Я такое уже делал, эмулируя ручку круизконтроля Додж Калибер. Но тут, что-то пошло не так. Напряжение на ADC входах магнитолы, в точке А на схеме сильно плавают, поэтому обучение заканчивается ошибкой. Поэтому думаю внести в схему транзистор BC547, как элемент сглаживающий выбросы ШИМ на входе ADC.

 

Вводные: Сам ШИМ, до базы транзистора (изначально транзистора не было), без нагрузки, отлично отрабатывает от 0,4 до 3,3 вольта. При подключении напрямую к ADC, напряжения долго стабилизируются и плавают. Вход ADC (KEY1 и KEY2) магнитолы подтянут вверх к питанию 3.3v делителем на плате магнитолы (номиналы не знаю, не разбирал и не смотрел). Но подключив резистор Rp между точкой А и массой, получил напряжение в точке А 1,3в. Из этого предполагаю, что резистор Rx ~ 1.5 kOm к + источника питания 3.3в (ну или пропорционально больше, если подтянуто к напряжению выше).

R1 = 320, C1 = 1мкФ.

Возможно, в схеме ADC присутствует второй резистор Ry. Потому как если тупо замерять входное сопротивление (знаю что это не правильно), цифровым тестером, получаю медленное нарастание (конденсатор?) сопротивления от 10 до 20-ти кОм.

Ребята, помогите просчитать схему, чтобы получить более-менее плавное управление напряжение в точке А, с помощью Т1, обратно-пропорционально ШИМ на базе транзистора. Номиналы, возможно доп.элементы. Плиз.

Закончу проект, обязательно выложу в паблик. Программная часть уже готова.

kostyamat
Offline
Зарегистрирован: 16.11.2017

Что-то, картинка со схемой так и не вставилась, но открывается в новом окне браузера, правой кнопкой мышки на пиктограмме картинки - "открыть изображение".

b707
Онлайн
Зарегистрирован: 26.05.2017

костя, в вашем сообщении нет никакой пиктограммы картинки

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

а может лучше поставить старый добрый КП103 и mcp4725

kostyamat
Offline
Зарегистрирован: 16.11.2017

Так и не понял, как тут картинку вставить. Лично я пиктограмму вижу, все остальные - нет.
Короче, похоже так будет проще https://drive.google.com/file/d/154kL1gsexFcArEh5-71HAC9qgBZv1MSr/view?u...

Извините, в основном сообщении забыл указать номинал RP = 1 kOm

kostyamat
Offline
Зарегистрирован: 16.11.2017

ua6em пишет:

а может лучше поставить старый добрый КП103 и mcp4725


Каждая лишняя детальки - мучительное ожидание с АлиЭкспресс, Амазон или эБей, а КП103 мне вообще не доступен, я в ЕС живу. Такое как BC547-548 есть в наличии. К тому же, такая эмуляция уже прокативала, и не раз, и не только у меня. Не хотелось бы порождать излишние сущности.

Пс. mcp4725 Ого! Целый DAC. Зачем он там? Там просто нужно одним плечём делителя напряжения управлять. Тупо транзистор - самое то.

rkit
Offline
Зарегистрирован: 23.11.2016

Не взлетит. Температурные коэффициенты + куча рабочих значений попадают в малый диапазон полезных выходных значений шим (0.6В-0.7В из диапазона 0В-5В). Задача решается просто набором нужных сопротивлений, активируемых разными пинами, или через сдвиговый регистр.

kostyamat
Offline
Зарегистрирован: 16.11.2017

Я думал над этим. Похоже ваши слова имеют смысл.
Тогда вопрос: как с программной точки зрения коммутировать ногами резисторы? Схематически все и так ясно.
А вот как заставить контроллер не подавать напряжение на пин, а увеличивать/уменьшать свое входное сопротивление относительно земли?

Наверное так:
pinMode(pin, OUTPUT);
digitalWrite (pin, LOW);
А дальше
pinMode(pin, INPUT); //поднять пин с массы
pinMode(pin, OUTPUT); // положить пин на массу

Так прокатит? Потому как установка пина в HIGH, в данном случае, не уместна.

rkit
Offline
Зарегистрирован: 23.11.2016

Да, так.

kostyamat
Offline
Зарегистрирован: 16.11.2017

Ще один вопрос: а полевик не прокатит, или ОУ скажем?
У меня есть кучка lm358.

rkit
Offline
Зарегистрирован: 23.11.2016

ОУ может быть пойдет. Тут вопрос к чувствительности со стороны магнитолы. Сигнал должен нарастать достаточно быстро, чтобы магнитола не считала его раньше времени, и при этом быть достаточно гладким.

kostyamat
Offline
Зарегистрирован: 16.11.2017

Спасибо.
Это схема под мои расклады. Я правильно понял?

Green
Offline
Зарегистрирован: 01.10.2015

Совсем недавно делал человеку транслятор кнопок. Безо всяких DAC - тупо коммутировал резисторы на выходе.)

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

kostyamat пишет:
Ще один вопрос: а полевик не прокатит, или ОУ скажем? У меня есть кучка lm358.

полевик прокатит, КП103, их снова выпускают )))
Стоит в генераторе вместо переменного резистора

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ua6em, ты вапще читаешь, чо он пишет?

kostyamat пишет:
Каждая лишняя детальки - мучительное ожидание с АлиЭкспресс, Амазон или эБей, а КП103 мне вообще не доступен, я в ЕС живу.

b707
Онлайн
Зарегистрирован: 26.05.2017

DetSimen пишет:

ua6em, ты вапще читаешь, чо он пишет?

kostyamat пишет:
Каждая лишняя детальки - мучительное ожидание с АлиЭкспресс, Амазон или эБей, а КП103 мне вообще не доступен, я в ЕС живу.

Вот оно как.... В ЕС то оказывается, кризис :)

я в ЕС живу.... Каждая лишняя детальки - мучительное ожидание с АлиЭкспресс

Либо ТС живет на личном острове посреди Северного моря, либо, что более вероятно - он так сказать demasiado tacano(исп)- невероятно скуп, чтоб покупать детали в локальных магазинах

 

kostyamat
Offline
Зарегистрирован: 16.11.2017

Именно так как вы сказали. Живу в маленьком городке. Локальный магазин радиодеталей находится в 160км от меня. А расторопность испанских онлайн продавцов, и почты, уравнивают шансы получить детали с Али даже быстрее. О разнице в ценах я даже говорить не хочу. К тому же, очень часто, заказывая детали локально, получал их все равно с Китая, с теми же сроками доставки, но по испанским ценам.
Поэтому, либо эБей от англичан, либо Амазон, если надо быстро.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Та шо ж, у англичан КП103 нету штоли? 

b707
Онлайн
Зарегистрирован: 26.05.2017

Магазин в 160км - при качестве испанских дорог - это почти что рядом с домом... Чуть больше часа по автостраде, часа два по горам... Раз в пару недель вполне можно прогуляться и накупить все необходимое :)

MaksVV
Offline
Зарегистрирован: 06.08.2015

ЦАП или цифровой потенциометр лучшее решение вопроса , имхо . MCP41010. например

управляется просто,никаких библиотек

void MCP4xxxxWrite(byte val) {            // отправляет в потенциометр значение ползунка
    digitalWrite(CS, LOW);                    // включаем прием данных микросхемой
    SPI.transfer(0b00010001);               // отправляем первый байт в регистр конфигурации
    SPI.transfer(val);                             // отправляем второй байт в "регистр ползунка"
    digitalWrite(CS,HIGH);                    // выключаем прием данных микросхемой
}

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

вот пример. На KEY1 справа вверху осталась штатная схема. На KEY2 подсовываем нужные нам номиналы

SLKH
Offline
Зарегистрирован: 17.08.2015

DetSimen пишет:

Та шо ж, у англичан КП103 нету штоли? 

дикие люди...

kostyamat
Offline
Зарегистрирован: 16.11.2017

b707 пишет:

Магазин в 160км - при качестве испанских дорог - это почти что рядом с домом... Чуть больше часа по автостраде, часа два по горам... Раз в пару недель вполне можно прогуляться и накупить все необходимое :)


Ну да, - протрахать день на работе, потратить 20€ на солярку + пожрать, чтобы купить деталюх на десятку - ну, ок. :)

Ребята, типовые решения с цифровыми резисторами я знаю. С коммутацией резисторов пинами - тоже. Есть маленькое но - доступность к деталям, время доставки. Соответственно мудрю на том, что есть. И главный момент - я ШИМом дурил комп автомобиля и прокатило. Тут уже как бы спортивный азарт.

b707
Онлайн
Зарегистрирован: 26.05.2017

kostyamat пишет:
протрахать день на работе, потратить 20€ на солярку + пожрать, чтобы купить деталюх на десятку - ну, ок. :)

сочувствую... переезжайте к нам :)

Green
Offline
Зарегистрирован: 01.10.2015

"Приезжайте к нам на Колыму."(с)

ВН
Offline
Зарегистрирован: 25.02.2016

kostyamat, чтобы вам как-то реально помочь нужны актуальные уровни на входах. Особенно нужен уровень ближайший к земле, поскольку все простые схемы с шим имеют в этом месте ограничения порядка 0,6-1в

kostyamat
Offline
Зарегистрирован: 16.11.2017

Схема в третьем комментарии. Уровни в первом. Или я не понял что вы имеете ввиду?

ВН
Offline
Зарегистрирован: 25.02.2016

где в первом уровни? вы нажимаете кнопки -так?

хз сколько этих кнопок, хз какой  уровень на входе дает какая кнопка 

должна быть табличка типа

к1-3в

к2-2в

к3- 1,5 в 

....

rkit
Offline
Зарегистрирован: 23.11.2016

kostyamat пишет:
Спасибо.
Это схема под мои расклады. Я правильно понял?

Это схема для изучения и ознакомления.

kostyamat
Offline
Зарегистрирован: 16.11.2017

ВН пишет:

где в первом уровни? вы нажимаете кнопки -так?

хз сколько этих кнопок, хз какой  уровень на входе дает какая кнопка 

должна быть табличка типа

к1-3в

к2-2в

к3- 1,5 в 

....

Планировал около шести команд для каждого из входов KEY1/2, то есть шесть напряжений в рамках от 0 до 3.3 вольта. Имея ввиду, что 3.3в для магнитолы = "нет команды". Кнопки на магнитоле обучаемые.
Единственное - не знаю программное разрешение этих входов, всмысле в каких "от и до" вход считает за одно значение, чтобы границы не перекрывались. Думаю что разрешение не хуже +-20 - 30 мВ.
ШИМ программировал из расчета 0.5 вольта на шаг, от 0.3 до 2.8в.

ВН
Offline
Зарегистрирован: 25.02.2016

вот в том и дело , что к нулю не прижмет ни правильный транзистор пнп, ни lm358

lm358 можете просто проверить

а пнп что-то есть?

kostyamat
Offline
Зарегистрирован: 16.11.2017

Bc548

ВН
Offline
Зарегистрирован: 25.02.2016

меняете в своей схеме нпн на пнп, эмиттер в точку А, коллектор на землю.

R1 не меньше 1kОм

х/F= R1*C1

F- частота шим

х от 10 до 100 , чем больше х,  тем меньше пульсации напряжения, но дольше время реакции на изменения шим.

Rp нужно убрать

когда посадите пин глухо в 0 увидите на эмиттере свое минимальное напряжение, д.б. около +0,6в

kostyamat
Offline
Зарегистрирован: 16.11.2017

Короче, приделал ей ОУ lm358. Начало ловить и запоминать клавиши, но... Реакция магнитолы меня совершенно не устраивает.
А) разрешение входов KEY1/2 похоже +-0,7 вольта. Как минимум он путает кнопки 0.76 и 1.42 вольта. Более 4-х команд не всунешь.
В) При этом реакция магнитолы на нажатие клавиши около 1 секунды, для управления уровнем звука энкодером неприемлемо. А вся затея, кроме управления с руля, подразумевала энкодер (я шлю импульсы 100мс при вращении энкодера).

Короче, буду переделывать приемник на atmega32u4 на HID устройство.

Осипов на своем Ютуб канале библу показывал, для андроид.

Всем спасибо за участие.

ПС. Если кому интересно, текущие скетчи приемника и передатчика могу выложить, для самостоятельного допиливания. Возможно будет работать нормально на головах, соображающих быстрее чем раз в секунду.
Передатчик передает 16 команд. Используется 4 кнопки и один энкодер от мышки. Одна из кнопок модифицирует раскладку, при однократном нажатии она выдает свой код, при удержании переключает раскладку. Энкодер передает влево/вправо, нажатый влево/вправо (это можно отключить в константах, тогда количество команд равно 12), и тоже самое но для второй раскладки. Все кнопки, кроме той, что модифицирует раскладку, имеют удержание, то-есть нажал, и пока не отпустил, напряжение на выходе ШИМ меняется не будет. Передатчик отправляет код команды с энкодера, а приемник формирует импульс. Передатчик имеет отключаемый звуковой сигнал нажатия клавиш, который меняется в зависимости от раскладки, можно отключить в константах.
Приемник имеет режим обучения магнитолы, включается замыканием на массу одного из выходов (который нормально управляет подсветкой магнитолы, мне так было удобно, этот провод есть в руле, и имело смысл сделать передачу его состояния на приемник, чтобы не искать в проводке). В режиме обучения, каждое нажатие клавиши, или оборот энкодера, выдают фиксированное значение ШИМ, сбросить которое можно кратким замыканием того же выхода подсветки на массу.

MaksVV
Offline
Зарегистрирован: 06.08.2015

ТС посмотри приложения есть такие на андроиде, Serial Manager от Сергея и Remote Inputs manager. Они по терминалу от ардуины принимают команды (нажатия кнопок) и каждой команде можно присвоить какое то действие, будь нажатие громкости, открытия любого приложения или вообще выполнение сценария через Tasker. Только лучше действительно брать про микро, а то ch340 может не определится в usb без танцов с бубном. Про микро должна без примочек определяться. 

kostyamat
Offline
Зарегистрирован: 16.11.2017

Не, не хочу - это рут, пляски с программированием сценариев. Такое не продашь и не подаришь.
Хочу чтобы воткнул в любой андроид по ОТГ и оно из коробки работает.

MaksVV
Offline
Зарегистрирован: 06.08.2015

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

kostyamat
Offline
Зарегистрирован: 16.11.2017

Serial Manager полунерабочий, постоянно вываливается, эмуляция нажатий кнопки вообще не работает. А вот Remite input Manager, хоть и лохматый уже, и не обновляется, кнопки эмулирует четко. Но у него функциональность ограничена.
Буду думать. Возможно оптимально сделать часть команд, кнопки к примеру через RIM, а часть функций через KEY1/2.

MaksVV
Offline
Зарегистрирован: 06.08.2015

Да, все правда

kostyamat
Offline
Зарегистрирован: 16.11.2017

Это просто жопа, а не магнитола. Короче, музыкальный плеер работает ТОЛЬКО с резистивными кнопками и с тача. Стандартные клавиатурные эвенты андроид не поддерживаются. Remote input Manager ничем помочь не может. Так же и радио, и видеоплеер.

vlad072
Offline
Зарегистрирован: 01.08.2017

В соседней ветке человек задавал вопрос на подобную тему, хочет использовать оптроны. Так вот может это как раз Ваш случай? Рассмотрите оптроны AQY212EH, в открытом состоянии канал единицы Ом, можно сэмулировать аналоговое нажатие кнопок подобрав нужные резисторы.

kostyamat
Offline
Зарегистрирован: 16.11.2017

Та я уже на коммутацию резисторов пинами контроллера переделал. И чё я, дурень, сразу так не сделал? Столько времени провозился.

MaksVV
Offline
Зарегистрирован: 06.08.2015

так для инфы. управление андроидом с эмуля клавы. сочетания клавиш (сам не пробовал работает ли). 

Клавиатурные комбинации Android.
С рабочего стола:
Menu + A: добавить виджет.
Menu + S: универсальный поиск.
Menu + W: сменить обои.
Menu + N: открыть окно уведомлений.
Menu + P: открыть меню настроек.

Кроме того, любое приложение может быть запущено при помощи функции быстрого запуска. Для этого используется комбинация клавиши Search + и клавиша цифры, назначенная для каждого конкретного приложения в настройках, комбинации запуска программ в Android:
Search + B: запустить веб-браузер.
Search + C: открыть адресную книгу.
Search + E: открыть электронную почту.
Search + G: запустить клиент Gmail.
Search + P: открыть музыкальный проигрыватель.
Search + S: создать SMS.
Search + Y: открыть клиент YouTube.

Функции веб-браузера:
Menu + J: перейти на страницу назад.
Menu + K: перейти на страницу вперед.
Menu + R: обновить страницу.
Menu + F: найти страницу.
Menu + B: открыть закладки.
Menu + A: добавить в закладки.
Menu + S: открыть меню работы с социальными закладками.
Menu + H: просмотреть историю посещения сайтов.
Menu + S: открыть настройки браузера.
Menu + D: загрузки.
Menu + G: информация о странице.
Menu + E: выделить текст.

Функции при работе с Gmail под Android:
R: ответить на текущее сообщение.
A: ответить на все сообщения.
Y: архив сообщений.
Menu + U: обновить входящие.
Menu + C: создать электронное письмо.
Alt + Up: перейти в начало списка.
Alt + Down: перейти в конец списка.

Функции при наборе текста:
Shift + Del: удалить символ справа от курсора.
Alt + Del: удалить строку.
Shift + Shift (нажать дважды): включить caps lock; снова нажать shift для отключения.
Alt + Left: переместить курсор в начало строки.
Alt + Right: переместить курсор в конец строки.
Alt + Up: переместить курсор в начало страницы.
Alt + Down: переместить курсор в конец страницы.
Shift + Left/Right: выделить текст для удаления/копирования.

Клавиатурные комбинации Андроид через USB-host переходник на клавиатуре Windows, или универсальной bluetooth.
Esc - аналог кнопки "назад";
Win+Esc - аналог кнопки "домой";
Ctrl+Esc - аналог кнопки "меню";
Alt+Tab - переключение между приложениями;
Ctrl+Space или Shift+Space - переключение раскладки;
Ctrl+P - открыть настройки;
Ctrl+M - управление установленными приложениями;
Ctrl+W - смена обоев;
Win+E - написать письмо;
Win+P - проигрыватель музыки;
Win+A - калькулятор;
Win+S - написать SMS;
Win+L - календарь;
Win+C - контакты;
Win+B - браузер;
Win+M - карты Google;
Win+Space - поиск;
Ctrl+Alt+Del - перезагрузка.

Команды для браузера.
Ctrl+N/T - новая вкладка;
Ctrl+I/O - увеличить/уменьшить масштаб;
Ctrl+J - менеджер закачек;
Ctrl+R - перезагрузить страницу;
Ctrl+F - поиск;
Ctrl+B - закладки;
Ctrl+H - история;
Ctrl+D - добавить в закладки;
Ctrl+S - поделиться;
Ctrl+G - информация о странице;
Ctrl+P - окно настроек;
Ctrl+W - закрыть вкладку;
Ctrl+L - фокус на адресную строку;
Space/Shift+Space - перемотка на экран вниз/вверх;
Ctrl+С/V - копирование/вставка;
Ctrl+Tab - переключение между вкладками.

 

kostyamat
Offline
Зарегистрирован: 16.11.2017

Хоспадя, шо ж это за г-но эта магнитола.
Там на входах своя собственная подтяжка к +3.3в. Так вот, такое впечатление, что резистор поддержки плавает. Поставил резисторы из расчета, что каждый следующий в два или больше раза выше предыдущего, получилось 47, 560, 1.2кОм, 2.2кОм, 4,7кОм, 10кОм.
В итоге, это дерьмо путает команды, потому как, вопреки расчетам и здравому смыслу получаю: 110мВ, 860мВ, 1.2в, 1.65в, 1,86в(как?!), 2.3в. Вот с двумя предпоследними напряжениями проблема, магнитола их путает, 0.2в все таки. Пришлось менять три последних номинала, поставил 6.8К, 12К, 22К, получил 1.9в, 2.3в, 2.6в. Как ни странно 2.3 и 2.6в. она не путает, но завтра 22к заменю на 33к, от греха подальше. Поплывет ещё при нагревании в торпеде, трахайся потом, снимай и т.п.

Зависимость напряжения на входе ниразу не линейная, вот как 2.2к и 4.7к могут дать разницу в 0.3в.? Первый раз вижу, чтобы закон Ома шел лесом.
Верхнее плечо внутреннего резистора подтяжки около 2.3К, замерял уже, подключая резистор на массу, и считая по формуле из получившегося напряжения. Но похоже оно плавает, как бы сжимая диапазон в центре шкалы.
Примерно тоже самое было, когда я с ШИМом и ОУ игрался. Похоже тема ШИМ таки рабочая, только не для шести, а для трех-четирех команд и со значениями поиграться, а я не понял вовремя что не так. Правда лучше всего себя показал встроенный в LGT8F328p DAC на D4, если ему референсное напряжение от 3.3в дать, он без нагрузки выдает очень точные напряжения, равные расчетным. Я его тоже через ОУ подключал. Нужно было попробовать напряжение команд раздвинуть. Магнитола хорошо различает от 0 до 1.4в, и от 2 до 3в.

Может я чего не так делаю, или не так понимаю??

vlad072
Offline
Зарегистрирован: 01.08.2017

Я бы тупо отключил шлейф руля и померял, самый верный вариант.

kostyamat
Offline
Зарегистрирован: 16.11.2017

Я кажется понял, почему не прокатило с ШИМ, ЦАП и ОУ. И странности поведения напряжения на входах магнитоллы - закон Ома в лес не ходил. Просто магнитолла не меряет напряжение, она похоже подключает резистор клавиатуры в RC-цепочку и меряет частоту резонанса. К примеру как цифровой мультиметр. Так или иначе, тема с переключениями резисторов пинами контроллера работает. Резисторы желательнот подбирать в пределах от десятков Ом до 1К. Иначе работает стабильно, но забывает команды после перезагрузки. (Предполагаю - в переменную получившаяся значение частоты лезет, а вот в выделенную ячейку ЕЕПРОМ - нет. Стандартная ошибка несоответствия типов и размерностей данных при программировании, у самого такое случалось).

 

vlad072 пишет:

Я бы тупо отключил шлейф руля и померял, самый верный вариант.

я вот как раз руль то и делаю. :) Измерять нечего пока, что сам придумаю и прилеплю, то и будет.