klipper_faq:rp2040_input_shaper_hardware
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
klipper_faq:rp2040_input_shaper_hardware [2024/02/22 19:32] – removed - external edit (Unknown date) 127.0.0.1 | klipper_faq:rp2040_input_shaper_hardware [2024/02/22 19:41] (current) – [Unterschiede] dominik | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== RP2040 Input Shaper Hardware ====== | ||
+ | |||
+ | In Anlehnung an https:// | ||
+ | ===== YouTube Video #92 ===== | ||
+ | {{youtube> | ||
+ | |||
+ | \\ | ||
+ | ===== Kommerziell ===== | ||
+ | * Fysetc \\ https:// | ||
+ | * BTT \\ https:// | ||
+ | * Mellow 3D \\ https:// | ||
+ | * Provok3d Nozzle Adxl (STM32 !) \\ https:// | ||
+ | * Fly3d Drucker CNC V6 Düsen Halter \\ https:// | ||
+ | |||
+ | |||
+ | ===== DIY ===== | ||
+ | * RP2040 + ADXL Sensor | ||
+ | * https:// | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Kabel ==== | ||
+ | * mit kurzen Kabeln (~ 20cm) initial testen um Verbindungsprobleme zu vermeiden | ||
+ | * Im nächsten Schritt dann mit längeren Kabeln testen. | ||
+ | * Die Kabel sollten mindestens gedrillt sein. | ||
+ | * Einige nutzen auch geschirmtes CAT 6a Kabel | ||
+ | * Grundsätzlich sollte das Kabel so kurz wie eben möglich sein, um Verluste und Störungen gering zu halten. | ||
+ | ==== Spannungsregler ==== | ||
+ | * Der ADXL345 Chip braucht für den Betrieb 3,3V. Er ist nicht 5V kompatibel! | ||
+ | * Durch den Spannungsregler (meist ein IC mit 5 Pins) kann das Board mit 5V versorgt werden. Der ADXL wird dann mit den 3,3V des Spannungsreglers betrieben. | ||
+ | * :!: Boards ohne Spannungsregler dürfen nicht mit 5V betrieben werden, da sonst der ADXL zerstört wird. | ||
+ | * Boards mit Spannungsregler funktionieren in der Regel auch, wenn sie mit 3,3V an VCC betrieben werden. Am ADXL liegen dann eher 2,8-3,0V an, was aber kein Problem darstellt. | ||
+ | * **Faustregel** Boards immer erst mit 3,3V testen! | ||
+ | ==== Level Shifter ==== | ||
+ | * Der ADXL ist so designed das er normalerweise mit 3,3V Signalen arbeitet. | ||
+ | * Auch die STM32, RP2040, Raspberry Pi, ... arbeiten im Normalfall mit diesen Spannungen. | ||
+ | * Es gibt aber Controller wie mit 5,0 oder gar geringeren Spannungen wie 1,8V arbeiten. Und hier kommen dann Levelshifter zum Einsatz, die ein Signal in beide Richtungen umformen können. | ||
+ | * Im Bereich des 3D Druck sind ADXL Boards mit Level Shifter in der Regel unnötig. Sollte man doch ein Board mit Levelshifter haben, sollten beide Spannungsversorgungen mit 3,3V belegt werden. | ||
+ | * :!: Wird ein Levelshifter mit 5V betrieben kann dies einen Controller zerstören, der nur mit 3,3V arbeitet! | ||
+ | * Levelshifter sind in der Regel zu erkennen an zwei kleinen 3 Pin Mosfets nahe den Signalleitungen. | ||
+ | |||
+ | |||
+ | ==== I2C ==== | ||
+ | * Einige ADXL Boards werden mit I2C anstatt SPI ausgeliefert. I2C ist aber (ohne 400kbit/s fast mode) zu langsam um die 3200 Samples/s für die Resonanz Messung zu liefern. | ||
+ | * Diese Boards verfügen oft über zusätzliche Pullup Widerstände an den Signalleitungen (SDA, SCL). Es ist möglich die Boards umzulöten. (Siehe Klipper Github Issue #3637) \\ {{: | ||
+ | * Grundsätzlich sollte man aber darauf achten eine SPI Version zu kaufen. | ||
+ | ==== Sensoren Beispiele ==== | ||
+ | * **Kein** Spannungsregler, | ||
+ | * Spannungsregler, | ||
+ | * Spannungsregler, | ||
+ | |||
+ | ===== Klipper flashen ===== | ||
+ | * '' | ||
+ | * '' | ||
+ | [*] Enable extra low-level configuration options | ||
+ | Micro-controller Architecture (Raspberry Pi RP2040) | ||
+ | Bootloader offset (No bootloader) | ||
+ | Flash chip (W25Q080 with CLKDIV 2) ---> | ||
+ | Communication interface (USB) ---> | ||
+ | USB ids ---> | ||
+ | () GPIO pins to set at micro-controller startup | ||
+ | </ | ||
+ | * Mit '' | ||
+ | * '' | ||
+ | * Die Boot Taste **gedrückt halten (!)** und den USB-C Stecker anschließen. | ||
+ | * Meistens haben die Boards eh nur eine Taste. Sollten es zwei Tasten sein, muss man schauen was Boot und was Reset ist. | ||
+ | * '' | ||
+ | [126509.688730] usb 1-1.4: New USB device found, idVendor=2e8a, | ||
+ | [126509.688767] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 | ||
+ | [126509.688783] usb 1-1.4: Product: RP2 Boot | ||
+ | [126509.688795] usb 1-1.4: Manufacturer: | ||
+ | [126509.688807] usb 1-1.4: SerialNumber: | ||
+ | [126509.689785] usb-storage 1-1.4:1.0: USB Mass Storage device detected | ||
+ | [126509.690375] scsi host0: usb-storage 1-1.4:1.0 | ||
+ | [126510.727183] scsi 0:0:0:0: Direct-Access | ||
+ | [126510.727877] sd 0:0:0:0: Attached scsi generic sg0 type 0 | ||
+ | [126510.728901] sd 0:0:0:0: [sda] 262144 512-byte logical blocks: (134 MB/128 MiB) | ||
+ | [126510.729746] sd 0:0:0:0: [sda] Write Protect is off | ||
+ | [126510.729766] sd 0:0:0:0: [sda] Mode Sense: 03 00 00 00 | ||
+ | [126510.730619] sd 0:0:0:0: [sda] No Caching mode page found | ||
+ | [126510.730636] sd 0:0:0:0: [sda] Assuming drive cache: write through | ||
+ | [126510.744971] | ||
+ | [126510.746027] sd 0:0:0:0: [sda] Attached SCSI removable disk | ||
+ | </ | ||
+ | * :!: Wird kein Board gefunden, dann kann der Speichertyp (Flash Chip) falsch sein. In dem Fall welchseln auf GENERIC: \\ < | ||
+ | ( ) W25Q080 with CLKDIV 2 | ||
+ | (X) GENERIC_03H with CLKDIV 4 | ||
+ | </ | ||
+ | * Das Board mit Klipper flashen \\ '' | ||
+ | * Das Board sollte sich dann schon mit Klipper melden ... \\ '' | ||
+ | / | ||
+ | / | ||
+ | lrwxrwxrwx 1 root root 13 Jan 22 20:26 usb-Klipper_rp2040_E66138935F3C6B28-if00 -> ../ | ||
+ | / | ||
+ | lrwxrwxrwx 1 root root 13 Jan 22 20:26 platform-3f980000.usb-usb-0: | ||
+ | * Wenn nicht einfach mal USB raus und wieder rein und fertig ;-) | ||
+ | |||
+ | ===== kurzer Test ===== | ||
+ | Ob das Board korrekt mit Klipper läuft, lässt sich mit folgendem Befehl schnell testen: \\ '' | ||
+ | |||
+ | Der Pfad am Ende muss natürlich mit dem übereinstimmen was ihr im vorherigen Schritt ermittelt habt! | ||
+ | |||
+ | Wenn ihr ein ''< | ||
+ | |||
+ | ===== RP2040 SPI Ports ===== | ||
+ | {{: | ||
+ | ==== Hardware SPI ==== | ||
+ | |||
+ | Der RP2040 verfügt theoretisch über 7 nutzbare SPI Ports. Dafür sind aber meistens nicht alle Pins rausgeführt, | ||
+ | spi0d und spi1c sind nur eingeschränkt verfügbar / nutzbar! | ||
+ | |||
+ | ^ SPI Bus ^ CS ^ SDO (MISO) | ||
+ | ^ RPi Pico pin Name | CSn | SPI RX | SPI TX | SPI SCK | ||
+ | ^ spi0a | <color # | ||
+ | ^ spi0b | gpio5 | gpio4 | gpio7 | gpio6 | <color # | ||
+ | ^ spi0c | gpio17 | ||
+ | ^ spi0d | <color # | ||
+ | ^ spi1a | gpio9 | gpio8 | gpio11 | ||
+ | ^ spi1b | gpio13 | ||
+ | ^ spi1c | <color # | ||
+ | ==== Software SPI ==== | ||
+ | ^ SPI Bus ^ CS ^ SDO (MISO) | ||
+ | ^ Fysetc Portable Input Shaper | ||
+ | ^ BTT ADXL345 V2.0 | gpio9 | gpio8 | gpio11 | ||
+ | ^ BTT LIS2DW V1.0 | gpio9 | gpio8 | gpio11 | ||
+ | ^ BTT EBB SB2209 | ||
+ | ^ Mellow Fly-ADXL345-USB | ||
+ | |||
+ | > **Hinweis** \\ Wenn Software SPI verwendet wird, können beliebige gpio Pins verwendet werden! \\ Bei den Kaufversionen sind die Pins allerdings fest vorgegeben! | ||
+ | ===== Konfiguration ===== | ||
+ | * Eigene Konfigurations-Datei für den ADXL anlegen \\ <code | adxl345.cfg> | ||
+ | [mcu RP2040] | ||
+ | serial | ||
+ | baud : 250000 | ||
+ | restart_method : command | ||
+ | |||
+ | [resonance_tester] | ||
+ | accel_chip | ||
+ | probe_points | ||
+ | |||
+ | [adxl345] | ||
+ | # [lis2dw] | ||
+ | axes_map | ||
+ | # axes_map | ||
+ | # axes_map | ||
+ | # axes_map | ||
+ | |||
+ | cs_pin | ||
+ | # Hardware SPI Bus | ||
+ | spi_bus | ||
+ | |||
+ | # Software SPI Bus | ||
+ | # spi_software_sclk_pin: | ||
+ | # spi_software_mosi_pin: | ||
+ | # spi_software_miso_pin: | ||
+ | </ | ||
+ | * folgende Anpassungen sind nötig: | ||
+ | * seriellen Port eintragen | ||
+ | * Den Chip Typ '' | ||
+ | * Die Bettmitte bei '' | ||
+ | * Evtl. die '' | ||
+ | * Den Bus korrekt konfigurieren mit '' | ||
+ | |||
+ | |||
+ | ===== Dual ADXL ===== | ||
+ | Es ist möglich, mehrere ADXL an einem Controller zu betreiben, z.B. für Drucker mit beweglichem Bett. In dem Fall werden die Achsen über unterschiedliche ADXL vermessen. \\ https:// | ||
+ | |||
+ | Eine Konfiguration dafür könnte so aussehen \\ <code > | ||
+ | [mcu RP2040] | ||
+ | serial | ||
+ | baud : 115200 | ||
+ | restart_method : command | ||
+ | |||
+ | [resonance_tester] | ||
+ | accel_chip_x | ||
+ | accel_chip_y | ||
+ | probe_points | ||
+ | |||
+ | [adxl345 hotend] | ||
+ | cs_pin | ||
+ | spi_bus | ||
+ | |||
+ | [adxl345 bed] | ||
+ | cs_pin | ||
+ | spi_bus | ||
+ | </ | ||
+ | ===== Test ===== | ||
+ | * in der MainSail Konsole mittels \\ '' | ||
+ | * Sollte der Test folgenden Fehler bringen ist die Verkabelung oder die Konfiguration falsch! \\ '' | ||
+ | |||
+ | ===== Auswertung ===== | ||
+ | https:// | ||
+ | |||
+ | |||
+ | ===== Einbauposition ===== | ||
+ | Grundsätzlich sollte der ADXL345 so nah wie möglich an der Nozzle platziert werden. Am besten direkt an der Nozzle montiert ... | ||
+ | |||
+ | ===== Links ===== | ||
+ | * Klipper Dokumentation \\ https:// | ||
+ | * Klipper with ADXL345 + Raspberry Pi clone (RP2040 zero) \\ https:// | ||
+ | * Connect your ADXL345 to your host Raspberry Pi via a RP2040-Zero \\ https:// | ||
+ | * ADXL Nozzle Mount \\ https:// | ||
+ | * Fysetc Input Shaper \\ https:// | ||
+ | * Discourse \\ https:// | ||
+ | * Beschleunigungssensor ADXL345 hinzufügen \\ https:// | ||
+ | * Vergleich der Position \\ https:// | ||