Inhaltsverzeichnis:

PIC-Mikrocontroller-basierter Roboterarm - Gunook
PIC-Mikrocontroller-basierter Roboterarm - Gunook

Video: PIC-Mikrocontroller-basierter Roboterarm - Gunook

Video: PIC-Mikrocontroller-basierter Roboterarm - Gunook
Video: Fastest AI Supercomputer To Surpass Human Brain By 5X Size & 10X Speed | AI Powered Exoskeleton 2024, November
Anonim
PIC-Mikrocontroller-basierter Roboterarm
PIC-Mikrocontroller-basierter Roboterarm

Vom Fließband der Automobilindustrie bis hin zu den telechirurgischen Robotern im Weltraum sind Roboterarme überall zu finden. Die Mechanismen dieser Roboter ähneln denen eines Menschen, der für ähnliche Funktionen und erweiterte Fähigkeiten programmiert werden kann. Sie können verwendet werden, um wiederholte Aktionen schneller und genauer als Menschen auszuführen, oder können in rauen Umgebungen verwendet werden, ohne dass Menschenleben riskiert werden. Wir haben bereits mit Arduino einen Aufnahme- und Wiedergabe-Roboterarm gebaut, der für eine bestimmte Aufgabe trainiert und für immer wiederholt werden könnte.

In diesem Tutorial verwenden wir den Industriestandard PIC16F877A 8-Bit-Mikrocontroller, um denselben Roboterarm mit Potentiometern zu steuern. Die Herausforderung bei diesem Projekt besteht darin, dass PIC16F877A nur zwei PWM-fähige Pins hat, aber wir für unseren Roboter etwa 5 Servomotoren steuern müssen, die 5 einzelne PWM-Pins benötigen. Wir müssen also die GPIO-Pins verwenden und mit den Timer-Interrupts PWM-Signale auf PIC-GPIO-Pins generieren. Jetzt könnten wir natürlich auf einen besseren Mikrocontroller aufrüsten oder einen Demultiplexer-IC verwenden, um die Dinge hier viel einfacher zu machen. Trotzdem lohnt es sich, dieses Projekt für die Lernerfahrung auszuprobieren.

Die mechanische Struktur des Roboterarms, den ich in diesem Projekt verwende, wurde für mein vorheriges Projekt vollständig in 3D gedruckt. Hier finden Sie die vollständigen Designdateien und das Montageverfahren. Wenn Sie keinen 3D-Drucker haben, können Sie alternativ auch einen einfachen Roboterarm aus Karton bauen, wie im Link gezeigt. Angenommen, Sie haben Ihren Roboterarm irgendwie in den Griff bekommen, können Sie mit dem Projekt fortfahren.

Schritt 1: Schaltplan

Schaltplan
Schaltplan

Das vollständige Schaltbild für diesen PIC-Mikrocontroller-basierten Roboterarm ist unten dargestellt. Der Schaltplan wurde mit EasyEDA erstellt.

Der Schaltplan ist ziemlich einfach; Das gesamte Projekt wird über den 12V-Adapter mit Strom versorgt. Diese 12V werden dann mit zwei 7805-Spannungsreglern in +5V umgewandelt. Einer ist mit +5V und der andere mit +5V(2) gekennzeichnet. Der Grund für die Verwendung von zwei Reglern ist, dass das Servo beim Drehen viel Strom zieht, was zu einem Spannungsabfall führt. Dieser Spannungsabfall zwingt den PIC, sich selbst neu zu starten, daher können wir nicht sowohl den PIC als auch die Servomotoren auf derselben +5V-Schiene betreiben. Der mit +5V gekennzeichnete wird also verwendet, um den PIC-Mikrocontroller, das LCD und die Potentiometer zu versorgen, und ein separater Reglerausgang, der mit +5V (2) gekennzeichnet ist, wird verwendet, um die Servomotoren zu versorgen.

Die fünf Ausgangspins der Potentiometer, die eine variable Spannung von 0V bis 5V liefern, sind mit den analogen Pins An0 bis AN4 des PIC verbunden. Da wir planen, Timer zur Erzeugung von PWM zu verwenden, können die Servomotoren an jeden GPIO-Pin angeschlossen werden. Ich habe Pins von RD2 bis RD6 für die Servomotoren ausgewählt, aber es kann jeder GPIO Ihrer Wahl sein.

Da das Programm viel Debugging erfordert, ist auch ein 16x2-LCD-Display an PortB des PIC angeschlossen. Dadurch wird das Tastverhältnis der gesteuerten Servomotoren angezeigt. Außerdem habe ich Anschlüsse für alle GPIO- und analogen Pins erweitert, falls in Zukunft noch Sensoren angebunden werden müssen. Schließlich habe ich auch den Programmierer-Pin H1 angeschlossen, um den PIC direkt mit pickit3 mit der ICSP-Programmieroption zu programmieren.

Schritt 2: Generieren von PWM-Signalen am GPIO-Pin für die Servomotorsteuerung

"loading="faul">

Empfohlen: