Hallo, ich möchte ein Motorsteuergerät ohne Motor betreiben um die Auswirkungen gewisser Einstellungen überprüfen zuz können. Ich habe ein Texas Instruments LaunchPad mit einem MSP430G2 Mikrocontroller und habe auch schon ein paar einfache Programme geschrieben. Ich möchte nun die Motordrehzahl simulieren, die am echten Motor von einem Hallsensor erzeugt wird. Um auch den OT des Motors zu erkennen hat das Geberrad des Motors 60-2 Zähne, also eig 60 Zähen, es fehlen aber zwei. Außerdem gibt ein zweiter Hallsensor alle 2 Motorumdrehungen noch ein Signal ab. Ich habe die entsprechende Programmierung auch schon in Energia hinbekommen. Habe es langsam laufen lassen und LED's blinken lassen. Das sieht soweit gut aus. Für mich ergeben sich 2 Fragen: 1. Ich benötige etwas Relais-ähnliches um die Impulse des IC's auf das Steuergerät übertragen zu können. Am Steuergerät ist eine 12V Versorgungsspannung und ein Signaleingang. Das IC kann ja nur 3V. Mein Problem ist die Anzahl der Schaltung. Ich habe 60 Schaltungen pro Umdrehung. Bei einer Motordrehzahl von 8000 U/min also 8000 Schaltungen/s. Kann das mit einem Optokoppler umgesetzt werden? 2. Ich habe hier in einem Thread gelesen, dass Arduino-Programme da auch schon an die Grenze kommen, da der Befehl digitalWrite wohle sehr langsam ist. Wir kann ich das umgehen? Sorry für die hemdsärmlige Fragestellung, aber ich bin Maschinenbauer und so langsam mit meinem Latein am Ende! Schon mal vielen Dank vorab für die Hilfe! So lautet aktuell mein Sektch: const int SIGNAL = GREEN_LED; const int SIGNALHALL = RED_LED; int count = 0; int counthall = 0; int schritt = 1; int zaehne = 58; int luecke = 2; int zaehne_ges = zaehne + luecke; // drehzahl in U/min int drehzahl = 2000; int inkrement = 1000/(2*drehzahl/60*zaehne_ges); void setup() { // put your setup code here, to run once: pinMode (SIGNAL, OUTPUT); pinMode (SIGNALHALL, OUTPUT); } void loop() { // put your main code here, to run repeatedly: digitalWrite(SIGNALHALL, LOW); if (count < zaehne) { digitalWrite(SIGNAL, HIGH); delay(inkrement); digitalWrite(SIGNAL, LOW); delay(inkrement); count += schritt; } if (count == zaehne) { if (counthall == 2) { digitalWrite(SIGNALHALL, HIGH); counthall = 0; } delay (2*luecke*inkrement); count = 0; counthall += schritt; } }
Patrick schrieb: > 2. Ich habe hier in einem Thread gelesen, dass Arduino-Programme da auch > schon an die Grenze kommen, da der Befehl digitalWrite wohle sehr > langsam ist. Wir kann ich das umgehen? Dann solltest du auch mal einen anderen Thread lesen, in dem beschrieben ist, wie du unter Arduino ein Port-Bit auf einem µC direkt setzen kann, ohne den ganzen Zirkus zu aktivieren, den digitalWrite() noch so veranstaltet. Das macht die Sache deutlich performanter.
Hallo, zu 1. es gibt schnelle Optokoppler (6N137) die das problemlos schaffen. Ein normaler Optokoppler kann unter Umständen das Signal zu stark verfälschen. Insbesonders wenn für Start-Stopp Systeme ein vorwärts/rückwärts Drehzahlsensor simuliert werden soll. (45/90 us Impulsbreite). Die schnellen Optokoppler brauchen eine zusätzliche Versorgung. Das Steuergerät sollte aber irgendwo auch eine 5V Sensorversorgung haben. Aber eigentlich braucht man keinen Optokoppler sondern "nur" eine (kurzschlußfeste) Open Drain Endstufe. Normalerweise würde man die CCP Units für die Impulserzeugung verwenden, und die nächsten Pulse dann per Interrupt nachladen. Aber mit Deinem Ansatz bist Du davon noch sehr weit entfernt. Es gibt für das Problem "Drehzahlmühle" auch Fertiglösungen: http://www.smart-testsolutions.de/Sondersimulationstechnik.html Früher hat man einfach ein Eprom mit der Drehzahlspur programmiert und dann mit einem einfachen Zähler und einem VCO ausgelesen. Gruß Anja
Vielen Dank für die Rückmeldungen. Ist mir klar, dass es das auch fertig gibt, aber ich will ja auch was lernen! ;-) Ein Link zu einer Open Drain Endstufe wäre super! Vielen dank!
Denkbar wäre auch eine Hardware PWM als Pulsgeber und aktiviertem OVF Interrupt. Die OVF ISR erzeugt dabei nach 59 Durchläufen das Indexsignal, bzw. unterdrückt die PWM für den fehlenden Zahn und zählt nebenbei auch noch den Zähler hoch, der alle 2 Runden das Signal des 2ten Sensors erzeugt. Über den Timer kann man dann auch verschiedene Drehzahlen des Motors simulieren, wenn man ihn im CTC Mode oder mit ICR als TOP einsetzt - vorausgesetzt, der MSP430 kann sowas. Würde mich aber wundern, wenn TI so etwas nicht vorgesehen hat.
:
Bearbeitet durch User
Über Jahrzehnte wurden analoge Hall-Sensoren an Motorsteuergeräte angeschlossen. Evtl. werden diese in manchen Autos immer noch verwendet. Diese geben ein analoges Sinussignal aus dessen Amplitude sich noch mit der Drehzahl verändert. http://old.fh-kaernten.at/fileadmin/media/systems/iscd/hall_sensor_ic_2.jpg Leider schreibt der TE nichts über sein Steuergerät, so weiß man nicht welche Signalform eigentlich gefordert ist.
Ein HALL-Geber erzeugt ein Rechtecksignal. Induktivgeber erzeugen ein Sinuskurve. Ich muss aber wie bereits erwähnt einen Hall-Sensor simulieren. Ich bin auf jeden Fall schon einmal von der großen Anzahl an Antworten überrascht, vielen DAnk dafür. Was mir leider noch fehlt ist eine konkrete Hardware Empfehlung um das Signal aus dem IC auf das Steuergerät zu übertragen.
Patrick schrieb: > Was mir leider noch fehlt ist eine konkrete Hardware Empfehlung um das > Signal aus dem IC auf das Steuergerät zu übertragen. Wenn du die originalen Hallgeber zur Verfügung hast, könntest du sie mit E-Magneten ansteuern, die der MSP430 steuert. Dann hast du die Originalsensoren auch gleich im Testaufbau und eine Änderung des Steuergerätes bzw. Eingriff in die Verkabelung wäre nicht notwendig. Lediglich der MSP braucht dann kräftige Endstufen wie Steppertreiber oder ULN Typen. Ansonsten gehen natürlich Optokoppler wie ein PC900 oder 6N137, sofern sie nur ein wenig schneller als ein CNY17 sind. Die LED sollte mit jedem MC anzusteuern sein. Ein Low Power MC wie der MSP430 braucht evtl. einen Treibertransistor, aber das weisst du besser als ich.
:
Bearbeitet durch User
Ich hab leider immer noch keine konkrete Lösung für mein Hardware Problem. Wer kann mir da helfen? Vielen Dank im Voraus!
Beitrag #6364870 wurde von einem Moderator gelöscht.
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.