PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schalter ansteueren über I2C



HannoHupmann
03.02.2006, 18:42
Hallo

Ich suche eine Schaltung an die ich etwa 6-10 normale Taster (ein/aus Schalter) hängen kann. Die Signale sollen dann bitte über I2C an meinen Controller gegeben werden.

Ich hab nur leider keine Ahnung wie ich sowas realisieren kann. Falls jemand eine Idee hat, dann bitte so erklären dass jemand ohne gross Ahnung das nachbauen kann. Sprich bitte möglichst mit Schaltplan.

Denke ich brauch nen PIC aber was noch alles?

mfg Hanno Hupmann

ruediw
03.02.2006, 20:12
Geht ganz einfach mit einem PCF8574.
--> IO-Expander

Hängst jeden der Portleitungen über einen Pull-Up Widerstand
nach Plus und schliesst die Tasten von der Portleitung nach Masse
(Minus). Parallel würde ich noch je einen kleinen Konsator
(ca. 100 bis 220 nF je nach Wert des Pull-Up Widerstandes) hängen
um die Taste zu entprellen.
Schau Dir mal das Datenblatt des PCF8574 an.

Ratber
03.02.2006, 22:51
@HannoHupmann

Womit Proggst du ?
Bascom ?

Wenn ja dann schau dir mal bei Mcs die Appnote 118 an.

HannoHupmann
05.02.2006, 16:14
Nein mit C und das ist mit nem OOPIc Controller, da werden wohl die wenigstens was an Erfahrung mit haben.
Mir geht es mehr um die Schaltung. Ich schau mir mal den PCF8574 an mal kucken ob ich da schlau draus werd. Das mit dem Widerstand ist soweit klar.
Wie ich dass dann implementieren muss weis ich noch nicht, wird mir aber bestimmt ne nette Lösung einfallen

Danke schon mal ich meld mich wenns wieder Probleme gibt oder nicht klappt damit

mfg Hanno

HannoHupmann
05.02.2006, 16:38
Ok hab mir gerade mal das Datenblatt durchgelesen, aber so wirklich schlau bin ich nicht draus geworden wie ich sowas realisieren kann. Sprich wie ich das ganze verkablen (Schaltung?) machen muss, damit es klappt. Denke aber es ist der richtige PIC

@ruediw Danke schon mal für den Chip und wie es gehen könnte nur leider bin ich noch der totale Laie was Schaltungsentwicklung angeht und hab echt gar keine Ahnung was du meinst. Daher ist es lieb gemeint aber ich werd nicht schlau draus :-s . Wenn ich ein Schaltbild hab ist es allerdings kein Problem die Schaltung zu basteln.


mfg Hanno

Ratber
05.02.2006, 17:39
Hast du dir denn wenigstens die Appnote angesehen ?

HannoHupmann
05.02.2006, 18:37
Was ist Appnote?

Ratber
05.02.2006, 18:41
Application Notes

HannoHupmann
05.02.2006, 19:18
@Ratber gut jetzt bin ich immernoch genauso schlau wie vorher, sagt mir nix

Ratber
05.02.2006, 21:10
www.mcselec.com -> Application Notes -> Bascom-AVR -> AN#118

"You need to download the file " anklicken und File speichern.
Öffnen und PDF anschauen.
Da haste zumindest die Hardware drinne.
Naja,Hardware ist schon geprahlt.
Ist ja nur ne Tastenmatrix.

HannoHupmann
05.02.2006, 22:54
@Ratber thx das hilft weiter, muss ich noch paar Sachen rausfinden (z.B. Überprüfen ob auf der Hex 42 nicht schon was in meinem I2C System hängt (Adressenkonflikt).

Ansonsten denke ich die Schaltung realisierbar so. Wird noch bischen basteln um das ganze auf weniger Taster runterzuregeln allerdings wenn ich überlege komm ich leicht auf 10 Stück sprich so viel weniger sind es nicht.

Denke mal ich kann nun anfangen. Kann die Tastenmatrix von der Verschaltung her so übernommen werden oder sollte ich noch Widerstände einbauen?

Ratber
05.02.2006, 22:58
Nö das funktioniert auch so.

Und die Adressen sind ja flexibel.
Hast ja reichlich auswahl.
Oder haste schon den Adressraum voll ?

ruediw
05.02.2006, 23:51
Oder nimm doch einfach zwei PCF8574.
Kannst ja die Leitungen am PCF die Du noch nicht brauchst
auf eine Buchse führen. Vieleicht willst Du ja später
noch was anhängen.

Ratber
06.02.2006, 00:00
Wofür denn 2 Chips ?

Einer reicht für bis zu 16 Taster und er hat ja nur ca. 10.

ruediw
06.02.2006, 00:10
1 X PCF8574 = 8 Leitungen = 8 Tasten (ohne Matrix)
2 x PCF8574 = 16 Leitungen = 16 Tasten (ohne matrix)

@Ratber:
Hast Du das Datasheet wirklich verstanden ?

Ratber
06.02.2006, 00:13
1 X PCF8574 = 8 Leitungen = 8 Tasten (ohne Matrix)
2 x PCF8574 = 16 Leitungen = 16 Tasten (ohne matrix)

Achso,ja dann...




Hast Du das Datasheet wirklich verstanden ?

Welches meinste jetzt ?

Das vom Chip oder das aus der Appnote ?

ruediw
06.02.2006, 00:18
Wenn Du das Datasheet vom PCF8574 anschaust
==> IO/Expander wieviele Leitungen siehst Du da ?
Ich sehe P.0 bis P.7 ...
Wieviele sind das ? Ich zähle 8.

Ratber
06.02.2006, 00:21
Wenn Du das Datasheet vom PCF8574 anschaust
==> IO/Expander wieviele Leitungen siehst Du da ?
Ich sehe P.0 bis P.7 ...
Wieviele sind das ? Ich zähle 8.


Ja,und weiter ?

Ich weiß nicht worauf du genau hinaus willst.

ruediw
06.02.2006, 00:31
Ich habe geschrieben:
Bei jeder Leitung (P0 bis P7) Widerstand nach Plus.
Ebenso bei jeder Leitung einen Taster gegen Masse.
Zusätzlich Kondensator (ca 100 bis 220 nF) parallel zum Taster
auf Masse (Entprellung).
Macht 8 Taster.

Wo ist das Problem ?
Zum Glück steht bei Dir ja nicht "Roboterexperte".

P.S.
Habe 12 Jahre in einer Firma gearbeitet wo wir genau diese Schaltung
realisiert haben.

Ratber
06.02.2006, 00:39
Ich habe geschrieben:
Bei jeder Leitung (P0 bis P7) Widerstand nach Plus.
Ebenso bei jeder Leitung einen Taster gegen Masse.
Zusätzlich Kondensator (ca 100 bis 220 nF) parallel zum Taster
auf Masse (Entprellung).
Macht 8 Taster.



Ja,und ich hab ne Variante feil geboten mit der man bis zu 16 Taster an einen PCF 8574 hängen kann.

Was er dann am Ende nimmt ist ja seine Sache.




Wo ist das Problem ?
Zum Glück steht bei Dir ja nicht "Roboterexperte".

Ich weiß nicht wofür du dich jetzt so aufregst.
Und ws hat das alles jetzt mit "Roboterexperte" zu tun ?



P.S.
Habe 12 Jahre in einer Firma gearbeitet wo wir genau diese Schaltung
realisiert haben.


Schön für dich und die Firma aber es gibt schließlich noch andere Möglichkeiten.
Die Methode die ich da vorschlage ist auch schon recht alt.
Eine Variante davon liegt übrigens vor dir auf dem Tisch :wink:

ruediw
06.02.2006, 00:46
Wen der Ursprungsposter wüsste was eine Matrix ist,
dasn hätte er diese Frage gar nicht gestellt sondern das
ganze mit dem uC realisiert.

Hast Du schon mal eine Matrix mit dem PCF8574 realisiert ?
Das dürfte nicht ganz so einfach werden als 1 Euro mehr auszugeben.

Ratber
06.02.2006, 00:57
Wen der Ursprungsposter wüsste was eine Matrix ist,
dasn hätte er diese Frage gar nicht gestellt sondern das
ganze mit dem uC realisiert.

Ich glaube du solltes mal diese Appnote lesen die ich beschrieben habe.

Alternativ gibts in Bascom (Nur zum Schmökern.Er nutzt ja was ganz anderes) noch den Befehl "GETKBD" der auf dem gleichen PRinzip beruht nur das hier ein ganzer Port dafür draufgeht aber immernoch halbsoviel wie bei einzeltastern.
Das kann man leicht für jeden Controller portieren)

Wenn der Ursprungsposter mit der Matrix nicht zurechtkommt dann auch nicht mit nem PCF8574 alleine.
So groß ist der Unterschied ja nicht und man wächst an den Anforderungen wenn sie in kleinen Schritten kommen.


Hast Du schon mal eine Matrix mit dem PCF8574 realisiert ?

Ja,mehrfach.
Klappt wunderbar.
Erst hab ich es mit "GETKBD" gemacht aber das kostet für eine 3x4-Tastatur eben einen kompletten Port und ich habe dort keinen Interrupt so das ich dauernd Pollen muß bzw. mir noch ne Int-Schaltung basteln muß.

Der PCF8574 bietet mir beides (Wenig Ports und Int) und ich kann am I2C-Bus noch andere Sachen betreiben.


Das dürfte nicht ganz so einfach werden als 1 Euro mehr auszugeben.

Also die Abfrage der Matrix ist nicht gerade komplex.
Gib dre reihe nach auf alle Spalten (oder wenn belieben auch andersrum auf alle Zeilen) ein Signal und schau auf welcher Zeile was kommt.


Natürlich kann man auch nen weiteren PCF8574 kaufen und es simpel machen aber für einen Euro bekommste den wohl kaum oder hast du da ne gute Quelle ?


Edit:
Die schlimmsten Schreibfehler rausgenommen

ruediw
06.02.2006, 01:04
Du hast den Unterschied zwischen einem IO/Expander und einem
uC scheinbar noch nicht begriffen....
Ein IO/Expander ist KEIN uController !!

Dein GETKBD spricht die Ports deines uC an.
Schau dir mal das Datasheet des PCF9574 RICHTIG an ...

Ratber
06.02.2006, 01:11
Du hast den Unterschied zwischen einem IO/Expander und einem
uC scheinbar noch nicht begriffen....
Ein IO/Expander ist KEIN uController !!


Ja,das weiß ich doch und ich hab auch nie was anderes behauptet.



Dein GETKBD spricht die Ports deines uC an.
Schau dir mal das Datasheet des PCF9574 RICHTIG an ...


JA ebenfalls bekannt und das Datenblatt des PCF8574 kenn ich zur genüge.


Worauf willst du nun hinaus ?

Auf Matrix vs Einzeltaster plus Widerstand am PCF8574 oder das ein PCF8574 kein Controller ist ?

Ich kann dir echt nicht ganz folgen.


Fassen wir mal zusammen.

Du schlägst 2 PCF mit einfacher Tastenbeschaltung (Plus RC) vor und ich die Matrix die mit einem PCF auskommt.

Ob HannoHupman nun die etwas einfachere Variante mit mehr Bauteilen nimmt oder die etwas Preiswertere muß er selber wissen.
Die Entscheidung kann und will ich ihm nicht abnehmen.

Deswegen müssen wir aber nicht streiten.

ruediw
06.02.2006, 01:24
Ach lassen wir's bleinben.

Das ist der letzte Versuch. Der Ursprungsposter wusste mal scho gar
nicht wie er diese Taster einlesen kann. Ich habe die Idee gebracht
er könne die Taster mit 1 bis 2 PCF8575 lösen die er am I2C-Bus
anhängt. Du schriebst 1 PCF würde reichen, er brauche nicht 2.
Das stimmt, wenn er eine Matrix nimmt. Du hast sicher das schon
gemacht, aber nicht mit dem PCF sondern mit deinem uC.
Das ist aber eine andere Geschichte. Und ob der Ursprungsposter
mit seinem Wisenstand Freude hat eine matrix zu realisieren (in der
Realisierung von der Hardware einfach) und dann beliebig lang
das zu programmieren da habe ich meine Zweifel.
Lieber etwas einfaches das funktioniert als 1 Euro (oder auch 1E50) sparen und lange Frust haben weils doch nicht geht...

Muss der Ursprungsposter entscheiden.

Aber ich denke der wird dann hier wieder seine Pfannenfertige
Lösung anfordern.

Im usenet gehört es zur Netikette das man zuerst mal zeigt dass man
etwas versucht hat. Erst dann gibts es Antworten.
Wenn einer einfach "HILFE" in den Betreff schreibt und meint die
anderen würden seine Hausaufgaben machen so stösst er auf Granit.
Finde ich richtig...

Ratber
06.02.2006, 01:59
Der Ursprungsposter wusste mal scho gar
nicht wie er diese Taster einlesen kann.

Das ist nicht mein Problem.
Dann muß er sich eben damit vertraut machen.
Wer nen vernünftigen Job will der muß erst büffeln
Wer nen Porsche fahren will der muß auch büffeln.
Wer ne geile Schnitte aufreißen will muß baggern (Großer Bagger ist von Vorteil)
Wer was tolles mit Controllern basteln will......kennste ja schon.
usw.
Manche brauchen eben nen Tritt in die richtige Richtung denn die wenigsten sind perfekte Autodidakten.


Du hast sicher das schon
gemacht, aber nicht mit dem PCF sondern mit deinem uC.


Ich sagte doch das ich es schon mit einem PCF8574 gemacht habe.
Mehrfach sogar.(Siehe Appnote 118 bei MCSelec)
Natürlich hängt der PCF8574 an einem Controller oder einem Gerät das einen I2C-Bus steuern kann.(zb. PC Parport usw.)

Ist das bei dir irgendwie anders ?
Ich glaube nein.



Im usenet gehört es zur Netikette das man zuerst mal zeigt dass man
etwas versucht hat. Erst dann gibts es Antworten.
Wenn einer einfach "HILFE" in den Betreff schreibt und meint die
anderen würden seine Hausaufgaben machen so stösst er auf Granit.
Finde ich richtig...

Ja nur ist das Usenet auch seit jeher bekannt dafür das unfreundlichste Netz zu sein.
Die Leute dort sind mir zu agressiv deswegen hab ich mich schon früh davon getrennt.
Es geht auch gemütlicher ohne gleich den Knüppel auszupacken. :wink:

HannoHupmann
06.02.2006, 09:51
Na dann mal zurück zu euch beiden und zu meiner Schaltung (immerhin bin ich ja der Ursprungsposter :-) ).

In der Tat hatte ich keine Ahnung wie ich das lösen kann (Matrix hin Matrix her, auf meinem uController hab ich sicher keine 8 I/O Lines mehr über sprich deswegen wollte ich es auslagern über I2C).

Wie ich einen Pull Up (oder Pull down) Schaltung realisieren kann hab ich irgendwo rumliegen (muss ich dann halt nachschlagen).

Also weiter im Text, ihr habt mir beide ne Schaltung bzw. ein Bauteil hingeworfen das ich nicht kenne, aus dem Datenblatt bin ich nicht schlau geworden drum hab ich nachgefragt. Ratber hat mir ein Datenblatt gegeben wo eine Tastenmatrix realisiert ist (womit es glaub 16 Schalter sind). Immerhin jetzt hatte ich schon mal nen Schaltplan anhand von sowas ist es einfach was zu basteln.

Mit sowas kann ich was anfangen und daraus dann auch ruediws Vorschlag leicht umsetzten (Ob ich nun 1 oder 2 von den Chips reinhänge ist noch nicht sicher).
Ich denke ich werd mir das mal aufbauen und dann schauen wie es sich ansteuern lässt. Zur Programmierung, da ich ein absolut Unüblichen Controller hab ist es eh an mir diesen zu Programmieren, also das lasst meine Sorge sein, bekomm ich hin wenn die Schaltung passt.

Ich geb zu am Anfang hab ich mich etwas dümmer gestellt als ich bin, aber dafür bekommt man dann nicht nur irgendwelche Brocken hingeworfen.

Ich finds auch jedenfall ganz toll von euch Beiden, dass ihr mir so helft. Großes Danke schon mal im Voraus. Ich werd demnächst anfangen eine Testschaltung aufzubauen und dann seh ich welche einfacher oder besser ist für mein Projekt.

mfg Hanno

Ratber
06.02.2006, 14:22
Ja,welche Schaltung du nun am ende nimmst ist deine Sache,Das Datenblatt zum PCF8574 solltest du dir in jedem Falle mal anschauen.

Das Protokoll für den Chip ist dort verz.

Edit:

Wollte dir noch nen PDF zukommen lassen aber der anhang wird nicht genommen.

HannoHupmann
06.02.2006, 14:27
jupp achso na dann schick es an insurrection [add] web.de
dann kann ich es mir da ja anschauen

Ratber
06.02.2006, 14:32
Is Schon Passiert