I²C-Testschaltungen und Beispiele

Modelle zum Nachbauen oder wo gibt es etwas interessantes oder Projekte?

Moderator: Moderatoren

Latz
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 27
Registriert: 26. Jan 2013 18:25

Re: I²C-Testschaltungen und Beispiele

Beitragvon Latz » 4. Apr 2013 14:01

Hi,
hier ein paar Bilder von meinem 4-fach Analog-Multiplexer mit PCF8591 SMD, eingebaut in
ein "Lego-Cluster" mit einer Grundfläche von 4x6 Noppen.

Latz
Dateianhänge
Ana4x top.JPG
Platine Draufsicht
Ana4x top.JPG (49.53 KiB) 4191 mal betrachtet
Ana4x offen.JPG
Gehäuse offen
Ana4x offen.JPG (46.5 KiB) 4191 mal betrachtet
LIIC Ana4x.JPG
4-fach Analog-Multiplexer
LIIC Ana4x.JPG (56.36 KiB) 4191 mal betrachtet

Bernhard
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 41
Registriert: 6. Feb 2013 17:19

Re: I²C-Testschaltungen und Beispiele

Beitragvon Bernhard » 5. Apr 2013 15:03

hi Latz,

schaut aus, wie selbstgeätzt. Wenn ja, wie ?
Die Zeiten sind bei mir rum,dass ich Leiterbahnen aufbügel, aufpinsel, mich über ablösende Lötaugen ärgere und mit Eisen(III)Clorid rummansche. ;-)

Haha .. Atari . genial. Motorola 68060 ? Der steckt in meinem A4000 noch drin ;-)

ich bastel das alles inzwischen mit Target zusammen

Latz
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 27
Registriert: 26. Jan 2013 18:25

Re: I²C-Testschaltungen und Beispiele

Beitragvon Latz » 6. Apr 2013 20:32

Naabend,

@Bernhard: Ja, selbstgeätzt. Layout auf dem Atari -> Laserdrucker -> Folie -> mit einem "Gesichtsbräuner"
auf fotopositiv-Platine 0,5mm belichtet, entwickelt und in einem Schaumätzgerät mit Eisen-3 Chlorid geätzt.
Ist durch das Schaumätzgerät eigentlich eine saubere Sache.

Mein Atari Falcon/CT60 ist mein Lieblings-, Arbeits- und Hauptcomputer überhaupt! Läuft auf 80 MHz, hat eine ATI Radeon
Grafikkarte und ist gefühlt viel schneller als mein 1GHz Win-PC :D
...und feierte letztes Jahr seinen 20. Geburtstag :yeah:

edit, die 4 Kontakte sind für: Analogeingang, Masse, +Ub und auf Pin 4 der Analogausgang des PCF 8574 über einen N-Kanal MOSFET als
"eigene Lichtquelle an-Schalter" (gemeinsam für alle Kanäle). Der MOSFET ist auf dem Foto noch nicht drauf.

Gruß,
Latz

Latz
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 27
Registriert: 26. Jan 2013 18:25

Re: I²C-Testschaltungen und Beispiele

Beitragvon Latz » 14. Apr 2013 12:37

So, hier noch der Schaltplan für den Analog-Multiplexer:
- Die I²C-Adresse ist hier auf 144 eingestellt (0x90). Auf dem Layout kann man entsprechende
Lötbrücken setzen/trennen.

Latz
Dateianhänge
anaplan.JPG
Schaltplan Ana4x
anaplan.JPG (64.34 KiB) 4128 mal betrachtet

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5288
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: I²C-Testschaltungen und Beispiele

Beitragvon HaWe » 14. Apr 2013 12:45

hey,
klasse, danke!
die 2x 82k sind die pullups, oder?
das wär super-super, wenn man die auch mit Jumpern kurzschließen könnte!!

Alternativ finde ich, dass man für Marke-Eigenbau-Sensoren die eingebauten pullups auch komplett weglassen könnte,
aber PLUS einem End-Stecker, der dann den i2c Bus mit 2x82k terminiert (analog den SCSI-Terminator-Steckern)
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Latz
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 27
Registriert: 26. Jan 2013 18:25

Re: I²C-Testschaltungen und Beispiele

Beitragvon Latz » 14. Apr 2013 13:29

Nichts zu danken! :D
Ja, die 82k sind die Pull-Up Widerstände...aber "kurzschließen" sollte man sie wirklich nicht :wink:
Spass beiseite (ich habe Dich schon richtig verstanden); das "Jumpern" der PullUps habe ich mir auch schon
überlegt, aber in dem Gehäuse ist nicht mehr soo viel Platz und eigentlich auch für den kindertauglichen Betrieb
gedacht. Leider ist auch kein Platz, um mit einer 2. RJ12-Buchse eine Art SCSI-Bus zu basteln...Deine Idee
mit dem Terminator ist aber wirklich gut!
Mal sehen, bisher bin ich mit 4xAnalog auf Port 1, 8xTaster auf Port 2 und 8xLED auf Port 3 ganz gut bedient.

Soll ich das Layout auch hochladen?

Gruß,
Latz

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5288
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: I²C-Testschaltungen und Beispiele

Beitragvon HaWe » 14. Apr 2013 13:46

stimmt, kurzschließen war ntl Quatsch, ich meinte "trennen".
vllt kann man den Terminator einfach an einen Portsplitter dranstecken?
oder einen Mini-Druckknopf-Schalter einbauen, der die Widerstände anlegt (reingedrückt) oder abtrennt (draußen)?

Layout ist für mich persönlich nicht so bedeutsam, aber vllt für viele, die selber Platinen ätzen (lassen)!
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Latz
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 27
Registriert: 26. Jan 2013 18:25

Re: I²C-Testschaltungen und Beispiele

Beitragvon Latz » 15. Apr 2013 10:39

Hi,
nach Mini-Druckknopf-Schaltern muss ich mal schauen, ich dachte evtl. an einen einzelnen
DIP-Schalter. Leider ist´s für einen 7er-Block DIP-Schalter zu eng (1x für PullUp, 2x3 für Adresse),
das ginge evtl. nur bei doppelseitigem Layout...aber das in "SMD-Genauigkeit" mit Hobby-Belichtungs-
und Ätztechnik hinzubekomen ist schwierig. :|

Der optionale N-Kanal FET (und Vorwiderstand) wird durch den Analogausgang des PCF gesteuert
(3. Byte bei I²C write: Adresse, Registerwert, Analogausgangswert) und schaltet
bei einem Dezimalwert von >100 Minus (Masse) auf den 4. Pin der Eingänge. Da kann man dann z.B. eine LED
pro Eingang an/ausschalten (Pin4 -> Vorwiderstand -> LED -> +Ub).
Dieser "Zwergen-FET" (2,2x1,35 mm) verträgt bis zu 1A/20V !!
Man kann den FET auch in einem engen Bereich analog steuern; von ~ 55 (aus) bis ~80 (an).

Ohne FET kann man den analogen Ausgang des PCF in 256 Stufen (von 0V bis +Ub) verwenden, allerdings
nur mit max. 20mA belastbar.

Gruß,
Latz

Bernhard
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 41
Registriert: 6. Feb 2013 17:19

Re: I²C-Testschaltungen und Beispiele

Beitragvon Bernhard » 18. Apr 2013 10:32

wegen der 82k Widerstände:

ich sehe da kein Problem. Mit einem Portsplitter kann ich max 3 meiner Platinen anschließen. Beim LED-Controller bin ich vom der Strombelastbarkeit der NXT-Ports noch gut dabei (mehr würde ich nicht empfehlen bei Dauerlicht). Wenn man anstelle 82k 100k Widerstände einsetzt, funktioniert das imernoch bestens, da sich bei drei Platinen 33,3k ergeben, die den NXT nicht stören. Inder Praxis habe ich keinerlei Funktionseinschränkungen mit gesetztem 82k Widerstand. Selbst mit drei 82k, die rund 27k ergeben funktioniert es ohne Einschränkung.

Grüße
Bernhard

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5288
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: I²C-Testschaltungen und Beispiele

Beitragvon HaWe » 18. Apr 2013 22:08

das ist doch schon mal gut =)

ohne feste Pullups könnte man allerdings 127 i2C devices aneinanderhängen :P
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Latz
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 27
Registriert: 26. Jan 2013 18:25

Re: I²C-Testschaltungen und Beispiele

Beitragvon Latz » 28. Apr 2013 13:45

Hi,
zu den PullUp-Widerständen: Bei meinem digitalen Temperatursensor hatte ich am Anfang (lt. Datenblatt)
10k-PullUps verwendet, das war zu wenig. Gut zu hören daß 3 Chips à 82k noch laufen!

@HaWe: So eine "Komplettlösung" hatte ich auch schon mal im Sinn, aber dann verworfen:
Einzelne Multiplexer-"Kästchen" lassen sich in mobilen Modellen besser verbauen und man kann sie
flexibler einsetzen (oder eben nicht). Deine Komplettlösung ist nur für den stationären Einsatz sinnvoll
und wird auch ziemlich schwer.

Aber hier noch eine Idee:
Mit einem PCF 8574 lässt sich anstelle der LEDs auch prima eine 7-Segment-Anzeige (digitale "8", evtl. mit Punkt)
ansteuern, dann hat man eine gut lesbare Zahlen-Anzeige.
Die 7-Segment-Anzeige muß eine gemeinsame Anode (Plusanschluß) haben, z.B. SA03-11GWA.

Gruß,
Latz

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5288
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: I²C-Testschaltungen und Beispiele

Beitragvon HaWe » 28. Apr 2013 13:53

ich dachte an ein Kästchen knapp so groß wie ein NXT Baustein mit Anschlüssen/Buchsen oben drauf und an den Seiten.
Wenn man Befestigungslöcher für Lego-Verbinder an freien Flächen macht (wie beim NXT unten/an den Seiten), fände ich das sehr kompakt, sehr leicht zu verbauen, sehr einfach elektrisch anzuschließen und sicher leichter als ein 2. NXT!


noch mal ein Schritt zurück zum PCF8574-i2c-Treiber:
Bernhards Code liest ja jeden Muxport einzeln:
http://www.mindstormsforum.de/viewtopic.php?f=73&t=5306&start=30#p61402

wegen jeder einzelnen Muxport -Abfrage muss man daher je 1 einzelnen i2c-Befehl senden, jeder einzelne dauert gut 20ms.
Bei 8 Muxports heißt das: ca. 200 ms für "1x rum", also kann man nur 4- 5x pro Sekunde alle I/Os aktualisieren.
Hängen weitere i2c Geräte am selben Port, wird es entsprechend noch langsamer.

Wäre es nicht möglich, sämtliche PCF8574 I/O Register gemeinsam in 1 Rutsch zu lesen (Touchsensoren) oder zu schreiben (LEDs), und dafür einen array[8] für alle muxports gemeinsam in 1 i2c Befehl zu senden?
Dann braüchte man nur gut 20ms für 1 i2c Befehl für alle 8 Werte zusammen und hätte damit fast den 10-fachen Datendurchsatz gegenüber bisher!
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5288
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: I²C-Testschaltungen und Beispiele

Beitragvon HaWe » 30. Apr 2013 19:23

so,
mit Hilfe von mattallen hab ichs:

nur 1mal ein i2c Befehl, um das komplette result byte vom PCF zu lesen, und dann nur noch bitweise decodieren - geht jetzt irrsinnig schnell!!!

Code: Alles auswählen

#define BitRead(_Value, _Bit) !(0x01 & (_Value >> (_Bit - 1 ) )) // 1...8 instead of 0...7

int PCF8574ReadPins(byte port, byte address){
  byte cnt = 2;
  byte I2CMsg[];
  byte inbuf[];
  byte nByteReady = 0;
  int  result = -1;

  ArrayBuild(I2CMsg, address);

  while (I2CStatus(port, nByteReady) == STAT_COMM_PENDING){
    Yield();
  }

  if (I2CBytes(port, I2CMsg, cnt, inbuf)) {
    result = inbuf[1];
  }
  if(result==-1){
     TextOut(0, LCD_LINE1, "Error: Check the");
     TextOut(0, LCD_LINE2, "   connection!");
     Wait(500);
     ClearScreen();
  }
  return result;
}


task main() {
  byte PCF8574array[9]; // just to have slots 1...8 to access
  byte PCF8574port=S4, PCF8574addr=0x4E, result;

  SetSensorLowspeed(S4);
 
  while(true) {

    result=PCF8574ReadPins(PCF8574port, PCF8574addr);  // poll the PCF byte once

    for (char i=1; i<=8; ++i) {
      PCF8574array[i]= BitRead(result, i);             // bit read the PCF byte
      NumOut( 0, 56-(8*i), i);
      NumOut(18, 56-(8*i), PCF8574array[i]);
    }
    Wait(5);
  }

}
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Bernhard
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 41
Registriert: 6. Feb 2013 17:19

Re: I²C-Testschaltungen und Beispiele

Beitragvon Bernhard » 1. Mai 2013 10:49

HI ihr Bastler ;-)

die Idee mit der Komplettlösung hatte ich ebenfalls und ebenfalls vorerst verworfen - muss dann auf jeden Fall ne SMD-Lösung werden und ich will auf den EV3 warten um dann weiter zu testen. Eine "Baukastenlösung" wär da besser. Man hat drei verscheidene Grund-Bausteine, die man (beliebig) miteinander zu der großen Version kombinieren kann.
Das macht die Baugröße und das Gewicht auch optimaler.
. .. ich bin (hoffentlich) grade ein wenig weiter. Mit ein paar Arduino Nano habe ich auf kleinstem Raum noch mehr Möglichkeiten. Allerdings ist die Handhabung etwas komplexer. Der Atmel muss mit einer sep. Entwicklungsumgebung programmiert werden. Die Kommunikation zwischen NXT und Arduino ist ein bissel tricky. Die Möglichkeiten sind aber enorm! :shock:

Grüße
Bernhard

PS: bezüglich Code: natürlich kann man den zustand aller Ports bitweise auf ein Mal abfragen. Für meine Drei hintereinanderverschalteten TouchController habe ich genau eine solche Extralösung gebaut - für Anfänger jedoch schnell unübersichtlich und damit fast unbrauchbar. Für eine Performancesteigerung kann man einiges tun. ;-)
Ich hab gerne eine Werkzeugkiste mit Standardcodes, wird es jedoch spezifischer, dann passe ich den Code genau auf die Anwendung an.
Ein zusätzlicher Microcontroller kann (bevor er sich langweilt) auch noch ein paar Aufgaben übernehmen ;-)

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5288
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: I²C-Testschaltungen und Beispiele

Beitragvon HaWe » 1. Mai 2013 11:20

klingt ja schon mal gut :)
allerdings finde ich die vielen Einzel-Platinen schon schwieriger mechanisch zu verbauen und an externe Stromquellen anzuschließen als nur 1 einziges Kästchen von der Größe von 1-2 Zigrettenschachteln, wo dann alles drin ist, samt Lego-kompatibler Anschlüsse oder 2,6mm Bananensteckerbuchsenplatten.

Als neue Idee:
super wäre auch ein Motortreiberbaustein z.B. für 8 NXT/EV3-Motoren, der auch die Schmitt-Trigger der Encoder auslesen kann .

Aber wer auch immer nochmal irgendeinen einen Muxer (Touch, Analog, i2c, Motor) in Kleinserie auflegt: ich bin dabei!

ps:
Treiber (auch Blöcke) für die beiden PCF's gibt's ja auch von Mindsensors:

für PCF8591 (4* analog): http://www.mindsensors.com/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=92

für PCF8574 (8* digital): http://www.mindsensors.com/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=71
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E


Zurück zu „Projekte, Showcase, Bauanleitungen“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 21 Gäste

Lego Mindstorms EV3, NXT und RCX Forum : Haftungsauschluss