Управление шим ручкой газа с датчиком холла. Прошу помощи!

MaxGsm
Offline
Зарегистрирован: 27.11.2019

Попался мне на работе китайский шим регулятор для коллекторного двигателя с умершим контроллером, решил его для себя оживить с помощью arduino nano. Написал небольшой скетч для управления шим с помощью потенциометра - плата ожила для моих целей функции свои выполняет, но с одной оговоркой - хочется управлять ШИМом с ручки газа от электровелосипеда, а с нее на оналоговый вход постоянно приходит примерно 1 вольт - сама ардуинка видит уровень 176-180. Подскажите как задать условный минимум для начала генерации импульсов?

void loop (){
pwm = analogRead(0); // А0 
pwm = map(pwm, -50, 1023, 0, 255); //
pwm = constrain(pwm, 0, 255); //
analogWrite(3, pwm);
DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

а -50 тута нахуа? 

-NMi-
Offline
Зарегистрирован: 20.08.2018

MaxGsm пишет:

а с нее на оналоговый вход постоянно...

опятЪ ойфоны?

По теме: сдвинь 1023 вправо два раза, будет 255. Сделай таблицу из значений 0-255=соответствие ШИМ. Всё.

MaxGsm
Offline
Зарегистрирован: 27.11.2019

а 50 тут случайно - 0, 1023, у меня 

MaxGsm
Offline
Зарегистрирован: 27.11.2019
про сдвиги прочитал, про таблицы вроде тоже - а практически чтото пока не получатся это все сделать, может подскажете где живой пример подсмотреть?
 
ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016
x = 10000000
x = 1000000
x = 100000
x = 10000
x = 1000
x = 100
x = 10
x = 1
x = 0
x = 0
x = 0

 

и код скетча )))
 

/ пример операции сдвига

byte x = 128;
void setup() {
 Serial.begin(115200);
}

void loop() {
Serial.print("x = ");
Serial.println(x,BIN);
x = (x >> 1);
delay(1000);
}

 

MaxGsm
Offline
Зарегистрирован: 27.11.2019

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

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

-NMi- пишет:

По теме: сдвинь 1023 вправо два раза, будет 255. Сделай таблицу из значений 0-255=соответствие ШИМ. Всё.

что-то я не понял, зачем тут еще таблицы, если значения АЦП уже сдвинуты в диапазон 0-255

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

точно, таблицы то зачем?

-NMi-
Offline
Зарегистрирован: 20.08.2018

В таких устройствах график "кручения" ручки и выходная характеристика ШИМ не является линейной. Как правило выходная характеристика очень похожа на экспоненту, т.о. начало у "ручки" плавное с быстрым приращением в области >50% . Поэтому в блоках управления (ЭБУ) находятся даже по нескольку таких таблиц, в зависимости от "навороченности" блока. В вашем случае можно "сдурдуинить" - я не возражаю.

MaxGsm
Offline
Зарегистрирован: 27.11.2019

Блок был совсем не навороченный, с потенциометра на аналоговый вход контроллера приходил управляющий сигнал, а с контроллера почему-то через ne555  уже жарил ШИМ. С ручкой на датчике холла вел себя так-же, как сейчас на ардуинке (подаём питание и двигатель стартует - дальше с ручки скорость вращения поднимается до максимума и понижается, но полностью не останавливается), ввиду того что график на выходе больше похож на пораболу линейности и не ожидалось.  Хочется сделать плавную регулировку от стоячего мотора до максимума и обратно до полной остановки.