Teensy 3.6 Prozessor-Upgrade

Erweiterungen & Modifikationen am c't-Bot inkl. Schaltplanänderungen
Antworten
eax
Friends of Robby
Friends of Robby
Beiträge: 766
Registriert: 18 Jan 2006, 16:16
Wohnort: Karlsruhe

Teensy 3.6 Prozessor-Upgrade

Beitrag von eax » 03 Feb 2019, 02:03

Nachdem das Thema hier schon kurz aufkam, möchte ich euch einen kleinen Überblick geben, wie man einen originalen ct-Bot mit einem Teensy 3.6 Prozessor (anstatt des ATmega) aufrüsten kann. Dazu ist ein kleines Adapter-Board entstanden, dessen Schaltplan hier zu finden ist.


Hinweise
  • Das Adapterboard ist zum Testen und Basteln für eine mögliche Version 2 des ct-Bots entstanden (siehe auch hier), daher enthält es einige rein optionale Features.
  • Zusätzlich zum Prozessor-Upgrade ersetzt es auch den Motortreiber L293D (IC2) des originalen ct-Bots durch einen DRV8835 Motortreiber, der eine deutlich bessere Motorregelung und somit ein deutlich feingranulareres Fahrverhalten ermöglicht.
  • Auf der Hauptplatine des ct-Bots werden IC1 (ATmega) und IC2 (L293D) aus den Sockeln entfernt.
  • Die im Schaltplan des Adapterboards vermerkten IC2 und IC5 stellen nur das Pinout von ATmega und L293D dar, hier werden auf der Unterseite des Adapterboards nur Buchsenleisten eingelötet, die dann auf Stiftverbinder kommen, die in die IC-Sockeln auf der Hauptplatine gesteckt werden (siehe Fotos).
  • Mögliche Bezugsquellen in Deutschland: Teensy 3.6, DRV8835
  • Auf der Hauptplatine des Bots darf es keine Pullup-Widerstände gegen 5V geben für Signale, die an das Teensy 3.6 gehen. Beim Erweiterungsmodul ist das für das Servo-PWM-Signal der Fall, auf der Hauptplatine eigentlich nicht, außer man hat selbst etwas ergänzt.
  • Wenn man das Adapter-Board mit 5V vom Bot versorgt (so ist es gedacht), wird das Teensy-Board über VIN mit versorgt. Verwendet man den USB-Anschluss des Teensy-Boards, solange es auf dem Adapter-Board eingesteckt ist (alles andere wäre umständlich), muss die Verbindung von VUSB und VIN auf dem Teensy-Board unterbrochen werden. Dafür ist auf der Rückseite extra eine Leiterbahn vorgesehen, die zwischen den beiden Pads aufgetrennt werden kann.
  • Es kann auch ein Teensy 3.5 verwendet werden.
  • Alle Design-Dateien zum Adapterboard sind hier zu finden.

Hardware

Optionale Komponenten des Adapterboards:
  • Audio-Verstärker auf Basis eines TPA3106D1:
    • U4
    • J14, J15, J16, J17
    • R29, R30
    • C3, C4, C5, C6, C7, C8, C9, C10, C11
  • Teensy-Reset-Schaltung:
    • IC3
  • Batterie-Überwachung:
    • D1
    • R26, R27, R28
  • SWD-Debugger Anschluss:
    • J13, J31, J32
  • I2C-Level-Shifter auf 5V:
    • J2
    • U2, U3
    • R1, R2, R3, R4
  • Maus-Sensor Level-Shifter auf 5V:
    • U1
    • R24, R25
  • Erweiterungs-Pins:
    • J7 (UART 5 - 3.3V)
    • J8 (SPI 0 - 3.3V)
    • J3 (SPI 1 - 3.3V, Reset, Batteriespannung)
    • J2 (I2C 0 - 5V)
    • J5 (I2C 3 - 3.3V)
    • J6, J12 (PWM)
    • J4 (Analog I/O)
    • J9 (BPS Sensoranschluss)
Aus Test- und Experimentiergründen sind einige Verbindungen nicht direkt ausgeführt, sondern über Jumper zu konfigurieren:
  • J1: per Jumper Pin 1 und Pin 2 verbinden, falls originale Beschaltung des Radencoder links (RADL liegt auf Pin 5 / PB4 des ATmega). Ansonsten Pin 2 und Pin 3 verbinden (RADL liegt auf Pin 27 / PC5 des ATmega).
  • J10: per Jumper Pin 1 und Pin 2 verbinden
  • J11: per Jumper Pin 1 und Pin 2 verbinden

Software

Im Repository ctbot-teensy auf GitHub gibt es eine (derzeit noch sehr rudimentäre) Software, um den ct-Bot mit einem Teensy-Board steuern zu können. Details hierzu folgen noch, für einen ersten Start hilft (hoffentlich) die Readme-Datei.

Errata

SPI:
  • Die Signalnamen und Beschriftungen für SPI beziehen sich alle auf eine Verwendung der SPI-Schnittstelle als Master. Möchte man eine der SPI-Schittstellen als Slave betreiben (z.B. zur Kommunikation mit einem Raspberry Pi), ist zu beachten, dass MOSI und MISO vertauscht sind.
  • Als CS-Signal können nicht die mit "CS" bezeichneten Pins genutzt werden, sondern nur die, die im K66 Sub-Family Reference Manual als SPIn_PCS0 angegeben sind. Getestet habe ich bisher nur Pin 2 als CS/SS.
  • Die Bezeichnungen sind (für SPI als Slave) leider auch auf https://www.pjrc.com/teensy/pinout.html falsch (daher hatte ich sie...) bzw. sie sind nur für SPI im Master-Mode korrekt. NXP nennt die Signal SPIn_SOUT (für serial out) und SPIn_SIN (serial in).

Bilder
Dateianhänge
teensy_apdapter_board_1.jpg
aufgebautes Adapterboard mit Teensy 3.6
teensy_apdapter_board_2.jpg
Rückseite des Adapterboards mit Verbindungsstiftleisten
teensy_apdapter_board_3.jpg
Adapterboard auf ct-Bot

eax
Friends of Robby
Friends of Robby
Beiträge: 766
Registriert: 18 Jan 2006, 16:16
Wohnort: Karlsruhe

Re: Teensy 3.6 Prozessor-Upgrade

Beitrag von eax » 11 Apr 2019, 00:00

Edit: Hinweis zur 5V-Versorgung des Teensy-Boards ergänzt.

eax
Friends of Robby
Friends of Robby
Beiträge: 766
Registriert: 18 Jan 2006, 16:16
Wohnort: Karlsruhe

Re: Teensy 3.6 Prozessor-Upgrade

Beitrag von eax » 19 Apr 2019, 19:02

Edit: Errata ergänzt und Eintrag für SPI erstellt.

eax
Friends of Robby
Friends of Robby
Beiträge: 766
Registriert: 18 Jan 2006, 16:16
Wohnort: Karlsruhe

Re: Teensy 3.6 Prozessor-Upgrade

Beitrag von eax » 30 Jun 2019, 17:40

Ein kleines Update zur Software für das Teensy-Upgrade: Im master-Branch befindet sich inzwischen eine Version, die auf einem RTOS (FreeRTOS) aufsetzt. Der Hauptgrund hierfür ist, dass dies die Integration von weitergehenden Features wie z.B. Audioausgabe und Sprachsynthese deutlich vereinfacht hat. Ebenso die Integration der Bot-Verhalten, die allerdings noch sehr am Anfang steht (Branch behavior_test). Außerdem ermöglicht es eine simulative Ausführung auf einem PC in Verbindung mit ct-Sim.

Der alte, einfachere Code, der ohne OS auskommt (und dem daher die genannten Features fehlen), ist weiterhin verfügbar im Branch bare_metal.

Antworten