Forum: Mikrocontroller und Digitale Elektronik Kaufberatung µC mit I²C


von GFunk (Gast)


Lesenswert?

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!

von Olaf (Gast)


Lesenswert?

> 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

von Helfer (Gast)


Lesenswert?

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.

von hepp (Gast)


Lesenswert?

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...

von Michel (Gast)


Lesenswert?

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"

von Olaf (Gast)


Lesenswert?

> 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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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").

von GFunk (Gast)


Lesenswert?

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!

von GFunk (Gast)


Lesenswert?

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.

von hans (Gast)


Lesenswert?

Hallo GFunk,

wenn es was fertiges sein soll (und nicht zu teuer)
wäre dieses Teil was:

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en028600

Um einen einfachen Slave nachzubilden bestens geeignet ;)

Selber probiert ;)

Hans

von M. J. (manfred-64)


Lesenswert?

I²C über Pc-Schnittelle Ser. sollte wohl die einfachste und billigste 
Lösung sein.
z.B.:http://www.shop.robotikhardware.de/shop/catalog/product_info.php?products_id=68

von Sebastian (Gast)


Lesenswert?

Der im letzten Beitrag gezeigte Adapter ist ein Slave, kein Master. Nur 
so als Anmerkung.

von Sebastian (Gast)


Lesenswert?

Äh,Quatsch, umgekehrt natürlich. Es ist ein Master, obwohl ein Slave 
gebraucht wird. Ich sollte lieber ins Bett gehen.

von GFunk (Gast)


Lesenswert?

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!

von Walter S. (avatar)


Lesenswert?

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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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.

von GFunk (Gast)


Lesenswert?

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.

von GFunk (Gast)


Lesenswert?

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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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 ...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.