Raspberry Pi Pico zu wenig Spannung an GPIO Ausgängen

OP #7323861
Lesenswert?

Guten Tag,

Ich möchte einen Motoren ansteuern über das Motorsteuerboard L298N. Allerdings habe ich nach langem Probieren festgestellt, dass an meinen GPIO Ausgängen nur 1.1 - 1.7V anliegen und der MotorDriver deswegen nicht schaltet (der bräuchte bedeutend mehr für den Schaltzustand HIGH). Im Netz gibt es etliche Videos, bei welchen der Motordriver mit dem Pico betrieben wird. Hat jmd. eine Idee, wie ich den Driver zum Schalten kriege oder kennt jemand alternative Komponenten die in Frage kämen?

Ausser dem MotoDriver sind noch 2 Sensoren (CO2 & Temperatur / Humidity) im Kreislauf, welche ich direkt über das Pico speise. Den ganzen Kreislauf speise ich mit einem 12V 3A Netzteil, wobei für das Pico auf 5V heruntergebrochen wird.

Motodriver: https://www.reichelt.com/ch/de/entwicklerboards-motodriver2-l298n-debo-motodriver2-p202829.html?PROVID=2808&gclid=EAIaIQobChMIu-zO6qfZ_AIVQvBRCh0tMg-yEAQYAiABEgJZPvD_BwE

Vielen Dank & liebe Grüsse

OP #7323894
Lesenswert?

Klar da hast du recht ;)

Hier der recht Laienhafte Schaltplan & Code:

1
#LCD #https://www.waveshare.com/wiki/RP2040-LCD-0.96
2
#CO2 #https://github.com/awsiuk/ENS160
3
#Temperatur & Feuchtigkeit #https://www.elektronik-kompendium.de/sites/raspberry-pi/2703021.htm
4

5
from myENS160 import myENS160 #CO2-Sensor Konfigurationsmodul
6
from machine import Pin #Temp & Motor
7
from utime import sleep #Temp & Motor
8
from dht import DHT11 #Temp
9
from LCD_Config import LCD_0inch96 #LED Konfigurationsmodul
10

11
###Variablen###
12

13
#LCD
14
RED = 0x00F8
15
GREEN = 0xE007
16
BLUE = 0x1F00
17
WHITE = 0xFFFF
18
BLACK = 0x0000
19

20
lcd = LCD_0inch96()
21

22
#CO2 Sensor
23
obj=myENS160()
24

25
#Temp
26
sleep(1)
27
dht11_sensor = DHT11(Pin(14, Pin.IN, Pin.PULL_UP))
28

29
#Zylinder
30
in2 = Pin(16, Pin.OUT)
31
in1 = Pin(17, Pin.OUT)
32

33
###main###
34
#Messung
35
while True:
36
    # Messung durchführen
37
    TVOC = obj.getTVOC()
38
    AQI = obj.getAQI()
39
    ECO2 = obj.getECO2()
40
    dht11_sensor.measure()
41
    # Werte lesen
42
    temp = dht11_sensor.temperature()
43
    humi = dht11_sensor.humidity()
44
    #AQ definieren
45
    if TVOC<50 and ECO2<800 and AQI<=2:
46
        AQ = "good"
47
    if 6000>TVOC>50 or 1500>ECO2>800 or 4>AQI>2:
48
        AQ = "generally"
49
    if TVOC>6000 or ECO2>1500 or AQI>4:
50
        AQ = "bad"
51
    # Werte ausgeben
52
    lcd.fill(BLACK)
53
    lcd.text("Temperatur: " + str(temp) + "C",5,15,WHITE)
54
    lcd.text("Feuchtigkeit: " + str(humi) + "%",5,35,WHITE)
55
    lcd.text("AQ: " + str(AQ),5,55,WHITE)
56
    lcd.display()
57
    print("ECO2:" + str(ECO2))
58
    print("TVOC:" + str(TVOC))
59
    print("AQI:" + str(AQI))
60
    print("AQ:" + str(AQ))
61
    
62
    #Zylinder ansteuern
63
    if  TVOC<50 and ECO2<800 and AQI<=2 or temp<16:
64
        in1.value(0)
65
        in2.value(1)
66
        sleep(2)
67
    if 6000>TVOC>50 or 1500>ECO2>800 or 4>AQI>2 and temp>21:
68
        in1.value(1)
69
        in2.value(0)
70
        sleep(2)
71
    if TVOC>6000 or ECO2>1500 or AQI>4 and temp>16:
72
        in1.value(1)
73
        in2.value(0)
74
        sleep(2)
Angehängte Dateien:
Gast #7323983
Lesenswert?

Peter N. schrieb:

Der Motorteiber hat eine Logikspannung von 5V. Du brauchst zwischen Pi und Treiber noch einen Pegelwandler.

Beim L298 ist der minimale High-Pegel für die Eingänge ViH mit 2.3V spezifiziert. Warum sollten da zwischen den 3.3V-Ausgängen des Rapsberry Pi und dem L298 noch ein Pegelwandler erforderlich sein?

Wenn der Pi wirklich die 3.3V liefert, hätte man komfortable 1V als Reserve.

OP #7324011
Lesenswert?

Wolfgang schrieb:

Peter N. schrieb:

Der Motorteiber hat eine Logikspannung von 5V. Du brauchst zwischen Pi und Treiber noch einen Pegelwandler.

Beim L298 ist der minimale High-Pegel für die Eingänge ViH mit 2.3V spezifiziert. Warum sollten da zwischen den 3.3V-Ausgängen des Rapsberry Pi und dem L298 noch ein Pegelwandler erforderlich sein?

Wenn der Pi wirklich die 3.3V liefert, hätte man komfortable 1V als Reserve.

Dachte ich auch, nun hab ich aber zu wenig Spannung. Kann das sonst eine Ursache haben?

#7324018
Lesenswert?

Kevin B. schrieb:

Dachte ich auch, nun hab ich aber zu wenig Spannung. Kann das sonst eine Ursache haben?

Miss doch mal Vcc vom Pi gegen den GND (am Pico). Hast Du da 3,3V oder was anderes?

Was ich mir als Ursache vorstellen könnte wäre eine Masseverschiebung. Wenn ich mir die vielen Drähte im Schaltplan so anschaue, könnte es gut sein daß zwischen der eingezeichneten Masse und der, die am Pico anliegt, einiges an Widerstand ist und sich damit die Spannungen zwischen verschiedenen Massepunkten wesentlich unterscheiden.

Auch ein nicht sauber kontaktiertes Kabel irgendwo in der Spannungsversorgung wäre eine mögliche Ursache.

Gast #7324130
Lesenswert?

Dachte ich auch, nun hab ich aber zu wenig Spannung.

Laienloesung 1: Mit Pullupwiderstaenden ein wenig aufpaeppeln.

Laienloesung 2: Etwas einfacheres benutzen, und dann nicht nur 1/4 des Datenblatts lesen, sondern alles.

Laienloesung 3: Mal die Batterie vom Multimeter wechseln.

Laienloesung 4: Den ganzen Kram in die Tonne stossen.

Mein Favorit: #4

#7324143
Lesenswert?

Kevin B. schrieb:

Was meinst du mit auf OC geschaltet?

Die Ausgänge sind normalerweise im Pusch/Pull-Betrieb. D.h. Ausgangsspannung 0V oder 3,3V. Man kann sie aber auch als "Open Collector" konfigurieren. Dann ist die Ausgangsspannung 0V oder offen.

DvD schrieb:

Laienloesung 3: Mal die Batterie vom Multimeter wechseln.

Normalerweise zeigen DMM bei schwacher Batterie zuviel an.

#7324144
Lesenswert?

DvD schrieb:

Dachte ich auch, nun hab ich aber zu wenig Spannung.

Laienloesung 1: Mit Pullupwiderstaenden ein wenig aufpaeppeln.

Laienloesung 2: Etwas einfacheres benutzen, und dann nicht nur 1/4 des Datenblatts lesen, sondern alles.

Laienloesung 3: Mal die Batterie vom Multimeter wechseln.

Laienloesung 4: Den ganzen Kram in die Tonne stossen.

Mein Favorit: #4

#5: Der Effekt sieht eher so aus, als wenn die Ausgänge als Open Collector (OC) bzw. ‚Open Drain’ geschaltet (Beitrag "RP2040 MCU open drain fehlt in C-SDK-Dokumentation") sind oder überlastet.

Bei 2-4 mA maximaler Strom pro PIN könnte man auf letzteres tippen… aber der L298 braucht deutlich <1mA am Eingang.

Nachtrag: Mach mal ein Foto vom fliegenden Aufbau.

Gast #7324200
Lesenswert?

Kevin B. schrieb:

nun hab ich aber zu wenig Spannung. Kann das sonst eine Ursache haben?

Fehler in der Verschaltung. Zeig mal einen (lesbaren) Schaltplan.

Wieviel Spannung hast du am Pin, wenn der Ausgang offen ist und stabil auf High steht? Was steht im Datenblatt zur Ausgangsspannung?

(Firma: --------------) #7324210
Lesenswert?

Wolfgang schrieb:

Kevin B. schrieb:

nun hab ich aber zu wenig Spannung. Kann das sonst eine Ursache haben? Wie wäre es mal mit der Spannungsversorgung? So wie ich den "Schaltplan" lese hast du die Spannungsversorgung vom Pico und dem Motor von der "selben" Quelle.

Fehler in der Verschaltung.

Gibt`s nur wenn das ganze in einer anderen "gleichen" Verschaltung funktioniern würde. So liegt es vllt. mehr am Genieus des Erschaffers, dass es halt nur suboptimal funktioniert!

Zeig mal einen (lesbaren) Schaltplan.

Hmmm??????? SW-Entwickler und dann noch einen Schalt- oder Logikplan erwarten? Ob es sowas jemals gab oder jemals geben wird?

Gast #7324237
Lesenswert?

SW-Entwickler und dann noch einen Schalt- oder Logikplan erwarten?

SW-Entwickler, aka Informatiker, sind chronisch unfaehig. Ich habe da schon von Faellen gehoert, die nicht einmal die Existenz des Datenblatts kannten und sich ueber "Kollisionen" bei der Zuweisung von Pinfunktionen beklagten. Was willst du da erwarten?

#7324296
Lesenswert?

@Kevin, in Deinem Code sehe ich keine Konfiguration für den Gassensor, der ja per I2C angebunden ist - fehlt da was?

Dann hast Du den DHT11 im Code so definiert:

1
dht11_sensor = DHT11(Pin(14, Pin.IN, Pin.PULL_UP))

Aber im Schaltplan liegt der an GP28.

Und bitte messen und gleich ein Bild machen:

  • den Motortreiber dazu weglassen !!! (nicht am RP Pico anschließen)
  • Pin36 (3.3V)
  • Pin40 (Vbus)

Irgendwie passt dass alles nicht zusammen. Und nochmal die Bitte: mach‘ ein Foto.

ACHTUNG: Du darfst nicht USB und Vsys gleichzeitig verwenden.

Gast #7324319
Lesenswert?

Uwe D. schrieb:

ACHTUNG: Du darfst nicht USB und Vsys gleichzeitig verwenden.

Die beiden sind durch eine Diode entkoppelt, es sollte nur sicher gestellt sein das die 12V->5V eingeschaltet sind. Sonst schiebt USB rückwärts in den Spannungsregler. Besser wäre es aber, wenn nach dem externen Regler auch eine Diode auf Vsys zeigen würde.

Gast #7324444
Lesenswert?

Kevin B. schrieb:

Guten Tag,

Hast du schon einmal die IN1 und IN2 Kabel entfernt und dann gemessen welche Spannung Pins 16 und 17 heraus geben? Das sollte sehr nahe an der Versorgungsspannung liegen. Ein langsames ›Blinky‹ sollte auch für DMM gehen.

Des weiteren: MicroPython oder CircuitPython? ›from machine import Pin‹ deutet ja auf Ersteres. v1.19.1 ist die neueste Version. Ach ja, für MicroPython sind die Pins jedenfalls korrekt als Push/Pull Ausgang geschaltet.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren