Arduino PID для маятника пропеллера для горизонтальной балансировки
в этом хобби-проекте, который я настроил, используется энкодер, чтобы сделать ручку на 90 градусов, что соответствует 1500 шагам (0 градусов = идеально горизонтально с использованием ПИД-управления). Мой код счетчика кодировщика взят из видео здесь, и я протестировал его, и он работает. на отлично. Так как этот энкодер 1200 шагов/об. это означало бы, что для поворота на 90 градусов требуется 300 шагов. Исходное положение моего энкодера показано на диаграмме ниже, которая является начальной начальной точкой в 1200 шагов. Могу ли я узнать код Arduino, чтобы сбалансировать джойстик на 90 градусов или идеально горизонтально с использованием PID? Я также проверил, что при увеличении ШИМ вентилятор увеличивает скорость вращения вентилятора, который будет вращаться по часовой стрелке :). Ниже я прикрепил код счетчика энкодера и проверил, что весь код PID должен быть помещен в оператор IF, чтобы счетчик работал правильно и не пропускал никаких шагов.
Спасибо за чтение и хорошего дня.
volatile unsigned int temp, counter = 0; //Эта переменная будет увеличиваться или уменьшаться в зависимости от вращения энкодера
int speed=0;
void setup() {
Serial.begin (9600);
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
attachInterrupt(0, ai0, RISING);
attachInterrupt(1, ai1, RISING);
}
void loop() {
if( counter != temp )
{
temp = counter; // Каждый код для PID должен быть помещен внутри этого оператора IF, чтобы счетчик не пропускал шаги.
}
}
void ai0() {if(digitalRead(3)==LOW) {counter++;}else{counter--;}}
void ai1() {if(digitalRead(2)==LOW) {counter--;}else{counter++;}}
@jessica smith, 👍-2
Обсуждение0
- Как сгенерировать файлы .a и .so для добавления в проект arduino
- Arduino Uno: avrdude: stk500_recv(): программатор не отвечает
- Использование библиотеки Arduino fix_fft или arduinoFFT для фильтрации определенного звука?
- Проблемы со скоростью шагового двигателя Nema 17
- Помогите исправить эту ошибку: expected unqualified-id before 'if'|Arduino
- Запуск кода кодировщика одновременно с другим кодом в Arduino
- Балансировка маятника с использованием PID
- Операторы If и while не работают
Извините, но чтобы дать вам код, нам нужно его написать, а мы не являемся бесплатной службой написания кода. В своем последнем вопросе об этом вы разместили код для этого проекта, с той лишь разницей, что в коде использовался потенциометр. Так почему бы не использовать этот код и не заменить код потенциометра кодом вашего энкодера?, @chrisl