Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > Hallo Markus, > > > ich baue einen Fensterputzroboter für meine Facharbeit und muss zu dessen Betrieb 3 Motoren und 2 > > Elektromagnetventile, sowie eine Miniwasserpumpe steuern. Leider hab ich mir das mit der > > Programmierung zu leicht vorgestellt und steh jetzt vor dem Problem, dass ich nicht weiß wie ich > > a) ein Programmmodul schreib um einen Motor über eine Relaisplatine und einen Analogausgang > > ansteuer. Bedeutet: Wie ich für eine bestimmte Zeit t an einem Ausgangsport Spannung anleg. > > b) verschiedene Programmmodule zeitlich hintereinander reihe > > c) einzelne Programmmodule vorzeitig beende, wenn an einem Eingangsport plötzlich während dem > > Ablauf des Programms Strom fließt, da ein Kontakt geschloßen wird (bei anstoßen an die Wand) > > d) einen neuen Programmablauf starte, wenn ein Kontakt geschloßen wurde > > > > Wär echt super, wenn mir jemand helfen könnte, denn mein Physik-Leistungskurslehrer hat von > > Programmieren und Informatik im Allgemeinen keine Ahnung und ist mir deswegen keine Hilfe. > > Wir müssen erstmal klären, was Du bereits alles erstellt hast. > Die die Elektronik bereits fertig ? > Erfolgt die Ansteuerung über zwei Relais + MOS-Fet? > Wenn ja, mußt Du drei Dinge berücksichtigen. > ich mache es aber erstmal einfach und lasse die Drehzahlregleung außen vor. > Nehmen wir an, Du hättest nur zwei Relais(à 1xUM), um die Funktionen Vor, Zurück und Stop zu ralisieren. > Soetwas zu programmieren ist nicht schwer. > In Deinem Fall würde beispielsweise dies weiterhelfen: > <code> > // Port P1H.0 =Vorwärts (=Port 8) > // Port P1H.1 =Rückwärts (=Port 9) > function motor(int richtung, long zeit) > // richtung: 0=Vorwärts, ungleich 0=Rückwärts > // zeit: Dauer in ms > { > richtung= richtung!=0 and 1; // True/False in 0/1 "wandeln" > ports.set(8+richtung,1); // Relais einschalten > sleep zeit; > ports.set(8+richtung,0); // Relais ausschalten > }</code> > > Hier wird aber noch nicht der Endschalter brücksichtigt. > Dies kann mit mit einer einfachen Schleife realisieren: > <code> > // zusätzlich an P1H.2: Endschalter gegen GND. (=Port 10) > function motor(int richtung, long zeit) > // richtung: 0=Vorwärts, ungleich 0=Rückwärts > // zeit: Dauer in ms > {long timer; > richtung= richtung!=0 and 1; // True/False in 0/1 "wandeln" > timer=system.timer(); > ports.set(8+richtung,1); // Relais einschalten > wait system.timer()-timer<=zeit or ports.get(10)==0; > ports.set(8+richtung,0); // Relais ausschalten > }</code> > > Somit wäre dies für einen Motor bereits fast das, was Du benötigst. > Zum Ansteuern eines PWM-Ports mußt Du zusätzlich die entsprechende Funktion ausführen: > <code> > // zusätzlich an PLM.0: MOS-Fet für Geschwindigkeit > function motor(int richtung, long zeit, int speed) > // richtung: 0=Vorwärts, ungleich 0=Rückwärts > // zeit: Dauer in ms > {long timer; > richtung= richtung!=0 and 1; // True/False in 0/1 "wandeln" > timer=system.timer(); > ports.set(8+richtung,1); // Relais einschalten > plm.out(0,speed); > wait system.timer()-timer<=zeit or ports.get(10)==0; > plm.out(0,0); > ports.set(8+richtung,0); // Relais ausschalten > }</code> > > Den PWM-Port mußt Du am Programm anfang natürlich erst konfigurieren, > d.h. die Zeitbasis und die Periodendauer festlegen. > Das ergibt wieder die Frequenz. > Mit einer Zeitbasis von 400ns und 1000 Ticks Periodenlänge erhälst Du eine Frequenz von 2,5kHz. > Das sollte für den Anfang reichen. > > Ansonsten kann ich nur, wie von Klaus empfohlen, dasselbe sagen, daß Du am > besten die passende Lektüre besorgs, wenn Programmierung für Dich Neuland ist. > > MfG André H.