Android 13-Controller

Auf dieser Seite wird beschrieben, wie der Android 13-Controller zusammengebaut wird, der die Bewegung für einen Sensorfusionsprüfstand und die Beleuchtung für ITS-in-a-Box steuert. Der Sensorfusionstest ist Teil der Camera Image Test Suite (Camera ITS) in der Compatibility Test Suite (CTS). Der Android 13-Controller wurde entwickelt, um die Montage zu vereinfachen und die Kosten im Vergleich zu früheren Controller-Versionen zu senken. Weitere Vorteile sind die Trennung der Stromversorgung zwischen Elektronik und Servos sowie die Steuerung von bis zu drei Servos und drei Lichtern über einen einzigen Controller.

Übersicht über den Android 13-Controller

Servo- und Lichtsteuerung in Prüfständen

Der Sensorfusionsprüfstand sorgt für eine feste Bewegung des Telefons für reproduzierbare Tests. Das Telefon wird vor einem Schachbrettziel gedreht, um eine Bildaufnahme mit dem Telefon an verschiedenen Positionen zu ermöglichen. Bei test_sensor_fusion dreht der Servo das Telefon in etwa 2 Sekunden um 90 Grad um die Mitte der Kameraachse und zurück. Für test_video_stabilization dreht der Servo das Telefon wiederholt um 10 Grad um die Kameraachse und zurück, um die Bewegung des Telefons nachzuahmen, wenn beim Gehen ein Video aufgenommen wird. Abbildung 1 zeigt zwei Telefone, die sich in einem Sensorfusionsteststand bewegen. Abbildung 2 zeigt ein Telefon, das sich in einem Sensorfusionsteststand bewegt.

ITS-in-a-box bietet eine konsistente Testumgebung mit festem Abstand zwischen Test-Tablet und Testtelefon sowie eine gleichmäßige Beleuchtung ohne externe Lichtquelle. Für test_auto_flash ist eine dunkle Umgebung mit ausgeschaltetem Licht erforderlich, um die automatische Blitzfunktion auf Testtelefonen auszulösen. Abbildung 3 zeigt, wie die Lichter in ITS-in-a-box durch den Android 13-Controller ein- und ausgeschaltet werden.

Telefonbewegung im Prüfstand

Abbildung 1. Telefonbewegung im Prüfstand für test_sensor_fusion

Telefonbewegung im Prüfstand

Abbildung 2. Telefonbewegung im Prüfstand für test_video_stabilization

Lichtsteuerung innerhalb von ITS-in-a-box

Abbildung 3. Ein- und Ausschalten der Lichter für test_auto_flash

Servomotorsteuerung

Bei den analogen Servomotoren im Prüfstand handelt es sich um Positionsservos, die mittels Pulsweitenmodulation (PWM) gesteuert werden. Ein typisches Beispiel für eine Positionssteuerung ist in Abbildung 3 dargestellt. Das Steuersignal hat eine Periode von 20 ms. Wenn Sie die Impulsbreite auf die minimale Breite ändern, bewegt sich der Motor in die neutrale Position, und wenn Sie die Impulsbreite auf die maximale Breite ändern, wird der Motor um 180 Grad im Uhrzeigersinn bewegt.

Beschreibung der Servosteuerung

Abbildung 4. Typische Beschreibung der Servosteuerung

Videoanleitung

Dies ist ein Video-Tutorial zum Einrichten des Android 13-Controllers.

Revisionshistorie

Die folgende Tabelle beschreibt den Revisionsverlauf des Camera ITS WFoV-Rigs und enthält Download-Links zu jeder Version der Produktionsdateien.

Datum Revision Download der Produktionsdatei Änderungsprotokoll
Dezember 2022 1.1
  • Option hinzugefügt, um bestückte Leiterplatten bei EasyEDA zu bestellen
  • Störende Verzögerungen nach Servobewegungen im Arduino-Mikrocode wurden entfernt
  • Abstandshalter von Metall auf Nylon geändert
  • Durchgangsloch-MOSFETS durch oberflächenmontierte MOSFETS ersetzt
  • Kondensator von 10 uF auf 1000 uF geändert
März 2022 1
  • Lichtsteuerungsfunktion hinzugefügt.
  • Von 6 Servosteuerungen auf 3 Beleuchtungs- und 3 Servosteuerungen umgestellt

Implementierung des Android 13-Controllers

Um die Bewegung und Beleuchtung des Servomotors über einen Host-Computer zu steuern, benötigt der Sensorfusionsprüfstand eine USB-Verbindung. Der Android 13-Controller verwendet eine über USB angeschlossene Arduino UNO R3-Karte mit einer darauf montierten benutzerdefinierten Routing-Karte (oder Abschirmung ). Die zweischichtige Abschirmung wurde mit einem Open-Source-Online-PCB-Designtool entworfen und ist unter https://oshwlab.com/leslieshaw1023/cameraits_arduino_shield_populated verfügbar. Die Ansichten von oben und unten des benutzerdefinierten Routing-Schutzschilds sind in den Abbildungen 5 und 6 dargestellt.

Benutzerdefinierte Routing-Abschirmung von oben

Abbildung 5. Benutzerdefinierte Routing-Abschirmung (Draufsicht)

Benutzerdefinierte Routing-Abschirmung von oben

Abbildung 6. Benutzerdefinierte Routing-Abschirmung (Ansicht von unten)

Der Android 13-Controller kann bis zu drei Sensor-Fusion-Rigs und drei ITS-in-a-Box von einem einzigen Host-Computer aus steuern. Die Draufsicht zeigt die Siebdruck-Umrisse für die Montage der drei 3-poligen Motoranschlüsse entlang der Mittelachse und drei LED-Stromanschlüsse. Die Unteransicht zeigt die Siebdruck-Umrisse für die 4- und 8-Pin-Header-Anschlüsse, die für die Verbindung mit dem UNO erforderlich sind, eine 5-V-Strombuchse und einen 10-uF-Bypass-Kondensator.

Um die Servo- und Beleuchtungsströme zu isolieren, erfolgt die Stromversorgung der Servos über die externe 5-V-Buchse. Die UNO-Elektronik wird separat über den USB-Anschluss mit Strom versorgt und es gibt keine gemeinsame Stromversorgung zwischen den beiden Platinen. Beachten Sie, dass der vorhandene externe Stromanschluss am UNO ungenutzt ist und im Gehäusedesign abgedeckt ist, um Verwirrung beim Anschließen der Stromversorgung an den Controller zu vermeiden.

Beleuchtungsstrom und 12-V-Ladegerät mit Android 13-Controller verbunden

Abbildung 7. Beleuchtung und 12-V-Stromversorgung, angeschlossen an den Android 13-Controller

Je nach Fassgröße der Beleuchtungsleistung ggf. Adapter verwenden.

3,5 mm x 1,35 mm Stecker auf 5,5 mm x 2,1 mm Buchse, Konverter

Abbildung 8. Adapter, der die Stromversorgung der Beleuchtung mit dem Controller verbindet

Zusammenbau des Android 13-Controllers

Stückliste (BOM)

Menge Beschreibung PN/Link
1 1,6 mm dickes CameraITS Arduino-Schild https://oshwlab.com/leslieshaw1023/cameraits_arduino_shield_populated
1 Arduino UNO R3 https://store.arduino.cc/usa/arduino-uno-rev3
6 2,1 x 5,5 mm, 5-V-Durchgangsbuchse, rechtwinkliger Hohlstecker 101179
2 35 V, 10 %, 10 uF Tantalkondensatoren 2290863
2 50 V, 5 %, 100 pF Keramik-1206-Montagekondensatoren 12065A101JAT2A
3 1 kΩ, oberflächenmontierbarer Widerstand CRCW08051K00FKEAC
3 Leistungs-MOSFET RFP30N06LE
3 1x3x, 100 mil (2,54 mm) Raster, durchsteckbare Stiftleiste 732-5316-ND
1 1x8x, 100 mil (2,54 mm) Raster, durchsteckbare Stiftleiste 732-5321-ND
1 1x4x, 100 mil (2,54 mm) Raster, durchsteckbare Stiftleiste 732-5317-ND
3 11-mm-Innengewinde-Nylon-Abstandshalter (5 mm Breite, M3-0,5-Gewinde) 92319a317
4 6 mm männliche/weibliche Nylon-Abstandsbolzen (5 mm Breite, M3-0,5-Gewinde) 95783a004
3 M3-0,5 6 mm Linsenkopf-Nylonschrauben 92492A716
4 M3-0,5 8 mm Flachkopf-Maschinenschrauben XM2510008A20000
2 M3-0,5 6 mm Flachkopf-Maschinenschrauben XM2510006A20000
6 Nr. 4, 1/2 Zoll Rundkopf-Blechschrauben 90925A110
1 5 V, 15 W UL-gelistetes Netzteil, 2,1x5,5 mm Stecker (Motoren) KSAS0180500300VU-VI
1 12 V, 60 W UL-gelistetes Netzteil, 2,1 x 5,5 mm Stecker (Leuchten) GSM60A12-P1J

Weitere Werkzeuge erforderlich

  • Lötkolben, Lötzinn, Lötzinnsauger
  • Kleiner Kreuzschlitzschraubendreher
  • Torx-Schraubendreher der Größe T10

Bestückung des Routing-Boards

Füllen Sie die Ober- und Unterseite des Routing-Boards mit den Teilen aus, die in ihre Umrisse passen. Auf der Unterseite der Platine können die Stiftleisten ausgerichtet werden, indem die Stiftleisten an den richtigen Stellen auf der Arduino-Platine platziert werden und die Routing-Platine oben auf den Anschlüssen platziert wird. Anschließend können die 1x8- und 1x4-Stiftleisten festgelötet werden, was eine gute Ausrichtung zwischen dem Arduino und dem Routing-Board gewährleistet. Das Gleiche kann auch für die Strombuchse gemacht werden, für eine feste Montage ist jedoch eine Unterlegscheibe erforderlich, da die Strombuchse nach der Montage nicht auf dem Arduino aufliegt. Nach dem Löten des Bypass-Kondensators kann die Oberseite der Platine mit den sechs 1x3-Stiftleisten zur Motorsteuerung bestückt werden. Beachten Sie, dass der Header so ausgerichtet sein sollte, dass die Unterseite des Schnappsteckers in Richtung der Motoren zeigt, um maximalen Platz für die Motorhalterung zu schaffen.

Wenn alle Komponenten fest verlötet sind, kann das System mithilfe der Abstandshalter und Schrauben zusammengebaut werden. Es gibt vier 6-mm-Abstandshalter zwischen Stecker und Buchse, um für mechanische Stabilität zwischen dem Arduino und der Unterseite des Kunststoffgehäuses zu sorgen. Es gibt jedoch nur drei 11-mm-Buchsen-Buchsen-Abstandshalter zwischen dem Arduino und der benutzerdefinierten Abschirmung, da ein Loch am Arduino (das in der Nähe des SCL-Pins) aufgrund seiner Nähe zur Buchsenleiste des Arduino unbrauchbar ist. Schrauben Sie die drei Abstandshalter zwischen Buchse und Buchse auf die Abstandshalter zwischen Stecker und Buchse, um die Abstandshalter am Arduino zu befestigen. Befestigen Sie dann die Routing-Board-Abschirmung mit den drei M3-Schrauben an den Abstandshaltern. Abbildung 9 zeigt ein Schema des Arduino-Shields.

Schematische Darstellung des Arduino-Schildes

Abbildung 9. Schematische Darstellung des Arduino-Schildes

Controller-Gehäuse

Der Controller enthält ein kundenspezifisches Gehäuse. Der zusammengebaute Controller wird mit vier Senkschrauben durch die Bodenplatte des Gehäuses am Gehäuse befestigt. Montieren Sie das Gehäuse mit sechs Rundkopf- und zwei Flachkopf-Montageschrauben. Relevante Informationen wie Servo und externe 5-V-Versorgung sind in die Kunststoffoberseite eingeätzt. Abbildung 10 zeigt ein Bild des Controllers im zusammengebauten Gehäuse.

Zusammengebautes System im Gehäuse

Abbildung 10. Bestückte Abschirmung und zusammengebautes System im Gehäuse

Softwaresteuerung vom Host

Mikrocode kann auf das UNO heruntergeladen werden, um die PWM-Pins den Motorsignalen zuzuweisen und die Impulsbreitenbereiche für verschiedene Winkel zu definieren. Der Mikrocode für die Servorotationssteuerung der sechs HS-755MB-Motoren ist in „Andere Ressourcen“ enthalten. Dieser Abschnitt enthält auch einen Link zu einem einfachen Programm namens rotator.py , das die Servos dreht.

Verwendung des Android 13-Controllers

Kamera-ITS-Nutzung:

python tools/run_all_tests.py device=device_id camera=0 rot_rig=arduino:1 scenes=sensor_fusion

Mit enthaltenem Testskript:

python rotator.py --ch 1 --dir ON --debug

Bisherige Controller und Kompatibilität

Der Rev. 2-Controller und der Rev. 1-Controller (dargestellt in Abbildung 11 und 12) sind nicht mit Android 13 kompatibel und unterstützen test_preview_stabilization, test_video_stabilization und test_auto_flash nicht, da sie die für Stabilisierung und Beleuchtung erforderliche Feinbewegung nicht ermöglichen Kontrolle.

Rev. 2 Arduino-Controller

Abbildung 11. Rev. 2 Arduino-Controller

Zusammengebautes System im Gehäuse

Abbildung 12. Cana-Kit-Controller

Andere Ressourcen

Downloads von mechanischen Zeichnungen

Software-Steuerungs-Downloads