Posts by blabla333

    Ich habe wieder von Grund auf am Steckbrett angefangen und bin erst einmal bei dem eingangs erwähnten Script geblieben:


    Geschaltet wird ein MCP23S17 in Kombination mit einem ULN2803. Der MCP23S17 wird mit 3,3V betrieben; über den ULN2803 wird eine LED mit 5V versorgt. Endlich funktioniert alles.
    Ich habe einen beliebigen GPIO-Pin als CS gewählt. Funktioniert (fast) alles wunderbar mit dem obigen Code.


    Mit diesem Abschluss

    Code
    # Initialisierung de MCP23S17
        sendSPI(SPI_SLAVE_ADDR, SPI_IODIRB, 0x00) # GPPIOB als Ausgaenge programmieren
    
    
        while True:
            time.sleep(1)
            sendSPI(SPI_SLAVE_ADDR, SPI_GPIOB, 0x10)  # einschalten
            time.sleep(1) 
            sendSPI(SPI_SLAVE_ADDR, SPI_GPIOB, 0x00) #ausschalten


    sollte die LED regelmäßig blinken. Allerdings bleibt sie immer wieder hängen. Mal blinkt sie regelmäßig und manchmal bleibt sie ein paar Takte ein- oder ausgeschaltet. Ganz unregelmäßig. Das scheint irgendein Synchronisationsproblem zu sein...

    jar: Klar :) Die anderen Projekte funktionieren hervorragend - eigentlich habe ich überall eine Rückmeldung gegeben. Wenn doch irgendwo was fehlt, dann ohne jede Absicht.
    Jetzt versuche ich die Projekte zusammenzufassen. Habe das Ganze auf eine Platine gepackt. Die Herstellung/Versand der Platine hat 4 Wochen gedauert (OSH) und noch ein paar Teile habe gefehlt. Deshalb jetzt der zeitliche Versatz.


    Ich schreibe auch gerade an einer Projektbeschreibung - zum Nachbasteln. Nur macht es keinen Sinn, wenn es ja gar nicht funktioniert.


    dreamshader: Vielen Dank für deinen Beitrag. Leider bringt mich das nicht weiter. Ja, mit der Blacklist ist blöd formuliert; ist aber richtig.
    Bei dem letzten sendSPI: Es wird die GPB angesprochen. Die einzelnen Pins dann über 8 Bit. Da ich den 5. haben will, lande ich nach meinem Verständnis bei 0x10. Weiß aber nicht ganz sicher, ob das stimmt.


    Leider bekomme ich den MCP23S17 immer noch nicht ans Laufen... Ich könnte heulen... nach so viel Arbeit.
    [hr]
    Mir fällt nur noch ein, dass ich ja nicht die GPIOs 7 und 8 für CE0 und CE1 nutze, sondern freie Pins verwende (da ich später sowieso mehr brauche). Aber eigentlich müsste es doch dennoch gehen, oder?

    Habe in der Blacklist i2c rausgenommen und dafür spi reingenommen...


    Code
    ls /dev/spidev*


    ergibt: /dev/spidev0.0 /dev/spidev0.1


    Wenn ich dann dieses Testscript versuche

    Python
    #!/usr/bin/python
    import spidev
    import time
    spi = spidev.SpiDev()
    spi.open(0,0)
    while True:
       resp = spi.xfer2([0x00])
       print resp[0]
       time.sleep(1)


    erhalte ich nur "0" als Ausgabe.
    [hr]
    Habe zwar gesehen, dass GPIO 9 und 10 vertauscht waren. Aber das behebt dennoch nicht das Problem. :(


    Code
    gpio readall


    Mit dem Script aus dem ersten Post werden zumindest
    GPIO 27 auf HIGH
    MOSI auf HIGH
    MISO auf LOW
    SCLK auf LOW


    gesetzt. Das müsste ja alles so stimmen. Ich weiß nicht wie ich nun weiter nach dem Fehler suchen soll...


    Stimmt denn "sendSPI(SPI_SLAVE_ADDR, SPI_GPIOB, 0x10)" für Pin5 (GPB4)?

    Ich versuche erstmalig SPI zu verwenden. Leider tut sich bei mir absolut gar nichts, so dass ich einfach nicht sagen kann, ob die Schaltung/Platine fehlerhaft ist, oder ob ich schon bei der Software Fehler mache.


    Ich habe jetzt einfach mal zu Beginn das Script von Erik Bartmann verwendet und angepasst:



    Wenn ich dieses Script starte, passiert gar nichts.
    Ist der letzte sendSPI-Befehl denn korrekt? Ich möchte hier einfach den Pin5 (GPB4) einschalten und von hier über einen ULN2803 ein 5V-Relais schalten.


    Wie kann ich denn schon vorweg "testen", ob alle notwendigen Module geladen sind usw..? Vielleicht liegt das Problem ja ganz woanders.


    Bei I2C-Schnittstellen kann ich ja mit i2cdetect anzeigen lassen, welche ICs angesprochen werden können. Gibt es vergleichbares bei SPI?

    Also ich habe den LM1117 so verstanden, dass ich im Grunde 1,2V mehr brauche, d.h. bei 5V IN kann ich nur 3,8V maximal rausbekommen.
    Ich habe den LM1117 als LowDrop eben mal eingesetzt um aus 5V 3,3V zu bekommen. Hier sollen ja aus 5V 1,2V gemacht werden, d.h. es würde ja der günstigere LM317 reichen - das Prinzip ist natürlich das gleiche.


    Noch eine Frage zu den ULNs:
    Bei dem oberen aus der Schaltung werden ja verschiedene Spannungen verwendet. Kann ich nicht die gleichen Spannungen über einen Pull-Down-Widerstand zu GND schalten oder muss ich das wirklich für jede einzelne Leitung machen? z.B. beide LEDs über einen 10k einmal gegen GND.
    Wenn das nicht geht, warum nicht?


    Und kann ich Pin10 in meinem Fall komplett ignorieren?

    Quote

    wenn nur 5V reingehn sollen 13,8V raus möglich sein ?


    Ich dachte jetzt Allgemein... Denn die 6,25V kann ich ja auch nicht bekommen. Der LM1117 kann die Spannung verkleinern, aber nicht "boosten". Richtig?


    Quote

    also langsamer machen das der Kopf mitkommt


    Heißt das, das stimmt jetzt so?

    Ok, ich will immer viel auf einmal und wahrscheinlich mache ich dann einfach zu vieles zu schnell. Aber du musst schon zugeben, dass ich insgesamt schon deutlich weiter bin, als vor ein paar Monaten.


    Hab die kleinen Motoren im letzten Schaubild (entgegen des Thread-Titels) nur mit 1,2V versorgt (steht auch so im Schaubild). Ging mir jetzt erst einmal um das Verständnis. Wenn ich den R5 weglasse, dann bin ich ja bei den 1,25.


    Aber tut mir echt leid, dann habe ich das mit den -12V des SIM1 offensichtlich nicht wirklich verstanden. Ok, ich sehe gerade, dass hier (http://www.forum-raspberrypi.d…cf8591?pid=75309#pid75309) noch der Bezug zu GND da ist. Den habe ich vergessen. Aber ich glaube ich habe es tatsächlich noch nicht vollständig verstanden. :(


    Quote

    wieviel maximale Spannung bekomme ich raus und wie hoch muss der R5 sein ?


    Doch nur maximal so viel, wie der IC eben hergibt. Beim LM1117 sind das 13,8V.

    So, ich habe das jetzt mal etwas umfangreicher gemacht. Hoffe, ich habe den Treiber jetzt wirklich verstanden.


    Der obere ULN schaltet verschiedene Spannungen, also sind diese mit je einem PullDown nach GND geschaltet.
    (von oben nach unten wird geschaltet: Ein 5V Motor, zwei LEDs, zwei 1,2V Motoren)


    Der untere ULN schaltet ausschließlich 12V Spannung, d.h. hier kann ich das einfach gegen den GND-Pin schalten, oder? Da die Spannung von dem SIM1-0512 kommt, muss ich dann aber GND nach V1 (Pin7) schalten, richtig?
    (hier möchte ich drei externe 12V-Relais schalten und vier 12V Motoren)

    Ich habe meine Schaltung jetzt entsprechend korrigiert und erweitert.
    Da die LEDs und die Motoren an anderer Stelle im Schaltschrank platziert sind, werden sie per Klemme "eingebunden". Müsste ja so gehen.


    Der SIM1-0512 stellt mir 12V zu Verfügung. Ist es so richtig, dass die Pulldowns in dem Fall gegen V- gehen (Pin7)?


    Bei der 1,2V Spannung sehe ich nicht den Fehler. Der LM1117 ADJ soll mir die 1,2V zu Verfügung stellen.
    Laut Datenblatt berechne ich die Ausgangsspannung so: 1,25 * (1+R2/R1). Also müsste R1 und R2 eigentlich 0 sein -> Ganz ohne Widerstände? Also ADJ-Pin einfach gegen GND schalten?

    Tausend Dank! Das erleichtert mir schon mal einiges.
    Darf ich dazu noch was fragen?


    Wieso muss ich die GPIOs nach GND schalten (vor dem Treiber)? Und wieso müssen dann noch Widerstände dazu? Wird der Stromkreislauf nicht durch den GND-Pin des Treibers geschlossen?

    Also irgendwie will es nicht werden. Es werden ja immer mehr Bausteine :(
    Da ich nicht mehr genug Pins zu Verfügung habe, brauche ich ja einen Expander. Also komme ich auf einen Expander und zwei Treiber.


    Mein Problem ist, dass ich verschiedene Spannungen schalten will. Die Motoren mit 1,2V, die LEDs mit 5V.
    Wie versorge ich aber jetzt die Motoren mit 1,2V (über den LM1117)


    P.S.: Die Motoren sind RF300, welche min. 12mA benötigen.

    Ich hatte gehofft, dass ich einen Baustein einsparen kann.
    Und zwar dachte ich daran einen MCP23017 zu nehmen (anstelle des MCP23008 und des ULN2803A um ausreichend Pins zu haben) und damit sowohl das Relaisboard, als auch die Teile zu schalten, die im Schaubild darüber sind.


    Bei dem Relaisboard handelt es sich um dieses: http://www.sainsmart.com/8-cha…avr-msp430-ttl-logic.html
    Es läuft mit 5V. Schalten möchte ich damit sowohl 12V als auch 230V (Steckdosen).

    Ich versuche das Ganze über einen MCP23008 zu machen. Ausgangsklemme 1 und 3 sind für die beiden LEDs, 5 und 7 für die kleinen 1,2V Motoren; Die GND Klemmen sind hier nicht eingezeichnet.


    Habe aber immer noch Probleme mit der Ansteuerung der Motoren. Diese laufen jetzt mit 1,2V (welche über einen LM1117 ADJ generiert werden). Nur laufen jetzt immer beide Motoren.
    Kann ich das nicht irgendwie so schalten, dass ich die Motoren auch getrennt laufen lassen kann ohne aber noch einen zweiten LM1117 verbauen zu müssen? Der MCP23008 läuft ja mit 5V...