как я могу считывать и выводить ШИМ с помощью черной платы для таблеток?

#arduino #project #stm32 #arduino-ide

Вопрос:

Я создаю контроллер скорости двигателя на базе stm32 для двигателя постоянного тока. Но я не могу считывать ШИМ с моего приемника и не могу заставить свой МОП-транзистор изменять выход! Мне нужна помощь, потому что теперь она только включена или выключена! Я использую RobotDyn BlackPill и МОП-транзистор STP36NF06L. А также я использую Arduino ide с платой STM. Код:

 int Motor = PA15;
int rc = PB1;
int s;


void setup() {
  pinMode(Motor, OUTPUT);
  pinMode(rc, INPUT);
  digitalWrite(Motor, LOW);
}
void loop() {
   if(s = (map(pulseIn(rc, HIGH), 1100, 1900, 0, 255)) > 200) {
    digitalWrite(Motor, HIGH);
  }
  else{
    digitalWrite(Motor, LOW);
  }
  delay(10);
}
 

Комментарии:

1. Я не знаком с вашими компонентами и задаюсь вопросом, чего вы ожидаете. Вы посылаете ВЫСОКО или НИЗКО, должно ли это переводиться на ВКЛЮЧЕНИЕ и выключение, которые вы написали, что получаете?

2. да, я могу посылать только ВЫСОКИЕ или НИЗКИЕ сигналы на МОП-транзистор, я не могу посылать никаких значений ШИМ.

3. digitalWrite отправляет высокие или низкие значения, больше ничего, так что, возможно, вы хотите использовать analogWrite?

4. я не могу, когда я ставлю что-то вроде analogWrite(двигатель, 100); ничего не делает

Ответ №1:

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

Комментарии:

1. как мне это сделать, если мой stm32 прошит прошивкой arduino ide, я не могу использовать приложение stm32.

2. Регистры, все это есть в справочном руководстве