Переменный резистор как указатель угла поворота

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

Доброго времени суток. Стоит задача сделать переменный резистор как датчик угла поворота. А именно максимальный уго поворота 90 градусов. Т.е. если резистор на 50 КОм то 0 КОм это 0 град. а около 15 КОм это 90 градусов. Так вот подскажите как это реализовать. Мной написан простой скетч где показания резистора устанавливались как 0...1023. Затем я добился того что 0 КОм - 0% а 50КОм - 100%

Скетч:

// include the library code:
#include <LiquidCrystal.h>
 
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
 
void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  lcd.setCursor(0,1);
  lcd.print("OPEN: ");
  lcd.setCursor(11,1);
  lcd.print("%");
}
 
void loop() {
 
  int sensorValue = analogRead(A0);
  float voltage= sensorValue * (100.0/1023.0);
  lcd.setCursor(5,1);
  lcd.print(voltage);
  delay(100);
  
}
 
 
Newport
Newport аватар
Offline
Зарегистрирован: 17.06.2017

BataniQ пишет:
Доброго времени суток. Стоит задача сделать переменный резистор как датчик угла поворота. А именно максимальный уго поворота 90 градусов. Т.е. если резистор на 50 КОм то 0 КОм это 0 град. а около 15 КОм это 90 градусов. Так вот подскажите как это реализовать. Мной написан простой скетч где показания резистора устанавливались как 0...1023. Затем я добился того что 0 КОм - 0% а 50КОм - 100%

Если переменный резистор имеет линейную характеристику сопр от угла поворота (тип  А), то интерполировать угол кривой 1-го порядка.  Если логарифмический, то мучиться с экспонентой или заменить на линейный.

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

Резистор стоит логорифмический B50K. Мучатся не стоит или всетаки попробовать? Я в програмировании как бы не силен(ПОКА) хотя проект на ардуино не первый. Может у кого образец какойто есть с экспонентой.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

BataniQ пишет:

Резистор стоит логорифмический B50K. Мучатся не стоит или всетаки попробовать? Я в програмировании как бы не силен(ПОКА) хотя проект на ардуино не первый. Может у кого образец какойто есть с экспонентой.

Точно. Давайте мерить микрометром, отмечать мелом , и рубить топором. Это так правда жизни. Зачем вам ардуина, если результат будет так примерно на глаз. АЦП у ардуины линейна, Если использовать логарифмический, то где будет точно, а где-то "а хер его знает".

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

qwone пишет:

BataniQ пишет:

Резистор стоит логорифмический B50K. Мучатся не стоит или всетаки попробовать? Я в програмировании как бы не силен(ПОКА) хотя проект на ардуино не первый. Может у кого образец какойто есть с экспонентой.

Точно. Давайте мерить микрометром, отмечать мелом , и рубить топором. Это так правда жизни. Зачем вам ардуина, если результат будет так примерно на глаз. АЦП у ардуины линейна, Если использовать логарифмический, то где будет точно, а где-то "а хер его знает".

Я имею в виду из значений от 0...1023 (все) сделать выборку 0 это 0% а 230 и все что дальше это 100%. А уже с линейкой и топором я справлюсь сам. А вот с кодом нет.  Есть какие-либо идеи или я не по адресу? Ибо насмешек и резких в мою сторону вырожений можно пчитать и на любом другом форуме а вот помощи дождешся не везде...

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

А здесь все просто. Вот с АЦП результат и логарифмируйте. А потом функций map растягивайте. Или вам математически показать.

угол - > логарифм -> напряжение -> АЦП-> взять экспаненту -> результат.  Осталось определить у вас резистор дает логафифм или экспаненту.

Newport
Newport аватар
Offline
Зарегистрирован: 17.06.2017

qwone пишет:
Осталось определить  резистор дает логафифм или экспаненту.
По его маркировке. Но я  предлагаю не мучиться и заменить на линейный :  https://www.chipdip.ru/product/16k1-b100k     Функциональная характеристика   линейный

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Newport, я с вами согласен.Ну или те же яйца, только в профиль http://arduino.ru/forum/programmirovanie/lineinaya-interpolyatsiya-0

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

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

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

BataniQ.Код не шедевр, но вам пойдет . На глаз выставите проценты и хватит вам.

void setup() {
  Serial.begin(9600);
}
void loop() {
  delay (100);
  int sensorValue = analogRead(/*пин серсора*/A0);
  if (sensorValue < 100)  Serial.println("10%");
  else if (sensorValue < 200)  Serial.println("20%");
  else if (sensorValue < 300)  Serial.println("30%");
  else if (sensorValue < 400)  Serial.println("40%");
  else if (sensorValue < 500)  Serial.println("50%");
  else if (sensorValue < 600)  Serial.println("60%");
  else if (sensorValue < 700)  Serial.println("70%");
  else if (sensorValue < 800)  Serial.println("80%");
  else if (sensorValue < 900)  Serial.println("90%");
  else  Serial.println("100%");
}

 

Штирлиц
Штирлиц аватар
Offline
Зарегистрирован: 13.06.2015

Если поменяли переменник  на переменник  с линейной харак-ой - посмотрите пример из ИДЕ    " AnalogInOutSerial". Поэксперементируте с ним. Добавьте вывод на ЛСД . Ничего сложного нет.

Даже если переменник не линейный - поиграйтесь . Поймете и дальше легче будет.

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

а с какой точностью нужно определять этот угол? может энкодер вместо резистора, там точность лучше 0,01 градуса получить можно

b707
Offline
Зарегистрирован: 26.05.2017

BataniQ пишет:

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

Идея с переменником неплохая. если это учебный проект. Научится программировать и тд... Но реально на машине это долго не проживает - у вас переменник будет сотни и тысячи раз за поездку елозить по первым 10-20% шкалы - обычный радиорезистор сотрется нафик за пару дней.

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

Проект учебный!!! Спасибо большое. Буду пробовать что-то делать. И да о износе переменника я и не подумал.

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

b707 пишет:

Идея с переменником неплохая. если это учебный проект. Научится программировать и тд... Но реально на машине это долго не проживает - у вас переменник будет сотни и тысячи раз за поездку елозить по первым 10-20% шкалы - обычный радиорезистор сотрется нафик за пару дней.

на машине проживёт ровно столько, сколько должен прожить на машине https://ru.wikipedia.org/wiki/Датчик_положения_дроссельной_заслонки

Newport
Newport аватар
Offline
Зарегистрирован: 17.06.2017

BataniQ пишет:
Короче спасибо, я только зря вам дурю голову. Я пока еще не дорос до написания такого кода. Мне нужно зделать устройство которое будет указывать на какой процент открыта дросельная заслонка в машине. Может есть попроще способ? А да и заслонка механическая двигается тросиком.

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

 

b707
Offline
Зарегистрирован: 26.05.2017

Клапауций 112 пишет:

на машине проживёт ровно столько, сколько должен прожить на машине https://ru.wikipedia.org/wiki/Датчик_положения_дроссельной_заслонки

я знаю, что такое ДПДЗ и как он устроен. И знаю, как он стирается и начинает глючить.

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

BataniQ пишет:

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

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

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

b707 пишет:

Клапауций 112 пишет:

на машине проживёт ровно столько, сколько должен прожить на машине https://ru.wikipedia.org/wiki/Датчик_положения_дроссельной_заслонки

я знаю, что такое ДПДЗ и как он устроен. И знаю, как он стирается и начинает глючить.

ок. если тебе нужен вечный ДПДЗ, то замени аналоговый на с датчиком Холла.

*бум выепываться или подключимся к штатному ДПДЗ телеги?

evgta
Offline
Зарегистрирован: 02.09.2016

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

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

evgta пишет:

А зачем вообще знать положение заслонки?

что бы знать.

evgta
Offline
Зарегистрирован: 02.09.2016

кэп, ок, для чего знать? :-)

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

evgta пишет:

кэп, ок, для чего знать? :-)

ну, во-первых - это красиво(с)