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.
Abbildung 1. Telefonbewegung im Prüfstand für test_sensor_fusion
Abbildung 2. Telefonbewegung im Prüfstand für test_video_stabilization
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.
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 |
| |
März 2022 | 1 |
|
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.
Abbildung 5. Benutzerdefinierte Routing-Abschirmung (Draufsicht)
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.
Abbildung 7. Beleuchtung und 12-V-Stromversorgung, angeschlossen an den Android 13-Controller
Je nach Fassgröße der Beleuchtungsleistung ggf. Adapter verwenden.
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.
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.
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.
Abbildung 11. Rev. 2 Arduino-Controller
Abbildung 12. Cana-Kit-Controller
Andere Ressourcen
Downloads von mechanischen Zeichnungen
- Produktionsdateien des CameraITS-Controllergehäuses
- CameraITS-Controller-Shield-Gerber-Datei (Rev. 2.2)
Software-Steuerungs-Downloads
- Arduino-Mikrocode für Android 11 und höher
VarSpeedServo_and_lighting_control.ino
- Python-Steuerungstestcode
rotator.py