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 Xzesor, > > > Ich soll ein kleines Beispiel zum Austellen im der Filliale mit C-Control machen. > > Ich habe dazu ein Applicationboard und eine C-Control I Main Unit benutzt und > > dort an die A/D-Ports folgende Sensoren angeschlossen: > > ... > > Alles lief auch gut, also wollte ich das System auf C-Control II umrüsten > > um weitere Sensoren anzuschliessen > > Da sich der A/D-Wandler geändert hat (10-Bit statt 8-Bit Auflösung, 4.096 V URef statt 2.55V) > > Stimmen nur die Umrechnungsformeln für die Sensoren nicht mehr > > Die C-Control I Unit hat 2,50V und nicht 2,55V als Referenzspannung. lediglich die Station I > hat 2,55V. Auch die Conrad-Sensoren sind für 0 bis 2,50V ausgelegt. > > > Ich habe mir gedacht, das wegen der 10-Bit Auflösung die Werte sich nur um > > das 4-Fache steigern also Wert: 128 bei CC1 entspricht Wert: 512 bei CC2 > > Dann hätte ich nur die Werte durch 4 Teilen müssen und hätte die alten Formeln > > benutzen können. Leider klappt's aber so nicht > > Das kann nicht funzen. Denn die Referenzspannug ist unterschiedlich. > Die Auflösung der CC1 beträgt bei Uref=2,50V 9,765625mV, die der CC2 jedoch 4mV > > > Als ich im Forum gesucht hab bin ich auf eine Software-Lösung für den Temp. Sensor gestoßen: > > Die Formel: > > > > float temp; > > Temp = 51 * ADC / 250 - 25; > > Diese Formel stammt von mir und ist ein Näherungswert. > Allerdings lautet sie: > <code>function gettemp(long ADC) returns int > {long Temp; > Temp= 51*ADC; > return (Temp/25)-250; > }</code> > Ursprünglich ist dies eine Ableitung von: > Temp=(AD*5)-250 (original CC1-Formel > Diese Formel war für einen AD-Bereich von 0-255 gedacht bei Uref=2,50V. > 2,50V sind bei der CC2 ein AD-Wert von 625 (= 2,5V / 4mV) > Nun ergibt sich ein AD-Bereich von 0 bis 625 welcher dem MNeßbereich bei der CC1 entspricht. > > Die Formel lautete Anfangs deshalb so: > Temp=(AD*5*255)/625 - 250 > Da man dies noch wunderbar mit 25 kürzen kann, ergab sich daraus: > Temp=(AD*51)/25 - 250 > > > //was dieser Formel entspricht: > > Temp = ADC * 0.204 - 25 > > Theoretisch ja. Aber vermeide bei einfachen Berechnungen den Float-Typ !! > Besonders dann, wenn danach dieser Wert wieder als Integer oder Long benötigt wird. > Außerdem sind Float-Berechnungen aüßerst Recheninteniv und bremsen daher > die CC2 oft unnötig aus. > Daher sollte vorzugsweise immer mit Long und Integer geabeitet werden. > Man kann so auch wunderbar mit Kommazahlen arbeiten. Man bildet eben einfach > eine Festkommazahl. Hier z.B. mit einer Kommastelle. > Ausgeben kann man diese auf dem LCD dann z.B. mit lcdext.zahl4n1() . > > > Daraufhin hab ich mir Gedanken gemacht wie ich die Werte des Windrichtungsmessers umrechne > > die Alte Formel: > > > > float richtung; > > if(ADC > 240) > > richtung = 324 + ((ADC - 240) * 2.3); > > else > > richtung = ADC * 1.35; > > > > war fehlerhaft. > > Wie gesagt, vermeide float !! Es wird rechnerisch eher unübersichtlich. > > > Also hab ich den selben Umrechnungsfaktor wie bei der neuen Temp Formel benutzt: 51 > 51 ist hier nicht der Umrechnungsfaktor, sondern 255/625, was wiederum 51/125 entspricht. > Mit diesem Faktor erhälst Du quasi CC1-AD-Werte. > > Bei der Windrichtung heißt dies nun, daß der AD-Wert 0 0° und 625 340° entspricht. > (lt. Datenblatt 2,5V = 340°, bei 6,50V Versorgung !) > Folgende Formel müsste einen Festkommainteger mit einer Nachkommastelle ergeben: > > Winkel = (AD * 3400) / 625 > Auch das kann man wieder kürzen: > Winkel = (AD * 136) / 25 > also Funktion: > <code>function getangel(long ADC) returns int > { > ADC = ADC * 136; > return ADC/25; > }</code> > > > > Ich habe immer noch Probleme mit dem Schallpegel- und Luftdrucksensor > > > > Beim Luftdrucksensor enspricht der Int-Wert 0 zum Beispiel nicht mehr dem Nullabgleich > > Die Formel (für: Höhenmesser bis 510m): hoehe = ADC * 2 stimmt natürlich auch nicht mehr > > Wie komme ich an die richtigen Werte? > > Hier sieht es genauso aus: > Wenn Du den Sensor als Höhenmesser bis 510m verwenden willst, obwohl das bei mir schon > ein Tiefenmesser wäre, da ich auf ca. 600m über NN liege *grins*, muß > die Berechnung folgendermaßen aussehen: (wieder Festkommainteger mit einer Nachkommastelle) > Höhe=(ADC * 5100) / 625 > Gekürzt dann so: > Höhe=(ADC * 204) / 25 > Als Funktion: > <code>function getalt(long ADC) returns int > { > ADC = ADC * 204; > return ADC/25; > }</code> > > Der im Sensor verwendete OP sollte bis ca. 3,5V gehen. > Daher sollte man höhen bis knapp über 700m mit der CC2 messen können.(theoretisch) > > Wenn der Sensor im Modus bis 2041m verwendet wird würde das so aussehen: > Hier allerdings ohne Komma nur als Integer. ;-) > <code>function getalt(long ADC) returns int > { > ADC = ADC * 408; > return ADC/125; > }</code> > > Und wenn's doch mit einer Nachkommastelle sein soll: > <code>function getalt(long ADC) returns int > { > ADC = ADC * 816; > return ADC/25; > }</code> > > Hier ergibt sich allerdings ein Fehler von einem Meter, was man bei einer Auflösung von > etwas mehr als 3m sicher verkraften kann. ;-) > > > > Beim Schallpegelsensor hab ich ein anderes Problem: > > Er gibt nur noch konstant den Int-Wert 1023 zurück, reagiert nicht mehr auf Schallpegelveränderungen (anschreien etc.) > > Kann es sein das der Sensor defekt ist? > > Hier haben wie wieder dasselbe: > Meßbereich von 35 bis 120dB > Wert = (AD * 85) / 625 + 35 > Wert = (AD * 17) / 125 + 35 > Als Festkommainteger: > Wert = (AD * 170) / 125 + 35 > Wert = (AD * 34) / 25 + 35 > > <code>function getvol(long ADC) returns int > { > ADC = ADC * 34; > return (ADC/25)+35; > }</code> > > Allerdingsbezweifle ich, daß der Schallpegelsensor zum Pegel einen linearen Verlauf hat. > Schau Dir dazu einmal die dazugehörige Tabele an. Ich hab' dazu jetzt keine Lust. ;-) > > Der Grund dafür, daß der Sensor keinen vernünftigen Wert ausgibt, liegt sicher > an der falschen Betriebsspnnung. Dieser benötigt nälich 6,5V. > Das gilt auch für alle anderen Conrad-Sensoren. > Lediglich das AD592 und Barometer-Sensormodul können mit einer Variablen > Spannung versorgt werden. Diese sollte hier aber auch mindestens 6,5V haben ! > > > > Ich möchte den Windgeschwindigkeitssensor (Bstl. Nr.: 108685) an den zweitem Frequenz-Eingang > > anschliessen. Muss ich bei CC2 irgendwas anders machen als bei CC1 > > oder stimmen die Formeln in der Anleitung immer noch? > > Dies sollte übereinstimme. Jedoch kann ich die Faktoren im Datenblatt nicht nachvollziehen. > Das Anenometer gibt bei 35m/s ca. 31Hz aus. > Also läge der Faktor bei ca. 1,13 , was wiederum dem Diagramm entspricht. > Allerdings würde ich hier dann eher einen der Counter-Ports als einen Frequenzeingang > verwenden, da die Auflösung einfach nur schauderhaft wäre, wenn nicht gerade Sturm herscht. ;-) > Mit den Counter-Ports kannst Du eine die Periodenlänge zwischen zwei Impulsen auswerten. > z.B. > <code>int Speed; > thread getAnenometer > {long timer,x; > Speed=0; > timer=system.timer(); > loop > { > wait ports.getcount(); > x=system.timer()-timer; > timer=system.timer(); > Speed=(113000/x); // in 0,01m/s > //113000 = 1,13*1000*100 > } > }</code> > > In "Speed" erhälst Du den Wert als Festkommainteger mit zwei Nachkommastellen in 0,01m/s. > > > Danke schonmal im Voraus für die Mühe. > > Als Gegenleistung kannst Du OSOPT V3.0, die aktuellen Module und Treiber benutzen. ;-) > Kurz, installiere das aktuelle Servicepack. > > > MfG André H.
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB