Мне нужно управлять двигателем постоянного тока с помощью микроконтроллера, PIC18F25k22.
У меня есть часть кода в компиляторе MIKROC, но я не знаю, как заставить все это работать вместе, и мне нужно его улучшить.
Я дам картину симуляции протея для этого проекта.
Скорость двигателя контролируется потенциометром. Поворот потенциометра до уровня 0 должен остановить двигатель, и когда кнопка «DIRECTIE» нажата, я хочу, чтобы двигатель вращался по часовой стрелке, но когда он отпущен, двигатель должен вращаться против часовой стрелки.
Двигатель должен начать вращаться, когда кнопка «START-STOP» отпущена, а когда кнопка нажата, двигатель должен остановиться.
Заранее спасибо!
https://imgur.com/a/ktTkvxI ------- симуляция в протей
unsigned int adc_rd;
long current_duty;
void main() {
ANSELC = 0; // Configure PORTC as digital I/O;CU ANSEL SETAM PT FIECARE PIN/port DACA PORTUL E ANALOGIC SAU DIGITAL, DACA E 0 E DIGITAL;DACA E 1 E ANALOPGIC
ANSELB = 0; // Configure PORTB as digital I/O;CU ANSEL SETAM PT FIECARE PIN/port DACA PORTUL E ANALOGIC SAU DIGITAL, DACA E 0 E DIGITAL;DACA E 1 E ANALOPGIC
TRISA0_bit = 1; //Configure AN0 (RA0) as input; CU TRIS CONFIGURAM DIRECTIA PINILOR, DACA SUNT INTRARI SAU IESIRI, DACA E 1 E INTRARE...
TRISC = 0; //PORTC pins are outputs CU TRIS CONFIGURAM DIRECTIA PINILOR, DACA SUNT INTRARI SAU IESIRI, DACA E 0 E IESIRE...
TRISB = 0; //PORTB pins are outputs CU TRIS CONFIGURAM DIRECTIA PINILOR, DACA SUNT INTRARI SAU IESIRI, DACA E 0 E IESIRE...
TRISC3_bit = 1; //Configuram bitul RC3 ca intrare digitala(butonul1)
TRISC4_bit = 1; //Configuram bitul RC4 ca intrare digitala(butonul2)
PWM1_Init(1000); // Initialize PWM1 module at 1KHz
PWM1_Start(); // start PWM1
ADC_Init(); // Initialize ADC
LATB = 0x02; //Turn the motor Clockwise
while (1) { // endless loop
adc_rd = ADC_Read(0); //Read Analog value from Analog channel 0
//convert voltage level to duty cycle 0-->255
current_duty = (long) adc_rd * 255;
current_duty = current_duty/1023;
PWM1_Set_Duty(current_duty); //change duty cycle
Delay_ms(5); // slow down change pace a little
}
}