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:
PROGRAMStepperVARindex      :SINT;readBytes    :DINT;  sendbuffer    :ARRAY[0..1]OFBYTE;readbuffer    :ARRAY[0..3]OFBYTE;value      :REAL; //VEND_VAR
CASEindexOF0:Â Â 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_IFEND_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 ...
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:
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 ...
MCP3426 27 28.pdf [944.92 KiB]
device.xml [2.34 KiB]
Related
Talk.ru: 1
Talk.ru: 2
Talk.ru: 3
Topic moved to here!