mit diesem Programmbeispiel für den Arduino wird die Funktion der I2C-AOUT Karte gezeigt.
Die Analogwerte für die Kanäle 0 bis 3 können über die serielle Schnittstelle mit dem Tool „Serieller Monitor“ übergeben werden.
Im Programm werden die eingegebenen Zahlen von der seriellen Schnittstelle empfangen und auf die Analogkarte übertragen.
Demnächst mache ich ein Beispiel für die analoge Eingangskarte.
/* ============================================== Test I2C-Analog OUT ============================================== Die Werte für die Analogkanäle können über die serielle Schnittstelle vorgegeben werden Kanal, Analogwert Kanal 0..3 Wert 0.. 1023 = 10,23V */ #include <Wire.h> #define I2C_IN_ADDR 16 >> 1 // I2C-INPUT-Addresse als 7 Bit #define I2C_OUT_ADDR 176 >> 1 // I2C-OUTPUT-Addresse als 7 Bit int SEL=32; // serielle Datenlänge char Empfang[32]; // Epfangsdaten der seriellen Schnittstelle byte HBy; byte LBy; int WERT; int KANAL; void setup() { Serial.begin(9600); // Serielle Schnittstelle konfigurieren Wire.begin(); // I2C-Pins definieren } void loop() { int i=0; while (Serial.available() > 0) { KANAL =Serial.parseInt(); WERT = Serial.parseInt(); Serial.println(KANAL); Serial.println(WERT); HBy = WERT / 256; //HIGH-Byte berechnen LBy = WERT - HBy * 256; //LOW-Byte berechnen Wire.beginTransmission(I2C_OUT_ADDR); // Start Übertragung zur ANALOG-OUT Karte Wire.write(KANAL); // Kanal schreiben Wire.write(LBy); // LOW-Byte schreiben Wire.write(HBy); // HIGH-Byte schreiben Wire.endTransmission(); // Ende } }
Hallo Herr Horter,
ich habe vor ein paar Tagen ihre Analog Output Karte gekauft und gelötet. Ich möchte damit ein Drosselventil EFC 11 PPSU von AVS Römer ansteuern. Das Modul von Ihnen sollte hierfür geeignet sein. Ich habe das ganze mit Arduino Uno angegangen, doch momentan hänge ich daran, dass kein Signal am Ventil ankommt.
Ich habe die SDA UND SCL mit den analogen PINS A4 und A5 verbunden. 5V und GND mit den 5V und GND vom Uno verbunden. Als Betriebsspannung sind 24V an dem 12V Zugang angeschlossen. GND des 12V Eingangs geht auf das GND des Netzteils. Steuersignal soll über A1 rausgehen. Dieses ist mit dem 0-10V Eingang des Ventils verbunden. GND von A1 ist mit GND des Netzteils verbunden. Adresse ist über die JP Stecker auf 176d gestellt. Ventil bekommt ebenfalls 24V und die GND sind mit dem GND des Netzteil verbunden.
Ich bin gerade etwas ratlos, warum es nicht funktioniert. Haben Sie eine Idee?
Hallo,
haben die Adresse des Moduls in Ihrem Arduino-Programm als 7-Bit Adresse angegeben?
#include
#define I2C_FS_ADDR 176 >> 1 // I2C-Funksender Adresse als 7 Bit
...
Gruß, JH
Hallo,
klasse, danke Dir vielmals – mit so einer schnellen Antwort habe ich gar nicht gerechnet. Ich habe den Code soeben übertragen: alles gut. Damit habe ich jetzt schon mal eine gute Basis für mein Projekt.
Dir einen schönen Abend,
Christian
Hallo,
vielen Dank für das gute Beispiel. Ich habe mir das analog input Modul gekauft und würde mich wirklich sehr freuen, wenn hierzu ähnlich wie oben ein kurzes Beispiel veröffentlicht wird. Gibt es hierzu schon etwas – bin über jeden Schnipsel dankbar.
Vielen Dank und ein schönes Wochenende,
Christian
Hallo Christian,
in dem neuen Blog-Beitrag findest du den getesteten Code.
Arduino I2C Analog IN Karte
Viel Spaß 🙂