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
Kevin B. schrieb: > dass an meinen > GPIO Ausgängen nur 1.1 - 1.7V anliegen Wieso? Da sollte ca.3,3V rauskommen, oder hast du die Ausgänge auf OC geschaltet? Der Motorteiber hat eine Logikspannung von 5V. Du brauchst zwischen Pi und Treiber noch einen Pegelwandler.
Kevin B. schrieb: > Hat jmd. eine Idee, wie ich den Driver zum Schalten > kriege oder kennt jemand alternative Komponenten die in Frage kämen? wie ist VDDIO angeschlossen? Btw: Es hilft wenn Du bei solchen Fragen gleich den Schaltplan und ggf. die Software postest. /regards
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) |
:
Bearbeitet durch User
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.
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?
Peter N. schrieb: > Kevin B. schrieb: >> dass an meinen >> GPIO Ausgängen nur 1.1 - 1.7V anliegen > > Wieso? Da sollte ca.3,3V rauskommen, oder hast du die Ausgänge auf OC > geschaltet? > > Der Motorteiber hat eine Logikspannung von 5V. > Du brauchst zwischen Pi und Treiber noch einen Pegelwandler. Was meinst du mit auf OC geschaltet?
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.
Kevin B. schrieb: > Dachte ich auch, nun hab ich aber zu wenig Spannung. Wie ist denn die Spannung zwischen den Pins 36 & 38 am Pico? Hast Du Ausgaben auf dem Display? /regards
:
Bearbeitet durch User
> 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
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.
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.
:
Bearbeitet durch User
Noch ein Nachtrag: Du verwendest die gleichen Pins für den Motortreiber wie den UART0. Und im Programm verwendest Du „Print“. Stichwort SYS.STDOUT Tausche einfach mal die Pins auf GP20 + GP21.
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?
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?
> 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?
@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.
:
Bearbeitet durch User
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.
Norbert schrieb: > Uwe D. schrieb: >> ACHTUNG: Du darfst nicht USB und Vsys gleichzeitig verwenden. > > Die beiden sind durch eine Diode entkoppelt, es sollte nur sicher Mega Culpa. Richtig. Nachtrag: Es ist VBus…
:
Bearbeitet durch User
Uwe D. schrieb: > Norbert schrieb: >> Uwe D. schrieb: >>> ACHTUNG: Du darfst nicht USB und Vsys gleichzeitig verwenden. >> >> Die beiden sind durch eine Diode entkoppelt, es sollte nur sicher > Mega Culpa. Richtig. Dann gleich noch einen Tipp: solche Zeichnungen postet man als PNG, nicht als JPEG. JPEG ist nur für Fotos sinnvoll.
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.
Vorhin habe ich das mal getestet. Da kommen brav 3.3V raus. Und die Überschneidungen mit STDOUT gibt es nur dann, wenn man diese zuvor aktiv umbiegt. Mal gucken ob es nochmal ein richtiges Bild gibt und ein paar Klarstellungen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.