CODESYS - the IEC 61131-3 automation software

Welcome to the official CODESYS Forum by 3S-Smart Software Solutions GmbH | A member of the CODESYS Group
Deutsche Version English version russian version 
It is currently Thu Sep 19, 2019 6:16 pm

All times are UTC+01:00




Post new topic  Reply to topic  [ 2 posts ] 
Author Message
PostPosted: Mon Jan 05, 2015 10:00 am 
Offline

Joined: Sat Dec 27, 2014 7:26 pm
Posts: 2
Hallo Freunde des Codesys,

ich bin aktuell am experimentieren mit einem RaspberryPi + Codesys + MC3426 Delta/Sigma-A/D Wandler.
Ich möchte mit dem bereits über I2C angeschlossenen ADC eine Spannung an einem Spannungsteiler (Kanal 1) und eine Spannungsdifferenz über einen Shunt (Kanal 2) messen. Im Oszi sehe ich auch SCL und SDA, Adresse 0x68 passt auch. So weit - so gut - Ich habe auch schon eine größeres Projekt erstellt und möchte nun hier den ADC integrieren. Ich habe bereits eine Gerätebeschreibungsdatei erstellt und im Projekt eingebunden. Eine Bibliothek ist bereits erstellt für den ADC aber noch nicht mit Leben gefüllt. Dies teste ich momentan über einen Stück Code im Hauptprogramm. Hier ist mein Ansatz:

Code:
PROGRAM Stepper
VAR
index          : SINT;
readBytes       : DINT;   
sendbuffer      : ARRAY[0..1] OF BYTE;
readbuffer      : ARRAY[0..3] OF BYTE;
value         : REAL;  //V
END_VAR


Code:
CASE index OF
0:   sendbuffer[1] := 2#1101_0001; //byte 0 Address-Byte (write)
   sendbuffer[0] := 2#0001_0000; //byte 1 Config-Byte //Default config: 12 bit, continuous mode, CH0, Gain = 1x
   readBytes := MCP3426ADC.write(ADR(sendbuffer),2);
   IF (readBytes <> 2) THEN
      ;
   ELSE
      index := index + 1;
   END_IF
   
1:   readBytes := MCP3426ADC.read(ADR(readbuffer),4);
   IF (readBytes <> 4) THEN
      ;
   ELSE
      value := (readbuffer[1]*256+readbuffer[0])*(2*2.048/4096); //output code*2*RefVoltage/2E12/Gain
   END_IF
END_CASE


Habe mir mal eine Mini-Schrittkette gebaut. Das was ich raus bekomme ist besser als nicht aber immer noch falsch :? :
readbuffer[0] = 0 = 1. byte??
readbuffer[1] = 26 = 2. byte??
readbuffer[2] = 16 = 3. byte??
readbuffer[3] = 144 = 4. byte??
value = 6.656 --> Falsch, am Eingang des ADC liegen rund 0,7 V an. Der Wert ändert sich aber, wenn ich die Spannung am Eingang verändere.

Ich habe noch etwas von einem ACK bzw. NACK bit gelesen und glaube, das muss ich noch berücksichtigen. Hat jemand eine Idee, wo der (Denk)Fehler steckt oder kann jemand eine Beispielcode liefern?

Habe das Datenblatt und meine Gerätebeschreibung mal angehängt ...


You do not have the required permissions to view the files attached to this post.


Last edited by hako on Wed Feb 04, 2015 11:25 pm, edited 2 times in total.

Top
   
PostPosted: Fri Jan 09, 2015 5:54 am 
Offline
Frequent User
Frequent User

Joined: Wed Jan 16, 2013 8:35 am
Posts: 117
Topic moved to here!


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 2 posts ] 

All times are UTC+01:00


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited