Как поддерживать скорость двигателя постоянного тока (обратная связь по замкнутому контуру), управляя рабочим циклом через PICAXE 14M2

Я делаю стиральную машину, контролируя скорость двигателя с помощью H-Bridge . Сигналы на полевые МОП-транзисторы H-Bridge контролируются микроконтроллером PICAXE 14M2.

Мотор соединен с генератором и ковшом, который принимает нагрузку. Рабочий цикл по умолчанию составляет 25% . При 50% остановке двигателя и превышении 50% вращение двигателя изменяется.

Теперь, что я хочу сделать, это когда нагрузка добавляется в ковш, двигатель должен поддерживать свою скорость, а для поддержания скорости я хочу контролировать рабочий цикл.

Таким образом, если нагрузка увеличивается, сопротивление двигателя увеличивается, что означает, что ковш должен замедлиться, в результате чего генератор будет производить меньшее напряжение.

Теперь мне нужно увеличить рабочий цикл, чтобы двигатель увеличивал скорость до значения по умолчанию.

К сожалению, я не могу выполнить функцию замкнутого цикла. Может кто-нибудь, пожалуйста, помогите мне....

PS. Я использую два двигателя 12 В постоянного тока. Один действует как двигатель для вращения ковша (который также связан с другим двигателем), а другой двигатель действует как генератор для получения обратной связи.

Благодарю.

Я использую следующий код:


setfreq M32   ' 100 kHz Frequency

main:
if pinB.5 = 1 then goto Closeloop
goto main 

***************************************************************************

Closeloop:          

    symbol duty = b2
    let duty = 79
    gosub closeloop1

closeloop1:

    for b11 = 1 to 100
    hpwm 1,0,0,79,duty
    readadc C.4, b22    ` Read generated voltage from pin C.4

    IF b22 > 204 then gosub stepdown    'if Generated voltage > 4 V , stepdown the duty cycle

    IF b22 < 153 then gosub stepup      'if V< 3 V, stepup the duty cycle

stepup: ` Increase the duty (So speed is increased) if gernerated voltage is less than 3V

    duty = duty - 5 
    goto closeloop1 

stepdown:  ` Decrease the duty (So speed is reduced) if gernerated voltage is more than 4V

    duty = duty + 5 
    goto closeloop1

next b11

1 ответ

Прежде чем мы рассмотрим ваш алгоритм управления, есть некоторые проблемы, которые необходимо исправить с помощью вашего основного кода PICAXE. Вы gosub на метку, которая в любом случае является следующей строкой программы; вы используете goto выпрыгнуть из for петля; и вы используете gosub вызвать подпрограмму, но потом goto прыгать куда-то еще, а не return вернуться из подпрограммы. Они могут не вызывать ошибку, но они предполагают, что вы не совсем продумали, каким должен быть поток вашей программы.

Если твой for цикл не прерывается теми goto s он будет выполнен 100 раз, а затем завершится, после чего вывод pwm продолжится при последней заданной вами обязанности, но программа больше не будет ничего делать. Нет никаких pause или другая задержка в цикле, так что это произойдет в течение нескольких миллисекунд. Почему вы повторяете цикл 100 раз, и что вы хотите, чтобы произошло после последнего цикла?

Наконец, вы увеличиваете или уменьшаете коэффициент заполнения, чтобы попытаться ускорить или замедлить двигатель, но вы не проверяете, не понизили ли вы его значение ниже 0 или выше максимального значения, которое вы хотите принять - если переменная байта равна 0, и вы уменьшаете ее на 1, она округляется до 255 и так далее. Если вы посмотрите документацию по hpwm, то увидите, что значение коэффициента заполнения на самом деле колеблется от 0 до 1023, поэтому вам все равно придется использовать переменную слова, а не байт.

Способ, которым вы пытаетесь стабилизировать скорость, на мой взгляд, не лучший подход, но он должен работать по моде - если вы поместите подходящую задержку в цикл - так что постарайтесь, чтобы ваш код делал то, что он делает. должно быть, а затем посмотреть, как это работает на практике и можно ли улучшить его.

Я предполагаю, что это учебное задание, поэтому вы должны разрабатывать его для себя, а не получать решение, написанное для вас на этом сайте, но если у вас возникнут дополнительные вопросы об оборудовании или программном обеспечении для этого проекта, вы, вероятно, поправитесь ответы на форуме PICAXE или, возможно, на EE Stack Exchange. Будьте готовы опубликовать принципиальную схему вашего оборудования, и конкретно объяснить, что вы пытались и что случилось.

Другие вопросы по тегам