Почему мой H-мост продолжает гореть, когда я активирую только двигатели b (или только a) - PullRequest
0 голосов
/ 19 января 2019

Я пытаюсь построить очень маленькую радиоуправляемую машину, используя 4 двигателя с моей малиной, используя th gpio pin, но это работает только тогда, когда я настраиваю все двигатели на поворот, когда я устанавливаю только один мотор, чтобы он взорвался

Моя сборка: https://i.imgur.com/4mza4fQ.png

Я пытался использовать двухчерный мост, чтобы использовать только одну сторону А с одной и только одной стороной с другой, когда я нажимал на свой key.up, чтобы активировать все из них, он работал абсолютно одинаково для ключа. но когда я нажимаю свою клавишу вправо или влево, двигатели вращаются в течение нескольких секунд и останавливаются, но светодиод на мосту h продолжает гореть нормально, но я думаю, что это потому, что есть 12v.

    import RPi.GPIO as GPIO
import time
import json
from flask import Flask
from flask import request
import sys
app = Flask(__name__)
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)

MotorgauchePlus = 16
MotorgaucheMoin = 18
MotordroitePlus = 22
MotordroiteMoin = 24


GPIO.setup(MotorgauchePlus,GPIO.OUT)
GPIO.setup(MotorgaucheMoin,GPIO.OUT)
GPIO.setup(MotordroiteMoin,GPIO.OUT)
GPIO.setup(MotordroitePlus,GPIO.OUT)

def Avant():
    print ("Going forwards")
    GPIO.output(MotorgauchePlus,GPIO.HIGH)//IT WORK
    GPIO.output(MotorgaucheMoin,GPIO.LOW)
    GPIO.output(MotordroitePlus,GPIO.HIGH)
    GPIO.output(MotordroiteMoin,GPIO.LOW)


def Arriere():
    print ("Going backwards")
    GPIO.output(MotorgauchePlus,GPIO.LOW)//IT WORK
    GPIO.output(MotorgaucheMoin,GPIO.HIGH)
    GPIO.output(MotordroitePlus,GPIO.LOW)
    GPIO.output(MotordroiteMoin,GPIO.HIGH)
def Gauche():
    print ("Left")
    GPIO.output(MotorgauchePlus,GPIO.LOW)//ai caramba
    GPIO.output(MotorgaucheMoin,GPIO.HIGH)
    GPIO.output(MotordroitePlus,GPIO.LOW)
    GPIO.output(MotordroiteMoin,GPIO.LOW)
def Droite():
    print ("Right")
    GPIO.output(MotorgauchePlus,GPIO.LOW)//same
    GPIO.output(MotorgaucheMoin,GPIO.LOW)
    GPIO.output(MotordroitePlus,GPIO.HIGH)
    GPIO.output(MotordroiteMoin,GPIO.LOW)

def Stop():
    GPIO.output(MotorgauchePlus,GPIO.LOW)//That work
    GPIO.output(MotorgaucheMoin,GPIO.LOW)
    GPIO.output(MotordroitePlus,GPIO.LOW)
    GPIO.output(MotordroiteMoin,GPIO.LOW)

@app.route('/', methods=['POST'])
def AvanOuArriere():
    Alors = request.form['Alors']
    if Alors == "Quite":
        GPIO.output(MotorgauchePlus,GPIO.LOW)
        GPIO.output(MotorgaucheMoin,GPIO.LOW)
        GPIO.output(MotordroitePlus,GPIO.LOW)
        GPIO.output(MotordroiteMoin,GPIO.LOW)
        GPIO.cleanup()
        sys.exit()
        return("oklm")
    elif Alors == "Avant":
        Avant()
    elif Alors == "Gauche":
        Gauche()
    elif Alors == "Droite":
        Droite()
    elif Alors == "Arriere":
        Arriere()
    elif Alors == "Stop":
        Stop()
    else:
        pass
    return("oklm")
try:
    if __name__ == "__main__":
        app.run(host='0.0.0.0', port=5000)
except Exception as e:
    print(e)
    GPIO.output(MotorgauchePlus,GPIO.LOW)
    GPIO.output(MotorgaucheMoin,GPIO.LOW)
    GPIO.output(MotordroitePlus,GPIO.LOW)
    GPIO.output(MotordroiteMoin,GPIO.LOW)
    GPIO.cleanup()

Я полностью потерян, потому что для активации мотора мне нужно только установить один штифт на ВЫСОКИЙ, а другой на НИЗКИЙ, вот что я делаю для активации всех из них, и это работает! Возможно, потому, что я установил MotordroitePlus в LOW, а MotordroiteMoin также в LOW, но в функции Stop, и он работает так же, как и должен, поэтому мне нужна ваша помощь, потому что я что-то упустил.

...