Hallo Mikrocontrollergemeinde, also erstmal nen großes Lob an diese Seite und die Community. So nun aber zu meinem Problem: Für ein Projekt an meiner FH soll ich eine Roboterhand konstruieren und mit Hilfe eines PIC-Mikrocontrollers steuern. Leider habe ich noch nicht so die richtige Erfahrung mit Mikrocontrollern und hoffe nun, dass ihr mir ein bissel helfen könnt. Grundlagen in C Programmierung sind vorhanden und ein bissel Theorie zu Mikrocontrollern auch. Bei dem Projekt sollen 5 Finger mit jeweils einem Servomotor individuell bewegt werden können. Zusätzlich sollen eventuell noch ein paar Sensoren und ein LCD Display implementiert werden. Als µC würde ich gerne den PIC 16F877A nehmen und als Motortreiber eine vorgefertigte Platine von Cytron (Servo Controller). Meine Fragen: 1. Ich habe gelesen, dass man die Servomotoren per PWM ansteuern muss. Reichen nun die 2 PWM Kanäle des PIC 16F877A aus um 5 Servos zu steuern? Oder muss ich doch noch auf einen anderen µC umsteigen? 2. Mit welcher Frequenz müssen die Servos angesteuert werden? In dem Datenblatt steht etwas von 40 Hz, ist dies überhaupt mit der PWM möglich oder muss ich da Softwaretechnisch noch ne Verzögerung programmieren? Laut des Datenblattes des PICs ist mit einem Systemtakt von 20 MHz nur eine Frequenz von ca. 1,5 kHz einstellbar. Stimmt das oder ist es ein komplett falscher Ansatz. 3. Wenn ich diesen PIC benutze, welche Bauteile benötige ich ansonsten noch? Im Anhang befindet sich das Manual zu dem Servo Controller, darin ist ein Vorschlag zur Ansteuerung mit einem µC gegeben. Ist die Annahme richtig, dass ich dafür also nur noch eine Platine mit einem Festspannungsregler und dem PIC entwerfen müsste und die Steuerung dann über die UART Schnittstelle des PICs laufen würde? Ich hoffe, ihr findet ein bissel Zeit mir zu helfen. Danke schon mal und bis denn. Beste Grüße, Kolja.
> Meine Fragen: > > 1. Ich habe gelesen, dass man die Servomotoren per PWM ansteuern muss. > Reichen nun die 2 PWM Kanäle des PIC 16F877A aus um 5 Servos zu steuern? Falls du einen eigenen Controller machen willst: Je nachdem welche Servos du nutzen willst. Wenn es solche wie vom SC16A_User_s_Manual.pdf sind dann ja.. da du Normale IO pins verwenden kannst. Falls du den Controller mit PIC nutzen willst dann geht das natürlich auch. > Oder muss ich doch noch auf einen anderen µC umsteigen? > 2. Mit welcher Frequenz müssen die Servos angesteuert werden? In dem > Datenblatt steht etwas von 40 Hz, ist dies überhaupt mit der PWM möglich > oder muss ich da Softwaretechnisch noch ne Verzögerung programmieren? > Laut des Datenblattes des PICs ist mit einem Systemtakt von 20 MHz nur > eine Frequenz von ca. 1,5 kHz einstellbar. Stimmt das oder ist es ein > komplett falscher Ansatz. Wie vorher, wenn es die Servos aus dem Datenblatt sind benötigst du nur die IO Pins. Somit wärst du "Frequenz unabhängig" Oder halt über USART den servocontroller steuern... > 3. Wenn ich diesen PIC benutze, welche Bauteile benötige ich ansonsten > noch? Im Anhang befindet sich das Manual zu dem Servo Controller, darin > ist ein Vorschlag zur Ansteuerung mit einem µC gegeben. Ist die Annahme > richtig, dass ich dafür also nur noch eine Platine mit einem > Festspannungsregler und dem PIC entwerfen müsste und die Steuerung dann > über die UART Schnittstelle des PICs laufen würde? Der Servocontroller nutzt doch schon einen DSPIC welchen man über USB vom PC aus steuert, weshalb also noch ein weiterer Controller?? > > Ich hoffe, ihr findet ein bissel Zeit mir zu helfen. Danke schon mal und > bis denn. > > Beste Grüße, > Kolja.
Oh, das ging aber schnell. Besten Dank. Mir ist auch gerade aufgefallen, dass der dsPIC die komplette Ansteuerung der Servos mit PWM usw. übernimmt. Nun hab ich allerdings noch ein Problem, und zwar will ich die Servos ja nicht komplett über USB/ PC steuern lassen, sondern durch einen zusätzlichen µC, wie den PIC 16F877. Der soll dann die Befehle per UART an den Servo Controller schicken. Welche Beschaltung brauche ich denn dann für den 16F877, reicht die im Manual angegebene aus? Im Anhang befindet sich ein Programmbeispiel, vielleicht wird dann deutlich was ich meine.
Les bitte nochmal, hatte nochmal Ediert.. :P Sai Ful schrieb: > Oh, das ging aber schnell. Besten Dank. > Mir ist auch gerade aufgefallen, dass der dsPIC die komplette > Ansteuerung der Servos mit PWM usw. übernimmt. Noe, da gibt es kein PWM, das geht alles über IO-Ports... > Nun hab ich allerdings noch ein Problem, und zwar will ich die Servos ja > nicht komplett über USB/ PC steuern lassen, sondern durch einen > zusätzlichen µC, wie den PIC 16F877. Der soll dann die Befehle per UART > an den Servo Controller schicken. > Welche Beschaltung brauche ich denn dann für den 16F877, reicht die im > Manual angegebene aus? Im Anhang befindet sich ein Programmbeispiel, > vielleicht wird dann deutlich was ich meine. Einfach die UART Ports gedreth vom Pic aus ans UART des Controllers schalten. Somit hättest du über RS232/UART die Kontrolle. Da ich mit einem anderen Compiler arbeite würde das einlesen etwas dauern weswegen ich jetzt mal nichts zum C-Programm großartig sagen werde. Aber n Tip: fang erstmal an kleine Befehle für ein Servo zu senden und erweitere langsam das Programm. lg
Ahh was mir gerade aufgefallen ist, du willst mit 5V mini Servos eine Hand steuern, Schaffen die das überhaubt??
>Ahh was mir gerade aufgefallen ist, du willst mit 5V mini Servos eine >Hand steuern, Schaffen die das überhaubt?? Klar.
Ok, also besteht die Beschaltung des PIC 16F677A lediglich darin, ihn über einen Festspannungsregler zu versorgen und ihn wie auf dem angehängten Bild über die UART Schnittstelle mit dem Controller zu verbinden. Das wars dann schon oder wie muss ich das verstehen? Die Stärke der Motoren müsste eigentlich ausreichen.
> Ok, also besteht die Beschaltung des PIC 16F677A lediglich darin, ihn > über einen Festspannungsregler zu versorgen und ihn wie auf dem > angehängten Bild über die UART Schnittstelle mit dem Controller zu > verbinden. Das wars dann schon oder wie muss ich das verstehen? Jop, Genau! ;) lg
Besten Dank nochmal für eure Hilfe, aber nun habe ich schon wieder ein neues Problem und zwar beim kompilieren. Ich benutze MPLAB mit dem CC5x Compiler und es erscheint immer folgende Fehlermeldung: "Duplicate chip definition (Multiple chip definitions detected (option -p<chip> and #include <header.h>).The #include statement should be removed)" Im Internet habe ich zwar mehrere Einträge mit dem selben Fehler gefunden, aber keine konkrete Lösung. Habt ihr vielleicht ne Ahnung? Gruß Kolja
Also ich verstehe das so, dass du einmal den Header eingebunden hast, der den Chiptypen enthält und dann hast du nochmal die Definition über die Option beim Ausführen mitgegeben. In den Headern stehen meiner Errinnerung nach die Adressmappings drin. Wenn du den #include Eintrag der Headerdatei im Programm entfernst, dann kannst du es vermutlich problemlos kompilieren.
Wenn ich den #include-Befehl auskommentiere, dann bekomme ich folgende Fehlermeldung: Syntax error (or limitation) (CC5X is unable to compile the expression due to syntax error or limited C support. Code correction is required. Check also for unbalanced block delimiters '{ .. }' in previous statements) und verweist auf den Befehl: __CONFIG ( 0x3F32 );
Ist dieses Beispiel für deinen Compiler geschrieben? Dieses __CONFIG Zeugs ist kein Standard-C Mechanismus. Wenn das also ursprünlich für einen ganz anderen Compiler gemacht wurde, müsstest du rausfinden, was das eigentlich macht und dir mit deinem Compiler einen Weg suchen, dasselbe zu erreichen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.