Питание arduino в авто... Плавают снимаемые показания сопротивления...

BataniQ
Offline
Зарегистрирован: 05.02.2017

Доброго всем времени суток. Поблема заключается в следующем. 

Делал адаптер резистивных кнопок для мультируля своего авто(Opel vectra B).

Нашел проект в интернете http://mysku.su/sdelaj-sam/primenenie-arduino-v-avtomobile-upravlenie-magnitoloj-knopkami-na-rule.html а также проект схожий с моим(а именно одинаковый цифровой потенциометр) https://www.drive2.ru/l/9517061/

В общем все сделал, подключил к магнитоле (машина была не заведена) все работало. Но когда машина заводится то показания сопротивления(напряжения) на ардуину приходят завышеные.

В чем может быть проблема?

Питал ардуину от сети автомобиля через китайский модуль с aliexpress  https://ru.aliexpress.com/item/MT3608-2A-Max-DC-DC-Step-Up-Power-Module-Booster-Power-Module-For-Arduino/32576479067.html?spm=2114.13010608.0.0.ayNwMa

Схема подключения кнопок

Скетч прошивы

// библиотека для потенциометра, скачать.
// скачивать тут https://sites.google.com/site/tfagerscode/home/digipotx9cxxx
#include <DigiPotX9Cxxx.h>

//задаем на каких пинах сидит управление потенциометром (INC,CS,U/D)
DigiPot pot(2,5,4);

//задаем начальные значение переменных
int i=0;
int prevButton=0;

// Коды имеющихся на руле кнопок
const int VOL_UP=1;
const int VOL_DN=2;
const int PREV_TR=3;
const int NEXT_TR=4;
const int MODE=5;
const int MUTE=6;

// задаем аналоговый пин, на котором мы считываем сопротивление нажатой на руле кнопки
int wheelPin=A5;

void setup()
{               
pinMode(wheelPin, INPUT);
pot.reset();
}


// Эта функция читает сопротивление с кнопок на руле и возвращает код нажатой кнопки, либо 0
int getR()
{
// читаем сопротивление (на самом деле напряжение, конечно) на аналоговом пине
int r=analogRead(wheelPin);

//Serial.println(r); //можно вывести в терминал значение нажатой кнопки
 
// Ищем, какая кнопка соответствует этому сопротивлению. 
// Данные значения сопротивлений подходят для Opel Vectra B, для других автомобилей числа будут другие.
if (r>=12 && r<=21) return(VOL_UP);
if (r>=2 && r<=10) return(VOL_DN);
if (r>=69 && r<=83) return(PREV_TR);
if (r>=38 && r<=52) return(NEXT_TR);
if (r>=23 && r<=33) return(MODE);
if (r>=125 && r<=138) return(MUTE);

// если ни одна из кнопок не нажата, возвращаем 0
return (0);
}

// ОСНОВНОЙ ЦИКЛ
void loop()
{
int currButton=getR(); // заносим в переменную currButton код нажатой кнопки
if (currButton!=prevButton) // если значение поменялось с прошлого раза
{
delay(10);
currButton=getR(); // ждем 10ms и читаем еще раз, чтобы исключить "дребезг" кнопки

if (currButton!=prevButton) // если код кнопки точно поменялся с прошлого раза
{
prevButton=currButton;     // сохраняем новое значение в переменную prevButton

// Выставляем сопротивление на потенциометре, тем самым посылаем команду на магнитолу.
// Значения сопротивлений даны для Pioneer, для магнитол других марок числа будут другие.
    
     
pot.reset(); 
switch(currButton)
{
case VOL_UP: pot.set(16); break;  // 16k
case VOL_DN: pot.set(24); break;  // 24k   
case PREV_TR: pot.set(11); break;  // 11k
case NEXT_TR: pot.set(7); break;  // 8k
case MODE: pot.set(1); break;  // 1.6k
case MUTE: pot.set(3); break;  // 3k
default: pot.reset(); break; // 0k
}
}
}
delay(5);
}

 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

BataniQ, MT3608 это StepUp преобразователь, напряжение на его входе должно быть меньше, чем выходное, иначе он не работает стабилизатором.

BataniQ
Offline
Зарегистрирован: 05.02.2017

Т. е. необходимо плата питания сабилизирующая? Видели ли вы такую плату на aliexpress? Или что можете посоветовать

bwn
Offline
Зарегистрирован: 25.08.2014

BataniQ пишет:

Т. е. необходимо плата питания сабилизирующая? Видели ли вы такую плату на aliexpress? Или что можете посоветовать

Переделайте его в Sepic с добавлением пары деталей (обязательно нужна еще одна такая же индуктивность) и скорее всего болезнь уйдет. В нете есть методика гуглится по MT3608. В принципе по ней можно любой StepUp.

BataniQ
Offline
Зарегистрирован: 05.02.2017
Крохотные LM2596 модуль питания DC/DC БАК 3А регулируемая доллар регулятор модуль ультра LM2596S 24 В переключатель 12 В 5 В 3 В
(from AliExpress Android)
Скажите пожалуйста вот этот понимающий преобразователь даст необходимую стабильность при выходном напряжении 9в?
bwn
Offline
Зарегистрирован: 25.08.2014

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