-
Benjamin Koch authoredBenjamin Koch authored
Notizen.md 26.26 KiB
- Eine Platine pro Heizung.
- Aber einen zweiten Kanal vorsehen, damit man zwei Heizungen hängen kann.
- RS485 Bus.
- Bus ist ernstgemeint, d.h. eine lange Kette, keine Stichleitungen und Abschlusswiderstände am Ende.
- Entweder an einer Stelle auf LAN brücken, z.B. mit https://www.waveshare.com/wiki/RS485_TO_POE_ETH_(B)
- Oder per Netzwerkkabel plus USB zu vogon. Das Netzwerkkabel natürlich so, dass es nicht einfach auf Netzwerk zurücksteckbar ist.
- Protokoll z.B. Modbus RTU oder was eigenes in Anlehnung daran.
- Abzweigdose als Gehäuse
- 10pcs, 0.82€ pro Stück, https://www.hornbach.de/p/spelsberg-abzweigkasten-ip55-i12-85x85-mm-33291201-ohne-klemmen-12-einfuehrungen-10-stueck/6060830/
- https://www.spelsberg.de/verbindungsdosen/innenbereich-bis-252/33291201/
- Ich würde außen schrauben vorschlagen (oder Gecko-Tape), aber würde die Schraublöcher in den Ecken aussparen - nur so für den Fall.
- Auch die beiden "Pins" in der Mitte aussparen (sind die zum Befestigen von Wago-Klemmen..?).
- Platine auch per Gecko festkleben? Ich denke ja.
- MCU
- Warum RP2040?
- Klassische Wahl wäre ein ATmega328.
- Aber RP2040 hat eigentlich keine Nachteile und der USB Bootloader klärt die Frage, wie man es schafft, dass bei Problemen jeder die Firmware ohne RS485 Bootloader programmieren kann.
- Den Flash können wir groß genug machen, dass man eine Art A/B Partition vorsehen kann.
- Direkt A/B geht nicht, weil dem XIP kann man anscheinend keinen Offset vorgeben und dann müsste alles ohne XIP oder mit
-fPIC
sein. - Aber Leute haben sich was überlegt: https://github.com/rhulme/pico-flashloader
- Dem könnte man noch ein "boote in die alte Version" geben, wenn man immer zwei Images da liegen hat und noch einen Button spendiert.
- Direkt A/B geht nicht, weil dem XIP kann man anscheinend keinen Offset vorgeben und dann müsste alles ohne XIP oder mit
- Weiterer Vorteil wäre, dass es ein richtiger ARM ist, d.h. LLVM und Rust sind kein Problem. Genug RAM für sinnvoll MicroPython, falls man das mal will. Und es ist ein Dual-Core. Wobei wir darauf hier ehrlich gesagt verzichten könnten, weil C und Mini-Programm reicht.
- Ah, und JLC bestückt uns zwar auch den ATmega328P - aber für 3€ statt 1€!
- Nachteil: Nur 4 ADC Pins.
- Nachteil: Hardware-Design ist (abgesehen vom Programmer) etwas aufwändiger als beim ATmega. Aber ich würde einfach den Raspi Pico kopieren.
- ...
- Warum RP2040?
- Kabel
- fxk8y hat 7-fach Steuerleitung vorgeschlagen, bei Alpha verfügbar. Konkret: Tronic LIYY 7x0.5
- 2x 24V, 2x GND, 2x RS485 A/B, 1x WS2811
- Die siebte Leitung ist frei und da noch mal GND zu machen oder so klingt nicht sinnvoll. Stattdessen einen WS2811 auf die Platine zum Signal verstärken und dann kann man quasi an beliebigen Stellen LED-Streifen verteilen.
- Auch noch eine WS2812-4020 mit aufs PCB zum Debuggen.
- Der WS2811 hängt am MCU. Das könnte praktisch sein für Auto-Discovery Dinge.
- RS485 ist nicht separat verdrillt oder geschirmt. Falls das WS2811 Signal den stört, nutzen wir das Feature nicht.
- Externe Hardware-Features
- Pins auf Federzugklemmen:
- 14x Bus-Kabel
- 8x Power: 2x 24V rein, 2x raus, ebenso für GND (damit man das Kabel direkt anklemmen kann)
- Alternativ nur 4x und Doppel-Aderendhülsen nehmen. Ist eigentlich auch ok.
- Einige Klemmen können nur AWG18=0.8mm² - das reicht nicht.
- KF250T-5.0-2*13P kann 1.5mm², d.h. da geht es.
- 4x RS485: rein und raus (und beim letzten nen Widerstand statt weiteres Kabel)
- 2x WS2812 vom/zum Kabel
- 8x Power: 2x 24V rein, 2x raus, ebenso für GND (damit man das Kabel direkt anklemmen kann)
- 8x Heizung
- 2x 24V Ausgang mit PWM für Wachsmotor, 500 mA Peak (einige sec), 85 mA continuous
- 2x Strom messen auf den 24V Ausgängen
- bevorzugt: high-side schalten, low-side messen -> deshalb extra Pin nötig
- alternativ beides low-side und zum passenden Zeitpunkt messen, aber dedizierter 24V Pin ist trotzdem praktisch
- Sofern der Wachsmotor keinen relevanten induktiven Anteil hat (gut möglich - ist ein Heizdraht), würde low-side messen+schalten reichen, weil dann müssen wir nur während angeschaltet messen.
- Der Grund für Strom messen wäre, dass ich hoffe damit die Temperatur vom Wachs abzuschätzen, weil warum sollte sich sonst der Strom von 480 mA auf 85 mA reduzieren (laut einem Datenblatt von so einem Aktor). Ist aber nur nice-to-have, nicht nötig. Beziehungsweise schon irgendwie nötig, wenn/weil wir vorhaben die Power-Supply nicht auf Peak auszulegen und versetzt zu schalten.
- 4x Digital-Eingang für Reed-Relay (2 pro Fenster); aber Umsetzung später, nur Eingänge vorsehen
- 2x 5V Ausgang
- I2C
- WS2812
- DS18B20
- 1x GND
- 1x 0-10V Eingang
- TODO: Was wäre noch sinnvoll?
- 14x Bus-Kabel
- Features ohne extra Pin:
- 1x 24V Versorgung messen
- Nein: 1x DS18B20 oder DS18B20+ als Temperatur-Sensor und Unique ID
- Eher nicht. Der kostet 1€, wird im Gehäuse nur Mist messen und eine Unique ID haben wir auch so: https://stackoverflow.com/a/74320491
- Man könnte LM335DT nehmen, aber weil der analog ist hätten wir da auch Offset-Fehler durch die Referenzspannung wie bei dem integrierten Sensor im RP2040 (siehe Datenblatt, Section 4.9.5). Bei 1% Fehler in der Referenzspannung sind es aber nur 0.8 K statt 4 K wie bei dem integrierten.
- Zu dem integrierten ist darüber hinaus leider nichts angegeben.
- User Interface:
- Ich dachte zunächst an seitwärts gerichtet und Loch ins Gehäuse machen, d.h. WS2812-4020 und 90 Grad gekippte Taster. Aber ist eigentlich nur unnötig Aufwand, weil das Gehäuse ist werkzeuglos zu öffnen und beinhaltet keine gefährlichen Spannungen.
- 1x LED am MCU, z.B. RGB; zum Debuggen vom RS485 und MCU
- 1x LED in der WS2812 Leitung, zum Debuggen davon
- 1x Taster für Reset - nicht im Betrieb nutzbar
- 1x Taster für USB Bootloader - nicht im Betrieb nutzbar, weil hängt am CS vom Flash
- 1x Taster für unseren Bootloader (z.B. altes Image starten). Im Betrieb nutzbar, z.B. zum Adressen anlernen.
- 1x USB. Den eventuell schon seitlich, weil sonst teuer und schwer erhältlich.
- LEDs und Taster nicht dahin, wo Kabel lang gehen.
- Pins auf Federzugklemmen:
- Hardware-Design
- MCU
- Power
- Wir brauchen kaum Leistung, d.h. einfach nen LDO nehmen. Leistung für den Wachsmotor geht nicht durch den LDO.
- Diode als Verpolungsschutz (nicht so richtig nötig) und um den MCU optional von USB zu versorgen.
- Diode von USB muss so sein, dass nach dem LDO noch 3.3V raus kommt. Eventuell MOSFET nehmen.
- Die vier 24V und GND auf der Platine nebeneinander und Plane mit Vias. Da fließen ggf 8A drüber.
- Anschlussklemmen:
- Die steckbaren bauen zu groß und zu hoch: https://www.lcsc.com/products/Pluggable-System-Terminal-Block_11071.html
- z.B. https://www.lcsc.com/product-detail/Pluggable-System-Terminal-Block_Cixi-Kefa-Elec-KF2EDGKNHG-3-5-2-9P_C2923078.html
- Das sind 32x17 mm an Fläche für 2x9 Pins, was an sich sogar noch geht. Aber 23 von 32 mm in der Höhe alleine für den steckbaren Teil passt einfach nicht. Die Kabel würden nach oben rausgehen und da sind 9 mm echt wenig - und da gehen noch Gecko, PCB und der feste Teil der Klemme ab.
- 3€ ist auch nicht grad wenig.
- Deshalb lieber solche: https://www.lcsc.com/products/Spring-Clamp-System-Terminal-Block_432.html
- 41x22mm für 2x8 Pins: https://www.lcsc.com/product-detail/Spring-Clamp-System-Terminal-Block_Cixi-Kefa-Elec-KF250T-5-0-2-8P_C976542.html
- 2x13 wäre knapp genug, aber dann sind wir bei 66 mm: https://www.lcsc.com/product-detail/Spring-Clamp-System-Terminal-Block_Cixi-Kefa-Elec-KF250T-5-0-2-13P_C976547.html
- Aber nehmen wir das erstmal für die weitere Rechnung.
- Mit noch 2x4 daneben mag das knapp reichen.
- 23x18mm für 2x6 Pins, aber kosten 3€: https://www.lcsc.com/product-detail/Spring-Clamp-System-Terminal-Block_Cixi-Kefa-Elec-KF207RH-3-5-2-6P_C2975066.html
- 41x22mm für 2x8 Pins: https://www.lcsc.com/product-detail/Spring-Clamp-System-Terminal-Block_Cixi-Kefa-Elec-KF250T-5-0-2-8P_C976542.html
- Ich würde das PCB bis quasi zum Rand gehen lassen, aber Kabeleinführung braucht Platz. Daher Klemmen zur Platinenmitte zeigen lassen und Kabel einmal über die Platine führen.
- Gecko-Tape sollte definitiv auch da unter der Platine sein, wo die Klemmen sitzen!
- Die steckbaren bauen zu groß und zu hoch: https://www.lcsc.com/products/Pluggable-System-Terminal-Block_11071.html
- Platz:
- Wir haben grob 66x66 mm und 32 in der Höhe. Das sind 43 dm². Da geht aber noch etwas weg wegen den Plastikpins und den Schrauben.
- Der Raspi Pico hat 50x20 mm, also 10 dm². Der ist aber nicht gerade platzsparend gebaut.
- Anschlussklemmen KF250T-5.0-2*13P mit 66x22m, also 15 dm².
- Plus wenn wir die echt nehmen, kostet uns das 5 mm in der Tiefe, d.h. 5x66 also 3.3 dm².
- Falls wir das doppelte nehmen können, wäre sinnvoll Platz für Beschriftung.
- User Interface: 2x LED mit 5x5mm plus Abstand, also 0.4 dm². 3x Taster mit sagen wir mal 8x6mm, also 0.5 dm². Zusammen 2 dm².
- Damit haben wir noch 13 dm² für MOSFETs und so. Und vielleicht bleibt dann echt noch mal 3.3 dm² für Beschriftung übrig.
- Strom messen
- Gut, dass ich mal LTspice dagegen geworfen habe: Wenn ich low-side den Strom messe, wird der leider negativ, sobald ich die high-side abschalte.
- High-side Messung mit LT138 oder so mag vielleicht helfen, aber der kostet 1.5€.
- INA2180A1IDGKR für 0.45€ würde wohl gehen. Und der hat dann schon zwei Channel.
- Einziges Problem am INA2180 ist, dass 26V das Absolute Maximum sind. Das ist mir doch etwas knapp. Und wenn wir nur deshalb nicht die Spannung etwas hoch drehen können, wäre schade.
- MCU Pinout:
- 4x ADC ist klar. Da gibt's nur vier von leider.
- GPIO26..29
- 1x I2C, PIO, PWM für die Digital-Ausgänge. Eventuell wäre auch SPI TX hilfreich, falls das für WS2812 besser geht als PIO.
- I2C gibt's alle zwei Pins, abwechselnd I2C0 und I2C1.
- SPI und UART sind beides 4-er Gruppen, d.h. SPI TX und UART TX bekomme ich nicht beide (oder ich muss es mit zwei Pins verbinden).
- Andererseits steht WS2812 mit PIO sogar als Beispiel im Datenblatt.
- UART auch.
- PWM gibt's quasi überall.
- PIOs gibt's beide überall und der Start-Offset ist einstellbar.
- -> GPIO24+25: UART1 RX/TX, I2C0, PWM4
- Eventuell zusätzlich GPIO23 für SPI0 TX und GPIO18 für SPI0 SCK, aber eigentlich nicht sinnvoll weil langsam. Und CS müsste man über GPIO21 über den Widerstand vom Digital-Eingang treiben. -> Nein, weil sonst habe ich keine Pins für Taster mehr.
- 2x SBU
- ebenfalls auf UART1 und wenn möglich I2C0 -> 4+5 oder 8+9
- 1x I2C auf Stiftleiste für optionales Display.
- I2C0, d.h. 4*n+0
- // 8+9, weil da ist PWM4, was wir schon benutzen. -> Nein, da ist SBU.
- 5x PWM für LEDs.
- Quasi überall, aber nicht PWM4 nehmen.
- 2x PWM für Heizung.
- 1x UART für RS485
- UART0 nehmen -> 0+1, 12+13, 16+17
- Erstmal 16+17 und TX_EN auf 15.
- VBUS_DET? Der Pico hat es an GPIO24 (mit Spannungsteiler), was nicht passt. Der RP2040 Zero hat es nicht. Aber evtl wollen wir USB schlafen legen.
- GPIO ??
- 4x Reed / Digital-Eingang
- Im Prinzip egal wohin, sofern man es nicht anderweitig nutzt.
- UART RX
- GPIO20 oder GPIO22 sind Clock Inputs. Das könnte man eventuell als Frequenzzähler nutzen.
- GPIO19 bis GPIO22: UART1 RX, SPI0 RX
- Taster-Matrix:
- Dual-Purpose Ausgänge:
- TX solange TX_EN nicht gesetzt
- 5x LED theoretisch aber die ziehen runter und ggf wollen wir die aktiv low treiben; weiß vielleicht?
- 2x I2C, aber die PU stören vermutlich (wenn mehr als 1 Taster gedrückt) -> Dioden hier oder in der Taster-Matrix sollten helfen
- GPIO 7, 18, 23
- Dual-Purpose Ausgänge:
- 4x ADC ist klar. Da gibt's nur vier von leider.
- Protokoll:
- Modbus RTU:
- Viel einfacher wird's nicht, solange man nur die Register-Zugriffe implementiert.
- Es gibt zwei Python Libraries.
- CRC sind sinnvoll. Zusätzlich Parity muss ich nicht haben, aber was soll's.
- Abstand zwischen Nachrichten würde ich evtl nicht nach jeder machen.
- Die Zusatzfeatures für Diagnose (Event Log) und ID klingen sinnvoll.
- Baudrate und so:
- Aufstarten mit Standardeinstellung (19200, 8-E-1)
- Auto-Baud per Break und dann Zugriff auf Gerät 0x55, wenn man eine andere Baudrate möchte.
- Mit Adresse 0x55 würde ich dann auch die sonstige Zusatzfeatures machen wie den Broadcast für Auto-Discovery.
- Auto-Discovery:
- Ich habe wenig Lust, die Adressen manuell zu verteilen.
- Simpel: "setze deine Adresse auf xx, falls dein Button gedrückt ist". Das kann ein Schreibzugriff auf ein bestimmtes Register von Broadcast-Gerät 0x55 sein. Adresse wird dann in den Flash geschrieben. Bevor sie eine Adresse im Flash haben, reagieren sie nur auf 0x55.
- Auto-Discovery ginge auch einfach mit Broadcast und Backoff. Parameter wie Anzahl der Backoff Slots, Seed und die Wahrscheinlichkeit überhaupt zu antworten
stehen mit in dem Broadcast. Es gibt eine maximale Zeit und nach der darf nicht mehr geantwortet werden, damit wieder normale Kommunikation möglich ist.
- Man setzt ein Flag im Device für "ich kenne dich schon". Das deaktiviert Reaktion auf den Broadcast (ggf optional per Flag in dem Broadcast) und erlaubt dem zentralen Controller einen Reset des Geräts festzustellen.
- Der Vorschlag kam so halb von ChatGPT. Meine Variante wäre eher was in der Art von DS18B20 gewesen, evtl mit mehreren Zeitslots um direkt 4 bit abzufragen.
- Der Vorteil ist, dass man mit allen Geräten reden kann, ohne sie anzulernen (und man weiß nur nicht, welches wo ist).
- Die Adresse ist entweder permanent im Flash oder die zentrale Steuerung merkt sich die Chip-ID vom MCU und vergibt die Modbus-Adressen bei jedem Start neu.
- Modbus RTU:
- Non-Features / nicht umgesetzt:
- USB Host: Der MCU kann es und wäre cool zu haben für Erweiterungen.
- VBUS EN per P-MOS auf VBUS (und ggf ersetzt der die existierende Diode für die andere Richtung)
- Die 5.1k PD so mit VBUS EN verbinden, dass die zu PU werden. Es muss aber ein PD dran, damit es sich im Bootloader korrekt als USB Device meldet. Das braucht etwas Kreativität, damit in beiden Fällen der Widerstand im richtigen Bereich liegt. Oder man muss einen Pin finden, den der Bootloader auf low treibt.
- Problem: Geht auf keinen Fall standardkonform, weil wir nicht genug Strom auf 5V zur Verfügung stellen können.
- Und wenn man sowieso die 5V extern einspeisen muss, brauche ich auf der Platine nix weiter zu tun.
- BJT vor den MOSFET, damit man das Gate auf höhere Spannungen bekommt? -> Nein, weil das Gate kann keine 24V.
- Spulen mit rein zum Motor für langsamere Anstiegszeit / EMV Abstrahlung auf der Zuleitung? -> fxk8y hat sich sehr eindeutig dagegen geäußert.
- USB Host: Der MCU kann es und wäre cool zu haben für Erweiterungen.
- Sonstiges
- ADC für Strommessung und Option bauen, um wenig Strom auf die Aktoren zu geben (zum Messen)
- Ich dachte per Widerstand die 5V drauf, aber ne, high-side schalten wir ja gar nicht.
- Aber per Widerstand die 0V drauf würde gehen.
- Hm, an sich würde auch reichen, den Strom 1x gemeinsam zu messen und halt kurz den anderen Abschalten zum Messen.
- Es reicht, wenn ich das für beide gemeinsam anschalte. Dann brauchts nur einen Pin. Auch den habe ich nicht, aber man könnte einen der LED-Pins missbrauchen.
- Aktuell erwarten wir bei 300 mA eine Spannung von 30 mV. Mit einer Referenz auf 3.0 V und 12-bit ADC sind das: 0.3×0.1/3.0×4096 = 41 counts
- Das ist nicht toll, aber reicht locker.
- Wenn ich 10 mA zum Messen drauf gebe, wären das 0.01×0.1/3.3×4096 = 1 count -> nope.
- Mit OpAmp würde ich das so verstärken, dass wir maximal 0.5 A oder 1 A messen können. Nehmen wir letzteres. Das wäre dann Faktor 30 im OpAmp und wir haben 3.0V / 1 A.
- Dann wären die 10 mA auch 30x so viel, was konkret 37 counts sind (oben war gerundet).
- Das klingt voll ok.
- Für 10 mA muss ich das über 2.4 kOhm mit GND verbinden.
- Welcher OpAmp kommt in Frage? Wie viel Strom würde der brauchen?
- OP07C ist anscheinend der einzige OpAmp in Basic Parts. Aber der will mindestens +-3V.
- Ach ne, Suche war nur doof.
- LM358D: Wir haben bis zu 30 mV am Eingang normalerweise und 1 mV, wenn wir mit 10 mA messen. Da klingt ein Offset von 2 mV nicht gut.
- LMV321I: Wenig Supply Current, rail-to-rail, aber auch 2 mV Offset. Grundsätzlich gefällt der mir aber.
- NE5532DR: Nur 0.5 mV Offset, aber 8 mA Supply.
- Ok, die anderen sind auch nicht besser.
- LM324DT hat auch die 2 mV Offset-Voltage - also für unseren Fall ist nix angegeben und wird etwas schlechter sein, aber die Max-Werte sind so wie bei den anderen, die auch 2 mW haben. Und der hat auch weniger Stromverbrauch und ist günstiger durch 4x in einem Package.
- Ok, die meisten anderen haben 2x im Package und das reicht uns. Aber bezüglich Stromverbrauch und Offset kommen die nicht ran.
- Oh, Moment... beim MCP6002T ist kein typical Wert angegeben für den Offset und +-4.5 mV maximal ist gar nicht schlecht. Und er hat weniger Power.
- Dann nehmen wir den.
- Fun fact: Das untere Ende sind VSS-0.3V, d.h. mit dem hätte man sogar negative Ströme messen können.
- Ich nehme mal Faktor 60, d.h. funktioniert bis 500 mA. Wenn man mehr will, muss man halt den Shunt tauschen.
- Wie viel Watt kann ich durch den Widerstand zum Strom messen schicken?
- Den 0R1 hatte ich schon größer gemacht, aber der ist harmlos wegen der niedrigen Spannung und bei Kurzschluss kann ich nicht viel machen (sofern die Sicherung vor den 24V den nicht rechtzeitig abfängt).
- Die 2.4 kOhm für die 10 mA Messstrom sind aktuell ein 0402WGF2401TCE. Das WG heißt 1/16 Watt. Es fallen aber 240 mW ab. Upps.
- In dem Package wäre ok: 24/(1/16)×24 = 9.2 kOhm
- Das wären 2 mA. Das wären 16 counts am ADC. Nicht so toll. Aber selbst die 0805 haben nur 1/8 W.
- Dann wird's wohl ein Extended Part mit 1206.
- Oder auch nicht: Es gibt Basic Parts mit 2k und 4.7k. Wir machen das nicht dauerhaft an und der Motor hat auch noch 100 bis 500 Ohm. Ab 2.3 kOhm passt die Power und wir machen das ja immer nur kurz an. Ich denke, 2k sind ok.
- Quarz vom MCU:
- hardware-design-with-rp2040.pdf hat da Infos zu (die aber im Prinzip nur das übliche sind).
- Relevant ist allerdings, dass sie ggf einen Serienwiderstand empfehlen. Das könnte auch sinnvoll sein zum Strom sparen, vermute ich.
- Deren Quarz hat ESR 50 Ohm. Ich habe X322512MSB4SI (C9002). Der hat bei 12 Mhz 80 Ohm.
- Der will nur 20 pF Kapazität. Im PDF haben sie 18 pF als Ziel und tun dafür 27 pF daneben schalten. Hm. Vertraue ich jetzt dem Datenblatt oder dem Pico Schaltplan (und dem RP2040 Zero, die das vermutlich aus dem vom Pico abgemalt haben)?
- Aber womöglich haben die einen Quarz mit 10 pF Lastkapazität.
- Dann ändere ich es mal auf 27 pF. Theoretisch würde ich 3 pF mehr brauchen, damit es 20 pF statt 18.5 pF sind, aber nah genug.
- Mit 27 pF gibt's kein Basic Part. 30 und 33 gibt's. Oder 22 pF. Tjoa, dann eben doch die 30. Ah, ne, gibt doch auch 27 pF. Die hat nur die Suche nicht gefunden.
- Ich würde ja gerne Netzklassen einstellen, aber Kicad meint, er hätte kein Projekt.
- Das Verhalten ist wie dieser Bug, aber nichts davon hilft: https://gitlab.com/kicad/code/kicad/-/issues/9347
- Huch, die Datei war tatsächlich schreibgeschützt. Aber nur diese eine.
- chmod u+w c3pb-heizung.kicad_pro
- Kühlfahne vom 5V Regulator und wie viel Power fällt da ab? Passt das eigentlich?
- Oh, die 100 mA aus der Beschreibung sind Absolute Max. In echt kann er 70 mA - theoretisch.
- SOT-89 kann 350 mW, d.h. 0.35/(24−5) = 18 mA. Mist.
- Ok, dann ist doch etwas mehr relevant, wie viel Strom ich eigentlich brauche.
- WS2811 ein paar mA und 2x 17.5 mA für die LEDs. Betriebsstrom steht leider nicht drin.
- In dem LCSC Datenblatt steht 17.5 mA, bei Adafruit 18.5 mA: https://cdn-shop.adafruit.com/datasheets/WS2811.pdf
- Also rechnen wir mal mit 37 mA.
- TMP102 war wenig. Rechnen wir mal 1 mA.
- OpAmp war auch unter 1 mA.
- MCU und Flash: Der Pico braucht 90 mA unter Last (Video) und 10 mA im Bootloader. Wir sind vermutlich eher so bei 10-30 mA, denke ich.
- zweiter LDO: 1 mA?
- PU auf I2C: 3 mA
- MAX3485: 4 mA, aber 250 mA kann er auf den Bus treiben
- Summe (Worst Case): 37+1+1+90+1+3+4+250 = 387 mA
- Realistisch: 37+1+1+20+1+3+4+14 = 81 mA
- Ich mache mir dann doch mal über einen DCDC Gedanken...
- DCDC auswählen:
- https://jlcpcb.com/parts/2nd/Power_Supply_Chip/DC-DC_Converters_154
- Es gibt ein paar Basic Parts.
- TPS54331 kann nur 28V.
- XL1509 könnte gehen, aber nur 150 kHz.
- TPS5430 könnte gehen.
- MC34063 könnte gehen, aber nur 100 kHz.
- Mit dem TPS5430 und 30V am Eingang bräuchte ich mindestens 92 uH und vermutlich müsste ich es dann auf die 3 A auslegen, damit er bei Überlast nicht die Spule killt (oder direkt im ersten Cycle).
- Ich schaue mal bei Extended Parts, weil die Spule ist auch nicht Basic, d.h. beim IC sparen und dafür Spule teuer wäre doof.
- So richtig viel tolles gibt's nicht oder ist direkt teuer. Das hier hilft sehr: https://yaqwsx.github.io/jlcparts/#/
- TX4144 sieht ok aus. Google mag das Datenblatt nicht übersetzen, aber DeepL schon.
- Die Formel ist wie bei TPS5430, aber sie nehmen 0.3 statt 0.2 als K_Ind und der hat halt nur 1.5 A. Damit komme ich auf 20 uH. Ihr Beispiel hat 33 uH und geht bis 60V.
- Und der Rated Current für die Spule soll sein: 1.5A + 0.3*1.5A/2
- Davon gibts viele und billig, z.B. https://www.lcsc.com/product-detail/Power-Inductors_cjiangChangjiang-Microelectronics-Tech-cjiangChangjiang-Microelectronics-Tech-FNR6045S220MT_C168080.html
- Der TX4144 kostet 24ct, aber man muss mindestens 5 kaufen. Ist ok. -> Ah, ne, MOQ ist nur bei LCSC. Auch gut.
- Als Kondensator würde der hier gehen: https://www.lcsc.com/product-detail/Aluminum-Electrolytic-Capacitors---SMD_KNSCHA-KNSCHA-RVT220UF16V67RV0015_C2887273.html (Den am Eingang spare ich mir, weil da ist schon einer.)
- Ich bleibe bei der SMA Diode. Wird schon reichen, weil wir nutzen den Strom ja nicht voll aus.
- Tja, trotzdem keine Chance, dass das passt. Dann muss es wohl ein aufgestecktes Board werden.
- Auf der Basisplatine Stiftleisten (am besten die dreipoligen noch mal nutzen). In der ersten Variante Buchsenleisten am Aufsteckboard, später direkt anlöten.
- Ja, äh, definitiv die dreipoligen, weil einpolig gibt's nur in gewinkelt und zweipolig in wenig Stock, gewinkelt oder SMD+teuer.
- Oder ich löte die einfach per Hand ein.
- Falls der Preis meiner Platine in Richtung 1€ geht, sollte ich erwägen, die üblichen LM2596 Platinen von Ali einzubauen (rein legen, Kabel anlöten).
- 6ct Spule, 20ct DCDC, 3ct Elko, 7ct Diode
- Immerhin ein Vorteil: Falls der DCDC nicht gut ist, kann ich das noch korrigieren.
- 42€ für 30pcs. Nicht toll, aber ist ok. Wenn ich die Widerstände aus Basic Parts basteln würde, wäre es 6€ weniger.
- Wie heiß wird der DCDC eigenntlich? Graph im Datenblatt sagt 89% für 5V+1.5A bei 25V am Eingang. 5×1.5×(1−0.89) = 825 mW. Klingt ok für verteil auf das Board.
- Wie viel Strom nach extern geben?
- Wir haben jetzt quasi 1.5A zur Verfügung, von denen wir 0.5 A intern brauchen.
- Auf den 24V ziehen wir dabei (Annahme 80% Effizienz): 5×1.5/24/0.8 = 0.4 A
- Die 24V habe ich mit 1.1A abgesichert aktuell. Geht da mehr?
- //1.35 A gäbe es für ein paar ct mehr.
- Nein, die andere waren 5ct - das sind 24ct. Es ist nur 2 ct teurer als eine davon. Aber warum findet er grad die von vorher nicht..?
- 0.4 A für den DCDC plus 2x 500 mA wäre sinnvoll.
- A72-185 mit 72V und 1.85 A. Die ist 18mm breit und Pitch 5.1 mm. Der Pitch passt, aber die alte war nur 14 mm, d.h. man kann sie dann nicht oder nur schwieriger an dem Wannenstecker vorbei biegen. Egal.
- 3.3V: Der RT9013 kann max 500 mA und 0.4W in SOT-23-5. Also effektiv 235 mA. Die brauchen wir theoretisch schon komplett für den RS485, aber wenn der bei Kurzschluss auf dem Bus abschaltet, ist schon ok. Thermal Shutdown hat er.
- Dann würde ich dem Display-Board mal 100 mA geben auf den 3.3V.
- 5V: Wir haben 1.5 A und brauchen bis zu 400 mA. Wobei ich auch hier den RS485-Kurzschluss rauslassen würde, d.h. sagen wir 200 mA. Plus die 100 mA, die wir oben auf den 3.3V erlaubt haben. Also je 600 mA zum Display und nach extern? Etwas weniger vielleicht wegen der Diode.
- Ne 100 mA Sicherung finde ich grad weder über die JLC filter noch über das Github-Parts Ding?!
- Aber es gibt JK-SMD0603-010 (C369142), was ich anhand des Part-Namen der vorherigen gefunden habe. Hmpf.
- Per Suche nach 100 mA findet man sie und da finde ich auch eine für 500 mA: BSMD0805-050-24V (C910822). Also noch viele mehr, aber 0603 hat nur 6V und bei 0805 kostet die mit 24V statt 15V nur 1ct mehr.
- ADC für Strommessung und Option bauen, um wenig Strom auf die Aktoren zu geben (zum Messen)
TODO und weitere Gedanken:
-
Anschlussplan wird nicht auf die Platine passen, aber kann man in den Deckel kleben.
- Und auf die Rückseite der Display-Platine kleben oder in Silk.
-
Testpunkte - auch für Bauteile, die man von der Vorderseite schlecht messen kann.
-
Bilder aktualisieren
TODO:
-
SilkS
-
sind noch welche von den ganz kleinen Vias da?
-
noch mal DRC
-
OLED als Board kaufen oder irgendwie anders auf eigene Platine? -> Nicht gut ohne Breakout kaufbar und Breakout hat noch diverse Kondensatoren und so. Ich würd's einfach von unten an mein PCB löten.
-
Display-Board:
- OLED mit SSD1306
- Taster per Matrix oder I2C
- Noch ein TMP102 (andere Adresse!)
- eventuell eine LED
- Mehr fancy:
- Ring aus LEDs um das OLED (mit in den Deckel gefrästen Löchern) und damit Soll-Temperatur grob anzeigen. Scala aus Papier oder so drum kleben.
- Touch-IC, z.B. MPR121 mit Touch-Flächen um das OLED.
- Man tippt 1 sec auf die gewünschte Temperatur und dann nimmt er die.
- Wischgesten hoch/runter rechts und links vom Display, etc.
- Taster und OLED trotzdem (Fallback)
- Buzzer?
-
Von LCSC separat bestellen:
- KF250T (weil bei JLCPCB nicht genug verfügbar und ist sinnvoll, die Platine erst zu testen)
- Material für 10-polige Flachbandkabel
- Eventuell Schrauben für Displayplatine an Gehäuse