
Bei dieser Karte haben wir einen AD-Wandler von Microchip verbaut. Dieser kann 4 Analogwerte mit einer Auflösung von maximal 18 Bit einlesen.
Folgende Messbereiche sind möglich:
- 0..10V
- ±10V
- ±2V
- ±20mA
Durch ändern der Vorwiderständen lassen sich auch andere Messbereiche z.B. 0-30V zur Überwachung von Bordspannungen im KFZ, Boot oder Caravan realisieren.
Hardware
Der AD-Wandler MCP3424 von Microcip hat folgende Eigenschaften:
- 4 Analogkanäle
- On-Board Referenzspannung 2,048V ± 0.05%
- On-Board programmierbarer Verstärker
- Programmierbare Abtastraten
3.75 SPS (18 bits)
15 SPS (16 bits)
60 SPS (14 bits)
240 SPS (12 bits)
Weitere Einzelheiten entnehmen Sie bitte dem Datenblatt MCP3424 (830 kB)
Wir haben den MCP3424 auf eine Leiterplatte mit vier Spannungsteilern und vier 500 Ohm Widerständen gepackt.
Mit Jumpern kann für jeden Kanal der gewünschte Messbereich gewählt werden.
Downloads
I2C-Adresse
Die Adressierung des MCP3424 erfolgt mit Jumpern auf der Karte.
A0 | A1 | 8-Bit dezimal | 8-Bit hex | 7-Bit dezimal | 7-Bit hex |
L | L | 208 | 0xD0 | 104 | 0x68 |
L | F | 210 | 0xD02 | 105 | 0x69 |
H | L | 212 | 0xD4 | 106 | 0x6A |
H | F | 214 | 0xD6 | 107 | 0x6B |
L | H | 216 | 0xD8 | 108 | 0x6C |
F | L | 218 | 0xDA | 109 | 0x6D |
H | H | 220 | 0xDC | 110 | 0x6E |
F | H | 222 | 0xDE | 111 | 0x6F |
Programmierung
Um einen Analogwert aus dem MCP3424 muss vorher das Register eingestellt werden. Dies erfolgt über das Steuerregisterwelches mit einem Schreibbefehl zum AD-Wandler gesendet wird.
Bit | Funktion | Erklärung |
0+1 | Verstärkung (Gain) |
00 = x1 (Default) 01 = x2 10 = x4 11 = x8 |
2+3 | Auflösung (Sample Rate) |
00 = 240 SPS (12 bits) (Default) 01 = 60 SPS (14 bits) 10 = 15 SPS (16 bits) 11 = 3.75 SPS (18 bits) |
4 | Wandlungsart (Conversion Mode) |
1 = Continuous Conversion Mode (Default). 0 = One-Shot Conversion Mode. |
5+6 | Kanalauswahl (Channel Selection) |
00 = Select Channel 1 (Default) 01 = Select Channel 2 10 = Select Channel 3 11 = Select Channel 4 |
7 | Wandlung start / fertig (Ready Bit) |
One-Shot mode: 1 = Initiate a new conversion.Conversion mode: 0 = No effect |
Programmbeispiel für I2C-USB-Modem oder i2C-Modem-2
STBy = 0 'Kanal 0 (Bit 5+6) Select Case Combo_GAIN.Text 'Verstärkung (Bit 0+1) Case 1 STBy = STBy + 0 ' 1x = 0 0 Case 2 STBy = STBy + 1 ' 2x = 0 1 Case 4 STBy = STBy + 2 ' 4x = 1 0 Case 8 STBy = STBy + 3 ' 8x = 1 1 End Select Select Case Combo_RATE.Text 'Auflösung (Bit 2+3) Case 12 STBy = STBy + 0 ' 12 Bit = 0 0 Case 14 STBy = STBy + 4 ' 14 Bit = 0 1 Case 16 STBy = STBy + 8 ' 16 Bit = 1 0 Case 18 STBy = STBy + 12 ' 18 Bit = 1 1 End Select 'Startbit setzten (Bit 7) STBy = STBy + 128 'Steuerbyte in Textbox ausgeben TextBox_STEUERBYTE_WRITE.Text = Dec2Bin(STBy) 'Steuerbyte übertragen SENDBYTE (51) 'Befehl 51 = Daten senden SENDBYTE (3) 'Frame Anzahl = 3 SENDBYTE (Adr) 'Bus-Adresse des MCP3424 SENDBYTE (0) 'Adresse MSB SENDBYTE (STBy) 'Steuerbyte SENDBYTE (4) 'Endekennung
Anschließend kann der Analogwert über einen Lesebefehl geholt werden.
Bei einer Auflösung von 12-Bit, 14-Bit oder 16-Bit müssen 3 Bytes vom MCP3424 gelesen werden.
SENDBYTE (51) 'Befehl 51 = I2C-DATA SENDBYTE (3) 'Frame Anzahl = 3 SENDBYTE (Adr + 1) 'Bus-Adresse des I2C-ADC zum Lesen SENDBYTE (0) 'Adresse MSB SENDBYTE (3) '3 Byte lesen SENDBYTE (4) 'Endekennung
Bei einer Auflösung von 18-Bit müssen 4 Bytes vom MCP3424 gelesen werden.
SENDBYTE (51) 'Befehl 51 = I2C-DATA SENDBYTE (3) 'Frame Anzahl = 3 SENDBYTE (Adr + 1) 'Bus-Adresse des I2C-ADC zum Lesen SENDBYTE (0) 'Adresse MSB SENDBYTE (3) '4 Byte lesen SENDBYTE (4) 'Endekennung
Der Messwert kann danach abhängig der Auflösung berechnet werden
Select Case Combo_RATE.Text Case 12 ' 12 Bit = 1mV / Digit ( 0-10V = 0-4000 dez.) TextBox_AIN1.Text = byte2Dec(d(1), d(2)) 'Spannung = Digitalwert * 1 [mV] TextBox_T1.Text = (TextBox_AIN1.Text * 1) / 1000 & " V" 'Spannung am Pin TextBox_S1.Text = (TextBox_AIN1.Text * 5) / 1000 & " V" '0-10V Wert Case 14 ' 14 Bit = 250 μV / Digit ( 0-10V = 0-8000 dez.) TextBox_AIN1.Text = byte2Dec(d(1), d(2)) 'Spannung = Digitalwert * 250 [μV] TextBox_T1.Text = (TextBox_AIN1.Text * 250) / 1000000 & " V" 'Spannung am Pin TextBox_S1.Text = (TextBox_AIN1.Text * 1250) / 1000000 & " V" '0-10V Wert Case 16 ' 16 Bit = 62,5 μV / Digit ( 0-10V = 0-32000 dez.) TextBox_AIN1.Text = byte2Dec(d(1), d(2)) 'Spannung = Digitalwert * 62.5 [μV] TextBox_T1.Text = (TextBox_AIN1.Text * 62.5) / 1000000 & " V" 'Spannung am Pin TextBox_S1.Text = (TextBox_AIN1.Text * 312.5) / 1000000 & " V" '0-10V Wert Case 18 ' 18 Bit = 15,625 μV / Digit( 0-10V = 0-256000 dez.) TextBox_AIN1.Text = byte2Dec(d(1), d(2), d(3)) 'Spannung = Digitalwert * 15.625 [μV] TextBox_T1.Text = (TextBox_AIN1.Text * 15.625) / 1000000 & " V" 'Spannung am Pin TextBox_S1.Text = (TextBox_AIN1.Text * 78.125) / 1000000 & " V" '0-10V Wert End Select
Private Function byte2Dec(ParamArray By() As Variant) As Long ' Wandelt bis zu vier Bytes in eine positive oder negative Dezimalzahl um. ' Ist das erste Byte negativ also größer als 127, dann ist die ganze Zahl negativ. Dim v As Variant Dim i, h, neg For Each v In By h = h & Right("0" & Hex(v), 2) i = i + 1 If i = 1 Then If v > 127 Then neg = 1 End If Next v If neg = 1 Then byte2Dec = CLng("&H" & Right("FFFFFF" & h, 8)) Else byte2Dec = CLng("&H" & Right("000000" & h, 8)) End If End Function
Excel-Makro
In diesem Excel-Makro ist die prinzipielle Funktion der Analogen Eingangskarte 4-Kanal 18-Bit dargestellt.
Excel-Makro zum MCP3424 für I2C-USB-Modem und I2C-SR232-Modem 2 (499 Downloads)
Hallo,
ich würde gerne mit der Karte einen Sensirion SDP2000-L einlesen, dieser gibt maximal 4V aus. Jedoch steht im Datenblatt unter Punkt 2.2, dass die kapazitive Last am Ausgang 200pF nicht überschreiten darf. Die Karte verwendet jedoch 0,1uF wenn ich es richtig sehe.
Meine Frage ist nun ob es möglich ist den Kodensator C1 wegzulassen und den Widerstand R11 auf 120k Ohm zu ändern um einen Maximalen Messbereich von 4.096V zu erhalten?
Alternativ nur den Kondensator zu entfernen und nur 4 der maximalen 10V zu nutzen?
Da der Sensor nur einen Ausgang liefert würde ich ebenfalls gerne den Jumper “M” setzen, jedoch steht im Schaltplan das man dies bei +-10V Messungen nicht machen soll?
Mit freundlichem Gruß
Thomas S.
Hier noch das Datenblatt des SDP2000-L
https://www.sensirion.com/fileadmin/user_upload/customers/sensirion/Dokumente/8_Differential_Pressure/Datasheets/Sensirion_Differential_Pressure_Datasheet_SDP2000.pdf
Hallo Thomas,
den Kondensator können Sie weg lassen. Wir haben den drin, damit der Analogwert ein bisschen geglättet wird. Die Schaltung misst auch ohne den Kondensator.
Die Spannung am Eingang des 18 Bit mit MCP3424 darf maximal 2,048V betragen.
Wenn Sie Spannungen von 0-4V messen möchten, können Sie einfach 2x den gleichen Widerstand einbauen. Dann haben Sie einen Spannungsteiler 2:1 und können 0-4 V messen.
Sie können gerne bei der Bestellung angeben, welche Präzisionswiderstände Sie haben möchten. Dann packe ich die richtigen dazu.
Der Masse-Jumper sollte auch gesetzt werden, wenn 0-10V gemessen werden soll.
Das ist die Default Einstellung bei der Karte.
Gruß, J. Horter
Hallo,
ich würde dieses Eingabemodul gerne auf einem RaspberryPi mit CodesysControl verwenden, bekomme es selber aber leider nicht zum laufen.
Ich würde mich sehr freuen, wenn Sie mir den CodesysFB zuschicken könnten.
Mit freundlichen Grüßen
Sven K.
Hallo, hab’ das Demo geschickt.
Hallo,
Ich würde gerne die I2C-Analog-Input Karte (18 Bit mit dem MCP3424) in mein Codesys-Projekt
einbinden. In dem “Horter & Karb Raspberry Support Package (V1.0)” wird dieses Gerät jedoch nicht aufgelistet. Könnten Sie mir bitte bei der Einbindung dieser Karte behilflich sein?
Danke
Lg
Leo H.
ich sende Ihnen den Funktionsbaustein für CODESYS per Mail zu.
Hallo Herr Horter,
ich möchte dieses Modul ebenfalls in ein Raspi-Codesys Projekt einbinden. Ist es möglich, ebenfalls den Funktionsbaustein zu erhalten?
Vielen Dank.
LG
Stefan K.
Hallo Stefan,
hab den Demo-FB für Codesys per Mail geschickt.
Gruß, JH
Hallo Herr Horter,
kann ich mit dieser Karte auch Wechselstrom/-Spannung messen?
Die Überlegung ist, einen SCT-013 Stromsensor zur Messung
der Stromaufnahme einer Pumpe im 230V-Netz zu nutzen.
MfG
T.Jonischkies
so wie ich das sehe gibt der Wandler eine Gleichspannung von 1V aus.
z.B. der SCT-013-005 liefert 1V bei 5A.
Im Messbereich 2V der I2AE18 können Sie die Spannung gut messen.
Hello,
I really love your products that I bought in your store. I have made some projects with Codesys and Raspberry PI.
Can you please send me by mail a copy of the FB for Codesys for 18-bit card with the MCP3424.
I really appreciate you help.
Kind Regards,
Michael.
I have sent you the FB by mail.
You may use and copy the FB for your own projects.
Please do not post the code on the internet or in forums.
Thank you
Hallo,
zunächst einmal vielen Dank für die ganzen Informationen und Beispiele!
Ich möchte, so wie mit der AI-Karte möglich, mit dem MCP3424 4-20mA Sensoren einlesen.
Muss hierzu nur der Jumper bei MA gesteckt sein, oder zusätzlich noch jener bei RS?
Das ist mir aus dem Datenblatt nicht ganz klar geworden und ich bin darin auch noch nicht so versiert.
Viele Grüße
wenn Sie 0-20mA Messen wollen, dann können Sie den Jumper M stecken wenn der Fühler und der GND das gleiche Potential haben.
Hallo,
Kann man 4-20mA Sensoren mit 24V direkt an CHn+ und CHn- verbinden? Wie soll ich der Jumper stecken? Vielen Dank!
Viele Grüße
Hallo,

hier eine Skizze wie 2-Draht oder auch 4-Draht Sensoren mit 0-20mA oder 4-20mA Ausgangssignal an der I2C-Analogkarte mit dem MCP3424 angeschlossen werden.
Die Jumper mA und RS setzten.
Hallo,
ich habe es probiert und es funktionierte. Vielen Dank!
Viele Grüße
Hallo Hr. Horter,
würde mich freuen, wenn Sie mir den Codesys-FB für den MC3424 zuschicken könnten.
Danke!
Moin, wie müsste Ihr FB (und eventuell der Vorwiderstand?) geändert werden, wenn ich einen PT100-Fühler (Messbereich -50..+400°C) direkt auslesen wollen würde?
Hallo,
mit einem PT100 wird das nichts, weil der Spannungsabfall am PT100 bei einem Messstrom von 1mA zu klein ist, als dass man ihn ohne Messverstärker auswerten kann.
Setzen Sie besser einen PT1000 für Ihr Vorhaben ein.
Folgende Werte hat der PT1000 bei den genannten Temperaturen lt. Tabelle:
-40°C => 842,707 Ohm
+400°C => 2470,920 Ohm
Daraus ergibt sich ein Spannungsabfall bei einem PT1000-Messstrom von 1mA
-40°C => 0,84 V
+400°C => 2,48 V
Wenn Sie den 2V Spannungsbereich am I2AE18 Modul einstellen können Sie nicht bis 400°C messen sondern nur bis ca. 260°C.
Wenn 400°C tatsächlich benötigt werden, muss der Spannungsteiler 120k / 30k (1:5) geändert werden. z.B. auf 1:1,25
Das ist sogar relativ einfach, weil man die beiden Widerstände einfach vertauschen muss 🙂
R1 R11 Verhältnis
120k 30k 5 : 1
30k 120k 1,25 : 1
Der Messbereich ist dann 0-2,5V
Eine Konstantstromquelle kann man relativ einfach mit einem LM317 bauen.
Am ADJ braucht der 1,25V Ein 1,25 kOhm Widerstand als Rv bringt genau 1mA Messstrom für den PT1000.
Es wäre auch möglich den Messstrom noch etwas kleiner zu machen, so dass der Spannungsabfall am PT1000 unter 2V bei 400°C liegt.
Ich poste bei Gelegenheit mal einen Schaltungsvorschlag wie eine Konstantstromquelle mit dem LM317 aussehen könnte.
Hallo zusammen,
ich würde das Modul gerne in Kombination mit einem Raspberry pi 3 b+ (mit Repeater) und Python als Programmiersprache nutzen. Hat jemand so etwas schon mal programmiert, bzw. gibt es dazu mittlerweile Beispiele die mir den Einstieg etwas erleichtern? Google hilft mir leider nur wenig.
Vielen Dank
Grüße Christian
Hallo Christian,
ja, hier in diesem Blogbeitrag gibt es ein Programmierbeispiel in Phython
https://www.horter.de/blog/i2c-mcp3424-analog-in-18bit-modul-mit-python-und-tkinter/
Gruß, JH
Hallo,
kann man die I2C-Analog-Input 4 Kanäle / 18 Bit mit MCP3424 auch mit Codesys verwenden?
Hallo Klaus,
für die 18-Bit Karte mit dem MCP3424 habe ich einen Codesys-FB programmiert, den ich dir per Mail zuschicken kann.
Einfach in dein Projekt kopieren, Adresse parametrieren und die gewünschte Auflösung am linken Fuß des FBs parametrieren.
Wenn due einen Kanal nicht verwendest einfach 0 eintragen.
Guten abend,
Ich würde mich freuen wenn sie ir den Baustein zuschicken können,
damit ich es einfacher habe.
Mit freundlichen Grüßen
Stefan H.
Hab ich Ihnen per Mail zukommen lassen.
Viel Erfolg 🙂
Würde mich anschließen, würdest du den Baustein weitergeben? Das wäre großartig. Ich sitze seit Tagen an dem ADS1115 von Adafruit und verzweifle, würde mir dann einfach den MCP3424 bestellen und hätte das Thema vom Tisch. Vielen Dank und liebe Grüße!
klar gebe ich den Baustein weiter.
Bitte bei der Online-Bestellung im Feld “Bemerkungen” eintragen.
Hallo
auch ich möchte die “I2C-Analog-Input 4 Kanäle / 18 Bit mit MCP3424” mit Codesys verwenden.
Kann ich die Karte direkt mit dem Codesys-FB auslesen oder braucht es noch einen Treiber?
Ich würde mich freuen wenn Sie mir den Codesys-FB ebenfalls zuschicken könnten.
Gruss EF
Ich finde dies “I2C-Analog-Input 4 Kanäle / 18 Bit mit MCP3424” leider nicht im Shop.
Gibt es das Teil, was kostet es, und gibt es ein Beispiel für Arduino?
Hallo,
hier der Link zum Onlineshop
bausatz-i2c-analog-input-4-kanal-18-bit-mit-mcp3424
Jede Menge Beispiele für arduino finden Sie über Google
“mcp3424 arduino code”
Hallo,
schade das bei dieser Platine der MCP3424 nicht verlötet ist. Bei den anderen Platinen sind die SMD Bauteile bereits aufgelötet.
Hallo,
bitte sprechen Sie das der Bestellung im Onlineshop im Feld Bemerkungen an. Dann löte ich Ihnen den Baustein auf.
Vielleicht mache ich auch eine Option im Shop wie beim I2C-iplexer / I2C-Switch.
Gibt es einen Sketch für Arduino?
Ich schreib mal ein Beispiel wenn ich dazu komme.
Hallo,
an einem Beispiel für die Arduino IDE wäre ich auch extrem interessiert…
hier ein Paar Ergebnisse die Google auswirft:
https://github.com/bersch/MCP3424
https://github.com/battosai30/MCP3424
http://arduinolearning.com/code/arduino-and-mcp3424-a-d-converter-example.php
Gruß, JH