Hallo,
ich habe einen I2C-Temperatursensor, und möchte dessen Signal mit einer
einfachen Schaltung nachbilden, um verschiedene Temperaturen simulieren
zu können. In der eingesetzten Schaltung ist es allerdings unpraktisch
immer eine reale Temperatur mit Heißluftfön o.ä. zu erzeugen.
Deswegen möchte ich mir eine einfache Schaltung mit Mikrocontroller
basteln, die ich statt des I2C-Sensors einsetzen kann.
Meine erste Frage ist daher: Welcher Mikrocontroller eignet sich am
besten für dieses Vorhaben?
Danke und viele Grüße!
> Meine erste Frage ist daher: Welcher Mikrocontroller eignet sich am> besten für dieses Vorhaben?
Jeder Controller der I2C-Slave eingebaut hat. Also z.B ein R8C/29,
aber vermutlich auch ein dutzend andere.
Olaf
Irgendeiner mit I2C Schnittstelle? Oder sogar garkeiner sondern nur ein
I2C-Interface an einen PC?
Wie möchtest du denn die zu simulierenden Temperaturen vorgeben?
Wenn wenige Temperaturen vorzugeben sind, reichen ein paar Taster an I/O
Pins. Die sollte jeder µC übrig haben. Mit ein paar Pins mehr könnte man
schon in die Richtung Tastenmatrix überlegen... Und noch ein paar Pins
mehr, könnte man überlegen ob man eine Anzeige der Vorgabe
implementiert.
Wenn die simulierte Temperatur per Spannungswert (Potentiometer)
eingegeben werden soll dann macht sich ein µC mit ADC ganz gut.
Wenn ein PC die Simulationstemperaturen in den µC füttern soll, dann
wäre ein Interface zum PC sinnvoll, also UART oder gar USB.
Oder mal in den Codesammlungen nachsehen, da gibt es auch
I2C-Nachbildungen über GPIOs. Dann könntest du den µC nutzen, mit dem du
schon Erfahrungen hast...
GFunk schrieb:> Welcher Mikrocontroller eignet sich am> besten für dieses Vorhaben?
Jeder kleine "Furz", der I2C oder TWI hardwaremäßig als Slave
unterstützt oder etwas Speicher hat, um die Slave Funktion in SW
auszuführen und schnell genug für deinen Master ist.
z.B. Beitrag "AVR TWI Master und Slave Funtionen in C"
> Oder mal in den Codesammlungen nachsehen, da gibt es auch> I2C-Nachbildungen über GPIOs.
Er moechte aber I2C-Slave sein. Das macht man nicht mal eben so in
Software. Ausser vielleicht man hat den Master total langsam
programmiert.
Olaf
Olaf schrieb:>> Oder mal in den Codesammlungen nachsehen, da gibt es auch>> I2C-Nachbildungen über GPIOs.>> Er moechte aber I2C-Slave sein. Das macht man nicht mal eben so in> Software. Ausser vielleicht man hat den Master total langsam> programmiert.
In Firmware würde schon gehen (genügend kurze Interruptlatenz mal
vorausgesetzt), ein PC als I²C-Slave sicher nicht.
Lohnt aber alles nicht, wenn man stattdessen viel einfacher einen
x-beliebigen Controller mit Hardware-I²C nehmen kann.
Bei manchen Herstellern (bspw. Atmels AVRs) heißt der I²C-Modul aus
markenrechtlichen Gründen anders (dort bspw. TWI, "two-wire interface").
Vielen Dank für die vielen Antworten. Prinzipiell muss es kein
Mikrocontroller sein. Wenn es dafür auch ein PC Interface gibt, wäre mir
schon geholfen. Ideal wäre es, wenn ich jede beliebige Temperatur in
eine Art Terminal am PC eingeben könnte, und die Box an der
(USB-)Schnittstelle gibt mir ein entsprechendes I2C-Signal aus.
Wenn es das gibt, wie heißen die Dinger? Wonach muss ich suchen?
Viele Grüße und ein schönes Wochenende!
Falls es doch die Lösung mit µC werden soll, habe ich eben mal
recherchiert was es so gibt mit LCD wo ich gleich noch den Wert anzeigen
könnte.
Was ich da gefunden habe, wäre ein AVR Butterfly auf Basis des
ATmega169.
Weiß zufällig jemand direkt aus dem Kopf ob mein Vorhaben damit möglich
wäre?
Im Prospekt hab ich nichts von I2C oder TWI, wie es anscheinend bei
Atmel heißt, gefunden. Im Datenblatt des ATmega selbst steht aber was
von TWI.
Und so wie ich es verstehe ist der Controller beim Butterfly schon
integriert.
Hallo mal wieder,
der von Manfred John im vorletzten Beitrag gezeigte Adapter wäre echt
ideal gewesen, aber nach allem was ich mir inzwischen zum Thema I²C
angelesen habe, kann ich ihn nicht einsetzen, da ich tatsächlich einen
Slave brauche.
Ich will ja so ein Signal ausgeben, als wäre ich selbst der
Temperatursensor.
Nun läuft es wohl doch auf einen Mikrocontroller raus. Meine Idee
bisher: AVR Butterfly (= ATmega169P + Display + Joystick-tasten). Mit
den Tasten die Temperatur einstellen, im Display anzeigen und als
I²C-Signal ausgeben. Dazu müsste ich nur das Programm anpassen. Denke
ich soweit richtig? Hat zufällig schon jemand Erfahrung mit dem
Butterfly und kann mir sagen was ich noch für ein Programmierkabel
brauche? Oder ist da schon eins dabei?
Vorteil an der Batterieversorgung wäre außerdem, dass ich mir keine
Gedanken über eine Potentialtrennung in der Hauptanwendung nachher
machen müsste.
Viele Grüße und nochmal Danke für die Ideen bisher!
GFunk schrieb:> Hat zufällig schon jemand Erfahrung mit dem> Butterfly und kann mir sagen was ich noch für ein Programmierkabel> brauche? Oder ist da schon eins dabei?
ein einfaches Kabel zur seriellen Schnittstelle des PC (evtl. also auch
eins USB-seriell converter) und es ist nicht dabei
GFunk schrieb:> Was ich da gefunden habe, wäre ein AVR Butterfly auf Basis des> ATmega169.> Weiß zufällig jemand direkt aus dem Kopf ob mein Vorhaben damit möglich> wäre?
Sollte gehen. Der hat zwar keinen direkten Hardware-TWI-Block, aber
das sogenannte USI (universal serial interface), welches auch im
I²C-Slave-Mode betrieben werden kann. Der Programmieraufwand ist ein
wenig höher als bei einem "echten" TWI-Modul, aber die wesentlichen
Voraussetzungen für einen I²C-Slave bietet die Hardware.
ok, so ein kabel habe ich, aber ich muss doch nochmal fragen (bin halt
noch kein Experte). Auf der einen Seite ist der RS232-Stecker für die
Buchse am PC, und auf der anderen Seite habe ich offene Enden, die ich
mit dem Butterfly verlöten muss? Wahrscheinlich finde ich sogar hier im
Forum die Pinbelegung, ich weiß nur nicht wonach ich suchen muss.
ah, jetzt hat sich mein Beitrag mit Jörg gekreuzt.
Ich hatte bei Atmel nach den technischen Daten des ATmega169 geschaut,
dort steht bei TWI: ja.
Ist dann auf dem Butterfly ein anderer µC oder nur ein abgespeckter
ATmega169?
Gruß, GFunk
GFunk schrieb:> Auf der einen Seite ist der RS232-Stecker für die> Buchse am PC, und auf der anderen Seite habe ich offene Enden, die ich> mit dem Butterfly verlöten muss?
Nein, du brauchst noch einen RS-232-Pegelwandler. Das hat nicht nur
was mit Pegeln zu tun, sondern vor allem damit, dass die RS-232-
Signale zwischen der Leitung und der Logikseite (also am Controller)
invertiert sind, d. h. 0 V auf der Logigkseite entspricht >= +3 V
auf der RS-232-Seite, und 5 V (oder 3 V) auf der Logikseite
entsprechen <= -3 V auf RS-232-Ebene.
Die meisten RS-232-Empfänger in PCs interpretieren den (eigentlich
"verbotenen") Pegel von 0 V wie eine negative Spannung, sodass man
als Billigst-Version mit einem simplen Inverter auskommen kann, der
allerdings am Eingang Spannungen von wenigstens ±12 V verkraften
können muss.
Wenn du einen USB-RS-232-IC (wie den FT232RL) direkt benutzen würdest,
dann könntest du dessen Logikpegel (ohne Zwischenschaltung eines
Inverters/Pegelwandlers) auch direkt mit dem Controller verbinden.
GFunk schrieb:> Ich hatte bei Atmel nach den technischen Daten des ATmega169 geschaut,> dort steht bei TWI: ja.
Das bezieht sich vermutlich darauf, dass man halt mit der USI ein
TWI (in beiden Richtungen) implementieren kann. Solche Feature-
Übersichten werden halt von Marketingleuten gemacht ...
Jörg Wunsch schrieb:> Sollte gehen. Der hat zwar keinen direkten Hardware-TWI-Block, aber> das sogenannte USI (universal serial interface), welches auch im> I²C-Slave-Mode betrieben werden kann. Der Programmieraufwand ist ein> wenig höher als bei einem "echten" TWI-Modul, aber die wesentlichen> Voraussetzungen für einen I²C-Slave bietet die Hardware.http://www.atmel.com/dyn/resources/prod_documents/doc2560.pdf