Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

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.
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB