#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. Регистры, все это есть в справочном руководстве