Задать вопрос
@0Ilya0

Почему вменяемо не работает управление мотором с помощью шим на lgt8f328p?

Есть код, в котором я захотел повысить частоту шим на 10 пине до 20кгц (помог ии). Изначально я использовал analogWrite (работало), но частота для мотора невелика, и он начинал пищать.
#include <Arduino.h>

#define potentiometer_pin A4
#define dim_pin D10
#define pow_pin D11

void setup()
{
  Serial.begin(115200);

  pinMode(dim_pin, OUTPUT);
  pinMode(potentiometer_pin, INPUT);
  pinMode(pow_pin, OUTPUT);
  digitalWrite(pow_pin, HIGH);

  // Настройка Timer1 для 20 кГц на D10 (Fast PWM, 8-бит)
  TCCR1A = _BV(COM1B1) | _BV(WGM10); // Non-inverting mode, 8-bit PWM
  TCCR1B = _BV(WGM12) | _BV(CS10);  // Fast PWM, no prescaling
}

void loop() {
  int pot_val = analogRead(potentiometer_pin);
  
  pot_val = map(pot_val, 0, 1023, 25, 255);
  pot_val = constrain(pot_val, 25, 255);

  Serial.println(pot_val);

  OCR1B = pot_val;
}

С данным кодом реакция следующая: при pot_val 0, мотор выключается, иначе работает на полную. Плавная регулировка полностью отсутствует.
  • Вопрос задан
  • 10 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы