Hallo zusammen, ich habe mal eine Frage die mir nicht so ganz klar wird. Ich verwende momentan den uC Freescale S12ZVM und lesen mit einem dementsprechenden Evalboard die Signale der Hallsensoren über die ICOC Eingänge ein. Ich hab das Signal mit dem Oszi gemesen und festgestellt dass es keine idealen Rechteck Impulse sind (was ich mir schon dachte) aber ich hätte eher eine Sinusähnliche Funktion erwartet. Ein Auswertung mittels DIO erfolgte nur dann wenn das Magnetfeld den Sensor direkt belegte. Bei meinem BLDC handelt es sich um einen 8-poligen Motor und nach 6 Kommutierung beträgt die mechanische Umdrehung 1/4 (90°9 und die elektrische demnach 1 ganze. Somit schließe ich darauf dass die drei Hallsensoren im Winkel von 30° zueinander angeordnet sind...sehe ich das richtig? Weiterhin besteht für mich die Frage warum TIMER die Hallsensoren auslesen die zeitmessung des HIGH Impuls müsste doch mit dem DIO genauso funtkionieren. Das Problem was bei mir besteht ich kann nur auf 3/4 Timer zugreifen und ich müsste es irgendwie schaffen einen Timer von den Hallsensoren zu entkoppeln um ein Scheduling mit diesem freien Timer zu entwerfen. Hat jemand eine Idee bzw. kann mich ein bisschen anschlauen diesbezüglich? Schonmal danke im vorraus.
XSt Efx schrieb: > Weiterhin besteht für mich die Frage warum TIMER die Hallsensoren > auslesen Vielleicht (nur mal so ins Blaue hinein geraten) weil Du das genau so und nicht anders entworfen und programmiert hast?
Ich orientiere mich daran an dem vorgegebenen Anschluss der Hallsensoren sowie einen Referenzprojekt in dem es so gemacht wurde. Die von mir durchgeführten Änderungen auf einen digitalen Eingang brachten ja nicht den gewünschten Erfolg also muss es einen entsprechenden unterschied geben. Die Programmierung findet in Simulink statt mit der zugehörigen Toolbox also im Rahmen des Model Based Design.
Kann man nicht den Timer Overflow Interrupt TOF für den Scheduler benutzen? Aber man kann auch unbenutzte SCI- oder SPI-Sender als Timer missbrauchen.
Schaulus Tiger schrieb: > Kann man nicht den Timer Overflow Interrupt TOF für den Scheduler > benutzen? Aber man kann auch unbenutzte SCI- oder SPI-Sender als Timer > missbrauchen. Das klingt interessant. Lösen die denn auch ein Interrupt aus? Kannst du evtl. das etwas genauer beschreiben? Ich bin halt sehr auf die Toolbox angewiesen....das bedeutet ich kann den Code nicht viel beeinflussen. Ich hätte noch die Möglichkeit mittels einer PTU ein Interrupt zu nutzen aber wenn ich das richtig verstanden habe mach diese das nur in Verbindung mit dem PWM Signal und das variiert ja je nach Geschwindigkeit. Hat den zufällig jemand Erfahrung mit dem Freescale Motor Control Development Toolbox?
:
Bearbeitet durch User
XSt Efx schrieb: > Weiterhin besteht für mich die Frage warum TIMER die Hallsensoren > auslesen Weil sie es können und weil das die CPU erst mal nicht weiter belastet. Die CPU kann in der Zwischenzeit andere Dinge machen. So ein BLDC Controller besteht ja nicht nur daraus, dass er Hallsensoren überwacht. Ganz abgesehen davon ist es mit den Timern eine simple Sache die größtmögliche Genauigkeit in den ermittelten Zeiten zu erhalten. > Hallsensoren zu entkoppeln um ein Scheduling mit diesem freien Timer zu > entwerfen. Die Kommutierung ist wichtiger als ein Scheduling. Arbeite in der Hauptschleife reihum deine anstehenden Jobs ab. Wenn von denen mal einer ein paar µs länger braucht, dann wird das kein Beinbruch sein. Wenn aber deine Zeiten nicht stimmen und auf Grund dessen die Kommutierung versagt, dann verschluckt sich der Motor. Und das ist praktisch immer ein Beinbruch.
XSt Efx schrieb: > Das klingt interessant. Lösen die denn auch ein Interrupt aus? Ja. Sobald der Free Running Counter überläuft, wird das TOF im TFLG2-Register gesetzt. Das löst einen Interrupt aus, wenn du das Interrupt Enable TOI im TSCR2 gesetzt hast. In der Interrupt-Routine musst du das TFLG2 lesen und direkt wieder zurückschreiben um das Flag zu löschen. Zur Not kannst du den Zählerstand TCNT auslesen und damit genaue Verzögerungen in der Hauptschleife erzeugen. > Ich bin halt sehr auf die Toolbox angewiesen....das bedeutet ich kann > den Code nicht viel beeinflussen. Das dachte ich bei meinem aktuellen Programm anfangs auch. Inzwischen habe ich alles selbst neu programmiert.
Erst einmal vielen vielen Dank für die kompetente Hilfe. Ich hoffe ihr steht mir weiter mit Rat und Tat zur Seite. Der Hintergrund dieses Projekts ist meine Bachelorthesis ich habe jedoch Studiumsmässig einen anderen Schwerpunkt gewählt deswegen ist die uC Ebene für mich relativ neu. Und der Thesiszeitraum beträgt leider nur 8 Wochen. Ich hoffe ich kann weiter auf eure Hilfe hoffen. In der Thesis geht es nun grundlegen darum die Toolbox zu evaluieren bzw. den daraus entstehenden Code. Ein Scheduling in Echtzeitform sollte auf jeden Fall mit drin sein. Ich habe den auch Scheduler soweit auch schon implementiert nur ist mir später dann aufgefallen dass einer der Hallsensoren aufgrund des verwendeten Timer nicht mehr funktionierte. Der Scheduler sowie die die Motorfunktion hat Grundlegend funktioniert jedoch fehlten halt 3 Kommutierungen. Die jeweilige Phasenansteuerung geschieht jedoch in deren Abhängigkeit.
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.