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, > > Ich bin am verzweifeln. Ich habe vor mir einen kleinen 0/4...20mA Kalibrator zu bauen. > Das Ausgeben eines 0...20mA Signals funktioniert schon mal recht gut über einen AD420. > Zum einlesen eines Signals habe ich mich für einen Max1270 AD-Wandler entschieden. > Dieser 12-Bit Wandler besitzt 8 (+-0-5V, +-0-10V) Eingänge, wovon ich aber nur 3 nutze. > Der Max1270 bisitzt ein serielles Interface welches laut Datenblatt (eigentlich) recht einfach > zu programieren sein sollte. Einem Control-Byte was zum Wandler gschickt werden muss, folgt > eine Acquisitationsphase, nach der die Daten Bitweise ausgegeben werden (MBS zuerst). > > Doch wie ich es auch anstelle, der Wandler liefert mir immer wieder falsche Ergebnisse. > Es sind aber auch werterichtige Wandlungen darunter. Tendenziell geht das Wandlungsergebnis > in die richtige Richtung (soll heissen die Bitfehler wandern mit). Wenn ich mir das Wandlunsergebnis > als Dualzahl ausgeben lasse, fällt auf, das wenn eine falsche Wandlung vorliegt, gleich immer mehrere Bits > unstimmig sind. Es betrifft aber nicht nur die "unteren" Bits, was noch als Wandlerrauschen abgetan > werden könnte. > > Hier eine Beispiel einer Wandlungsreihe (1 Sekunden Pause). > Wandlung an Channel 0, Wandlerrange =0-10V, Einganssignal gemessen 5,00V (2048): > INT= 2073 - 1537 - 1335 - 2809 - 2101 - 2476 - 1790 - 2044 - 2052 - 2156 - 2758 - 2190 usw. > > Bei 10 V sieht die Sache etwas besser aus - 10,0V (4095): > INT= 3999 - 4095 - 4024 - 4095 - 4043 - 4072 - 4095 - 4094 - 4095 - 3960 - 4095 > > Hier der Programmauszug der Messroutine > <code> > const Clock_Max1270 = 6; //Clock Eingang Max1270 P1L6 > const CS_Max1270 = 7; //Chip Select (Low Aktiv) P1L7 > const DIN_Max1270 = 13; //Data In Max1270 P1H5 > const SSTRB_Max1270 = 14; // Strobe Ausgang Max1270 P1H6 > const DOUT_Max1270 = 15; // Data Out Max1270 P1H7 > > function readAD(byte ch,byte mod)returns int //ch = channel 0...7 > { //mod 0 = 0-5V, 1 = 0-10V > byte b; //2 = +-5V 3 = +-10V > int i, v; > b=(ch shl 4) or 0b10000000; //Auswahl channel und Startbit > if mod == 1 b=b or 0b00001000; //0..10V > if mod == 2 b=b or 0b00000100; //0..+-5V > if mod == 3 b=b or 0b00001100; //0..+-10V > ports.set(CS_Max1270,0); //Chip Select Max1270 (LowAktiv) > for i =0...7 //Controlbyte senden > { > ports.set(DIN_Max1270,(b and 0b10000000) shr 7); //DIN Max1270 > ports.set(Clock_Max1270,1); //Clock Max1270 = high; > b=b shl 1; //nächstes Controlbit vorber. > ports.set(Clock_Max1270,0); //Clock Max1270 = low; > } > ports.set(CS_Max1270,1); //Chip Select Max1270 high; > sleep 1; > v=0; > wait(ports.get(SSTRB_Max1270)); //warten bis Acquisitation > //beendet (SSTRB=high); > ports.set(CS_Max1270,0); //Chip Select Max1270 low; > for i=0...11 //12 Bit ergebnis einlesen. > { > v=v shl 1; //für nächstes Bit shiften > if ports.get(DOUT_Max1270)!=0 v=v or 1; //Bit einlesen > ports.set(Clock_Max1270,1); //Clock = high; > ports.set(Clock_Max1270,0); //Clock = low (neues Bit) > } > ports.set(CS_Max1270,0); //CS high für Ende > return v; //Wandlungsergebnis übergeben > } > </code> > > Wer kann mir helfen? Den Schaltplan und Datenblätter schicke ich gerne zu. > <a href="http://datasheets.maxim-ic.com/en/ds/MAX1270-MAX1271B.pdf" target="_blank">Datenblatt Max1270</a> >
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB