25-12-2023, 22:04
Собирал левитрон по статье: https:/ /arduinoplus.ru/arduino-levitaciya
Набор постоянных магнитов и характеристики катушек брал из другого видео на ютубе: высота катушки 15мм кол-во витков 350.
Схему прикрепил
При подключении питания и загрузке кода катушки начинают шипеть и нагреваться(драйвер тоже греется). Импульсы на катушках хаотичные и непостоянные. Показания датчиков холла тоже хаотичные. Что может быть не так?
Набор постоянных магнитов и характеристики катушек брал из другого видео на ютубе: высота катушки 15мм кол-во витков 350.
Схему прикрепил
Код:
[color=#4e5b61][font=Consolas, 'Courier New', monospace][color=#728e00]#include[/color] [color=#005c5f]<PID_v1.h>[/color]
[color=#728e00]#define[/color] [color=#d35400]IN1[/color] [color=#005c5f]12[/color]
[color=#728e00]#define[/color] [color=#d35400]IN2[/color] [color=#005c5f]11[/color]
[color=#728e00]#define[/color] [color=#d35400]IN3[/color] [color=#005c5f]10[/color]
[color=#728e00]#define[/color] [color=#d35400]IN4[/color] [color=#005c5f]9[/color]
[color=#728e00]#define[/color] [color=#d35400]ENA[/color] [color=#005c5f]5[/color]
[color=#728e00]#define[/color] [color=#d35400]ENB[/color] [color=#005c5f]3[/color]
[color=#728e00]#define[/color] [color=#d35400]BL[/color] [color=#005c5f]2[/color]
[color=#00979d]double[/color][color=#4e5b61] Setpoint_X, Input_X, Output_X,X_plus;[/color]
[color=#00979d]double[/color][color=#4e5b61] p_X = [/color][color=#005c5f]1[/color][color=#4e5b61],i_X = [/color][color=#005c5f]0[/color][color=#4e5b61],d_X = [/color][color=#005c5f]0.01[/color][color=#4e5b61];[/color]
[color=#00979d]double[/color][color=#4e5b61] Setpoint_Y, Input_Y, Output_Y,Y_plus;[/color]
[color=#00979d]double[/color][color=#4e5b61] p_Y = [/color][color=#005c5f]1[/color][color=#4e5b61],i_Y = [/color][color=#005c5f]0[/color][color=#4e5b61],d_Y = [/color][color=#005c5f]0.01[/color][color=#4e5b61];[/color]
[color=#00979d]int[/color][color=#4e5b61] i,on_put=[/color][color=#005c5f]1[/color][color=#4e5b61];[/color]
[color=#00979d]unsigned[/color] [color=#00979d]long[/color][color=#4e5b61] time;[/color]
[color=#4e5b61]PID [/color][color=#d35400]PID_X[/color][color=#434f54]([/color][color=#4e5b61]&[/color][color=#434f54]Input_X[/color][color=#4e5b61], &[/color][color=#434f54]Output_X[/color][color=#4e5b61], &[/color][color=#434f54]Setpoint_X[/color][color=#4e5b61],p_X,i_X,d_X, DIRECT[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61]PID [/color][color=#d35400]PID_Y[/color][color=#434f54]([/color][color=#4e5b61]&[/color][color=#434f54]Input_Y[/color][color=#4e5b61], &[/color][color=#434f54]Output_Y[/color][color=#4e5b61], &[/color][color=#434f54]Setpoint_Y[/color][color=#4e5b61],p_Y,i_Y,d_Y, DIRECT[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#00979d]char[/color][color=#4e5b61] inByte=[/color][color=#4e5b61]'9'[/color][color=#4e5b61],nullByte,run_flag,run_dirict;[/color]
[color=#00979d]float[/color][color=#4e5b61] go_step;[/color]
[color=#00979d]void[/color] [color=#d35400]turn_X[/color][color=#434f54]([/color][color=#00979d]int[/color] [color=#434f54]a)[/color]
[color=#434f54]{[/color]
[color=#4e5b61] [/color][color=#728e00]if[/color][color=#434f54]([/color][color=#4e5b61]a>=[/color][color=#005c5f]0[/color][color=#434f54])[/color]
[color=#4e5b61] [/color][color=#434f54]{[/color]
[color=#4e5b61] [/color][color=#d35400]digitalWrite[/color][color=#434f54]([/color][color=#4e5b61]IN1,[/color][color=#005c5f]1[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]digitalWrite[/color][color=#434f54]([/color][color=#4e5b61]IN2,[/color][color=#005c5f]0[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]analogWrite[/color][color=#434f54]([/color][color=#4e5b61]ENA,a[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#434f54]}[/color]
[color=#4e5b61] [/color][color=#728e00]else[/color]
[color=#4e5b61] [/color][color=#434f54]{[/color]
[color=#4e5b61] a=-a;[/color]
[color=#4e5b61] [/color][color=#d35400]digitalWrite[/color][color=#434f54]([/color][color=#4e5b61]IN1,[/color][color=#005c5f]0[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]digitalWrite[/color][color=#434f54]([/color][color=#4e5b61]IN2,[/color][color=#005c5f]1[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]analogWrite[/color][color=#434f54]([/color][color=#4e5b61]ENA,a[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#434f54]}[/color]
[color=#434f54]}[/color]
[color=#00979d]void[/color] [color=#d35400]turn_Y[/color][color=#434f54]([/color][color=#00979d]int[/color] [color=#434f54]a)[/color]
[color=#434f54]{[/color]
[color=#4e5b61] [/color][color=#728e00]if[/color][color=#434f54]([/color][color=#4e5b61]a>=[/color][color=#005c5f]0[/color][color=#434f54])[/color]
[color=#4e5b61] [/color][color=#434f54]{[/color]
[color=#4e5b61] [/color][color=#d35400]digitalWrite[/color][color=#434f54]([/color][color=#4e5b61]IN3,[/color][color=#005c5f]0[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]digitalWrite[/color][color=#434f54]([/color][color=#4e5b61]IN4,[/color][color=#005c5f]1[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]analogWrite[/color][color=#434f54]([/color][color=#4e5b61]ENB,a[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#434f54]}[/color]
[color=#4e5b61] [/color][color=#728e00]else[/color]
[color=#4e5b61] [/color][color=#434f54]{[/color]
[color=#4e5b61] a=-a;[/color]
[color=#4e5b61] [/color][color=#d35400]digitalWrite[/color][color=#434f54]([/color][color=#4e5b61]IN3,[/color][color=#005c5f]1[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]digitalWrite[/color][color=#434f54]([/color][color=#4e5b61]IN4,[/color][color=#005c5f]0[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]analogWrite[/color][color=#434f54]([/color][color=#4e5b61]ENB,a[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#434f54]}[/color]
[color=#434f54]}[/color]
[color=#00979d]void[/color] [color=#d35400]setup[/color][color=#434f54]()[/color]
[color=#434f54]{[/color]
[color=#4e5b61] [/color][color=#d35400]pinMode[/color][color=#434f54]([/color][color=#4e5b61]IN1,OUTPUT[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]pinMode[/color][color=#434f54]([/color][color=#4e5b61]IN2,OUTPUT[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]pinMode[/color][color=#434f54]([/color][color=#4e5b61]IN3,OUTPUT[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]pinMode[/color][color=#434f54]([/color][color=#4e5b61]IN4,OUTPUT[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]pinMode[/color][color=#434f54]([/color][color=#4e5b61]ENA,OUTPUT[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]pinMode[/color][color=#434f54]([/color][color=#4e5b61]ENB,OUTPUT[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]pinMode[/color][color=#434f54]([/color][color=#4e5b61]BL,OUTPUT[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]digitalWrite[/color][color=#434f54]([/color][color=#4e5b61]IN1,[/color][color=#005c5f]0[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]digitalWrite[/color][color=#434f54]([/color][color=#4e5b61]IN2,[/color][color=#005c5f]0[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]digitalWrite[/color][color=#434f54]([/color][color=#4e5b61]IN3,[/color][color=#005c5f]0[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]digitalWrite[/color][color=#434f54]([/color][color=#4e5b61]IN4,[/color][color=#005c5f]0[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]analogWrite[/color][color=#434f54]([/color][color=#4e5b61]ENA,[/color][color=#005c5f]0[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]analogWrite[/color][color=#434f54]([/color][color=#4e5b61]ENB,[/color][color=#005c5f]0[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] Setpoint_X = [/color][color=#005c5f]560[/color][color=#4e5b61];[/color][color=#95a5a6]//560;[/color]
[color=#4e5b61] Setpoint_Y = [/color][color=#005c5f]560[/color][color=#4e5b61];[/color][color=#95a5a6]//560;[/color]
[color=#4e5b61] [/color][color=#d35400]PID_X[/color][color=#4e5b61].[/color][color=#d35400]SetTunings[/color][color=#434f54]([/color][color=#4e5b61]p_X,i_X,d_X[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]PID_Y[/color][color=#4e5b61].[/color][color=#d35400]SetTunings[/color][color=#434f54]([/color][color=#4e5b61]p_Y,i_Y,d_Y[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]PID_X[/color][color=#4e5b61].[/color][color=#d35400]SetOutputLimits[/color][color=#434f54]([/color][color=#4e5b61]-[/color][color=#005c5f]255[/color][color=#4e5b61],[/color][color=#005c5f]255[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]PID_Y[/color][color=#4e5b61].[/color][color=#d35400]SetOutputLimits[/color][color=#434f54]([/color][color=#4e5b61]-[/color][color=#005c5f]255[/color][color=#4e5b61],[/color][color=#005c5f]255[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]PID_X[/color][color=#4e5b61].[/color][color=#d35400]SetSampleTime[/color][color=#434f54]([/color][color=#005c5f]5[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]PID_Y[/color][color=#4e5b61].[/color][color=#d35400]SetSampleTime[/color][color=#434f54]([/color][color=#005c5f]5[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]PID_X[/color][color=#4e5b61].[/color][color=#d35400]SetMode[/color][color=#434f54]([/color][color=#4e5b61]AUTOMATIC[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]PID_Y[/color][color=#4e5b61].[/color][color=#d35400]SetMode[/color][color=#434f54]([/color][color=#4e5b61]AUTOMATIC[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#434f54]}[/color]
[color=#00979d]void[/color] [color=#d35400]loop[/color][color=#434f54]()[/color]
[color=#434f54]{[/color][color=#4e5b61] [/color]
[color=#4e5b61] Input_X = [/color][color=#d35400]analogRead[/color][color=#434f54]([/color][color=#4e5b61]A1[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] Input_Y = [/color][color=#d35400]analogRead[/color][color=#434f54]([/color][color=#4e5b61]A0[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color]
[color=#4e5b61] [/color][color=#d35400]PID_X[/color][color=#4e5b61].[/color][color=#d35400]Compute[/color][color=#434f54]()[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]PID_Y[/color][color=#4e5b61].[/color][color=#d35400]Compute[/color][color=#434f54]()[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]turn_X[/color][color=#434f54]([/color][color=#4e5b61]Output_X[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#4e5b61] [/color][color=#d35400]turn_Y[/color][color=#434f54]([/color][color=#4e5b61]Output_Y[/color][color=#434f54])[/color][color=#4e5b61];[/color]
[color=#434f54]}[/color][/font][/color]При подключении питания и загрузке кода катушки начинают шипеть и нагреваться(драйвер тоже греется). Импульсы на катушках хаотичные и непостоянные. Показания датчиков холла тоже хаотичные. Что может быть не так?

